|
Packit |
f0b94e |
#!/bin/bash
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
set -xe
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Required env variables
|
|
Packit |
f0b94e |
test "$VERSION"
|
|
Packit |
f0b94e |
test "$BUILD_NUMBER"
|
|
Packit |
f0b94e |
test "$CANDIDATES_DIR"
|
|
Packit |
f0b94e |
test "$L10N_CHANGESETS"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Optional env variables
|
|
Packit |
f0b94e |
: WORKSPACE "${WORKSPACE:=/home/worker/workspace}"
|
|
Packit |
f0b94e |
: ARTIFACTS_DIR "${ARTIFACTS_DIR:=/home/worker/artifacts}"
|
|
Packit |
f0b94e |
: PUSH_TO_CHANNEL ""
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
SCRIPT_DIRECTORY="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
TARGET="target.snap"
|
|
Packit |
f0b94e |
TARGET_FULL_PATH="$ARTIFACTS_DIR/$TARGET"
|
|
Packit |
f0b94e |
SOURCE_DEST="${WORKSPACE}/source"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
mkdir -p "$ARTIFACTS_DIR"
|
|
Packit |
f0b94e |
rm -rf "$SOURCE_DEST" && mkdir -p "$SOURCE_DEST"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
CURL="curl --location --retry 10 --retry-delay 10"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Download and extract en-US linux64 binary
|
|
Packit |
f0b94e |
$CURL -o "${WORKSPACE}/firefox.tar.bz2" \
|
|
Packit |
f0b94e |
"${CANDIDATES_DIR}/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/en-US/firefox-${VERSION}.tar.bz2"
|
|
Packit |
f0b94e |
tar -C "$SOURCE_DEST" -xf "${WORKSPACE}/firefox.tar.bz2" --strip-components=1
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Get Ubuntu configuration
|
|
Packit |
f0b94e |
PARTNER_CONFIG_DIR="$WORKSPACE/partner_config"
|
|
Packit |
f0b94e |
git clone https://github.com/mozilla-partners/canonical.git "$PARTNER_CONFIG_DIR"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
DISTRIBUTION_DIR="$SOURCE_DEST/distribution"
|
|
Packit |
f0b94e |
mv "$PARTNER_CONFIG_DIR/desktop/ubuntu/distribution" "$DISTRIBUTION_DIR"
|
|
Packit |
f0b94e |
cp -v "$SCRIPT_DIRECTORY/firefox.desktop" "$DISTRIBUTION_DIR"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Use list of locales to fetch L10N XPIs
|
|
Packit |
f0b94e |
$CURL -o "${WORKSPACE}/l10n_changesets.json" "$L10N_CHANGESETS"
|
|
Packit |
f0b94e |
locales=$(python3 "$SCRIPT_DIRECTORY/extract_locales_from_l10n_json.py" "${WORKSPACE}/l10n_changesets.json")
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
mkdir -p "$DISTRIBUTION_DIR/extensions"
|
|
Packit |
f0b94e |
for locale in $locales; do
|
|
Packit |
f0b94e |
$CURL -o "$SOURCE_DEST/distribution/extensions/langpack-${locale}@firefox.mozilla.org.xpi" \
|
|
Packit |
f0b94e |
"$CANDIDATES_DIR/${VERSION}-candidates/build${BUILD_NUMBER}/linux-x86_64/xpi/${locale}.xpi"
|
|
Packit |
f0b94e |
done
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Extract gtk30.mo from Ubuntu language packs
|
|
Packit |
f0b94e |
apt download language-pack-gnome-*-base
|
|
Packit |
f0b94e |
for i in *.deb; do
|
|
Packit |
f0b94e |
# shellcheck disable=SC2086
|
|
Packit |
f0b94e |
dpkg-deb --fsys-tarfile $i | tar xv -C "$SOURCE_DEST" --wildcards "./usr/share/locale-langpack/*/LC_MESSAGES/gtk30.mo" || true
|
|
Packit |
f0b94e |
done
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Generate snapcraft manifest
|
|
Packit |
f0b94e |
sed -e "s/@VERSION@/${VERSION}/g" -e "s/@BUILD_NUMBER@/${BUILD_NUMBER}/g" snapcraft.yaml.in > "${WORKSPACE}/snapcraft.yaml"
|
|
Packit |
f0b94e |
cp -v "$SCRIPT_DIRECTORY/mimeapps.list" "$WORKSPACE"
|
|
Packit |
f0b94e |
cd "${WORKSPACE}"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Make sure snapcraft knows we're building amd64, even though we may not be on this arch.
|
|
Packit |
f0b94e |
export SNAP_ARCH='amd64'
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# When a snap is built, snapcraft fetches deb packages from ubuntu.com. They may bump packages
|
|
Packit |
f0b94e |
# there and remove the old ones. Updating the database allows snapcraft to find the latest packages.
|
|
Packit |
f0b94e |
# For more context, see 1448239
|
|
Packit |
f0b94e |
apt-get update
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
snapcraft
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
mv -- *.snap "$TARGET_FULL_PATH"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
cd "$ARTIFACTS_DIR"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# Generate checksums file
|
|
Packit |
f0b94e |
size=$(stat --printf="%s" "$TARGET_FULL_PATH")
|
|
Packit |
f0b94e |
sha=$(sha512sum "$TARGET_FULL_PATH" | awk '{print $1}')
|
|
Packit |
f0b94e |
echo "$sha sha512 $size $TARGET" > "$TARGET.checksums"
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
echo "Generating signing manifest"
|
|
Packit |
f0b94e |
hash=$(sha512sum "$TARGET.checksums" | awk '{print $1}')
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
cat << EOF > signing_manifest.json
|
|
Packit |
f0b94e |
[{"file_to_sign": "$TARGET.checksums", "hash": "$hash"}]
|
|
Packit |
f0b94e |
EOF
|
|
Packit |
f0b94e |
|
|
Packit |
f0b94e |
# For posterity
|
|
Packit |
f0b94e |
find . -ls
|
|
Packit |
f0b94e |
cat "$TARGET.checksums"
|
|
Packit |
f0b94e |
cat signing_manifest.json
|