Statistics
| Revision:

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

History | View | Annotate | Download (6.53 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_lin_x86_64="gvSIG-desktop-2.3.0-jre-1.8.0-72-testing-lin-x86_64-j1_8.gvspkg"
11
GVSPKG_JRE_lin_x86="gvSIG-desktop-2.3.0-jre-1.8.0-92-testing-lin-x86-j1_8.gvspkg"
12
GVSPKG_JRE_win_x86_64="gvSIG-desktop-2.3.0-jre-1.8.0-65-testing-win-x86_64-j1_8.gvspkg"
13
GVSPKG_JRE_win_x86="gvSIG-desktop-2.3.0-jre-1.8.0-73-testing-win-x86-j1_8.gvspkg"
14

    
15
#=============================================
16
# self extractors to use
17
URL_SELFEXTRACT_FOLDER="http://downloads.gvsig.org/download/gvsig-desktop/runtimes/selfextract"
18

    
19
#=============================================
20
# Where to find izpack installers
21
URL_DISTS="http://downloads.gvsig.org/download/gvsig-desktop-testing/dists"
22

    
23

    
24

    
25
#=============================================
26
# for wget >= 1.16
27
WGET_SHOW_PROGRESSBAR="--show-progress"
28
WGET_SHOW_PROGRESSBAR=""
29

    
30

    
31
mkexec_lin() {
32
  OS="lin"
33
  ARCH=$1
34
  INSTALL_JAR="$2"
35
  WORKINGFOLDER="$3"
36

    
37
  INSTALL_JAR_BASENAME=$(basename "$INSTALL_JAR")
38
  GVSPKG_JRE="GVSPKG_JRE_${OS}_${ARCH}"
39
  GVSPKG_JRE="${!GVSPKG_JRE}"
40
  SELF_EXTRACT="selfextract-${OS}-${ARCH}"
41
  DATA_FOLDER="$WORKINGFOLDER/data-$OS-$ARCH"
42
  DATA_ARCHIVE="$WORKINGFOLDER/data-$OS-$ARCH.tar"
43

    
44
  cd "$WORKINGFOLDER"
45

    
46
  echo "Making selfextract for ${OS} ${ARCH} using:"
47
  echo "  selfextract: ${SELF_EXTRACT}"
48
  echo "  jre: ${GVSPKG_JRE}"
49
  echo "  java installer: ${INSTALL_JAR_BASENAME}"
50
  echo "  working folder: ${WORKINGFOLDER}"
51

    
52

    
53
  echo "Remove previous temporary files"
54
  rm -f "$DATA_ARCHIVE"
55
  rm -rf "$DATA_FOLDER"
56

    
57
  if [ ! -f ${SELF_EXTRACT} ] ; then
58
    echo "Downloading selfextract program ${SELF_EXTRACT}"
59
    wget  -q $WGET_SHOW_PROGRESSBAR "$URL_SELFEXTRACT_FOLDER/$OS-$ARCH/${SELF_EXTRACT}"
60
    chmod a+x ${SELF_EXTRACT}
61
  fi
62

    
63
  if [ ! -f "${GVSPKG_JRE}" ] ; then
64
    echo "Downloading JRE $URL_JRE_FOLDER/${GVSPKG_JRE}"
65
    wget  -q $WGET_SHOW_PROGRESSBAR "$URL_JRE_FOLDER/${GVSPKG_JRE}"
66
  fi
67

    
68
  echo "Creating temp folder"
69
  mkdir -p "$DATA_FOLDER"
70
  cd "$DATA_FOLDER"
71

    
72
  # -------------------------------------------------------------
73
  # Preparamos en $DATA_FOLDER los ficheros que vamos a meter en el tar
74
  # que queremos que sea autoextraible y autoejecutable.
75
  # - La carpeta jre
76
  # - El instalador del izpack
77
  # - El autorun.sh
78
  #
79
  echo "Extracting JRE"
80
  unzip -q  "../${GVSPKG_JRE}" 2>&1 | sed  '/warning:  stripped absolute path spec/ d'
81
  chmod a+x "jre/bin/java"
82

    
83
  echo "Coping $INSTALL_JAR"
84
  cp "$INSTALL_JAR" .
85

    
86
  echo "#!/bin/sh
87
exec ./jre/bin/java -jar \"$INSTALL_JAR_BASENAME\"
88
" > autorun.sh
89
  chmod a+x "autorun.sh"
90

    
91
  # -------------------------------------------------------------
92
  # Creamos el tar
93
  echo "Creating archive file (tar)"
94
  tar cf "$DATA_ARCHIVE" .
95

    
96
  # -------------------------------------------------------------
97
  # Creamos con el fichero tar generado el autoextraible
98
  echo "Making selfextract with archive file"
99
  {
100
    cat ${WORKINGFOLDER}/${SELF_EXTRACT}
101
    echo ";!@selfextract@!"
102
    cat "$DATA_ARCHIVE"
103
  } > "${INSTALL_JAR%.jar}.run"
104
  echo "Created ${INSTALL_JAR%.jar}.run"
105
  echo ""
106
}
107

    
108

    
109
mkexec_win() {
110
  OS="win"
111
  ARCH=$1
112
  INSTALL_JAR="$2"
113
  WORKINGFOLDER="$3"
114

    
115
  INSTALL_JAR_BASENAME=$(basename "$INSTALL_JAR")
116
  GVSPKG_JRE="GVSPKG_JRE_${OS}_${ARCH}"
117
  GVSPKG_JRE="${!GVSPKG_JRE}"
118
  SELF_EXTRACT="7zsd_LZMA_Dialogs-${OS}-${ARCH}.sfx"
119
  DATA_FOLDER="$WORKINGFOLDER/data-$OS-$ARCH"
120
  DATA_ARCHIVE="$WORKINGFOLDER/data-$OS-$ARCH.tar"
121

    
122
  cd "$WORKINGFOLDER"
123

    
124
  echo "Making selfextract for ${OS} ${ARCH} using:"
125
  echo "  selfextract: ${SELF_EXTRACT}"
126
  echo "  jre: ${GVSPKG_JRE}"
127
  echo "  java installer: ${INSTALL_JAR_BASENAME}"
128
  echo "  working folder: ${WORKINGFOLDER}"
129

    
130
  echo "Remove previous temporary files"
131
  rm -f "$DATA_ARCHIVE"
132
  rm -rf "$DATA_FOLDER"
133

    
134
  if [ ! -f ${SELF_EXTRACT} ] ; then
135
    echo "Downloading selfextract program"
136
    wget  -q $WGET_SHOW_PROGRESSBAR "$URL_SELFEXTRACT_FOLDER/$OS-$ARCH/$SELF_EXTRACT"
137
  fi
138

    
139
  if [ ! -f "${GVSPKG_JRE}" ] ; then
140
    echo "Downloading JRE $URL_JRE_FOLDER/${GVSPKG_JRE}"
141
    wget  -q $WGET_SHOW_PROGRESSBAR  "$URL_JRE_FOLDER/${GVSPKG_JRE}"
142
  fi
143

    
144

    
145
  echo "Creating temp folder"
146
  mkdir -p "$DATA_FOLDER"
147
  cd "$DATA_FOLDER"
148

    
149

    
150
  # -------------------------------------------------------------
151
  # Preparamos en $DATA_FOLDER los ficheros que vamos a meter en el 7zip
152
  # que queremos que sea autoextraible y autoejecutable.
153
  # - La carpeta jre
154
  # - El instalador del izpack
155
  #
156
  echo "Extracting JRE"
157
  unzip -q  "../${GVSPKG_JRE}" 2>&1 | sed  '/warning:  stripped absolute path spec/ d'
158

    
159
  echo "Copying $INSTALL_JAR"
160
  cp "$INSTALL_JAR" .
161

    
162
  # -------------------------------------------------------------
163
  # Creamos el tar
164
  echo "Creating archive file (7zip)"
165
  7z a "$DATA_ARCHIVE" . >/dev/null
166

    
167
  # -------------------------------------------------------------
168
  # Creamos con el fichero 7zip generado el autoextraible
169
  echo "Making selfextract with archive file"
170
  {
171
    cat ${WORKINGFOLDER}/${SELF_EXTRACT}
172
    echo ";!@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=\"6\"
178
;!@InstallEnd@!"
179
    cat "$DATA_ARCHIVE"
180
  } > "${INSTALL_JAR%.jar}.exe"
181

    
182
  echo "Created ${INSTALL_JAR%.jar}.exe"
183
  echo ""
184
}
185

    
186

    
187
mkexec() {
188
  OS="$1"
189
  ARCH="$2"
190
  INSTALL_JAR="$3"
191
  WORKINGFOLDER="$4"
192
  mkdir -p "$WORKINGFOLDER"
193
  if [ "$OS" == "lin" ] ; then
194
    mkexec_lin "$ARCH" "$INSTALL_JAR" "$WORKINGFOLDER"
195
  else
196
    mkexec_win "$ARCH" "$INSTALL_JAR" "$WORKINGFOLDER"
197
  fi
198

    
199
}
200

    
201
main() {
202
  if [ "$#" != "5" ] ; then
203
    echo "$0: Usage:
204
  $0 gvsig-version gvsig-buildnumber gvsig-state gvsig-distribution folder" 2>&1
205
    exit 1
206
  fi
207
  GVSIG_VERSION="$1"
208
  GVSIG_BUILDNUMBER="$2"
209
  GVSIG_STATE="$3"
210
  GVSIG_DISTRIBUTION="$4"
211
  ROOTFOLDER="$5"
212

    
213
  echo "
214
mkexec
215
  root folder=$ROOTFOLDER
216
"
217
  mkdir -p "$ROOTFOLDER"
218

    
219
  for os_arch in "lin x86_64" "lin x86" "win x86_64" "win x86"
220
  do
221
    cd "$ROOTFOLDER"
222
    OS="${os_arch/ */}"
223
    ARCH="${os_arch/* /}"
224
    INSTALL_JAR_BASENAME="gvSIG-desktop-${GVSIG_VERSION}-${GVSIG_BUILDNUMBER}-${GVSIG_STATE}-${OS}-${ARCH}-${GVSIG_DISTRIBUTION}.jar"
225
    INSTALL_JAR="$ROOTFOLDER/$INSTALL_JAR_BASENAME"
226
    if [ ! -f "${INSTALL_JAR}" ] ; then
227
      echo "Downloading installer ${INSTALL_JAR_BASENAME}"
228
      wget  -q $WGET_SHOW_PROGRESSBAR "$URL_DISTS/${GVSIG_VERSION}/builds/${GVSIG_BUILDNUMBER}/${INSTALL_JAR_BASENAME}"
229
    fi
230
    mkexec "$OS" "$ARCH" "$INSTALL_JAR" "$ROOTFOLDER/mkexec.tmp"
231
  done
232
  rm -rf "$ROOTFOLDER/mkexec.tmp"
233
}
234

    
235
main $@
236