-
Notifications
You must be signed in to change notification settings - Fork 0
/
start.sh
125 lines (87 loc) · 3.51 KB
/
start.sh
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
#!/bin/bash
# ######################################################################
# ######################################################################
#
# IPK PACK
# Packs a given package folder to a timestamped ipk file
#
# ######################################################################
# ######################################################################
# ######################################################################
# ######################################################################
#
# VARIABLES
#
# ######################################################################
# ######################################################################
set -e
INPUT_INPUT=${INPUT_INPUT:-'.'}
INPUT_OUTPUT=${INPUT_OUTPUT:-'.'}
INPUT_TIMESTAMP=${INPUT_TIMESTAMP:-''}
INPUT_TIMESTAMP_PATCH=${INPUT_TIMESTAMP_PATCH:-''}
pkgcontrol="${INPUT_INPUT}/control/control"
# ######################################################################
# ######################################################################
#
# TIMESTAMPING AND PACKAGING
#
# ######################################################################
# ######################################################################
echo "Packing $INPUT_INPUT"
# ######################################################################
echo "Reading package control"
if ! pkgname=$(cat "$pkgcontrol" | grep -oP "Package: \K.*"); then echo "Failed to determine package name."; exit 2; fi
pkgoutput=$(realpath "${INPUT_OUTPUT}")"/${pkgname}.ipk"
echo "Packing $INPUT_INPUT to ${pkgname}.ipk"
# ######################################################################
if [ "$INPUT_TIMESTAMP" == "1" ]; then
echo "Updating SourceDateEpoch to $pkgdate"
sed -i '/^SourceDateEpoch: .*/d' "$pkgcontrol"
pkgdate=$(date +%s)
echo "SourceDateEpoch: $pkgdate" >> "$pkgcontrol"
echo "SourceDateEpoch updated"
fi
# ######################################################################
if [ "$INPUT_TIMESTAMP_PATCH" == "1" ]; then
echo "Updating Version Patch to $pkgdate"
pkgversion=""
if ! pkgversion=$(cat "$pkgcontrol" | grep -oP "Version: \K.*"); then echo "No version found, setting to 0.0.0"; pkgversion="0.0.0"; fi
pkgversion=$(echo "$pkgversion" | grep -o "Version: .*\..*\.")"$pkgdate"
echo "Updating Version to $pkgversion"
sed -i '/^Version: .*/d' ./Packages
echo "$pkgversion" >> ./Packages
echo "Version updated"
fi
# ######################################################################
opwd="$(pwd)"
cd "$INPUT_INPUT"
# ######################################################################
echo "Packing control ..."
cd "control"
tar czvf "../control.tar.gz" "."
cd ..
echo "Done."
# ######################################################################
echo "Packing data ..."
cd "data"
tar czvf "../data.tar.gz" "."
cd ..
echo "Done."
# ######################################################################
echo "Checking debian-binary..."
if [ ! -f "./debian-binary" ]; then echo "2.0" > "./debian-binary"; fi
echo "Done."
# ######################################################################
echo "Packing ${pkgoutput} ..."
tar czvf "${pkgoutput}" "control.tar.gz" "data.tar.gz" "debian-binary"
echo "Done."
# ######################################################################
echo "Cleaning up ..."
rm "control.tar.gz"
rm "data.tar.gz"
echo "Done."
# ######################################################################
cd "$opwd"
# ######################################################################
echo "Successfully packed $pkgname"
exit 0