Statistics
| Revision:

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

History | View | Annotate | Download (9.89 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
}
72

    
73
function install_symbols() {
74
    INSTALL_FOLDER="$1"
75
    get_package_info $2
76

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

    
90
function install_jCRS_EPSG() {
91
    INSTALL_FOLDER="$1"
92
    get_package_info $2
93

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

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

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

    
122
function install_translations() {
123
    INSTALL_FOLDER="$1"
124
    get_package_info $2
125

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

    
137
function run_plugins_install_scripts() {
138
    INSTALL_FOLDER="$1"
139

    
140
    logger_info ""
141
    logger_info "Running plugins install scripts"
142
    cd "$INSTALL_FOLDER/gvSIG/extensiones"
143
    for PLUGIN_CODE in *
144
    do
145
        if [ -f "$INSTALL_FOLDER/gvSIG/extensiones/$PLUGIN_CODE/install/install.xml" ] ; then
146
            logger_info "Running custom install script of $PLUGIN_CODE"
147
            cd $INSTALL_FOLDER
148
            ant -Dgvsig_dir="$INSTALL_FOLDER" -Dextensions_dir="$INSTALL_FOLDER/gvSIG/extensiones" -f "$INSTALL_FOLDER/gvSIG/extensiones/$PLUGIN_CODE/install/install.xml"
149
        fi
150
    done
151
}
152

    
153
function install_packages() {
154
    INSTALL_FOLDER="$1"
155
    PACKAGES_FOLDER="$2"
156

    
157
    logger_info ""
158
    logger_info "Processing $(basename $PACKAGES_FOLDER) packages"
159
    for PACKAGE_PATH in $PACKAGES_FOLDER/*.gvspkg
160
    do
161
      if [ -f "$PACKAGE_PATH" ] ; then
162
        PACKAGE_NAME="$(basename $PACKAGE_PATH)"
163
        if expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-translations[.]" >/dev/null ; then
164
          install_translations "$INSTALL_FOLDER" "$PACKAGE_PATH"
165
        elif expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-symbols[.]"  >/dev/null ; then
166
          install_symbols "$INSTALL_FOLDER" "$PACKAGE_PATH"
167
        elif expr "$PACKAGE_NAME" : "gvSIG-desktop-[0-9.]*-EPSG_"  >/dev/null ; then
168
          install_jCRS_EPSG "$INSTALL_FOLDER" "$PACKAGE_PATH"
169
        else
170
          install_plugin "$INSTALL_FOLDER" "$PACKAGE_PATH"
171
        fi
172
      fi
173
    done
174
}
175

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

    
187

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

    
199
function install_portable_configuration_files() {
200
    logger_info "Install portable configuration file (gvSIG.config)"
201
    cp "$INSTALL_FOLDER/tools/gvSIG.config" "$INSTALL_FOLDER"
202
    chmod a+x "$INSTALL_FOLDER/gvSIG.sh"
203
}
204

    
205
function zipfolder() {
206
    echo zip -qyr9 "$1" "$2"
207
    if type zip >/dev/null 2>/dev/null
208
    then
209
  zip -qyr9 "$1" "$2"
210
    else
211
      echo "
212

    
213
  WARNING: zip command not found.
214
           $1 not compressed.
215

    
216
"
217
    fi
218
}
219

    
220
function mkdist() {
221
    cd $BASEFOLDER/standard
222

    
223
    export PORTABLE_OS="$1"
224
    export PORTABLE_OSNAME="$2"
225
    export PORTABLE_PLATFORM="$3"
226

    
227
    export ONLINE_OS="$PORTABLE_OSNAME"
228
    if [ "$PORTABLE_OSNAME" == "darwin" ] ; then
229
	export ONLINE_OS="lin"
230
    fi
231

    
232
    export PORTABLE_VERSION=$(expr *${ONLINE_OS}-${PORTABLE_PLATFORM}-online.zip : "gvSIG-desktop-\\([0-9.]*-[0-9]*\\)")
233
    export PORTABLE_STATUS=$(expr *${ONLINE_OS}-${PORTABLE_PLATFORM}-online.zip : "gvSIG-desktop-[0-9.]*-[0-9]*-\\([a-zA-Z]*[0-9]*\)")
234
    export PORTABLE_NAME="gvSIG-desktop-$PORTABLE_VERSION-${PORTABLE_STATUS}-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
235

    
236
    export INSTALL_FOLDER="$TARGET/$PORTABLE_NAME"
237

    
238
    logger_info "Removing previous files"
239
    rm -rf "$TARGET/gvsig-desktop"
240
    rm -rf "$INSTALL_FOLDER"
241
    rm -f  "$TARGET/${PORTABLE_NAME}.zip"
242
    rm -rf "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
243

    
244
    logger_info "Uncompressing ${PORTABLE_OSNAME} base files"
245
    cd $TARGET
246
    mkdir $PORTABLE_NAME
247
    cd $PORTABLE_NAME
248
    unzip -qq "$BASEFOLDER/standard/gvSIG-desktop-$PORTABLE_VERSION-$PORTABLE_STATUS-${ONLINE_OS}-${PORTABLE_PLATFORM}-online.zip"
249
    #mv gvSIG-desktop-${PORTABLE_VERSION} $PORTABLE_NAME
250

    
251
    logger_info "Uncompressing ${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} package set"
252
    mkdir -p "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
253
    cd "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
254
    unzip -qq "$BASEFOLDER/standard/gvSIG-desktop-${PORTABLE_VERSION}-${PORTABLE_STATUS}-${PORTABLE_OS}-${PORTABLE_PLATFORM}.gvspks"
255

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

    
259
    install_packages "$INSTALL_FOLDER" "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
260

    
261
    install_packages "$INSTALL_FOLDER" "$BASEFOLDER/packages/custom"
262

    
263
    install_portable_configuration_files
264

    
265
    remove_excluded_packages
266

    
267
    if [ -f $PATCHSFOLDER/patchs.sh ] ; then
268
        chmod a+x $PATCHSFOLDER/patchs.sh
269
        logger_info "Appling patch to the instalation."
270
        source $PATCHSFOLDER/patchs.sh
271
    fi
272

    
273
    run_plugins_install_scripts $INSTALL_FOLDER
274

    
275
    if [ "$PORTABLE_OSNAME" == "darwin" ] ; then
276
        mkdir "$INSTALL_FOLDER/Contents"
277
        mkdir "$INSTALL_FOLDER/Contents/MacOS"
278
        echo '#!/bin/bash
279
x=$(dirname $0)
280
x=$(dirname $x)
281
x=$(dirname $x)
282
exec "$x/gvSIG.sh"
283
' >"$INSTALL_FOLDER/Contents/MacOS/${PORTABLE_NAME}"
284
        chmod a+x "$INSTALL_FOLDER/Contents/MacOS/${PORTABLE_NAME}"
285
        mv "$INSTALL_FOLDER" "${INSTALL_FOLDER}.app"
286
        INSTALL_FOLDER="${INSTALL_FOLDER}.app"
287
        PORTABLE_NAME="${PORTABLE_NAME}.app"
288
    fi
289

    
290
    logger_info "Compresing ${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} portable (this take a moment)"
291
    cd "$TARGET"
292
    zipfolder "${PORTABLE_NAME}.zip" "${PORTABLE_NAME}"
293

    
294
    logger_info "Removing temporary package folder"
295
    rm -rf $TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}
296

    
297
    logger_info "${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} portable created."
298
}
299

    
300

    
301
function main() {
302
    mkdist lin linux x86
303
    mkdist lin linux x86_64
304
    mkdist win windows x86
305
    mkdist win windows x86_64
306
    mkdist darwin_macos_10.11 darwin x86_64
307
    mkdist lin_ubuntu_16.04 linux x86_64
308
    echo "Creation ended"
309
}
310

    
311
mkdir -p "$TARGET"
312
main | tee "$TARGET/${SCRIPT_NAME}.log"
313