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
|
#!/bin/sh
set -e
echo "[INF] Running $0"
if [ "$TAG" = "" ] || [ "$PREFIX" = "" ] || [ "$ARTIFACT_DIR" = "" ]; then
echo "[ERR] One or more environment variable(s) are not set!"
echo "[ERR] Set TAG, PREFIX and ARTIFACT_DIR before running $0 script."
exit 1
fi
if [ ! -d "$PREFIX" ]; then
echo "[ERR] PREFIX directory not found! [$PREFIX]"
echo "[ERR] First build with PREFIX [$PREFIX] and then run $0."
exit 1
fi
if [ ! -d "$ARTIFACT_DIR" ]; then
echo "[ERR] Artifact directory not found! [$ARTIFACT_DIR]"
exit 1
fi
ARCH="$(echo "$PREFIX" | cut -d '-' -f1)"
VERSION="$TAG"
DEBIAN_PKG="$PREFIX.deb"
DEBIAN_DIR="$PREFIX/DEBIAN"
DEBIAN_CONTROL_FILE="$DEBIAN_DIR/control"
DEBIAN_PREINST_SCRIPT="$DEBIAN_DIR/preinst"
echo "[INF] Creating debian package [$DEBIAN_PKG]"
echo "[INF] PWD: $PWD"
echo "[INF] TAG: $TAG"
echo "[INF] PREFIX: $PREFIX"
echo "[INF] ARTIFACT_DIR: $ARTIFACT_DIR"
echo "[INF] ARCH: $ARCH"
echo "[INF] VERSION: $VERSION"
if file -b "$PREFIX/bin/zsv" | grep "dynamically linked" >/dev/null; then
echo "[INF] Listing linked libraries"
ldd "$PREFIX/bin/zsv"
fi
echo "[INF] Setting up debian package buildtree"
mkdir -p "$DEBIAN_DIR" "$PREFIX/usr"
echo "[INF] Copying build artifacts"
rm -rf "./$PREFIX/lib" "./$PREFIX/include"
mv -f "./$PREFIX/bin" "./$PREFIX/usr/"
echo "[INF] Creating control file [$DEBIAN_CONTROL_FILE]"
INSTALLED_SIZE="$(du -s -c "$PREFIX"/usr/* | grep 'total' | xargs | cut -d ' ' -f1)"
cat <<EOF >"$DEBIAN_CONTROL_FILE"
Package: zsv
Version: $VERSION
Section: extras
Priority: optional
Maintainer: Liquidaty <liquidaty@users.noreply.github.com>
Architecture: $ARCH
Description: zsv+lib: world's fastest CSV parser, with an extensible CLI
Homepage: https://github.com/liquidaty/zsv
Installed-Size: $INSTALLED_SIZE
EOF
ls -hl "$DEBIAN_CONTROL_FILE"
echo "[INF] Dumping [$DEBIAN_CONTROL_FILE]"
echo "[INF] --- [$DEBIAN_CONTROL_FILE] ---"
cat "$DEBIAN_CONTROL_FILE"
echo "[INF] --- [$DEBIAN_CONTROL_FILE] ---"
echo "[INF] Creating preinst script [$DEBIAN_CONTROL_FILE]"
cat <<EOF >"$DEBIAN_PREINST_SCRIPT"
#!/bin/sh
rm -rf /usr/bin/zsv
EOF
chmod +x "$DEBIAN_PREINST_SCRIPT"
ls -hl "$DEBIAN_PREINST_SCRIPT"
echo "[INF] Dumping [$DEBIAN_PREINST_SCRIPT]"
echo "[INF] --- [$DEBIAN_PREINST_SCRIPT] ---"
cat "$DEBIAN_PREINST_SCRIPT"
echo "[INF] --- [$DEBIAN_PREINST_SCRIPT] ---"
echo "[INF] Building debian package"
dpkg-deb --root-owner-group --build "$PREFIX"
dpkg --contents "$DEBIAN_PKG"
ls -hl "$DEBIAN_PKG"
mv -f "$DEBIAN_PKG" "$ARTIFACT_DIR/"
mv -f "./$PREFIX/usr/bin" "./$PREFIX/"
rm -rf "./$PREFIX/DEBIAN" "./$PREFIX/usr"
echo "[INF] Verifying debian package [$ARTIFACT_DIR/$DEBIAN_PKG]"
echo "[INF] Installing"
sudo apt install -y "./$ARTIFACT_DIR/$DEBIAN_PKG"
echo "[INF] Verifying installed package"
whereis zsv
zsv version
echo "[INF] Uninstalling"
sudo apt remove -y zsv
echo "[INF] --- [DONE] ---"
|