Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.framework / org.gvsig.andami / src / main / resources-application / tools / make-portable @ 42935

History | View | Annotate | Download (9.9 KB)

1
#!/bin/bash
2
#############################################################################
3
# Require la siguiente estructura de carpetas:
4
#
5
# - packages
6
#   - custom (carpeta con los paquetes adicionales a incluir en la portable)
7
#   - exclude (fichero con los codigos de paquetes a excluir)
8
# - standard
9
#   - gvSIG-desktop*-lin-x86-online.zip
10
#   - gvSIG-desktop*-lin-x86_64-online.zip
11
#   - gvSIG-desktop*-win-x86-online.zip
12
#   - gvSIG-desktop*-win-x86_64-online.zip
13
#   - gvSIG-desktop*-lin-x86.gvspkg
14
#   - gvSIG-desktop*-lin-x86_64.gvspkg
15
#   - gvSIG-desktop*-win-x86.gvspkg
16
#   - gvSIG-desktop*-win-x86_64.gvspkg
17
# - patchs
18
#   - patchs.sh (se ejecuta antes que los scripts de ant y zipear la instalacion)
19
# - make-portable
20
#
21
# Y se ejecutara el archivo "make-portable" desde ese directorio.
22
#
23
# Al final se crean las carpetas y archivos:
24
#
25
# - target/gvsig-desktop-VERSION-lin-x86
26
# - target/gvsig-desktop-VERSION-lin-x86_64
27
# - target/gvsig-desktop-VERSION-win-x86
28
#
29
# - target/gvsig-desktop-VERSION-lin-x86.zip
30
# - target/gvsig-desktop-VERSION-lin-x86_64.zip
31
# - target/gvsig-desktop-VERSION-win-x86.zip
32
#
33
##############################################################################
34

    
35
#set -x
36

    
37
#function handle_error() {
38
#    echo "FAILED: line $1, exit code $2"
39
#    exit 1
40
#}
41
#
42
#trap 'handle_error $LINENO $?' ERR
43

    
44
set -e
45

    
46
cd "$(dirname $0)"
47
SCRIPT_NAME=$(basename $0)
48

    
49
export BASEFOLDER="$PWD"
50
export TARGET="$BASEFOLDER/target"
51
export PATCHSFOLDER=$BASEFOLDER/patchs
52

    
53
function logger_info() {
54
    echo $*
55
}
56

    
57
function logger_warn() {
58
    echo $*
59
}
60

    
61
function get_package_info() {
62
    PACKAGE_PATH="$1"
63
    PACKAGE_NAME="$(basename $PACKAGE_PATH)"
64
    PACKAGE_CODE=$(expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-\\([a-zA-Z0-9._]*\\)-")
65
    set +e
66
    PACKAGE_VERSION=$(expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-[a-zA-Z0-9._]*-\\([0-9.]*-[0-9]*\\)-")
67
    set -e
68
    if [ "X${PACKAGE_VERSION}X" == "XX" ] ; then
69
        PACKAGE_VERSION=$(expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9._]*-[a-zA-Z0-9._]*-\\([0-9.]*-[A-Z][.A-Za-z0-9_]*-[0-9]*\\)-")
70
    fi
71
    gpi_x =$(unzip -lc "${PACKAGE_PATH}" "${PACKAGE_CODE}/package.info" | grep type)
72
    PACKAGE_TYPE="${gpi_x/type=/}"
73
}
74

    
75
function install_symbols() {
76
    INSTALL_FOLDER="$1"
77

    
78
    cd "$INSTALL_FOLDER"
79
    mkdir -p "home/gvSIG/plugins/org.gvsig.app.mainplugin/Symbols"
80
    cd "home/gvSIG/plugins/org.gvsig.app.mainplugin/Symbols"
81
    rm -rf "$PACKAGE_CODE"
82
    logger_info "Install symbols $PACKAGE_CODE $PACKAGE_VERSION"
83
    unzip -qq "$PACKAGE_PATH" 2>&1 | sed "/warning:  stripped absolute path/d"
84
}
85

    
86
function install_script() {
87
    INSTALL_FOLDER="$1"
88

    
89
    cd "$INSTALL_FOLDER"
90
    mkdir -p "home/gvSIG/plugins/org.gvsig.scripting.app.mainplugin/scripts/addons"
91
    cd "home/gvSIG/plugins/org.gvsig.scripting.app.mainplugin/scripts/addons"
92
    rm -rf "$PACKAGE_CODE"
93
    logger_info "Install script $PACKAGE_CODE $PACKAGE_VERSION"
94
    unzip -qq "$PACKAGE_PATH" 2>&1 | sed "/warning:  stripped absolute path/d"
95
}
96

    
97
function install_jCRS_EPSG() {
98
    INSTALL_FOLDER="$1"
99

    
100
    cd "$INSTALL_FOLDER"
101
    mkdir -p "gvSIG/extensiones/org.gvsig.projection.app.jcrs/db/EPSG"
102
    cd "gvSIG/extensiones/org.gvsig.projection.app.jcrs/db/EPSG"
103
    rm -rf "$PACKAGE_CODE"
104
    logger_info "Install jCRS EPSG data base $PACKAGE_CODE $PACKAGE_VERSION"
105
    unzip -qq "$PACKAGE_PATH" 2>&1 | sed "/warning:  stripped absolute path/d"
106
}
107

    
108
function install_plugin() {
109
    INSTALL_FOLDER="$1"
110

    
111
    cd "$INSTALL_FOLDER/gvSIG/extensiones"
112
    rm -rf "$PACKAGE_CODE"
113
    logger_info "Install plugin $PACKAGE_CODE $PACKAGE_VERSION"
114
    unzip -qq "$PACKAGE_PATH" 2>&1 | sed "/warning:  stripped absolute path/d"
115
}
116

    
117
function install_translations() {
118
    INSTALL_FOLDER="$1"
119

    
120
    cd "$INSTALL_FOLDER/i18n"
121
    rm -rf "$PACKAGE_CODE"
122
    logger_info "Install translations $PACKAGE_CODE $PACKAGE_VERSION"
123
    unzip -qq "$PACKAGE_PATH" 2>&1 | sed "/warning:  stripped absolute path/d"
124
}
125

    
126
function run_plugins_install_scripts() {
127
    INSTALL_FOLDER="$1"
128

    
129
    logger_info ""
130
    logger_info "Running plugins install scripts"
131
    cd "$INSTALL_FOLDER/gvSIG/extensiones"
132
    for PLUGIN_CODE in *
133
    do
134
        if [ -f "$INSTALL_FOLDER/gvSIG/extensiones/$PLUGIN_CODE/install/install.xml" ] ; then
135
            logger_info "Running custom install script of $PLUGIN_CODE"
136
            cd $INSTALL_FOLDER
137
            ant -Dgvsig_dir="$INSTALL_FOLDER" -Dextensions_dir="$INSTALL_FOLDER/gvSIG/extensiones" -f "$INSTALL_FOLDER/gvSIG/extensiones/$PLUGIN_CODE/install/install.xml"
138
        fi
139
    done
140
}
141

    
142
function install_packages() {
143
    INSTALL_FOLDER="$1"
144
    PACKAGES_FOLDER="$2"
145

    
146
    logger_info ""
147
    logger_info "Processing $(basename $PACKAGES_FOLDER) packages"
148
    for PACKAGE_PATH in $PACKAGES_FOLDER/*.gvspkg
149
    do
150
      if [ -f "$PACKAGE_PATH" ] ; then
151
        PACKAGE_NAME="$(basename $PACKAGE_PATH)"
152
        get_package_info $PACKAGE_NAME
153
        if include_package $PACKAGE_CODE ; then
154
          case $PACKAGE_TYPE in
155
          plugin)
156
            install_plugin "$INSTALL_FOLDER"
157
            ;;
158
          jCRS_EPSG)
159
            install_jCRS_EPSG "$INSTALL_FOLDER"
160
            ;;
161
          symbols)
162
            install_symbols "$INSTALL_FOLDER"
163
            ;;
164
          Script)
165
            install_script "$INSTALL_FOLDER"
166
            ;;
167
          translations)
168
            install_translations "$INSTALL_FOLDER"
169
            ;;
170
          *)
171
            echo "ERROR: Type of package $PACKAGE_TYPE of $PACKAGE_NAME not supported."
172
            exit 1
173
            ;;
174
          esac
175
        else
176
          logger_info "Exclude package $PACKAGE_CODE"
177
          cp "$PACKAGE_PATH" "$INSTALL_FOLDER/install"
178
        fi
179
      fi
180
    done
181
}
182

    
183
function include_package() {
184
    set +e
185
    egrep  "^$1\$" "$BASEFOLDER/packages/excludes" >/dev/null
186
    FOUND=$?
187
    set -e
188
    if [ "$FOUND" == 1 ] ; then
189
        return 0
190
    fi
191
    return 1
192
}
193

    
194

    
195
function remove_excluded_packages() {
196
    logger_info "Checking plugins to remove"
197
    cd "$INSTALL_FOLDER/gvSIG/extensiones"
198
    while read line; do
199
        if [ -d "$line" ] ; then
200
            logger_info "Removing plugin $line"
201
            rm -rf "$line"
202
        fi
203
    done < "$BASEFOLDER/packages/excludes"
204
}
205

    
206
function install_portable_configuration_files() {
207
    logger_info "Install portable configuration file (gvSIG.config)"
208
    cp "$INSTALL_FOLDER/tools/gvSIG.config" "$INSTALL_FOLDER"
209
    chmod a+x "$INSTALL_FOLDER/gvSIG.sh"
210
}
211

    
212
function zipfolder() {
213
    echo zip -qyr9 "$1" "$2"
214
    if type zip >/dev/null 2>/dev/null
215
    then
216
  zip -qyr9 "$1" "$2"
217
    else
218
      echo "
219

    
220
  WARNING: zip command not found.
221
           $1 not compressed.
222

    
223
"
224
    fi
225
}
226

    
227
function mkdist() {
228
    cd $BASEFOLDER/standard
229

    
230
    export PORTABLE_OS="$1"
231
    export PORTABLE_OSNAME="$2"
232
    export PORTABLE_PLATFORM="$3"
233

    
234
    export ONLINE_OS="$PORTABLE_OSNAME"
235
    if [ "$PORTABLE_OSNAME" == "darwin" ] ; then
236
	export ONLINE_OS="lin"
237
    fi
238

    
239
    export PORTABLE_VERSION=$(expr *${ONLINE_OS}-${PORTABLE_PLATFORM}-online.zip : "gvSIG-desktop-\\([0-9.]*-[0-9]*\\)")
240
    export PORTABLE_STATUS=$(expr *${ONLINE_OS}-${PORTABLE_PLATFORM}-online.zip : "gvSIG-desktop-[0-9.]*-[0-9]*-\\([a-zA-Z]*[0-9]*\)")
241
    export PORTABLE_NAME="gvSIG-desktop-$PORTABLE_VERSION-${PORTABLE_STATUS}-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
242

    
243
    export INSTALL_FOLDER="$TARGET/$PORTABLE_NAME"
244

    
245
    logger_info "Removing previous files"
246
    rm -rf "$TARGET/gvsig-desktop"
247
    rm -rf "$INSTALL_FOLDER"
248
    rm -f  "$TARGET/${PORTABLE_NAME}.zip"
249
    rm -rf "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
250

    
251
    logger_info "Uncompressing ${PORTABLE_OSNAME} base files"
252
    cd $TARGET
253
    mkdir $PORTABLE_NAME
254
    cd $PORTABLE_NAME
255
    unzip -qq "$BASEFOLDER/standard/gvSIG-desktop-$PORTABLE_VERSION-$PORTABLE_STATUS-${ONLINE_OS}-${PORTABLE_PLATFORM}-online.zip"
256
    #mv gvSIG-desktop-${PORTABLE_VERSION} $PORTABLE_NAME
257

    
258
    logger_info "Uncompressing ${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} package set"
259
    mkdir -p "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
260
    cd "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
261
    unzip -qq "$BASEFOLDER/standard/gvSIG-desktop-${PORTABLE_VERSION}-${PORTABLE_STATUS}-${PORTABLE_OS}-${PORTABLE_PLATFORM}.gvspks"
262

    
263
    echo Removing package "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}/gvSIG-desktop-2.3.0-org.gvsig.gdal.app.mainplugin-"*-all-all-j1_7.gvspkg
264
    rm -f "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}/gvSIG-desktop-2.3.0-org.gvsig.gdal.app.mainplugin-"*-all-all-j1_7.gvspkg
265

    
266
    install_packages "$INSTALL_FOLDER" "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
267

    
268
    install_packages "$INSTALL_FOLDER" "$BASEFOLDER/packages/custom"
269

    
270
    install_portable_configuration_files
271

    
272
    remove_excluded_packages
273

    
274
    if [ -f $PATCHSFOLDER/patchs.sh ] ; then
275
        chmod a+x $PATCHSFOLDER/patchs.sh
276
        logger_info "Appling patch to the instalation."
277
        source $PATCHSFOLDER/patchs.sh
278
    fi
279

    
280
    run_plugins_install_scripts $INSTALL_FOLDER
281

    
282
    if [ "$PORTABLE_OSNAME" == "darwin" ] ; then
283
        mkdir "$INSTALL_FOLDER/Contents"
284
        mkdir "$INSTALL_FOLDER/Contents/MacOS"
285
        echo '#!/bin/bash
286
x=$(dirname $0)
287
x=$(dirname $x)
288
x=$(dirname $x)
289
exec "$x/gvSIG.sh"
290
' >"$INSTALL_FOLDER/Contents/MacOS/${PORTABLE_NAME}"
291
        chmod a+x "$INSTALL_FOLDER/Contents/MacOS/${PORTABLE_NAME}"
292
        mv "$INSTALL_FOLDER" "${INSTALL_FOLDER}.app"
293
        INSTALL_FOLDER="${INSTALL_FOLDER}.app"
294
        PORTABLE_NAME="${PORTABLE_NAME}.app"
295
    fi
296

    
297
    logger_info "Compresing ${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} portable (this take a moment)"
298
    cd "$TARGET"
299
    zipfolder "${PORTABLE_NAME}.zip" "${PORTABLE_NAME}"
300

    
301
    logger_info "Removing temporary package folder"
302
    rm -rf $TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}
303

    
304
    logger_info "${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} portable created."
305
}
306

    
307

    
308
function main() {
309
    mkdist lin linux x86
310
    mkdist lin linux x86_64
311
    mkdist win windows x86
312
    mkdist win windows x86_64
313
    mkdist darwin_macos_10.11 darwin x86_64
314
    mkdist lin_ubuntu_16.04 linux x86_64
315
    echo "Creation ended"
316
}
317

    
318
mkdir -p "$TARGET"
319
main | tee "$TARGET/${SCRIPT_NAME}.log"
320