Skip to content

Commit 4884a07

Browse files
author
Vladimir Kotal
authored
Merge pull request #1644 from vladak/packaging_ips
IPS packaging changes
2 parents 198a14d + 1c05a61 commit 4884a07

File tree

3 files changed

+169
-34
lines changed

3 files changed

+169
-34
lines changed

platform/solaris/ips/create.sh

Lines changed: 86 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ fi
6464
# 0.12-rc<i> ~ 0.12.0.0.<i>
6565
# ...
6666
#
67-
# Note that the release candidate must follow immediately after the basic version number (0.12)
67+
# Note that the release candidate must follow immediately after
68+
# the basic version number (0.12)
6869
#
6970
#
7071
# 0.12.1 ~ 0.12.1.0.0
@@ -146,13 +147,21 @@ then
146147
exit 1
147148
fi
148149

150+
cleanup()
151+
{
152+
rm -rf "$PKG_REPO_NAME"
153+
if [[ -n $pkg_manifest ]]; then
154+
rm -f "$pkg_manifest"
155+
fi
156+
}
157+
149158
PKG()
150159
{
151160
"$@"
152161
if [ $? != 0 ]
153162
then
154163
echo Command failed: "$@"
155-
rm -rf "$PKG_REPO_NAME"
164+
cleanup
156165
exit 1
157166
fi
158167
}
@@ -169,7 +178,7 @@ eval `pkgsend open ${PKG_NAME}@${version}`
169178
if [ $? != 0 ]
170179
then
171180
echo "Fatal: could not open ${PKG_NAME}@${version}"
172-
rm -rf "$PKR_REPO_NAME"
181+
cleanup
173182
exit 1
174183
fi
175184

@@ -185,33 +194,68 @@ do
185194
PKG pkgsend add dir mode=0755 owner=root group=bin path=${dir}
186195
done
187196

188-
for dir in /var/opengrok /var/opengrok/data /var/opengrok/etc \
189-
/var/opengrok/log /var/opengrok/src
197+
PKG pkgsend add dir mode=0755 owner=webservd group=webservd path=/var/opengrok
198+
199+
for dirname in data etc log src
190200
do
191-
PKG pkgsend add dir mode=0755 owner=webservd group=webservd path=${dir}
201+
#
202+
# In future Solaris 11.x releases the refresh of filesystem/minimal
203+
# will deal with data migration so the SMF service below will become
204+
# unnecessary.
205+
#
206+
PKG pkgsend add dir mode=0755 owner=webservd group=webservd \
207+
path=/var/.migrate/opengrok/${dirname} \
208+
refresh_fmri=svc:/system/filesystem/minimal:default \
209+
reboot-needed=true salvage-from=/var/opengrok/${dirname}
210+
PKG pkgsend add link path=/var/opengrok/${dirname} \
211+
target=../../var/share/opengrok/${dirname}
192212
done
193213

194-
PKG pkgsend add link path=/usr/opengrok/lib/lib target=../lib
195-
196-
PKG pkgsend add file platform/solaris/smf/opengrok.xml mode=0444 owner=root group=sys path=/var/svc/manifest/application/opengrok.xml restart_fmri=svc:/system/manifest-import:default
197-
PKG pkgsend add file platform/solaris/smf/svc-opengrok mode=0555 owner=root group=bin path=/lib/svc/method/svc-opengrok
198-
PKG pkgsend add file platform/solaris/smf/ogindexd mode=0555 owner=root group=bin path=/usr/opengrok/lib/ogindexd
199-
200-
PKG pkgsend add file OpenGrok mode=0555 owner=root group=bin path=/usr/opengrok/bin/OpenGrok
201-
PKG pkgsend add file tools/Groups mode=0555 owner=root group=bin path=/usr/opengrok/bin/Groups
202-
PKG pkgsend add file tools/ConfigMerge mode=0555 owner=root group=bin path=/usr/opengrok/bin/ConfigMerge
203-
PKG pkgsend add file tools/Messages mode=0555 owner=root group=bin path=/usr/opengrok/bin/Messages
214+
# Generate SMF service that will migrate /var/opengrok data to /var/share
215+
PKG pkgsend add file platform/solaris/smf/opengrok-migrate-shared.xml \
216+
mode=0444 owner=root group=sys \
217+
path=/var/svc/manifest/application/opengrok-migrate-shared.xml \
218+
restart_fmri=svc:/system/manifest-import:default
219+
PKG pkgsend add file platform/solaris/smf/opengrok-share-files.sh \
220+
mode=0555 owner=root group=bin path=/lib/svc/method/opengrok-share-files.sh
204221

205-
PKG pkgsend add file dist/opengrok.jar mode=0444 owner=root group=bin path=/usr/opengrok/lib/opengrok.jar
206-
207-
PKG pkgsend add file logging.properties mode=0444 owner=root group=sys path=/usr/opengrok/doc/logging.properties
208-
PKG pkgsend add file README.txt mode=0444 owner=root group=sys path=/usr/opengrok/doc/README.txt
209-
PKG pkgsend add file CHANGES.txt mode=0444 owner=root group=sys path=/usr/opengrok/doc/CHANGES.txt
210-
PKG pkgsend add file LICENSE.txt mode=0444 owner=root group=sys path=/usr/opengrok/doc/LICENSE.txt
211-
PKG pkgsend add file NOTICE.txt mode=0444 owner=root group=sys path=/usr/opengrok/doc/NOTICE.txt
212-
PKG pkgsend add file doc/EXAMPLE.txt mode=0444 owner=root group=sys path=/usr/opengrok/doc/EXAMPLE.txt
213-
PKG pkgsend add file doc/ctags.config mode=0444 owner=root group=sys path=/usr/opengrok/doc/ctags.config
222+
PKG pkgsend add link path=/usr/opengrok/lib/lib target=../lib
214223

224+
PKG pkgsend add file platform/solaris/smf/opengrok.xml \
225+
mode=0444 owner=root group=sys \
226+
path=/var/svc/manifest/application/opengrok.xml \
227+
restart_fmri=svc:/system/manifest-import:default
228+
PKG pkgsend add file platform/solaris/smf/svc-opengrok \
229+
mode=0555 owner=root group=bin path=/lib/svc/method/svc-opengrok
230+
PKG pkgsend add file platform/solaris/smf/ogindexd \
231+
mode=0555 owner=root group=bin path=/usr/opengrok/lib/ogindexd
232+
233+
PKG pkgsend add file OpenGrok \
234+
mode=0555 owner=root group=bin path=/usr/opengrok/bin/OpenGrok
235+
PKG pkgsend add file tools/Groups \
236+
mode=0555 owner=root group=bin path=/usr/opengrok/bin/Groups
237+
PKG pkgsend add file tools/ConfigMerge \
238+
mode=0555 owner=root group=bin path=/usr/opengrok/bin/ConfigMerge
239+
PKG pkgsend add file tools/Messages \
240+
mode=0555 owner=root group=bin path=/usr/opengrok/bin/Messages
241+
242+
PKG pkgsend add file dist/opengrok.jar \
243+
mode=0444 owner=root group=bin path=/usr/opengrok/lib/opengrok.jar
244+
245+
PKG pkgsend add file logging.properties \
246+
mode=0444 owner=root group=sys path=/usr/opengrok/doc/logging.properties
247+
PKG pkgsend add file README.txt \
248+
mode=0444 owner=root group=sys path=/usr/opengrok/doc/README.txt
249+
PKG pkgsend add file CHANGES.txt \
250+
mode=0444 owner=root group=sys path=/usr/opengrok/doc/CHANGES.txt
251+
PKG pkgsend add file LICENSE.txt \
252+
mode=0444 owner=root group=sys path=/usr/opengrok/doc/LICENSE.txt
253+
PKG pkgsend add file NOTICE.txt \
254+
mode=0444 owner=root group=sys path=/usr/opengrok/doc/NOTICE.txt
255+
PKG pkgsend add file doc/EXAMPLE.txt \
256+
mode=0444 owner=root group=sys path=/usr/opengrok/doc/EXAMPLE.txt
257+
PKG pkgsend add file doc/ctags.config \
258+
mode=0444 owner=root group=sys path=/usr/opengrok/doc/ctags.config
215259

216260

217261
# install libs
@@ -230,24 +274,32 @@ do
230274
path=/usr/opengrok/lib/${file}
231275
done
232276

233-
234277
# install man page
235-
PKG pkgsend add file dist/opengrok.1 mode=0444 owner=root group=bin path=/usr/opengrok/man/man1/opengrok.1
278+
PKG pkgsend add file dist/opengrok.1 mode=0444 owner=root group=bin \
279+
path=/usr/opengrok/man/man1/opengrok.1
236280

237281
# install default configuration
238282
PKG pkgsend add depend fmri=pkg:/runtime/java/jre-8 type=require
239283
PKG pkgsend add depend fmri=pkg:/web/java-servlet/tomcat-8 type=require
240284

241-
# Following line gets commented by that the developer/tool/exuberant-ctags has been removed from IPS
242-
# This has to stay commented until the next release of Solaris will contain the exuberant ctags package
243-
#PKG pkgsend add depend fmri=pkg:/developer/tool/exuberant-ctags type=require
285+
PKG pkgsend add file dist/source.war \
286+
mode=0444 owner=webservd group=webservd path=/usr/opengrok/lib/source.war
244287

245-
PKG pkgsend add file dist/source.war mode=0444 owner=webservd group=webservd path=/usr/opengrok/lib/source.war
246-
247-
PKG pkgsend add set name=description value="OpenGrok - wicked fast source browser"
288+
PKG pkgsend add set name=pkg.description value="OpenGrok - complete install"
289+
PKG pkgsend add set name=pkg.summary value="OpenGrok - wicked fast source browser"
248290
PKG pkgsend add set name=pkg.human-version value="${human_readable_version}"
249291
PKG pkgsend close
250292

293+
PKG pkgrepo -s "$PKG_REPO_NAME" verify
294+
295+
pkg_manifest=$( mktemp /tmp/pkg_manifest.XXXXXX )
296+
if [[ -z $pkg_manifest ]]; then
297+
echo "cannot create temporary file for package manifest"
298+
cleanup
299+
exit 1
300+
fi
301+
PKG pkgrepo -s "$PKG_REPO_NAME" contents ${PKG_NAME} > $pkg_manifest
302+
PKG pkglint $pkg_manifest
251303

252304
# checks whether the same file exists and updates it
253305
if [ -f "${PKG_NAME}-${human_readable_version}.p5p" ]
@@ -262,7 +314,7 @@ PKG pkgrecv -s "$PKG_REPO_NAME" -a -d "${outfile}" ${PKG_NAME}
262314
# cleanup
263315
if [ -d "$PKG_REPO_NAME" ]
264316
then
265-
rm -rf "$PKG_REPO_NAME"
317+
cleanup
266318
fi
267319

268320
unset PKG_REPO
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
<?xml version="1.0" ?>
2+
<!DOCTYPE service_bundle
3+
SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
4+
<!--
5+
Manifest created by svcbundle (2017-Jun-27 16:42:23+0200)
6+
-->
7+
<service_bundle type="manifest" name="application/opengrok-migrate-shared">
8+
<service version="1" type="service"
9+
name="application/opengrok-migrate-shared">
10+
<!--
11+
The following dependency keeps us from starting until the
12+
multi-user milestone is reached.
13+
-->
14+
<dependency restart_on="none" type="service"
15+
name="multi_user_dependency" grouping="require_all">
16+
<service_fmri value="svc:/milestone/multi-user"/>
17+
</dependency>
18+
<!--
19+
The migration of data can take a long time so give it one hour
20+
to finish.
21+
-->
22+
<exec_method timeout_seconds="3600" type="method" name="start"
23+
exec="/lib/svc/method/opengrok-share-files.sh"/>
24+
<!--
25+
The exec attribute below can be changed to a command that SMF
26+
should execute to stop the service. See smf_method(5) for more
27+
details.
28+
-->
29+
<exec_method timeout_seconds="60" type="method" name="stop"
30+
exec=":true"/>
31+
<!--
32+
The exec attribute below can be changed to a command that SMF
33+
should execute when the service is refreshed. Services are
34+
typically refreshed when their properties are changed in the
35+
SMF repository. See smf_method(5) for more details. It is
36+
common to retain the value of :true which means that SMF will
37+
take no action when the service is refreshed. Alternatively,
38+
you may wish to provide a method to reread the SMF repository
39+
and act on any configuration changes.
40+
-->
41+
<exec_method timeout_seconds="60" type="method" name="refresh"
42+
exec=":true"/>
43+
<property_group type="framework" name="startd">
44+
<propval type="astring" name="duration" value="transient"/>
45+
</property_group>
46+
<instance enabled="true" name="default"/>
47+
<template>
48+
<common_name>
49+
<loctext xml:lang="C">
50+
<!--
51+
Replace this comment with a short name for the
52+
service.
53+
-->
54+
</loctext>
55+
</common_name>
56+
<description>
57+
<loctext xml:lang="C">
58+
<!--
59+
Replace this comment with a brief description of
60+
the service
61+
-->
62+
</loctext>
63+
</description>
64+
</template>
65+
</service>
66+
</service_bundle>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/bin/sh
2+
3+
# Load SMF shell support definitions
4+
. /lib/svc/share/smf_include.sh
5+
6+
#
7+
# Move any content from /var/opengrok/.migrate/ to /var/share/opengrok/
8+
#
9+
# The migrate_shared_files.py is not a public interface and will be eventually
10+
# replaced by different script which will make this service to fail, hopefully
11+
# prompting its removal - see the package definition and the comment above
12+
# refresh_fmri=svc:/system/filesystem/minimal:default
13+
#
14+
/lib/svc/share/migrate_shared_files.py /var/.migrate /var/share opengrok
15+
16+
# After this script runs, the service does not need to remain online.
17+
smf_method_exit $SMF_EXIT_TEMP_DISABLE done "OpenGrok shared files moved"

0 commit comments

Comments
 (0)