mirror of
https://github.com/xcat2/xcat-dep.git
synced 2026-09-12 12:36:23 +00:00
c808e06da3
Review follow-up for the Ubuntu sbuild matrix:
- Add a fail-fast exclusive flock over the whole run (<output-root>/.sbuild-all.lock,
file-scoped handle) so two overlapping runs can't corrupt the shared staging/apt
tree -- this is the root of the observed 'remove_tree .../staging/<cn>/<arch>:
Directory not empty' (an NFS silly-rename from a concurrent run).
- wipe_tree(): remove_tree that captures {error} and dies loud, so an ENOTEMPTY no
longer carps-and-continues leaving stale debs; used for all staging/pool/dists wipes.
- Wire the tested, hash-based cross_copy_genesis_deb into build_genesis (was a naive
glob+copy, so the unit-tested stale-dropping copier was dead code); remove the
genuinely-unused deb_snap_version/rewrite_changelog_top helpers + their subtests
(compiled deps intentionally ship their tracked changelog version).
- Dedupe assemble_apt on binary Package+Architecture (keep highest via
dpkg --compare-versions) so a double-produced genesis can't land two versions in
the pool, independent of the --skip-genesis contract.
- Derive Release Architectures from the arches actually staged (non-empty
binary-<arch>/Packages), not a hard-coded 'amd64 ppc64el'.
- goconserver: guard 'go mod init' when a go.mod exists (+ TODO to commit go.sum for
the pinned SHA). Accept-and-ignore the unused per-package --log-dir/--build-number/
--skip-install flags (documented). Remove orphaned make_deb.sh dispatchers
(build-debs-all, build.sh, ipmitool/build.sh) + update the READMEs.
perl -c clean; prove t/sbuild-all.t: 71/71.
Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
58 lines
3.4 KiB
Plaintext
58 lines
3.4 KiB
Plaintext
Get latest ipxe source from git.ipxe.org
|
|
----------------------------------------
|
|
Current ipxe version is 1.21.1 (released Dec 31,2020), the tar command below will generate xnba-1.21.1.tar.bz2
|
|
|
|
1. Clone ipxe from github - git clone git://git.ipxe.org/ipxe.git
|
|
2. Verify version number - git describe --tags --always --long --abbrev=1 --match "v*"
|
|
3. Rename ipxe directory to xnba-<version> - mv ipxe xnba-1.21.1
|
|
4. Tar xnba-<version> directory - tar Jcvf xnba-1.21.1.tar.bz2 --exclude-vcs xnba-1.21.1
|
|
5. Optionally, if building is needed - cd src; make
|
|
|
|
|
|
Patch ipxe source
|
|
-----------------
|
|
1. Clone xcat-dep/xnba and create a new branch: git clone git@github.com:xcat2/xcat-dep.git; cd xcat-dep; git checkout -b <new branch>
|
|
2. Checkin the generated xnba-<version>.tar.bz2 file from above into git
|
|
3. If needed, modify existing or create additional patch files and checkin into git. The patch files will automatically be applied during build step below.
|
|
The following patches currently contain modification for xCAT Network Boot Agent
|
|
|
|
ipxe-xnbaclass.patch
|
|
ipxe-machyp.patch
|
|
ipxe-dhcp.patch
|
|
ipxe-branding.patch
|
|
ipxe-verbump.patch
|
|
|
|
3.a To modify existing or create additional patch file:
|
|
i. git clone git://git.ipxe.org/ipxe.git
|
|
ii. Make changes to the files under ipxe/src directory
|
|
iii. git diff <changed file> > my.patch
|
|
iv. If creating a new patch, rename my.patch to something like ipxe-<xxx>.patch
|
|
v. If modifying existing patch, replace the contents of that .patch file with the my.patch
|
|
vi. Be carefull of spaces vs. tabs. If original source file contained tabs, the .patch file should also have tabs for the patched lines.
|
|
vii. Checkin the new or modified patch files into the same git branch.
|
|
|
|
|
|
Build xNBA rpm for xcat-dep
|
|
---------------------------
|
|
1. On x86 RHEL machine, install required package: git, xz-devel and gcc
|
|
2. Checkout the branch created above: git clone https://github.com/xcat2/xcat-dep.git; cd xcat-dep; git checkout <new branch>
|
|
3. Copy 5 patch files listed above and xnba-<version>.tar.bz2 from cloned git directory into /root/rpmbuild/SOURCES/. Create that directory if one does not already exist.
|
|
4. RPM build: cd xcat-dep/xnba; rpmbuild -ba xnba-undi.spec
|
|
5. Copy generated rpm /root/rpmbuild/RPMS/noarch/xnba-undi-<version>.noarch.rpm into /gsa/pokgsa/projects/x/xcat/build/linux/xcat-dep/
|
|
6. Create links from <os/arch> subdirs to the /root/rpmbuild/RPMS/noarch/xnba-undi-<version>.noarch.rpm
|
|
|
|
|
|
Build xNBA deb for xcat-dep
|
|
---------------------------
|
|
1. On x86 Ubuntu machine, install required packages: git, liblzma-dev, dpkg-dev, debhelper, and quilt
|
|
2. Checkout the branch created above: git clone https://github.com/xcat2/xcat-dep.git; cd xcat-dep; git checkout <new branch>
|
|
3. DEB build: the Ubuntu/Debian build is now driven by the top-level sbuild-all.pl orchestrator
|
|
(builds inside the matching <codename>-<arch>-sbuild chroot). Build this package with
|
|
./sbuild-all.pl --arch amd64 --dists noble (or ./xnba/sbuild.pl --codename noble --arch amd64
|
|
--result-dir <dir> for this package alone). The former ./make_deb.sh has been removed.
|
|
4. ./rebuild.sh : build the package from source code, this should only run on amd64/x86_64 platform, it will update the files under "binary" directory after compilation
|
|
5. Copy generated deb file xcat-dep/xnba-undi_<version>_all.deb into /gsa/pokgsa/projects/x/xcat/build/ubuntu/xcat-dep/xcat-dep/pool/main/x/xnba-undi/
|
|
and /gsa/pokgsa/projects/x/xcat/build/ubuntu/xcat-dep/debs
|
|
|
|
|