File: ci-create-debian-package.sh

package info (click to toggle)
zsv 1.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 49,160 kB
  • sloc: ansic: 175,811; cpp: 56,301; sh: 3,623; makefile: 3,048; javascript: 577; cs: 90; awk: 70; python: 41; sql: 15
file content (112 lines) | stat: -rwxr-xr-x 2,946 bytes parent folder | download
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] ---"