-
-
Notifications
You must be signed in to change notification settings - Fork 106
/
Copy pathmeta.yaml
338 lines (328 loc) · 13.1 KB
/
meta.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
{% set version = "3.12.3" %}
{% set dev = "" %}
{% set dev_ = "" %}
{% set ver2 = '.'.join(version.split('.')[0:2]) %}
{% set ver2nd = ''.join(version.split('.')[0:2]) %}
{% set ver3nd = ''.join(version.split('.')[0:3]) %}
{% set build_number = 0 %}
# this makes the linter happy
{% set channel_targets = channel_targets or 'conda-forge main' %}
# Sanitize build system env. var tweak parameters
# (passed to the build scripts via script_env).
{% set from_source_control = os.environ.get('CONDA_BUILD_FROM_SOURCE_CONTROL', '') %}
{% if from_source_control == '' or from_source_control == 'no' %}
{% set from_source_control = 'no' %}
{% else %}
{% set from_source_control = 'yes' %}
{% endif %}
{% set linkage_nature = os.environ.get('PY_INTERP_LINKAGE_NATURE', '') %}
{% if linkage_nature != '' %}
{% set linkage_nature = "_" ~ linkage_nature %}
{% endif %}
{% if linkage_nature == 'shared' %}
{% set linkage_nature_env = 'shared' %}
{% else %}
{% set linkage_nature_env = 'static' %}
{% endif %}
{% set dbg_abi = "" %}
{% if build_type == "debug" %}
{% set py_interp_debug = "yes" %}
{% set debug = "_debug" %}
{% else %}
{% set py_interp_debug = "no" %}
{% set debug = "" %}
{% endif %}
package:
name: python-split
version: {{ version }}{{ dev }}
source:
{% if from_source_control == 'yes' %}
- git_url: https://github.com/python/CPython.git
git_tag: v{{ version }}{{ dev }}
{% else %}
- url: https://www.python.org/ftp/python/{{ version }}/Python-{{ version }}{{ dev }}.tar.xz
# md5 from: https://www.python.org/downloads/release/python-{{ ver3nd }}{{ dev }}/
md5: 8defb33f0c37aa4bdd3a38ba52abde4e
{% endif %}
patches:
- patches/0001-Win32-Change-FD_SETSIZE-from-512-to-2048.patch
- patches/0002-Win32-Do-not-download-externals.patch
- patches/0003-Fix-find_library-so-that-it-looks-in-sys.prefix-lib-.patch
- patches/0004-Disable-registry-lookup-unless-CONDA_PY_ALLOW_REG_PA.patch
- patches/0005-Unvendor-openssl.patch
- patches/0006-Unvendor-sqlite3.patch
- patches/0007-Add-CondaEcosystemModifyDllSearchPath.patch
- patches/0008-Doing-d1trimfile.patch
# https://github.com/python/cpython/pull/23523
- patches/0009-cross-compile-darwin.patch
- patches/0010-Fix-TZPATH-on-windows.patch
# https://github.com/python/cpython/pull/24324
- patches/0011-Make-dyld-search-work-with-SYSTEM_VERSION_COMPAT-1.patch
- patches/0012-Unvendor-bzip2.patch
- patches/0013-Unvendor-libffi.patch
- patches/0014-Unvendor-tcltk.patch
- patches/0015-unvendor-xz.patch
- patches/0016-unvendor-zlib.patch
- patches/0017-Do-not-pass-g-to-GCC-when-not-Py_DEBUG.patch
- patches/0018-Unvendor-expat.patch
- patches/0019-Remove-unused-readelf.patch
- patches/0020-Don-t-checksharedmods-if-cross-compiling.patch
- patches/0021-Override-configure-LIBFFI.patch
- patches/0022-Allow-linking-ncursesw-panelw-on-macOS-if-available.patch
build:
number: {{ build_number }}
requirements:
build:
{% if from_source_control == 'yes' %}
- git
{% else %}
- patch # [not win]
- m2-patch # [win]
- m2-gcc-libs # [win]
{% endif %}
outputs:
- name: python
script: build_base.sh # [unix]
script: build_base.bat # [win]
build:
number: {{ build_number }}
activate_in_script: true
# Windows has issues updating python if conda is using files itself.
# Copy rather than link.
no_link:
- DLLs/_ctypes.pyd # [win]
ignore_run_exports_from: # [unix]
# C++ only installed so CXX is defined for distutils/sysconfig.
- {{ compiler('cxx') }} # [unix]
# Disabled until verified to work correctly
detect_binary_files_with_prefix: true
# detect_binary_files_with_prefix: False
# binary_has_prefix_files:
# - lib/libpython{{ ver2 }}.*.1.0
# - bin/python{{ ver2 }} # [linux]
# - lib/libpython{{ ver2 }}.a # [linux]
# - lib/libpython{{ ver2 }}.nolto.a # [linux]
# - lib/libpython3.so # [linux]
# - lib/python{{ ver2 }}/lib-dynload/_hashlib.cpython-{{ ver2nd }}-x86_64-linux-gnu.so # [linux]
# - lib/libpython3.dylib # [osx]
# match python.org compiler standard
skip: true # [win and int(float(vc)) < 14]
skip_compile_pyc:
- '*.py' # [build_platform != target_platform]
string: {{ dev_ }}h{{ PKG_HASH }}_{{ PKG_BUILDNUM }}{{ linkage_nature }}{{ debug }}_cpython # ["conda-forge" in (channel_targets or "")]
string: h{{ PKG_HASH }}_{{ PKG_BUILDNUM }}{{ linkage_nature }}{{ debug }} # ["conda-forge" not in (channel_targets or "")]
{% if 'conda-forge' in channel_targets %}
run_exports:
noarch:
- python
weak:
- python_abi {{ ver2 }}.* *_cp{{ ver2nd }}
{% if py_interp_debug == "yes" %}
- python {{ ver2 }}.* *_debug_cpython
{% endif %}
{% endif %}
script_env:
- PY_INTERP_LINKAGE_NATURE={{ linkage_nature_env }}
- PY_INTERP_DEBUG={{ py_interp_debug }}
# Putting these here means they get emitted to build_env_setup.{sh,bat} meaning we can launch IDEs
# after sourcing or calling that script without examine the contents of conda_build.{sh,bat} for
# important env. vars.
{% if 'conda-forge' in channel_targets %}
- CONDA_FORGE=yes
{% else %}
- CONDA_FORGE=no
{% endif %}
missing_dso_whitelist: # [win]
- '**/MSVCR71.dll' # [win]
- '**/MSVCR80.dll' # [win]
# I have no idea why this is not in C:\Windows\System32\downlevel
- '**/api-ms-win-core-path-l1-1-0.dll' # [win]
requirements:
build:
- {{ compiler('c') }}
- {{ stdlib('c') }}
- {{ compiler('cxx') }}
- {{ cdt('xorg-x11-proto-devel') }} # [linux]
- {{ cdt('libx11-devel') }} # [linux]
- make # [not win]
- libtool # [unix]
- pkg-config # [not win]
# configure script looks for llvm-ar for lto
- llvm-tools # [osx]
- ld_impl_{{ target_platform }} # [linux]
{% if 'conda-forge' in channel_targets %}
- binutils_impl_{{ target_platform }} # [linux]
{% endif %}
- tk # [build_platform != target_platform]
- readline # [build_platform != target_platform]
- ncurses # [build_platform != target_platform]
- zlib # [build_platform != target_platform]
host:
- bzip2
- sqlite
- xz
- zlib
- openssl
- readline # [not win]
- tk
- ncurses # [unix]
- libffi
- ld_impl_{{ target_platform }} >=2.36.1 # [linux]
- libnsl # [linux]
- libuuid # [linux]
- libxcrypt # [linux]
- expat
run:
- ld_impl_{{ target_platform }} >=2.36.1 # [linux]
- tzdata
{% if dev != '' %}
- _python_rc
{% endif %}
{% if 'conda-forge' in channel_targets %}
run_constrained:
- python_abi {{ ver2 }}.* *_cp{{ ver2nd }}
{% endif %}
test:
downstreams:
- cython
- setuptools
requires:
- ripgrep
- cmake
- ninja
- {{ compiler('c') }}
# Tried to use enable_language(C) to avoid needing this. It does not work.
- {{ compiler('cxx') }}
files:
- tests/cmake/*
- tests/cython/*
- tests/prefix-replacement/*
- run_test.py
commands:
- echo on # [win]
- set # [win]
- python -V
- python3 -V # [not win]
- 2to3 -h
- pydoc -h
- python3-config --help # [not win]
- set "PIP_NO_BUILD_ISOLATION=False" # [win]
- set "PIP_NO_DEPENDENCIES=True" # [win]
- set "PIP_IGNORE_INSTALLED=True" # [win]
- set "PIP_NO_INDEX=True" # [win]
- set "PIP_CACHE_DIR=%CONDA_PREFIX%/pip_cache" # [win]
- set "TEMP=%CONDA_PREFIX%/tmp" # [win]
- mkdir "%TEMP%" # [win]
- python -Im ensurepip --upgrade --default-pip # [win]
# tzdata/zoneinfo test that will need the tzdata package to pass
- python -c "from zoneinfo import ZoneInfo; from datetime import datetime; dt = datetime(2020, 10, 31, 12, tzinfo=ZoneInfo('America/Los_Angeles')); print(dt.tzname())"
- python -m venv test-venv
- test-venv\\Scripts\\python.exe -c "import ctypes" # [win]
- test-venv/bin/python -c "import ctypes" # [unix]
- python -c "import sysconfig; print(sysconfig.get_config_var('CC'))" # [not win]
- _CONDA_PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata_x86_64_conda_cos6_linux_gnu python -c "import sysconfig; print(sysconfig.get_config_var('CC'))" # [linux64]
# check for unreplaced @ symbols in sysconfig files, excluding e.g. '"$@".lto'
- for f in ${CONDA_PREFIX}/lib/python*/_sysconfig*.py; do echo "Checking $f:"; if [[ `rg @[^@]*@ $f` ]]; then echo "FAILED ON $f"; cat $f; exit 1; fi; done # [linux64 or osx]
- test ! -f ${PREFIX}/lib/libpython${PKG_VERSION%.*}.a # [unix]
- test ! -f ${PREFIX}/lib/libpython${PKG_VERSION%.*}.nolto.a # [unix]
# https://github.com/conda-forge/python-feedstock/issues/384
- if exist %PREFIX%\\Scripts\\pydoc exit 1 # [win]
- if exist %PREFIX%\\Scripts\\idle exit 1 # [win]
- if exist %PREFIX%\\Scripts\\2to3 exit 1 # [win]
- if not exist %PREFIX%\\Scripts\\pydoc-script.py exit 1 # [win]
- if not exist %PREFIX%\\Scripts\\idle-script.py exit 1 # [win]
- if not exist %PREFIX%\\Scripts\\2to3-script.py exit 1 # [win]
- if not exist %PREFIX%\\Scripts\\idle.exe exit 1 # [win]
- if not exist %PREFIX%\\Scripts\\2to3.exe exit 1 # [win]
- if not exist %PREFIX%\\Scripts\\pydoc.exe exit 1 # [win]
- pushd tests
- pushd prefix-replacement # [unix]
- bash build-and-test.sh # [unix]
- popd # [unix]
- pushd cmake
- cmake -GNinja -DPY_VER={{ version }}
# --trace --debug-output --debug-trycompile .
- popd
- popd
- python run_test.py
- test ! -f default.profraw # [osx]
# Test workaround for https://github.com/conda/conda/issues/10969
- test -d "$PREFIX/lib/python3.1/site-packages" # [unix]
- python3.1 --version # [unix]
# Test for segfault on osx-64 with libffi=3.4, see https://bugs.python.org/issue44556
- python -c "from ctypes import CFUNCTYPE; CFUNCTYPE(None)(id)"
# Test for wide character supported via ncursesw
- TERM=xterm >/dev/null python -c "import curses; scr = curses.initscr(); curses.unget_wch('x'); assert 'x' == scr.get_wch()" # [unix]
# crypt module will be removed in 3.13 => this failing is a reminder to remove the libxcrypt dependency
- python -c "import crypt" # [unix]
- name: libpython-static
script: build_static.sh # [unix]
script: build_static.bat # [win]
build:
number: {{ build_number }}
activate_in_script: true
ignore_run_exports:
- python_abi
script_env:
- PY_INTERP_DEBUG={{ py_interp_debug }}
string: h{{ PKG_HASH }}_{{ PKG_BUILDNUM }}{{ linkage_nature }}{{ debug }}_cpython # ["conda-forge" in (channel_targets or "")]
string: h{{ PKG_HASH }}_{{ PKG_BUILDNUM }}{{ linkage_nature }}{{ debug }} # ["conda-forge" not in (channel_targets or "")]
requirements:
build:
- {{ compiler('c') }}
- {{ stdlib('c') }}
- {{ compiler('cxx') }}
{% if from_source_control == 'yes' %}
- git
{% endif %}
host:
- {{ pin_subpackage('python', exact=True) }}
run:
- {{ pin_subpackage('python', exact=True) }}
test:
files:
- tests/prefix-replacement/*
requires:
- {{ compiler('c') }}
commands:
- VER=${PKG_VERSION%.*} # [not win]
{% if py_interp_debug == "yes" %}
- VERABI=${VER}d # [not win]
{% else %}
- VERABI=${VER} # [not win]
{% endif %}
- test -f ${PREFIX}/lib/libpython${VERABI}.a # [unix]
- test -f ${PREFIX}/lib/libpython${VERABI}.nolto.a # [unix]
- test -f ${PREFIX}/lib/python${VER}/config-${VERABI}-darwin/libpython${VERABI}.a # [osx]
- pushd tests/prefix-replacement # [unix]
- bash build-and-test.sh # [unix]
- popd # [unix]
about:
home: https://www.python.org/
license: Python-2.0
license_file: LICENSE
summary: General purpose programming language
description: |
Python is a widely used high-level, general-purpose, interpreted, dynamic
programming language. Its design philosophy emphasizes code
readability, and its syntax allows programmers to express concepts in
fewer lines of code than would be possible in languages such as C++ or
Java. The language provides constructs intended to enable clear programs
on both a small and large scale.
doc_url: https://www.python.org/doc/versions/
doc_source_url: https://github.com/python/pythondotorg/blob/master/docs/source/index.rst
dev_url: https://docs.python.org/devguide/
extra:
feedstock-name: python
recipe-maintainers:
- chrisburr
- isuruf
- jakirkham
- mbargull
- mingwandroid
- msarahan
- pelson
- ocefpaf
- scopatz
- katietz
- xhochy