svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.framework / org.gvsig.andami / src / main / resources-application / tools / mkexec @ 43307
History | View | Annotate | Download (7.04 KB)
1 |
#!/bin/bash |
---|---|
2 |
|
3 |
#set -x |
4 |
set -e |
5 |
|
6 |
#============================================= |
7 |
# JREs to use |
8 |
URL_JRE_FOLDER="http://downloads.gvsig.org/download/gvsig-desktop-testing/pool/jre" |
9 |
|
10 |
GVSPKG_JRE_darwin_x86_64="gvSIG-desktop-2.3.0-jre-1.8.0-72-testing-darwin_macos_10.11-x86_64-j1_8.gvspkg" |
11 |
GVSPKG_JRE_lin_x86_64="gvSIG-desktop-2.3.0-jre-1.8.0-72-testing-lin-x86_64-j1_8.gvspkg" |
12 |
GVSPKG_JRE_lin_x86="gvSIG-desktop-2.3.0-jre-1.8.0-92-testing-lin-x86-j1_8.gvspkg" |
13 |
GVSPKG_JRE_win_x86_64="gvSIG-desktop-2.3.0-jre-1.8.0-65-testing-win-x86_64-j1_8.gvspkg" |
14 |
GVSPKG_JRE_win_x86="gvSIG-desktop-2.3.0-jre-1.8.0-73-testing-win-x86-j1_8.gvspkg" |
15 |
|
16 |
#============================================= |
17 |
# self extractors to use |
18 |
URL_SELFEXTRACT_FOLDER="http://downloads.gvsig.org/download/gvsig-desktop/runtimes/selfextract" |
19 |
|
20 |
#============================================= |
21 |
# Where to find izpack installers |
22 |
URL_DISTS="http://downloads.gvsig.org/download/gvsig-desktop-testing/dists" |
23 |
|
24 |
|
25 |
|
26 |
#============================================= |
27 |
# for wget >= 1.16 |
28 |
WGET_SHOW_PROGRESSBAR="--show-progress" |
29 |
WGET_SHOW_PROGRESSBAR="" |
30 |
|
31 |
mkexec_unx() { |
32 |
OS=$1 |
33 |
ARCH=$2 |
34 |
INSTALL_JAR="$3" |
35 |
WORKINGFOLDER="$4" |
36 |
OSFamily="${OS/_*/}" |
37 |
|
38 |
INSTALL_JAR_BASENAME=$(basename "$INSTALL_JAR") |
39 |
GVSPKG_JRE="GVSPKG_JRE_${OSFamily}_${ARCH}" |
40 |
GVSPKG_JRE="${!GVSPKG_JRE}" |
41 |
SELF_EXTRACT="selfextract-${OSFamily}-${ARCH}" |
42 |
DATA_FOLDER="$WORKINGFOLDER/data-${OS}-$ARCH" |
43 |
DATA_ARCHIVE="$WORKINGFOLDER/data-${OS}-$ARCH.tar" |
44 |
|
45 |
cd "$WORKINGFOLDER" |
46 |
|
47 |
echo "Making selfextract for ${OS} ${ARCH} using:" |
48 |
echo " selfextract: ${SELF_EXTRACT}" |
49 |
echo " jre: ${GVSPKG_JRE}" |
50 |
echo " java installer: ${INSTALL_JAR_BASENAME}" |
51 |
echo " working folder: ${WORKINGFOLDER}" |
52 |
|
53 |
|
54 |
echo "Remove previous temporary files" |
55 |
rm -f "$DATA_ARCHIVE" |
56 |
rm -rf "$DATA_FOLDER" |
57 |
|
58 |
if [ ! -f ${SELF_EXTRACT} ] ; then |
59 |
echo "Downloading selfextract program ${SELF_EXTRACT}" |
60 |
wget -q $WGET_SHOW_PROGRESSBAR "$URL_SELFEXTRACT_FOLDER/${OSFamily}-$ARCH/${SELF_EXTRACT}" |
61 |
chmod a+x ${SELF_EXTRACT} |
62 |
fi |
63 |
|
64 |
if [ ! -f "${GVSPKG_JRE}" ] ; then |
65 |
echo "Downloading JRE $URL_JRE_FOLDER/${GVSPKG_JRE}" |
66 |
wget -q $WGET_SHOW_PROGRESSBAR "$URL_JRE_FOLDER/${GVSPKG_JRE}" |
67 |
fi |
68 |
|
69 |
echo "Creating temp folder" |
70 |
mkdir -p "$DATA_FOLDER" |
71 |
cd "$DATA_FOLDER" |
72 |
|
73 |
# ------------------------------------------------------------- |
74 |
# Preparamos en $DATA_FOLDER los ficheros que vamos a meter en el tar |
75 |
# que queremos que sea autoextraible y autoejecutable. |
76 |
# - La carpeta jre |
77 |
# - El instalador del izpack |
78 |
# - El autorun.sh |
79 |
# |
80 |
echo "Extracting JRE" |
81 |
unzip -q "../${GVSPKG_JRE}" 2>&1 | sed '/warning: stripped absolute path spec/ d' |
82 |
chmod a+x "jre/bin/java" |
83 |
|
84 |
echo "Coping $INSTALL_JAR" |
85 |
cp "$INSTALL_JAR" . |
86 |
|
87 |
echo "#!/bin/sh |
88 |
exec ./jre/bin/java -jar \"$INSTALL_JAR_BASENAME\" |
89 |
" > autorun.sh |
90 |
chmod a+x "autorun.sh" |
91 |
|
92 |
# ------------------------------------------------------------- |
93 |
# Creamos el tar |
94 |
echo "Creating archive file (tar)" |
95 |
tar cf "$DATA_ARCHIVE" . |
96 |
|
97 |
# ------------------------------------------------------------- |
98 |
# Creamos con el fichero tar generado el autoextraible |
99 |
echo "Making selfextract with archive file" |
100 |
{ |
101 |
cat ${WORKINGFOLDER}/${SELF_EXTRACT} |
102 |
echo ";!@selfextract@!" |
103 |
cat "$DATA_ARCHIVE" |
104 |
} > "${INSTALL_JAR%.jar}.run" |
105 |
echo "Created ${INSTALL_JAR%.jar}.run" |
106 |
echo "" |
107 |
} |
108 |
|
109 |
|
110 |
mkexec_win() { |
111 |
OSFamily="win" |
112 |
OS="$1" |
113 |
ARCH=$2 |
114 |
INSTALL_JAR="$3" |
115 |
WORKINGFOLDER="$4" |
116 |
|
117 |
INSTALL_JAR_BASENAME=$(basename "$INSTALL_JAR") |
118 |
GVSPKG_JRE="GVSPKG_JRE_${OSFamily}_${ARCH}" |
119 |
GVSPKG_JRE="${!GVSPKG_JRE}" |
120 |
SELF_EXTRACT="7zSD-${OSFamily}-${ARCH}.sfx" |
121 |
DATA_FOLDER="$WORKINGFOLDER/data-${OSFamily}-$ARCH" |
122 |
DATA_ARCHIVE="$WORKINGFOLDER/data-${OSFamily}-$ARCH.7z" |
123 |
|
124 |
cd "$WORKINGFOLDER" |
125 |
|
126 |
echo "Making selfextract for ${OSFamily} ${ARCH} using:" |
127 |
echo " selfextract: ${SELF_EXTRACT}" |
128 |
echo " jre: ${GVSPKG_JRE}" |
129 |
echo " java installer: ${INSTALL_JAR_BASENAME}" |
130 |
echo " working folder: ${WORKINGFOLDER}" |
131 |
|
132 |
echo "Remove previous temporary files" |
133 |
rm -f "$DATA_ARCHIVE" |
134 |
rm -rf "$DATA_FOLDER" |
135 |
|
136 |
if [ ! -f ${SELF_EXTRACT} ] ; then |
137 |
echo "Downloading selfextract program" |
138 |
wget -q $WGET_SHOW_PROGRESSBAR "$URL_SELFEXTRACT_FOLDER/${OSFamily}-$ARCH/$SELF_EXTRACT" |
139 |
fi |
140 |
|
141 |
if [ ! -f "${GVSPKG_JRE}" ] ; then |
142 |
echo "Downloading JRE $URL_JRE_FOLDER/${GVSPKG_JRE}" |
143 |
wget -q $WGET_SHOW_PROGRESSBAR "$URL_JRE_FOLDER/${GVSPKG_JRE}" |
144 |
fi |
145 |
|
146 |
echo "Creating temp folder" |
147 |
mkdir -p "$DATA_FOLDER" |
148 |
cd "$DATA_FOLDER" |
149 |
|
150 |
|
151 |
# ------------------------------------------------------------- |
152 |
# Preparamos en $DATA_FOLDER los ficheros que vamos a meter en el 7zip |
153 |
# que queremos que sea autoextraible y autoejecutable. |
154 |
# - La carpeta jre |
155 |
# - El instalador del izpack |
156 |
# |
157 |
echo "Extracting JRE" |
158 |
unzip -q "../${GVSPKG_JRE}" 2>&1 | sed '/warning: stripped absolute path spec/ d' |
159 |
|
160 |
echo "Copying $INSTALL_JAR" |
161 |
cp "$INSTALL_JAR" . |
162 |
|
163 |
# ------------------------------------------------------------- |
164 |
# Creamos el 7zip |
165 |
echo "Creating archive file (7zip)" |
166 |
7z a "$DATA_ARCHIVE" . >/dev/null |
167 |
|
168 |
# ------------------------------------------------------------- |
169 |
# Creamos con el fichero 7zip generado el autoextraible |
170 |
echo "Making selfextract with archive file" |
171 |
|
172 |
SFX_CONFIG=";!@Install@!UTF-8! |
173 |
RunProgram=\".\\jre\\bin\\javaw.exe -jar .\\${INSTALL_JAR_BASENAME}\" |
174 |
GUIMode=\"1\" |
175 |
ExtractTitle=\"gvSIG Desktop installation.\" |
176 |
Title=\"gvSIG Desktop installation.\" |
177 |
GUIFlags=\"2+4\" |
178 |
;!@InstallEnd@!" |
179 |
|
180 |
echo "SFX config |
181 |
========== |
182 |
${SFX_CONFIG} |
183 |
==========" |
184 |
|
185 |
{ |
186 |
cat ${WORKINGFOLDER}/${SELF_EXTRACT} |
187 |
echo "${SFX_CONFIG}" |
188 |
cat "$DATA_ARCHIVE" |
189 |
} > "${INSTALL_JAR%.jar}.exe" |
190 |
|
191 |
echo "Created ${INSTALL_JAR%.jar}.exe" |
192 |
echo "" |
193 |
} |
194 |
|
195 |
|
196 |
mkexec() { |
197 |
OS="$1" |
198 |
ARCH="$2" |
199 |
INSTALL_JAR="$3" |
200 |
WORKINGFOLDER="$4" |
201 |
OSFamily="${OS/_*/}" |
202 |
mkdir -p "$WORKINGFOLDER" |
203 |
if [ "${OSFamily}" == "lin" ] ; then |
204 |
mkexec_unx "$OS" "$ARCH" "$INSTALL_JAR" "$WORKINGFOLDER" |
205 |
elif [ "${OSFamily}" == "darwin" ] ; then |
206 |
mkexec_unx "$OS" "$ARCH" "$INSTALL_JAR" "$WORKINGFOLDER" |
207 |
else |
208 |
mkexec_win "$OS" "$ARCH" "$INSTALL_JAR" "$WORKINGFOLDER" |
209 |
fi |
210 |
|
211 |
} |
212 |
|
213 |
main() { |
214 |
if [ "$#" != "5" ] ; then |
215 |
echo "$0: Usage: |
216 |
$0 gvsig-version gvsig-buildnumber gvsig-state gvsig-distribution folder" 2>&1 |
217 |
exit 1 |
218 |
fi |
219 |
GVSIG_VERSION="$1" |
220 |
GVSIG_BUILDNUMBER="$2" |
221 |
GVSIG_STATE="$3" |
222 |
GVSIG_DISTRIBUTION="$4" |
223 |
ROOTFOLDER="$5" |
224 |
|
225 |
echo " |
226 |
Making selfextract: |
227 |
root folder=$ROOTFOLDER |
228 |
" |
229 |
mkdir -p "$ROOTFOLDER" |
230 |
|
231 |
for os_arch in "lin_ubuntu_14.04 x86" "lin_ubuntu_14.04 x86_64" "darwin_macos_10.11 x86_64" "lin x86_64" "lin x86" "win x86_64" "win x86" |
232 |
do |
233 |
cd "$ROOTFOLDER" |
234 |
OS="${os_arch/ */}" |
235 |
ARCH="${os_arch/* /}" |
236 |
INSTALL_JAR_BASENAME="gvSIG-desktop-${GVSIG_VERSION}-${GVSIG_BUILDNUMBER}-${GVSIG_STATE}-${OS}-${ARCH}-${GVSIG_DISTRIBUTION}.jar" |
237 |
INSTALL_JAR="$ROOTFOLDER/$INSTALL_JAR_BASENAME" |
238 |
if [ ! -f "${INSTALL_JAR}" ] ; then |
239 |
echo "Downloading installer ${INSTALL_JAR_BASENAME}" |
240 |
wget -q $WGET_SHOW_PROGRESSBAR "$URL_DISTS/${GVSIG_VERSION}/builds/${GVSIG_BUILDNUMBER}/${INSTALL_JAR_BASENAME}" |
241 |
fi |
242 |
mkexec "$OS" "$ARCH" "$INSTALL_JAR" "$ROOTFOLDER/mkexec.tmp" |
243 |
done |
244 |
rm -rf "$ROOTFOLDER/mkexec.tmp" |
245 |
} |
246 |
|
247 |
main $@ |
248 |
|