forked from termux/termux-app
-
Notifications
You must be signed in to change notification settings - Fork 1
/
build_termux_package
executable file
·126 lines (107 loc) · 4.46 KB
/
build_termux_package
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
#!/bin/bash
set -e
cd "$(dirname "$0")"
TERMUX_PKG_NAME="termux-x11-nightly"
TERMUX_PKG_HOMEPAGE="https://github.com/termux/termux-x11"
TERMUX_PKG_DESCRIPTION="Companion package for termux-x11 app"
TERMUX_PKG_MAINTAINER="Twaik Yont @twaik"
TERMUX_PKG_REVISION=0
TERMUX_PKG_VERSION="1.03.10"
#TERMUX_PKG_VERSION=$(grep versionName termux-x11/build.gradle | cut -d '"' -f 2)
TERMUX_PKG_DEPENDS="xkeyboard-config"
TERMUX_PKG_FULLVERSION="$TERMUX_PKG_VERSION-$TERMUX_PKG_REVISION"
### Deploy .deb package
DEB_PACKAGE_PATH=app/build/outputs/apk/debug/${TERMUX_PKG_NAME}-${TERMUX_PKG_FULLVERSION}-all.deb
PACMAN_PACKAGE_PATH=app/build/outputs/apk/debug/${TERMUX_PKG_NAME}-${TERMUX_PKG_FULLVERSION}-any.pkg.tar.xz
ASSETS_PATH=app/src/main/assets/
INTERMEDIATES=shell-loader/build/intermediates
DATA_DIR=$INTERMEDIATES/data
CONTROL_DIR=$INTERMEDIATES/control
PACKAGE_DIR=$INTERMEDIATES/package
PREFIX=$DATA_DIR/data/data/com.termux/files/usr
rm -rf $DEB_PACKAGE_PATH $PACMAN_PACKAGE_PATH $DATA_DIR $CONTROL_DIR $PACKAGE_DIR $INTERMEDIATES/.PKGINFO $INTERMEDIATES/.BUILDINFO $INTERMEDIATES/.MTREE
mkdir -p $PREFIX/bin/
mkdir -p $PREFIX/libexec/termux-x11
mkdir -p $PREFIX/libexec/termux-display
mkdir -p "$(dirname $DEB_PACKAGE_PATH)"
cp termux-x11-app $PREFIX/bin/
mv $PREFIX/bin/termux-x11-app $PREFIX/bin/termux-x11
cp termux-x11-display $PREFIX/bin/
mv $PREFIX/bin/termux-x11-display $PREFIX/bin/termux-display
cp shell-loader/build/outputs/apk/debug/shell-loader-debug.apk \
$PREFIX/libexec/termux-x11/loader.apk
cp shell-loader/build/outputs/apk/debug/shell-loader-debug.apk \
$PREFIX/libexec/termux-display/loader.apk
cp stopserver $PREFIX/bin/
cp startxserver $PREFIX/bin/
cp install $ASSETS_PATH
cp setMoBoxEnv $ASSETS_PATH
cp collect_process_info $ASSETS_PATH
mkdir -p $CONTROL_DIR
cat <<EOF >$CONTROL_DIR/control
Package: $TERMUX_PKG_NAME
Architecture: all
Maintainer: $TERMUX_PKG_MAINTAINER
Version: $TERMUX_PKG_FULLVERSION
Homepage: $TERMUX_PKG_HOMEPAGE
Depends: $TERMUX_PKG_DEPENDS
Description: $TERMUX_PKG_DESCRIPTION
EOF
cat <<EOF >$CONTROL_DIR/postinst
#!/data/data/com.termux/files/usr/bin/sh
chmod -w /data/data/com.termux/files/usr/libexec/termux-x11/loader.apk
chmod +x /data/data/com.termux/files/usr/bin/startxserver
chmod +x /data/data/com.termux/files/usr/bin/stopserver
chmod +x /data/data/com.termux/files/usr/bin/termux-x11
EOF
mkdir -p $PACKAGE_DIR
echo 2.0 >$PACKAGE_DIR/debian-binary
tar -cJf $PACKAGE_DIR/data.tar.xz -C $DATA_DIR .
tar -czf $PACKAGE_DIR/control.tar.gz -C $CONTROL_DIR .
ar -rsc $DEB_PACKAGE_PATH \
$PACKAGE_DIR/debian-binary \
$PACKAGE_DIR/control.tar.gz \
$PACKAGE_DIR/data.tar.xz
cp -rvf $DEB_PACKAGE_PATH $ASSETS_PATH
### Deploy pacman package
BUILD_DATE=$(date +%s)
{
echo "pkgname = $TERMUX_PKG_NAME"
echo "pkgbase = $TERMUX_PKG_NAME"
echo "pkgver = $TERMUX_PKG_FULLVERSION"
echo "pkgdesc = $(echo "$TERMUX_PKG_DESCRIPTION" | tr '\n' ' ')"
echo "url = $TERMUX_PKG_HOMEPAGE"
echo "builddate = $BUILD_DATE"
echo "packager = $TERMUX_PKG_MAINTAINER"
echo "arch = any"
echo "license = TERMUX_PKG_LICENSE"
tr ',' '\n' <<<"$TERMUX_PKG_DEPENDS" | sed 's|(||g; s|)||g; s| ||g; s|>>|>|g; s|<<|<|g' | awk '{ printf "depend = " $1; if ( ($1 ~ /</ || $1 ~ />/ || $1 ~ /=/) && $1 !~ /-/ ) printf "-0"; printf "\n" }' | sed 's/|.*//'
} >$DATA_DIR/.PKGINFO
{
echo "format = 2"
echo "pkgname = $TERMUX_PKG_NAME"
echo "pkgbase = $TERMUX_PKG_NAME"
echo "pkgver = $TERMUX_PKG_FULLVERSION"
echo "pkgarch = any"
echo "packager = $TERMUX_PKG_MAINTAINER"
echo "builddate = $BUILD_DATE"
} >$DATA_DIR/.BUILDINFO
{
echo "post_install() {"
echo " chmod -w /data/data/com.termux/files/usr/libexec/termux-x11/loader.apk"
echo " chmod +x /data/data/com.termux/files/usr/bin/display"
echo " chmod +x /data/data/com.termux/files/usr/bin/startxserver"
echo " chmod +x /data/data/com.termux/files/usr/bin/stopserver"
echo " chmod +x /data/data/com.termux/files/usr/bin/termux-x11"
echo "}"
} >$DATA_DIR/.INSTALL
PACMAN_PACKAGE_PATH=$(realpath $PACMAN_PACKAGE_PATH)
cd $DATA_DIR
shopt -s dotglob globstar
printf '%s\0' data/**/* .BUILDINFO .PKGINFO | bsdtar -cnf - --format=mtree \
--options='!all,use-set,type,uid,gid,mode,time,size,md5,sha256,link' \
--null --files-from - | gzip -c -f -n >.MTREE
printf '%s\0' data/**/* .BUILDINFO .PKGINFO .MTREE | bsdtar --no-fflags -cnf - --null --files-from - | xz >"$PACMAN_PACKAGE_PATH"
shopt -u dotglob globstar
cd -
cp -rvf $PACMAN_PACKAGE_PATH $ASSETS_PATH