76 lines
1.7 KiB
Bash
76 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Function to display help message
|
|
show_help() {
|
|
echo "Usage: $0 [options] builddir dsc_file"
|
|
echo
|
|
echo "Options:"
|
|
echo " -h, --help Show this help message and exit."
|
|
echo " builddir The directory where the build will take place."
|
|
echo " dsc_file The URL or path to the .dsc file for the package to build."
|
|
echo
|
|
echo "Example:"
|
|
echo " $0 /path/to/builddir https://example.com/path/to/package.dsc"
|
|
exit 0
|
|
}
|
|
|
|
# Check if the first argument is -h or --help
|
|
if [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then
|
|
show_help
|
|
fi
|
|
|
|
# Check if exactly two arguments are provided
|
|
if [ $# -ne 2 ]; then
|
|
echo "Error: Exactly two arguments are required."
|
|
show_help
|
|
fi
|
|
|
|
# Check if the second argument ends with .dsc
|
|
if [[ ! "$2" =~ \.dsc$ ]]; then
|
|
echo "Error: The second argument must end with .dsc."
|
|
show_help
|
|
fi
|
|
|
|
BUILDDIR=$1
|
|
DSC_FILE=$2
|
|
|
|
apt install -y git-buildpackage equivs
|
|
|
|
if [ "$1" == "-h" ]; then
|
|
echo "Usage: $(basename $0) Takes a builddir and a dsc url and builds and installs the result."
|
|
exit 0
|
|
fi
|
|
|
|
FILESTAMP=$(date '+%Y-%m-%d-%H-%M')-$(uuidgen -t)
|
|
BUILD_DIR=${BUILDDIR}/build-${FILESTAMP}
|
|
|
|
echo "Building in ${BUILD_DIR}"
|
|
mkdir -p ${BUILD_DIR}
|
|
cd ${BUILD_DIR}
|
|
|
|
# Download the package to build
|
|
echo "RUNNING: gbp import-dsc -v --allow-unauthenticated ${DSC_FILE}"
|
|
gbp import-dsc -v --allow-unauthenticated ${DSC_FILE}
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "gbp import-dsc failed to connect."
|
|
exit 0
|
|
fi
|
|
|
|
cd *
|
|
|
|
# Install the build deps
|
|
mk-build-deps debian/control --install --root-cmd sudo --remove
|
|
|
|
# Build the packages
|
|
if [ -d debian ]; then
|
|
dpkg-buildpackage -us -uc -b
|
|
fi
|
|
|
|
if [ -f *.deb ]; then
|
|
dpkg -i ../*.deb
|
|
apt install -y -f
|
|
else
|
|
echo "No debs to install, did the package build complete successfully?"
|
|
fi
|