-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpackage
More file actions
executable file
·129 lines (109 loc) · 3.53 KB
/
package
File metadata and controls
executable file
·129 lines (109 loc) · 3.53 KB
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
#!/bin/sh
# package the script to package pax for various Linux distros
#
# created 2026/01/14 by Dave Henderson (support@cliquesoft.org)
# updated 2026/03/25 by Dave Henderson (support@cliquesoft.org)
( [ ! "$1" ] || [ "$1" = '--help' ] ) && {
echo
echo "Usage: ${0##*/} DISTRO"
echo
echo "Specify the target Linux distro to package for: generic, tc, xinix"
echo
exit
}
[ $(id -u) -gt 0 ] && {
echo
echo "ERROR: This script needs to run with elevated privileges."
echo " Try using the root account or running with 'sudo'."
echo
exit
}
( echo "$1" | grep -qE ^'(generic|tc|xinix)'$ ) || {
echo
echo "ERROR: The valid values for DISTRO are: generic, tc, xinix"
echo
exit
}
if [ "$1" = 'generic' ]; then
EXT_DEPS='deps'
EXT_HASH='hash'
EXT_INFO='info'
EXT_LIST='list'
EXT_SOFT='tgz'
elif [ "$1" = 'tc' ]; then
EXT_DEPS='tcz.dep'
EXT_HASH='tcz.md5.txt'
EXT_INFO='tcz.info'
EXT_LIST='tcz.list'
EXT_SOFT='tcz'
elif [ "$1" = 'xinix' ]; then
EXT_DEPS='bin.all.deps'
EXT_HASH='bin.all.hash'
EXT_INFO='bin.all.info'
EXT_LIST='bin.all.list'
EXT_SOFT='bin.all.soft'
fi
PROJECT='pax'
STAGING='/tmp/package'
LOG=/tmp/package.log
echo -n 'Creating staging directory:'
[ ! -d "$STAGING" ] && mkdir "$STAGING"
rm -Rf "${STAGING}/"*
echo ' [done]'
echo -n 'Copying package files:'
if [ "$1" = 'generic' ] || [ "$1" = 'tc' ]; then
# NOTE: the trailing '/..' goes one level higher
[ "$1" = 'generic' ] && cp -pL ${PROJECT}.${EXT_DEPS} "${STAGING}/.."
[ "$1" = 'generic' ] && cp -pL ${PROJECT}.${EXT_INFO} "${STAGING}/.."
[ "$1" = 'tc' ] && cp -p ${PROJECT}.${EXT_SOFT}.* "${STAGING}/.."
cp -pLR usr "$STAGING" # copy the /usr directory over
cp -pLR bin etc "${STAGING}/usr/local" # place these two directories inside /usr/local for TC compliance
elif [ "$1" = 'xinix' ]; then
cp ${PROJECT}.${EXT_DEPS} "${STAGING}/.."
cp ${PROJECT}.${EXT_INFO} "${STAGING}/.."
cp -dpR bin etc var "$STAGING"
fi
echo ' [done]'
echo -n 'Making package adjustments:'
if [ "$1" = 'generic' ]; then
chown -R 1000:1000 "${STAGING}/"* # NOTE: can't perform this step as the user, so this script needs to be run as root
cd "$STAGING"
cd usr/local/etc/${PROJECT} # NOTE: this is a separate command so we can use 'cd -'
rm -f config
rm -f testing.conf
elif [ "$1" = 'tc' ]; then
chown -R 0:50 "${STAGING}/"*
cd "$STAGING"
cd usr/local/etc/${PROJECT}
ln -sf tc-install.sh install
ln -sf tc-uninstall.sh uninstall
ln -sf tc.conf config
elif [ "$1" = 'xinix' ]; then
#chown -R 0:90 "${STAGING}/"* # LEFT OFF - implement this once XiniX gets its own users/groups
cd "$STAGING"
cd etc/${PROJECT}
ln -sf xinix.conf config # LEFT OFF - this is only good while XiniX uses TC's package repo
rm -f t*
fi
echo ' [done]'
echo -n 'Making the various packages:'
cd - >/dev/null
[ "$1" = 'generic' ] && {
PROJECT="${PROJECT}-$(date +%Y.%m.%d).0"
tar czf "../${PROJECT}.${EXT_SOFT}" . >>"$LOG" 2>&1 || exit 1
}
[ "$1" != 'generic' ] && ( mksquashfs "./" "../${PROJECT}.${EXT_SOFT}" -b 4096 >>"$LOG" 2>&1 || exit 1 )
echo -n ' [soft]'
find "./" -not -type d 2>>"$LOG" | sed "s|^./||" >../"${PROJECT}.${EXT_LIST}" 2>>"$LOG" || exit 1
echo -n ' [list]'
cd ..
md5sum "${PROJECT}.${EXT_SOFT}" >"${PROJECT}.${EXT_HASH}" 2>>"$LOG" || exit 1
echo ' [hash] [done]'
if [ "$1" = 'tc' ]; then
echo -n 'Making the email tarball:'
tar czf ${PROJECT}.tar.gz ${PROJECT}.${EXT_SOFT}*
echo ' [done]'
echo "Encrypting it; use the password 'tinycore' below..."
bcrypt ${PROJECT}.tar.gz
fi
echo -e "\nThe package has been created!\nDon't forget to create/update the .deps and .info files!\n"