Statistics
| Revision:

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

History | View | Annotate | Download (10.1 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*.online.zip
10
#   - gvSIG-desktop*-lin-x86.gvspkg
11
#   - gvSIG-desktop*-lin-x86_64.gvspkg
12
#   - gvSIG-desktop*-win-x86.gvspkg
13
# - patchs 
14
#   - patchs.sh (se ejecuta antes que los scripts de ant y zipear la instalacion)
15
# - make-portable
16
#
17
# Y se ejecutara el archivo "make-portable" desde ese directorio.
18
#
19
# Al final se crean las carpetas y archivos:
20
#
21
# - target/gvsig-desktop-VERSION-lin-x86
22
# - target/gvsig-desktop-VERSION-lin-x86_64
23
# - target/gvsig-desktop-VERSION-win-x86
24
#
25
# - target/gvsig-desktop-VERSION-lin-x86.zip
26
# - target/gvsig-desktop-VERSION-lin-x86_64.zip
27
# - target/gvsig-desktop-VERSION-win-x86.zip
28
#
29
##############################################################################
30

    
31
#set -x
32

    
33
#function handle_error() {
34
#    echo "FAILED: line $1, exit code $2"
35
#    exit 1
36
#}
37
#
38
#trap 'handle_error $LINENO $?' ERR 
39

    
40
set -e
41

    
42
cd "$(dirname $0)"
43
SCRIPT_NAME=$(basename $0)
44

    
45
export BASEFOLDER="$PWD"
46
export TARGET="$BASEFOLDER/target"
47
export PATCHSFOLDER=$BASEFOLDER/patchs
48

    
49
function logger_info() {
50
    echo $*
51
}
52

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

    
57
function get_package_info() {
58
    PACKAGE_PATH="$1"
59
    PACKAGE_NAME="$(basename $PACKAGE_PATH)"
60
    PACKAGE_CODE=$(expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-\\([a-zA-Z0-9._]*\\)-")
61
    set +e
62
    PACKAGE_VERSION=$(expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-[a-zA-Z0-9._]*-\\([0-9.]*-[0-9]*\\)-")
63
    set -e
64
    if [ "X${PACKAGE_VERSION}X" == "XX" ] ; then
65
        PACKAGE_VERSION=$(expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9._]*-[a-zA-Z0-9._]*-\\([0-9.]*-[A-Z][.A-Za-z0-9_]*-[0-9]*\\)-")
66
    fi
67
}
68

    
69
function install_symbols() {
70
    INSTALL_FOLDER="$1"
71
    get_package_info $2
72

    
73
    cd "$INSTALL_FOLDER"
74
    mkdir -p "home/gvSIG/plugins/org.gvsig.app.mainplugin/Symbols"
75
    cd "home/gvSIG/plugins/org.gvsig.app.mainplugin/Symbols"
76
    rm -rf "$PACKAGE_CODE"
77
    if include_package $PACKAGE_CODE ; then
78
        logger_info "Install symbols $PACKAGE_CODE $PACKAGE_VERSION"
79
        unzip -qq "$PACKAGE_PATH" 2>&1 | sed "/warning:  stripped absolute path/d"
80
    else
81
        logger_info "Exclude symbols $PACKAGE_CODE"
82
        cp "$PACKAGE_PATH" "$INSTALL_FOLDER/install"
83
    fi
84
}
85

    
86
function install_jCRS_EPSG() {
87
    INSTALL_FOLDER="$1"
88
    get_package_info $2
89

    
90
    cd "$INSTALL_FOLDER"
91
    mkdir -p "gvSIG/extensiones/org.gvsig.projection.app.jcrs/db/EPSG"
92
    cd "gvSIG/extensiones/org.gvsig.projection.app.jcrs/db/EPSG"
93
    rm -rf "$PACKAGE_CODE"
94
    if include_package $PACKAGE_CODE ; then
95
        logger_info "Install jCRS EPSG data base $PACKAGE_CODE $PACKAGE_VERSION"
96
        unzip -qq "$PACKAGE_PATH" 2>&1 | sed "/warning:  stripped absolute path/d"
97
    else
98
        logger_info "Exclude jCRS EPSG data base $PACKAGE_CODE"
99
        cp "$PACKAGE_PATH" "$INSTALL_FOLDER/install"
100
    fi
101
}
102

    
103
function install_plugin() {
104
    INSTALL_FOLDER="$1"
105
    get_package_info $2
106

    
107
    cd "$INSTALL_FOLDER/gvSIG/extensiones"
108
    rm -rf "$PACKAGE_CODE"
109
    if include_package $PACKAGE_CODE ; then
110
        logger_info "Install plugin $PACKAGE_CODE $PACKAGE_VERSION"
111
        unzip -qq "$PACKAGE_PATH" 2>&1 | sed "/warning:  stripped absolute path/d"
112
    else
113
        logger_info "Exclude plugin $PACKAGE_CODE"
114
        cp "$PACKAGE_PATH" "$INSTALL_FOLDER/install"
115
    fi
116
}
117

    
118
function install_translations() {
119
    INSTALL_FOLDER="$1"
120
    get_package_info $2
121

    
122
    cd "$INSTALL_FOLDER/i18n"
123
    rm -rf "$PACKAGE_CODE"
124
    if include_package $PACKAGE_CODE ; then
125
        logger_info "Install translations $PACKAGE_CODE $PACKAGE_VERSION"
126
        unzip -qq "$PACKAGE_PATH" 2>&1 | sed "/warning:  stripped absolute path/d"
127
    else
128
        logger_info "Exclude translations $PACKAGE_CODE"
129
        cp "$PACKAGE_PATH" "$INSTALL_FOLDER/install"
130
    fi
131
}
132

    
133
function run_plugins_install_scripts() {
134
    INSTALL_FOLDER="$1"
135
    
136
    logger_info ""
137
    logger_info "Running plugins install scripts"
138
    cd "$INSTALL_FOLDER/gvSIG/extensiones"
139
    for PLUGIN_CODE in *
140
    do
141
        if [ -f "$INSTALL_FOLDER/gvSIG/extensiones/$PLUGIN_CODE/install/install.xml" ] ; then
142
            logger_info "Running custom install script of $PLUGIN_CODE"
143
            cd $INSTALL_FOLDER
144
            ant -Dgvsig_dir="$INSTALL_FOLDER" -Dextensions_dir="$INSTALL_FOLDER/gvSIG/extensiones" -f "$INSTALL_FOLDER/gvSIG/extensiones/$PLUGIN_CODE/install/install.xml"
145
        fi
146
    done
147
}
148

    
149
function install_packages() {
150
    INSTALL_FOLDER="$1"
151
    PACKAGES_FOLDER="$2"
152
    
153
    logger_info ""
154
    logger_info "Processing $(basename $PACKAGES_FOLDER) packages"
155
    for PACKAGE_PATH in $PACKAGES_FOLDER/*.gvspkg
156
    do
157
      if [ -f "$PACKAGE_PATH" ] ; then
158
        PACKAGE_NAME="$(basename $PACKAGE_PATH)"
159
        if expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-translations[.]" >/dev/null ; then
160
          install_translations "$INSTALL_FOLDER" "$PACKAGE_PATH"
161
        elif expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-symbols[.]"  >/dev/null ; then
162
          install_symbols "$INSTALL_FOLDER" "$PACKAGE_PATH"
163
        elif expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-EPSG_"  >/dev/null ; then
164
          install_jCRS_EPSG "$INSTALL_FOLDER" "$PACKAGE_PATH"
165
        else
166
          install_plugin "$INSTALL_FOLDER" "$PACKAGE_PATH"
167
        fi
168
      fi
169
    done
170
}
171

    
172
function include_package() {
173
    set +e
174
    egrep  "^$1\$" "$BASEFOLDER/packages/excludes" >/dev/null
175
    FOUND=$?
176
    set -e
177
    if [ "$FOUND" == 1 ] ; then
178
        return 0
179
    fi
180
    return 1
181
}
182

    
183

    
184
function remove_excluded_packages() {
185
    logger_info "Checking plugins to remove"
186
    cd "$INSTALL_FOLDER/gvSIG/extensiones"
187
    while read line; do
188
        if [ -d "$line" ] ; then 
189
            logger_info "Removing plugin $line"
190
            rm -rf "$line"
191
        fi
192
    done < "$BASEFOLDER/packages/excludes"
193
}
194

    
195
function install_portable_configuration_linux_files() {
196
    logger_info "Install portable configuration file (gvSIG.config)"
197
    cp "$INSTALL_FOLDER/tools/gvSIG.config" "$INSTALL_FOLDER"
198
    chmod a+x "$INSTALL_FOLDER/gvSIG.sh"
199
}
200

    
201

    
202
function remove_unneed_files_for_linux() {
203
    logger_info "Removing nom-${PORTABLE_OSNAME} files"
204
    rm -rf "$INSTALL_FOLDER/busybox.exe"
205
    rm -f $INSTALL_FOLDER/gvsig-desktop-devel.*
206
    rm -f $INSTALL_FOLDER/gvsig-desktop.*
207
    rm -f $INSTALL_FOLDER/gvsig-package-installer.*
208
    rm -f $INSTALL_FOLDER/*.cmd
209
    rm -f $INSTALL_FOLDER/check.sh
210
    rm -rf "$INSTALL_FOLDER/gvSIG/extensiones/jre_7_windows_i586"
211
    rm -rf $INSTALL_FOLDER/tools/*.cmd
212
    rm -rf $INSTALL_FOLDER/tools/*.exe
213
    rm -rf $INSTALL_FOLDER/tools/gvsig-desktop-portable.xml
214
    rm -rf $INSTALL_FOLDER/tools/make-portable.sh
215
}
216

    
217
function install_portable_configuration_windows_files() {
218
    logger_info "Install portable configuration file"
219
    cp "$INSTALL_FOLDER/tools/gvsig-desktop-portable.exe" "$INSTALL_FOLDER/gvsig-desktop.exe"
220
    cp "$INSTALL_FOLDER/tools/gvsig-desktop-portable.xml" "$INSTALL_FOLDER/gvsig-desktop.xml"
221
    rm -rf "$INSTALL_FOLDER/busybox.exe"
222
    cp "$INSTALL_FOLDER/tools/busybox.exe" "$INSTALL_FOLDER"
223
}
224

    
225
function remove_unneed_files_for_windows() {
226
    logger_info "Removing nom-${PORTABLE_OSNAME} files"
227
    rm -f $INSTALL_FOLDER/gvsig-desktop-devel.*
228
    rm -f $INSTALL_FOLDER/gvsig-desktop.cmd
229
    rm -f $INSTALL_FOLDER/gvSIG.sh
230
    rm -rf $INSTALL_FOLDER/tools
231
    rm -f $INSTALL_FOLDER/gvsig-package-installer.*
232
}
233

    
234
function zipfolder() {
235
    echo zip -qyr9 "$1" "$2"
236
    if type zip >/dev/null 2>/dev/null
237
    then
238
	zip -qyr9 "$1" "$2"
239
    else
240
      echo "
241
	
242
	WARNING: zip command not found. 
243
	         $1 not compressed.
244
	
245
"
246
    fi
247
}
248

    
249
function mkdist() {
250
    cd $BASEFOLDER/standard
251

    
252
    export PORTABLE_OS="$1"
253
    export PORTABLE_OSNAME="$2"
254
    export PORTABLE_PLATFORM="$3"
255
    export PORTABLE_VERSION=$(expr *.zip : "gvSIG-desktop-\\([0-9.]*-[0-9]*\\)")
256
    export PORTABLE_STATUS=$(expr *.zip : "gvSIG-desktop-[0-9.]*-[0-9]*-\\([a-zA-Z]*[0-9]*\)")
257
    export PORTABLE_NAME="gvsig-desktop-$PORTABLE_VERSION-${PORTABLE_STATUS}-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
258
    
259
    export INSTALL_FOLDER="$TARGET/$PORTABLE_NAME"
260

    
261
    logger_info "Removing previous files"
262
    rm -rf "$TARGET/gvsig-desktop"
263
    rm -rf "$INSTALL_FOLDER"
264
    rm -f  "$TARGET/${PORTABLE_NAME}.zip"
265
    rm -rf "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
266
    
267
    logger_info "Uncompressing ${PORTABLE_OSNAME} base files"
268
    cd $TARGET
269
    unzip -qq "$BASEFOLDER/standard/gvSIG-desktop-$PORTABLE_VERSION-$PORTABLE_STATUS-all-x86-online.zip"
270
    mv gvsig-desktop $PORTABLE_NAME
271

    
272
    logger_info "Uncompressing ${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} package set"
273
    mkdir -p "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
274
    cd "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
275
    unzip -qq "$BASEFOLDER/standard/gvSIG-desktop-${PORTABLE_VERSION}-${PORTABLE_STATUS}-${PORTABLE_OS}-${PORTABLE_PLATFORM}.gvspks"
276
    
277
    install_packages "$INSTALL_FOLDER" "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
278

    
279
    install_packages "$INSTALL_FOLDER" "$BASEFOLDER/packages/custom"
280

    
281
    case $PORTABLE_OS in 
282
    lin)
283
        install_portable_configuration_linux_files
284
        remove_unneed_files_for_linux
285
        ;;
286
    win)
287
        install_portable_configuration_windows_files
288
        remove_unneed_files_for_windows
289
        ;;
290
    esac
291

    
292
    remove_excluded_packages
293
    
294
    if [ -f $PATCHSFOLDER/patchs.sh ] ; then
295
        chmod a+x $PATCHSFOLDER/patchs.sh
296
        logger_info "Appling patch to the instalation."
297
        source $PATCHSFOLDER/patchs.sh
298
    fi
299
    
300
    run_plugins_install_scripts $INSTALL_FOLDER
301
    
302
    logger_info "Compresing ${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} portable (this take a moment)"
303
    cd "$TARGET"
304
    zipfolder "${PORTABLE_NAME}.zip" "${PORTABLE_NAME}"
305
    
306
    logger_info "Removing temporary package folder"
307
    rm -rf $TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}
308
    
309
    logger_info "${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} portable created."
310
}
311

    
312

    
313
function main() {
314
    mkdist lin linux x86
315
    mkdist lin linux x86_64    
316
    mkdist win windows x86
317
    echo "Creation ended"
318
}
319

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