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 |
|