Statistics
| Revision:

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

History | View | Annotate | Download (9.77 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
          esac
171
        else
172
          logger_info "Exclude package $PACKAGE_CODE"
173
          cp "$PACKAGE_PATH" "$INSTALL_FOLDER/install"
174
        fi
175
      fi
176
    done
177
}
178

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

    
190

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

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

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

    
216
  WARNING: zip command not found.
217
           $1 not compressed.
218

    
219
"
220
    fi
221
}
222

    
223
function mkdist() {
224
    cd $BASEFOLDER/standard
225

    
226
    export PORTABLE_OS="$1"
227
    export PORTABLE_OSNAME="$2"
228
    export PORTABLE_PLATFORM="$3"
229

    
230
    export ONLINE_OS="$PORTABLE_OSNAME"
231
    if [ "$PORTABLE_OSNAME" == "darwin" ] ; then
232
	export ONLINE_OS="lin"
233
    fi
234

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

    
239
    export INSTALL_FOLDER="$TARGET/$PORTABLE_NAME"
240

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

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

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

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

    
262
    install_packages "$INSTALL_FOLDER" "$TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}"
263

    
264
    install_packages "$INSTALL_FOLDER" "$BASEFOLDER/packages/custom"
265

    
266
    install_portable_configuration_files
267

    
268
    remove_excluded_packages
269

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

    
276
    run_plugins_install_scripts $INSTALL_FOLDER
277

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

    
293
    logger_info "Compresing ${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} portable (this take a moment)"
294
    cd "$TARGET"
295
    zipfolder "${PORTABLE_NAME}.zip" "${PORTABLE_NAME}"
296

    
297
    logger_info "Removing temporary package folder"
298
    rm -rf $TARGET/packages-${PORTABLE_OS}-${PORTABLE_PLATFORM}
299

    
300
    logger_info "${PORTABLE_OSNAME}-${PORTABLE_PLATFORM} portable created."
301
}
302

    
303

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

    
314
mkdir -p "$TARGET"
315
main | tee "$TARGET/${SCRIPT_NAME}.log"
316