annotate packaging/linux-createpackage.sh.in @ 1138:45de97d43e13

Implemented generic include mechanism.
author Sascha Wilde <wilde@intevation.de>
date Wed, 17 Sep 2014 17:20:23 +0200
parents cf154e1f687a
children a72d59f8c3ea
rev   line source
680
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
1 #!/bin/bash
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
2 # Copyright (C) 2014 by Bundesamt f�r Sicherheit in der Informationstechnik
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
3 # Software engineering by Intevation GmbH
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
4 #
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
5 # This file is Free Software under the GNU GPL (v>=2)
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
6 # and comes with ABSOLUTELY NO WARRANTY!
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
7 # See LICENSE.txt for details.
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
8
1138
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
9 process_includes()
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
10 {
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
11 # Process include statements of the form:
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
12 # ###INCLUDE:filename
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
13 # in the file given as $1
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
14 # the path given as $2, it is used as base path for the included files.
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
15
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
16 local file="$1"
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
17 local include_base="$2"
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
18
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
19 local inc_directive
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
20 while [ "${inc_directive:=`grep '^###INCLUDE:' "$file" | head -1`}" ] ; do
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
21 local include_file="${inc_directive#'###INCLUDE:'}"
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
22 sed -i "/${inc_directive}/r ${include_base}/${include_file}" "$file"
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
23 sed -i "/${inc_directive}/d" "$file"
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
24 inc_directive=""
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
25 done
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
26 }
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
27
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
28
680
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
29 TMPDIR=$(mktemp -d)
700
bf87feccb26c Write installation configuration file.
Sascha Wilde <wilde@intevation.de>
parents: 680
diff changeset
30 TMPSHAR=$(mktemp "@CMAKE_BINARY_DIR@/shar.XXXXXXXXXX")
680
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
31
972
8be2f510adbf (issue91) Make installer architecture aware.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 938
diff changeset
32 ARCH="$1"
8be2f510adbf (issue91) Make installer architecture aware.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 938
diff changeset
33
8be2f510adbf (issue91) Make installer architecture aware.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 938
diff changeset
34 if [ "$ARCH" != "i386" -a "$ARCH" != "x86_64" ]; then
8be2f510adbf (issue91) Make installer architecture aware.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 938
diff changeset
35 echo "Usage $0 <architecture>"
8be2f510adbf (issue91) Make installer architecture aware.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 938
diff changeset
36 echo "with archtiecture either i386 or x86_64"
1113
60669c41684b (issue91) Use x86_64 arch as default for linux_createpackage.sh
Andre Heinecke <andre.heinecke@intevation.de>
parents: 980
diff changeset
37 echo "defaulting to x86_64"
60669c41684b (issue91) Use x86_64 arch as default for linux_createpackage.sh
Andre Heinecke <andre.heinecke@intevation.de>
parents: 980
diff changeset
38 ARCH=x86_64
972
8be2f510adbf (issue91) Make installer architecture aware.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 938
diff changeset
39 fi
8be2f510adbf (issue91) Make installer architecture aware.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 938
diff changeset
40
680
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
41 INSTALLER="@CMAKE_BINARY_DIR@/TrustBridge-@PROJECT_VERSION@.sh"
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
42
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
43 EXEFILES=("@CMAKE_BINARY_DIR@/cinst/cinst"
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
44 "@CMAKE_BINARY_DIR@/cinst/mozilla"
738
ea8d13590cbd Added trustbridge-tray-starter script for use with cron job.
Sascha Wilde <wilde@intevation.de>
parents: 711
diff changeset
45 "@CMAKE_BINARY_DIR@/ui/trustbridge"
ea8d13590cbd Added trustbridge-tray-starter script for use with cron job.
Sascha Wilde <wilde@intevation.de>
parents: 711
diff changeset
46 "@CMAKE_BINARY_DIR@/ui/trustbridge-tray-starter.sh")
972
8be2f510adbf (issue91) Make installer architecture aware.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 938
diff changeset
47
892
4087e489f569 Install 128px icon for linux
Andre Heinecke <andre.heinecke@intevation.de>
parents: 872
diff changeset
48 ICON="@CMAKE_SOURCE_DIR@/ui/img/logo-128.png"
938
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
49 HELPFILES=$(find @CMAKE_BINARY_DIR@/manuals/help-manual/html \
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
50 -maxdepth 1 -type f -printf "%p \n")
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
51 HELPFILES_STATIC=$(find @CMAKE_BINARY_DIR@/manuals/help-manual/html/_static \
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
52 -maxdepth 1 -type f -printf "%p \n")
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
53 HELPFILES_IMG=$(find @CMAKE_BINARY_DIR@/manuals/help-manual/html/_images \
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
54 -maxdepth 1 -type f -printf "%p \n")
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
55 HELPFILES_SOURCES=$(find @CMAKE_BINARY_DIR@/manuals/help-manual/html/_sources \
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
56 -maxdepth 1 -type f -printf "%p \n")
680
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
57
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
58 # Make installation in TMPDIR, this is what we will put into the
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
59 # shar-archive.
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
60 echo "Using $TMPDIR for temporary installation to build installer..."
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
61 install -d "$TMPDIR/bin"
872
02e357826417 (issue81) Add desktop file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 795
diff changeset
62 install -d "$TMPDIR/share/pixmaps/trustbridge"
938
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
63 install -d "$TMPDIR/share/doc/trustbridge"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
64 install -d "$TMPDIR/share/doc/trustbridge/_static"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
65 install -d "$TMPDIR/share/doc/trustbridge/_sources"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
66 install -d "$TMPDIR/share/doc/trustbridge/_images"
711
acbe75423283 Added deinstallation functionality.
Sascha Wilde <wilde@intevation.de>
parents: 700
diff changeset
67 install "${EXEFILES[@]}" "$TMPDIR/bin"
872
02e357826417 (issue81) Add desktop file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 795
diff changeset
68 install "$ICON" "$TMPDIR/share/pixmaps/trustbridge/trustbridge.png"
711
acbe75423283 Added deinstallation functionality.
Sascha Wilde <wilde@intevation.de>
parents: 700
diff changeset
69
680
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
70 echo "Building $INSTALLER..."
700
bf87feccb26c Write installation configuration file.
Sascha Wilde <wilde@intevation.de>
parents: 680
diff changeset
71 cp "@CMAKE_BINARY_DIR@/packaging/linux-installer.inc" "$INSTALLER"
1138
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
72 process_includes "$INSTALLER" "@CMAKE_BINARY_DIR@/packaging"
45de97d43e13 Implemented generic include mechanism.
Sascha Wilde <wilde@intevation.de>
parents: 1135
diff changeset
73
711
acbe75423283 Added deinstallation functionality.
Sascha Wilde <wilde@intevation.de>
parents: 700
diff changeset
74 binnames=""
acbe75423283 Added deinstallation functionality.
Sascha Wilde <wilde@intevation.de>
parents: 700
diff changeset
75 for file in "${EXEFILES[@]}" ; do
acbe75423283 Added deinstallation functionality.
Sascha Wilde <wilde@intevation.de>
parents: 700
diff changeset
76 binnames="`basename $file` $binnames"
acbe75423283 Added deinstallation functionality.
Sascha Wilde <wilde@intevation.de>
parents: 700
diff changeset
77 done
938
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
78 for file in ${HELPFILES} ; do
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
79 install "$file" "$TMPDIR/share/doc/trustbridge"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
80 helpnames="`basename $file` $helpnames"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
81 done
980
491327689ffc (issue89) Fix typo in HTMLFILES_IMG variable name
Andre Heinecke <andre.heinecke@intevation.de>
parents: 972
diff changeset
82 for file in ${HELPFILES_IMG} ; do
938
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
83 install "$file" "$TMPDIR/share/doc/trustbridge/_images"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
84 helpnames_img="`basename $file` $helpnames_img"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
85 done
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
86 for file in ${HELPFILES_STATIC} ; do
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
87 install "$file" "$TMPDIR/share/doc/trustbridge/_static"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
88 helpnames_static="`basename $file` $helpnames_static"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
89 done
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
90 for file in ${HELPFILES_SOURCES}; do
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
91 install "$file" "$TMPDIR/share/doc/trustbridge/_sources"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
92 helpnames_sources="`basename $file` $helpnames_sources"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
93 done
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
94
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
95 echo "Creating shar archive ..."
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
96 cd "$TMPDIR"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
97 shar -z -B `find -type f` | sed 's/^exit 0//' >>"$TMPSHAR"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
98
711
acbe75423283 Added deinstallation functionality.
Sascha Wilde <wilde@intevation.de>
parents: 700
diff changeset
99 sed -i "s/###BINNAMES###/${binnames}/" "$INSTALLER"
872
02e357826417 (issue81) Add desktop file
Andre Heinecke <andre.heinecke@intevation.de>
parents: 795
diff changeset
100 sed -i "s/###ICONNAME###/trustbridge.png/" "$INSTALLER"
700
bf87feccb26c Write installation configuration file.
Sascha Wilde <wilde@intevation.de>
parents: 680
diff changeset
101 sed -i "/###SHAR###/r $TMPSHAR" "$INSTALLER"
938
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
102 sed -i "s/###HELPNAMES###/${helpnames}/" "$INSTALLER"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
103 sed -i "s/###HELPNAMES_SOURCES###/${helpnames_sources}/" "$INSTALLER"
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
104 sed -i "s/###HELPNAMES_STATIC###/${helpnames_static}/" "$INSTALLER"
1135
cf154e1f687a Added more missing quoting.
Sascha Wilde <wilde@intevation.de>
parents: 1130
diff changeset
105 sed -i "s/###HELPNAMES_IMG###/${helpnames_img}/" "$INSTALLER"
cf154e1f687a Added more missing quoting.
Sascha Wilde <wilde@intevation.de>
parents: 1130
diff changeset
106 sed -i "s/###ARCH###/${ARCH}/" "$INSTALLER"
938
15f7b3ebf21b (issue89) Add help packaging for Linux installer
Andre Heinecke <andre.heinecke@intevation.de>
parents: 921
diff changeset
107
680
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
108 chmod +x "$INSTALLER"
921
419cf0560d45 Create signature for linux installer in linux-createpackage.sh
Andre Heinecke <andre.heinecke@intevation.de>
parents: 892
diff changeset
109 echo "Signing"
1130
a2d2ae5a1154 Fix quoting in sign command
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1113
diff changeset
110 "@CMAKE_SOURCE_DIR@/ui/tests/append-sig.sh" \
a2d2ae5a1154 Fix quoting in sign command
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1113
diff changeset
111 "@CMAKE_SOURCE_DIR@/ui/tests/data/codesign/codesigning.key" \
a2d2ae5a1154 Fix quoting in sign command
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1113
diff changeset
112 "$INSTALLER" "${INSTALLER}_signed"
a2d2ae5a1154 Fix quoting in sign command
Andre Heinecke <andre.heinecke@intevation.de>
parents: 1113
diff changeset
113 mv "${INSTALLER}_signed" "$INSTALLER"
680
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
114
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
115 echo "Cleaning up..."
a5a709c6ce93 Added minimal shar based installer for linux.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
116 rm -r "$TMPDIR"
700
bf87feccb26c Write installation configuration file.
Sascha Wilde <wilde@intevation.de>
parents: 680
diff changeset
117 rm "$TMPSHAR"

http://wald.intevation.org/projects/trustbridge/