Statistics
| Revision:

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

History | View | Annotate | Download (4.53 KB)

1
#!/bin/bash
2
#
3

    
4
#set -x
5

    
6
if [ ! -f "gvSIG.sh" ] ; then
7
  echo "Usage: $0"
8
  echo "  Current folder can be a gvSIG installation"
9
  exit -1
10
fi
11

    
12
GVSIG_INSTALL_FOLDER="$PWD"
13
TARGET_FOLDER="/tmp/gvsig-deb"
14

    
15
function message() {
16
  echo $@
17
}
18

    
19

    
20
initArchitecture() {
21
  architecture=""
22
  cd "$GVSIG_INSTALL_FOLDER"
23
  eval $(find . -name package.info -exec grep "architecture=[^a]" {} ';' | sort | head -n 1)
24
  if [ "${architecture}" == "" ] ; then
25
    echo "Can't determine the gvSIG installation architecture." >&2
26
    exit 1
27
  fi
28
  if [ "${architecture/*x86_64*/x86_64}" == "x86_64" ] ; then
29
    GVSIG_ARCHITECTURE="amd64"
30
  else
31
    GVSIG_ARCHITECTURE="x86"
32
  fi
33
  cd - >/dev/null
34
}
35

    
36
CORE_VERSION=$(echo lib/org.gvsig.andami-*.jar)
37
CORE_VERSION=${CORE_VERSION/lib\/org.gvsig.andami-/}
38
CORE_VERSION=${CORE_VERSION/.jar/}
39
GVSIG_VERSION=$(sed -n 's/^version=\(.*\)/\1/p' package.info)
40
GVSIG_BUILDNUMBER=$(sed -n 's/^buildNumber=\(.*\)/\1/p' package.info)
41
initArchitecture
42

    
43

    
44
sudo rm -rf "$TARGET_FOLDER"
45
mkdir -p "$TARGET_FOLDER/DEBIAN"
46
sed "s/\${GVSIG_ARCHITECTURE}/${GVSIG_ARCHITECTURE}/
47
s/\${GVSIG_VERSION}/${GVSIG_VERSION}/
48
s/\${GVSIG_BUILDNUMBER}/${GVSIG_BUILDNUMBER}/
49
s/\${CORE_VERSION}/${CORE_VERSION}/" "$GVSIG_INSTALL_FOLDER/tools/debian.control" >"$TARGET_FOLDER/DEBIAN/control"
50

    
51
#=============================
52
# Load debian.control values
53
#
54
typeset -l Package
55
eval $(sed -n 's/\([A-Za-z0-9]*\)[ ]*:[ ]*\(.*\)/\1="\2"/p' "$TARGET_FOLDER/DEBIAN/control")
56

    
57
#=============================
58
# Prepare target folder
59

    
60
message "Prepare package folder in $TARGET_FOLDER"
61

    
62
mkdir -p "$TARGET_FOLDER/DEBIAN"
63
mkdir -p "$TARGET_FOLDER/usr/bin"
64
mkdir -p "$TARGET_FOLDER/usr/share/applications"
65
mkdir -p "$TARGET_FOLDER/usr/share/menu"
66
mkdir -p "$TARGET_FOLDER/usr/share/pixmaps"
67
mkdir -p "$TARGET_FOLDER/usr/local/bin"
68
mkdir -p "$TARGET_FOLDER/usr/local/lib/${Package}/${Version}-${Architecture}"
69

    
70
#===========================================
71
# Create gvsig launcher in /usr/local/bin
72

    
73
message "Create gvsig launcher in $TARGET_FOLDER/usr/local/bin"
74
echo "#!/bin/sh
75
exec /usr/local/lib/${Package}/default/gvSIG.sh \$@
76
" > "$TARGET_FOLDER/usr/local/bin/${Package}"
77

    
78
#============================================
79
# Link gvSIG launcher to /usr/bin
80

    
81
message "Link gvSIG launcher to $TARGET_FOLDER/usr/bin"
82
cd "$TARGET_FOLDER/usr/bin"
83
ln -s "../local/bin/${Package}" .
84

    
85
#============================================
86
# Link installation to default folder
87

    
88
message "Link installation to default folder"
89
cd "$TARGET_FOLDER/usr/local/lib/${Package}"
90
ln -s "${Version}-${Architecture}" "default"
91

    
92
#===========================================
93
# Create postinst for install dsktop icons
94

    
95
message "Creating post installation script"
96
cat <<EOF-postinst >"$TARGET_FOLDER/DEBIAN/postinst"
97
#!/bin/sh
98
set -e
99
if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ]; then
100
	update-menus
101
fi
102
EOF-postinst
103

    
104

    
105
#===========================================
106
# Create menu entry file, icon and desktop file
107

    
108
message "Create desktop file, icon and menu entry file"
109

    
110
DesktopCategory="Graphics"
111
cp "$GVSIG_INSTALL_FOLDER/gvsig-icon48x48.png" "$TARGET_FOLDER/usr/share/pixmaps/${Package}.png"
112

    
113
cat <<EOF-menu >"$TARGET_FOLDER/usr/share/menu/${Package}"
114
?package(${Package}):command="/usr/local/bin/${Package}" icon="/usr/share/pixmaps/${Package}.png" needs="X11" section="Applications/${DesktopCategory}" title="gvSIG desktop" hotkey="gvSIG"
115
EOF-menu
116

    
117
cat <<EOF-desktop-file >"$TARGET_FOLDER/usr/share/applications/${Package}.desktop"
118
Name=gvSIG desktop
119
Version=${Version}
120
Exec=${Package}
121
Comment=
122
Icon=/usr/share/pixmaps/${Package}.png
123
Type=Application
124
Terminal=false
125
StartupNotify=true
126
Encoding=UTF-8
127
Categories=${DesktopCategory};
128
EOF-desktop-file
129

    
130
#============================================
131
# Copy files to target folder
132

    
133
message "Copy installation files..."
134
cd "$GVSIG_INSTALL_FOLDER"
135

    
136
cp -R . "$TARGET_FOLDER/usr/local/lib/${Package}/${Version}-${Architecture}"
137

    
138
#============================================
139
# Fix permissions
140

    
141
message "Fix permissions"
142
cd "$TARGET_FOLDER"
143

    
144
find . -type d -exec chmod go=rx,u=rwx {} ';'
145
find . -type f -exec chmod go=r,u=rw {} ';'
146

    
147
chmod go=rx,u=rwx "DEBIAN/postinst"
148
chmod go=r,u=rw "usr/share/applications/${Package}.desktop"
149
chmod go=rx,u=rwx "usr/local/bin/${Package}"
150
chmod go=rx,u=rwx "usr/local/lib/${Package}/${Version}-${Architecture}/gvSIG.sh"
151

    
152
sudo chown -R root.root .
153

    
154
#============================================
155
# Create debian package
156

    
157
cd "$TARGET_FOLDER"
158

    
159
message "Creating debian package in $TARGET_FOLDER/${Package}_${Version}_${Architecture}.deb"
160
sudo dpkg -b . "${Package}_${Version}_${Architecture}.deb"
161