mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-04-23 10:51:14 -03:00
84 lines
3.2 KiB
Bash
Executable File
84 lines
3.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# This script takes a source tarball (from build_tools/make_tarball.sh) and a vendor tarball (from
|
|
# build_tools/make_vendor_tarball.sh, generated if not present), and produces:
|
|
# * Appropriately-named symlinks to look like a Debian package
|
|
# * Debian .changes and .dsc files with plain names ($version-1) and supported Ubuntu prefixes
|
|
# ($version-1~somedistro)
|
|
# * An RPM spec file
|
|
# By default, input and output files go in ~/fish_built, but this can be controlled with the
|
|
# FISH_ARTEFACT_PATH environment variable.
|
|
|
|
{
|
|
|
|
set -e
|
|
|
|
version=$1
|
|
[ -n "$version" ] || { echo "Version number required as argument" >&2; exit 1; }
|
|
|
|
|
|
[ -n "$DEB_SIGN_KEYID$DEB_SIGN_KEYFILE" ] ||
|
|
echo "Warning: neither DEB_SIGN_KEYID or DEB_SIGN_KEYFILE environment variables are set; you
|
|
will need a signing key for the author of the most recent debian/changelog entry." >&2
|
|
|
|
workpath=${FISH_ARTEFACT_PATH:-~/fish_built}
|
|
source_tarball="$workpath"/fish-"$version".tar.xz
|
|
vendor_tarball="$workpath"/fish-"$version"-vendor.tar.xz
|
|
|
|
[ -e "$source_tarball" ] || { echo "Missing source tarball, expected at $source_tarball" >&2; exit 1; }
|
|
cd "$workpath"
|
|
|
|
# Unpack the sources
|
|
tar xf "$source_tarball"
|
|
sourcepath="$workpath"/fish-"$version"
|
|
|
|
# Generate the vendor tarball if it is not already present
|
|
[ -e "$vendor_tarball" ] || (cd "$sourcepath"; build_tools/make_vendor_tarball.sh;)
|
|
|
|
# This step requires network access, so do it early in case it fails
|
|
# sh has no real array support
|
|
ubuntu_versions=$(uv run --script "$sourcepath"/build_tools/supported_ubuntu_versions.py)
|
|
|
|
# Write the specfile
|
|
[ -e "$workpath"/fish.spec ] && { echo "Cowardly refusing to overwite an existing fish.spec" >&2;
|
|
exit 1; }
|
|
rpmversion=$(echo "$version" |sed -e 's/-/+/' -e 's/-/./g')
|
|
sed -e "s/@version@/$version/g" -e "s/@rpmversion@/$rpmversion/g" \
|
|
< "$sourcepath"/fish.spec.in > "$workpath"/fish.spec
|
|
|
|
# Make the symlinks for Debian
|
|
ln -s "$source_tarball" "$workpath"/fish_"$version".orig.tar.xz
|
|
ln -s "$vendor_tarball" "$workpath"/fish_"$version".orig-cargo-vendor.tar.xz
|
|
|
|
# Set up the Debian source tree
|
|
cd "$sourcepath"
|
|
mkdir cargo-vendor
|
|
tar -C cargo-vendor -x -f "$vendor_tarball"
|
|
cp -r contrib/debian debian
|
|
|
|
# The vendor tarball contains a new .cargo/config.toml, which has the
|
|
# vendoring overrides appended to it. dpkg-source will add this as a
|
|
# patch using the flags in debian/
|
|
cp cargo-vendor/.cargo/config.toml .cargo/config.toml
|
|
|
|
# Update the Debian changelog
|
|
# The release scripts do this for release builds - skip if it has already been done
|
|
if head -n1 debian/changelog | grep --invert-match --quiet --fixed-strings "$version"; then
|
|
debchange --newversion "$version-1" --distribution unstable "Snapshot build"
|
|
fi
|
|
|
|
# Builds the "plain" Debian package
|
|
# debuild runs lintian, which takes ten minutes to run over the vendor directories
|
|
# just use dpkg-buildpackage directly
|
|
dpkg-buildpackage --build=source -d
|
|
|
|
# Build the Ubuntu packages
|
|
# deb-reversion does not work on source packages, so do the whole thing ourselves
|
|
for series in $ubuntu_versions; do
|
|
sed -i -e "1 s/$version-1)/$version-1~$series)/" -e "1 s/unstable/$series/" debian/changelog
|
|
dpkg-buildpackage --build=source -d
|
|
sed -i -e "1 s/$version-1~$series)/$version-1)/" -e "1 s/$series/unstable/" debian/changelog
|
|
done
|
|
|
|
}
|