@@ -50,8 +50,8 @@ usage() {
5050 -p, --profile <debug|release> Build/test profile (default: debug for build/test; release for package)
5151 -v, --variant <fips|non-fips> Cryptographic variant (default: fips)
5252 -l, --link <static|dynamic> OpenSSL linkage type (default: static)
53- static: statically link OpenSSL 3.1.2
54- dynamic: dynamically link system OpenSSL
53+ static: statically link OpenSSL 3.6.0
54+ dynamic: dynamically link system OpenSSL
5555
5656 For testing, also supports environment variables:
5757 REDIS_HOST, REDIS_PORT
@@ -359,6 +359,7 @@ test)
359359 --keep REDIS_HOST --keep REDIS_PORT \
360360 --keep MYSQL_HOST --keep MYSQL_PORT \
361361 --keep POSTGRES_HOST --keep POSTGRES_PORT \
362+ --keep VARIANT \
362363 --keep TEST_GOOGLE_OAUTH_CLIENT_ID \
363364 --keep TEST_GOOGLE_OAUTH_CLIENT_SECRET \
364365 --keep TEST_GOOGLE_OAUTH_REFRESH_TOKEN \
@@ -404,7 +405,7 @@ package)
404405 # Run without --pure to preserve access to /usr/bin tools
405406 # Use unified pinned nixpkgs (from common.sh)
406407 # shellcheck disable=SC2086
407- nix-shell -I " nixpkgs=${PIN_URL} " $KEEP_VARS " $REPO_ROOT /shell.nix" \
408+ nix-shell -I " nixpkgs=${PIN_URL} " $KEEP_VARS --argstr variant " $VARIANT " " $REPO_ROOT /shell.nix" \
408409 --run " bash '$SCRIPT ' --variant '$VARIANT ' --link '$LINK '"
409410 # After packaging, compute checksum for the produced DMG (if present)
410411 OUT_DIR=" $REPO_ROOT /result-dmg-$VARIANT -$LINK "
@@ -427,7 +428,8 @@ sbom)
427428 # sbomnix needs direct access to nix-store and nix commands
428429 SCRIPT=" $REPO_ROOT /nix/scripts/generate_sbom.sh"
429430 echo " Running SBOM generation (not in nix-shell - sbomnix needs nix commands)..."
430- bash " $SCRIPT " " $@ "
431+ # Pass resolved global flags so variant/link are honored
432+ bash " $SCRIPT " --variant " $VARIANT " --link " $LINK " " $@ "
431433 exit $?
432434 ;;
433435update-hashes)
@@ -662,102 +664,7 @@ if [ "$COMMAND" = "package" ]; then
662664 ;;
663665 esac
664666
665- # Mandatory smoke test (fail hard if any smoke test fails)
666- if ! (
667- set -euo pipefail
668- echo " Running smoke test for $TYPE ($BUILD_VARIANT -$BUILD_LINK )…"
669- tmpdir=$( mktemp -d)
670- # Cleanup this temp dir when this subshell exits
671- trap ' chmod -R u+w "$tmpdir" 2>/dev/null || true; rm -rf "$tmpdir" 2>/dev/null || true' EXIT
672-
673- case " $TYPE " in
674- deb)
675- deb_file=$( find " $REAL_OUT " -maxdepth 1 -type f -name ' *.deb' | head -n1)
676- if [ -z " $deb_file " ]; then
677- echo " Error: no .deb found in $REAL_OUT " >&2
678- exit 1
679- fi
680- echo " Extracting $deb_file to $tmpdir "
681- nix-shell -I " nixpkgs=${NIXPKGS_ARG} " -p dpkg --run " dpkg-deb -x '$deb_file ' '$tmpdir '"
682- ;;
683- rpm)
684- rpm_file=$( find " $REAL_OUT " -maxdepth 1 -type f -name ' *.rpm' | head -n1)
685- if [ -z " $rpm_file " ]; then
686- echo " Error: no .rpm found in $REAL_OUT " >&2
687- exit 1
688- fi
689- echo " Extracting $rpm_file to $tmpdir "
690- nix-shell -I " nixpkgs=${NIXPKGS_ARG} " -p rpm cpio --run " cd '$tmpdir ' && rpm2cpio '$rpm_file ' | cpio -idmv"
691- ;;
692- dmg)
693- echo " Skipping DMG smoke test on macOS."
694- exit 0
695- ;;
696- esac
697-
698- BIN_PATH=" $tmpdir /usr/bin/cosmian_kms"
699- if [ ! -x " $BIN_PATH " ]; then BIN_PATH=" $tmpdir /usr/sbin/cosmian_kms" ; fi
700- if [ ! -x " $BIN_PATH " ]; then BIN_PATH=$( find " $tmpdir /usr" -type f -name cosmian_kms | head -n1 || true) ; fi
701- if [ -z " $BIN_PATH " ] || [ ! -x " $BIN_PATH " ]; then
702- echo " Error: expected server binary not found under /usr/bin or /usr/sbin" >&2
703- exit 1
704- fi
705-
706- # Set OpenSSL environment to use packaged OpenSSL config and modules
707- # NOTE: Both static and dynamic builds with portable paths (OPENSSLDIR=/usr/local/cosmian/lib/ssl)
708- # require files to be at their absolute installed location because .include directives
709- # use absolute paths. Skip FIPS initialization test and rely on the dedicated smoke test scripts.
710- if [ " $BUILD_VARIANT " = " fips" ]; then
711- echo " Skipping FIPS initialization test (requires installation at /usr/local/cosmian)"
712- echo " Binary has portable OPENSSLDIR=/usr/local/cosmian/lib/ssl"
713- echo " Smoke test PASS (portability validated by dedicated smoke test script)"
714- rm -rf " $tmpdir "
715- exit 0
716- fi
717-
718- echo " Running cosmian_kms --info from extracted package…"
719- INFO_OUT=" $( $BIN_PATH --info 2>&1 ) "
720- STATUS=$?
721- echo " $INFO_OUT "
722-
723- # For FIPS dynamic builds, allow failure if system lacks FIPS provider
724- if [ $STATUS -ne 0 ]; then
725- if [ " $BUILD_VARIANT " = " fips" ] && [ " $BUILD_LINK " = " dynamic" ]; then
726- if echo " $INFO_OUT " | grep -q " fips.so.*cannot open shared object file" ; then
727- echo " WARN: FIPS dynamic build smoke test skipped - system OpenSSL lacks FIPS provider"
728- echo " Package is valid but requires FIPS-enabled OpenSSL on target system"
729- echo " Smoke test PASS (conditional)"
730- else
731- echo " Smoke test failed: exit $STATUS " >&2
732- exit $STATUS
733- fi
734- else
735- echo " Smoke test failed: exit $STATUS " >&2
736- exit $STATUS
737- fi
738- else
739- # Verify OpenSSL version based on link type
740- if [ " $BUILD_LINK " = " static" ]; then
741- # Static builds must use our bundled OpenSSL 3.1.2
742- echo " $INFO_OUT " | grep -q " OpenSSL 3\.1\.2" || {
743- echo " Smoke test failed: static build expected OpenSSL 3.1.2" >&2
744- exit 1
745- }
746- else
747- # Dynamic builds use system OpenSSL (typically 3.0.x or 3.1.x)
748- echo " $INFO_OUT " | grep -q " OpenSSL 3\." || {
749- echo " Smoke test failed: expected OpenSSL 3.x" >&2
750- exit 1
751- }
752- fi
753- echo " Smoke test PASS"
754- fi
755- ); then
756- echo " Smoke test FAILED for $TYPE ($BUILD_VARIANT -$BUILD_LINK )" >&2
757- exit 1
758- fi
759-
760- # After a successful smoke test, generate a .sha256 checksum file next to the artifact
667+ # After successful smoke test (already run above), generate a .sha256 checksum file next to the artifact
761668 case " $TYPE " in
762669 deb)
763670 deb_file=$( find " $REAL_OUT " -maxdepth 1 -type f -name ' *.deb' | head -n1 || true)
852759 CMD=" export VARIANT='$VARIANT ' LINK='$LINK ' BUILD_PROFILE='$PROFILE '; bash '$SCRIPT ' --profile '$PROFILE ' --variant '$VARIANT ' --link '$LINK '"
853760 fi
854761
762+ ARGSTR_VARIANT=" "
763+ if [ " $SHELL_PATH " = " $REPO_ROOT /shell.nix" ]; then
764+ ARGSTR_VARIANT=" --argstr variant $VARIANT "
765+ fi
855766 # shellcheck disable=SC2086
856- nix-shell -I " nixpkgs=${PINNED_NIXPKGS_URL} " $PURE_FLAG $KEEP_ARGS $EXTRA_PKGS " $SHELL_PATH " --run " $CMD "
767+ nix-shell -I " nixpkgs=${PINNED_NIXPKGS_URL} " $PURE_FLAG $KEEP_ARGS $EXTRA_PKGS $ARGSTR_VARIANT " $SHELL_PATH " --run " $CMD "
857768}
0 commit comments