1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
#!/bin/bash
### Build using:
# DIST=ubuntu_bionic
# IMAGE=build-oidc-agent-ubuntu:bionic
# DIST=fedora_34
# IMAGE=build-oidc-agent-fedora:34
# docker run -it --rm -v `dirname $PWD`:/home/build $IMAGE /home/build/`basename $PWD`/docker/docker-build.sh `basename $PWD` $DIST
## ASSUMPTION: /home/build/$PACKAGE_DIR holds the sources for the package to be built
## ASSUMPTION: /home/build is on the host system.
## ASSUMPTION: /home/build/results is on the host system.
BASE="/home/build"
PACKAGE_DIR=$1
DIST=$2
ACTION=$3
OUTPUT="$BASE/results"
echo "===================================================================="
echo "=========docker-build.sh============================================"
echo "export BASE=$BASE"
echo "export PACKAGE_DIR=$PACKAGE_DIR"
echo "export DIST=$DIST"
echo "export ACTION=$ACTION"
echo "export OUTPUT=$OUTPUT"
test -z $DIST && {
echo "Must specify DIST as 2nd parameter"
exit
}
common_prepare_dirs() {
mkdir -p /tmp/build
mkdir -p $OUTPUT/$DIST
cp -af $BASE/$PACKAGE_DIR /tmp/build
cd /tmp/build/$PACKAGE_DIR
}
common_fix_output_permissions() {
UP_UID=`stat -c '%u' $BASE`
UP_GID=`stat -c '%g' $BASE`
chown $UP_UID:$UP_GID $OUTPUT
chown -R $UP_UID:$UP_GID $OUTPUT/$DIST
}
bionic_build_package() {
make bionic-debsource && \
dpkg-buildpackage -uc -us
}
buster_build_package() {
make buster-debsource && \
dpkg-buildpackage -uc -us
}
focal_build_package() {
make focal-debsource && \
dpkg-buildpackage -uc -us
}
debian_build_package() {
make debsource && \
dpkg-buildpackage -uc -us
}
debian_copy_output() {
echo "Moving output:"
ls -l ..
mv ../${PACKAGE_DIR}[_-]* $OUTPUT/$DIST
mv ../lib* $OUTPUT/$DIST
}
rpm_centos7_patch() {
make centos7_patch
}
rpm_build_package() {
cd /tmp/build/$PACKAGE_DIR
make distclean
make rpmsource
make rpms
}
rpm_copy_output() {
ls -l rpm/rpmbuild/RPMS/*/*
ls -l rpm/rpmbuild/SRPMS/
echo "-----"
mv rpm/rpmbuild/RPMS/*/*rpm $OUTPUT/$DIST
mv rpm/rpmbuild/SRPMS/*rpm $OUTPUT/$DIST
}
###########################################################################
common_prepare_dirs
[ "x${ACTION}" == "xtest" ] && {
case "$DIST" in
debian_*|ubuntu_*)
echo -e "\n\ninstalling oidc-agent-cli and liboidc-agent4"
apt install -y \
$OUTPUT/$DIST/oidc-agent-cli_*deb \
$OUTPUT/$DIST/liboidc-agent4_*deb || exit 1
echo -e "\n\ninstalling oidc-agent-desktop"
apt install -y \
$OUTPUT/$DIST/oidc-agent-desktop_4*deb || exit 2
echo -e "\n\ninstalling liboidc-agent-dev"
apt install -y \
$OUTPUT/$DIST/liboidc-agent-dev_4*deb || exit 3
;;
fedora_*|centos_*)
echo -e "\n\ninstalling oidc-agent-cli and liboidc-agent4"
yum install -y \
$OUTPUT/$DIST/oidc-agent-cli-4*rpm \
$OUTPUT/$DIST/liboidc-agent4-4*rpm || exit 1
echo -e "\n\ninstalling oidc-agent-desktop"
yum install -y \
$OUTPUT/$DIST/oidc-agent-desktop-4*rpm || exit 2
echo -e "\n\ninstalling liboidc-agent-dev"
yum install -y \
$OUTPUT/$DIST/liboidc-agent-devel-4*rpm || exit 3
;;
opensuse_*)
echo -e "\n\ninstalling oidc-agent-cli and liboidc-agent4"
zypper -n --no-gpg-checks install \
$OUTPUT/$DIST/oidc-agent-cli-4*rpm \
$OUTPUT/$DIST/liboidc-agent4-4*rpm || exit 1
#echo -e "\n\ninstalling oidc-agent-desktop"
#zypper -n --no-gpg-checks install \
# $OUTPUT/$DIST/oidc-agent-desktop-4*rpm || exit 2
echo -e "\n\ninstalling liboidc-agent-dev"
zypper -n --no-gpg-checks install \
$OUTPUT/$DIST/liboidc-agent-devel-4*rpm || exit 3
;;
esac
}
[ "x${ACTION}" == "xtest" ] || {
case "$DIST" in
debian_bullseye|debian_bookworm)
debian_build_package
debian_copy_output
;;
debian_buster)
buster_build_package
debian_copy_output
;;
ubuntu_bionic)
bionic_build_package
debian_copy_output
;;
ubuntu_focal|ubuntu_hirsute|ubuntu_impish)
focal_build_package
debian_copy_output
;;
centos_7)
rpm_centos7_patch
rpm_build_package
rpm_copy_output
;;
centos_8|centos_7|fedora*)
rpm_build_package
rpm_copy_output
;;
opensuse_15*|opensuse_tumbleweed|sle*)
rpm_build_package
rpm_copy_output
;;
esac
common_fix_output_permissions
}
|