-
Notifications
You must be signed in to change notification settings - Fork 2
/
setup_package
273 lines (205 loc) · 8.27 KB
/
setup_package
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
#!/bin/bash
# --- BEGIN COPYRIGHT BLOCK ---
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation;
# version 2.1 of the License.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301 USA
#
# Copyright (C) 2009 Red Hat, Inc.
# All rights reserved.
# --- END COPYRIGHT BLOCK ---
###############################################################################
## (1) Check command line arguments to see how many were passed in. ##
###############################################################################
if [ $# -eq 5 ]
then
NUXWDOGCLIENT_BUILD_PREFIX=$1
VERSION=$2
RELEASE=$3
ARCHITECTURE=$4
NUXWDOGCLIENT_STAGING_PATH=$5
else
echo
echo "Usage: $0 NUXWDOGCLIENT_build_prefix version release architecture"
echo " NUXWDOGCLIENT_staging_path"
echo
exit 255
fi
###############################################################################
## (2) Specify variables used by this script. ##
###############################################################################
# specify generic helper functions
usage() {
if [ $# -gt 0 ] ; then
echo
echo "$1"
fi
echo
echo "Usage: $0 NUXWDOGCLIENT_build_prefix version release architecture"
echo " NUXWDOGCLIENT_staging_path"
echo
echo " where architecture MUST be 'intel',"
echo " 'sparc', or"
echo " 'sparcv9'."
echo
echo " NOTE: For 'intel' architectures, only the 'i386' and"
echo " the 'x86_64' architectures are currently supported."
echo
}
# specify generic helper variables
if [ ${ARCHITECTURE} = "intel" ] ; then
# Since "rpmbuild" fails to process "%ifarch" macros inside the
# "%install" section of a spec file, the actual hardware
# architecture will be determined at this point in time.
ARCHITECTURE=`uname -i`
DLL_SUFFIX="so"
if [ ${ARCHITECTURE} = "i386" ] ; then
LIB_DIR="lib"
BIN_DIR="bin"
elif [ ${ARCHITECTURE} = "x86_64" ] ; then
LIB_DIR="lib64"
BIN_DIR="bin"
else
usage "ERROR: Unsupported intel architecture '${ARCHITECTURE}'!"
exit 255
fi
elif [ ${ARCHITECTURE} = "sparc" ] ; then
# Note that "pkgbuild" successfully processes "%ifarch" macros
# inside the "%install" section of a spec file.
LIB_DIR="lib"
BIN_DIR="bin"
DLL_SUFFIX="so"
elif [ ${ARCHITECTURE} = "sparcv9" ] ; then
# Note that "pkgbuild" successfully processes "%ifarch" macros
# inside the "%install" section of a spec file.
LIB_DIR="lib/sparcv9"
BIN_DIR="bin"
DLL_SUFFIX="so"
else
usage "ERROR: Unsupported architecture '${ARCHITECTURE}'!"
exit 255
fi
# break the VERSION number into its various components
MAJOR_VERSION=`echo ${VERSION} | awk -F. '{ print $1 }'`
MINOR_VERSION=`echo ${VERSION} | awk -F. '{ print $2 }'`
PATCH_VERSION=`echo ${VERSION} | awk -F. '{ print $3 }'`
PRODUCT_VERSION=${MAJOR_VERSION}.${MINOR_VERSION}
# comply with standard FHS 2.3 binary locations (executables)
NUXWDOGCLIENT_BIN_DIR=${NUXWDOGCLIENT_BUILD_PREFIX}/usr/${BIN_DIR}
# comply with standard FHS 2.3 library locations
NUXWDOGCLIENT_LIB_DIR=${NUXWDOGCLIENT_BUILD_PREFIX}/usr/${LIB_DIR}
NUXWDOGCLIENT_LOCAL_DIR=${NUXWDOGCLIENT_BUILD_PREFIX}/usr
# comply with standard JPackage 1.6.0 jar locations
NUXWDOGCLIENT_JAR_DIR=${NUXWDOGCLIENT_BUILD_PREFIX}/usr/lib/java
# comply with standard FHS 2.3 binary locations (wrappers)
# comply with standard FHS 2.3 shared data locations (templates)
# comply with standard FHS 2.3 start/stop script locations
# comply with standard FHS 2.3 configuration file locations
# comply with standard FHS 2.3 documentation locations
NUXWDOGCLIENT_DOCUMENTATION=${NUXWDOGCLIENT_BUILD_PREFIX}/usr/share/doc/nuxwdog-${VERSION}
# comply with standard FHS 2.3 log file locations
# comply with default FHS 2.3 instance locations
#include files for devel package
NUXWDOGCLIENT_INCLUDE_DIR=${NUXWDOGCLIENT_BUILD_PREFIX}/usr/include/nuxwdog
###############################################################################
## (3) Create the appropriate subdirectories. ##
###############################################################################
##
## System:
##
mkdir -p ${NUXWDOGCLIENT_DOCUMENTATION}
mkdir -p ${NUXWDOGCLIENT_LIB_DIR}
mkdir -p ${NUXWDOGCLIENT_BIN_DIR}
mkdir -p ${NUXWDOGCLIENT_JAR_DIR}
mkdir -p ${NUXWDOGCLIENT_INCLUDE_DIR}
mkdir -p ${NUXWDOGCLIENT_LOCAL_DIR}/share/man/man3/
mkdir -p ${NUXWDOGCLIENT_LIB_DIR}/perl5
##
## Product
##
##
## Subsystem
##
##
## Initial Instance
##
###############################################################################
## (4) Unpack the package contents to the appropriate subdirectories. ##
###############################################################################
##
## Executables
##
cp -p ${NUXWDOGCLIENT_STAGING_PATH}/bin/nuxwdog ${NUXWDOGCLIENT_BIN_DIR}
##
## Libraries
##
cp -p ${NUXWDOGCLIENT_STAGING_PATH}/${LIB_DIR}/libnuxwdog.${DLL_SUFFIX} ${NUXWDOGCLIENT_LIB_DIR}
cp -rp ${NUXWDOGCLIENT_STAGING_PATH}/local/${LIB_DIR}/perl5/site_perl/* ${NUXWDOGCLIENT_LIB_DIR}/perl5
##
## Jars
##
cp -p ${NUXWDOGCLIENT_STAGING_PATH}/jars/nuxwdog.jar ${NUXWDOGCLIENT_JAR_DIR}
##
## Wrappers
##
##
## Shared Data
##
cp -rp ${NUXWDOGCLIENT_STAGING_PATH}/doc/LICENSE ${NUXWDOGCLIENT_DOCUMENTATION}
cp -p ${NUXWDOGCLIENT_STAGING_PATH}/local/share/man/man3/* ${NUXWDOGCLIENT_LOCAL_DIR}/share/man/man3
##
## header files
##
cp -rp ${NUXWDOGCLIENT_STAGING_PATH}/include/nuxwdog-1.0/nuxwdog/*.h ${NUXWDOGCLIENT_INCLUDE_DIR}
###############################################################################
## (5) Unpack the package contents to the initial instance directories. ##
###############################################################################
##
## Start/Stop Script
##
##
## Configuration
##
##
## Logs
##
##
## Default Instance
##
###############################################################################
## (6) Rename the extracted contents following appropriate naming rules. ##
###############################################################################
# comply with standard Linux/UNIX shared library naming conventions
cd ${NUXWDOGCLIENT_LIB_DIR} ; mv libnuxwdog.${DLL_SUFFIX} libnuxwdog.${DLL_SUFFIX}.${VERSION}
# comply with standard JPackage 1.6.0 jar naming conventions
cd ${NUXWDOGCLIENT_JAR_DIR} ; mv nuxwdog.jar nuxwdog-${VERSION}.jar
# strip symbolic information from libraries
#cd ${NUXWDOGCLIENT_LIB_DIR} ; strip libnuxwdog.${DLL_SUFFIX}.${VERSION}
###############################################################################
## (7) Create a command wrapper for each specified command. ##
###############################################################################
###############################################################################
## (8) Create useful symbolic links as appropriate. ##
###############################################################################
# create shared library sans version "linker-name" to protect this namespace
cd ${NUXWDOGCLIENT_LIB_DIR} ;
ln -s libnuxwdog.${DLL_SUFFIX}.${VERSION} libnuxwdog.${DLL_SUFFIX}.${PRODUCT_VERSION} ;
ln -s libnuxwdog.${DLL_SUFFIX}.${PRODUCT_VERSION} libnuxwdog.${DLL_SUFFIX}.${MAJOR_VERSION} ;
ln -s libnuxwdog.${DLL_SUFFIX}.${MAJOR_VERSION} libnuxwdog.${DLL_SUFFIX}
# create jar sans version to be used by classpath
cd ${NUXWDOGCLIENT_JAR_DIR} ; ln -s nuxwdog-${VERSION}.jar nuxwdog.jar
# create assorted symbolic links to various file dependencies (Tomcat)
###############################################################################
## (9) Successfully exit from this setup script. ##
###############################################################################
exit 0