futriix/pkg/deb/deb-builder.sh
benschermel dbde8a3398 add package utilities
Former-commit-id: b4b35cf904cd690cace4fe3cd1fe8accf118c9a4
2020-06-08 15:34:22 -04:00

184 lines
15 KiB
Bash
Executable File

#! /bin/bash
#### grab build and architecture
build=$(lsb_release -c | awk '{ printf $2 }')
arch=$(dpkg --print-architecture)
# Ensure this script covers build
if [ "$arch" != "arm64" ] && [ "$arch" != "amd64" ]; then
echo "deb packages are currently only available for arm64 and amd64. You are attempting to build using a: $arch architecture"
exit 2
fi
if [ "$build" != "bionic" ] && [ "$build" != "xenial" ]; then
echo "deb packages are currently only available for xenial and bionic builds. You are attempting to build using a: $build distribution"
exit 2
fi
if [ $# -eq 0 ]; then
version=0.0.0
fi
if [ $# -gt 0 ]; then
version=$1
fi
#### create the empty directories github would have removed
mkdir $PWD/deb_source/sentinel/usr/bin
mkdir $PWD/deb_source/tools/usr/bin
####### move updated keydb files to their respective locations for build
cp ../../src/keydb* ./deb_source/tools/usr/bin/
# wget keydb-pro-server -O ./deb_source/tools/usr/bin/
cp ./conf/keydb.conf ./deb_source/server/etc/keydb/
cp ./conf/sentinel.conf ./deb_source/sentinel/etc/keydb/
# Updated changelog will be implemented with build type updated if needed
if [ "$build" == "xenial" ]; then
sed -i 's/bionic/xenial/g' ./changelog.Debian
fi
if [ "$build" == "bionic" ]; then
sed -i 's/xenial/bionic/g' ./changelog.Debian
fi
gzip ./changelog.Debian
cp ./changelog.Debian.gz $PWD/deb_source/tools/usr/share/doc/keydb-tools/
cp ./changelog.Debian.gz $PWD/deb_source/server/usr/share/doc/keydb-server/
cp ./changelog.Debian.gz $PWD/deb_source/sentinel/usr/share/doc/keydb-sentinel/
cp ./changelog.Debian.gz $PWD/deb_source/all/usr/share/doc/keydb
gzip -d ./changelog.Debian.gz
# remove any old deb packages
rm $PWD/deb_files_generated/*
# update the systemd service file parameters depending on build type. Some options ar not available for xenial
if [ "$build" == "xenial" ]; then
# if not already commented out, for xenial comment out the following unavailable systemd options
sed -e '/ProtectKernelModules/ s/^#*/#/' -i $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -e '/ProtectKernelTunables/ s/^#*/#/' -i $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -e '/ProtectControlGroups/ s/^#*/#/' -i $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -e '/RestrictRealtime/ s/^#*/#/' -i $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -e '/RestrictNamespaces/ s/^#*/#/' -i $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -e '/ProtectKernelModules/ s/^#*/#/' -i $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
sed -e '/ProtectKernelTunables/ s/^#*/#/' -i $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
sed -e '/ProtectControlGroups/ s/^#*/#/' -i $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
sed -e '/RestrictRealtime/ s/^#*/#/' -i $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
sed -e '/RestrictNamespaces/ s/^#*/#/' -i $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
fi
if [ "$build" == "bionic" ]; then
# if bionic, ensure the optios are available incase commented out from xenial
sed -i '/ProtectKernelModules/s/^#//g' $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -i '/ProtectKernelTunables/s/^#//g' $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -i '/ProtectControlGroups/s/^#//g' $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -i '/RestrictRealtime/s/^#//g' $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -i '/RestrictNamespaces/s/^#//g' $PWD/deb_source/server/lib/systemd/system/keydb-server.service
sed -i '/ProtectKernelModules/s/^#//g' $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
sed -i '/ProtectKernelTunables/s/^#//g' $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
sed -i '/ProtectControlGroups/s/^#//g' $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
sed -i '/RestrictRealtime/s/^#//g' $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
sed -i '/RestrictNamespaces/s/^#//g' $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service
fi
################################################### create keydb common (all) deb package ################################################################
######## create an updated md5sum file ############
rm $PWD/deb_source/all/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/all/usr/share/doc/keydb/NEWS.Debian.gz | cut -d' ' -f1))' usr/share/doc/keydb/NEWS.Debian.gz' >> $PWD/deb_source/all/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/all/usr/share/doc/keydb/changelog.Debian.gz | cut -d' ' -f1))' usr/share/doc/keydb/changelog.Debian.gz' >> $PWD/deb_source/all/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/all/usr/share/doc/keydb/changelog.gz | cut -d' ' -f1))' usr/share/doc/keydb/changelog.gz' >> $PWD/deb_source/all/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/all/usr/share/doc/keydb/copyright | cut -d' ' -f1))' usr/share/doc/keydb/copyright' >> $PWD/deb_source/all/DEBIAN/md5sums
######## update control file ###########
# Remove version line and add a new one with updated version
sed -i '2d' $PWD/deb_source/all/DEBIAN/control
sed -i -E "1a\Version: 5:$version-1chl1~"$build"1" $PWD/deb_source/all/DEBIAN/control
sed -i '6d' $PWD/deb_source/all/DEBIAN/control
sed -i -E "5a\Depends: keydb-server (<< 5:$version-1chl1~"$build"1.1~), keydb-server (>= 5:$version-1chl1~"$build"1)" $PWD/deb_source/all/DEBIAN/control
######## create new deb package ###########
dpkg-deb -b ./deb_source/all ./deb_files_generated/keydb_$version-1chl1~"$build"1_all.deb
################################################### create keydb-tools deb package ################################################################
######## create an updated md5sum file ############
rm $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/bin/keydb-benchmark | cut -d' ' -f1))' usr/bin/keydb-benchmark' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/bin/keydb-check-aof | cut -d' ' -f1))' usr/bin/keydb-check-aof' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/bin/keydb-check-rdb | cut -d' ' -f1))' usr/bin/keydb-check-rdb' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/bin/keydb-server | cut -d' ' -f1))' usr/bin/keydb-server' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/bin/keydb-pro-server | cut -d' ' -f1))' usr/bin/keydb-pro-server' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/bin/keydb-cli | cut -d' ' -f1))' usr/bin/keydb-cli' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/bash-completion/completions/keydb-cli | cut -d' ' -f1))' usr/share/bash-completion/completions/keydb-cli' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/doc/keydb-tools/NEWS.Debian.gz | cut -d' ' -f1))' usr/share/doc/keydb-tools/NEWS.Debian.gz' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/doc/keydb-tools/changelog.Debian.gz | cut -d' ' -f1))' usr/share/doc/keydb-tools/changelog.Debian.gz' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/doc/keydb-tools/changelog.gz | cut -d' ' -f1))' usr/share/doc/keydb-tools/changelog.gz' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/doc/keydb-tools/copyright | cut -d' ' -f1))' usr/share/doc/keydb-tools/copyright' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/doc/keydb-tools/examples/lru/README | cut -d' ' -f1))' usr/share/doc/keydb-tools/examples/lru/README' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/doc/keydb-tools/examples/lru/lfu-simulation.c.gz | cut -d' ' -f1))' usr/share/doc/keydb-tools/examples/lru/lfu-simulation.c.gz' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/doc/keydb-tools/examples/lru/test-lru.rb.gz | cut -d' ' -f1))' usr/share/doc/keydb-tools/examples/lru/test-lru.rb.gz' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/doc/keydb-tools/examples/redis-trib.rb | cut -d' ' -f1))' usr/share/doc/keydb-tools/examples/redis-trib.rb' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/man/man1/keydb-benchmark.1.gz | cut -d' ' -f1))' usr/share/man/man1/keydb-benchmark.1.gz' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/man/man1/keydb-check-aof.1.gz | cut -d' ' -f1))' usr/share/man/man1/keydb-check-aof.1.gz' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/man/man1/keydb-check-rdb.1.gz | cut -d' ' -f1))' usr/share/man/man1/keydb-check-rdb.1.gz' >> $PWD/deb_source/tools/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/tools/usr/share/man/man1/keydb-cli.1.gz | cut -d' ' -f1))' usr/share/man/man1/keydb-cli.1.gz' >> $PWD/deb_source/tools/DEBIAN/md5sums
######## update control file ###########
# Remove version line and add a new one with updated version
sed -i '3d' $PWD/deb_source/tools/DEBIAN/control
sed -i -E "2a\Version: 5:$version-1chl1~"$build"1" $PWD/deb_source/tools/DEBIAN/control
sed -i '4d' $PWD/deb_source/tools/DEBIAN/control
sed -i -E "3a\Architecture: $arch" $PWD/deb_source/tools/DEBIAN/control
if [ "$build" == "bionic" ]; then
sed -i '7d' $PWD/deb_source/tools/DEBIAN/control
sed -i -E "6a\Depends: adduser, libc6 (>= 2.17), libcurl4 (>= 7.16.2), libgcc1 (>= 1:3.0), libstdc++6 (>= 4.8.1), libuuid1 (>= 2.16), libssl1.1 (>= 1.1.1), zlib1g (>=1.2.11)" $PWD/deb_source/tools/DEBIAN/control
fi
if [ "$build" == "xenial" ]; then
sed -i '7d' $PWD/deb_source/tools/DEBIAN/control
sed -i -E "6a\Depends: adduser, libc6 (>= 2.23), libcurl3 (>= 7.47.0), libgcc1 (>= 6.0.1), libstdc++6 (>= 5.4.0), libuuid1 (>= 2.27.1), libssl1.0.0 (>= 1.0.2), zlib1g (>=1.2.8)" $PWD/deb_source/tools/DEBIAN/control
fi
######## create new deb package ###########
dpkg-deb -b ./deb_source/tools ./deb_files_generated/keydb-tools_$version-1chl1~"$build"1_$arch.deb
################################################### create keydb-server deb package ################################################################
######## create an updated md5sum file ############
rm $PWD/deb_source/server/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/server/lib/systemd/system/keydb-server.service | cut -d' ' -f1))' lib/systemd/system/keydb-server.service' >> $PWD/deb_source/server/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/server/usr/share/doc/keydb-server/NEWS.Debian.gz | cut -d' ' -f1))' usr/share/doc/keydb-server/NEWS.Debian.gz' >> $PWD/deb_source/server/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/server/usr/share/doc/keydb-server/README.md.gz | cut -d' ' -f1))' usr/share/doc/keydb-server/README.md.gz' >> $PWD/deb_source/server/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/server/usr/share/doc/keydb-server/changelog.Debian.gz | cut -d' ' -f1))' usr/share/doc/keydb-server/changelog.Debian.gz' >> $PWD/deb_source/server/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/server/usr/share/doc/keydb-server/changelog.gz | cut -d' ' -f1))' usr/share/doc/keydb-server/changelog.gz' >> $PWD/deb_source/server/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/server/usr/share/doc/keydb-server/copyright | cut -d' ' -f1))' usr/share/doc/keydb-server/copyright' >> $PWD/deb_source/server/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/server/usr/share/man/man1/keydb-server.1.gz | cut -d' ' -f1))' usr/share/man/man1/keydb-server.1.gz' >> $PWD/deb_source/server/DEBIAN/md5sums
######## update control file ###########
# Remove version line and add a new one with updated version
sed -i '3d' $PWD/deb_source/server/DEBIAN/control
sed -i -E "2a\Version: 5:$version-1chl1~"$build"1" $PWD/deb_source/server/DEBIAN/control
sed -i '7d' $PWD/deb_source/server/DEBIAN/control
sed -i -E "6a\Depends: lsb-base (>= 3.2-14), keydb-tools (= 5:$version-1chl1~"$build"1)" $PWD/deb_source/server/DEBIAN/control
sed -i '4d' $PWD/deb_source/server/DEBIAN/control
sed -i -E "3a\Architecture: $arch" $PWD/deb_source/server/DEBIAN/control
######## create new deb package ###########
dpkg-deb -b ./deb_source/server ./deb_files_generated/keydb-server_$version-1chl1~"$build"1_$arch.deb
################################################### create keydb-sentinel deb package ################################################################
######## create an updated md5sum file ############
rm $PWD/deb_source/sentinel/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/sentinel/lib/systemd/system/keydb-sentinel.service | cut -d' ' -f1))' lib/systemd/system/keydb-sentinel.service' >> $PWD/deb_source/sentinel/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/sentinel/usr/share/doc/keydb-sentinel/NEWS.Debian.gz | cut -d' ' -f1))' usr/share/doc/keydb-sentinel/NEWS.Debian.gz' >> $PWD/deb_source/sentinel/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/sentinel/usr/share/doc/keydb-sentinel/changelog.Debian.gz | cut -d' ' -f1))' usr/share/doc/keydb-sentinel/changelog.Debian.gz' >> $PWD/deb_source/sentinel/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/sentinel/usr/share/doc/keydb-sentinel/changelog.gz | cut -d' ' -f1))' usr/share/doc/keydb-sentinel/changelog.gz' >> $PWD/deb_source/sentinel/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/sentinel/usr/share/doc/keydb-sentinel/copyright | cut -d' ' -f1))' usr/share/doc/keydb-sentinel/copyright' >> $PWD/deb_source/sentinel/DEBIAN/md5sums
echo $(echo $(md5sum $PWD/deb_source/sentinel/usr/share/man/man1/keydb-sentinel.1.gz | cut -d' ' -f1))' usr/share/man/man1/keydb-sentinel.1.gz' >> $PWD/deb_source/sentinel/DEBIAN/md5sums
######## update control file ###########
# Remove version line and add a new one with updated version
sed -i '3d' $PWD/deb_source/sentinel/DEBIAN/control
sed -i -E "2a\Version: 5:$version-1chl1~"$build"1" $PWD/deb_source/sentinel/DEBIAN/control
sed -i '7d' $PWD/deb_source/sentinel/DEBIAN/control
sed -i -E "6a\Depends: lsb-base (>= 3.2-14), keydb-tools (= 5:$version-1chl1~"$build"1)" $PWD/deb_source/sentinel/DEBIAN/control
sed -i '4d' $PWD/deb_source/sentinel/DEBIAN/control
sed -i -E "3a\Architecture: $arch" $PWD/deb_source/sentinel/DEBIAN/control
######## create new deb package ###########
dpkg-deb -b ./deb_source/sentinel ./deb_files_generated/keydb-sentinel_$version-1chl1~"$build"1_$arch.deb