@@ -3,20 +3,135 @@ version: 2.1
33jobs :
44 test-arm :
55 machine :
6- image : ubuntu-2004:202101-01
6+ image : ubuntu-2004:2022.04.1
77 resource_class : arm.large
88 environment :
9- ENV_FILE : ci/deps/circle-38 -arm64.yaml
9+ ENV_FILE : ci/deps/circle-310 -arm64.yaml
1010 PYTEST_WORKERS : auto
1111 PATTERN : " not single_cpu and not slow and not network and not clipboard and not arm_slow and not db"
1212 PYTEST_TARGET : " pandas"
1313 PANDAS_CI : " 1"
1414 steps :
1515 - checkout
1616 - run : .circleci/setup_env.sh
17- - run : PATH=$HOME/miniconda3/envs/pandas-dev/bin:$HOME/miniconda3/condabin:$PATH ci/run_tests.sh
17+ - run : >
18+ PATH=$HOME/miniconda3/envs/pandas-dev/bin:$HOME/miniconda3/condabin:$PATH
19+ LD_PRELOAD=$HOME/miniconda3/envs/pandas-dev/lib/libgomp.so.1:$LD_PRELOAD
20+ ci/run_tests.sh
21+ linux-musl :
22+ docker :
23+ - image : quay.io/pypa/musllinux_1_1_aarch64
24+ resource_class : arm.large
25+ steps :
26+ # Install pkgs first to have git in the image
27+ # (needed for checkout)
28+ - run : |
29+ apk update
30+ apk add git
31+ apk add musl-locales
32+ - checkout
33+ - run : |
34+ /opt/python/cp311-cp311/bin/python -m venv ~/virtualenvs/pandas-dev
35+ . ~/virtualenvs/pandas-dev/bin/activate
36+ python -m pip install --no-cache-dir -U pip wheel setuptools meson-python==0.13.1 meson[ninja]==1.2.1
37+ python -m pip install --no-cache-dir versioneer[toml] cython numpy python-dateutil pytz pytest>=7.3.2 pytest-xdist>=2.2.0 hypothesis>=6.46.1
38+ python -m pip install --no-cache-dir --no-build-isolation -e . --config-settings=setup-args="--werror"
39+ python -m pip list --no-cache-dir
40+ - run : |
41+ . ~/virtualenvs/pandas-dev/bin/activate
42+ export PANDAS_CI=1
43+ python -m pytest -m 'not slow and not network and not clipboard and not single_cpu' pandas --junitxml=test-data.xml
44+ build-aarch64 :
45+ parameters :
46+ cibw-build :
47+ type : string
48+ machine :
49+ image : ubuntu-2004:2022.04.1
50+ resource_class : arm.large
51+ environment :
52+ TRIGGER_SOURCE : << pipeline.trigger_source >>
53+ steps :
54+ - checkout
55+ - run :
56+ name : Check if build is necessary
57+ command : |
58+ # Check if tag is defined or TRIGGER_SOURCE is scheduled
59+ if [[ -n "$CIRCLE_TAG" ]]; then
60+ echo 'export IS_PUSH="true"' >> "$BASH_ENV"
61+ elif [[ $TRIGGER_SOURCE == "scheduled_pipeline" ]]; then
62+ echo 'export IS_SCHEDULE_DISPATCH="true"' >> "$BASH_ENV"
63+ # Look for the build label/[wheel build] in commit
64+ # grep takes a regex, so need to escape brackets
65+ elif (git log --format=oneline -n 1 $CIRCLE_SHA1) | grep -q '\[wheel build\]'; then
66+ : # Do nothing
67+ elif ! (curl https://api.github.com/repos/pandas-dev/pandas/issues/$CIRCLE_PR_NUMBER | jq '.labels' | grep -q 'Build'); then
68+ circleci-agent step halt
69+ fi
70+ - run :
71+ name : Build aarch64 wheels
72+ no_output_timeout : 30m # Sometimes the tests won't generate any output, make sure the job doesn't get killed by that
73+ command : |
74+ pip3 install cibuildwheel==2.15.0
75+ # When this is a nightly wheel build, allow picking up NumPy 2.0 dev wheels:
76+ if [[ "$IS_SCHEDULE_DISPATCH" == "true" || "$IS_PUSH" != 'true' ]]; then
77+ export CIBW_ENVIRONMENT="PIP_EXTRA_INDEX_URL=https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"
78+ fi
79+ cibuildwheel --prerelease-pythons --output-dir wheelhouse
80+
81+ environment :
82+ CIBW_BUILD : << parameters.cibw-build >>
83+
84+ - run :
85+ name : Install Anaconda Client & Upload Wheels
86+ command : |
87+ echo "Install Mambaforge"
88+ MAMBA_URL="https://github.com/conda-forge/miniforge/releases/download/23.1.0-0/Mambaforge-23.1.0-0-Linux-aarch64.sh"
89+ echo "Downloading $MAMBA_URL"
90+ wget -q $MAMBA_URL -O minimamba.sh
91+ chmod +x minimamba.sh
92+
93+ MAMBA_DIR="$HOME/miniconda3"
94+ rm -rf $MAMBA_DIR
95+ ./minimamba.sh -b -p $MAMBA_DIR
96+
97+ export PATH=$MAMBA_DIR/bin:$PATH
98+
99+ mamba install -y -c conda-forge anaconda-client
100+
101+ source ci/upload_wheels.sh
102+ set_upload_vars
103+ upload_wheels
104+ - store_artifacts :
105+ path : wheelhouse/
18106
19107workflows :
20108 test :
109+ # Don't run trigger this one when scheduled pipeline runs
110+ when :
111+ not :
112+ equal : [ scheduled_pipeline, << pipeline.trigger_source >> ]
21113 jobs :
22114 - test-arm
115+ test-musl :
116+ # Don't run trigger this one when scheduled pipeline runs
117+ when :
118+ not :
119+ equal : [ scheduled_pipeline, << pipeline.trigger_source >> ]
120+ jobs :
121+ - linux-musl
122+ build-wheels :
123+ jobs :
124+ - build-aarch64 :
125+ filters :
126+ tags :
127+ only : /^v.*/
128+ matrix :
129+ parameters :
130+ cibw-build : ["cp39-manylinux_aarch64",
131+ " cp310-manylinux_aarch64" ,
132+ " cp311-manylinux_aarch64" ,
133+ " cp312-manylinux_aarch64" ,
134+ " cp39-musllinux_aarch64" ,
135+ " cp310-musllinux_aarch64" ,
136+ " cp311-musllinux_aarch64" ,
137+ " cp312-musllinux_aarch64" ,]
0 commit comments