blob: c4bcf427f92b07e81493dc2364c88c25cb2663e7 (
plain)
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
129
130
|
#!/bin/sh
set -e
# TODO add some help and some argumenst parsing
BOARD=omnia
if [ "$1" = "omnia" ] || [ "$1" = "turris" ] || [ "$1" = "all" ]; then
BOARD=$1
shift
fi
# remove previous builds
rm -rf .omnia-sdk
rm -rf .turris-sdk
pull_sdk() {
# Update only once a day
if [ ! -e .$1-sdk-clean ] || [ $(expr $(date -u +%s) - $(stat -c %Z .$1-sdk-clean)) -gt 86400 ]; then
rm -rf .$1-sdk-clean
echo -e "\e[1;34mGetting current SDK for $1\e[0m"
curl "$2" | tar -xjf -
mv OpenWrt-SDK-* .$1-sdk-clean
fi
# Copy clean sdk
rm -rf .$1-sdk
rsync -aW --inplace --delete .$1-sdk-clean/ .$1-sdk/
}
# TODO these links won't be valid for ever
if [ "$BOARD" = "omnia" ] || [ "$BOARD" = "all" ]; then
pull_sdk omnia "https://repo.turris.cz/omnia-nightly/OpenWrt-SDK-mvebu_gcc-4.8-linaro_musl-1.1.15_eabi.Linux-x86_64.tar.bz2"
fi
if [ "$BOARD" = "turris" ] || [ "$BOARD" = "all" ]; then
pull_sdk turris "https://repo.turris.cz/turris-nightly/OpenWrt-SDK-mpc85xx-p2020-nand_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2"
fi
echo -e "\e[1;34mCopy packages\e[0m"
for d in *; do
[ -f $d/Makefile ] || continue
echo -e "\e[1;35mpackage: $d\e[0m"
[ -d .omnia-sdk ] && cp -r $d .omnia-sdk/package/
[ -d .turris-sdk ] && cp -r $d .turris-sdk/package/
done
deploy_pkgauto() {
cat >"$1/include/pkgauto.mk" <<EOF
ifneq (\$(PKG_SOURCE_PROTO),git)
\$(error Only supported protocol is git)
endif
ifndef PKG_NAME
\$(error You have to define PKG_NAME before pkgauto.mk include)
endif
ifndef PKG_SOURCE_URL
\$(error You have to define PKG_SOURCE_URL before pkgauto.mk include)
endif
ifndef PKG_SOURCE_BRANCH
\$(error You have to define PKG_SOURCE_BRANCH before pkgauto.mk include)
endif
TMP_REPO_PATH=.$PWD/myrepo_\$(PKG_NAME)
GIT_ARGS=--git-dir='\$(TMP_REPO_PATH)' --bare
\$(shell \
if [ ! -d "\$(TMP_REPO_PATH)" ]; then \
git clone --bare "\$(PKG_SOURCE_URL)" "\$(TMP_REPO_PATH)"; \
else \
git \$(GIT_ARGS) fetch "\$(PKG_SOURCE_URL)"; \
fi \
)
PKG_SOURCE_VERSION:=\$(shell git \$(GIT_ARGS) rev-parse \$(PKG_SOURCE_BRANCH))
PKG_VERSION:=\$(shell git \$(GIT_ARGS) describe --abbrev=0 --tags \$(PKG_SOURCE_BRANCH) | sed 's/^v//')
ifeq (\$(PKG_VERSION),)
# No version found so we use 9999 instead and count commits since initial commit.
PKG_VERSION:=9999
PKG_RELEASE:=\$(shell git \$(GIT_ARGS) rev-list --count \$(PKG_SOURCE_VERSION))
else
PKG_RELEASE:=\$(shell git \$(GIT_ARGS) rev-list --count v\$(PKG_VERSION)..\$(PKG_SOURCE_VERSION))
PKG_VERSION:=\$(PKG_VERSION).9999
endif
PKG_SOURCE:=\$(PKG_NAME)-\$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_SUBDIR:=\$(PKG_NAME)
PKG_BUILD_DIR:=\$(BUILD_DIR)/\$(PKG_NAME)
HOST_BUILD_DIR:=\$(BUILD_DIR_HOST)/\$(PKG_NAME)
# TODO drop TMP_REPO_PATH and GIT_ARGS
EOF
}
[ -d .omnia-sdk ] && deploy_pkgauto .omnia-sdk
[ -d .turris-sdk ] && deploy_pkgauto .turris-sdk
if [ -f CONFIG ]; then
echo -e "\e[1;34mApply CONFIG\e[0m"
([ "$BOARD" = "omnia" ] || [ "$BOARD" = "all" ]) && \
cat CONFIG >> .omnia-sdk/.config
([ "$BOARD" = "turris" ] || [ "$BOARD" = "all" ]) && \
cat CONFIG >> .turris-sdk/.config
fi
if [ "$BOARD" = "omnia" ] || [ "$BOARD" = "all" ]; then
echo -e "\e[1;34mBuilding omnia\e[0m"
(cd .omnia-sdk; make "$@")
fi
if [ "$BOARD" = "turris" ] || [ "$BOARD" = "all" ]; then
echo -e "\e[1;34mBuilding turris\e[0m"
(cd .turris-sdk; make "$@")
fi
pull_out() {
echo -e "\e[1;34mMove and sign $1\e[0m"
[ -d repo/$1 ] || rm -rf repo/$1
mkdir -p repo
cp -r .$1-sdk/bin/$2/packages/base ./repo/$1
./.$1-sdk/staging_dir/host/bin/usign -S -s key.sec -m "repo/$1/Packages"
}
if [ "$BOARD" = "omnia" ] || [ "$BOARD" = "all" ]; then
pull_out omnia mvebu-musl
fi
if [ "$BOARD" = "turris" ] || [ "$BOARD" = "all" ]; then
pull_out turris mpc85xx
fi
|