This repository has been archived by the owner on Mar 6, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild
executable file
·118 lines (93 loc) · 4.76 KB
/
build
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
#!/usr/bin/env bash
set -e
#assumes you already have
#binfmt-support and
#qemu-user-static installed
BUSYBOX_CHROOT_RELEASE=v1.0.2
BUSYBOX_CHROOT_SRC="https://github.com/just-containers/busybox-chroots/releases/download/${BUSYBOX_CHROOT_RELEASE}"
THISDIR=$(pwd)
CHROOTDIR=${THISDIR}/chroots
BUILDDIR=${THISDIR}/builds
PACKAGEDIR=${THISDIR}/pkg
DISTDIR=${THISDIR}/dist
TOOLSDIR=${THISDIR}/tools
mkdir -p "$BUILDDIR"
mkdir -p "$PACKAGEDIR"
mkdir -p "$DISTDIR"
mkdir -p "$CHROOTDIR"
mkdir -p "$TOOLSDIR"
declare -A qemu_targets
qemu_targets[x86_64-linux-musl]=qemu-x86_64-static
qemu_targets[arm-linux-musleabihf]=qemu-arm-static
qemu_targets[arm-linux-musleabi]=qemu-arm-static
qemu_targets[i486-linux-musl]=qemu-i386-static
qemu_targets[aarch64-linux-musl]=qemu-aarch64-static
# target platforms + simplified
# platform
declare -A targets
targets[arm-linux-musleabi]=arm
targets[arm-linux-musleabihf]=armhf
targets[aarch64-linux-musl]=aarch64
targets[x86_64-linux-musl]=amd64
targets[i486-linux-musl]=x86
# software versions
declare -A versions
versions[socklog]=2.1.0
versions[proot]="5.1.0"
versions[qemu]="2.11.1"
declare -A releases
releases[proot]="v5.1.0-2"
releases[qemu]="v2.11.1-resin"
cd "$BUILDDIR"
curl -R -L -o "$TOOLSDIR/proot-${versions[proot]}-amd64.tar.xz" \
"https://github.com/just-containers/PRoot/releases/download/${releases[proot]}/proot-${versions[proot]}-amd64.tar.xz"
curl -R -L -o $TOOLSDIR/qemu-${versions[qemu]}-amd64.tar.xz \
"https://github.com/just-containers/qemu/releases/download/${releases[qemu]}/qemu-${versions[qemu]}-amd64.tar.xz"
curl -R -L -o "$TOOLSDIR/github-release.tar.bz2" \
"https://github.com/aktau/github-release/releases/download/v0.7.2/linux-amd64-github-release.tar.bz2"
tar xf $TOOLSDIR/proot-${versions[proot]}-amd64.tar.xz -C $TOOLSDIR
tar xf $TOOLSDIR/qemu-${versions[qemu]}-amd64.tar.xz -C $TOOLSDIR
tar xf $TOOLSDIR/github-release.tar.bz2 -C $TOOLSDIR/bin --strip-components=3
for target in "${!targets[@]}"; do
echo "Building socklog for $target..."
mkdir -p "$CHROOTDIR/$target"
curl -R -L -o "$CHROOTDIR/chroot-${targets[$target]}.tar.gz" \
"$BUSYBOX_CHROOT_SRC/chroot-${targets[$target]}.tar.gz"
tar xf "$CHROOTDIR/chroot-${targets[$target]}.tar.gz" -C "$CHROOTDIR/$target"
mkdir -p "$CHROOTDIR/$target/src"
rm -rf "$CHROOTDIR/$target/src/admin"
cp -r "$THISDIR/admin" "$CHROOTDIR/$target/src/"
mkdir -p "$CHROOTDIR/$target/src/admin/socklog-${versions[socklog]}/compile"
echo "/src/admin/socklog-${versions[socklog]}" > \
"$CHROOTDIR/$target/src/admin/socklog-${versions[socklog]}/compile/home"
ln -s "/src/admin/socklog-${versions[socklog]}/src" "$CHROOTDIR/$target/src/admin/socklog-${versions[socklog]}/compile/src"
for p in "$CHROOTDIR/$target/src/admin/socklog-${versions[socklog]}/src/"* ; do
f=$(basename "$p")
ln -s src/$f "$CHROOTDIR/$target/src/admin/socklog-${versions[socklog]}/compile/$f"
done
echo "gcc -Wall -Wextra -fPIC -D_GNU_SOURCE -g0 -Os" > "$CHROOTDIR/$target/src/admin/socklog-${versions[socklog]}/src/conf-cc"
echo "gcc -static -s" > "$CHROOTDIR/$target/src/admin/socklog-${versions[socklog]}/src/conf-ld"
env -i PATH="/usr/bin:/bin:/usr/sbin:/sbin" \
$TOOLSDIR/bin/proot \
-S $CHROOTDIR/${target} \
-w /src/admin/socklog-${versions[socklog]}/compile \
-q "$TOOLSDIR/bin/${qemu_targets[$target]}" \
make -j$(nproc)
mkdir -p $BUILDDIR/${target}/socklog-${versions[socklog]}/usr/bin
mkdir -p $BUILDDIR/${target}/socklog-${versions[socklog]}/usr/share/doc/socklog-${versions[socklog]}
mkdir -p $BUILDDIR/${target}/socklog-${versions[socklog]}/usr/share/man/man8
mkdir -p $BUILDDIR/${target}/socklog-${versions[socklog]}/usr/share/man/man1
for c in $(cat $THISDIR/admin/socklog-${versions[socklog]}/package/commands) ; do
cp \
$CHROOTDIR/${target}/src/admin/socklog-${versions[socklog]}/compile/$c \
$BUILDDIR/${target}/socklog-${versions[socklog]}/usr/bin/
done
cp $CHROOTDIR/${target}/src/admin/socklog-${versions[socklog]}/doc/* $BUILDDIR/${target}/socklog-${versions[socklog]}/usr/share/doc/socklog-${versions[socklog]}/
cp $CHROOTDIR/${target}/src/admin/socklog-${versions[socklog]}/man/*.8 $BUILDDIR/${target}/socklog-${versions[socklog]}/usr/share/man/man8/
cp $CHROOTDIR/${target}/src/admin/socklog-${versions[socklog]}/man/*.1 $BUILDDIR/${target}/socklog-${versions[socklog]}/usr/share/man/man1/
cp $CHROOTDIR/${target}/src/admin/socklog-${versions[socklog]}/package/COPYING $BUILDDIR/${target}/socklog-${versions[socklog]}/usr/share/doc/socklog-${versions[socklog]}/
tar -cvzf $DISTDIR/socklog-${versions[socklog]}-linux-${targets[${target}]}.tar.gz \
--owner 0 \
--group 0 \
-C $BUILDDIR/${target}/socklog-${versions[socklog]} .
done