4# Opennet trac-bitten-slave Scripts
5# Mathias Mahnke, created 2014/05/05
6# Opennet Admin Group <admin@opennet-initiative.de>
9# stop on error and unset variables
13FILE=
"$(basename "$0
")"
16# get current script dir
17HOME=
"$(dirname $(readlink -f "$0
"))"
18OPENWRT_CONFIG=
"${HOME}/../../../openwrt/.config"
28 grep
"^CONFIG_VERSION_NUMBER=" "$OPENWRT_CONFIG" | cut -f 2 -
d '"'
33 # kurze Uebersicht aller commits des aktuellen Builds inkl. eines Commit-Zaehlers
34 git log --oneline | sed -n
'1!G;h;$p' | nl | tac
41 snapshot_name=
$(get_snapshot_name)
42 [ -z
"$snapshot_name" ] &&
return 1
44 # prepare export directory
45 local dest_dir=
"$HOME/$EXPORT_DIR/$snapshot_name"
48 # copy all platform builds to export directory
49 local src_dir=
"$HOME/$BIN_DIR"
50 rsync $RSYNC_OPTIONS
"$src_dir/" "$dest_dir/"
52 # set version number in export directories
53 get_commit_info >
"$dest_dir/__${snapshot_name}__"
55 # allow retrieval of "latest" version by clients
57 echo
"$snapshot_name" >
"$dest_dir/version.txt"
59 # generate a map between devices and upgrade firmware download paths
60 "$HOME/$BUILD_DIR/opennet/tools/device-upgrade-mapper.sh" generate \
61 >
"$dest_dir/device-upgrade-map.csv"
63 # Update the (probably outdated) timestamp of the unrelated parent directory.
64 # (the "get_commit_info" line above is not sufficient - since the file may exist before)
67 # generate latest link
68 rm -f
"$HOME/$EXPORT_DIR/$LATEST_LINK"
69 (cd
"$HOME/$EXPORT_DIR" && ln -s
"$snapshot_name" "$LATEST_LINK")
75 snapshot_name=
$(get_snapshot_name)
76 [ -z
"$snapshot_name" ] &&
return 1
77 local dest_dir=
"$HOME/$EXPORT_DIR/$snapshot_name/doc"
79 local src_dir=
"$HOME/$DOC_DIR"
80 echo
"Copying documentation: $src_dir -> $dest_dir"
81 rsync $RSYNC_OPTIONS
"$src_dir/" "$dest_dir/"
86 local keep_builds=
"$1"
87 cd
"$HOME/$EXPORT_DIR"
88 # "uniq -u" entfernt doppelte Zeilen - also verbleiben nur die alten Dateien
90 ls -t | head -n
"$keep_builds"
92 ) | sort | uniq -u | xargs --delimiter
'\n' --no-run-
if-empty rm -r
99 echo
"Usage: $(basename "$0
")"
100 echo
" [<platform>] - export build"
101 echo
" --doc - generate documentation"
102 echo
" --purge <keep-number-of-dirs> - purge old exports"
110 [ -z
"$keep_builds" ] && echo >&2
"No number of non-purgeable builds given" && exit 2
111 echo
"$keep_builds" | grep -q
"[^0-9]" && echo >&2
"Number of non-purgeable builds contains non-digits: '$keep_builds'" && exit 3
112 [
"$keep_builds" -lt 1 ] && echo >&2
"Number of non-purgeable builds is too low: '$keep_builds'" && exit 4
113 purge_old_exports
"$keep_builds"
116 build_platform
"$action"
set eu on function print_services services log for dir in etc on services d var on services volatile d