@@ -48,8 +48,6 @@ dockerhub-auth-template: &DOCKERHUB_AUTH
48
48
<< : *DOCKERHUB_CONTEXT
49
49
- " build-image-fedora-35 " :
50
50
<< : *DOCKERHUB_CONTEXT
51
- - " build-image-oraclelinux-8 " :
52
- << : *DOCKERHUB_CONTEXT
53
51
# Restore later as PyPy38
54
52
# - "build-image-pypy27-buster":
55
53
# <<: *DOCKERHUB_CONTEXT
@@ -88,19 +86,16 @@ workflows:
88
86
- " ubuntu-22-04 " :
89
87
{}
90
88
91
- # Equivalent to RHEL 8; CentOS 8 is dead.
92
- - " oraclelinux-8 " :
93
- {}
94
-
95
89
- " nixos " :
96
- name : " <<matrix.pythonVersion>>"
97
- nixpkgs : " nixpkgs-unstable"
90
+ name : " <<matrix.nixpkgs>>-<<matrix.pythonVersion>>"
98
91
matrix :
99
92
parameters :
93
+ nixpkgs :
94
+ - " nixpkgs-24_11"
100
95
pythonVersion :
101
- - " python39"
102
96
- " python310"
103
97
- " python311"
98
+ - " python312"
104
99
105
100
# Eventually, test against PyPy 3.8
106
101
# - "pypy27-buster":
@@ -130,7 +125,7 @@ workflows:
130
125
# of Python, we probably have to do something here.
131
126
pythonVersion :
132
127
- " 3.9"
133
- - " 3.11 "
128
+ - " 3.12 "
134
129
135
130
- " integration " :
136
131
# Run even the slow integration tests here. We need the `--` to
@@ -229,7 +224,7 @@ jobs:
229
224
# version-specific binary packages so include the Python version
230
225
# in this key, as well as the canonical source of our
231
226
# dependencies.
232
- - &CACHE_KEY "pip-packages-v1-<< parameters.pythonVersion >>-{{ checksum \"setup.py \" }}"
227
+ - &CACHE_KEY "pip-packages-v1-<< parameters.pythonVersion >>-{{ checksum \"pyproject.toml \" }}"
233
228
234
229
- " run " :
235
230
name : " Fix $env:PATH"
@@ -249,11 +244,6 @@ jobs:
249
244
# PowerShell string escape character.
250
245
Add-Content -Path $Profile.CurrentUserAllHosts -Value "`$env:PATH = `"$p;$q;`$env:PATH`""
251
246
252
- - " run " :
253
- name : " Display tool versions"
254
- command : |
255
- python misc/build_helpers/show-tool-versions.py
256
-
257
247
- " run " :
258
248
# It's faster to install a wheel than a source package. If we don't
259
249
# have a cached wheelhouse then build all of the wheels and dump
@@ -280,10 +270,15 @@ jobs:
280
270
name : " Install Dependencies"
281
271
environment :
282
272
# By this point we should no longer need an index.
283
- PIP_NO_INDEX : " 1"
273
+ # # PIP_NO_INDEX: "1"
284
274
command : |
285
275
python -m pip install .[testenv] .[test]
286
276
277
+ - " run " :
278
+ name : " Display tool versions"
279
+ command : |
280
+ python misc/build_helpers/show-tool-versions.py
281
+
287
282
- " run " :
288
283
name : " Run Unit Tests"
289
284
environment :
@@ -540,37 +535,6 @@ jobs:
540
535
<< : *UTF_8_ENVIRONMENT
541
536
TAHOE_LAFS_TOX_ENVIRONMENT : " py310"
542
537
543
- oraclelinux-8 : &RHEL_DERIV
544
- docker :
545
- - << : *DOCKERHUB_AUTH
546
- image : " tahoelafsci/oraclelinux:8-py3.8"
547
- user : " nobody"
548
-
549
- environment :
550
- << : *UTF_8_ENVIRONMENT
551
- TAHOE_LAFS_TOX_ENVIRONMENT : " py38"
552
-
553
- # pip cannot install packages if the working directory is not readable.
554
- # We want to run a lot of steps as nobody instead of as root.
555
- working_directory : " /tmp/project"
556
-
557
- steps :
558
- - " checkout"
559
- - run : *SETUP_VIRTUALENV
560
- - run : *RUN_TESTS
561
- - store_test_results : *STORE_TEST_RESULTS
562
- - store_artifacts : *STORE_TEST_LOG
563
- - store_artifacts : *STORE_ELIOT_LOG
564
- - store_artifacts : *STORE_OTHER_ARTIFACTS
565
- - run : *SUBMIT_COVERAGE
566
-
567
- fedora-35 :
568
- << : *RHEL_DERIV
569
- docker :
570
- - << : *DOCKERHUB_AUTH
571
- image : " tahoelafsci/fedora:35-py3"
572
- user : " nobody"
573
-
574
538
nixos :
575
539
parameters :
576
540
nixpkgs :
@@ -592,15 +556,12 @@ jobs:
592
556
buildSteps :
593
557
- " run " :
594
558
name : " Unit Test"
559
+ environment :
560
+ # Once dependencies are built, we can allow some more concurrency for our own
561
+ # test suite.
562
+ UNITTEST_CORES : 8
595
563
command : |
596
- source .circleci/lib.sh
597
-
598
- # Translate the nixpkgs selection into a flake reference we
599
- # can use to override the default nixpkgs input.
600
- NIXPKGS=$(nixpkgs_flake_reference <<parameters.nixpkgs>>)
601
-
602
- cache_if_able nix run \
603
- --override-input nixpkgs "$NIXPKGS" \
564
+ nix run \
604
565
.#<<parameters.pythonVersion>>-unittest -- \
605
566
--jobs $UNITTEST_CORES \
606
567
allmydata
@@ -698,14 +659,6 @@ jobs:
698
659
PYTHON_VERSION : " 3.10"
699
660
700
661
701
- build-image-oraclelinux-8 :
702
- << : *BUILD_IMAGE
703
-
704
- environment :
705
- DISTRO : " oraclelinux"
706
- TAG : " 8"
707
- PYTHON_VERSION : " 3.8"
708
-
709
662
build-image-fedora-35 :
710
663
<< : *BUILD_IMAGE
711
664
@@ -730,20 +683,16 @@ executors:
730
683
# requirements and goals.
731
684
# https://circleci.com/developer/orbs/orb/circleci/windows#executors-server-2022
732
685
machine :
733
- image : " windows-server-2022-gui:2023.06.1 "
686
+ image : " windows-server-2022-gui:current "
734
687
shell : " powershell.exe -ExecutionPolicy Bypass"
735
688
resource_class : " windows.large"
736
689
737
690
nix :
738
691
docker :
739
692
# Run in a highly Nix-capable environment.
740
693
- << : *DOCKERHUB_AUTH
741
- image : " nixos/nix:2.16.1 "
694
+ image : " nixos/nix:2.25.3 "
742
695
environment :
743
- # CACHIX_AUTH_TOKEN is manually set in the CircleCI web UI and allows us
744
- # to push to CACHIX_NAME. CACHIX_NAME tells cachix which cache to push
745
- # to.
746
- CACHIX_NAME : " tahoe-lafs-opensource"
747
696
# Let us use features marked "experimental". For example, most/all of
748
697
# the `nix <subcommand>` forms.
749
698
NIX_CONFIG : " experimental-features = nix-command flakes"
@@ -766,42 +715,21 @@ commands:
766
715
type : " steps"
767
716
768
717
steps :
769
- - " run " :
770
- # Get cachix for Nix-friendly caching.
771
- name : " Install Basic Dependencies"
772
- command : |
773
- # Get some build environment dependencies and let them float on a
774
- # certain release branch. These aren't involved in the actual
775
- # package build (only in CI environment setup) so the fact that
776
- # they float shouldn't hurt reproducibility.
777
- NIXPKGS="nixpkgs/nixos-23.05"
778
- nix profile install $NIXPKGS#cachix $NIXPKGS#bash $NIXPKGS#jp
779
-
780
- # Activate our cachix cache for "binary substitution". This sets
781
- # up configuration tht lets Nix download something from the cache
782
- # instead of building it locally, if possible.
783
- cachix use "${CACHIX_NAME}"
784
-
785
718
- " checkout"
786
719
787
- - " run " :
788
- # The Nix package doesn't know how to do this part, unfortunately.
789
- name : " Generate version"
790
- command : |
791
- nix-shell \
792
- -p 'python3.withPackages (ps: [ ps.setuptools ])' \
793
- --run 'python setup.py update_version'
794
-
795
720
- " run " :
796
721
name : " Build Package"
722
+ environment :
723
+ # CircleCI build environment looks like it has a zillion and a half cores.
724
+ # Don't let Nix autodetect this high core count because it blows up memory
725
+ # usage and fails the test run. Pick a number of cores that suits the build
726
+ # environment we're paying for (the free one!).
727
+ DEPENDENCY_CORES : 3
797
728
command : |
798
- source .circleci/lib.sh
799
- NIXPKGS=$(nixpkgs_flake_reference <<parameters.nixpkgs>>)
800
- cache_if_able nix build \
729
+ nix build \
801
730
--verbose \
802
731
--print-build-logs \
803
732
--cores "$DEPENDENCY_CORES" \
804
- --override-input nixpkgs "$NIXPKGS" \
805
733
.#<<parameters.pythonVersion>>-tahoe-lafs
806
734
807
735
- steps : " <<parameters.buildSteps>>"
0 commit comments