You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.8 KiB
Bash
72 lines
2.8 KiB
Bash
#!/bin/bash
|
|
# I use this script to build and publish deb packages in ppa:mikhailnov/pulseeffects (https://launchpad.net/~mikhailnov/+archive/ubuntu/pulseeffects)
|
|
# I publish it to allow other people to use it and make it possible to maintain a new PPA easily in case I stop doing it for some reason
|
|
# I think, it can also be used for maintaining packages in mainline Debian (minor modifications required)
|
|
|
|
pkg_name="duma-ssh-central-auth"
|
|
|
|
# this allows the script to be ran both from the root of the source tree and from ./debian directory
|
|
dir_start="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
if [ "$(basename "${dir_start}")" = 'debian' ]; then
|
|
cd ..
|
|
fi
|
|
|
|
debian/rules clean
|
|
dir0="$(pwd)"
|
|
old_header=$(head -1 ./debian/changelog)
|
|
old_format_source=$(cat ./debian/source/format)
|
|
tmp_suffix="buildPPA_$(date +%s)_tmp"
|
|
|
|
for i in xenial bionic focal groovy hirsute
|
|
do
|
|
old_version="$(cat ./debian/changelog | head -n 1 | awk -F "(" '{print $2}' | awk -F ")" '{print $1}')"
|
|
new_version="${old_version}~${i}1"
|
|
real_version="$(echo "$old_version" | cut -d'-' -f1)"
|
|
sed -i -re "s/${old_version}/${new_version}/g" ./debian/changelog
|
|
sed -i -re "1s/unstable/$i/" ./debian/changelog
|
|
if grep -q '(git)' ./debian/source/format; then
|
|
GIT=1
|
|
old_source_format="$(cat ./debian/source/format)"
|
|
# TODO: Launchpad PPA does not accept in '3.0 (git)' for some reasons
|
|
rm -fv ./debian/source/format
|
|
git add .
|
|
# dpkg-buildpackage also tries to diff current git vs tarball if it finds it in ../
|
|
while read line
|
|
do
|
|
# TODO: check if target file already exists
|
|
mv -v "$line" "${line}.${tmp_suffix}"
|
|
done < <(find ../ -maxdepth 1 -name "${pkg_name}_${real_version}.orig.tar*")
|
|
fi
|
|
# -I to exclude .git; -d to allow building .changes file without build dependencies installed
|
|
dpkg-buildpackage -I -S -sa -d
|
|
sed -i -re "1s/.*/${old_header}/" ./debian/changelog
|
|
[ "$GIT" = 1 ] && git reset
|
|
[ -n "$old_source_format" ] && echo "$old_source_format" > ./debian/source/format
|
|
|
|
# dpkg-buildpackage also tries to diff current git vs tarball if it finds it in ../
|
|
while read line
|
|
do
|
|
new_name="$(echo "$line" | sed -e "s/.${tmp_suffix}$//g")"
|
|
# TODO: check if target file already exists
|
|
mv -v "$line" "$new_name"
|
|
done < <(find ../ -maxdepth 1 -name "*.${tmp_suffix}")
|
|
|
|
cd ..
|
|
|
|
# change PPA names to yours, you may leave only one PPA; I upload pulseeffects to 2 different PPAs at the same time
|
|
for ppa_name in ppa:mikhailnov/utils
|
|
do
|
|
# example file name: pulseeffects_4.4.3-1~bionic1_source.changes
|
|
if [ -f "${pkg_name}_${new_version}_source.changes" ]
|
|
then dput -f "$ppa_name" "${pkg_name}_${new_version}_source.changes"
|
|
else echo ".changes file ${pkg_name}_${new_version}_source.changes not found, not uploading anything!"
|
|
fi
|
|
done
|
|
|
|
cd "$dir0"
|
|
sleep 1
|
|
done
|
|
|
|
debian/rules clean
|
|
cd "$dir_start"
|