source: spec/trunk/SPECS/os2-rpm/macros.wps

Last change on this file was 1181, checked in by dmik, 4 years ago

spec: os2-rpm: Use _rpmconfigdir_os2 path in WPS macros instead of hardcoded.

  • Property svn:eol-style set to native
File size: 5.0 KB
Line 
1#------------------------------------------------------------------------
2# Macros to handle creation/deletion of WPS objects from %post* sections.
3# There are four single macros:
4#
5# %wps_object_create OBJECTID:SPECIFICATION
6# %wps_object_create_batch < FILE
7# %wps_object_delete OBJECTID
8# %wps_object_delete_all
9#
10# And a pair of begin-end macros:
11#
12# %wps_object_create_begin
13# OBJECTID:SPECIFICATION
14# OBJECTID:SPECIFICATION
15# ...
16# %wps_object_create_end
17#
18# All macros (except %wps_object_create_end) accept the -n option that
19# specifies the full package name (defaults to %{name}). The -n option
20# must be always used for subpackages as there is no way to detect the
21# subpackage name automatically.
22#
23# OBJECTID is an object identifier (w/o angle brackets). SPECIFICATION is
24# a string that describes the properties of the object to create and has
25# the following format:
26#
27#   CLASSNAME|TITLE|LOCATION[|SETUP[|OPTION]]
28#
29# Each component of this format string directly corresponds to the
30# respective argument of the SysCreateObject REXX function. Refer to
31# to the REXX reference manual for details.. Note that when OPTION is not
32# specified, U (update) mode is used by default.
33#
34# FILE is a text file used to create multiple objects at once: each line
35# in this file is an object ID followed by the specification (as described
36# above except that no quotes needed), like this:
37#
38#   OBJECTID:SPECIFICATION
39#
40# The pair of begin-end macrs serves for the same purpose but doesn't require
41# an external file (see below for an example).
42#
43# The indirect FILE or begin-end form is preferred and even required if one
44# of the object parameters contains a double forward slash (e.g. 'http://foo')
45# because otherwise the Classic REXX interpreter will treat it as a start of
46# the comment block and fail.
47#
48# Note that RPM tracks reference counting for each created object so you
49# may e.g. share a single WPS folder among several packages -- by creating a
50# folder with the same object ID in each package's %post section and
51# deleting it in its %postun section -- the folder will be actually removed
52# from the desktop only when the last package that creates it gets
53# uninstalled.
54#
55# Note also that each object is automatically associated with the package
56# it is created for so that %wps_object_delete_all knows what objects
57# to delete when you call it from %postun.
58#
59# Some object parameters (the LOCATION string or parts of the SETUP string such
60# as EXENAME) require valid OS/2 path strings as values, with back slashes
61# instead of forward slashes and @unixroot expanded to a full path. You may
62# cause this expansion by enclosing the respective part of the string in double
63# parenthesis. Note that double parenthesis may not be nested.
64#
65# Examples:
66#
67# %post
68# ...
69# # create objects one by one...
70# %wps_object_create MYAPP_FOLDER:WPFolder|My App %{version}|<WP_DESKTOP>
71# %wps_object_create MYAPP_EXE:WPProgram|My App|<MYAPP_FOLDER>|EXENAME=((${_bindir}/myapp.exe))
72#
73# # ...or all at once
74# %wps_object_create_begin
75# MYAPP_README:WPProgram|Read Me|<MYAPP_FOLDER>|EXENAME=e.exe;PROGTYPE=PROG_PM;PARAMETERS=(({_%docdir}/%{name}/README));OPEN=RUNNING
76# MYAPP_URL:WPUrl|myapp.example.com|<MYAPP_FOLDER>|URL=http://myapp.example.com
77# %wps_object_create_end
78#
79# %postun
80# ...
81# # delete all objects created for this package with wps_object_create*
82# %wps_object_delete_all
83#
84# # create objects for the subpackage 'sub'
85# %post sub
86# %wps_object_create -n %{name}-sub MYAPP_EXE:WPProgram|My Sub App|<MYAPP_FOLDER>|EXENAME=((${_bindir}/mysubapp.exe))
87#
88# # delete objects for the subpackage 'sub'
89# %postun sub
90# %wps_object_delete_all -n %{name}-sub
91#
92
93%wps_object_create(n:) %{_rpmconfigdir_os2}/wps-object.exe /create %{!-n:%{name}}%{-n:%{-n*}} "%{*}"\
94%{nil}
95
96%wps_object_create_batch(n:) %{_rpmconfigdir_os2}/wps-object.exe /create %{!-n:%{name}}%{-n:%{-n*}} %{*}\
97%{nil}
98
99%wps_object_delete(n:) %{_rpmconfigdir_os2}/wps-object.exe /delete %{!-n:%{name}}%{-n:%{-n*}} "%{*}"\
100%{nil}
101
102%wps_object_delete_all(n:) %{_rpmconfigdir_os2}/wps-object.exe /deleteall %{!-n:%{name}}%{-n:%{-n*}}\
103%{nil}
104
105%wps_object_create_begin(n:) %{_rpmconfigdir_os2}/wps-object.exe /create %{!-n:%{name}}%{-n:%{-n*}} <<'EOF'\
106%{nil}
107
108%wps_object_create_end EOF\
109###
110
111#------------------------------------------------------------------------
112# Macros to check for conflicts with installed WarpIn packages.
113#
114# %warpin_conflicts_begin
115# Vendor\Application\ConflictingPackage1
116# Vendor\Application\ConflictingPackage2
117# ...
118# %warpin_conflicts_end
119#
120# This pair of begin-end macros takes a list of WarpIn package IDs in between
121# and aborts the current scriptlet if any of these packages is installed.
122# A message containing the name and the version of the detected conflicting
123# package, if any, is printed to the console. This pair of macros is intended
124# to be used in %pre sections of .spec files so that it is able to abort the
125# installation if there are conflicts.
126#
127
128%warpin_conflicts_begin \{ %{_rpmconfigdir_os2}/warpin-conflicts.exe <<'EOF'\
129%{nil}
130
131%warpin_conflicts_end EOF\
132\} || exit $?
Note: See TracBrowser for help on using the repository browser.