Added options to make Robodoc more customizable.
[robodoc.git] / rpm.mk
1 #****h* ROBODoc/rpm.mk
2 # NAME
3 #   rpm.mk
4 # SYNOPSIS
5 #   make -f rpm.mk
6 #   make -f rpm.mk osxpkg
7 # PURPOSE
8 #   Easy way to make RPM package. Contains rules also for building a package
9 #   for Mac OS X.
10 # MODIFICATION HISTORY
11 #   2003-03-23/PetteriK: robodoc.spec.in template
12 #   2003-02-10/PetteriK: RPM build using RH8.0, remote build dropped
13 # SEE ALSO
14 #   http://www.rpm.org/RPM-HOWTO/build.html
15 # SOURCE
16 #
17
18 # rpm-related parameters
19 PROJECT_NAME    = robodoc
20 PROJECT_VERSION = 4.99.36
21 PROJECT_RELEASE = 1
22 PROJECT         = $(PROJECT_NAME)-$(PROJECT_VERSION)
23 SPECFILE        = $(PROJECT_NAME).spec
24 TARBALL         = $(PROJECT).tar.gz
25 SRPM            = $(PROJECT)-$(PROJECT_RELEASE).src.rpm
26 RPM             = $(PROJECT)-$(PROJECT_RELEASE).i386.rpm
27 RHDIR           = $(HOME)/redhat
28
29 all: robodoc.spec rpm
30
31 #****** rpm.mk/robodoc.spec
32 # NAME
33 #   robodoc.spec
34 # FUNCTION
35 #   Fill in version and release info to .spec file template.
36 # SOURCE
37
38 robodoc.spec: robodoc.spec.in rpm.mk
39         rm -f robodoc.spec
40         sed -e 's/PROJECT_VERSION/$(PROJECT_VERSION)/g' \
41             -e 's/PROJECT_RELEASE/$(PROJECT_RELEASE)/g' \
42             robodoc.spec.in > robodoc.spec
43
44 #****
45
46 #****** rpm.mk/srcpkg
47 # NAME
48 #   srcpkg --
49 # FUNCTION
50 #   Make pretty tarball of sources in this directory tree.
51 # PREQUISITIES
52 #   make_rhdir
53 # SOURCE
54
55 .PHONY: srcpkg
56 srcpkg: make_rhdir
57         cp -R . /tmp/$(PROJECT)
58         find /tmp/$(PROJECT) -type d -name CVS | xargs rm -fr
59         find /tmp/$(PROJECT) -type d -name .gone | xargs rm -fr
60         (cd /tmp; tar cf - $(PROJECT) | gzip -c > $(RHDIR)/SOURCES/$(TARBALL))
61         rm -fr /tmp/$(PROJECT)
62
63 #****
64
65 #****** rpm.mk/rpm
66 # NAME
67 #   rpm --
68 # FUNCTION
69 #   Make RPM; both binary and source packages.
70 # PREQUISITIES
71 #   make_rhdir, srcpkg
72 # SOURCE
73
74 .PHONY: rpm
75 rpm: srcpkg
76         cp $(SPECFILE) $(RHDIR)/SPECS/$(SPECFILE)
77         rpmbuild -ba $(RHDIR)/SPECS/$(SPECFILE)
78         @echo "RPM packages are now:"
79         @ls -l $(RHDIR)/RPMS/i386/$(RPM) 
80         @ls -l $(RHDIR)/SRPMS/$(SRPM) 
81
82 #****
83
84 #****** rpm.mk/make_rhdir
85 # NAME
86 #   make_rhdir --
87 # FUNCTION
88 #   Create directories for RPM build. Topdir parameter in ~/.rpmmacros 
89 #   has to point to $(HOME)/redhat (default but users may change that). 
90 # SOURCE
91
92 .PHONY: make_rhdir
93 make_rhdir:
94         for i in $(RHDIR) $(RHDIR)/RPMS $(RHDIR)/SOURCES $(RHDIR)/SPECS $(RHDIR)/SRPMS $(RHDIR)/BUILD; do \
95             if [ ! -d $$i ] ; then \
96                 mkdir $$i; \
97             fi; \
98             done;
99
100 #****
101
102 #****** rpm.mk/osxpkg
103 # NAME
104 #   osxpkg
105 # FUNCTION
106 #   Create Mac OS X binary package.
107 # SEE ALSO
108 #   dmg.sh
109 # SOURCE
110
111 MACPKG=$(PROJECT).pkg
112 PKGINF=$(MACPKG)/Contents/Resources/English.lproj/$(PROJECT).info
113
114 .PHONY: osxpkg
115 osxpkg:
116         rm -f osx/License.rtf osx/ReadMe.rtf
117         sed -e 's/PROJECT_VERSION/$(PROJECT_VERSION)/g' \
118             -e 's/PROJECT_RELEASE/$(PROJECT_RELEASE)/g' \
119             osx/License.rtf.in > osx/License.rtf
120         sed -e 's/PROJECT_VERSION/$(PROJECT_VERSION)/g' \
121             -e 's/PROJECT_RELEASE/$(PROJECT_RELEASE)/g' \
122             osx/ReadMe.rtf.in > osx/ReadMe.rtf
123         aclocal
124         automake -a
125         autoconf
126         ./configure
127         $(MAKE)
128         rm -fr Distribution_Folder $(MACPKG)
129         mkdir -p Distribution_Folder/Package_Root/private/etc
130         mkdir -p Distribution_Folder/Package_Root/Applications
131         mkdir -p Distribution_Folder/Package_Root/usr/share/doc/$(PROJECT)/Headers
132         mkdir -p Distribution_Folder/Package_Root/usr/bin
133         mkdir -p Distribution_Folder/Package_Root/usr/share/man/man1
134         mkdir -p Distribution_Folder/Resources/PreFlight
135         mkdir -p Distribution_Folder/Resources/PostFlight
136         -chmod a+rx Distribution_Folder/Resources/PreFlight/* Distribution_Folder/Resources/PostFlight/* 
137         cp Source/robodoc Distribution_Folder/Package_Root/usr/bin
138         cp Source/robohdrs Distribution_Folder/Package_Root/usr/bin
139         cp Docs/robodoc.1 Distribution_Folder/Package_Root/usr/share/man/man1
140         cp Docs/robohdrs.1 Distribution_Folder/Package_Root/usr/share/man/man1
141         chmod 755 Distribution_Folder/Package_Root/usr/bin/*
142         chmod 644 Distribution_Folder/Package_Root/usr/share/man/man1/*
143         cp AUTHORS ChangeLog COPYING DEVELOPERS INSTALL NEWS README TODO UPGRADE Distribution_Folder/Package_Root/usr/share/doc/$(PROJECT)
144         cp Headers/*.sample Distribution_Folder/Package_Root/usr/share/doc/$(PROJECT)/Headers
145         mkdir -p $(MACPKG)/Contents/Resources/PostFlight
146         mkdir -p $(MACPKG)/Contents/Resources/PreFlight
147         mkdir -p $(MACPKG)/Contents/Resources/English.lproj
148         cp osx/*.rtf $(MACPKG)/Contents/Resources
149         (cd Distribution_Folder; mkbom Package_Root ../$(MACPKG)/Contents/Resources/$(PROJECT).bom)
150         (cd Distribution_Folder/Package_Root; pax -w -f ../../$(MACPKG)/Contents/Resources/$(PROJECT).pax .)
151         (cd $(MACPKG)/Contents/Resources; gzip $(PROJECT).pax)
152         echo "Numfiles 20" > $(MACPKG)/Contents/Resources/$(PROJECT).sizes
153         echo "InstalledSize 352" >> $(MACPKG)/Contents/Resources/$(PROJECT).sizes
154         echo "CompressedSize 352" >> $(MACPKG)/Contents/Resources/$(PROJECT).sizes
155         echo "Title ROBODoc" > $(PKGINF)
156         echo "Version 4.0.0" >> $(PKGINF)
157         echo "Description Autdocs formatter" >> $(PKGINF)
158         echo "DefaultLocation /" >> $(PKGINF)
159         echo "DeleteWarning" >> $(PKGINF)
160         echo "" >> $(PKGINF)
161         echo "### Package Flags" >> $(PKGINF)
162         echo "" >> $(PKGINF)
163         echo "NeedsAuthorization YES" >> $(PKGINF)
164         echo "Relocatable NO" >> $(PKGINF)
165         echo "RequiresReboot NO" >> $(PKGINF)
166         echo "UseUserMask NO" >> $(PKGINF)
167         echo "OverwritePermissions NO" >> $(PKGINF)
168         echo "InstallFat NO" >> $(PKGINF)
169         echo -n pmkrpkg1 > $(MACPKG)/Contents/PkgInfo
170         sh osx/dmg.sh $(PROJECT_NAME) $(PROJECT_VERSION) $(PROJECT_RELEASE) 
171         rm -fr Distribution_Folder $(MACPKG)
172
173 #****
174
175 # date format for spec file
176 .PHONY: logdate
177 logdate:
178         echo "`date +'* %a %b %d %Y'` `whoami`"
179
180 .PHONY: chkpkg
181 chkpkg:
182         rpm -qpi $(RHDIR)/RPMS/i386/$(RPM)
183         rpm -qpl $(RHDIR)/RPMS/i386/$(RPM)
184
185 .PHONY: chksys
186 chksys:
187         rpm -qa | grep $(PROJECT_NAME)
188
189 .PHONY: test
190 test: install chksys uninstall
191
192 .PHONY: install
193 install:
194         sudo rpm -i $(RHDIR)/RPMS/i386/$(RPM)
195
196 .PHONY: uninstall
197 uninstall:
198         sudo rpm -e $(PROJECT_NAME)
199
200 #****