mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-27 16:41:11 +02:00
Merge pull request #1491 from flatcar/t-lo/build-dev-packages
T lo/build dev packages
This commit is contained in:
commit
2e2070c4e2
88
build_dev_binpkgs
Executable file
88
build_dev_binpkgs
Executable file
@ -0,0 +1,88 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright (c) 2023 by the Flatcar Maintainers.
|
||||||
|
# Use of this source code is governed by the Apache 2.0 license.
|
||||||
|
|
||||||
|
. "$(dirname "$0")/common.sh" || exit 1
|
||||||
|
|
||||||
|
# Script must run inside the chroot
|
||||||
|
assert_inside_chroot
|
||||||
|
assert_not_root_user
|
||||||
|
|
||||||
|
# Dependencies and packages to include by default.
|
||||||
|
packages_default=( "coreos-devel/board-packages" )
|
||||||
|
|
||||||
|
# Packages that are rdeps of the above but should not be included.
|
||||||
|
# (mostly large packages, e.g. programming languages etc.)
|
||||||
|
skip_packages_default="dev-lang/rust,virtual/rust,dev-lang/go,dev-lang/go-bootstrap,dev-go/go-md2man"
|
||||||
|
|
||||||
|
|
||||||
|
# Developer-visible flags.
|
||||||
|
DEFINE_string board "${DEFAULT_BOARD}" \
|
||||||
|
"The board to build packages for."
|
||||||
|
DEFINE_string skip_packages "${skip_packages_default[@]}" \
|
||||||
|
"Comma-separated list of packages in the dependency tree to skip."
|
||||||
|
DEFINE_boolean pretend "${FLAGS_FALSE}" \
|
||||||
|
"List packages that would be built but do not actually build."
|
||||||
|
|
||||||
|
FLAGS_HELP="usage: $(basename $0) [flags] [packages]
|
||||||
|
|
||||||
|
build_dev_binpkgs builds binary packages for all dependencies of [packages]
|
||||||
|
that are not present in '/build/<board>/var/lib/portage/pkgs/'.
|
||||||
|
Useful for publishing a complete set of packages to a binhost.
|
||||||
|
|
||||||
|
[packages] defaults to '${packages_default}' if not specified.
|
||||||
|
"
|
||||||
|
|
||||||
|
# Parse command line
|
||||||
|
FLAGS "$@" || exit 1
|
||||||
|
eval set -- "${FLAGS_ARGV}"
|
||||||
|
|
||||||
|
# Die on any errors.
|
||||||
|
switch_to_strict_mode
|
||||||
|
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
set -- "${packages_default[@]}"
|
||||||
|
fi
|
||||||
|
# --
|
||||||
|
|
||||||
|
function my_board_emerge() {
|
||||||
|
PORTAGE_CONFIGROOT="/build/${FLAGS_board}" SYSROOT="${SYSROOT:-/build/${FLAGS_board}}" ROOT="/build/${FLAGS_board}" sudo -E emerge --root-deps=rdeps "${@}"
|
||||||
|
}
|
||||||
|
# --
|
||||||
|
|
||||||
|
pkg_build_list="$(mktemp)"
|
||||||
|
pkg_skipped_list="${pkg_build_list}-skip"
|
||||||
|
trap 'rm -f "${pkg_build_list}" "${pkg_skipped_list}"' EXIT
|
||||||
|
|
||||||
|
info "Collecting list of binpkgs to build"
|
||||||
|
|
||||||
|
my_board_emerge --pretend --root-deps=rdeps --emptytree ${@} \
|
||||||
|
| grep '\[ebuild' \
|
||||||
|
| sed 's/^\[[^]]\+\] \([^ :]\+\)*:.*/\1/' \
|
||||||
|
| while read pkg; do
|
||||||
|
if [ -f "/build/${FLAGS_board}/var/lib/portage/pkgs/${pkg}.tbz2" ] ; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
skip=""
|
||||||
|
for s in ${FLAGS_skip_packages//,/ }; do
|
||||||
|
if [[ ${pkg} = ${s}-* ]] ; then
|
||||||
|
echo -n "${pkg} " >> "${pkg_skipped_list}"
|
||||||
|
skip="true"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[[ -z ${skip} ]] || continue
|
||||||
|
echo "=${pkg}" | tee -a "${pkg_build_list}" | sed 's/^/ /'
|
||||||
|
done
|
||||||
|
# --
|
||||||
|
|
||||||
|
if [ -f "${pkg_skipped_list}" ] ; then
|
||||||
|
info "Skipping binpkgs '$(cat "${pkg_skipped_list}")' because these are in the skip list."
|
||||||
|
fi
|
||||||
|
|
||||||
|
pretend=""
|
||||||
|
if [[ "${FLAGS_pretend}" -eq "${FLAGS_TRUE}" ]]; then
|
||||||
|
pretend="--pretend"
|
||||||
|
fi
|
||||||
|
|
||||||
|
my_board_emerge --buildpkg ${pretend} $(cat "${pkg_build_list}")
|
@ -36,6 +36,8 @@ DEFINE_boolean skip_toolchain_update "${FLAGS_FALSE}" \
|
|||||||
"Don't update toolchain automatically."
|
"Don't update toolchain automatically."
|
||||||
DEFINE_boolean skip_chroot_upgrade "${FLAGS_FALSE}" \
|
DEFINE_boolean skip_chroot_upgrade "${FLAGS_FALSE}" \
|
||||||
"Don't run the chroot upgrade automatically; use with care."
|
"Don't run the chroot upgrade automatically; use with care."
|
||||||
|
DEFINE_boolean only_resolve_circular_deps "${FLAGS_FALSE}" \
|
||||||
|
"Don't build all packages; only resolve circular dependencies, then stop."
|
||||||
|
|
||||||
# include upload options
|
# include upload options
|
||||||
. "${BUILD_LIBRARY_DIR}/release_util.sh" || exit 1
|
. "${BUILD_LIBRARY_DIR}/release_util.sh" || exit 1
|
||||||
@ -275,6 +277,11 @@ if [[ "${FLAGS_usepkgonly}" -eq "${FLAGS_FALSE}" ]]; then
|
|||||||
net-libs/nghttp2 systemd
|
net-libs/nghttp2 systemd
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "${FLAGS_only_resolve_circular_deps}" -eq "${FLAGS_TRUE}" ]]; then
|
||||||
|
info "Circular dependencies resolved. Stopping as requested."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
export KBUILD_BUILD_USER="${BUILD_USER:-build}"
|
export KBUILD_BUILD_USER="${BUILD_USER:-build}"
|
||||||
export KBUILD_BUILD_HOST="${BUILD_HOST:-pony-truck.infra.kinvolk.io}"
|
export KBUILD_BUILD_HOST="${BUILD_HOST:-pony-truck.infra.kinvolk.io}"
|
||||||
|
|
||||||
|
@ -12,6 +12,10 @@
|
|||||||
# This script will publish the packages from a pre-built packages container to
|
# This script will publish the packages from a pre-built packages container to
|
||||||
# the buildcache server, effectively turning the build cache into a
|
# the buildcache server, effectively turning the build cache into a
|
||||||
# binary packages server for the SDK.
|
# binary packages server for the SDK.
|
||||||
|
# Before pushing packages the script will run ./build_dev_binpkgs to ensure all
|
||||||
|
# binary packages for the development container are actually built.
|
||||||
|
# Note that this may build packages not previously built by the "build_packages"
|
||||||
|
# step.
|
||||||
#
|
#
|
||||||
# PREREQUISITES:
|
# PREREQUISITES:
|
||||||
#
|
#
|
||||||
@ -88,11 +92,14 @@ function _push_packages_impl() {
|
|||||||
|
|
||||||
docker_image_from_buildcache "${packages}" "${docker_vernum}"
|
docker_image_from_buildcache "${packages}" "${docker_vernum}"
|
||||||
|
|
||||||
|
local my_name="flatcar-packages-publisher-${arch}-${docker_vernum}"
|
||||||
|
./run_sdk_container -x ./ci-cleanup.sh -n "${my_name}" -C "${packages_image}" \
|
||||||
|
./build_dev_binpkgs --board="${arch}-usr"
|
||||||
|
|
||||||
local cmd="source ci-automation/push_pkgs.sh"
|
local cmd="source ci-automation/push_pkgs.sh"
|
||||||
cmd="$cmd; image_build__copy_to_bincache '$arch' '$vernum'"
|
cmd="$cmd; image_build__copy_to_bincache '$arch' '$vernum'"
|
||||||
|
|
||||||
local my_name="flatcar-packages-publisher-${arch}-${docker_vernum}"
|
./run_sdk_container -x ./ci-cleanup.sh -n "${my_name}" \
|
||||||
./run_sdk_container -x ./ci-cleanup.sh -n "${my_name}" -C "${packages_image}" \
|
|
||||||
bash -c "$cmd"
|
bash -c "$cmd"
|
||||||
}
|
}
|
||||||
# --
|
# --
|
||||||
|
Loading…
x
Reference in New Issue
Block a user