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
12 # get config file name
13 FILE=
"$(basename "$0
")"
16 # get current script dir
17 HOME=
"$(dirname $(readlink -f "$0
"))"
18 OPENWRT_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
40 local snapshot_name=$(get_snapshot_name)
41 [ -z
"$snapshot_name" ] &&
return 1
43 # prepare export directory
44 local dest_dir=
"$HOME/$EXPORT_DIR/$snapshot_name"
45 local dest_platform_dir=
"$dest_dir/$platform"
46 mkdir -p
"$dest_platform_dir"
47 # workaround
for broken directory or file mode?
48 find
"$dest_platform_dir" -perm 655 -print0 | xargs -0 --no-run-
if-empty chmod 755
50 # copy build to export directory
51 local src_dir=
"$HOME/$BIN_DIR/$platform"
52 rsync $RSYNC_OPTIONS
"$src_dir/" "$dest_platform_dir/"
54 # set version number in export directories
55 get_commit_info >
"$dest_dir/__${snapshot_name}__"
56 get_commit_info >
"$dest_platform_dir/__${snapshot_name}__"
58 # generate latest link
59 rm -f
"$HOME/$EXPORT_DIR/$LATEST_LINK"
60 (cd
"$HOME/$EXPORT_DIR" && ln -s
"$snapshot_name" "$LATEST_LINK")
65 local snapshot_name=$(get_snapshot_name)
66 [ -z
"$snapshot_name" ] &&
return 1
67 local dest_dir=
"$HOME/$EXPORT_DIR/$snapshot_name/doc"
69 local src_dir=
"$HOME/$DOC_DIR"
70 echo
"Copying documentation: $src_dir -> $dest_dir"
71 rsync $RSYNC_OPTIONS
"$src_dir/" "$dest_dir/"
76 local keep_builds=
"$1"
77 cd
"$HOME/$EXPORT_DIR"
78 # "uniq -u" entfernt doppelte Zeilen - also verbleiben nur die alten Dateien
80 ls -t | head -n
"$keep_builds"
82 ) | sort | uniq -u | xargs --delimiter
'\n' --no-run-
if-empty rm -r
89 echo "Usage: $(basename "$0")"
90 echo " [<platform>] - export build"
91 echo " --doc - generate documentation"
92 echo " --purge <keep-number-of-dirs> - purge old exports"
100 [ -z
"$keep_builds" ] && echo >&2
"No number of non-purgeable builds given" && exit 2
101 echo
"$keep_builds" | grep -q
"[^0-9]" && echo >&2
"Number of non-purgeable builds contains non-digits: '$keep_builds'" && exit 3
102 [
"$keep_builds" -lt 1 ] && echo >&2
"Number of non-purgeable builds is too low: '$keep_builds'" && exit 4
103 purge_old_exports
"$keep_builds"
106 build_platform
"$action"
set eu on function print_services services log for dir in etc on services d var on services volatile d