Update repository directory structure.

Currently it will not work with apt out of the box, as we
require the dists/ prefix, along with a distribution name.

This tweaks the overall structure to allow for the same URL
prefix to be used for all repositories, and enables multiple
architectures.

Fixes #852

PiperOrigin-RevId: 268756104
This commit is contained in:
Adin Scannell
2019-09-12 13:44:18 -07:00
committed by gVisor bot
parent e2528cae76
commit 574eda8880
2 changed files with 33 additions and 16 deletions
+18 -10
View File
@@ -32,12 +32,14 @@ fi
# Install installs artifacts.
install() {
local dir="$1"
mkdir -p "${dir}"
cp -f "${runsc}" "${dir}"/runsc
sha512sum "${dir}"/runsc | awk '{print $1 " runsc"}' > "${dir}"/runsc.sha512
local -r binaries_dir="$1"
local -r repo_dir="$2"
mkdir -p "${binaries_dir}"
cp -f "${runsc}" "${binaries_dir}"/runsc
sha512sum "${binaries_dir}"/runsc | awk '{print $1 " runsc"}' > "${binaries_dir}"/runsc.sha512
if [[ -v repo ]]; then
rm -rf "${dir}"/repo && cp -a "${repo}" "$dir"/repo
rm -rf "${repo_dir}" && mkdir -p "$(dirname "${repo_dir}")"
cp -a "${repo}" "${repo_dir}"
fi
}
@@ -47,8 +49,11 @@ install() {
if [[ -v KOKORO_ARTIFACTS_DIR ]]; then
if [[ "${KOKORO_BUILD_NIGHTLY}" == "true" ]]; then
# The "latest" directory and current date.
install "${KOKORO_ARTIFACTS_DIR}/nightly/latest"
install "${KOKORO_ARTIFACTS_DIR}/nightly/$(date -Idate)"
stamp="$(date -Idate)"
install "${KOKORO_ARTIFACTS_DIR}/nightly/latest" \
"${KOKORO_ARTIFACTS_DIR}/dists/nightly/main"
install "${KOKORO_ARTIFACTS_DIR}/nightly/${stamp}" \
"${KOKORO_ARTIFACTS_DIR}/dists/nightly/${stamp}"
else
# Is it a tagged release? Build that instead. In that case, we also try to
# update the base release directory, in case this is an update. Finally, we
@@ -60,11 +65,14 @@ if [[ -v KOKORO_ARTIFACTS_DIR ]]; then
for tag in ${tags}; do
name=$(echo "${tag}" | cut -d'-' -f2)
base=$(echo "${name}" | cut -d'.' -f1)
install "${KOKORO_ARTIFACTS_DIR}/release/${name}"
install "${KOKORO_ARTIFACTS_DIR}/release/${name}" \
"${KOKORO_ARTIFACTS_DIR}/dists/${name}/main"
if [[ "${base}" != "${tag}" ]]; then
install "${KOKORO_ARTIFACTS_DIR}/release/${base}"
install "${KOKORO_ARTIFACTS_DIR}/release/${base}" \
"${KOKORO_ARTIFACTS_DIR}/dists/${base}/main"
fi
install "${KOKORO_ARTIFACTS_DIR}/release/latest"
install "${KOKORO_ARTIFACTS_DIR}/release/latest" \
"${KOKORO_ARTIFACTS_DIR}/dists/latest/main"
done
fi
fi
+15 -6
View File
@@ -39,11 +39,18 @@ cleanup() {
trap cleanup EXIT
gpg --no-default-keyring --keyring "${keyring}" --import "${private_key}" >&2
# Export the public key from the keyring.
gpg --no-default-keyring --keyring "${keyring}" --armor --export "${signer}" > "${tmpdir}"/keyFile >&2
# Copy the packages, and ensure permissions are correct.
cp -a "$@" "${tmpdir}" && chmod 0644 "${tmpdir}"/*
for pkg in "$@"; do
name=$(basename "${pkg}" .deb)
name=$(basename "${name}" .changes)
arch=${name##*_}
if [[ "${name}" == "${arch}" ]]; then
continue # Not a regular package.
fi
mkdir -p "${tmpdir}"/binary-"${arch}"
cp -a "${pkg}" "${tmpdir}"/binary-"${arch}"
done
find "${tmpdir}" -type f -exec chmod 0644 {} \;
# Ensure there are no symlinks hanging around; these may be remnants of the
# build process. They may be useful for other things, but we are going to build
@@ -51,12 +58,14 @@ cp -a "$@" "${tmpdir}" && chmod 0644 "${tmpdir}"/*
find "${tmpdir}" -type l -exec rm -f {} \;
# Sign all packages.
for file in "${tmpdir}"/*.deb; do
for file in "${tmpdir}"/binary-*/*.deb; do
dpkg-sig -g "--no-default-keyring --keyring ${keyring}" --sign builder "${file}" >&2
done
# Build the package list.
(cd "${tmpdir}" && apt-ftparchive packages . | gzip > Packages.gz)
for dir in "${tmpdir}"/binary-*; do
(cd "${dir}" && apt-ftparchive packages . | gzip > Packages.gz)
done
# Build the release list.
(cd "${tmpdir}" && apt-ftparchive release . > Release)