Statistics
| Revision:

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