Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.framework / org.gvsig.andami / src / main / resources-application / tools / mkexec @ 43684

History | View | Annotate | Download (7.04 KB)

1 42815 jjdelcerro
#!/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 42892 jjdelcerro
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 42815 jjdelcerro
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 42892 jjdelcerro
mkexec_unx() {
32 42887 jjdelcerro
  OS=$1
33
  ARCH=$2
34
  INSTALL_JAR="$3"
35
  WORKINGFOLDER="$4"
36 42892 jjdelcerro
  OSFamily="${OS/_*/}"
37 42815 jjdelcerro
38
  INSTALL_JAR_BASENAME=$(basename "$INSTALL_JAR")
39 42889 jjdelcerro
  GVSPKG_JRE="GVSPKG_JRE_${OSFamily}_${ARCH}"
40 42815 jjdelcerro
  GVSPKG_JRE="${!GVSPKG_JRE}"
41 42887 jjdelcerro
  SELF_EXTRACT="selfextract-${OSFamily}-${ARCH}"
42
  DATA_FOLDER="$WORKINGFOLDER/data-${OS}-$ARCH"
43
  DATA_ARCHIVE="$WORKINGFOLDER/data-${OS}-$ARCH.tar"
44 42815 jjdelcerro
45
  cd "$WORKINGFOLDER"
46
47
  echo "Making selfextract for ${OS} ${ARCH} using:"
48 42824 jjdelcerro
  echo "  selfextract: ${SELF_EXTRACT}"
49
  echo "  jre: ${GVSPKG_JRE}"
50
  echo "  java installer: ${INSTALL_JAR_BASENAME}"
51
  echo "  working folder: ${WORKINGFOLDER}"
52 42815 jjdelcerro
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 42887 jjdelcerro
    wget  -q $WGET_SHOW_PROGRESSBAR "$URL_SELFEXTRACT_FOLDER/${OSFamily}-$ARCH/${SELF_EXTRACT}"
61 42815 jjdelcerro
    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 42824 jjdelcerro
  {
101
    cat ${WORKINGFOLDER}/${SELF_EXTRACT}
102 42829 jjdelcerro
    echo ";!@selfextract@!"
103 42824 jjdelcerro
    cat "$DATA_ARCHIVE"
104
  } > "${INSTALL_JAR%.jar}.run"
105 42815 jjdelcerro
  echo "Created ${INSTALL_JAR%.jar}.run"
106
  echo ""
107
}
108
109
110
mkexec_win() {
111 42887 jjdelcerro
  OSFamily="win"
112
  OS="$1"
113
  ARCH=$2
114
  INSTALL_JAR="$3"
115
  WORKINGFOLDER="$4"
116 42815 jjdelcerro
117
  INSTALL_JAR_BASENAME=$(basename "$INSTALL_JAR")
118 42887 jjdelcerro
  GVSPKG_JRE="GVSPKG_JRE_${OSFamily}_${ARCH}"
119 42815 jjdelcerro
  GVSPKG_JRE="${!GVSPKG_JRE}"
120 43306 fdiaz
  SELF_EXTRACT="7zSD-${OSFamily}-${ARCH}.sfx"
121 42887 jjdelcerro
  DATA_FOLDER="$WORKINGFOLDER/data-${OSFamily}-$ARCH"
122
  DATA_ARCHIVE="$WORKINGFOLDER/data-${OSFamily}-$ARCH.7z"
123 42815 jjdelcerro
124
  cd "$WORKINGFOLDER"
125
126 42887 jjdelcerro
  echo "Making selfextract for ${OSFamily} ${ARCH} using:"
127 42824 jjdelcerro
  echo "  selfextract: ${SELF_EXTRACT}"
128
  echo "  jre: ${GVSPKG_JRE}"
129
  echo "  java installer: ${INSTALL_JAR_BASENAME}"
130
  echo "  working folder: ${WORKINGFOLDER}"
131 42815 jjdelcerro
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 42887 jjdelcerro
    wget  -q $WGET_SHOW_PROGRESSBAR "$URL_SELFEXTRACT_FOLDER/${OSFamily}-$ARCH/$SELF_EXTRACT"
139 42815 jjdelcerro
  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 42837 jjdelcerro
  # Creamos el 7zip
165 42815 jjdelcerro
  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 43306 fdiaz
172
    SFX_CONFIG=";!@Install@!UTF-8!
173
RunProgram=\".\\jre\\bin\\javaw.exe -jar .\\${INSTALL_JAR_BASENAME}\"
174 42815 jjdelcerro
GUIMode=\"1\"
175
ExtractTitle=\"gvSIG Desktop installation.\"
176
Title=\"gvSIG Desktop installation.\"
177 43306 fdiaz
GUIFlags=\"2+4\"
178 42829 jjdelcerro
;!@InstallEnd@!"
179 43306 fdiaz
180
    echo "SFX config
181
==========
182
${SFX_CONFIG}
183
=========="
184
185
  {
186
    cat ${WORKINGFOLDER}/${SELF_EXTRACT}
187
    echo "${SFX_CONFIG}"
188 42815 jjdelcerro
    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 42892 jjdelcerro
  OSFamily="${OS/_*/}"
202 42815 jjdelcerro
  mkdir -p "$WORKINGFOLDER"
203 42892 jjdelcerro
  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 42815 jjdelcerro
  else
208 42887 jjdelcerro
    mkexec_win "$OS" "$ARCH" "$INSTALL_JAR" "$WORKINGFOLDER"
209 42815 jjdelcerro
  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 42829 jjdelcerro
225 42824 jjdelcerro
  echo "
226 42837 jjdelcerro
Making selfextract:
227 42824 jjdelcerro
  root folder=$ROOTFOLDER
228
"
229 42815 jjdelcerro
  mkdir -p "$ROOTFOLDER"
230
231 43456 jjdelcerro
  for os_arch in "lin x86_64" "win x86_64" "lin x86" "win x86" "darwin_macos_10.11 x86_64" "lin_ubuntu_14.04 x86" "lin_ubuntu_14.04 x86_64"
232 42815 jjdelcerro
  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 42824 jjdelcerro
    mkexec "$OS" "$ARCH" "$INSTALL_JAR" "$ROOTFOLDER/mkexec.tmp"
243 42815 jjdelcerro
  done
244 42824 jjdelcerro
  rm -rf "$ROOTFOLDER/mkexec.tmp"
245 42815 jjdelcerro
}
246
247 42824 jjdelcerro
main $@