Added logging built toolchain RPMs and specs. (#5817)

This commit is contained in:
Pawel Winogrodzki 2023-07-14 16:32:53 -07:00 коммит произвёл GitHub
Родитель 6d35fdd2fc
Коммит feb36fe447
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 51 добавлений и 32 удалений

Просмотреть файл

@ -235,8 +235,8 @@ mariner-repos-debug-2.0-8.cm2.noarch.rpm
mariner-repos-debug-preview-2.0-8.cm2.noarch.rpm
mariner-repos-extended-2.0-8.cm2.noarch.rpm
mariner-repos-extended-debug-2.0-8.cm2.noarch.rpm
mariner-repos-extended-preview-2.0-8.cm2.noarch.rpm
mariner-repos-extended-debug-preview-2.0-8.cm2.noarch.rpm
mariner-repos-extended-preview-2.0-8.cm2.noarch.rpm
mariner-repos-extras-2.0-8.cm2.noarch.rpm
mariner-repos-extras-preview-2.0-8.cm2.noarch.rpm
mariner-repos-microsoft-2.0-8.cm2.noarch.rpm
@ -571,10 +571,10 @@ texinfo-debuginfo-6.8-1.cm2.aarch64.rpm
unzip-6.0-20.cm2.aarch64.rpm
unzip-debuginfo-6.0-20.cm2.aarch64.rpm
util-linux-2.37.4-6.cm2.aarch64.rpm
util-linux-libs-2.37.4-6.cm2.aarch64.rpm
util-linux-debuginfo-2.37.4-6.cm2.aarch64.rpm
util-linux-devel-2.37.4-6.cm2.aarch64.rpm
util-linux-lang-2.37.4-6.cm2.aarch64.rpm
util-linux-libs-2.37.4-6.cm2.aarch64.rpm
which-2.21-8.cm2.aarch64.rpm
which-debuginfo-2.21-8.cm2.aarch64.rpm
xz-5.2.5-1.cm2.aarch64.rpm

Просмотреть файл

@ -235,8 +235,8 @@ mariner-repos-debug-2.0-8.cm2.noarch.rpm
mariner-repos-debug-preview-2.0-8.cm2.noarch.rpm
mariner-repos-extended-2.0-8.cm2.noarch.rpm
mariner-repos-extended-debug-2.0-8.cm2.noarch.rpm
mariner-repos-extended-preview-2.0-8.cm2.noarch.rpm
mariner-repos-extended-debug-preview-2.0-8.cm2.noarch.rpm
mariner-repos-extended-preview-2.0-8.cm2.noarch.rpm
mariner-repos-extras-2.0-8.cm2.noarch.rpm
mariner-repos-extras-preview-2.0-8.cm2.noarch.rpm
mariner-repos-microsoft-2.0-8.cm2.noarch.rpm
@ -571,10 +571,10 @@ texinfo-debuginfo-6.8-1.cm2.x86_64.rpm
unzip-6.0-20.cm2.x86_64.rpm
unzip-debuginfo-6.0-20.cm2.x86_64.rpm
util-linux-2.37.4-6.cm2.x86_64.rpm
util-linux-libs-2.37.4-6.cm2.x86_64.rpm
util-linux-debuginfo-2.37.4-6.cm2.x86_64.rpm
util-linux-devel-2.37.4-6.cm2.x86_64.rpm
util-linux-lang-2.37.4-6.cm2.x86_64.rpm
util-linux-libs-2.37.4-6.cm2.x86_64.rpm
which-2.21-8.cm2.x86_64.rpm
which-debuginfo-2.21-8.cm2.x86_64.rpm
xz-5.2.5-1.cm2.x86_64.rpm

Просмотреть файл

@ -28,12 +28,13 @@ source $(dirname $0)/../timestamp.sh
begin_timestamp
start_record_timestamp "prep_files"
MARINER_LOGS=$MARINER_BUILD_DIR/logs
TOOLCHAIN_LOGS=$MARINER_LOGS/toolchain
TOOLCHAIN_BUILD_LIST=$TOOLCHAIN_LOGS/build_list.txt
TOOLCHAIN_BUILT_RPMS_LIST=$TOOLCHAIN_LOGS/built_rpms_list.txt
TOOLCHAIN_BUILT_SPECS_LIST=$TOOLCHAIN_LOGS/built_specs_list.txt
TOOLCHAIN_FAILURES=$TOOLCHAIN_LOGS/failures.txt
set -x
set -ex
export LFS=$MARINER_BUILD_DIR/toolchain/populated_toolchain
TOPDIR=/usr/src/mariner
@ -77,6 +78,21 @@ mkdir -pv $CHROOT_RPMS_DIR
mkdir -pv $CHROOT_RPMS_DIR_ARCH
mkdir -pv $CHROOT_RPMS_DIR_NOARCH
TEMP_DIR=$(mktemp -d -t)
TEMP_BUILT_RPMS_LIST="$(mktemp --tmpdir="$TEMP_DIR")"
TEMP_BUILT_SPECS_LIST="$(mktemp --tmpdir="$TEMP_DIR")"
function clean_up {
# Removing duplicates during clean-up to simplify appends during run-time.
echo "Copying build lists to log output..."
sort "$TEMP_BUILT_RPMS_LIST" | uniq > "$TOOLCHAIN_BUILT_RPMS_LIST"
sort "$TEMP_BUILT_SPECS_LIST" | uniq > "$TOOLCHAIN_BUILT_SPECS_LIST"
echo "Cleaning up..."
chroot_unmount
rm -rf "$TEMP_DIR"
}
trap clean_up EXIT
# Remove artifacts from previous toolchain builds
sudo rm -f $TOOLCHAIN_BUILD_LIST
sudo rm -f $TOOLCHAIN_FAILURES
@ -112,7 +128,6 @@ fi
stop_record_timestamp "hydrate"
chroot_mount () {
trap chroot_unmount EXIT
mount --bind /dev $LFS/dev
mount -t devpts devpts $LFS/dev/pts -o gid=5,mode=620
mount -t proc proc $LFS/proc
@ -122,11 +137,15 @@ chroot_mount () {
blocking_unmount () {
# $1 mountpoint
umount -l $1
if ! mountpoint -q "$1"; then
return
fi
umount -l $1 || true
while mountpoint -q $1; do
echo $1 is still busy...
sleep 1
umount -l $1
umount -l $1 || true
done
}
@ -137,7 +156,6 @@ chroot_unmount () {
blocking_unmount $LFS/run
blocking_unmount $LFS/proc
blocking_unmount $LFS/sys
trap - EXIT
}
chroot_and_print_installed_rpms () {
@ -164,7 +182,7 @@ chroot_and_install_rpms () {
# $1 = spec name (or rpm name if $2 is omitted)
# $2 = qualified package name
# Clean and then copy the RPM into the chroot directory for installation below
rm -v $CHROOT_INSTALL_RPM_DIR/*
rm -fv $CHROOT_INSTALL_RPM_DIR/*
if [[ -n $2 ]]; then
# If we're using the qualified package name, there's probably naming conflicts
# that prevent us from simply globbing for RPMs with a prefix of the qualified name.
@ -230,17 +248,18 @@ chroot_and_run_rpmbuild () {
# $INCREMENTAL_TOOLCHAIN is set to "y".
build_rpm_in_chroot_no_install () {
start_record_timestamp "build packages/build/$1"
# $1 = SRPM name
# $1 = spec name
# Find all the associated RPMs for the SRPM and check if they are in the chroot RPM directory
specPath=$(find $SPECROOT -name "$1.spec" -print -quit)
specDir=$(dirname $specPath)
rpmMacros=(-D "with_check 1" -D "_sourcedir $specDir" -D "dist $PARAM_DIST_TAG")
builtRpms="$(rpmspec -q $specPath --builtrpms "${rpmMacros[@]}" --queryformat="%{nvra}.rpm\n")"
# Find all the associated RPMs for the SRPM and check if they are in the chroot RPM directory
foundAllRPMs="false"
if [ "$INCREMENTAL_TOOLCHAIN" = "y" ]; then
foundAllRPMs="true"
all_rpms=$(rpmspec -q $specPath --srpm --define="with_check 1" --define="_sourcedir $specDir" --define="dist $PARAM_DIST_TAG" --builtrpms --queryformat '%{nvra}.rpm ' | xargs)
for rpm in ${all_rpms}; do
for rpm in $builtRpms; do
rpmPath=$(find $CHROOT_RPMS_DIR -name "$rpm" -print -quit)
if [ -z "$rpmPath" ]; then
echo "Did not find incremental toolchain rpm '$rpm' in '$CHROOT_RPMS_DIR', must rebuild."
@ -251,26 +270,35 @@ build_rpm_in_chroot_no_install () {
fi
done
fi
if [ "$foundAllRPMs" = "false" ]; then
echo only building RPM $1 within the chroot
srpmName=$(rpmspec -q $specPath --srpm --define="with_check 1" --define="_sourcedir $specDir" --define="dist $PARAM_DIST_TAG" --queryformat %{NAME}-%{VERSION}-%{RELEASE}.src.rpm)
srpmName=$(rpmspec -q $specPath --srpm "${rpmMacros[@]}" --queryformat %{NAME}-%{VERSION}-%{RELEASE}.src.rpm)
srpmPath=$MARINER_INPUT_SRPMS_DIR/$srpmName
cp $srpmPath $CHROOT_SRPMS_DIR
chroot_and_run_rpmbuild $srpmName 2>&1 | awk '{ print strftime("time=\"%Y-%m-%dT%T%Z\""), $0; fflush(); }' | tee $TOOLCHAIN_LOGS/$srpmName.log
cp $CHROOT_RPMS_DIR_ARCH/$1* $FINISHED_RPM_DIR
cp $CHROOT_RPMS_DIR_NOARCH/$1* $FINISHED_RPM_DIR
copy_built_rpms $builtRpms
cp $srpmPath $MARINER_OUTPUT_SRPMS_DIR
echo "$1" >> $TEMP_BUILT_SPECS_LIST
echo NOT installing the package $srpmName
fi
echo "$1" >> $TOOLCHAIN_BUILD_LIST
stop_record_timestamp "build packages/build/$1"
}
# Copy RPM subpackages that have a different prefix
copy_rpm_subpackage () {
echo cache $1 RPMS
cp $CHROOT_RPMS_DIR_ARCH/$1* $FINISHED_RPM_DIR
cp $CHROOT_RPMS_DIR_NOARCH/$1* $FINISHED_RPM_DIR
# Log the built RPMs and copy them to the finished RPMs directory.
copy_built_rpms () {
for builtRpm in "$@"; do
rpmPath="$(find "$CHROOT_RPMS_DIR" -name "$builtRpm" -print -quit)"
if [[ ! -f "$rpmPath" ]]; then
echo ERROR: could not find expected built RPM "$builtRpm" in "$CHROOT_RPMS_DIR". >&2
return 1
fi
cp "$rpmPath" "$FINISHED_RPM_DIR"
echo "$builtRpm" >> "$TEMP_BUILT_RPMS_LIST"
done
}
start_record_timestamp "build prep"
@ -284,10 +312,8 @@ mkdir -pv $LFS/usr/lib/rpm/mariner
cp -v $SPECROOT/mariner-rpm-macros/gen-ld-script.sh $LFS/usr/lib/rpm/mariner/gen-ld-script.sh
cp -v $SPECROOT/mariner-rpm-macros/generate-package-note.py $LFS/usr/lib/rpm/mariner/generate-package-note.py
cp -v $SPECROOT/mariner-rpm-macros/verify-package-notes.sh $LFS/usr/lib/rpm/mariner/verify-package-notes.sh
cp -v $SPECROOT/rpm/brp* $LFS/usr/lib/rpm
mkdir -pv $LFS/usr/lib/rpm/macros.d
cp -v $MARINER_TOOLCHAIN_MANIFESTS_DIR/macros.override $LFS/usr/lib/rpm/macros.d/macros.override
chmod +x $LFS/usr/lib/rpm/brp*
cp /etc/resolv.conf $LFS/etc/
chroot_and_print_installed_rpms
@ -299,7 +325,6 @@ start_record_timestamp "build packages/install"
echo Building final list of toolchain RPMs
build_rpm_in_chroot_no_install mariner-rpm-macros
copy_rpm_subpackage mariner-check-macros
chroot_and_install_rpms mariner-rpm-macros
chroot_and_install_rpms mariner-check-macros
build_rpm_in_chroot_no_install filesystem
@ -403,7 +428,6 @@ chroot_and_install_rpms python3 python3
# libxml2 is required for at least: libxslt, createrepo_c
build_rpm_in_chroot_no_install libxml2
copy_rpm_subpackage python3-libxml2
chroot_and_install_rpms libxml2
# Download JDK rpms
@ -576,7 +600,6 @@ build_rpm_in_chroot_no_install libselinux
# libcap-ng needs: swig, python3
build_rpm_in_chroot_no_install libcap-ng
copy_rpm_subpackage python3-libcap-ng
# util-linux and rpm require libselinux and libcap-ng
chroot_and_install_rpms libselinux
@ -590,10 +613,8 @@ build_rpm_in_chroot_no_install rpm
# python-jinja2 needs python3-markupsafe
# python3-setuptools, python3-libs are also needed but already installed
build_rpm_in_chroot_no_install python-markupsafe
copy_rpm_subpackage python3-markupsafe
chroot_and_install_rpms python3-markupsafe
build_rpm_in_chroot_no_install python-jinja2
copy_rpm_subpackage python3-jinja2
# systemd-bootstrap requires libcap, xz, kbd, kmod, util-linux, meson, intltool, python3-jinja2
# gperf is also needed, but is installed earlier
@ -643,7 +664,6 @@ build_rpm_in_chroot_no_install pyproject-rpm-macros
# Without it, audit's systemd macros won't expand and install/uninstall
# will fail.
build_rpm_in_chroot_no_install audit
copy_rpm_subpackage python3-audit
stop_record_timestamp "build packages"
start_record_timestamp "finalize"
@ -656,7 +676,6 @@ cp -v $CHROOT_RPMS_DIR_ARCH/* $FINISHED_RPM_DIR
cp -v $CHROOT_RPMS_DIR_NOARCH/* $FINISHED_RPM_DIR
echo Finished building final list of toolchain RPMs
chroot_unmount
ls -la $FINISHED_RPM_DIR
ls -la $FINISHED_RPM_DIR | wc