dist/debian: use relocatable package to produce .deb
This commit is contained in:
parent
5edfedf642
commit
e9bfbedfed
86
dist/debian/build_deb.sh
vendored
86
dist/debian/build_deb.sh
vendored
|
@ -4,15 +4,16 @@ PRODUCT=scylla
|
||||||
|
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
print_usage() {
|
print_usage() {
|
||||||
echo "build_deb.sh -target <codename>"
|
echo "build_deb.sh --reloc-pkg build/scylla-jmx-package.tar.gz"
|
||||||
echo " --target target distribution codename"
|
echo " --reloc-pkg specify relocatable package path"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
TARGET=
|
TARGET=stable
|
||||||
|
RELOC_PKG=
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"--target")
|
"--reloc-pkg")
|
||||||
TARGET=$2
|
RELOC_PKG=$2
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -52,15 +53,25 @@ pkg_install() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ ! -e dist/debian/build_deb.sh ]; then
|
if [ ! -e SCYLLA-RELOCATABLE-FILE ]; then
|
||||||
echo "run build_deb.sh in top of scylla dir"
|
echo "do not directly execute build_rpm.sh, use reloc/build_rpm.sh instead."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$(arch)" != "x86_64" ]; then
|
if [ "$(arch)" != "x86_64" ]; then
|
||||||
echo "Unsupported architecture: $(arch)"
|
echo "Unsupported architecture: $(arch)"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ -z "$RELOC_PKG" ]; then
|
||||||
|
print_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ ! -f "$RELOC_PKG" ]; then
|
||||||
|
echo "$RELOC_PKG is not found."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -e debian ] || [ -e build/release ]; then
|
if [ -e debian ] || [ -e build/release ]; then
|
||||||
sudo rm -rf debian build
|
sudo rm -rf debian build
|
||||||
mkdir build
|
mkdir build
|
||||||
|
@ -79,15 +90,15 @@ fi
|
||||||
if [ ! -f /usr/bin/python ]; then
|
if [ ! -f /usr/bin/python ]; then
|
||||||
pkg_install python
|
pkg_install python
|
||||||
fi
|
fi
|
||||||
if [ ! -f /usr/sbin/pbuilder ]; then
|
if [ ! -f /usr/sbin/debuild ]; then
|
||||||
pkg_install pbuilder
|
pkg_install devscripts
|
||||||
fi
|
|
||||||
if [ ! -f /usr/bin/mvn ]; then
|
|
||||||
pkg_install maven
|
|
||||||
fi
|
fi
|
||||||
if [ ! -f /usr/bin/dh_testdir ]; then
|
if [ ! -f /usr/bin/dh_testdir ]; then
|
||||||
pkg_install debhelper
|
pkg_install debhelper
|
||||||
fi
|
fi
|
||||||
|
if [ ! -f /usr/bin/fakeroot ]; then
|
||||||
|
pkg_install fakeroot
|
||||||
|
fi
|
||||||
if [ ! -f /usr/bin/pystache ]; then
|
if [ ! -f /usr/bin/pystache ]; then
|
||||||
if is_redhat_variant; then
|
if is_redhat_variant; then
|
||||||
sudo yum install -y /usr/bin/pystache
|
sudo yum install -y /usr/bin/pystache
|
||||||
|
@ -103,60 +114,27 @@ if [ "$ID" = "debian" ] && [ ! -f /usr/share/keyrings/ubuntu-archive-keyring.gpg
|
||||||
sudo apt-get install -y ubuntu-archive-keyring
|
sudo apt-get install -y ubuntu-archive-keyring
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$TARGET" ]; then
|
RELOC_PKG_FULLPATH=$(readlink -f $RELOC_PKG)
|
||||||
if is_debian_variant; then
|
RELOC_PKG_BASENAME=$(basename $RELOC_PKG)
|
||||||
if [ ! -f /usr/bin/lsb_release ]; then
|
SCYLLA_VERSION=$(cat SCYLLA-VERSION-FILE | sed 's/\.rc/~rc/')
|
||||||
pkg_install lsb-release
|
SCYLLA_RELEASE=$(cat SCYLLA-RELEASE-FILE)
|
||||||
fi
|
|
||||||
TARGET=`lsb_release -c|awk '{print $2}'`
|
|
||||||
else
|
|
||||||
echo "Please specify target"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
VERSION=$(./SCYLLA-VERSION-GEN)
|
ln -fv $RELOC_PKG_FULLPATH ../$PRODUCT-jmx_$SCYLLA_VERSION-$SCYLLA_RELEASE.orig.tar.gz
|
||||||
SCYLLA_VERSION=$(cat build/SCYLLA-VERSION-FILE | sed 's/\.rc/~rc/')
|
|
||||||
SCYLLA_RELEASE=$(cat build/SCYLLA-RELEASE-FILE)
|
|
||||||
echo $VERSION > version
|
|
||||||
./scripts/git-archive-all --extra version --force-submodules --prefix $PRODUCT-jmx ../$PRODUCT-jmx_$SCYLLA_VERSION-$SCYLLA_RELEASE.orig.tar.gz
|
|
||||||
|
|
||||||
cp -a dist/debian/debian debian
|
cp -al dist/debian/debian debian
|
||||||
if [ "$PRODUCT" != "scylla" ]; then
|
if [ "$PRODUCT" != "scylla" ]; then
|
||||||
for i in debian/scylla-*;do
|
for i in debian/scylla-*;do
|
||||||
mv $i ${i/scylla-/$PRODUCT-}
|
mv $i ${i/scylla-/$PRODUCT-}
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if is_debian $TARGET; then
|
|
||||||
REVISION="1~$TARGET"
|
|
||||||
elif is_ubuntu $TARGET; then
|
|
||||||
REVISION="0ubuntu1~$TARGET"
|
|
||||||
else
|
|
||||||
echo "Unknown distribution: $TARGET"
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
REVISION="1"
|
||||||
MUSTACHE_DIST="\"debian\": true, \"$TARGET\": true, \"product\": \"$PRODUCT\", \"$PRODUCT\": true"
|
MUSTACHE_DIST="\"debian\": true, \"$TARGET\": true, \"product\": \"$PRODUCT\", \"$PRODUCT\": true"
|
||||||
pystache dist/debian/changelog.mustache "{ $MUSTACHE_DIST, \"version\": \"$SCYLLA_VERSION\", \"release\": \"$SCYLLA_RELEASE\", \"revision\": \"$REVISION\", \"codename\": \"$TARGET\" }" > debian/changelog
|
pystache dist/debian/changelog.mustache "{ $MUSTACHE_DIST, \"version\": \"$SCYLLA_VERSION\", \"release\": \"$SCYLLA_RELEASE\", \"revision\": \"$REVISION\", \"codename\": \"$TARGET\" }" > debian/changelog
|
||||||
pystache dist/debian/rules.mustache "{ $MUSTACHE_DIST }" > debian/rules
|
pystache dist/debian/rules.mustache "{ $MUSTACHE_DIST }" > debian/rules
|
||||||
chmod a+rx debian/rules
|
chmod a+rx debian/rules
|
||||||
pystache dist/debian/control.mustache "{ $MUSTACHE_DIST }" > debian/control
|
pystache dist/debian/control.mustache "{ $MUSTACHE_DIST }" > debian/control
|
||||||
|
|
||||||
if [ "$TARGET" != "trusty" ]; then
|
pystache dist/common/systemd/scylla-jmx.service.mustache "{ $MUSTACHE_DIST }" > debian/scylla-jmx.service
|
||||||
pystache dist/common/systemd/scylla-jmx.service.mustache "{ $MUSTACHE_DIST }" > debian/scylla-jmx.service
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo rm -fv /var/cache/pbuilder/$PRODUCT-jmx-$TARGET.tgz
|
debuild -rfakeroot -us -uc
|
||||||
sudo PRODUCT=$PRODUCT DIST=$TARGET /usr/sbin/pbuilder clean --configfile ./dist/debian/pbuilderrc
|
|
||||||
sudo PRODUCT=$PRODUCT DIST=$TARGET /usr/sbin/pbuilder create --configfile ./dist/debian/pbuilderrc
|
|
||||||
sudo PRODUCT=$PRODUCT DIST=$TARGET /usr/sbin/pbuilder update --configfile ./dist/debian/pbuilderrc
|
|
||||||
if [ "$TARGET" = "jessie" ]; then
|
|
||||||
echo "apt-get install -y -t jessie-backports ca-certificates-java" > build/jessie-pkginst.sh
|
|
||||||
chmod a+rx build/jessie-pkginst.sh
|
|
||||||
sudo PRODUCT=$PRODUCT DIST=$TARGET /usr/sbin/pbuilder execute --configfile ./dist/debian/pbuilderrc build/jessie-pkginst.sh
|
|
||||||
elif [ "$TARGET" = "bionic" ]; then
|
|
||||||
echo "apt-get install -y ca-certificates-java openjdk-8-jdk-headless" > build/bionic-workaround.sh
|
|
||||||
echo "update-ca-certificates -f" >> build/bionic-workaround.sh
|
|
||||||
chmod a+rx build/bionic-workaround.sh
|
|
||||||
sudo PRODUCT=$PRODUCT DIST=$TARGET /usr/sbin/pbuilder execute --configfile ./dist/debian/pbuilderrc --save-after-exec build/bionic-workaround.sh
|
|
||||||
fi
|
|
||||||
sudo PRODUCT=$PRODUCT DIST=$TARGET pdebuild --configfile ./dist/debian/pbuilderrc --buildresult build/debs
|
|
||||||
|
|
1
dist/debian/control.mustache
vendored
1
dist/debian/control.mustache
vendored
|
@ -4,7 +4,6 @@ Homepage: http://scylladb.com
|
||||||
Section: database
|
Section: database
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Standards-Version: 3.9.5
|
Standards-Version: 3.9.5
|
||||||
Build-Depends: debhelper (>= 9), maven, openjdk-8-jdk-headless
|
|
||||||
|
|
||||||
Package: {{product}}-jmx
|
Package: {{product}}-jmx
|
||||||
Architecture: all
|
Architecture: all
|
||||||
|
|
16
dist/debian/rules.mustache
vendored
16
dist/debian/rules.mustache
vendored
|
@ -5,10 +5,8 @@ DEST = $(CURDIR)/debian/{{product}}-jmx/usr/lib/scylla/jmx
|
||||||
M2_REPO= $(CURDIR)/m2
|
M2_REPO= $(CURDIR)/m2
|
||||||
|
|
||||||
override_dh_auto_build:
|
override_dh_auto_build:
|
||||||
mvn -B -Dmaven.repo.local=$(M2_REPO) install
|
|
||||||
|
|
||||||
override_dh_auto_clean:
|
override_dh_auto_clean:
|
||||||
rm -rf target m2
|
|
||||||
|
|
||||||
override_dh_auto_install:
|
override_dh_auto_install:
|
||||||
mkdir -p $(CURDIR)/debian/{{product}}-jmx/etc/default/ && \
|
mkdir -p $(CURDIR)/debian/{{product}}-jmx/etc/default/ && \
|
||||||
|
@ -20,28 +18,18 @@ override_dh_auto_install:
|
||||||
cp $(CURDIR)/NOTICE $(DOC)
|
cp $(CURDIR)/NOTICE $(DOC)
|
||||||
|
|
||||||
mkdir -p $(DEST)
|
mkdir -p $(DEST)
|
||||||
cp $(CURDIR)/scripts/scylla-jmx $(DEST)
|
cp $(CURDIR)/scylla-jmx $(DEST)
|
||||||
cp $(CURDIR)/target/scylla-jmx-1.0.jar $(DEST)
|
cp $(CURDIR)/scylla-jmx-1.0.jar $(DEST)
|
||||||
mkdir $(DEST)/symlinks
|
mkdir $(DEST)/symlinks
|
||||||
ln -sf /usr/bin/java $(DEST)/symlinks/scylla-jmx
|
ln -sf /usr/bin/java $(DEST)/symlinks/scylla-jmx
|
||||||
|
|
||||||
override_dh_installinit:
|
override_dh_installinit:
|
||||||
{{#trusty}}
|
|
||||||
{{#scylla}}
|
|
||||||
dh_installinit --no-start --upstart-only
|
|
||||||
{{/scylla}}
|
|
||||||
{{^scylla}}
|
|
||||||
dh_installinit --no-start --name scylla-jmx --upstart-only
|
|
||||||
{{/scylla}}
|
|
||||||
{{/trusty}}
|
|
||||||
{{^trusty}}
|
|
||||||
{{#scylla}}
|
{{#scylla}}
|
||||||
dh_installinit --no-start
|
dh_installinit --no-start
|
||||||
{{/scylla}}
|
{{/scylla}}
|
||||||
{{^scylla}}
|
{{^scylla}}
|
||||||
dh_installinit --no-start --name scylla-jmx
|
dh_installinit --no-start --name scylla-jmx
|
||||||
{{/scylla}}
|
{{/scylla}}
|
||||||
{{/trusty}}
|
|
||||||
|
|
||||||
%:
|
%:
|
||||||
dh $@
|
dh $@
|
||||||
|
|
31
reloc/build_deb.sh
Executable file
31
reloc/build_deb.sh
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
. /etc/os-release
|
||||||
|
print_usage() {
|
||||||
|
echo "build_deb.sh --reloc-pkg build/scylla-jmx-package.tar.gz"
|
||||||
|
echo " --reloc-pkg specify relocatable package path"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
RELOC_PKG=$(readlink -f build/scylla-jmx-package.tar.gz)
|
||||||
|
OPTS=""
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
"--reloc-pkg")
|
||||||
|
OPTS="$OPTS $1 $(readlink -f $2)"
|
||||||
|
RELOC_PKG=$2
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
print_usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ ! $OPTS =~ --reloc-pkg ]]; then
|
||||||
|
OPTS="$OPTS --reloc-pkg $RELOC_PKG"
|
||||||
|
fi
|
||||||
|
mkdir -p build/debian/scylla-package
|
||||||
|
tar -C build/debian/scylla-package -xpf $RELOC_PKG
|
||||||
|
cd build/debian/scylla-package
|
||||||
|
exec ./dist/debian/build_deb.sh $OPTS
|
Loading…
Reference in New Issue
Block a user