From 19aa76b07aa6488ff2b447325ce125229066ee88 Mon Sep 17 00:00:00 2001 From: Daniel Hilst <392820+dhilst@users.noreply.github.com> Date: Mon, 8 Jun 2026 10:04:04 -0300 Subject: [PATCH 1/8] fix(goconserver): replace unmaintained kr/pty with creack/pty to fix EL10 console fork Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com> --- goconserver/mockbuild.pl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/goconserver/mockbuild.pl b/goconserver/mockbuild.pl index e1889a7..715794e 100755 --- a/goconserver/mockbuild.pl +++ b/goconserver/mockbuild.pl @@ -91,8 +91,12 @@ $ENV{GOCACHE} = "$work_dir/gocache"; $ENV{GOMODCACHE} = "$work_dir/gomodcache"; $ENV{CGO_ENABLED} = '0'; +# The archived github.com/kr/pty sets SysProcAttr.Ctty to the parent-side fd, +# which modern Go's os/exec rejects with "Setctty set but Ctty not valid in +# child". Replace it with the API-identical maintained fork creack/pty. run("cd " . sh_quote($src_dir) . " && " . "go mod init github.com/xcat2/goconserver && " . + "go mod edit -replace github.com/kr/pty=github.com/creack/pty\@v1.1.21 && " . "go mod tidy" . " >" . sh_quote("$log_dir/go-mod.log") . " 2>&1"); @@ -160,7 +164,7 @@ print_step("Create spec and build RPM"); my $spec_content = <<"SPEC"; Name: goconserver Version: $version -Release: 1.el$rel +Release: 2.el$rel Summary: Console server written in Go for xCAT License: EPL-1.0 URL: https://github.com/xcat2/goconserver @@ -194,6 +198,9 @@ install -m 644 etc/goconserver/server.conf %{buildroot}/etc/goconserver/server.c %dir /var/log/goconserver %changelog +* Mon Jun 08 2026 xCAT EL10 build - 0.3.3-2.el10 +- Replace archived github.com/kr/pty with github.com/creack/pty to fix + "Setctty set but Ctty not valid in child" console fork failure on modern Go. SPEC my $spec_file = "$rpmbuild_top/SPECS/goconserver.spec"; From 19c65dbec598d3e1a73c19735810f5200b18a6f8 Mon Sep 17 00:00:00 2001 From: Daniel Hilst <392820+dhilst@users.noreply.github.com> Date: Tue, 19 May 2026 18:58:06 -0300 Subject: [PATCH 2/8] fix(deb): Port syslinux, elilo, grub2-xcat to modern Ubuntu toolchains MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit syslinux 3.86: add GCC 10+ -fcommon, GCC 15 -Wno-error flags, glibc sysmacros.h include, vpd.c pointer fix, python2 menugen skip. elilo-xcat: three patches for GCC 15 (bool keyword, StrnCpy conflict with gnu-efi 4.0) and binutils 2.46 (objcopy efi-app format removed). Bump debhelper compat 5→10, fix changelog maintainer emails. grub2-xcat: bump DH_COMPAT 5→8, add make_deb.sh. --- elilo/debian/changelog | 6 +- elilo/debian/compat | 2 +- .../patches/elilo-fix-bool-keyword.patch | 36 ++++ .../patches/elilo-fix-objcopy-format.patch | 25 +++ .../patches/elilo-fix-strncpy-conflict.patch | 183 ++++++++++++++++++ elilo/debian/patches/series | 3 + grub2-xcat/debian/rules | 2 +- grub2-xcat/make_deb.sh | 3 + syslinux/debian/control | 2 +- syslinux/make_deb.sh | 18 ++ 10 files changed, 274 insertions(+), 6 deletions(-) create mode 100644 elilo/debian/patches/elilo-fix-bool-keyword.patch create mode 100644 elilo/debian/patches/elilo-fix-objcopy-format.patch create mode 100644 elilo/debian/patches/elilo-fix-strncpy-conflict.patch create mode 100755 grub2-xcat/make_deb.sh diff --git a/elilo/debian/changelog b/elilo/debian/changelog index bcc4b66..ac4915b 100644 --- a/elilo/debian/changelog +++ b/elilo/debian/changelog @@ -2,19 +2,19 @@ elilo-xcat (3.14-6) UNRELEASED; urgency=low * bump up the version number to include elilo-x86.efi - -- xCAT Fri, 7 May 2021 23:16:56 -0800 + -- xCAT Fri, 7 May 2021 23:16:56 -0800 elilo-xcat (3.14-5) UNRELEASED; urgency=low * bump up the kernel_size from 8M to 15M - -- xCAT Fri, 10 Jul 2020 23:16:56 -0800 + -- xCAT Fri, 10 Jul 2020 23:16:56 -0800 elilo-xcat (3.14-4) UNRELEASED; urgency=low * modify the package to be arch indep - -- xCAT Thu, 13 Nov 2014 23:16:56 -0800 + -- xCAT Thu, 13 Nov 2014 23:16:56 -0800 elilo-xcat (1.2.1-1) unstable; urgency=low diff --git a/elilo/debian/compat b/elilo/debian/compat index 7ed6ff8..f599e28 100644 --- a/elilo/debian/compat +++ b/elilo/debian/compat @@ -1 +1 @@ -5 +10 diff --git a/elilo/debian/patches/elilo-fix-bool-keyword.patch b/elilo/debian/patches/elilo-fix-bool-keyword.patch new file mode 100644 index 0000000..23f7697 --- /dev/null +++ b/elilo/debian/patches/elilo-fix-bool-keyword.patch @@ -0,0 +1,36 @@ +--- elilo.orig/elilo.c 2026-05-19 14:49:25.504833083 +0000 ++++ elilo/elilo.c 2026-05-19 14:49:30.174044609 +0000 +@@ -405,15 +405,15 @@ + { + EFI_STATUS status; + UINTN l = sizeof(BOOLEAN); +- UINT8 bool = FALSE; ++ UINT8 edd_bool = FALSE; + INTN ret = -1; + +- status = uefi_call_wrapper(RT->GetVariable, 5, L"EDD30", &edd30_guid, NULL, &l, &bool); +- if (status == EFI_BUFFER_TOO_SMALL || (bool != TRUE && bool != FALSE)) { ++ status = uefi_call_wrapper(RT->GetVariable, 5, L"EDD30", &edd30_guid, NULL, &l, &edd_bool); ++ if (status == EFI_BUFFER_TOO_SMALL || (edd_bool != TRUE && edd_bool != FALSE)) { + ERR_PRT((L"Warning: EDD30 EFI variable is not boolean value: forcing it to TRUE")); + return -1; + } +- if (status == EFI_SUCCESS && bool == TRUE) { ++ if (status == EFI_SUCCESS && edd_bool == TRUE) { + VERB_PRT(3, Print(L"EDD30 is TRUE\n")); + elilo_opt.edd30_on = TRUE; + ret = 0; +@@ -435,10 +435,10 @@ + { + EFI_STATUS status; + UINTN l = sizeof(BOOLEAN); +- UINT8 bool; ++ UINT8 edd_bool; + +- bool = TRUE; +- status = uefi_call_wrapper(RT->SetVariable, 5, L"EDD30", &edd30_guid, EDD30_ATTR, l, &bool); ++ edd_bool = TRUE; ++ status = uefi_call_wrapper(RT->SetVariable, 5, L"EDD30", &edd30_guid, EDD30_ATTR, l, &edd_bool); + if (EFI_ERROR(status)) { + ERR_PRT((L"can't set EDD30 variable: ignoring it")); + return -1; diff --git a/elilo/debian/patches/elilo-fix-objcopy-format.patch b/elilo/debian/patches/elilo-fix-objcopy-format.patch new file mode 100644 index 0000000..ea43f81 --- /dev/null +++ b/elilo/debian/patches/elilo-fix-objcopy-format.patch @@ -0,0 +1,25 @@ +diff -ruN elilo.orig/Make.rules elilo/Make.rules +--- elilo.orig/Make.rules 2007-07-20 19:47:25.000000000 +0000 ++++ elilo/Make.rules 2026-05-19 14:52:32.458614655 +0000 +@@ -25,7 +25,7 @@ + + %.efi: %.so + $(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \ +- -j .rela -j .reloc --target=$(FORMAT) $*.so $@ ++ -j .rela -j .reloc -I elf64-$(OBJCOPY_ARCH) -O $(FORMAT) --subsystem=efi-app $*.so $@ + + %.so: %.o + $(LD) $(LDFLAGS) $^ -o $@ $(LOADLIBES) +diff -ruN elilo.orig/Makefile elilo/Makefile +--- elilo.orig/Makefile 2010-11-09 23:16:50.000000000 +0000 ++++ elilo/Makefile 2026-05-19 14:52:19.617943296 +0000 +@@ -34,7 +34,8 @@ + + LDFLAGS += -T $(LDSCRIPT) -shared -Bsymbolic -L$(EFILIB) -L$(GNUEFILIB) $(CRTOBJS) + LOADLIBES = -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name) +-FORMAT = efi-app-$(ARCH) ++OBJCOPY_ARCH = $(shell echo $(ARCH) | sed s,_,-,g) ++FORMAT = pei-$(OBJCOPY_ARCH) + + FILESYSTEM = + diff --git a/elilo/debian/patches/elilo-fix-strncpy-conflict.patch b/elilo/debian/patches/elilo-fix-strncpy-conflict.patch new file mode 100644 index 0000000..55400e2 --- /dev/null +++ b/elilo/debian/patches/elilo-fix-strncpy-conflict.patch @@ -0,0 +1,183 @@ +diff -ruN elilo.orig/fileops.c elilo/fileops.c +--- elilo.orig/fileops.c 2010-11-09 23:16:50.000000000 +0000 ++++ elilo/fileops.c 2026-05-19 14:48:27.942072518 +0000 +@@ -390,7 +390,7 @@ + + Print(L"Using builtin defaults for kernel and config file\n"); + +- StrnCpy(kname, FILEOPS_DEFAULT_KERNEL, maxlen-1); ++ EliloStrnCpy(kname, FILEOPS_DEFAULT_KERNEL, maxlen-1); + } + else { + boot_dev->fops->setdefaults(boot_dev->fops->intf, defconf, kname, maxlen, devpath); +@@ -402,8 +402,8 @@ + return EFI_INVALID_PARAMETER; + } + #endif +- StrnCpy(defconf[i].fname, FILEOPS_ARCH_DEFAULT_CONFIG, maxlen-1); +- StrnCpy(defconf[i+1].fname, FILEOPS_DEFAULT_CONFIG, maxlen-1); ++ EliloStrnCpy(defconf[i].fname, FILEOPS_ARCH_DEFAULT_CONFIG, maxlen-1); ++ EliloStrnCpy(defconf[i+1].fname, FILEOPS_DEFAULT_CONFIG, maxlen-1); + + #ifdef ELILO_DEBUG + VERB_PRT(3,Print(L"Default config filename list:\n")); +diff -ruN elilo.orig/fs/ext2fs.c elilo/fs/ext2fs.c +--- elilo.orig/fs/ext2fs.c 2009-04-02 20:17:13.000000000 +0000 ++++ elilo/fs/ext2fs.c 2026-05-19 14:48:27.942649987 +0000 +@@ -769,7 +769,7 @@ + { + if (name == NULL || maxlen < 1) return EFI_INVALID_PARAMETER; + +- StrnCpy(name, FS_NAME, maxlen-1); ++ EliloStrnCpy(name, FS_NAME, maxlen-1); + + name[maxlen-1] = CHAR_NULL; + +diff -ruN elilo.orig/fs/localfs.c elilo/fs/localfs.c +--- elilo.orig/fs/localfs.c 2010-11-09 23:14:21.000000000 +0000 ++++ elilo/fs/localfs.c 2026-05-19 14:48:27.943106300 +0000 +@@ -77,7 +77,7 @@ + { + if (name == NULL || maxlen < 1) return EFI_INVALID_PARAMETER; + +- StrnCpy(name, FS_NAME, maxlen-1); ++ EliloStrnCpy(name, FS_NAME, maxlen-1); + + name[maxlen-1] = CHAR_NULL; + +diff -ruN elilo.orig/fs/netfs.c elilo/fs/netfs.c +--- elilo.orig/fs/netfs.c 2026-05-19 14:48:14.413690716 +0000 ++++ elilo/fs/netfs.c 2026-05-19 14:48:27.942879702 +0000 +@@ -209,7 +209,7 @@ + { + if (name == NULL || maxlen < 1) return EFI_INVALID_PARAMETER; + +- StrnCpy(name, FS_NAME, maxlen-1); ++ EliloStrnCpy(name, FS_NAME, maxlen-1); + + name[maxlen-1] = CHAR_NULL; + +diff -ruN elilo.orig/glue_localfs.c elilo/glue_localfs.c +--- elilo.orig/glue_localfs.c 2004-02-19 22:39:04.000000000 +0000 ++++ elilo/glue_localfs.c 2026-05-19 14:48:27.942374366 +0000 +@@ -101,10 +101,10 @@ + static EFI_STATUS + localfs_setdefaults(VOID *this, config_file_t *config, CHAR16 *kname, UINTN maxlen, CHAR16 *devpath) + { +- StrnCpy(kname, LOCALFS_DEFAULT_KERNEL, maxlen-1); ++ EliloStrnCpy(kname, LOCALFS_DEFAULT_KERNEL, maxlen-1); + kname[maxlen-1] = CHAR_NULL; + +- StrnCpy(config[0].fname, LOCALFS_DEFAULT_CONFIG, maxlen-1); ++ EliloStrnCpy(config[0].fname, LOCALFS_DEFAULT_CONFIG, maxlen-1); + config[0].fname[maxlen-1] = CHAR_NULL; + + set_default_path(devpath); +diff -ruN elilo.orig/glue_netfs.c elilo/glue_netfs.c +--- elilo.orig/glue_netfs.c 2026-05-19 14:48:14.414011673 +0000 ++++ elilo/glue_netfs.c 2026-05-19 14:48:27.942495255 +0000 +@@ -132,7 +132,7 @@ + { + INTN len; + +- StrnCpy(netfs_default_path, info->bootfile, FILENAME_MAXLEN); ++ EliloStrnCpy(netfs_default_path, info->bootfile, FILENAME_MAXLEN); + + len = StrLen(netfs_default_path) - 1; + +@@ -191,13 +191,13 @@ + + status = netfs->netfs_query_layer(netfs, 0, NETFS_CONFIG_LAYER, maxlen, config[0].fname); + if (EFI_ERROR(status)) { +- StrnCpy(config[0].fname, NETFS_DEFAULT_CONFIG, maxlen-1); ++ EliloStrnCpy(config[0].fname, NETFS_DEFAULT_CONFIG, maxlen-1); + config[0].fname[maxlen-1] = CHAR_NULL; + } + + status = netfs->netfs_query_layer(netfs, 0, NETFS_KERNEL_LAYER, maxlen, kname); + if (EFI_ERROR(status)) { +- StrnCpy(kname, NETFS_DEFAULT_KERNEL, maxlen-1); ++ EliloStrnCpy(kname, NETFS_DEFAULT_KERNEL, maxlen-1); + kname[maxlen-1] = CHAR_NULL; + } + } else { +@@ -224,37 +224,37 @@ + * the filenames are constructed based on the IP(v4) address + */ + convert_ip2hex(ipaddr, m, str); +- StrnCpy(config[0].fname, str, maxlen-1); +- StrnCpy(config[0].fname+8, CONFIG_EXTENSION, 6); ++ EliloStrnCpy(config[0].fname, str, maxlen-1); ++ EliloStrnCpy(config[0].fname+8, CONFIG_EXTENSION, 6); + +- StrnCpy(config[1].fname, str, maxlen-1); +- StrnCpy(config[1].fname+6, CONFIG_ARCH_EXTENSION, EXTENSION_LENGTH); ++ EliloStrnCpy(config[1].fname, str, maxlen-1); ++ EliloStrnCpy(config[1].fname+6, CONFIG_ARCH_EXTENSION, EXTENSION_LENGTH); + +- StrnCpy(config[2].fname, str, maxlen-1); +- StrnCpy(config[2].fname+6, CONFIG_EXTENSION, 6); ++ EliloStrnCpy(config[2].fname, str, maxlen-1); ++ EliloStrnCpy(config[2].fname+6, CONFIG_EXTENSION, 6); + +- StrnCpy(config[3].fname, str, maxlen-1); +- StrnCpy(config[3].fname+4, CONFIG_ARCH_EXTENSION, EXTENSION_LENGTH); ++ EliloStrnCpy(config[3].fname, str, maxlen-1); ++ EliloStrnCpy(config[3].fname+4, CONFIG_ARCH_EXTENSION, EXTENSION_LENGTH); + +- StrnCpy(config[4].fname, str, maxlen-1); +- StrnCpy(config[4].fname+4, CONFIG_EXTENSION, 6); ++ EliloStrnCpy(config[4].fname, str, maxlen-1); ++ EliloStrnCpy(config[4].fname+4, CONFIG_EXTENSION, 6); + +- StrnCpy(config[5].fname, str, maxlen-1); +- StrnCpy(config[5].fname+2, CONFIG_ARCH_EXTENSION, EXTENSION_LENGTH); ++ EliloStrnCpy(config[5].fname, str, maxlen-1); ++ EliloStrnCpy(config[5].fname+2, CONFIG_ARCH_EXTENSION, EXTENSION_LENGTH); + +- StrnCpy(config[6].fname, str, maxlen-1); +- StrnCpy(config[6].fname+2, CONFIG_EXTENSION, 6); ++ EliloStrnCpy(config[6].fname, str, maxlen-1); ++ EliloStrnCpy(config[6].fname+2, CONFIG_EXTENSION, 6); + + /* use the MAC address as a possible file name as well */ + convert_mac2hex(info.hw_addr,6,str); +- StrnCpy(config[7].fname, str, maxlen-1); +- StrnCpy(config[7].fname+17, CONFIG_EXTENSION, 6); ++ EliloStrnCpy(config[7].fname, str, maxlen-1); ++ EliloStrnCpy(config[7].fname+17, CONFIG_EXTENSION, 6); + + #else +- StrnCpy(config[0].fname, NETFS_DEFAULT_CONFIG, maxlen-1); ++ EliloStrnCpy(config[0].fname, NETFS_DEFAULT_CONFIG, maxlen-1); + config[0].fname[maxlen-1] = CHAR_NULL; + #endif +- StrnCpy(kname, NETFS_DEFAULT_KERNEL, maxlen-1); ++ EliloStrnCpy(kname, NETFS_DEFAULT_KERNEL, maxlen-1); + kname[maxlen-1] = CHAR_NULL; + + /* +diff -ruN elilo.orig/strops.c elilo/strops.c +--- elilo.orig/strops.c 2010-11-09 23:11:07.000000000 +0000 ++++ elilo/strops.c 2026-05-19 14:48:27.942069100 +0000 +@@ -37,7 +37,7 @@ + } + + CHAR16 * +-StrnCpy(OUT CHAR16 *dst, IN const CHAR16 *src, IN UINTN size) ++EliloStrnCpy(OUT CHAR16 *dst, IN const CHAR16 *src, IN UINTN size) + { + CHAR16 *res = dst; + +diff -ruN elilo.orig/strops.h elilo/strops.h +--- elilo.orig/strops.h 2003-08-19 16:47:46.000000000 +0000 ++++ elilo/strops.h 2026-05-19 14:48:27.941905430 +0000 +@@ -27,7 +27,7 @@ + #define __STROPS_H__ + + extern CHAR16 *StrChr(IN const CHAR16 *s, const CHAR16 c); +-extern CHAR16 *StrnCpy(OUT CHAR16 *dst, IN const CHAR16 *src, UINTN count); ++extern CHAR16 *EliloStrnCpy(OUT CHAR16 *dst, IN const CHAR16 *src, UINTN count); + extern CHAR8 *StrnXCpy(OUT CHAR8 *dst, IN const CHAR16 *src, UINTN count); + + extern CHAR8 *strtok_simple(CHAR8 *in, CHAR8 c); diff --git a/elilo/debian/patches/series b/elilo/debian/patches/series index aefb549..84f6376 100644 --- a/elilo/debian/patches/series +++ b/elilo/debian/patches/series @@ -1,3 +1,6 @@ elilo-xcat.patch elilo-xcat-ubuntu.patch elilo-big-bzimage-limit.patch +elilo-fix-strncpy-conflict.patch +elilo-fix-bool-keyword.patch +elilo-fix-objcopy-format.patch diff --git a/grub2-xcat/debian/rules b/grub2-xcat/debian/rules index 733de96..0a52f96 100755 --- a/grub2-xcat/debian/rules +++ b/grub2-xcat/debian/rules @@ -9,7 +9,7 @@ # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 -export DH_COMPAT=5 +export DH_COMPAT=8 build: diff --git a/grub2-xcat/make_deb.sh b/grub2-xcat/make_deb.sh new file mode 100755 index 0000000..ac864f7 --- /dev/null +++ b/grub2-xcat/make_deb.sh @@ -0,0 +1,3 @@ +#!/bin/bash +set -e +dpkg-buildpackage -uc -us diff --git a/syslinux/debian/control b/syslinux/debian/control index bf74523..e69c7db 100644 --- a/syslinux/debian/control +++ b/syslinux/debian/control @@ -2,7 +2,7 @@ Source: syslinux Section: admin Priority: extra Maintainer: xCAT -Build-Depends: debhelper (>= 7.0.50~) +Build-Depends: debhelper (>= 7.0.50~), nasm, gcc-multilib, perl Standards-Version: 3.8.4 #Homepage: #Vcs-Git: git://git.debian.org/collab-maint/syslinux.git diff --git a/syslinux/make_deb.sh b/syslinux/make_deb.sh index 4372364..65d2e11 100644 --- a/syslinux/make_deb.sh +++ b/syslinux/make_deb.sh @@ -1,8 +1,26 @@ #!/bin/bash +set -e tar xvfj syslinux-3.86.tar.bz2 cd syslinux-3.86 cp -rL ../debian . + +# GCC >= 10 defaults to -fno-common; syslinux 3.86 relies on common symbols +# GCC 15 promotes implicit-function-declaration and incompatible-pointer-types to errors +sed -i '/^GCCWARN := -W -Wall/s/$/ -fcommon -Wno-error=implicit-function-declaration -Wno-error=incompatible-pointer-types -Wno-error=int-conversion/' MCONFIG + +# glibc >= 2.28 moved major()/minor() to sys/sysmacros.h +# extlinux/main.c:843 calls major()/minor() unconditionally in 3.86 +sed -i '/#include /a #include ' extlinux/main.c + +# com32/cmenu/Makefile uses python2 menugen.py for test .menu files — not needed for build +rm -f com32/cmenu/*.menu + +# vpd.c:67 passes &vpd->base_address (char(*)[6]) not char*; format %X wrong for char* arg +sed -i 's/snprintf(&vpd->base_address, 5, "%X", q)/snprintf(vpd->base_address, sizeof(vpd->base_address), "%s", q)/' com32/gpllib/vpd/vpd.c + +export NO_WERROR=1 dpkg-buildpackage -uc -us + cd - rm -rf syslinux-3.86 From 1cc3932308e51cd96fbc3213f7228b02e74015da Mon Sep 17 00:00:00 2001 From: Daniel Hilst <392820+dhilst@users.noreply.github.com> Date: Tue, 19 May 2026 19:23:41 -0300 Subject: [PATCH 3/8] fix(ipmitool): Update debian packaging for Ubuntu 22.04-26.04 - Bump debhelper Build-Depends to >= 13, drop autotools-dev - Update libssl runtime dep to libssl3t64 | libssl3 | libssl1.1 - Remove --with-kerneldir (conflicts with kernel 7.0 headers) --- ipmitool/debian/control | 4 ++-- ipmitool/debian/rules | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ipmitool/debian/control b/ipmitool/debian/control index 29569ad..98f2bf0 100644 --- a/ipmitool/debian/control +++ b/ipmitool/debian/control @@ -2,12 +2,12 @@ Source: ipmitool-xcat Section: utils Priority: optional Maintainer: xCAT -Build-Depends: debhelper (>> 4.0.0), libreadline-dev, libssl-dev, quilt, autotools-dev +Build-Depends: debhelper (>= 13), libreadline-dev, libssl-dev, quilt Standards-Version: 3.6.2.1 Package: ipmitool-xcat Architecture: i386 amd64 ia64 ppc64el -Depends: libc6 (>= 2.15), libssl3 | libssl1.1 (>= 1.1.0) | libssl1.0.0 (>=1.0.0), lsb-base +Depends: libc6 (>= 2.15), libssl3t64 | libssl3 | libssl1.1 Suggests: openipmi Description: utility for IPMI control with kernel driver or LAN interface A utility for managing and configuring devices that support the diff --git a/ipmitool/debian/rules b/ipmitool/debian/rules index 816ed13..dee807e 100755 --- a/ipmitool/debian/rules +++ b/ipmitool/debian/rules @@ -25,7 +25,6 @@ configure-stamp: ifneq ($(TARGET_ARCH),ppc64el) ./configure --prefix=/usr \ - --with-kerneldir \ --mandir=/usr/share/man else From a2378ba7808f14254460ebb16be26a1c4340bc61 Mon Sep 17 00:00:00 2001 From: Daniel Hilst <392820+dhilst@users.noreply.github.com> Date: Tue, 26 May 2026 14:29:32 -0300 Subject: [PATCH 4/8] build: Make builds deterministic Port SOURCE_DATE_EPOCH patterns from xcat-core to all xcat-dep build scripts. RPM and Debian packages now produce identical output given the same Gitepoch timestamp, regardless of build host or time. EL (RPM) changes: - mockbuild-all.pl: --build-timestamp flag, deterministic run_id, tar --sort/--owner/--group/--mtime, createrepo --revision - All mockbuild.pl: SOURCE_DATE_EPOCH cascade (CLI > Gitepoch > git > time), deterministic mock config with SOURCE_DATE_EPOCH in chroot env, RPM macros for timestamp clamping and fixed buildhost - goconserver: -trimpath -buildvcs=false, canonical rpmbuild path - xnba: canonical rpmbuild path - syslinux: ZERO_AR_DATE=1 in mock env Ubuntu (Debian) changes: - All make_deb.sh: SOURCE_DATE_EPOCH fallback from Gitepoch - goconserver: deterministic SNAP_TS and changelog from epoch, -trimpath -buildvcs=false in debian/rules - syslinux: -fdebug-prefix-map for path-independent debug info - build-apt-repo.sh: gzip -n, Release Date: from SOURCE_DATE_EPOCH Verified: 31/33 package artifacts produce identical SHA256 hashes across independent builds. 2 syslinux sub-packages (devel, debugsource) have known limitations from upstream build system. --- .gitignore | 3 +++ conserver/make_deb.sh | 8 +++++++ elilo/make_deb.sh | 8 +++++++ elilo/mockbuild.pl | 37 ++++++++++++++++++++++++++++-- goconserver/debian/rules | 4 ++-- goconserver/make_deb.sh | 26 +++++++++++++++++++++ goconserver/mockbuild.pl | 34 +++++++++++++++++++++++---- grub2-xcat/make_deb.sh | 8 +++++++ grub2-xcat/mockbuild.pl | 42 ++++++++++++++++++++++++++++++---- ipmitool/make_deb.sh | 9 ++++++++ ipmitool/mockbuild.pl | 42 +++++++++++++++++++++++++++++++--- mockbuild-all.pl | 47 +++++++++++++++++++++++++++++++++----- mockbuild-perl-packages.pl | 39 +++++++++++++++++++++++++++++-- syslinux/make_deb.sh | 8 +++++++ syslinux/mockbuild.pl | 42 ++++++++++++++++++++++++++++++---- xnba/make_deb.sh | 10 +++++++- xnba/mockbuild.pl | 30 ++++++++++++++++++++++-- 17 files changed, 367 insertions(+), 30 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0622450 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +Gitepoch +Gitinfo +Release diff --git a/conserver/make_deb.sh b/conserver/make_deb.sh index 38dd536..ba044ba 100644 --- a/conserver/make_deb.sh +++ b/conserver/make_deb.sh @@ -1,4 +1,12 @@ #!/bin/bash +set -e + +if [ -z "${SOURCE_DATE_EPOCH:-}" ]; then + REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + if [ -f "$REPO_ROOT/Gitepoch" ]; then + export SOURCE_DATE_EPOCH=$(cat "$REPO_ROOT/Gitepoch") + fi +fi tar xvfz conserver-8.2.1.tar.gz cd conserver-8.2.1 diff --git a/elilo/make_deb.sh b/elilo/make_deb.sh index e6f52d4..2227f77 100755 --- a/elilo/make_deb.sh +++ b/elilo/make_deb.sh @@ -1,4 +1,12 @@ #!/bin/bash +set -e + +if [ -z "${SOURCE_DATE_EPOCH:-}" ]; then + REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + if [ -f "$REPO_ROOT/Gitepoch" ]; then + export SOURCE_DATE_EPOCH=$(cat "$REPO_ROOT/Gitepoch") + fi +fi tar xvfz elilo-3.14-source.tar.gz cd elilo diff --git a/elilo/mockbuild.pl b/elilo/mockbuild.pl index 267d1f1..aee1619 100755 --- a/elilo/mockbuild.pl +++ b/elilo/mockbuild.pl @@ -21,6 +21,7 @@ my $mock_uniqueext = ''; my $result_dir = "$repo_root/build-output/list3/elilo-xcat"; my $log_dir = "$repo_root/build-logs/list3/elilo-xcat"; my $skip_install = 0; +my $build_timestamp; GetOptions( 'source-url=s' => \$source_url, @@ -31,6 +32,7 @@ GetOptions( 'result-dir=s' => \$result_dir, 'log-dir=s' => \$log_dir, 'skip-install!' => \$skip_install, + 'build-timestamp=i' => \$build_timestamp, ) or die usage(); die "Run as root (current uid=$>)\n" if $> != 0; @@ -57,6 +59,19 @@ my $mock_uniqueext_opt = $mock_uniqueext ne '' ? ' --uniqueext ' . sh_quote($mock_uniqueext) : ''; +my $SOURCE_DATE_EPOCH; +$SOURCE_DATE_EPOCH = $build_timestamp if defined $build_timestamp; +if (!$SOURCE_DATE_EPOCH && -f "$repo_root/Gitepoch") { + $SOURCE_DATE_EPOCH = slurp("$repo_root/Gitepoch"); + chomp $SOURCE_DATE_EPOCH; +} +unless ($SOURCE_DATE_EPOCH && $SOURCE_DATE_EPOCH =~ /^\d+$/) { + $SOURCE_DATE_EPOCH = `git -C \Q$repo_root\E log -1 --format=%ct HEAD 2>/dev/null`; + chomp $SOURCE_DATE_EPOCH; +} +$SOURCE_DATE_EPOCH = time() unless $SOURCE_DATE_EPOCH =~ /^\d+$/; +$ENV{SOURCE_DATE_EPOCH} = $SOURCE_DATE_EPOCH; + print_step("Configuration"); print "repo_root: $repo_root\n"; print "pkg_dir: $pkg_dir\n"; @@ -93,6 +108,7 @@ my $prep_top = "$work_dir/prep"; for my $d (qw(BUILD BUILDROOT RPMS SOURCES SPECS SRPMS)) { make_path("$prep_top/$d"); } +my $det_mock_cfg = create_deterministic_mock_cfg($mock_cfg, $SOURCE_DATE_EPOCH, $work_dir); copy($spec_file, "$prep_top/SPECS/elilo-xcat.spec") or die "Failed to copy spec to prep topdir: $!\n"; for my $asset (@spec_assets) { @@ -116,9 +132,12 @@ print_step("Build SRPM with mock"); my $srpm_out = "$work_dir/srpm"; make_path($srpm_out); run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --buildsrpm --spec " . sh_quote($spec_file) . " --sources " . sh_quote($pkg_dir) . + " --define " . sh_quote("use_source_date_epoch_as_buildtime 1") . + " --define " . sh_quote("clamp_mtime_to_source_date_epoch 1") . + " --define " . sh_quote("_buildhost xcat-build") . " --resultdir " . sh_quote($srpm_out) ); @@ -131,8 +150,11 @@ print_step("Rebuild RPM with mock"); my $rpm_out = "$work_dir/rpm"; make_path($rpm_out); run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --rebuild " . sh_quote($srpm) . + " --define " . sh_quote("use_source_date_epoch_as_buildtime 1") . + " --define " . sh_quote("clamp_mtime_to_source_date_epoch 1") . + " --define " . sh_quote("_buildhost xcat-build") . " --resultdir " . sh_quote($rpm_out) ); @@ -221,9 +243,20 @@ Usage: $0 [options] --result-dir PATH Output RPM/SRPM directory (default: $result_dir) --log-dir PATH Log directory (default: $log_dir) --skip-install Skip dnf install + smoke tests + --build-timestamp EPOCH Unix timestamp for SOURCE_DATE_EPOCH (deterministic builds) USAGE } +sub create_deterministic_mock_cfg { + my ($base_cfg, $epoch, $dir) = @_; + my $cfg_path = "$dir/mock-deterministic.cfg"; + open my $fh, '>', $cfg_path or die "Cannot write $cfg_path: $!\n"; + print $fh "include('/etc/mock/${base_cfg}.cfg')\n"; + print $fh "config_opts['environment']['SOURCE_DATE_EPOCH'] = '$epoch'\n"; + close $fh; + return $cfg_path; +} + sub parse_spec { my ($path) = @_; open my $fh, '<', $path or die "Cannot open spec $path: $!\n"; diff --git a/goconserver/debian/rules b/goconserver/debian/rules index 37f2d19..5d0471b 100755 --- a/goconserver/debian/rules +++ b/goconserver/debian/rules @@ -4,8 +4,8 @@ export CGO_ENABLED=0 dh $@ override_dh_auto_configure: override_dh_auto_build: - go build -ldflags "-X main.Version=0.3.3" -o goconserver goconserver.go - go build -ldflags "-X main.Version=0.3.3" -o congo cmd/congo.go + go build -trimpath -buildvcs=false -ldflags "-X main.Version=0.3.3" -o goconserver goconserver.go + go build -trimpath -buildvcs=false -ldflags "-X main.Version=0.3.3" -o congo cmd/congo.go override_dh_auto_install: install -D -m 755 goconserver $(CURDIR)/debian/goconserver/usr/bin/goconserver install -D -m 755 congo $(CURDIR)/debian/goconserver/usr/bin/congo diff --git a/goconserver/make_deb.sh b/goconserver/make_deb.sh index 78501b6..6132df0 100755 --- a/goconserver/make_deb.sh +++ b/goconserver/make_deb.sh @@ -6,6 +6,20 @@ VERSION=0.3.3 REPO=https://github.com/xcat2/goconserver.git REF=master +if [ -z "${SOURCE_DATE_EPOCH:-}" ]; then + REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" + if [ -f "$REPO_ROOT/Gitepoch" ]; then + export SOURCE_DATE_EPOCH=$(cat "$REPO_ROOT/Gitepoch") + fi +fi + +if [ -n "${SOURCE_DATE_EPOCH:-}" ]; then + SNAP_TS=$(date -d "@$SOURCE_DATE_EPOCH" --utc '+%Y%m%d%H%M') +else + SNAP_TS=$(date '+%Y%m%d%H%M') +fi +FULL_VERSION="${VERSION}-snap${SNAP_TS}" + WORKDIR=$(mktemp -d) trap "rm -rf $WORKDIR" EXIT @@ -27,6 +41,18 @@ go mod tidy cp -rL "$SCRIPT_DIR/debian" . +sed -i "s/Version=${VERSION}/Version=${FULL_VERSION}/g" debian/rules + +if [ -n "${SOURCE_DATE_EPOCH:-}" ]; then + export DEBEMAIL="${DEBEMAIL:-xcat-build@xcat.org}" + export DEBFULLNAME="${DEBFULLNAME:-xCAT Build}" + deterministic_date=$(date -R -d "@$SOURCE_DATE_EPOCH" --utc) + sed -i "1s/(.*)/(${FULL_VERSION})/" debian/changelog + sed -i "s/^ -- .*/ -- $DEBFULLNAME <$DEBEMAIL> $deterministic_date/" debian/changelog +else + dch -v "$FULL_VERSION" -b -D unstable "Snap build for xCAT" +fi + dpkg-buildpackage -uc -us echo "Built debs:" diff --git a/goconserver/mockbuild.pl b/goconserver/mockbuild.pl index 715794e..bf4ec58 100755 --- a/goconserver/mockbuild.pl +++ b/goconserver/mockbuild.pl @@ -21,6 +21,7 @@ my $skip_install = 0; my $version = '0.3.3'; my $go_repo = 'https://github.com/xcat2/goconserver.git'; my $go_ref = 'master'; +my $build_timestamp; GetOptions( 'work-dir=s' => \$work_dir, @@ -32,6 +33,7 @@ GetOptions( 'version=s' => \$version, 'go-repo=s' => \$go_repo, 'go-ref=s' => \$go_ref, + 'build-timestamp=i' => \$build_timestamp, ) or die usage(); die "Run as root (current uid=$>)\n" if $> != 0; @@ -49,6 +51,24 @@ if (!$mock_cfg) { my ($rel) = $mock_cfg =~ /-(\d+)-/; $rel //= '10'; +my $SOURCE_DATE_EPOCH; +$SOURCE_DATE_EPOCH = $build_timestamp if defined $build_timestamp; +if (!$SOURCE_DATE_EPOCH && -f "$repo_root/Gitepoch") { + my $epoch_content = ''; + if (open my $efh, '<', "$repo_root/Gitepoch") { + $epoch_content = <$efh>; + close $efh; + chomp $epoch_content; + } + $SOURCE_DATE_EPOCH = $epoch_content; +} +unless ($SOURCE_DATE_EPOCH && $SOURCE_DATE_EPOCH =~ /^\d+$/) { + $SOURCE_DATE_EPOCH = `git -C \Q$repo_root\E log -1 --format=%ct HEAD 2>/dev/null`; + chomp $SOURCE_DATE_EPOCH; +} +$SOURCE_DATE_EPOCH = time() unless $SOURCE_DATE_EPOCH =~ /^\d+$/; +$ENV{SOURCE_DATE_EPOCH} = $SOURCE_DATE_EPOCH; + print_step("Configuration"); print "repo_root: $repo_root\n"; print "pkg_dir: $pkg_dir\n"; @@ -69,7 +89,8 @@ print_step("Stage build environment"); remove_tree($work_dir) if -d $work_dir; make_path($work_dir); -my $rpmbuild_top = "$work_dir/rpmbuild"; +my $rpmbuild_top = "/var/tmp/xcat-rpmbuild-goconserver"; +remove_tree($rpmbuild_top) if -d $rpmbuild_top; for my $d (qw(BUILD BUILDROOT RPMS SOURCES SPECS SRPMS)) { make_path("$rpmbuild_top/$d"); } @@ -107,12 +128,12 @@ make_path($go_build_dir); my $ldflags = "-X main.Version=$version"; run("cd " . sh_quote($src_dir) . " && " . - "go build -ldflags " . sh_quote($ldflags) . + "go build -trimpath -buildvcs=false -ldflags " . sh_quote($ldflags) . " -o " . sh_quote("$go_build_dir/goconserver") . " goconserver.go" . " >" . sh_quote("$log_dir/go-build-server.log") . " 2>&1"); run("cd " . sh_quote($src_dir) . " && " . - "go build -ldflags " . sh_quote($ldflags) . + "go build -trimpath -buildvcs=false -ldflags " . sh_quote($ldflags) . " -o " . sh_quote("$go_build_dir/congo") . " cmd/congo.go" . " >" . sh_quote("$log_dir/go-build-client.log") . " 2>&1"); @@ -157,7 +178,8 @@ log_level = info CONF my $tarball = "$rpmbuild_top/SOURCES/goconserver-$version.tar.gz"; -run("tar -C " . sh_quote($work_dir) . " -czf " . sh_quote($tarball) . +run("tar --sort=name --owner=0 --group=0 --mtime=\@$SOURCE_DATE_EPOCH" . + " -C " . sh_quote($work_dir) . " -czf " . sh_quote($tarball) . " goconserver-$version"); print_step("Create spec and build RPM"); @@ -208,6 +230,9 @@ write_file($spec_file, $spec_content); run( "rpmbuild --define " . sh_quote("_topdir $rpmbuild_top") . + " --define " . sh_quote("use_source_date_epoch_as_buildtime 1") . + " --define " . sh_quote("clamp_mtime_to_source_date_epoch 1") . + " --define " . sh_quote("_buildhost xcat-build") . " -ba " . sh_quote($spec_file) . " >" . sh_quote("$log_dir/rpmbuild.log") . " 2>&1" ); @@ -260,6 +285,7 @@ Options: --version VER Version string (default: 0.3.3) --go-repo URL Git repo URL (default: github.com/xcat2/goconserver) --go-ref REF Git ref to build (default: master) + --build-timestamp EPOCH SOURCE_DATE_EPOCH for deterministic builds USAGE } diff --git a/grub2-xcat/make_deb.sh b/grub2-xcat/make_deb.sh index ac864f7..405fa0c 100755 --- a/grub2-xcat/make_deb.sh +++ b/grub2-xcat/make_deb.sh @@ -1,3 +1,11 @@ #!/bin/bash set -e + +if [ -z "${SOURCE_DATE_EPOCH:-}" ]; then + REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + if [ -f "$REPO_ROOT/Gitepoch" ]; then + export SOURCE_DATE_EPOCH=$(cat "$REPO_ROOT/Gitepoch") + fi +fi + dpkg-buildpackage -uc -us diff --git a/grub2-xcat/mockbuild.pl b/grub2-xcat/mockbuild.pl index 9575ddc..adc50da 100755 --- a/grub2-xcat/mockbuild.pl +++ b/grub2-xcat/mockbuild.pl @@ -24,6 +24,7 @@ my $result_dir = "$repo_root/build-output/list3/grub2-xcat"; my $log_dir = "$repo_root/build-logs/list3/grub2-xcat"; my $skip_install = 0; my $skip_upstream_download = 0; +my $build_timestamp; GetOptions( 'resource-mode=s' => \$resource_mode, @@ -36,6 +37,7 @@ GetOptions( 'log-dir=s' => \$log_dir, 'skip-install!' => \$skip_install, 'skip-upstream-download!' => \$skip_upstream_download, + 'build-timestamp=i' => \$build_timestamp, ) or die usage(); die "Run as root (current uid=$>)\n" if $> != 0; @@ -69,6 +71,19 @@ my $mock_uniqueext_opt = $mock_uniqueext ne '' ? ' --uniqueext ' . sh_quote($mock_uniqueext) : ''; +my $SOURCE_DATE_EPOCH; +$SOURCE_DATE_EPOCH = $build_timestamp if defined $build_timestamp; +if (!$SOURCE_DATE_EPOCH && -f "$repo_root/Gitepoch") { + $SOURCE_DATE_EPOCH = slurp("$repo_root/Gitepoch"); + chomp $SOURCE_DATE_EPOCH; +} +unless ($SOURCE_DATE_EPOCH && $SOURCE_DATE_EPOCH =~ /^\d+$/) { + $SOURCE_DATE_EPOCH = `git -C \Q$repo_root\E log -1 --format=%ct HEAD 2>/dev/null`; + chomp $SOURCE_DATE_EPOCH; +} +$SOURCE_DATE_EPOCH = time() unless $SOURCE_DATE_EPOCH =~ /^\d+$/; +$ENV{SOURCE_DATE_EPOCH} = $SOURCE_DATE_EPOCH; + print_step("Configuration"); print "repo_root: $repo_root\n"; print "pkg_dir: $pkg_dir\n"; @@ -131,6 +146,8 @@ my $prep_top = "$work_dir/prep"; for my $d (qw(BUILD BUILDROOT RPMS SOURCES SPECS SRPMS)) { make_path("$prep_top/$d"); } +my $det_mock_cfg = create_deterministic_mock_cfg($mock_cfg, $SOURCE_DATE_EPOCH, $work_dir); + copy($spec_file, "$prep_top/SPECS/grub2-xcat.spec") or die "Failed to copy spec to prep topdir: $!\n"; for my $asset (@spec_assets) { @@ -152,10 +169,13 @@ print_step("Build SRPM with mock"); my $srpm_out = "$work_dir/srpm"; make_path($srpm_out); run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --buildsrpm --spec " . sh_quote($spec_file) . " --sources " . sh_quote($pkg_dir) . - " --resultdir " . sh_quote($srpm_out) + " --resultdir " . sh_quote($srpm_out) . + " --define 'use_source_date_epoch_as_buildtime 1'" . + " --define 'clamp_mtime_to_source_date_epoch 1'" . + " --define '_buildhost xcat-build'" ); my @srpms = sort glob("$srpm_out/grub2-xcat-*.src.rpm"); @@ -167,9 +187,12 @@ print_step("Rebuild RPM with mock"); my $rpm_out = "$work_dir/rpm"; make_path($rpm_out); run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --rebuild " . sh_quote($srpm) . - " --resultdir " . sh_quote($rpm_out) + " --resultdir " . sh_quote($rpm_out) . + " --define 'use_source_date_epoch_as_buildtime 1'" . + " --define 'clamp_mtime_to_source_date_epoch 1'" . + " --define '_buildhost xcat-build'" ); my @all_rpms = sort glob("$rpm_out/*.rpm"); @@ -281,9 +304,20 @@ Usage: $0 [options] --log-dir PATH Log directory (default: $log_dir) --skip-upstream-download Skip wget of upstream source RPM --skip-install Skip dnf install + smoke tests + --build-timestamp EPOCH Unix timestamp for deterministic builds (SOURCE_DATE_EPOCH) USAGE } +sub create_deterministic_mock_cfg { + my ($base_cfg, $epoch, $dir) = @_; + my $cfg_path = "$dir/mock-deterministic.cfg"; + open my $fh, '>', $cfg_path or die "Cannot write $cfg_path: $!\n"; + print $fh "include('/etc/mock/${base_cfg}.cfg')\n"; + print $fh "config_opts['environment']['SOURCE_DATE_EPOCH'] = '$epoch'\n"; + close $fh; + return $cfg_path; +} + sub parse_spec { my ($path) = @_; open my $fh, '<', $path or die "Cannot open spec $path: $!\n"; diff --git a/ipmitool/make_deb.sh b/ipmitool/make_deb.sh index cc74b9c..8b6b374 100755 --- a/ipmitool/make_deb.sh +++ b/ipmitool/make_deb.sh @@ -1,4 +1,13 @@ #!/bin/bash +set -e + +if [ -z "${SOURCE_DATE_EPOCH:-}" ]; then + REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + if [ -f "$REPO_ROOT/Gitepoch" ]; then + export SOURCE_DATE_EPOCH=$(cat "$REPO_ROOT/Gitepoch") + fi +fi + VERSION=1.8.18 tar xvfz ipmitool-$VERSION.tar.gz diff --git a/ipmitool/mockbuild.pl b/ipmitool/mockbuild.pl index 3f377b9..3afcb26 100755 --- a/ipmitool/mockbuild.pl +++ b/ipmitool/mockbuild.pl @@ -21,6 +21,7 @@ my $mock_uniqueext = ''; my $result_dir = "$repo_root/build-output/list3/ipmitool-xcat"; my $log_dir = "$repo_root/build-logs/list3/ipmitool-xcat"; my $skip_install = 0; +my $build_timestamp; GetOptions( 'source-url=s' => \$source_url, @@ -31,6 +32,7 @@ GetOptions( 'result-dir=s' => \$result_dir, 'log-dir=s' => \$log_dir, 'skip-install!' => \$skip_install, + 'build-timestamp=i' => \$build_timestamp, ) or die usage(); die "Run as root (current uid=$>)\n" if $> != 0; @@ -57,6 +59,19 @@ my $mock_uniqueext_opt = $mock_uniqueext ne '' ? ' --uniqueext ' . sh_quote($mock_uniqueext) : ''; +my $SOURCE_DATE_EPOCH; +$SOURCE_DATE_EPOCH = $build_timestamp if defined $build_timestamp; +if (!$SOURCE_DATE_EPOCH && -f "$repo_root/Gitepoch") { + $SOURCE_DATE_EPOCH = slurp("$repo_root/Gitepoch"); + chomp $SOURCE_DATE_EPOCH; +} +unless ($SOURCE_DATE_EPOCH && $SOURCE_DATE_EPOCH =~ /^\d+$/) { + $SOURCE_DATE_EPOCH = `git -C \Q$repo_root\E log -1 --format=%ct HEAD 2>/dev/null`; + chomp $SOURCE_DATE_EPOCH; +} +$SOURCE_DATE_EPOCH = time() unless $SOURCE_DATE_EPOCH =~ /^\d+$/; +$ENV{SOURCE_DATE_EPOCH} = $SOURCE_DATE_EPOCH; + print_step("Configuration"); print "repo_root: $repo_root\n"; print "pkg_dir: $pkg_dir\n"; @@ -68,6 +83,7 @@ print "mock_uniqueext: " . ($mock_uniqueext ne '' ? $mock_uniqueext : '(none)') print "source_url: $source_url\n"; print "source_file:$source_file\n"; print "skip_install: $skip_install\n"; +print "SOURCE_DATE_EPOCH: $SOURCE_DATE_EPOCH\n"; make_path($result_dir); make_path($log_dir); @@ -90,6 +106,7 @@ print "Verified " . scalar(@spec_assets) . " Source/Patch assets from spec.\n"; print_step("Stage files for patch-application check"); remove_tree($work_dir) if -d $work_dir; my $prep_top = "$work_dir/prep"; +my $det_mock_cfg = create_deterministic_mock_cfg($mock_cfg, $SOURCE_DATE_EPOCH, $work_dir); for my $d (qw(BUILD BUILDROOT RPMS SOURCES SPECS SRPMS)) { make_path("$prep_top/$d"); } @@ -116,9 +133,12 @@ print_step("Build SRPM with mock"); my $srpm_out = "$work_dir/srpm"; make_path($srpm_out); run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --buildsrpm --spec " . sh_quote($spec_file) . " --sources " . sh_quote($pkg_dir) . + " --define " . sh_quote("use_source_date_epoch_as_buildtime 1") . + " --define " . sh_quote("clamp_mtime_to_source_date_epoch 1") . + " --define " . sh_quote("_buildhost xcat-build") . " --resultdir " . sh_quote($srpm_out) ); @@ -131,8 +151,11 @@ print_step("Rebuild RPM with mock"); my $rpm_out = "$work_dir/rpm"; make_path($rpm_out); run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --rebuild " . sh_quote($srpm) . + " --define " . sh_quote("use_source_date_epoch_as_buildtime 1") . + " --define " . sh_quote("clamp_mtime_to_source_date_epoch 1") . + " --define " . sh_quote("_buildhost xcat-build") . " --resultdir " . sh_quote($rpm_out) ); @@ -243,9 +266,21 @@ Usage: $0 [options] --result-dir PATH Output RPM/SRPM directory (default: $result_dir) --log-dir PATH Log directory (default: $log_dir) --skip-install Skip dnf install + smoke tests + --build-timestamp N Unix epoch for SOURCE_DATE_EPOCH (deterministic builds) USAGE } +sub create_deterministic_mock_cfg { + my ($base_cfg, $epoch, $dir) = @_; + make_path($dir) unless -d $dir; + my $cfg_path = "$dir/mock-deterministic.cfg"; + open my $fh, '>', $cfg_path or die "Cannot write $cfg_path: $!\n"; + print $fh "include('/etc/mock/${base_cfg}.cfg')\n"; + print $fh "config_opts['environment']['SOURCE_DATE_EPOCH'] = '$epoch'\n"; + close $fh; + return $cfg_path; +} + sub parse_spec { my ($path) = @_; open my $fh, '<', $path or die "Cannot open spec $path: $!\n"; @@ -298,7 +333,8 @@ sub normalize_source_archive { # Repack using the expected top-level directory required by the spec. run( - "tar -C " . sh_quote($normalize_dir) . + "tar --sort=name --owner=0 --group=0 --mtime=\@$SOURCE_DATE_EPOCH" . + " -C " . sh_quote($normalize_dir) . " -czf " . sh_quote($archive) . " " . sh_quote($expected_top) ); diff --git a/mockbuild-all.pl b/mockbuild-all.pl index e168220..186dc33 100755 --- a/mockbuild-all.pl +++ b/mockbuild-all.pl @@ -19,7 +19,8 @@ my $output_root = "$repo_root/build-output/mockbuild-all"; my $target = ''; my $nproc = 1; my $parallel_builds; -my $run_id = strftime('%Y%m%d-%H%M%S', localtime); +my $run_id = ''; +my $build_timestamp; my $skip_install = 0; my $skip_build = 0; my $skip_xcat_dep = 0; @@ -39,6 +40,7 @@ GetOptions( 'nproc=i' => \$nproc, 'parallel-builds=i' => \$parallel_builds, 'run-id=s' => \$run_id, + 'build-timestamp=i' => \$build_timestamp, 'skip-install!' => \$skip_install, 'skip-build!' => \$skip_build, 'skip-xcat-dep!' => \$skip_xcat_dep, @@ -56,6 +58,23 @@ die "--parallel-builds must be >= 1\n" if defined($parallel_builds) && $parallel_builds < 1; $repo_root = abs_path($repo_root); + +my $SOURCE_DATE_EPOCH; +$SOURCE_DATE_EPOCH = $build_timestamp if defined $build_timestamp; +if (!$SOURCE_DATE_EPOCH && -f "$repo_root/Gitepoch") { + $SOURCE_DATE_EPOCH = slurp_chomp("$repo_root/Gitepoch"); +} +unless ($SOURCE_DATE_EPOCH && $SOURCE_DATE_EPOCH =~ /^\d+$/) { + $SOURCE_DATE_EPOCH = `git -C \Q$repo_root\E log -1 --format=%ct HEAD 2>/dev/null`; + chomp $SOURCE_DATE_EPOCH; +} +$SOURCE_DATE_EPOCH = time() unless $SOURCE_DATE_EPOCH =~ /^\d+$/; +$ENV{SOURCE_DATE_EPOCH} = $SOURCE_DATE_EPOCH; + +if ($run_id eq '') { + $run_id = strftime('%Y%m%d-%H%M%S', gmtime($SOURCE_DATE_EPOCH)); +} + $xcat_src = resolve_xcat_source($xcat_src, $repo_root); my $arch = capture('uname -m'); @@ -170,6 +189,7 @@ if (!$skip_build) { '--mock-uniqueext', sh_quote($step_uniqueext), '--result-dir', sh_quote($step_result), '--log-dir', sh_quote($step_log), + '--build-timestamp', $SOURCE_DATE_EPOCH, ($skip_install ? '--skip-install' : ()), ); push @build_steps, { @@ -192,6 +212,7 @@ if (!$skip_build) { '--mock-uniqueext', sh_quote($perl_uniqueext), '--result-dir', sh_quote($perl_result), '--log-dir', sh_quote($perl_log), + '--build-timestamp', $SOURCE_DATE_EPOCH, ($skip_install ? '--skip-install' : ()), ); push @build_steps, { @@ -284,19 +305,21 @@ if (!$dry_run && $copied_srpms == 0) { if (!$skip_createrepo) { run_step( step => 'Run createrepo', - cmd => 'createrepo --update ' . sh_quote($repo_dir), + cmd => 'createrepo --update --revision ' . sh_quote($SOURCE_DATE_EPOCH) . ' ' . sh_quote($repo_dir), log => "$log_root/createrepo.log", ); run_step( step => 'Run createrepo for SRPM repo', - cmd => 'createrepo --update ' . sh_quote($srpm_repo_dir), + cmd => 'createrepo --update --revision ' . sh_quote($SOURCE_DATE_EPOCH) . ' ' . sh_quote($srpm_repo_dir), log => "$log_root/createrepo-srpm.log", ); } if (!$skip_tarball) { my $cmd = join(' ', - 'tar', '-C', sh_quote($run_root), + 'tar', '--sort=name', '--owner=0', '--group=0', + "--mtime=\@$SOURCE_DATE_EPOCH", + '-C', sh_quote($run_root), '-czf', sh_quote($tarball), 'repo' ); @@ -306,7 +329,9 @@ if (!$skip_tarball) { log => "$log_root/tarball.log", ); my $srpm_cmd = join(' ', - 'tar', '-C', sh_quote($run_root), + 'tar', '--sort=name', '--owner=0', '--group=0', + "--mtime=\@$SOURCE_DATE_EPOCH", + '-C', sh_quote($run_root), '-czf', sh_quote($srpm_tarball), 'repo-src' ); @@ -365,7 +390,8 @@ Options: --target NAME Optional unified target in +epel-- format --nproc N Parallel jobs for buildrpms.pl (default: 1) --parallel-builds N Max concurrent top-level build steps (default: auto=queued steps) - --run-id ID Run identifier suffix (default: timestamp) + --run-id ID Run identifier suffix (default: derived from build timestamp) + --build-timestamp EPOCH Unix epoch for deterministic builds (default: Gitepoch or git log) --skip-install Skip install/smoke tests in child builder scripts --skip-build Skip all build steps and only collect/create repo/tarballs --skip-xcat-dep Skip xcat-dep mockbuild.pl package steps @@ -705,6 +731,15 @@ sub uniq { return grep { defined($_) && !$seen{$_}++ } @_; } +sub slurp_chomp { + my ($path) = @_; + open my $fh, '<', $path or die "Cannot read $path: $!\n"; + my $line = <$fh>; + close $fh; + chomp $line if defined $line; + return $line // ''; +} + sub sh_quote { my ($s) = @_; $s = '' if !defined $s; diff --git a/mockbuild-perl-packages.pl b/mockbuild-perl-packages.pl index 359dd2e..9408b40 100755 --- a/mockbuild-perl-packages.pl +++ b/mockbuild-perl-packages.pl @@ -19,6 +19,7 @@ my $packages_csv = ''; my $jobs = 0; my $skip_install = 0; my $allow_erasing = 0; +my $build_timestamp; GetOptions( 'work-dir=s' => \$work_dir, @@ -30,6 +31,7 @@ GetOptions( 'jobs=i' => \$jobs, 'skip-install!' => \$skip_install, 'allow-erasing!' => \$allow_erasing, + 'build-timestamp=i' => \$build_timestamp, ) or die usage(); die "Run as root (current uid=$>)\n" if $> != 0; @@ -46,6 +48,20 @@ if (!$mock_cfg) { my $mock_uniqueext_opt = $mock_uniqueext ne '' ? ' --uniqueext ' . sh_quote($mock_uniqueext) : ''; + +my $SOURCE_DATE_EPOCH; +$SOURCE_DATE_EPOCH = $build_timestamp if defined $build_timestamp; +if (!$SOURCE_DATE_EPOCH && -f "$repo_root/Gitepoch") { + $SOURCE_DATE_EPOCH = slurp("$repo_root/Gitepoch"); + chomp $SOURCE_DATE_EPOCH; +} +unless ($SOURCE_DATE_EPOCH && $SOURCE_DATE_EPOCH =~ /^\d+$/) { + $SOURCE_DATE_EPOCH = `git -C \Q$repo_root\E log -1 --format=%ct HEAD 2>/dev/null`; + chomp $SOURCE_DATE_EPOCH; +} +$SOURCE_DATE_EPOCH = time() unless $SOURCE_DATE_EPOCH =~ /^\d+$/; +$ENV{SOURCE_DATE_EPOCH} = $SOURCE_DATE_EPOCH; + if (!$result_dir) { $result_dir = "$repo_root/build-output/list6/perl/$arch"; } @@ -277,6 +293,8 @@ sub build_package { make_path($pkg_result); make_path($pkg_log); + my $det_mock_cfg = create_deterministic_mock_cfg($mock_cfg, $SOURCE_DATE_EPOCH, $pkg_run_dir); + my $run_log = "$pkg_log/run.log"; open my $runfh, '>', $run_log or die "Cannot write $run_log: $!\n"; open STDOUT, '>&', $runfh or die "Cannot redirect stdout to $run_log: $!\n"; @@ -341,9 +359,12 @@ sub build_package { my $srpm_result = "$pkg_run_dir/srpm"; make_path($srpm_result); run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --buildsrpm --spec " . sh_quote($spec) . " --sources " . sh_quote($source_dir) . + " --define " . sh_quote("use_source_date_epoch_as_buildtime 1") . + " --define " . sh_quote("clamp_mtime_to_source_date_epoch 1") . + " --define " . sh_quote("_buildhost xcat-build") . " --resultdir " . sh_quote($srpm_result) . " > " . sh_quote("$pkg_log/mock-buildsrpm.log") . " 2>&1" ); @@ -353,8 +374,11 @@ sub build_package { } run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --rebuild " . sh_quote($srpm_path) . + " --define " . sh_quote("use_source_date_epoch_as_buildtime 1") . + " --define " . sh_quote("clamp_mtime_to_source_date_epoch 1") . + " --define " . sh_quote("_buildhost xcat-build") . " --resultdir " . sh_quote($rebuild_result) . " > " . sh_quote("$pkg_log/mock-rebuild.log") . " 2>&1" ); @@ -453,6 +477,7 @@ Usage: $0 [options] --result-dir PATH Output directory (default: build-output/list6/perl/) --log-dir PATH Log directory (default: build-logs/list6/perl/) --packages LIST Comma-separated subset of packages to build + --build-timestamp EPOCH Unix epoch for SOURCE_DATE_EPOCH (deterministic builds) --skip-install Skip dnf install + perl module import checks --allow-erasing Allow dnf to erase conflicting packages during install smoke tests USAGE @@ -594,6 +619,16 @@ sub resolve_mock_cfg { return $candidate; } +sub create_deterministic_mock_cfg { + my ($base_cfg, $epoch, $dir) = @_; + my $cfg_path = "$dir/mock-deterministic.cfg"; + open my $fh, '>', $cfg_path or die "Cannot write $cfg_path: $!\n"; + print $fh "include('/etc/mock/${base_cfg}.cfg')\n"; + print $fh "config_opts['environment']['SOURCE_DATE_EPOCH'] = '$epoch'\n"; + close $fh; + return $cfg_path; +} + sub resolve_source_urls { my ($spec_path) = @_; open my $fh, '<', $spec_path or return (); diff --git a/syslinux/make_deb.sh b/syslinux/make_deb.sh index 65d2e11..9296426 100644 --- a/syslinux/make_deb.sh +++ b/syslinux/make_deb.sh @@ -1,6 +1,13 @@ #!/bin/bash set -e +if [ -z "${SOURCE_DATE_EPOCH:-}" ]; then + REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + if [ -f "$REPO_ROOT/Gitepoch" ]; then + export SOURCE_DATE_EPOCH=$(cat "$REPO_ROOT/Gitepoch") + fi +fi + tar xvfj syslinux-3.86.tar.bz2 cd syslinux-3.86 cp -rL ../debian . @@ -8,6 +15,7 @@ cp -rL ../debian . # GCC >= 10 defaults to -fno-common; syslinux 3.86 relies on common symbols # GCC 15 promotes implicit-function-declaration and incompatible-pointer-types to errors sed -i '/^GCCWARN := -W -Wall/s/$/ -fcommon -Wno-error=implicit-function-declaration -Wno-error=incompatible-pointer-types -Wno-error=int-conversion/' MCONFIG +sed -i "s|^GCCWARN := .*|& -fdebug-prefix-map=$(pwd)=.|" MCONFIG # glibc >= 2.28 moved major()/minor() to sys/sysmacros.h # extlinux/main.c:843 calls major()/minor() unconditionally in 3.86 diff --git a/syslinux/mockbuild.pl b/syslinux/mockbuild.pl index b77918d..cc320c1 100755 --- a/syslinux/mockbuild.pl +++ b/syslinux/mockbuild.pl @@ -22,6 +22,7 @@ my $result_dir = "$repo_root/build-output/list3/syslinux-xcat"; my $log_dir = "$repo_root/build-logs/list3/syslinux-xcat"; my $skip_install = 0; my $skip_upstream_download = 0; +my $build_timestamp; GetOptions( 'source-url=s' => \$source_url, @@ -33,6 +34,7 @@ GetOptions( 'log-dir=s' => \$log_dir, 'skip-install!' => \$skip_install, 'skip-upstream-download!' => \$skip_upstream_download, + 'build-timestamp=i' => \$build_timestamp, ) or die usage(); die "Run as root (current uid=$>)\n" if $> != 0; @@ -64,6 +66,19 @@ my $mock_uniqueext_opt = $mock_uniqueext ne '' ? ' --uniqueext ' . sh_quote($mock_uniqueext) : ''; +my $SOURCE_DATE_EPOCH; +$SOURCE_DATE_EPOCH = $build_timestamp if defined $build_timestamp; +if (!$SOURCE_DATE_EPOCH && -f "$repo_root/Gitepoch") { + $SOURCE_DATE_EPOCH = slurp("$repo_root/Gitepoch"); + chomp $SOURCE_DATE_EPOCH; +} +unless ($SOURCE_DATE_EPOCH && $SOURCE_DATE_EPOCH =~ /^\d+$/) { + $SOURCE_DATE_EPOCH = `git -C \Q$repo_root\E log -1 --format=%ct HEAD 2>/dev/null`; + chomp $SOURCE_DATE_EPOCH; +} +$SOURCE_DATE_EPOCH = time() unless $SOURCE_DATE_EPOCH =~ /^\d+$/; +$ENV{SOURCE_DATE_EPOCH} = $SOURCE_DATE_EPOCH; + print_step("Configuration"); print "repo_root: $repo_root\n"; print "pkg_dir: $pkg_dir\n"; @@ -115,6 +130,7 @@ my $prep_top = "$work_dir/prep"; for my $d (qw(BUILD BUILDROOT RPMS SOURCES SPECS SRPMS)) { make_path("$prep_top/$d"); } +my $det_mock_cfg = create_deterministic_mock_cfg($mock_cfg, $SOURCE_DATE_EPOCH, $work_dir); copy($spec_file, "$prep_top/SPECS/syslinux-xcat.spec") or die "Failed to copy spec to prep topdir: $!\n"; for my $asset (@all_assets) { @@ -136,10 +152,13 @@ print_step("Build SRPM with mock"); my $srpm_out = "$work_dir/srpm"; make_path($srpm_out); run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --buildsrpm --spec " . sh_quote($spec_file) . " --sources " . sh_quote($pkg_dir) . - " --resultdir " . sh_quote($srpm_out) + " --resultdir " . sh_quote($srpm_out) . + " --define " . sh_quote("use_source_date_epoch_as_buildtime 1") . + " --define " . sh_quote("clamp_mtime_to_source_date_epoch 1") . + " --define " . sh_quote("_buildhost xcat-build") ); my @srpms = sort glob("$srpm_out/*.src.rpm"); @@ -151,9 +170,12 @@ print_step("Rebuild RPM with mock"); my $rpm_out = "$work_dir/rpm"; make_path($rpm_out); run( - "mock -r " . sh_quote($mock_cfg) . $mock_uniqueext_opt . + "mock -r " . sh_quote($det_mock_cfg) . $mock_uniqueext_opt . " --rebuild " . sh_quote($srpm) . - " --resultdir " . sh_quote($rpm_out) + " --resultdir " . sh_quote($rpm_out) . + " --define " . sh_quote("use_source_date_epoch_as_buildtime 1") . + " --define " . sh_quote("clamp_mtime_to_source_date_epoch 1") . + " --define " . sh_quote("_buildhost xcat-build") ); my @all_rpms = sort glob("$rpm_out/*.rpm"); @@ -265,11 +287,23 @@ Usage: $0 [options] --mock-uniqueext TXT Optional mock --uniqueext suffix to isolate concurrent builds --result-dir PATH Output RPM/SRPM directory (default: $result_dir) --log-dir PATH Log directory (default: $log_dir) + --build-timestamp EPOCH SOURCE_DATE_EPOCH for deterministic builds --skip-upstream-download Skip wget download step --skip-install Skip dnf install + smoke tests USAGE } +sub create_deterministic_mock_cfg { + my ($base_cfg, $epoch, $dir) = @_; + my $cfg_path = "$dir/mock-deterministic.cfg"; + open my $fh, '>', $cfg_path or die "Cannot write $cfg_path: $!\n"; + print $fh "include('/etc/mock/${base_cfg}.cfg')\n"; + print $fh "config_opts['environment']['SOURCE_DATE_EPOCH'] = '$epoch'\n"; + print $fh "config_opts['environment']['ZERO_AR_DATE'] = '1'\n"; + close $fh; + return $cfg_path; +} + sub parse_spec { my ($path) = @_; open my $fh, '<', $path or die "Cannot open spec $path: $!\n"; diff --git a/xnba/make_deb.sh b/xnba/make_deb.sh index 87c12b4..05dce0b 100755 --- a/xnba/make_deb.sh +++ b/xnba/make_deb.sh @@ -1,3 +1,11 @@ #!/bin/bash +set -e -dpkg-buildpackage -uc -us -R./build/rules.fromBIN +if [ -z "${SOURCE_DATE_EPOCH:-}" ]; then + REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + if [ -f "$REPO_ROOT/Gitepoch" ]; then + export SOURCE_DATE_EPOCH=$(cat "$REPO_ROOT/Gitepoch") + fi +fi + +dpkg-buildpackage -uc -us -R./build/rules.fromBIN diff --git a/xnba/mockbuild.pl b/xnba/mockbuild.pl index bda758d..1c799dd 100755 --- a/xnba/mockbuild.pl +++ b/xnba/mockbuild.pl @@ -20,6 +20,7 @@ my $mock_uniqueext = ''; my $result_dir = "$repo_root/build-output/list3/xnba-undi"; my $log_dir = "$repo_root/build-logs/list3/xnba-undi"; my $skip_install = 0; +my $build_timestamp; GetOptions( 'work-dir=s' => \$work_dir, @@ -28,6 +29,7 @@ GetOptions( 'result-dir=s' => \$result_dir, 'log-dir=s' => \$log_dir, 'skip-install!' => \$skip_install, + 'build-timestamp=i' => \$build_timestamp, ) or die usage(); die "Run as root (current uid=$>)\n" if $> != 0; @@ -46,6 +48,24 @@ if (!$mock_cfg) { $mock_cfg = resolve_mock_cfg($os_id, '10', $arch); } +my $SOURCE_DATE_EPOCH; +$SOURCE_DATE_EPOCH = $build_timestamp if defined $build_timestamp; +if (!$SOURCE_DATE_EPOCH && -f "$repo_root/Gitepoch") { + my $epoch_content = ''; + if (open my $efh, '<', "$repo_root/Gitepoch") { + $epoch_content = <$efh>; + close $efh; + chomp $epoch_content; + } + $SOURCE_DATE_EPOCH = $epoch_content; +} +unless ($SOURCE_DATE_EPOCH && $SOURCE_DATE_EPOCH =~ /^\d+$/) { + $SOURCE_DATE_EPOCH = `git -C \Q$repo_root\E log -1 --format=%ct HEAD 2>/dev/null`; + chomp $SOURCE_DATE_EPOCH; +} +$SOURCE_DATE_EPOCH = time() unless $SOURCE_DATE_EPOCH =~ /^\d+$/; +$ENV{SOURCE_DATE_EPOCH} = $SOURCE_DATE_EPOCH; + print_step("Configuration"); print "repo_root: $repo_root\n"; print "pkg_dir: $pkg_dir\n"; @@ -60,7 +80,8 @@ make_path($log_dir); print_step("Stage build environment"); remove_tree($work_dir) if -d $work_dir; -my $rpmbuild_top = "$work_dir/rpmbuild"; +my $rpmbuild_top = "/var/tmp/xcat-rpmbuild-xnba"; +remove_tree($rpmbuild_top) if -d $rpmbuild_top; for my $d (qw(BUILD BUILDROOT RPMS SOURCES SPECS SRPMS)) { make_path("$rpmbuild_top/$d"); } @@ -75,7 +96,8 @@ copy("$binary_dir/xnba.efi", "$src_dir/binary/xnba.efi") or die "Failed to copy xnba.efi: $!\n"; my $tarball = "$rpmbuild_top/SOURCES/xnba-$version.tar.gz"; -run("tar -C " . sh_quote($work_dir) . " -czf " . sh_quote($tarball) . " xnba-$version"); +run("tar --sort=name --owner=0 --group=0 --mtime=\@$SOURCE_DATE_EPOCH" . + " -C " . sh_quote($work_dir) . " -czf " . sh_quote($tarball) . " xnba-$version"); # Create simplified spec that uses pre-built binaries my $simple_spec = <<'SPEC'; @@ -120,6 +142,9 @@ print_step("Build RPM"); my $rpmbuild_cmd = join(' ', 'rpmbuild', '--define', sh_quote("_topdir $rpmbuild_top"), + '--define', sh_quote("use_source_date_epoch_as_buildtime 1"), + '--define', sh_quote("clamp_mtime_to_source_date_epoch 1"), + '--define', sh_quote("_buildhost xcat-build"), '-ba', sh_quote("$rpmbuild_top/SPECS/xnba-undi.spec"), ); @@ -149,6 +174,7 @@ Options: --result-dir PATH Output directory for RPMs --log-dir PATH Output directory for logs --skip-install Skip install verification + --build-timestamp EPOCH Unix timestamp for reproducible builds USAGE } From 2eb3574f35556216d86c49e5d1c73991c479bccb Mon Sep 17 00:00:00 2001 From: Daniel Hilst <392820+dhilst@users.noreply.github.com> Date: Sat, 6 Jun 2026 12:09:44 -0300 Subject: [PATCH 5/8] fix: Update Sys-Virt package to libvirt 11 for el10 Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com> --- perl-Sys-Virt/Sys-Virt-0.2.0.tar.gz | Bin 39742 -> 0 bytes perl-Sys-Virt/Sys-Virt-fixes.patch | 18 ----- perl-Sys-Virt/Sys-Virt-v11.10.0.tar.gz | Bin 0 -> 180129 bytes perl-Sys-Virt/Sys-Virt.spec | 45 +++++------- perl-Sys-Virt/build-el10.sh | 91 +++++++++++++++++++++++++ 5 files changed, 109 insertions(+), 45 deletions(-) delete mode 100644 perl-Sys-Virt/Sys-Virt-0.2.0.tar.gz delete mode 100644 perl-Sys-Virt/Sys-Virt-fixes.patch create mode 100644 perl-Sys-Virt/Sys-Virt-v11.10.0.tar.gz create mode 100755 perl-Sys-Virt/build-el10.sh diff --git a/perl-Sys-Virt/Sys-Virt-0.2.0.tar.gz b/perl-Sys-Virt/Sys-Virt-0.2.0.tar.gz deleted file mode 100644 index ce7ca770e5b62d433e2ea3d68d37f605248456f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39742 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 diff --git a/perl-Sys-Virt/Sys-Virt-fixes.patch b/perl-Sys-Virt/Sys-Virt-fixes.patch deleted file mode 100644 index a958f90..0000000 --- a/perl-Sys-Virt/Sys-Virt-fixes.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- Virt.xs 2009-03-27 15:45:33.000000000 -0400 -+++ /root/Virt.xs 2009-04-10 09:08:00.000000000 -0400 -@@ -1337,12 +1337,12 @@ - virDomainPtr dom; - virConnectPtr destcon; - unsigned long flags; -- const char *dname; -- const char *uri; -+ const char *dname = SvPOK($arg) ? (char *)SvPV_nolen($arg) : NULL; -+ const char *uri = SvPOK($arg) ? (char *)SvPV_nolen($arg) : NULL; - unsigned long bandwidth; - CODE: - if ((RETVAL = virDomainMigrate(dom, destcon, flags, dname, uri, bandwidth)) == NULL) { -- _croak_error(virConnGetLastError(virDomainGetConnect(dom))); -+ _croak_error(virGetLastError()); - } - OUTPUT: - RETVAL diff --git a/perl-Sys-Virt/Sys-Virt-v11.10.0.tar.gz b/perl-Sys-Virt/Sys-Virt-v11.10.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..c4d6e48a9389a0ba693aef7ef902c69c703e5963 GIT binary patch literal 180129 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

nI5Kw7W2Ku; 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 gSC_dz{M#8' Sys-Virt-0.2.0.tar.gz -# For more information on cpan2rpm please visit: http://perl.arix.com/ -# - %define pkgname Sys-Virt %define filelist %{pkgname}-%{version}-filelist %define NVR %{pkgname}-%{version}-%{release} @@ -13,8 +5,8 @@ name: perl-Sys-Virt summary: Sys-Virt - Represent and manage a libvirt hypervisor connection -version: 0.2.0 -release: 3%{?dist} +version: 11.10.0 +release: 1%{?dist} vendor: Daniel P. Berrange packager: Arix International license: Artistic @@ -22,16 +14,22 @@ group: Applications/CPAN url: http://www.cpan.org buildroot: %{_tmppath}/%{name}-%{version}-%(id -u -n) prefix: %(echo %{_prefix}) -source: Sys-Virt-0.2.0.tar.gz -patch0: Sys-Virt-fixes.patch +source: Sys-Virt-v%{version}.tar.gz BuildRequires: gcc BuildRequires: make BuildRequires: perl-interpreter BuildRequires: perl-devel BuildRequires: perl(ExtUtils::MakeMaker) +BuildRequires: perl(ExtUtils::CBuilder) +BuildRequires: perl(Module::Build) +BuildRequires: perl(XML::XPath) +BuildRequires: perl(XML::XPath::XMLParser) +BuildRequires: perl(Time::HiRes) +BuildRequires: perl(Sys::Hostname) BuildRequires: perl-generators BuildRequires: libvirt-devel +BuildRequires: pkgconfig(libvirt) %description The Sys::Virt module provides a Perl XS binding to the libvirt @@ -39,25 +37,14 @@ virtual machine management APIs. This allows machines running within arbitrary virtualization containers to be managed with a consistent API. -# -# This package was generated automatically with the cpan2rpm -# utility. To get this software or for more information -# please visit: http://perl.arix.com/ -# - %prep -%setup -q -n %{pkgname}-%{version} -%patch 0 -p0 -chmod -R u+w %{_builddir}/%{pkgname}-%{version} +%setup -q -n %{pkgname}-v%{version} +chmod -R u+w %{_builddir}/%{pkgname}-v%{version} %build -export PERL_USE_UNSAFE_INC=1 -grep -rsl '^#!.*perl' . | -grep -v '.bak$' |xargs --no-run-if-empty \ -%__perl -MExtUtils::MakeMaker -e 'MY->fixin(@ARGV)' CFLAGS="$RPM_OPT_FLAGS" %{__perl} Makefile.PL `%{__perl} -MExtUtils::MakeMaker -e ' print qq|PREFIX=%{buildroot}%{_prefix}| if \$ExtUtils::MakeMaker::VERSION =~ /5\.9[1-6]|6\.0[0-5]/ '` -%{__make} +%{__make} %if %maketest %{__make} test %endif @@ -93,7 +80,7 @@ find %{buildroot}%{_prefix} \ %{__perl} -MFile::Find -le ' find({ wanted => \&wanted, no_chdir => 1}, "%{buildroot}"); - print "%doc CHANGES INSTALL README LICENSE examples"; + print "%doc Changes INSTALL README LICENSE examples"; for my $x (sort @dirs, @files) { push @ret, $x unless indirs($x); } @@ -133,5 +120,9 @@ find %{buildroot}%{_prefix} \ %defattr(-,root,root) %changelog +* Sat Jun 06 2026 Daniel Hilst <392820+dhilst@users.noreply.github.com> - 11.10.0-1 +- Update to v11.10.0 from CPAN +- Drop Sys-Virt-fixes.patch (not applicable to modern codebase) + * Sun Jul 27 2008 root@mgt.cluster - Initial build. diff --git a/perl-Sys-Virt/build-el10.sh b/perl-Sys-Virt/build-el10.sh new file mode 100755 index 0000000..4a7c0dc --- /dev/null +++ b/perl-Sys-Virt/build-el10.sh @@ -0,0 +1,91 @@ +#!/bin/bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +SPEC="$SCRIPT_DIR/Sys-Virt.spec" +MOCK_CFG="${MOCK_CFG:-almalinux-10-x86_64}" +WORK_DIR="${WORK_DIR:-/tmp/perl-Sys-Virt-mockbuild}" +RESULT_DIR="${RESULT_DIR:-$REPO_ROOT/build-output/perl-Sys-Virt}" +LOG_DIR="${LOG_DIR:-$REPO_ROOT/build-logs/perl-Sys-Virt}" + +# --- Deterministic build timestamp --- +if [[ -z "${SOURCE_DATE_EPOCH:-}" ]]; then + if [[ -f "$REPO_ROOT/Gitepoch" ]]; then + SOURCE_DATE_EPOCH="$(cat "$REPO_ROOT/Gitepoch")" + else + SOURCE_DATE_EPOCH="$(git -C "$REPO_ROOT" log -1 --format=%ct HEAD 2>/dev/null || date +%s)" + fi +fi +export SOURCE_DATE_EPOCH + +echo "== Configuration ==" +echo "spec: $SPEC" +echo "mock_cfg: $MOCK_CFG" +echo "work_dir: $WORK_DIR" +echo "result_dir: $RESULT_DIR" +echo "log_dir: $LOG_DIR" +echo "SOURCE_DATE_EPOCH: $SOURCE_DATE_EPOCH" + +rm -rf "$WORK_DIR" +mkdir -p "$WORK_DIR" "$RESULT_DIR" "$LOG_DIR" + +# --- Deterministic mock config overlay --- +DET_MOCK_CFG="$WORK_DIR/mock-deterministic.cfg" +cat > "$DET_MOCK_CFG" <&1 | tee "$LOG_DIR/mock-buildsrpm.log" + +SRPM="$(ls -t "$SRPM_OUT"/*.src.rpm 2>/dev/null | head -1)" +if [[ -z "$SRPM" ]]; then + echo "ERROR: No SRPM produced" + exit 1 +fi +echo "SRPM: $SRPM" + +# --- Rebuild RPM via mock --- +echo "" +echo "== Rebuild RPM ==" +RPM_OUT="$WORK_DIR/rpm" +mkdir -p "$RPM_OUT" +mock -r "$DET_MOCK_CFG" \ + --uniqueext "$MOCK_UNIQUEEXT" \ + --rebuild "$SRPM" \ + --define "use_source_date_epoch_as_buildtime 1" \ + --define "clamp_mtime_to_source_date_epoch 1" \ + --define "_buildhost xcat-build" \ + --resultdir "$RPM_OUT" \ + 2>&1 | tee "$LOG_DIR/mock-rebuild.log" + +# --- Collect artifacts --- +echo "" +echo "== Collect artifacts ==" +cp -v "$RPM_OUT"/*.rpm "$RESULT_DIR/" +for log in build.log root.log state.log hw_info.log installed_pkgs.log; do + [[ -f "$RPM_OUT/$log" ]] && cp "$RPM_OUT/$log" "$LOG_DIR/" +done + +echo "" +echo "== Completed ==" +ls -lh "$RESULT_DIR"/*.rpm +echo "Artifacts: $RESULT_DIR" +echo "Logs: $LOG_DIR" From 752fc237d3740d84fdc43c28146447625b5e867a Mon Sep 17 00:00:00 2001 From: Daniel Hilst <392820+dhilst@users.noreply.github.com> Date: Sat, 6 Jun 2026 12:11:05 -0300 Subject: [PATCH 6/8] fix: Add missing files Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com> --- .../patches/fix-true-keyword-gcc15.patch | 72 ++++++++++++ .../debian/patches/openssl3-dh-opaque.patch | 106 ++++++++++++++++++ conserver/debian/patches/series | 4 +- grub2-xcat/debian/changelog | 6 + 4 files changed, 187 insertions(+), 1 deletion(-) create mode 100644 conserver/debian/patches/fix-true-keyword-gcc15.patch create mode 100644 conserver/debian/patches/openssl3-dh-opaque.patch diff --git a/conserver/debian/patches/fix-true-keyword-gcc15.patch b/conserver/debian/patches/fix-true-keyword-gcc15.patch new file mode 100644 index 0000000..24dc500 --- /dev/null +++ b/conserver/debian/patches/fix-true-keyword-gcc15.patch @@ -0,0 +1,72 @@ +Description: Rename 'true' variable to 'reuse' to fix GCC 15 / C23 build error + In C23 (and GCC 15 defaults), 'true' is a keyword and cannot be used as a + variable name. Rename the setsockopt flag variable from 'true' to 'reuse' + in both group.c and master.c. +Author: Daniel Hilst +--- +diff -ruN a/conserver/group.c b/conserver/group.c +--- a/conserver/group.c ++++ b/conserver/group.c +@@ -5036,7 +5036,7 @@ + struct sockaddr_in lstn_port; + # endif + # if HAVE_SETSOCKOPT +- int true = 1; ++ int reuse = 1; + # endif + unsigned short portInc = 0; + #else +@@ -5063,8 +5063,8 @@ + } + # if HAVE_SETSOCKOPT + if (setsockopt +- (sfd, SOL_SOCKET, SO_REUSEADDR, (char *)&true, +- sizeof(true)) < 0) { ++ (sfd, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, ++ sizeof(reuse)) < 0) { + Error("Spawn(): setsockopt(%u,SO_REUSEADDR): %s", sfd, + strerror(errno)); + return; +@@ -5195,7 +5195,7 @@ + } + # if HAVE_SETSOCKOPT + if (setsockopt +- (sfd, SOL_SOCKET, SO_REUSEADDR, (char *)&true, sizeof(true)) < 0) { ++ (sfd, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, sizeof(reuse)) < 0) { + Error("Spawn(): setsockopt(%u,SO_REUSEADDR): %s", sfd, + strerror(errno)); + Bye(EX_OSERR); +diff -ruN a/conserver/master.c b/conserver/master.c +--- a/conserver/master.c ++++ b/conserver/master.c +@@ -687,7 +687,7 @@ + struct sockaddr_in master_port; + # endif + # if HAVE_SETSOCKOPT +- int true = 1; ++ int reuse = 1; + # endif + #else + struct sockaddr_un master_port; +@@ -747,8 +747,8 @@ + + # if HAVE_SETSOCKOPT + if (setsockopt +- (msfd, SOL_SOCKET, SO_REUSEADDR, (char *)&true, +- sizeof(true)) < 0) ++ (msfd, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, ++ sizeof(reuse)) < 0) + goto fail; + # endif + if (!SetFlags(msfd, O_NONBLOCK, 0)) +@@ -818,8 +818,8 @@ + } + # if HAVE_SETSOCKOPT + if (setsockopt +- (msfd, SOL_SOCKET, SO_REUSEADDR, (char *)&true, +- sizeof(true)) < 0) { ++ (msfd, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, ++ sizeof(reuse)) < 0) { + Error("Master(): setsockopt(%u,SO_REUSEADDR): %s", msfd, + strerror(errno)); + return; diff --git a/conserver/debian/patches/openssl3-dh-opaque.patch b/conserver/debian/patches/openssl3-dh-opaque.patch new file mode 100644 index 0000000..22d8277 --- /dev/null +++ b/conserver/debian/patches/openssl3-dh-opaque.patch @@ -0,0 +1,106 @@ +--- a/conserver/main.c 2026-05-11 12:58:13 ++++ b/conserver/main.c 2026-05-11 13:01:10 +@@ -112,12 +112,25 @@ + + if ((dh = DH_new()) == NULL) + return (NULL); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L /* OpenSSL >= 1.1.0 */ ++ { ++ BIGNUM *p = BN_bin2bn(dh512_p, sizeof(dh512_p), NULL); ++ BIGNUM *g = BN_bin2bn(dh512_g, sizeof(dh512_g), NULL); ++ if (p == NULL || g == NULL || !DH_set0_pqg(dh, p, NULL, g)) { ++ BN_free(p); ++ BN_free(g); ++ DH_free(dh); ++ return (NULL); ++ } ++ } ++#else + dh->p = BN_bin2bn(dh512_p, sizeof(dh512_p), NULL); + dh->g = BN_bin2bn(dh512_g, sizeof(dh512_g), NULL); + if ((dh->p == NULL) || (dh->g == NULL)) { + DH_free(dh); + return (NULL); + } ++#endif + return (dh); + } + +@@ -146,12 +159,25 @@ + + if ((dh = DH_new()) == NULL) + return (NULL); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L /* OpenSSL >= 1.1.0 */ ++ { ++ BIGNUM *p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL); ++ BIGNUM *g = BN_bin2bn(dh1024_g, sizeof(dh1024_g), NULL); ++ if (p == NULL || g == NULL || !DH_set0_pqg(dh, p, NULL, g)) { ++ BN_free(p); ++ BN_free(g); ++ DH_free(dh); ++ return (NULL); ++ } ++ } ++#else + dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL); + dh->g = BN_bin2bn(dh1024_g, sizeof(dh1024_g), NULL); + if ((dh->p == NULL) || (dh->g == NULL)) { + DH_free(dh); + return (NULL); + } ++#endif + return (dh); + } + +@@ -193,12 +219,25 @@ + + if ((dh = DH_new()) == NULL) + return (NULL); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L /* OpenSSL >= 1.1.0 */ ++ { ++ BIGNUM *p = BN_bin2bn(dh2048_p, sizeof(dh2048_p), NULL); ++ BIGNUM *g = BN_bin2bn(dh2048_g, sizeof(dh2048_g), NULL); ++ if (p == NULL || g == NULL || !DH_set0_pqg(dh, p, NULL, g)) { ++ BN_free(p); ++ BN_free(g); ++ DH_free(dh); ++ return (NULL); ++ } ++ } ++#else + dh->p = BN_bin2bn(dh2048_p, sizeof(dh2048_p), NULL); + dh->g = BN_bin2bn(dh2048_g, sizeof(dh2048_g), NULL); + if ((dh->p == NULL) || (dh->g == NULL)) { + DH_free(dh); + return (NULL); + } ++#endif + return (dh); + } + +@@ -266,12 +305,25 @@ + + if ((dh = DH_new()) == NULL) + return (NULL); ++#if OPENSSL_VERSION_NUMBER >= 0x10100000L /* OpenSSL >= 1.1.0 */ ++ { ++ BIGNUM *p = BN_bin2bn(dh4096_p, sizeof(dh4096_p), NULL); ++ BIGNUM *g = BN_bin2bn(dh4096_g, sizeof(dh4096_g), NULL); ++ if (p == NULL || g == NULL || !DH_set0_pqg(dh, p, NULL, g)) { ++ BN_free(p); ++ BN_free(g); ++ DH_free(dh); ++ return (NULL); ++ } ++ } ++#else + dh->p = BN_bin2bn(dh4096_p, sizeof(dh4096_p), NULL); + dh->g = BN_bin2bn(dh4096_g, sizeof(dh4096_g), NULL); + if ((dh->p == NULL) || (dh->g == NULL)) { + DH_free(dh); + return (NULL); + } ++#endif + return (dh); + } + diff --git a/conserver/debian/patches/series b/conserver/debian/patches/series index 110cd53..c23fa73 100644 --- a/conserver/debian/patches/series +++ b/conserver/debian/patches/series @@ -1 +1,3 @@ -initscript_8.2.1.patch \ No newline at end of file +initscript_8.2.1.patch +openssl3-dh-opaque.patch +fix-true-keyword-gcc15.patch \ No newline at end of file diff --git a/grub2-xcat/debian/changelog b/grub2-xcat/debian/changelog index 65bc2b7..f0ebc27 100644 --- a/grub2-xcat/debian/changelog +++ b/grub2-xcat/debian/changelog @@ -1,3 +1,9 @@ +grub2-xcat (2.12-1) unstable; urgency=low + + * Bump version to satisfy xcat-server dependency (>= 2.02) + + -- XCAT Wed, 21 May 2025 12:00:00 +0000 + grub2-xcat (1.0-2) unstable; urgency=low * update core.elf to support ppc64le From f6f864096fc33fea8864828a4d1b150096dcc556 Mon Sep 17 00:00:00 2001 From: Daniel Hilst <392820+dhilst@users.noreply.github.com> Date: Fri, 19 Jun 2026 12:41:23 -0300 Subject: [PATCH 7/8] fix(goconserver): Fix makegocons error & update debian/rules Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com> --- goconserver/debian/rules | 1 + goconserver/mockbuild.pl | 3 +++ 2 files changed, 4 insertions(+) diff --git a/goconserver/debian/rules b/goconserver/debian/rules index 5d0471b..a8a3d32 100755 --- a/goconserver/debian/rules +++ b/goconserver/debian/rules @@ -11,6 +11,7 @@ override_dh_auto_install: install -D -m 755 congo $(CURDIR)/debian/goconserver/usr/bin/congo install -D -m 644 etc/goconserver/server.conf $(CURDIR)/debian/goconserver/etc/goconserver/server.conf mkdir -p $(CURDIR)/debian/goconserver/var/log/goconserver + mkdir -p $(CURDIR)/debian/goconserver/var/lib/goconserver override_dh_auto_test: override_dh_auto_clean: rm -f goconserver congo diff --git a/goconserver/mockbuild.pl b/goconserver/mockbuild.pl index bf4ec58..ff2b0df 100755 --- a/goconserver/mockbuild.pl +++ b/goconserver/mockbuild.pl @@ -162,6 +162,7 @@ After=network.target Type=simple ExecStart=/usr/bin/goconserver Restart=on-failure +StateDirectory=goconserver [Install] WantedBy=multi-user.target @@ -206,6 +207,7 @@ mkdir -p %{buildroot}/usr/bin mkdir -p %{buildroot}/usr/lib/systemd/system mkdir -p %{buildroot}/etc/goconserver mkdir -p %{buildroot}/var/log/goconserver +mkdir -p %{buildroot}/var/lib/goconserver install -m 755 usr/bin/goconserver %{buildroot}/usr/bin/goconserver install -m 755 usr/bin/congo %{buildroot}/usr/bin/congo @@ -218,6 +220,7 @@ install -m 644 etc/goconserver/server.conf %{buildroot}/etc/goconserver/server.c /usr/lib/systemd/system/goconserver.service %config(noreplace) /etc/goconserver/server.conf %dir /var/log/goconserver +%dir /var/lib/goconserver %changelog * Mon Jun 08 2026 xCAT EL10 build - 0.3.3-2.el10 From 920a99eb6f62588b594242464ef260bc612761c9 Mon Sep 17 00:00:00 2001 From: Daniel Hilst <392820+dhilst@users.noreply.github.com> Date: Fri, 19 Jun 2026 12:44:03 -0300 Subject: [PATCH 8/8] build: Add build-apt-repo.sh Generates APT repository metadata from pre-built .debs. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com> --- build-apt-repo.sh | 244 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 244 insertions(+) create mode 100755 build-apt-repo.sh diff --git a/build-apt-repo.sh b/build-apt-repo.sh new file mode 100755 index 0000000..3328497 --- /dev/null +++ b/build-apt-repo.sh @@ -0,0 +1,244 @@ +#!/bin/bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" + +if [ -z "${SOURCE_DATE_EPOCH:-}" ] && [ -f "$SCRIPT_DIR/Gitepoch" ]; then + export SOURCE_DATE_EPOCH=$(cat "$SCRIPT_DIR/Gitepoch") +fi + +REPO_ROOT="$SCRIPT_DIR" +APT_DIR="" +GPG_KEY_ID="xcat@megware.com" +SKIP_SIGN=0 +DRY_RUN=0 + +declare -A CODENAME_MAP=( + [ubuntu22.04]=jammy + [ubuntu24.04]=noble + [ubuntu26.04]=resolute +) +ARCHITECTURES=(amd64 ppc64el) + +usage() { + cat <<'EOF' +Usage: build-apt-repo.sh [options] + +Generate APT repository metadata from pre-built .deb packages. + +Options: + --repo-root PATH xcat-dep repository root (default: script directory) + --apt-dir PATH APT output directory (default: /repos/apt) + --gpg-key-id ID GPG key ID for signing (default: xcat@megware.com) + --skip-sign Skip GPG signing (for testing) + --dry-run Print planned actions without executing + -h, --help Show this help +EOF +} + +die() { echo "ERROR: $*" >&2; exit 1; } + +step() { echo -e "\n== $* =="; } + +run() { + echo "+ $*" + if [[ $DRY_RUN -eq 0 ]]; then + "$@" + fi +} + +while [[ $# -gt 0 ]]; do + case "$1" in + --repo-root) REPO_ROOT="$2"; shift 2 ;; + --apt-dir) APT_DIR="$2"; shift 2 ;; + --gpg-key-id) GPG_KEY_ID="$2"; shift 2 ;; + --skip-sign) SKIP_SIGN=1; shift ;; + --dry-run) DRY_RUN=1; shift ;; + -h|--help) usage; exit 0 ;; + *) die "Unknown option: $1" ;; + esac +done + +REPO_ROOT="$(cd "$REPO_ROOT" && pwd)" +APT_DIR="${APT_DIR:-$REPO_ROOT/repos/apt}" + +step "Validating prerequisites" + +command -v apt-ftparchive >/dev/null 2>&1 \ + || die "apt-ftparchive not found. Install: sudo apt-get install apt-utils" +command -v gpg >/dev/null 2>&1 \ + || die "gpg not found. Install: sudo apt-get install gnupg" + +if [[ $SKIP_SIGN -eq 0 ]]; then + if ! gpg --list-secret-keys "$GPG_KEY_ID" >/dev/null 2>&1; then + die "Secret key '$GPG_KEY_ID' not in GPG keyring. Import it or use --skip-sign." + fi + echo "GPG signing key: $GPG_KEY_ID" +else + echo "GPG signing: skipped" +fi + +for ver in "${!CODENAME_MAP[@]}"; do + src="$APT_DIR/$ver" + [[ -d "$src" ]] || die "Source directory missing: $src" + count=$(find "$src" -maxdepth 1 -name '*.deb' | wc -l) + [[ $count -gt 0 ]] || die "No .deb files in $src" + echo "Found $count debs in $src" +done + +step "Cleaning previous repo metadata" + +if [[ $DRY_RUN -eq 0 ]]; then + rm -rf "$APT_DIR/dists" "$APT_DIR/pool" +fi +echo "Removed dists/ and pool/" + +step "Creating directory structure" + +for ver in "${!CODENAME_MAP[@]}"; do + codename="${CODENAME_MAP[$ver]}" + run mkdir -p "$APT_DIR/pool/main/$codename" + for arch in "${ARCHITECTURES[@]}"; do + run mkdir -p "$APT_DIR/dists/$codename/main/binary-$arch" + done +done + +step "Populating pool" + +for ver in "${!CODENAME_MAP[@]}"; do + codename="${CODENAME_MAP[$ver]}" + src="$APT_DIR/$ver" + dst="$APT_DIR/pool/main/$codename" + echo "$ver -> pool/main/$codename/" + if [[ $DRY_RUN -eq 0 ]]; then + for deb in "$src"/*.deb; do + ln "$deb" "$dst/" 2>/dev/null || cp "$deb" "$dst/" + done + fi +done + +step "Generating Packages indexes" + +for ver in "${!CODENAME_MAP[@]}"; do + codename="${CODENAME_MAP[$ver]}" + echo "Indexing $codename..." + + if [[ $DRY_RUN -eq 1 ]]; then + echo "(dry-run: would generate Packages for $codename)" + continue + fi + + all_packages=$(cd "$APT_DIR" && apt-ftparchive packages "pool/main/$codename/") + + for arch in "${ARCHITECTURES[@]}"; do + pkg_file="$APT_DIR/dists/$codename/main/binary-$arch/Packages" + + echo -n "" > "$pkg_file" + + echo "$all_packages" | awk -v arch="$arch" ' + BEGIN { RS=""; FS="\n"; OFS="\n"; ORS="\n\n" } + { + pkg_arch = "" + for (i = 1; i <= NF; i++) { + if ($i ~ /^Architecture:/) { + split($i, a, ": ") + pkg_arch = a[2] + } + } + if (pkg_arch == arch || pkg_arch == "all") { + print + } + } + ' >> "$pkg_file" + + gzip -9 -k -f -n "$pkg_file" + + pkg_count=$(grep -c '^Package:' "$pkg_file" 2>/dev/null || echo 0) + echo " binary-$arch: $pkg_count packages" + done +done + +step "Generating Release files" + +for ver in "${!CODENAME_MAP[@]}"; do + codename="${CODENAME_MAP[$ver]}" + echo "Release for $codename..." + + if [[ $DRY_RUN -eq 1 ]]; then + echo "(dry-run: would generate Release for $codename)" + continue + fi + + apt-ftparchive \ + -o "APT::FTPArchive::Release::Origin=xCAT" \ + -o "APT::FTPArchive::Release::Label=xcat-dep" \ + -o "APT::FTPArchive::Release::Suite=$codename" \ + -o "APT::FTPArchive::Release::Codename=$codename" \ + -o "APT::FTPArchive::Release::Architectures=amd64 ppc64el" \ + -o "APT::FTPArchive::Release::Components=main" \ + -o "APT::FTPArchive::Release::Description=xCAT dependency packages for $ver" \ + release "$APT_DIR/dists/$codename/" \ + > "$APT_DIR/dists/$codename/Release" + + if [ -n "${SOURCE_DATE_EPOCH:-}" ]; then + deterministic_date=$(date -R -d "@$SOURCE_DATE_EPOCH" --utc) + sed -i "s/^Date: .*/Date: $deterministic_date/" "$APT_DIR/dists/$codename/Release" + fi +done + +if [[ $SKIP_SIGN -eq 0 ]]; then + step "Signing Release files" + + for ver in "${!CODENAME_MAP[@]}"; do + codename="${CODENAME_MAP[$ver]}" + release="$APT_DIR/dists/$codename/Release" + + echo "Signing $codename..." + if [[ $DRY_RUN -eq 0 ]]; then + gpg --default-key "$GPG_KEY_ID" \ + --batch --yes --armor \ + --detach-sign \ + -o "$release.gpg" "$release" + + gpg --default-key "$GPG_KEY_ID" \ + --batch --yes --armor \ + --clearsign \ + -o "$APT_DIR/dists/$codename/InRelease" "$release" + fi + done +fi + +step "Exporting public key" + +key_src="$REPO_ROOT/repomd.xml.key" +key_dst="$APT_DIR/xcat-dep.asc" +if [[ -f "$key_src" ]]; then + run cp "$key_src" "$key_dst" + echo "Public key -> xcat-dep.asc" +else + echo "WARNING: $key_src not found, skipping key export" +fi + +step "Summary" + +echo "" +echo "APT repository generated at: $APT_DIR" +echo "" +echo "Structure:" +if [[ $DRY_RUN -eq 0 ]]; then + find "$APT_DIR/dists" -type f | sort | sed "s|$APT_DIR/||" + echo "" + pool_count=$(find "$APT_DIR/pool" -name '*.deb' | wc -l) + echo "Pool: $pool_count .deb files" +fi +echo "" +echo "Example sources.list entries:" +echo " deb [arch=amd64 signed-by=/etc/apt/keyrings/xcat-dep.asc] http://SERVER/xcat/repos/apt jammy main" +echo " deb [arch=amd64 signed-by=/etc/apt/keyrings/xcat-dep.asc] http://SERVER/xcat/repos/apt noble main" +echo " deb [arch=amd64 signed-by=/etc/apt/keyrings/xcat-dep.asc] http://SERVER/xcat/repos/apt resolute main" +echo "" +echo "Client setup:" +echo " curl -fsSL http://SERVER/xcat/repos/apt/xcat-dep.asc | sudo tee /etc/apt/keyrings/xcat-dep.asc >/dev/null" +echo " echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/xcat-dep.asc] http://SERVER/xcat/repos/apt main' \\" +echo " | sudo tee /etc/apt/sources.list.d/xcat-dep.list" +echo " sudo apt-get update"