diff --git a/.circleci/config.yml b/.circleci/config.yml index f142ef66..c1cc0e0d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,41 +11,41 @@ commands: type: string steps: - run: - name: Make Board (console logs not contiguous because multiple CPUS used to build under CircleCI, see logs in artifacts or Output build failing logs below in case of failed step) + name: Make Board (console logs not contiguous because multiple CPUs used to build under CircleCI, see logs in artifacts or Output build failing logs below in case of failed step) command: | echo "Sourcing /devenv.sh since docker entrypoint doesn't do it as expected" source /devenv.sh - rm -rf build/<>/<>/* build/<>/log/* - make V=1 BOARD=<> <> || touch ./tmpDir/failed_build + rm -rf build/<< parameters.arch >>/<< parameters.target >>/* build/<< parameters.arch >>/log/* + make V=1 BOARD=<< parameters.target >> << parameters.subcommand >> | ts || touch ./tmpDir/failed_build no_output_timeout: 3h - run: name: Output hashes command: | - cat build/<>/<>/hashes.txt || echo "No hashes.txt for this build step..." + cat build/<< parameters.arch >>/<< parameters.target >>/hashes.txt || echo "No hashes.txt for this build step..." - run: name: Output sizes command: | - cat build/<>/<>/sizes.txt || echo "No sizes.txt for this build step..." + cat build/<< parameters.arch >>/<< parameters.target >>/sizes.txt || echo "No sizes.txt for this build step..." - run: name: Archiving build logs. command: | - tar zcvf build/<>/<>/logs.tar.gz $(find build/ -name "*.log") + tar zcvf build/<< parameters.arch >>/<< parameters.target >>/logs.tar.gz $(find build/ -name "*.log") - run: name: Output build failing logs command: | if [[ -f ./tmpDir/failed_build ]]; then - find "./build/<>/" -name "*.log" -type f -mmin -1 -exec tail -n +1 '{}' + - exit 1 + find "./build/<< parameters.arch >>/" -name "*.log" -type f -mmin -1 -exec tail -n +1 '{}' + + exit 1 else - echo "Step hasn't failed. Continuing with next step..." + echo "Step hasn't failed. Continuing with next step..." fi - store_artifacts: - path: build/<>/<> + path: build/<< parameters.arch >>/<< parameters.target >> jobs: prep_env: docker: - - image: tlaurion/heads-dev-env:v0.2.0 + - image: tlaurion/heads-dev-env:v0.2.1 resource_class: large working_directory: ~/heads steps: @@ -73,7 +73,7 @@ jobs: - restore_cache: # First matched/found key wins and following keys are not tried keys: - # Cache for matching modules digest, validated to be exactly the same as in github current commit. + # Cache for matching modules digest, validated to be exactly the same as in GitHub current commit. # This cache was made on top of below caches, if previously existing. # If no module definition changed, we reuse this one - nix-docker-heads-modules-and-patches-{{ checksum "./tmpDir/all_modules_and_patches.sha256sums" }}{{ .Environment.CACHE_VERSION }} @@ -111,7 +111,7 @@ jobs: build_and_persist: docker: - - image: tlaurion/heads-dev-env:v0.2.0 + - image: tlaurion/heads-dev-env:v0.2.1 resource_class: large working_directory: ~/heads parameters: @@ -126,20 +126,20 @@ jobs: - attach_workspace: at: ~/heads - build_board: - arch: <> - target: <> - subcommand: <> + arch: << parameters.arch >> + target: << parameters.target >> + subcommand: << parameters.subcommand >> - persist_to_workspace: root: ~/heads paths: - - packages/<> - - build/<> - - crossgcc/<> - - install/<> + - packages/<< parameters.arch >> + - build/<< parameters.arch >> + - crossgcc/<< parameters.arch >> + - install/<< parameters.arch >> build: docker: - - image: tlaurion/heads-dev-env:v0.2.0 + - image: tlaurion/heads-dev-env:v0.2.1 resource_class: large working_directory: ~/heads parameters: @@ -160,7 +160,7 @@ jobs: save_cache: docker: - - image: tlaurion/heads-dev-env:v0.2.0 + - image: tlaurion/heads-dev-env:v0.2.1 resource_class: large working_directory: ~/heads steps: @@ -176,25 +176,21 @@ jobs: - crossgcc - packages - save_cache: - # Generate cache for the same coreboot mnd musl-cross-make modules definition if hash is not previously existing + # Generate cache for the same coreboot and musl-cross-make modules definition if hash is not previously existing # CircleCI removed their wildcard support, so we have to list precise versions to cache in directory names key: nix-docker-heads-coreboot-musl-cross-{{ checksum "./tmpDir/coreboot_musl-cross.sha256sums" }}{{ .Environment.CACHE_VERSION }} paths: - build/ppc64/coreboot-talos_2 - build/ppc64/musl-cross-38e52db8358c043ae82b346a2e6e66bc86a53bc1 - build/x86/coreboot-4.11 - - build/x86/coreboot-4.13 - - build/x86/coreboot-4.14 - - build/x86/coreboot-4.15 - - build/x86/coreboot-4.17 - - build/x86/coreboot-4.22.01 + - build/x86/coreboot-24.02.01 - build/x86/coreboot-nitrokey - build/x86/coreboot-purism - build/x86/musl-cross-38e52db8358c043ae82b346a2e6e66bc86a53bc1 - crossgcc - packages - save_cache: - #Generate cache for the exact same modules definitions if hash is not previously existing + # Generate cache for the exact same modules definitions if hash is not previously existing key: nix-docker-heads-modules-and-patches-{{ checksum "./tmpDir/all_modules_and_patches.sha256sums" }}{{ .Environment.CACHE_VERSION }} paths: - build @@ -208,16 +204,33 @@ workflows: jobs: - prep_env + # This step builds musl-cross for x86 architecture, which will be used by subsequent x86 board builds + - build_and_persist: + name: x86-musl-cross + target: x230-hotp-maximized + subcommand: "musl-cross" + requires: + - prep_env + + # This step builds musl-cross for ppc64 architecture, which will be used by subsequent ppc64 board builds + - build_and_persist: + name: ppc64-musl-cross + arch: ppc64 + target: talos-2 + subcommand: "musl-cross" + requires: + - prep_env + # Below, sequentially build one board for each coreboot version. # The last board in the sequence is the dependency for the parallel boards built at the end, and also save_cache. - # coreboot 4.22.01 + # coreboot 24.02.01 - build_and_persist: name: x230-hotp-maximized target: x230-hotp-maximized subcommand: "" requires: - - prep_env + - x86-musl-cross # coreboot purism - build_and_persist: @@ -237,7 +250,7 @@ workflows: target: nitropad-nv41 subcommand: "" requires: - - prep_env + - x86-musl-cross # coreboot talos_2 - build_and_persist: @@ -246,7 +259,7 @@ workflows: target: talos-2 subcommand: "" requires: - - prep_env + - ppc64-musl-cross # coreboot 4.11 - build_and_persist: @@ -254,7 +267,7 @@ workflows: target: librem_l1um subcommand: "" requires: - - prep_env + - x86-musl-cross # Cache one workspace per architecture # Make sure workspace caches are chainloaded and the last in chain for an arch is saved @@ -263,10 +276,7 @@ workflows: - talos-2 - librem_14 - # # Those onboarding new boards should add their entries below. - # - # coreboot 4.22.01 boards - build: name: x220-hotp-maximized @@ -513,31 +523,3 @@ workflows: subcommand: "" requires: - librem_l1um - -# - build: -# name: UNMAINTAINED_kgpe-d16_workstation-usb_keyboard -# target: UNMAINTAINED_kgpe-d16_workstation-usb_keyboard -# subcommand: "" -# requires: -# - UNMAINTAINED_kgpe-d16_workstation - -# - build: -# name: UNMAINTAINED_kgpe-d16_server -# target: UNMAINTAINED_kgpe-d16_server -# subcommand: "" -# requires: -# - UNMAINTAINED_kgpe-d16_workstation - -# - build: -# name: UNMAINTAINED_kgpe-d16_server-whiptail -# target: UNMAINTAINED_kgpe-d16_server-whiptail -# subcommand: "" -# requires: -# - UNMAINTAINED_kgpe-d16_workstation - -# - build: -# name: librem_l1um -# target: librem_l1um -# subcommand: "" -# requires: -# - librem_14