Tue, 29 Mar 2011 19:46:35 +0200
Correct and introduce slightly needed logic, leading to better reliability:
Update bash(1) patch logic, correct several buildconf make location
errors, correct failed bash(1) configure invocation, enable perl(1) to
build with unpathed make(1), patch rpm(1) to correctly link with
internal libdb(3), and lastly unsuscessfully try to reorganize rpm patch
hunks.
1 ##
2 ## rpm.patch.feature -- Annotated OpenPKG RPM Patch file
3 ## Copyright (c) 2000-2007 OpenPKG Foundation e.V. <http://openpkg.net/>
4 ## Copyright (c) 2000-2007 Ralf S. Engelschall <http://engelschall.com/>
5 ##
6 ## This file assembles changes to existing RPM source files between
7 ## the original RedHat RPM and the OpenPKG RPM variant. It can be
8 ## automatically applied to a vanilla RedHat RPM source tree with the
9 ## 'patch' tool to upgrade those files. Each patch snippet is annotated
10 ## with a short description.
11 ##
12 ## Created on: 13-Sep-2006
13 ##
14 ## ATTENTION: THIS PATCH FILE WAS AUTO-GENERATED FROM AN OPENPKG
15 ## RPM CVS REPOSITORY, HENCE DO NOT EDIT THIS FILE.
16 ##
18 +---------------------------------------------------------------------------
19 | Remove "tools" directory from sub-directory list because it contains
20 | things we are not interested in and which cause some build trouble
21 | anyway.
22 | Use a plain "rpmpopt" file without any trailing version.
23 | Adjust paths to conform to OpenPKG filesystem layout.
24 | Do not run the "installplatform" script, because not needed for OpenPKG.
25 +---------------------------------------------------------------------------
26 Index: Makefile.am
27 --- Makefile.am 29 May 2003 18:20:28 -0000 1.1.1.17
28 +++ Makefile.am 22 Jan 2004 21:42:02 -0000 1.2
29 @@ -12,9 +12,9 @@
30 xmlspec/examples/*.sh xmlspec/examples/*.lst \
31 xmlspec/examples/*.xmlspec \
32 po/*.in po/*.po po/rpm.pot \
33 - rpm.magic rpmpopt-$(VERSION) rpmqv.c rpm.c
34 + rpm.magic rpmpopt rpmqv.c rpm.c
36 -SUBDIRS = intl po @WITH_ZLIB_SUBDIR@ @WITH_ELFUTILS_SUBDIR@ file @WITH_DB_SUBDIR@ popt @WITH_BEECRYPT_SUBDIR@ rpmio rpmdb lib build misc @WITH_PYTHON_SUBDIR@ tools scripts tests doc .
37 +SUBDIRS = intl @WITH_ZLIB_SUBDIR@ @WITH_ELFUTILS_SUBDIR@ file @WITH_DB_SUBDIR@ popt @WITH_BEECRYPT_SUBDIR@ rpmio rpmdb lib build misc @WITH_PYTHON_SUBDIR@ scripts tests doc .
39 INCLUDES = \
40 -I$(top_srcdir)/build \
41 @@ -47,13 +47,10 @@
43 pkglibdir = @RPMCONFIGDIR@
44 pkglib_PROGRAMS = rpmb rpmd rpmi rpmk rpmq
45 -pkglib_DATA = rpmrc rpmpopt-$(VERSION) macros
46 +pkglib_DATA = rpmrc rpmpopt macros
47 pkglib_SCRIPTS = find-provides find-requires mkinstalldirs \
48 config.guess config.sub config.site
50 -rpmpopt-$(VERSION): rpmpopt
51 - cp rpmpopt $@
52 -
53 noinst_HEADERS = build.h debug.h system.h
55 rpm_SOURCES =
56 @@ -124,32 +121,32 @@
57 pkgsrcdir = $(prefix)/src/$(RPMCANONVENDOR)
59 install-data-local:
60 - @$(mkinstalldirs) $(DESTDIR)$(varprefix)/lib/rpm
61 + @$(mkinstalldirs) $(DESTDIR)$(varprefix)/lib/openpkg
62 @rm -f $(DESTDIR)$(libdir)/rpmrc
63 @@LN_S@ rpm/rpmrc $(DESTDIR)$(libdir)/rpmrc
64 @rm -f $(DESTDIR)$(libdir)/rpmpopt
65 @@LN_S@ rpm/rpmpopt $(DESTDIR)$(libdir)/rpmpopt
66 @rm -f $(DESTDIR)$(libdir)/rpm/rpmt
67 - @@LN_S@ rpmb $(DESTDIR)$(libdir)/rpm/rpmt
68 - @rm -f $(DESTDIR)$(libdir)/rpm/rpme
69 - @@LN_S@ rpmi $(DESTDIR)$(libdir)/rpm/rpme
70 - @rm -f $(DESTDIR)$(libdir)/rpm/rpmu
71 - @@LN_S@ rpmi $(DESTDIR)$(libdir)/rpm/rpmu
72 - @rm -f $(DESTDIR)$(libdir)/rpm/rpmv
73 - @@LN_S@ rpmq $(DESTDIR)$(libdir)/rpm/rpmv
74 + @@LN_S@ rpmb $(DESTDIR)$(libdir)/openpkg/rpmt
75 + @rm -f $(DESTDIR)$(libdir)/openpkg/rpme
76 + @@LN_S@ rpmi $(DESTDIR)$(libdir)/openpkg/rpme
77 + @rm -f $(DESTDIR)$(libdir)/openpkg/rpmu
78 + @@LN_S@ rpmi $(DESTDIR)$(libdir)/openpkg/rpmu
79 + @rm -f $(DESTDIR)$(libdir)/openpkg/rpmv
80 + @@LN_S@ rpmq $(DESTDIR)$(libdir)/openpkg/rpmv
81 rm -f $(DESTDIR)$(bindir)/rpmbuild
82 - @LN_S@ ../lib/rpm/rpmb $(DESTDIR)$(bindir)/rpmbuild
83 + @LN_S@ ../lib/openpkg/rpmb $(DESTDIR)$(bindir)/rpmbuild
84 rm -f $(DESTDIR)$(bindir)/rpmquery
85 - @LN_S@ ../lib/rpm/rpmq $(DESTDIR)$(bindir)/rpmquery
86 + @LN_S@ ../lib/openpkg/rpmq $(DESTDIR)$(bindir)/rpmquery
87 rm -f $(DESTDIR)$(bindir)/rpmverify
88 - @LN_S@ ../lib/rpm/rpmv $(DESTDIR)$(bindir)/rpmverify
89 + @LN_S@ ../lib/openpkg/rpmv $(DESTDIR)$(bindir)/rpmverify
90 rm -f $(DESTDIR)$(bindir)/rpmsign
91 - @LN_S@ ../lib/rpm/rpmk $(DESTDIR)$(bindir)/rpmsign
92 + @LN_S@ ../lib/openpkg/rpmk $(DESTDIR)$(bindir)/rpmsign
93 rm -f $(DESTDIR)$(bindir)/rpmdb ; \
94 - @LN_S@ ../lib/rpm/rpmd $(DESTDIR)$(bindir)/rpmdb ; \
95 + @LN_S@ ../lib/openpkg/rpmd $(DESTDIR)$(bindir)/rpmdb ; \
96 for bf in e i u ; do \
97 rm -f $(DESTDIR)$(bindir)/rpm$$bf ; \
98 - @LN_S@ ../lib/rpm/rpm$$bf $(DESTDIR)$(bindir)/rpm$$bf ; \
99 + @LN_S@ ../lib/openpkg/rpm$$bf $(DESTDIR)$(bindir)/rpm$$bf ; \
100 done
101 @for dir in BUILD RPMS SOURCES SPECS SRPMS ; do\
102 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/$$dir;\
103 @@ -174,11 +171,6 @@
104 *) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/@host_cpu@ ;;\
105 esac
106 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/noarch
107 - @case "@host_os@" in \
108 - mint) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/m68kmint ;;\
109 - solaris*|linux*) \
110 - chmod u+x ./installplatform; DESTDIR="$(DESTDIR)" pkglibdir="$(pkglibdir)" ./installplatform rpmrc macros platform ;; \
111 - esac
112 @$(mkinstalldirs) $(DESTDIR)/var/tmp
114 .PHONY: setperms
115 @@ -198,10 +190,10 @@
116 $(__CHOWN) ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(pkglibdir)/$$f ;\
117 done
118 @$(__CHOWN) ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(pkglibdir)
119 - @$(__CHOWN) -R ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(varprefix)/lib/rpm
120 - -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/rpm/[A-Z]*
121 - -@$(__CHMOD) 0775 $(DESTDIR)$(varprefix)/lib/rpm
122 - -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/rpm/__db.*
123 + @$(__CHOWN) -R ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(varprefix)/lib/openpkg
124 + -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/openpkg/[A-Z]*
125 + -@$(__CHMOD) 0775 $(DESTDIR)$(varprefix)/lib/openpkg
126 + -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/openpkg/__db.*
128 .PHONY: unsetgid
129 unsetgid:
130 @@ -244,7 +236,7 @@
131 @sudo ./rpm -ta rpm-$(VERSION).tar.gz
133 .PHONY: doxygen
134 -doxygen @WITH_APIDOCS_TARGET@: Doxyfile rpmpopt-@VERSION@
135 +doxygen @WITH_APIDOCS_TARGET@: Doxyfile rpmpopt
136 rm -rf $@
137 mkdir -p $@
138 - [ X"@__DOXYGEN@" != Xno ] && @__DOXYGEN@
140 +---------------------------------------------------------------------------
141 | Remove "tools" directory from sub-directory list because it contains
142 | things we are not interested in and which cause some build trouble
143 | anyway.
144 | Use a plain "rpmpopt" file without any trailing version.
145 | Adjust paths to conform to OpenPKG filesystem layout.
146 | Do not run the "installplatform" script, because not needed for OpenPKG.
147 +---------------------------------------------------------------------------
148 Index: Makefile.in
149 --- Makefile.in 16 Jul 2003 17:05:42 -0000 1.1.1.23
150 +++ Makefile.in 22 Jan 2004 21:42:03 -0000 1.2
151 @@ -265,10 +265,10 @@
152 xmlspec/examples/*.sh xmlspec/examples/*.lst \
153 xmlspec/examples/*.xmlspec \
154 po/*.in po/*.po po/rpm.pot \
155 - rpm.magic rpmpopt-$(VERSION) rpmqv.c rpm.c
156 + rpm.magic rpmpopt rpmqv.c rpm.c
159 -SUBDIRS = intl po @WITH_ZLIB_SUBDIR@ @WITH_ELFUTILS_SUBDIR@ file @WITH_DB_SUBDIR@ popt @WITH_BEECRYPT_SUBDIR@ rpmio rpmdb lib build misc @WITH_PYTHON_SUBDIR@ tools scripts tests doc .
160 +SUBDIRS = intl @WITH_ZLIB_SUBDIR@ @WITH_ELFUTILS_SUBDIR@ file @WITH_DB_SUBDIR@ popt @WITH_BEECRYPT_SUBDIR@ rpmio rpmdb lib build misc @WITH_PYTHON_SUBDIR@ scripts tests doc .
162 INCLUDES = \
163 -I$(top_srcdir)/build \
164 @@ -301,7 +301,7 @@
165 bin_PROGRAMS = rpm2cpio
166 bin_SCRIPTS = gendiff
167 pkglib_PROGRAMS = rpmb rpmd rpmi rpmk rpmq
168 -pkglib_DATA = rpmrc rpmpopt-$(VERSION) macros
169 +pkglib_DATA = rpmrc rpmpopt macros
170 pkglib_SCRIPTS = find-provides find-requires mkinstalldirs \
171 config.guess config.sub config.site
173 @@ -1058,8 +1058,6 @@
174 uninstall-rpmbinPROGRAMS
177 -rpmpopt-$(VERSION): rpmpopt
178 - cp rpmpopt $@
179 rpm.o: rpmqv.c
180 $(COMPILE) -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c rpmqv.c
181 rpmb.o: rpmqv.c
182 @@ -1097,32 +1095,32 @@
183 `make -s sources -C popt`
185 install-data-local:
186 - @$(mkinstalldirs) $(DESTDIR)$(varprefix)/lib/rpm
187 + @$(mkinstalldirs) $(DESTDIR)$(varprefix)/lib/openpkg
188 @rm -f $(DESTDIR)$(libdir)/rpmrc
189 @@LN_S@ rpm/rpmrc $(DESTDIR)$(libdir)/rpmrc
190 @rm -f $(DESTDIR)$(libdir)/rpmpopt
191 @@LN_S@ rpm/rpmpopt $(DESTDIR)$(libdir)/rpmpopt
192 - @rm -f $(DESTDIR)$(libdir)/rpm/rpmt
193 - @@LN_S@ rpmb $(DESTDIR)$(libdir)/rpm/rpmt
194 - @rm -f $(DESTDIR)$(libdir)/rpm/rpme
195 - @@LN_S@ rpmi $(DESTDIR)$(libdir)/rpm/rpme
196 - @rm -f $(DESTDIR)$(libdir)/rpm/rpmu
197 - @@LN_S@ rpmi $(DESTDIR)$(libdir)/rpm/rpmu
198 - @rm -f $(DESTDIR)$(libdir)/rpm/rpmv
199 - @@LN_S@ rpmq $(DESTDIR)$(libdir)/rpm/rpmv
200 + @rm -f $(DESTDIR)$(libdir)/openpkg/rpmt
201 + @@LN_S@ rpmb $(DESTDIR)$(libdir)/openpkg/rpmt
202 + @rm -f $(DESTDIR)$(libdir)/openpkg/rpme
203 + @@LN_S@ rpmi $(DESTDIR)$(libdir)/openpkg/rpme
204 + @rm -f $(DESTDIR)$(libdir)/openpkg/rpmu
205 + @@LN_S@ rpmi $(DESTDIR)$(libdir)/openpkg/rpmu
206 + @rm -f $(DESTDIR)$(libdir)/openpkg/rpmv
207 + @@LN_S@ rpmq $(DESTDIR)$(libdir)/openpkg/rpmv
208 rm -f $(DESTDIR)$(bindir)/rpmbuild
209 - @LN_S@ ../lib/rpm/rpmb $(DESTDIR)$(bindir)/rpmbuild
210 + @LN_S@ ../lib/openpkg/rpmb $(DESTDIR)$(bindir)/rpmbuild
211 rm -f $(DESTDIR)$(bindir)/rpmquery
212 - @LN_S@ ../lib/rpm/rpmq $(DESTDIR)$(bindir)/rpmquery
213 + @LN_S@ ../lib/openpkg/rpmq $(DESTDIR)$(bindir)/rpmquery
214 rm -f $(DESTDIR)$(bindir)/rpmverify
215 - @LN_S@ ../lib/rpm/rpmv $(DESTDIR)$(bindir)/rpmverify
216 + @LN_S@ ../lib/openpkg/rpmv $(DESTDIR)$(bindir)/rpmverify
217 rm -f $(DESTDIR)$(bindir)/rpmsign
218 - @LN_S@ ../lib/rpm/rpmk $(DESTDIR)$(bindir)/rpmsign
219 + @LN_S@ ../lib/openpkg/rpmk $(DESTDIR)$(bindir)/rpmsign
220 rm -f $(DESTDIR)$(bindir)/rpmdb ; \
221 - @LN_S@ ../lib/rpm/rpmd $(DESTDIR)$(bindir)/rpmdb ; \
222 + @LN_S@ ../lib/openpkg/rpmd $(DESTDIR)$(bindir)/rpmdb ; \
223 for bf in e i u ; do \
224 rm -f $(DESTDIR)$(bindir)/rpm$$bf ; \
225 - @LN_S@ ../lib/rpm/rpm$$bf $(DESTDIR)$(bindir)/rpm$$bf ; \
226 + @LN_S@ ../lib/openpkg/rpm$$bf $(DESTDIR)$(bindir)/rpm$$bf ; \
227 done
228 @for dir in BUILD RPMS SOURCES SPECS SRPMS ; do\
229 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/$$dir;\
230 @@ -1147,11 +1145,6 @@
231 *) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/@host_cpu@ ;;\
232 esac
233 $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/noarch
234 - @case "@host_os@" in \
235 - mint) $(mkinstalldirs) $(DESTDIR)$(pkgsrcdir)/RPMS/m68kmint ;;\
236 - solaris*|linux*) \
237 - chmod u+x ./installplatform; DESTDIR="$(DESTDIR)" pkglibdir="$(pkglibdir)" ./installplatform rpmrc macros platform ;; \
238 - esac
239 @$(mkinstalldirs) $(DESTDIR)/var/tmp
241 .PHONY: setperms
242 @@ -1171,10 +1164,10 @@
243 $(__CHOWN) ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(pkglibdir)/$$f ;\
244 done
245 @$(__CHOWN) ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(pkglibdir)
246 - @$(__CHOWN) -R ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(varprefix)/lib/rpm
247 - -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/rpm/[A-Z]*
248 - -@$(__CHMOD) 0775 $(DESTDIR)$(varprefix)/lib/rpm
249 - -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/rpm/__db.*
250 + @$(__CHOWN) -R ${RPMUSER}.${RPMGROUP} $(DESTDIR)$(varprefix)/lib/openpkg
251 + -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/openpkg/[A-Z]*
252 + -@$(__CHMOD) 0775 $(DESTDIR)$(varprefix)/lib/openpkg
253 + -@$(__CHMOD) 0664 $(DESTDIR)$(varprefix)/lib/openpkg/__db.*
255 .PHONY: unsetgid
256 unsetgid:
257 @@ -1217,7 +1210,7 @@
258 @sudo ./rpm -ta rpm-$(VERSION).tar.gz
260 .PHONY: doxygen
261 -doxygen @WITH_APIDOCS_TARGET@: Doxyfile rpmpopt-@VERSION@
262 +doxygen @WITH_APIDOCS_TARGET@: Doxyfile rpmpopt
263 rm -rf $@
264 mkdir -p $@
265 - [ X"@__DOXYGEN@" != Xno ] && @__DOXYGEN@
267 +---------------------------------------------------------------------------
268 | Add support for splitted source directories, i.e., source files
269 | alternatively can be placed into the .spec directory and are picked
270 | up there, too.
271 +---------------------------------------------------------------------------
272 Index: build/build.c
273 --- build/build.c 4 Mar 2003 15:27:33 -0000 1.1.1.20
274 +++ build/build.c 6 Feb 2004 15:37:57 -0000 1.4
275 @@ -33,7 +33,15 @@
277 for (p = spec->sources; p != NULL; p = p->next) {
278 if (! (p->flags & RPMBUILD_ISNO)) {
279 +#ifndef OPENPKG
280 const char *fn = rpmGetPath("%{_sourcedir}/", p->source, NULL);
281 +#else
282 + const char *fn = rpmGetPath("%{_specdir}/", p->source, NULL);
283 + if (access(fn, F_OK) == -1) {
284 + fn = _free(fn);
285 + fn = rpmGetPath("%{_sourcedir}/", p->source, NULL);
286 + }
287 +#endif
288 rc = Unlink(fn);
289 fn = _free(fn);
290 }
291 @@ -42,7 +50,15 @@
292 for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
293 for (p = pkg->icon; p != NULL; p = p->next) {
294 if (! (p->flags & RPMBUILD_ISNO)) {
295 +#ifndef OPENPKG
296 const char *fn = rpmGetPath("%{_sourcedir}/", p->source, NULL);
297 +#else
298 + const char *fn = rpmGetPath("%{_specdir}/", p->source, NULL);
299 + if (access(fn, F_OK) == -1) {
300 + fn = _free(fn);
301 + fn = rpmGetPath("%{_sourcedir}/", p->source, NULL);
302 + }
303 +#endif
304 rc = Unlink(fn);
305 fn = _free(fn);
306 }
308 +---------------------------------------------------------------------------
309 | Add support for the OpenPKG custom .spec file sections %track
310 | (package build-time feature for performing vendor source tracking)
311 | and %test (package install-time feature for performing package
312 | run-time tests).
313 +---------------------------------------------------------------------------
314 Index: build/build.c
315 --- build/build.c 4 Mar 2003 15:27:33 -0000 1.1.1.20
316 +++ build/build.c 6 Feb 2004 15:37:57 -0000 1.4
317 @@ -113,6 +129,14 @@
318 mTemplate = "%{__spec_clean_template}";
319 mPost = "%{__spec_clean_post}";
320 break;
321 +#ifdef OPENPKG
322 + case RPMBUILD_TRACK:
323 + name = "%track";
324 + sb = spec->track;
325 + mTemplate = "%{__spec_track_template}";
326 + mPost = "%{__spec_track_post}";
327 + break;
328 +#endif
329 case RPMBUILD_STRINGBUF:
330 default:
331 mTemplate = "%{___build_template}";
332 @@ -169,7 +193,11 @@
334 (void) fputs(buildTemplate, fp);
336 +#ifdef OPENPKG
337 + if (what != RPMBUILD_PREP && what != RPMBUILD_RMBUILD && spec->buildSubdir && what != RPMBUILD_TRACK)
338 +#else
339 if (what != RPMBUILD_PREP && what != RPMBUILD_RMBUILD && spec->buildSubdir)
340 +#endif
341 fprintf(fp, "cd %s\n", spec->buildSubdir);
343 if (what == RPMBUILD_RMBUILD) {
344 @@ -215,6 +243,9 @@
345 buildCmd = rpmExpand("%{___build_cmd}", " ", buildScript, NULL);
346 (void) poptParseArgvString(buildCmd, &argc, &argv);
348 +#ifdef OPENPKG
349 + if (what != RPMBUILD_TRACK)
350 +#endif
351 rpmMessage(RPMMESS_NORMAL, _("Executing(%s): %s\n"), name, buildCmd);
352 if (!(child = fork())) {
354 @@ -290,6 +323,12 @@
355 /*@=boundsread@*/
356 }
357 } else {
358 +#ifdef OPENPKG
359 + if ((what & RPMBUILD_TRACK) &&
360 + (rc = doScript(spec, RPMBUILD_TRACK, NULL, NULL, test)))
361 + goto exit;
362 +#endif
363 +
364 if ((what & RPMBUILD_PREP) &&
365 (rc = doScript(spec, RPMBUILD_PREP, NULL, NULL, test)))
366 goto exit;
368 +---------------------------------------------------------------------------
369 | Unconditionally remove temporary files ("rpm-tmp.XXXXX") which
370 | were generated for the executed scripts. In OpenPKG we run the
371 | scripts in debug mode ("set -x") anyway, so we never need to
372 | see the whole generated script -- not even if it breaks. Instead
373 | we would just have temporary files staying around forever.
374 +---------------------------------------------------------------------------
375 Index: build/build.c
376 --- build/build.c 4 Mar 2003 15:27:33 -0000 1.1.1.20
377 +++ build/build.c 6 Feb 2004 15:37:57 -0000 1.4
378 @@ -242,7 +273,9 @@
380 exit:
381 if (scriptName) {
382 +#ifndef OPENPKG
383 if (!rc)
384 +#endif
385 (void) Unlink(scriptName);
386 scriptName = _free(scriptName);
387 }
389 +---------------------------------------------------------------------------
390 | In OpenPKG we use per-package %{_sourcedir} and %{_specdir}
391 | definitions (macros have trailing ".../%{name}"). On removal
392 | of source(s) and .spec file, this per-package directory would
393 | be kept (usually <prefix>/RPM/SRC/<name>/), because RPM does
394 | not know about this OpenPKG convention. So, let RPM try(!) to
395 | remove the two directories (if they are empty) and just ignore
396 | removal failures (if they are still not empty).
397 +---------------------------------------------------------------------------
398 Index: build/build.c
399 --- build/build.c 4 Mar 2003 15:27:33 -0000 1.1.1.20
400 +++ build/build.c 6 Feb 2004 15:37:57 -0000 1.4
401 @@ -338,6 +377,21 @@
402 if (what & RPMBUILD_RMSPEC)
403 (void) Unlink(spec->specFile);
405 +#ifdef OPENPKG
406 + if (what & RPMBUILD_RMSOURCE) {
407 + const char *pn;
408 + pn = rpmGetPath("%{_sourcedir}", NULL);
409 + Rmdir(pn); /* ignore error, it is ok if it fails (usually with ENOTEMPTY) */
410 + pn = _free(pn);
411 + }
412 + if (what & RPMBUILD_RMSPEC) {
413 + const char *pn;
414 + pn = rpmGetPath("%{_specdir}", NULL);
415 + Rmdir(pn); /* ignore error, it is ok if it fails (usually with ENOTEMPTY) */
416 + pn = _free(pn);
417 + }
418 +#endif
419 +
420 exit:
421 if (rc && rpmlogGetNrecs() > 0) {
422 rpmMessage(RPMMESS_NORMAL, _("\n\nRPM build errors:\n"));
424 +---------------------------------------------------------------------------
425 | Do not declare any files as %doc files by default.
426 +---------------------------------------------------------------------------
427 Index: build/files.c
428 --- build/files.c 4 Mar 2003 17:04:13 -0000 1.1.1.20
429 +++ build/files.c 6 Feb 2004 15:37:57 -0000 1.3
430 @@ -1971,6 +1971,7 @@
431 fl.defSpecdFlags = 0;
433 fl.docDirCount = 0;
434 +#if 0
435 fl.docDirs[fl.docDirCount++] = xstrdup("/usr/doc");
436 fl.docDirs[fl.docDirCount++] = xstrdup("/usr/man");
437 fl.docDirs[fl.docDirCount++] = xstrdup("/usr/info");
438 @@ -1981,6 +1982,7 @@
439 fl.docDirs[fl.docDirCount++] = rpmGetPath("%{_docdir}", NULL);
440 fl.docDirs[fl.docDirCount++] = rpmGetPath("%{_mandir}", NULL);
441 fl.docDirs[fl.docDirCount++] = rpmGetPath("%{_infodir}", NULL);
442 +#endif
444 fl.fileList = NULL;
445 fl.fileListRecsAlloced = 0;
447 +---------------------------------------------------------------------------
448 | Make sure the "Provides" headers are available for querying from the
449 | .src.rpm files.
450 +---------------------------------------------------------------------------
451 Index: build/files.c
452 --- build/files.c 4 Mar 2003 17:04:13 -0000 1.1.1.20
453 +++ build/files.c 6 Feb 2004 15:37:57 -0000 1.3
454 @@ -2183,6 +2185,12 @@
455 case RPMTAG_CHANGELOGTEXT:
456 case RPMTAG_URL:
457 case HEADER_I18NTABLE:
458 +#ifdef OPENPKG
459 + case RPMTAG_PROVIDENAME:
460 + case RPMTAG_PROVIDEVERSION:
461 + case RPMTAG_PROVIDEFLAGS:
462 + case RPMTAG_CLASS:
463 +#endif
464 if (ptr)
465 (void)headerAddEntry(spec->sourceHeader, tag, type, ptr, count);
466 /*@switchbreak@*/ break;
468 +---------------------------------------------------------------------------
469 | Add support for splitted source directories, i.e., source files
470 | alternatively can be placed into the .spec directory and are picked
471 | up there, too.
472 +---------------------------------------------------------------------------
473 Index: build/files.c
474 --- build/files.c 4 Mar 2003 17:04:13 -0000 1.1.1.20
475 +++ build/files.c 6 Feb 2004 15:37:57 -0000 1.3
476 @@ -2253,8 +2261,20 @@
477 }
479 { const char * sfn;
480 +#ifndef OPENPKG
481 sfn = rpmGetPath( ((srcPtr->flags & RPMBUILD_ISNO) ? "!" : ""),
482 "%{_sourcedir}/", srcPtr->source, NULL);
483 +#else
484 + const char *sfn2;
485 + sfn2 = rpmGetPath("%{_specdir}/", srcPtr->source, NULL);
486 + if (access(sfn2, F_OK) == 0)
487 + sfn = rpmGetPath( ((srcPtr->flags & RPMBUILD_ISNO) ? "!" : ""),
488 + "%{_specdir}/", srcPtr->source, NULL);
489 + else
490 + sfn = rpmGetPath( ((srcPtr->flags & RPMBUILD_ISNO) ? "!" : ""),
491 + "%{_sourcedir}/", srcPtr->source, NULL);
492 + sfn2 = _free(sfn2);
493 +#endif
494 appendLineStringBuf(sourceFiles, sfn);
495 sfn = _free(sfn);
496 }
497 @@ -2263,8 +2283,20 @@
498 for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
499 for (srcPtr = pkg->icon; srcPtr != NULL; srcPtr = srcPtr->next) {
500 const char * sfn;
501 +#ifndef OPENPKG
502 sfn = rpmGetPath( ((srcPtr->flags & RPMBUILD_ISNO) ? "!" : ""),
503 "%{_sourcedir}/", srcPtr->source, NULL);
504 +#else
505 + const char *sfn2;
506 + sfn2 = rpmGetPath("%{_specdir}/", srcPtr->source, NULL);
507 + if (access(sfn2, F_OK) == 0)
508 + sfn = rpmGetPath( ((srcPtr->flags & RPMBUILD_ISNO) ? "!" : ""),
509 + "%{_specdir}/", srcPtr->source, NULL);
510 + else
511 + sfn = rpmGetPath( ((srcPtr->flags & RPMBUILD_ISNO) ? "!" : ""),
512 + "%{_sourcedir}/", srcPtr->source, NULL);
513 + sfn2 = _free(sfn2);
514 +#endif
515 appendLineStringBuf(sourceFiles, sfn);
516 sfn = _free(sfn);
517 }
519 +---------------------------------------------------------------------------
520 | Add support for splitted source directories, i.e., source files
521 | alternatively can be placed into the .spec directory and are picked
522 | up there, too.
523 +---------------------------------------------------------------------------
524 Index: build/parsePreamble.c
525 --- build/parsePreamble.c 3 Mar 2003 20:46:34 -0000 1.1.1.13
526 +++ build/parsePreamble.c 6 Feb 2004 15:37:58 -0000 1.3
527 @@ -366,7 +368,15 @@
528 size_t nb, iconsize;
530 /* XXX use rpmGenPath(rootdir, "%{_sourcedir}/", file) for icon path. */
531 +#ifndef OPENPKG
532 fn = rpmGetPath("%{_sourcedir}/", file, NULL);
533 +#else
534 + fn = rpmGetPath("%{_specdir}/", file, NULL);
535 + if (access(fn, F_OK) == -1) {
536 + fn = _free(fn);
537 + fn = rpmGetPath("%{_sourcedir}/", file, NULL);
538 + }
539 +#endif
541 fd = Fopen(fn, "r.ufdio");
542 if (fd == NULL || Ferror(fd)) {
544 +---------------------------------------------------------------------------
545 | In OpenPKG, the RPM package contains own local versions of the
546 | "patch" and "tar" tools, so we cannot accept hard-coded names here.
547 | Instead we expand a variable to allow us to direct RPM to our tools.
548 | Additionally, pass option "-b" to patch(1) so it creates original
549 | files not only if a non-standard (not ".orig") suffix is used.
550 | Finally, add support for the GNU patch "-d" option for convenient
551 | changing into a subdirectory.
552 | Remove "unzip" support, because in OpenPKG there are less than
553 | a dozend packages requiring unpacking of .zip files. For these
554 | it is fully sufficient to explicitly require the "infozip"
555 | package (containing "unzip") and leaving the less portable
556 | "unzip" out of the bootstrap package.
557 +---------------------------------------------------------------------------
558 Index: build/parsePrep.c
559 --- build/parsePrep.c 7 Aug 2002 14:20:45 -0000 1.1.1.10
560 +++ build/parsePrep.c 6 Jun 2005 15:53:04 -0000 1.4
561 @@ -66,7 +66,7 @@
562 */
563 /*@-boundswrite@*/
564 /*@observer@*/ static char *doPatch(Spec spec, int c, int strip, const char *db,
565 - int reverse, int removeEmpties)
566 + int reverse, int removeEmpties, const char *subdir)
567 /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
568 /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/
569 {
570 @@ -76,6 +76,7 @@
571 struct Source *sp;
572 rpmCompressedMagic compressed = COMPRESSED_NOT;
573 int urltype;
574 + const char *patcher;
576 for (sp = spec->sources; sp != NULL; sp = sp->next) {
577 if ((sp->flags & RPMBUILD_ISPATCH) && (sp->num == c)) {
578 @@ -97,6 +106,10 @@
579 strcat(args, "--suffix ");
580 strcat(args, db);
581 }
582 + if (subdir) {
583 + strcat(args, "-d ");
584 + strcat(args, subdir);
585 + }
586 if (reverse) {
587 strcat(args, " -R");
588 }
589 @@ -124,6 +137,10 @@
590 /*@notreached@*/ break;
591 }
593 + patcher = rpmGetPath("%{_patchbin}", NULL);
594 + if (strcmp(patcher, "%{_patchbin}") == 0)
595 + patcher = "patch";
596 +
597 if (compressed) {
598 const char *zipper = rpmGetPath(
599 (compressed == COMPRESSED_BZIP2 ? "%{_bzip2bin}" : "%{_gzipbin}"),
600 @@ -131,22 +148,23 @@
602 sprintf(buf,
603 "echo \"Patch #%d (%s):\"\n"
604 - "%s -d < %s | patch -p%d %s -s\n"
605 + "%s -d <%s | %s -p%d %s -s -b\n"
606 "STATUS=$?\n"
607 "if [ $STATUS -ne 0 ]; then\n"
608 " exit $STATUS\n"
609 "fi",
610 - c, /*@-unrecog@*/ (const char *) basename(fn), /*@=unrecog@*/
611 + c, /*@-unrecog@*/ basename(fn), /*@=unrecog@*/
612 zipper,
613 - fn, strip, args);
614 + fn, patcher, strip, args);
615 zipper = _free(zipper);
616 } else {
617 sprintf(buf,
618 "echo \"Patch #%d (%s):\"\n"
619 - "patch -p%d %s -s < %s", c, (const char *) basename(fn),
620 - strip, args, fn);
621 + "%s -p%d %s -s -b <%s", c, basename(fn),
622 + patcher, strip, args, fn);
623 }
625 + patcher = _free(patcher);
626 urlfn = _free(urlfn);
627 return buf;
628 }
629 @@ -171,6 +189,7 @@
630 struct Source *sp;
631 rpmCompressedMagic compressed = COMPRESSED_NOT;
632 int urltype;
633 + const char *tar;
635 for (sp = spec->sources; sp != NULL; sp = sp->next) {
636 if ((sp->flags & RPMBUILD_ISSOURCE) && (sp->num == c)) {
637 @@ -228,6 +255,10 @@
638 /*@notreached@*/ break;
639 }
641 + tar = rpmGetPath("%{_tarbin}", NULL);
642 + if (strcmp(tar, "%{_tarbin}") == 0)
643 + tar = "tar";
644 +
645 if (compressed != COMPRESSED_NOT) {
646 const char *zipper;
647 int needtar = 1;
648 @@ -240,6 +271,7 @@
649 case COMPRESSED_BZIP2:
650 t = "%{_bzip2bin} -dc";
651 break;
652 +#if 0
653 case COMPRESSED_ZIP:
654 if (rpmIsVerbose() && !quietly)
655 t = "%{_unzipbin}";
656 @@ -247,6 +279,7 @@
657 t = "%{_unzipbin} -qq";
658 needtar = 0;
659 break;
660 +#endif
661 }
662 zipper = rpmGetPath(t, NULL);
663 buf[0] = '\0';
664 @@ -254,8 +287,13 @@
665 zipper = _free(zipper);
666 *t++ = ' ';
667 t = stpcpy(t, fn);
668 - if (needtar)
669 - t = stpcpy( stpcpy( stpcpy(t, " | tar "), taropts), " -");
670 + if (needtar) {
671 + t = stpcpy(t, " | ");
672 + t = stpcpy(t, tar);
673 + t = stpcpy(t, " ");
674 + t = stpcpy(t, taropts);
675 + t = stpcpy(t, " -");
676 + }
677 t = stpcpy(t,
678 "\n"
679 "STATUS=$?\n"
680 @@ -264,11 +302,14 @@
681 "fi");
682 } else {
683 buf[0] = '\0';
684 - t = stpcpy( stpcpy(buf, "tar "), taropts);
685 - *t++ = ' ';
686 + t = stpcpy(buf, tar);
687 + t = stpcpy(t, " ");
688 + t = stpcpy(t, taropts);
689 + t = stpcpy(t, " ");
690 t = stpcpy(t, fn);
691 }
693 + tar = _free(tar);
694 urlfn = _free(urlfn);
695 return buf;
696 }
697 @@ -443,7 +484,7 @@
698 /*@modifies spec->prep, rpmGlobalMacroContext,
699 fileSystem, internalState @*/
700 {
701 - char *opt_b;
702 + char *opt_b, *opt_d;
703 int opt_P, opt_p, opt_R, opt_E;
704 char *s;
705 char buf[BUFSIZ], *bp;
706 @@ -453,6 +494,7 @@
707 memset(patch_nums, 0, sizeof(patch_nums));
708 opt_P = opt_p = opt_R = opt_E = 0;
709 opt_b = NULL;
710 + opt_d = NULL;
711 patch_index = 0;
713 if (! strchr(" \t\n", line[6])) {
714 @@ -492,6 +534,15 @@
715 spec->lineNum, spec->line);
716 return RPMERR_BADSPEC;
717 }
718 + } else if (!strcmp(s, "-d")) {
719 + /* orig suffix */
720 + opt_d = strtok(NULL, " \t\n");
721 + if (! opt_d) {
722 + rpmError(RPMERR_BADSPEC,
723 + _("line %d: Need arg to %%patch -d: %s\n"),
724 + spec->lineNum, spec->line);
725 + return RPMERR_BADSPEC;
726 + }
727 } else if (!strncmp(s, "-p", sizeof("-p")-1)) {
728 /* unfortunately, we must support -pX */
729 if (! strchr(" \t\n", s[2])) {
730 @@ -530,14 +581,14 @@
731 /* All args processed */
733 if (! opt_P) {
734 - s = doPatch(spec, 0, opt_p, opt_b, opt_R, opt_E);
735 + s = doPatch(spec, 0, opt_p, opt_b, opt_R, opt_E, opt_d);
736 if (s == NULL)
737 return RPMERR_BADSPEC;
738 appendLineStringBuf(spec->prep, s);
739 }
741 for (x = 0; x < patch_index; x++) {
742 - s = doPatch(spec, patch_nums[x], opt_p, opt_b, opt_R, opt_E);
743 + s = doPatch(spec, patch_nums[x], opt_p, opt_b, opt_R, opt_E, opt_d);
744 if (s == NULL)
745 return RPMERR_BADSPEC;
746 appendLineStringBuf(spec->prep, s);
748 +---------------------------------------------------------------------------
749 | Add support for splitted source directories, i.e., source files
750 | alternatively can be placed into the .spec directory and are picked
751 | up there, too.
752 +---------------------------------------------------------------------------
753 Index: build/parsePrep.c
754 --- build/parsePrep.c 7 Aug 2002 14:20:45 -0000 1.1.1.10
755 +++ build/parsePrep.c 6 Jun 2005 15:53:04 -0000 1.4
756 @@ -87,7 +88,15 @@
757 return NULL;
758 }
760 +#ifndef OPENPKG
761 urlfn = rpmGetPath("%{_sourcedir}/", sp->source, NULL);
762 +#else
763 + urlfn = rpmGetPath("%{_specdir}/", sp->source, NULL);
764 + if (access(urlfn, F_OK) == -1) {
765 + urlfn = _free(urlfn);
766 + urlfn = rpmGetPath("%{_sourcedir}/", sp->source, NULL);
767 + }
768 +#endif
770 args[0] = '\0';
771 if (db) {
772 @@ -182,7 +201,15 @@
773 return NULL;
774 }
776 +#ifndef OPENPKG
777 urlfn = rpmGetPath("%{_sourcedir}/", sp->source, NULL);
778 +#else
779 + urlfn = rpmGetPath("%{_specdir}/", sp->source, NULL);
780 + if (access(urlfn, F_OK) == -1) {
781 + urlfn = _free(urlfn);
782 + urlfn = rpmGetPath("%{_sourcedir}/", sp->source, NULL);
783 + }
784 +#endif
786 /*@-internalglobs@*/ /* FIX: shrug */
787 taropts = ((rpmIsVerbose() && !quietly) ? "-xvvf" : "-xf");
789 +---------------------------------------------------------------------------
790 | Not everything on a system is RPM based (for instance OpenPKG is
791 | just an add-on to the system), so do not assume we can just require
792 | a package to provide "/bin/sh".
793 +---------------------------------------------------------------------------
794 Index: build/parseScript.c
795 --- build/parseScript.c 23 Jun 2002 19:47:12 -0000 1.1.1.12
796 +++ build/parseScript.c 30 Jan 2004 17:06:29 -0000 1.3
797 @@ -261,6 +269,7 @@
798 stripTrailingBlanksStringBuf(sb);
799 p = getStringBuf(sb);
801 + if (progArgv[0] != NULL && strcmp(progArgv[0], "/bin/sh") != 0)
802 (void) addReqProv(spec, pkg->header, (tagflags | RPMSENSE_INTERP), progArgv[0], NULL, 0);
804 /* Trigger script insertion is always delayed in order to */
806 +---------------------------------------------------------------------------
807 | Add support for splitted source directories, i.e., source files
808 | alternatively can be placed into the spec directory and are picked
809 | up there, too.
810 +---------------------------------------------------------------------------
811 Index: build/spec.c
812 --- build/spec.c 4 Mar 2003 15:25:51 -0000 1.1.1.21
813 +++ build/spec.c 30 Jan 2004 17:06:31 -0000 1.3
814 @@ -334,7 +337,15 @@
816 if (tag != RPMTAG_ICON) {
817 /*@-nullpass@*/ /* LCL: varargs needs null annotate. */
818 +#ifndef OPENPKG
819 const char *body = rpmGetPath("%{_sourcedir}/", p->source, NULL);
820 +#else
821 + const char *body = rpmGetPath("%{_specdir}/", p->source, NULL);
822 + if (access(body, F_OK) == -1) {
823 + body = _free(body);
824 + body = rpmGetPath("%{_sourcedir}/", p->source, NULL);
825 + }
826 +#endif
827 /*@=nullpass@*/
829 sprintf(buf, "%s%d",
831 +---------------------------------------------------------------------------
832 | Do not build with warnings on, because we do no RPM development
833 | (so warnings are useless here), they cause some confusion inside
834 | Berkeley-DB and also slow down building. Instead, increase the
835 | optimization level. Additionally, disable static linking of RPM
836 | tools. Finally, use "shtool mkdir" as the "mkdir -p" fallback.
837 +---------------------------------------------------------------------------
838 Index: configure.ac
839 --- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4
840 +++ configure.ac 13 Sep 2006 13:39:07 -0000
841 @@ -53,7 +53,7 @@
842 AS=${AS-as}
843 AC_SUBST(AS)
844 if test "$ac_cv_prog_gcc" = yes; then
845 - CFLAGS="$CFLAGS -D_GNU_SOURCE -D_REENTRANT -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts"
846 + CFLAGS="$CFLAGS -O2 -D_GNU_SOURCE -D_REENTRANT"
847 fi
848 export CFLAGS
850 @@ -142,6 +142,7 @@
851 # just link it dynamically
852 LDFLAGS_STATIC=""
853 fi
854 +LDFLAGS_STATIC="" # OpenPKG wants dynamically linked RPM tools
855 LDFLAGS_STATIC="${LDFLAGS} ${LDFLAGS_STATIC}" # libtool format
856 AC_MSG_RESULT($LDFLAGS_STATIC)
857 AC_SUBST(LDFLAGS_STATIC)
858 @@ -201,7 +202,7 @@
860 if test X"$MKDIR_P" = X0 ; then
861 AC_MSG_RESULT(no)
862 - MKDIR_P="`echo ${prefix}/lib/rpm/mkinstalldirs`"
863 + MKDIR_P="@l_prefix@/lib/openpkg/shtool mkdir -f -p -m 755"
864 else
865 AC_MSG_RESULT(yes)
866 fi
868 +---------------------------------------------------------------------------
869 | Disable the use of the internal zlib library, because
870 | we build against an external one.
871 +---------------------------------------------------------------------------
872 Index: configure.ac
873 --- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4
874 +++ configure.ac 13 Sep 2006 13:39:09 -0000
875 @@ -310,7 +311,7 @@
876 WITH_ZLIB_SUBDIR=
877 WITH_ZLIB_INCLUDE=
878 WITH_ZLIB_LIB=
879 -if test -d zlib ; then
880 +if false; then
881 WITH_ZLIB_SUBDIR=zlib
882 addlib \${top_builddir}/zlib
883 WITH_ZLIB_INCLUDE="-I\${top_srcdir}/${WITH_ZLIB_SUBDIR}"
885 +---------------------------------------------------------------------------
886 | Disable unnecessary INCPATH checks, because in OpenPKG the
887 | externally used libraries are all explicitly given. And they just
888 | would make RPM pick up things which we do not want to be picked up.
889 +---------------------------------------------------------------------------
890 Index: configure.ac
891 --- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4
892 +++ configure.ac 13 Sep 2006 13:39:11 -0000
893 @@ -324,38 +325,38 @@
895 localdone=
897 -dirs=$prefix
898 -if test "$cross_compiling" != "yes"; then
899 - dirs="$dirs /usr/local"
900 -fi
901 -for dir in $dirs
902 -do
903 - case $dir in
904 - NONE|/usr) continue;;
905 - /usr/local)
906 - if test X$localdone != X ; then continue; fi
907 - localdone="$dir"
908 - ;;
909 - esac
910 -
911 - AC_MSG_CHECKING(for $dir/lib in LIBS)
912 - if test -d $dir/lib 2> /dev/null ; then
913 - addlib $dir/lib
914 - AC_MSG_RESULT(yes)
915 - else
916 - AC_MSG_RESULT(no)
917 - fi
918 -
919 - AC_MSG_CHECKING(for $dir/include in INCPATH)
920 - if test -d $dir/include 2>/dev/null ; then
921 - if [ "$dir" != "/usr/local" ] ; then
922 - INCPATH="$INCPATH -I$dir/include"
923 - fi
924 - AC_MSG_RESULT(yes)
925 - else
926 - AC_MSG_RESULT(no)
927 - fi
928 -done
929 +dnl dirs=$prefix
930 +dnl if test "$cross_compiling" != "yes"; then
931 +dnl dirs="$dirs /usr/local"
932 +dnl fi
933 +dnl for dir in $dirs
934 +dnl do
935 +dnl case $dir in
936 +dnl NONE|/usr) continue;;
937 +dnl /usr/local)
938 +dnl if test X$localdone != X ; then continue; fi
939 +dnl localdone="$dir"
940 +dnl ;;
941 +dnl esac
942 +dnl
943 +dnl AC_MSG_CHECKING(for $dir/lib in LIBS)
944 +dnl if test -d $dir/lib 2> /dev/null ; then
945 +dnl addlib $dir/lib
946 +dnl AC_MSG_RESULT(yes)
947 +dnl else
948 +dnl AC_MSG_RESULT(no)
949 +dnl fi
950 +dnl
951 +dnl AC_MSG_CHECKING(for $dir/include in INCPATH)
952 +dnl if test -d $dir/include 2>/dev/null ; then
953 +dnl if test "$dir" != "/usr/local"; then
954 +dnl INCPATH="$INCPATH -I$dir/include"
955 +dnl fi
956 +dnl AC_MSG_RESULT(yes)
957 +dnl else
958 +dnl AC_MSG_RESULT(no)
959 +dnl fi
960 +dnl done
962 AC_MSG_CHECKING(for /usr/ucblib in LIBS)
963 if test -d /usr/ucblib ; then
965 +---------------------------------------------------------------------------
966 | Adjust paths for OpenPKG filesystem layout.
967 +---------------------------------------------------------------------------
968 Index: configure.ac
969 --- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4
970 +++ configure.ac 13 Sep 2006 13:39:12 -0000
971 @@ -1200,12 +1201,12 @@
972 AC_SUBST(LOCALEDIR)
973 LIBDIR="`echo $libdir | sed 's-/lib$-/%{_lib}-'`"
974 AC_SUBST(LIBDIR)
975 -RPMCONFIGDIR="`echo ${usrprefix}/lib/rpm`"
976 +RPMCONFIGDIR="@l_prefix@/lib/openpkg"
977 AC_DEFINE_UNQUOTED(RPMCONFIGDIR, "$RPMCONFIGDIR",
978 [Full path to rpm global configuration directory (usually /usr/lib/rpm)])
979 AC_SUBST(RPMCONFIGDIR)
981 -SYSCONFIGDIR="`echo /etc/rpm`"
982 +SYSCONFIGDIR="@l_prefix@/etc/openpkg"
983 AC_DEFINE_UNQUOTED(SYSCONFIGDIR, "$SYSCONFIGDIR",
984 [Full path to rpm system configuration directory (usually /etc/rpm)])
985 AC_SUBST(SYSCONFIGDIR)
986 @@ -1215,17 +1216,17 @@
987 [Colon separated paths of macro files to read.])
988 AC_SUBST(MACROFILES)
990 -LIBRPMRC_FILENAME="${RPMCONFIGDIR}/rpmrc"
991 +LIBRPMRC_FILENAME="${SYSCONFIGDIR}/rpmrc"
992 AC_DEFINE_UNQUOTED(LIBRPMRC_FILENAME, "$LIBRPMRC_FILENAME",
993 [Full path to rpmrc configuration file (usually /usr/lib/rpm/rpmrc)])
994 AC_SUBST(LIBRPMRC_FILENAME)
996 -VENDORRPMRC_FILENAME="${RPMCONFIGDIR}/${RPMCANONVENDOR}/rpmrc"
997 +VENDORRPMRC_FILENAME="${SYSCONFIGDIR}/${RPMCANONVENDOR}/rpmrc"
998 AC_DEFINE_UNQUOTED(VENDORRPMRC_FILENAME, "$VENDORRPMRC_FILENAME",
999 [Full path to vendor rpmrc configuration file (usually /usr/lib/rpm/vendor/rpmrc)])
1000 AC_SUBST(VENDORRPMRC_FILENAME)
1002 -LIBRPMALIAS_FILENAME="${RPMCONFIGDIR}/rpmpopt-${VERSION}"
1003 +LIBRPMALIAS_FILENAME="${RPMCONFIGDIR}/rpmpopt"
1004 AC_DEFINE_UNQUOTED(LIBRPMALIAS_FILENAME, "$LIBRPMALIAS_FILENAME",
1005 [Full path to rpmpopt configuration file (usually /usr/lib/rpm/rpmpopt)])
1006 AC_SUBST(LIBRPMALIAS_FILENAME)
1008 +---------------------------------------------------------------------------
1009 | If running as "susr", do not unpack source RPM packages with "susr"
1010 | file ownerships as the OpenPKG Set-UID wrapper switches from "musr"
1011 | to "susr" on "openpkg rpm -Uvh *.src.rpm". As a result the installed
1012 | files could be never removed again by "musr". It is more consistent
1013 | to always unpack as "musr" if possible.
1014 +---------------------------------------------------------------------------
1015 Index: lib/psm.c
1016 --- lib/psm.c 5 Jun 2003 12:43:18 -0000 1.1.1.6
1017 +++ lib/psm.c 13 Sep 2006 13:39:15 -0000
1018 @@ -314,6 +314,20 @@
1020 fi->uid = getuid();
1021 fi->gid = getgid();
1022 +#ifdef OPENPKG
1023 + if (fi->uid == 0) {
1024 + char *muid_str;
1025 + char *mgid_str;
1026 + uid_t *muid;
1027 + gid_t *mgid;
1028 + if ((muid_str = rpmExpand("%{l_muid}", NULL)) != NULL)
1029 + if ((muid = (uid_t)strtol(muid_str, (char **)NULL, 10)) > 0)
1030 + fi->uid = muid;
1031 + if ((mgid_str = rpmExpand("%{l_mgid}", NULL)) != NULL)
1032 + if ((mgid = (gid_t)strtol(mgid_str, (char **)NULL, 10)) > 0)
1033 + fi->gid = mgid;
1034 + }
1035 +#endif
1036 fi->astriplen = 0;
1037 fi->striplen = 0;
1039 @@ -352,6 +366,9 @@
1040 rpmrc = RPMRC_FAIL;
1041 goto exit;
1042 }
1043 +#ifdef OPENPKG
1044 + chown(_sourcedir, fi->uid, fi->gid);
1045 +#endif
1047 _specdir = rpmGenPath(rpmtsRootDir(ts), "%{_specdir}", "");
1048 rpmrc = rpmMkdirPath(_specdir, "specdir");
1049 @@ -359,6 +376,9 @@
1050 rpmrc = RPMRC_FAIL;
1051 goto exit;
1052 }
1053 +#ifdef OPENPKG
1054 + chown(_specdir, fi->uid, fi->gid);
1055 +#endif
1057 /* Build dnl/dil with {_sourcedir, _specdir} as values. */
1058 if (i < fi->fc) {
1060 +---------------------------------------------------------------------------
1061 | RPM has two platform id canonicalizations: hard-coded ones in
1062 | the "rpm" program and defined ones in the rpmrc files. The
1063 | hard-coded ones make the defined ones inconsistent. Additionally,
1064 | in OpenPKG we know exactly what we do. So, disable the hard-coded
1065 | canonicalizations and use only the defined ones. The only thing we
1066 | do inside RPM is to reduce the platform version to major and minor
1067 | version numbers in order to simplify the "rpmrc" files. Then, RPM
1068 | allows to read the platform from an external program. Adjust the
1069 | hard-coded path to this program and allow it to be overridden with
1070 | the macro %{__platform}. Finally, change the default definition of
1071 | %{_host} to not contain the vendor stuff to more conform to what
1072 | %{_target} usually is defined to and what we are using throughout
1073 | OpenPKG, too.
1074 +---------------------------------------------------------------------------
1075 Index: lib/rpmrc.c
1076 --- lib/rpmrc.c 4 Jun 2003 18:18:45 -0000 1.1.1.25
1077 +++ lib/rpmrc.c 6 Jun 2005 15:53:06 -0000 1.3
1078 @@ -27,7 +27,7 @@
1079 const char * macrofiles = MACROFILES;
1081 /*@observer@*/ /*@unchecked@*/
1082 -static const char * platform = "/etc/rpm/platform";
1083 +static const char * platform = "@l_prefix@/etc/openpkg/platform";
1084 /*@only@*/ /*@relnull@*/ /*@unchecked@*/
1085 static const char ** platpat = NULL;
1086 /*@unchecked@*/
1087 @@ -861,7 +861,11 @@
1089 platpat = xrealloc(platpat, (nplatpat + 2) * sizeof(*platpat));
1090 /*@-onlyunqglobaltrans@*/
1091 +#ifdef OPENPKG
1092 + platpat[nplatpat] = rpmExpand("%{_host_cpu}-%{_host_os}", NULL);
1093 +#else
1094 platpat[nplatpat] = rpmExpand("%{_host_cpu}-%{_host_vendor}-%{_host_os}", (gnu && *gnu ? "-" : NULL), gnu, NULL);
1095 +#endif
1096 nplatpat++;
1097 platpat[nplatpat] = NULL;
1098 /*@=onlyunqglobaltrans@*/
1099 @@ -1055,14 +1059,35 @@
1100 /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
1101 /*@modifies *arch, *os, rpmGlobalMacroContext, fileSystem, internalState @*/
1102 {
1103 +#ifdef OPENPKG
1104 + static struct utsname un_real;
1105 + /* utsname fields on some platforms (like HP-UX) are very small
1106 + (about 8 characters). This is too small for OpenPKG, so cheat! */
1107 + static struct {
1108 + char sysname[32];
1109 + char nodename[32];
1110 + char release[32];
1111 + char version[32];
1112 + char machine[32];
1113 + } un;
1114 +#else
1115 static struct utsname un;
1116 +#endif
1117 static int gotDefaults = 0;
1118 char * chptr;
1119 canonEntry canon;
1120 int rc;
1122 while (!gotDefaults) {
1123 +#ifdef OPENPKG
1124 + const char *cp;
1125 + cp = rpmExpand("%{?__platform}", NULL);
1126 + if (cp == NULL || cp[0] == '\0')
1127 + cp = platform;
1128 + if (!rpmPlatform(cp)) {
1129 +#else
1130 if (!rpmPlatform(platform)) {
1131 +#endif
1132 const char * s;
1133 s = rpmExpand("%{_host_cpu}", NULL);
1134 if (s) {
1135 @@ -1079,9 +1104,44 @@
1136 gotDefaults = 1;
1137 break;
1138 }
1139 +#ifdef OPENPKG
1140 + rc = uname(&un_real);
1141 + strncpy(un.sysname, un_real.sysname, sizeof(un.sysname)); un.sysname [sizeof(un.sysname)-1] = '\0';
1142 + strncpy(un.nodename, un_real.nodename, sizeof(un.nodename)); un.nodename[sizeof(un.nodename)-1] = '\0';
1143 + strncpy(un.release, un_real.release, sizeof(un.release)); un.release [sizeof(un.release)-1] = '\0';
1144 + strncpy(un.version, un_real.version, sizeof(un.version)); un.version [sizeof(un.version)-1] = '\0';
1145 + strncpy(un.machine, un_real.machine, sizeof(un.machine)); un.machine [sizeof(un.machine)-1] = '\0';
1146 +#else
1147 rc = uname(&un);
1148 +#endif
1149 if (rc < 0) return;
1151 +#ifdef OPENPKG
1152 + {
1153 + char *cp;
1154 + char *cpR;
1155 + int n;
1156 + cpR = un.release;
1157 + if ((n = strcspn(cpR, "0123456789")) > 0)
1158 + cpR += n;
1159 + if ((n = strspn(cpR, "0123456789.")) > 0) {
1160 + /* terminate after "N.N.N...." prefix */
1161 + cpR[n] = '\0';
1162 + /* shorten to "N.N" if longer */
1163 + if ((cp = strchr(cpR, '.')) != NULL) {
1164 + if ((cp = strchr(cp+1, '.')) != NULL)
1165 + *cp = '\0';
1166 + }
1167 + strcat(un.sysname, cpR);
1168 + }
1169 + /* fix up machine hardware name containing white-space as it
1170 + * happens to be on Power Macs running MacOS X
1171 + */
1172 + if (!strncmp(un.machine, "Power Macintosh", 15)) {
1173 + sprintf(un.machine, "powerpc");
1174 + }
1175 + }
1176 +#else /* OPENPKG */
1177 #if !defined(__linux__)
1178 #ifdef SNI
1179 /* USUALLY un.sysname on sinix does start with the word "SINIX"
1180 @@ -1298,6 +1358,7 @@
1181 }
1182 }
1183 # endif
1184 +#endif /* OPENPKG */
1186 /* the uname() result goes through the arch_canon table */
1187 canon = lookupInCanonTable(un.machine,
1189 +---------------------------------------------------------------------------
1190 | In verbose file listing output, give the owner and group fields more
1191 | width and at the same time reduce the nlink and size fields to more
1192 | typical sizes within OpenPKG.
1193 +---------------------------------------------------------------------------
1194 Index: lib/query.c
1195 --- lib/query.c 4 Jun 2003 18:24:14 -0000 1.1.1.13
1196 +++ lib/query.c 22 Jan 2004 21:42:24 -0000 1.2
1197 @@ -33,7 +33,11 @@
1198 /*@modifies *te @*/
1199 {
1200 char sizefield[15];
1201 +#ifdef OPENPKG
1202 + char ownerfield[13+1], groupfield[13+1];
1203 +#else
1204 char ownerfield[8+1], groupfield[8+1];
1205 +#endif
1206 char timefield[100];
1207 time_t when = mtime; /* important if sizeof(int_32) ! sizeof(time_t) */
1208 struct tm * tm;
1209 @@ -58,7 +62,11 @@
1210 groupfield[sizeof(groupfield)-1] = '\0';
1212 /* this is normally right */
1213 +#ifdef OPENPKG
1214 + sprintf(sizefield, "%8u", size);
1215 +#else
1216 sprintf(sizefield, "%12u", size);
1217 +#endif
1219 /* this knows too much about dev_t */
1221 @@ -98,7 +106,11 @@
1222 (void)strftime(timefield, sizeof(timefield) - 1, fmt, tm);
1223 }
1225 +#ifdef OPENPKG
1226 + sprintf(te, "%s %d %-13s %-13s %8s %s %s", perms,
1227 +#else
1228 sprintf(te, "%s %4d %-8s%-8s %10s %s %s", perms,
1229 +#endif
1230 (int)nlink, ownerfield, groupfield, sizefield, timefield, namefield);
1231 perms = _free(perms);
1232 }
1234 +---------------------------------------------------------------------------
1235 | Enable the exlusion of "%doc" files by default.
1236 | Disable "check-files" feature, because it is useless in OpenPKG
1237 | (we consistently use BuildRoot and our %files lists are fully
1238 | autogenerated) and just makes problems on bootstrapping.
1239 | Provide the possibility to optionally re-enable the old
1240 | RPM 4.0.2 way of RPM database operation by defining the
1241 | macro %{_rpmdb_private}. This is important for easily fixing
1242 | corrupted/hanging RPM database (on upgrades, etc) or if you
1243 | permanently have to operate RPM on a NFS filesystem where no
1244 | rpc.lockd(8) support is available.
1245 | Additionally, do not override the "_host_xx" macros because their
1246 | value (derived from <prefix>/etc/openpkg/platform) is already
1247 | correctly set internally.
1248 | Additionally, provide default macros for the %track and %test
1249 | section expansion.
1250 | Finally, provide default for introduced variable
1251 | %{_force_oldpackage}, which, if non-zero, automatically enforces
1252 | --oldpackage on all upgrade operations (this is useful on
1253 | mass-upgrades from OpenPKG-CURRENT to OpenPKG-RELEASE).
1254 +---------------------------------------------------------------------------
1255 Index: macros.in
1256 --- macros.in 2 Jul 2003 19:20:52 -0000 1.1.1.14
1257 +++ macros.in 30 Jan 2004 17:06:27 -0000 1.3
1258 @@ -1,7 +1,7 @@
1259 #/*! \page config_macros Default configuration: @RPMCONFIGDIR@/macros
1260 # \verbatim
1261 #
1262 -# $Id: macros.in,v 1.138.2.1 2003/07/02 19:14:06 jbj Exp $
1263 +# $Id: macros.in,v 1.2 2004/01/22 21:42:09 rse Exp $
1264 #
1265 # This is a global RPM configuration file. All changes made here will
1266 # be lost when the rpm package is upgraded. Any per-system configuration
1267 @@ -206,7 +206,7 @@
1269 # Boolean (i.e. 1 == "yes", 0 == "no") that controls whether files
1270 # marked as %doc should be installed.
1271 -#%_excludedocs
1272 +%_excludedocs 1
1274 # The port and machine name of a FTP proxy host running TIS firewall.
1275 #
1276 @@ -305,7 +305,7 @@
1277 # Returns list of unpackaged files, i.e. files in $RPM_BUILD_ROOT not packaged.
1278 #
1279 # Note: Disable (by commenting out) for legacy compatibility.
1280 -%__check_files @RPMCONFIGDIR@/check-files %{buildroot}
1281 +#%__check_files @RPMCONFIGDIR@/check-files %{buildroot}
1283 #
1284 # Should unpackaged files in a build root terminate a build?
1285 @@ -449,7 +449,7 @@
1287 # Use a CDB database model for concurrent access.
1288 # XXX Add "private" here for legacy interoperation transiting to glibc+nptl.
1289 -%__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb
1290 +%__dbi_cdb create cdb mpool mp_mmapsize=16Mb mp_size=1Mb %{?_rpmdb_private:private}
1292 %__dbi_other %{?_tmppath:tmpdir=%{_tmppath}} %{?__dbi_cdb}
1294 @@ -618,6 +618,10 @@
1295 # If non-zero, all erasures will be automagically repackaged.
1296 %_repackage_all_erasures 0
1298 +# If non-zero, automatically enforce --oldpackage for all upgrade operations
1299 +# (useful on mass-upgrades from OpenPKG-CURRENT to OpenPKG-RELEASE)
1300 +%_force_oldpackage 0
1301 +
1302 # Verify digest/signature flags for various rpm modes:
1303 # 1 --nohdrchk if set, don't check rpmdb headers
1304 #
1305 @@ -870,6 +874,26 @@
1306 #%{__spec_clean_post}\
1307 #%{nil}
1309 +%__spec_track_shell %{___build_shell}
1310 +%__spec_track_args %{___build_args}
1311 +%__spec_track_cmd %{___build_cmd}
1312 +%__spec_track_pre %{___build_pre}
1313 +%__spec_track_body %{___build_body}
1314 +%__spec_track_post %{___build_post}
1315 +%__spec_track_template #!%{__spec_track_shell}\
1316 +%{__spec_track_pre}\
1317 +%{nil}
1318 +
1319 +%__spec_test_shell %{___build_shell}
1320 +%__spec_test_args %{___build_args}
1321 +%__spec_test_cmd %{___build_cmd}
1322 +%__spec_test_pre %{___build_pre}
1323 +%__spec_test_body %{___build_body}
1324 +%__spec_test_post %{___build_post}
1325 +%__spec_test_template #!%{__spec_test_shell}\
1326 +%{__spec_test_pre}\
1327 +%{nil}
1328 +
1329 %__spec_rmbuild_shell %{___build_shell}
1330 %__spec_rmbuild_args %{___build_args}
1331 %__spec_rmbuild_cmd %{___build_cmd}
1332 @@ -929,11 +953,11 @@
1333 %_build_cpu %{_host_cpu}
1334 %_build_vendor %{_host_vendor}
1335 %_build_os %{_host_os}
1336 -%_host @host@
1337 -%_host_alias @host_alias@%{nil}
1338 -%_host_cpu @host_cpu@
1339 -%_host_vendor @host_vendor@
1340 -%_host_os @host_os@
1341 +#%_host @host@
1342 +#%_host_alias @host_alias@%{nil}
1343 +#%_host_cpu @host_cpu@
1344 +#%_host_vendor @host_vendor@
1345 +#%_host_os @host_os@
1346 %_target %{_host}
1347 %_target_alias %{_host_alias}
1348 %_target_cpu %{_host_cpu}
1350 +---------------------------------------------------------------------------
1351 | Adjust path for OpenPKG filesystem layout.
1352 +---------------------------------------------------------------------------
1353 Index: scripts/Makefile.am
1354 --- scripts/Makefile.am 20 Jun 2003 19:04:49 -0000 1.1.1.11
1355 +++ scripts/Makefile.am 22 Jan 2004 21:42:34 -0000 1.2
1356 @@ -22,7 +22,7 @@
1358 all:
1360 -configdir = ${prefix}/lib/rpm
1361 +configdir = ${prefix}/lib/openpkg
1362 config_SCRIPTS = \
1363 brp-compress brp-python-bytecompile brp-redhat \
1364 brp-strip brp-strip-comment-note \
1366 +---------------------------------------------------------------------------
1367 | Adjust path for OpenPKG filesystem layout.
1368 +---------------------------------------------------------------------------
1369 Index: scripts/Makefile.in
1370 --- scripts/Makefile.in 16 Jul 2003 17:05:49 -0000 1.1.1.14
1371 +++ scripts/Makefile.in 22 Jan 2004 21:42:34 -0000 1.2
1372 @@ -273,7 +273,7 @@
1374 installprefix = $(DESTDIR)
1376 -configdir = ${prefix}/lib/rpm
1377 +configdir = ${prefix}/lib/openpkg
1378 config_SCRIPTS = \
1379 brp-compress brp-python-bytecompile brp-redhat \
1380 brp-strip brp-strip-comment-note \
1382 +---------------------------------------------------------------------------
1383 | Use GNU libtool's weaker -static (link with own static libraries)
1384 | instead of the strong -all-static (link even with static libc, etc),
1385 | because OpenPKG does not need to be fully static.
1386 | Additionally, adjust the path to file(1)'s "magic" file.
1387 +---------------------------------------------------------------------------
1388 Index: file/Makefile.am
1389 --- file/Makefile.am 24 Jan 2003 19:41:56 -0000 1.1.1.1
1390 +++ file/Makefile.am 22 Jan 2004 21:42:21 -0000 1.2
1391 @@ -36,7 +36,7 @@
1392 #MAGIC = @datadir@/magic
1393 #data_DATA = magic magic.mime magic.mgc magic.mime.mgc
1395 -pkglibdir = @prefix@/lib/rpm
1396 +pkglibdir = @prefix@/lib/openpkg
1397 pkglib_DATA = magic magic.mime magic.mgc magic.mime.mgc
1398 MAGIC = $(pkglibdir)/magic
1399 CPPFLAGS = -DMAGIC='"$(MAGIC)"'
1401 +---------------------------------------------------------------------------
1402 | Use GNU libtool's weaker -static (link with own static libraries)
1403 | instead of the strong -all-static (link even with static libc, etc),
1404 | because OpenPKG does not need to be fully static.
1405 | Additionally, adjust the path to file(1)'s "magic" file.
1406 +---------------------------------------------------------------------------
1407 Index: file/Makefile.in
1408 --- file/Makefile.in 16 Jul 2003 17:05:23 -0000 1.1.1.2
1409 +++ file/Makefile.in 22 Jan 2004 21:42:22 -0000 1.2
1410 @@ -39,7 +39,7 @@
1412 #MAGIC = @datadir@/magic
1413 #data_DATA = magic magic.mime magic.mgc magic.mime.mgc
1414 -pkglibdir = @prefix@/lib/rpm
1415 +pkglibdir = @prefix@/lib/openpkg
1416 ACLOCAL = @ACLOCAL@
1417 AMDEP_FALSE = @AMDEP_FALSE@
1418 AMDEP_TRUE = @AMDEP_TRUE@
1419 @@ -159,7 +159,7 @@
1420 noinst_PROGRAMS = file
1422 file_SOURCES = file.c
1423 -file_LDFLAGS = -all-static
1424 +file_LDFLAGS = -static
1425 file_LDADD = libfmagic.la
1427 man_MAGIC = magic.@fsect@
1429 +---------------------------------------------------------------------------
1430 | Use GNU libtool's weaker -static (link with own static libraries)
1431 | instead of the strong -all-static (link even with static libc, etc),
1432 | because OpenPKG does not need to be fully static.
1433 | Additionally, disable the building of gettext stuff we don't need.
1434 +---------------------------------------------------------------------------
1435 Index: popt/Makefile.am
1436 --- popt/Makefile.am 6 Mar 2003 23:16:43 -0000 1.1.1.9
1437 +++ popt/Makefile.am 22 Jan 2004 21:42:28 -0000 1.2
1438 @@ -9,7 +9,7 @@
1439 po/*.in po/*.po po/popt.pot \
1440 popt.ps
1442 -SUBDIRS = intl po
1443 +SUBDIRS = intl
1445 INCLUDES = -I. -I$(top_srcdir)
1447 @@ -17,13 +17,13 @@
1449 noinst_PROGRAMS = test1 test2 test3
1450 test1_SOURCES = test1.c
1451 -test1_LDFLAGS = -all-static
1452 +test1_LDFLAGS = -static
1453 test1_LDADD = $(usrlib_LTLIBRARIES)
1454 test2_SOURCES = test2.c
1455 -test2_LDFLAGS = -all-static
1456 +test2_LDFLAGS = -static
1457 test2_LDADD = $(usrlib_LTLIBRARIES)
1458 test3_SOURCES = test3.c
1459 -test3_LDFLAGS = -all-static
1460 +test3_LDFLAGS = -static
1461 test3_LDADD = $(usrlib_LTLIBRARIES)
1463 noinst_SCRIPTS = testit.sh
1465 +---------------------------------------------------------------------------
1466 | Use GNU libtool's weaker -static (link with own static libraries)
1467 | instead of the strong -all-static (link even with static libc, etc),
1468 | because OpenPKG does not need to be fully static.
1469 | Additionally, disable the building of gettext stuff we don't need.
1470 +---------------------------------------------------------------------------
1471 Index: popt/Makefile.in
1472 --- popt/Makefile.in 16 Jul 2003 17:04:49 -0000 1.1.1.14
1473 +++ popt/Makefile.in 22 Jan 2004 21:42:28 -0000 1.2
1474 @@ -163,7 +163,7 @@
1475 popt.ps
1478 -SUBDIRS = intl po
1479 +SUBDIRS = intl
1481 INCLUDES = -I. -I$(top_srcdir)
1483 @@ -171,13 +171,13 @@
1485 noinst_PROGRAMS = test1 test2 test3
1486 test1_SOURCES = test1.c
1487 -test1_LDFLAGS = -all-static
1488 +test1_LDFLAGS = -static
1489 test1_LDADD = $(usrlib_LTLIBRARIES)
1490 test2_SOURCES = test2.c
1491 -test2_LDFLAGS = -all-static
1492 +test2_LDFLAGS = -static
1493 test2_LDADD = $(usrlib_LTLIBRARIES)
1494 test3_SOURCES = test3.c
1495 -test3_LDFLAGS = -all-static
1496 +test3_LDFLAGS = -static
1497 test3_LDADD = $(usrlib_LTLIBRARIES)
1499 noinst_SCRIPTS = testit.sh
1501 +---------------------------------------------------------------------------
1502 | Revert back to the old behaviour of passing to "exec" programs an
1503 | extra "--" argument to separate options and arguments. Additionally,
1504 | allow the "!#:+" constructs to be used multiple times and then each
1505 | time eat another argument (instead of just eating an argument once
1506 | and expanding this multiple times).
1507 +---------------------------------------------------------------------------
1508 Index: popt/popt.c
1509 --- popt/popt.c 22 Aug 2002 14:17:44 -0000 1.1.1.12
1510 +++ popt/popt.c 22 Jan 2004 21:42:28 -0000 1.2
1511 @@ -400,9 +400,7 @@
1512 }
1514 if (con->leftovers != NULL && con->numLeftovers > 0) {
1515 -#if 0
1516 argv[argc++] = "--";
1517 -#endif
1518 memcpy(argv + argc, con->leftovers, sizeof(*argv) * con->numLeftovers);
1519 argc += con->numLeftovers;
1520 }
1521 @@ -580,10 +578,8 @@
1522 if (!(s[0] == '#' && s[1] == ':' && s[2] == '+'))
1523 /*@switchbreak@*/ break;
1524 /* XXX Make sure that findNextArg deletes only next arg. */
1525 - if (a == NULL) {
1526 if ((a = findNextArg(con, 1, 1)) == NULL)
1527 /*@switchbreak@*/ break;
1528 - }
1529 s += 3;
1531 alen = strlen(a);
1533 +---------------------------------------------------------------------------
1534 | Dedefine the stdio variable BUFSIZ because it is usually just 1024
1535 | on some platforms (on Linux it is 8192) and unfortunately RPM uses
1536 | it here for the macro expansion buffer. For OpenPKG the size 1024 is
1537 | definetely too small. So increase this to a 16KB buffer.
1538 +---------------------------------------------------------------------------
1539 Index: rpmio/macro.c
1540 --- rpmio/macro.c 15 May 2003 13:42:01 -0000 1.1.1.7
1541 +++ rpmio/macro.c 22 Jan 2004 21:42:32 -0000 1.2
1542 @@ -50,6 +50,9 @@
1544 #include "debug.h"
1546 +#undef BUFSIZ
1547 +#define BUFSIZ 16384
1548 +
1549 #if defined(__LCLINT__)
1550 /*@-exportheader@*/
1551 extern const unsigned short int **__ctype_b_loc (void) /*@*/;
1553 +---------------------------------------------------------------------------
1554 | Remove "unzip" support, because in OpenPKG there are less than
1555 | a dozend packages requiring unpacking of .zip files. For these
1556 | it is fully sufficient to explicitly require the "infozip"
1557 | package (containing "unzip") and leaving the less portable
1558 | "unzip" out of the bootstrap package.
1559 +---------------------------------------------------------------------------
1560 Index: rpmio/macro.c
1561 --- rpmio/macro.c 15 May 2003 13:42:01 -0000 1.1.1.7
1562 +++ rpmio/macro.c 22 Jan 2004 21:42:32 -0000 1.2
1563 @@ -1116,9 +1119,11 @@
1564 case 2: /* COMPRESSED_BZIP2 */
1565 sprintf(be, "%%_bzip2 %s", b);
1566 break;
1567 +#if 0
1568 case 3: /* COMPRESSED_ZIP */
1569 sprintf(be, "%%_unzip %s", b);
1570 break;
1571 +#endif
1572 }
1573 b = be;
1574 } else if (STREQ("S", f, fn)) {
1575 @@ -1720,9 +1725,11 @@
1577 if ((magic[0] == 'B') && (magic[1] == 'Z')) {
1578 *compressed = COMPRESSED_BZIP2;
1579 +#if 0
1580 } else if ((magic[0] == 0120) && (magic[1] == 0113) &&
1581 (magic[2] == 0003) && (magic[3] == 0004)) { /* pkzip */
1582 *compressed = COMPRESSED_ZIP;
1583 +#endif
1584 } else if (((magic[0] == 0037) && (magic[1] == 0213)) || /* gzip */
1585 ((magic[0] == 0037) && (magic[1] == 0236)) || /* old gzip */
1586 ((magic[0] == 0037) && (magic[1] == 0036)) || /* pack */
1588 +---------------------------------------------------------------------------
1589 | Make sure that an %{error:<msg>} macro really stops further
1590 | processing. Else it would be nothing more than a %{warn:<msg>}.
1591 +---------------------------------------------------------------------------
1592 Index: rpmio/macro.c
1593 --- rpmio/macro.c 15 May 2003 13:42:01 -0000 1.1.1.7
1594 +++ rpmio/macro.c 22 Jan 2004 21:42:32 -0000 1.2
1595 @@ -1332,7 +1337,7 @@
1596 STREQ("error", f, fn)) {
1597 int waserror = 0;
1598 if (STREQ("error", f, fn))
1599 - waserror = 1;
1600 + waserror = 1, rc = 1;
1601 if (g < ge)
1602 doOutput(mb, waserror, g, gn);
1603 else
1605 +---------------------------------------------------------------------------
1606 | Reactivate build mode aliases which were removed in rpm-4.1
1607 | (and now should be available through "rpmbuild" only).
1608 +---------------------------------------------------------------------------
1609 Index: rpmpopt.in
1610 --- rpmpopt.in 24 Jan 2003 14:56:30 -0000 1.1.1.7
1611 +++ rpmpopt.in 22 Jan 2004 21:42:11 -0000 1.2
1612 @@ -147,28 +147,28 @@
1613 # Popt glue to preserve legacy CLI behavior.
1614 #
1615 # XXX popt exec parsing doesn't honor POPT_ARGFLAG_ONEDASH
1616 -# XXX Build mode aliases, removed in rpm-4.1.
1617 -#rpm exec --bp rpmb -bp
1618 -#rpm exec --bc rpmb -bc
1619 -#rpm exec --bi rpmb -bi
1620 -#rpm exec --bl rpmb -bl
1621 -#rpm exec --ba rpmb -ba
1622 -#rpm exec --bb rpmb -bb
1623 -#rpm exec --bs rpmb -bs
1624 -#rpm exec --tp rpmb -tp
1625 -#rpm exec --tc rpmb -tc
1626 -#rpm exec --ti rpmb -ti
1627 -#rpm exec --tl rpmb -tl
1628 -#rpm exec --ta rpmb -ta
1629 -#rpm exec --tb rpmb -tb
1630 -#rpm exec --ts rpmb -ts
1631 -#rpm exec --rebuild rpmb --rebuild
1632 -#rpm exec --recompile rpmb --recompile
1633 -#rpm exec --clean rpmb --clean
1634 -#rpm exec --rmsource rpmb --rmsource
1635 -#rpm exec --rmspec rpmb --rmspec
1636 -#rpm exec --target rpmb --target
1637 -#rpm exec --short-circuit rpmb --short-circuit
1638 +rpm exec --bp rpmb -bp
1639 +rpm exec --bc rpmb -bc
1640 +rpm exec --bi rpmb -bi
1641 +rpm exec --bl rpmb -bl
1642 +rpm exec --ba rpmb -ba
1643 +rpm exec --bb rpmb -bb
1644 +rpm exec --bs rpmb -bs
1645 +rpm exec --bt rpmb -bt
1646 +rpm exec --tp rpmb -tp
1647 +rpm exec --tc rpmb -tc
1648 +rpm exec --ti rpmb -ti
1649 +rpm exec --tl rpmb -tl
1650 +rpm exec --ta rpmb -ta
1651 +rpm exec --tb rpmb -tb
1652 +rpm exec --ts rpmb -ts
1653 +rpm exec --rebuild rpmb --rebuild
1654 +rpm exec --recompile rpmb --recompile
1655 +rpm exec --clean rpmb --clean
1656 +rpm exec --rmsource rpmb --rmsource
1657 +rpm exec --rmspec rpmb --rmspec
1658 +rpm exec --target rpmb --target
1659 +rpm exec --short-circuit rpmb --short-circuit
1661 rpm exec --initdb rpmd --initdb
1662 rpm exec --rebuilddb rpmd --rebuilddb
1664 +---------------------------------------------------------------------------
1665 | Allow "-bb --short-circuit" for continuing building a binary package
1666 | after the %install step (usually previously fixed and repeated with
1667 | "-bi --short-circuit".
1668 +---------------------------------------------------------------------------
1669 Index: rpmqv.c
1670 --- rpmqv.c 4 Mar 2003 15:32:57 -0000 1.1.1.8
1671 +++ rpmqv.c 6 Feb 2004 15:37:56 -0000 1.4
1672 @@ -682,6 +682,10 @@
1673 case 'b':
1674 ba->buildAmount |= RPMBUILD_PACKAGEBINARY;
1675 ba->buildAmount |= RPMBUILD_CLEAN;
1676 +#ifdef OPENPKG
1677 + if ((ba->buildChar == 'b') && ba->shortCircuit)
1678 + /*@innerbreak@*/ break;
1679 +#endif
1680 /*@fallthrough@*/
1681 case 'i':
1682 ba->buildAmount |= RPMBUILD_INSTALL;
1684 +---------------------------------------------------------------------------
1685 | Because permissions and ownership on Berkeley-DB region files
1686 | __db.XXX have to be already fixed in advance and those files cannot
1687 | be created in advance on the command line with some reasonable
1688 | default (as it is the case for the other files which are created
1689 | with [rpm]db_load), so force Berkeley-DB to accept zero-sized files
1690 | and create them (instead of thinking another process is currently
1691 | creating them).
1692 +---------------------------------------------------------------------------
1693 Index: db/env/env_region.c
1694 --- db/env/env_region.c 18 Jan 2003 14:05:01 -0000 1.1.1.5
1695 +++ db/env/env_region.c 22 Jan 2004 21:42:17 -0000 1.2
1696 @@ -184,6 +184,24 @@
1697 }
1699 /*
1700 + * OpenPKG hack: because permissions and ownership on Berkeley-DB
1701 + * region files __db.XXX have to be already fixed in advance and
1702 + * those files cannot be created in advance on the command line
1703 + * with some reasonable default (as it is the case for the other
1704 + * files which are created with [rpm]db_load), so force Berkeley-DB
1705 + * to accept zero-sized files and create them (instead of thinking
1706 + * another process is currently creating them).
1707 + */
1708 + if (mbytes == 0 && bytes == 0) {
1709 + if (F_ISSET(dbenv, DB_ENV_CREATE))
1710 + goto creation;
1711 + else {
1712 + ret = ENOENT;
1713 + goto err;
1714 + }
1715 + }
1716 +
1717 + /*
1718 * !!!
1719 * A size_t is OK -- regions get mapped into memory, and so can't
1720 * be larger than a size_t.
1722 +---------------------------------------------------------------------------
1723 | Make sure RPM passes DB_CREATE to Berkeley-DB also if file exists,
1724 | but is (still) zero-sized.
1725 +---------------------------------------------------------------------------
1726 Index: rpmdb/db3.c
1727 --- rpmdb/db3.c 3 Mar 2003 16:18:29 -0000 1.1.1.5
1728 +++ rpmdb/db3.c 22 Jan 2004 21:42:29 -0000 1.2
1729 @@ -1019,9 +1019,13 @@
1730 } else { /* dbhome is writable, check for persistent dbenv. */
1731 /*@-mods@*/
1732 const char * dbf = rpmGetPath(dbhome, "/__db.001", NULL);
1733 + struct stat sb;
1734 + long size = -1;
1735 /*@=mods@*/
1737 - if (access(dbf, F_OK) == -1) {
1738 + if (stat(dbf, &sb) == 0)
1739 + size = (long)sb.st_size;
1740 + if (access(dbf, F_OK) == -1 || size == 0) {
1741 /* ... non-existent (or unwritable) DBENV, will create ... */
1742 dbi->dbi_oeflags |= DB_CREATE;
1743 dbi->dbi_eflags &= ~DB_JOINENV;
1745 +---------------------------------------------------------------------------
1746 | Add internal feature variable %{_force_oldpackage} which, if
1747 | non-zero, automatically enforces --oldpackage on all upgrade
1748 | operations (this is useful on mass-upgrades from OpenPKG-CURRENT to
1749 | OpenPKG-RELEASE).
1750 +---------------------------------------------------------------------------
1751 Index: rpm.c
1752 --- rpm.c 16 May 2002 16:55:25 -0000 1.1.1.23
1753 +++ rpm.c 22 Jan 2004 21:42:10 -0000 1.2
1754 @@ -1016,6 +1016,10 @@
1756 if (oldPackage && !upgrade)
1757 argerror(_("--oldpackage may only be used during upgrades"));
1758 +#ifdef OPENPKG
1759 + if (upgrade && rpmExpandNumeric("%{?_force_oldpackage}"))
1760 + probFilter |= RPMPROB_FILTER_OLDPACKAGE;
1761 +#endif
1763 if (noPgp && bigMode != MODE_CHECKSIG)
1764 argerror(_("--nopgp may only be used during signature checking"));
1766 +---------------------------------------------------------------------------
1767 | Add OpenPKG branding to make sure people do not intermix
1768 | this RPM version with the stock RPM version.
1769 +---------------------------------------------------------------------------
1770 Index: lib/poptALL.c
1771 --- lib/poptALL.c 25 Jun 2003 19:10:01 -0000 1.1.1.3
1772 +++ lib/poptALL.c 22 Jan 2004 21:42:23 -0000 1.2
1773 @@ -102,7 +102,7 @@
1774 /*@globals rpmEVR, fileSystem @*/
1775 /*@modifies *fp, fileSystem @*/
1776 {
1777 - fprintf(fp, _("RPM version %s\n"), rpmEVR);
1778 + fprintf(fp, _("OpenPKG RPM %s\n"), rpmEVR);
1779 }
1781 /**
1783 +---------------------------------------------------------------------------
1784 | Add OpenPKG branding to make sure people do not intermix
1785 | this RPM version with the stock RPM version.
1786 +---------------------------------------------------------------------------
1787 Index: rpm.c
1788 --- rpm.c 16 May 2002 16:55:25 -0000 1.1.1.23
1789 +++ rpm.c 22 Jan 2004 21:42:10 -0000 1.2
1790 @@ -235,7 +235,7 @@
1791 static void printHelpLine(char * prefix, char * help);
1793 static void printVersion(void) {
1794 - fprintf(stdout, _("RPM version %s\n"), rpmEVR);
1795 + fprintf(stdout, _("OpenPKG RPM %s\n"), rpmEVR);
1796 }
1798 static void printBanner(void) {
1800 +---------------------------------------------------------------------------
1801 | Add OpenPKG branding to make sure people do not intermix
1802 | this RPM version with the stock RPM version.
1803 +---------------------------------------------------------------------------
1804 Index: rpmqv.c
1805 --- rpmqv.c 4 Mar 2003 15:32:57 -0000 1.1.1.8
1806 +++ rpmqv.c 6 Feb 2004 15:37:56 -0000 1.4
1807 @@ -126,7 +126,7 @@
1808 /*@globals rpmEVR, fileSystem @*/
1809 /*@modifies *fp, fileSystem @*/
1810 {
1811 - fprintf(fp, _("RPM version %s\n"), rpmEVR);
1812 + fprintf(fp, _("OpenPKG RPM %s\n"), rpmEVR);
1813 }
1815 static void printBanner(FILE * fp)
1817 +---------------------------------------------------------------------------
1818 | Add support for the OpenPKG custom .spec file sections %track
1819 | (package build-time feature for performing vendor source tracking)
1820 | and %test (package install-time feature for performing package
1821 | run-time tests).
1822 +---------------------------------------------------------------------------
1823 Index: rpmqv.c
1824 --- rpmqv.c 4 Mar 2003 15:32:57 -0000 1.1.1.8
1825 +++ rpmqv.c 6 Feb 2004 15:37:56 -0000 1.4
1826 @@ -703,7 +707,19 @@
1827 /*@innerbreak@*/ break;
1828 case 's':
1829 ba->buildAmount |= RPMBUILD_PACKAGESOURCE;
1830 + /* enforce no dependency checking */
1831 + ba->noDeps = 1;
1832 /*@innerbreak@*/ break;
1833 +#ifdef OPENPKG
1834 + case 't':
1835 + ba->buildAmount |= RPMBUILD_TRACK;
1836 + /* enforce no dependency checking and expansion of %setup, %patch and %prep macros */
1837 + ba->noDeps = 1;
1838 + rpmDefineMacro(NULL, "setup #", RMIL_CMDLINE);
1839 + rpmDefineMacro(NULL, "patch #", RMIL_CMDLINE);
1840 + rpmDefineMacro(NULL, "prep %%prep", RMIL_CMDLINE);
1841 + /*@innerbreak@*/ break;
1842 +#endif
1843 }
1845 if (!poptPeekArg(optCon)) {
1847 +---------------------------------------------------------------------------
1848 | Add support for the OpenPKG custom .spec file sections %track
1849 | (package build-time feature for performing vendor source tracking)
1850 | and %test (package install-time feature for performing package
1851 | run-time tests).
1852 +---------------------------------------------------------------------------
1853 Index: build/pack.c
1854 --- build/pack.c 4 Mar 2003 17:03:17 -0000 1.1.1.20
1855 +++ build/pack.c 30 Jan 2004 17:06:29 -0000 1.2
1856 @@ -252,6 +252,15 @@
1857 return RPMERR_BADFILENAME;
1858 }
1859 }
1860 +#ifdef OPENPKG
1861 + if (pkg->testFile) {
1862 + if (addFileToTag(spec, pkg->testFile, pkg->header, RPMTAG_TEST)) {
1863 + rpmError(RPMERR_BADFILENAME,
1864 + _("Could not open Test file: %s\n"), pkg->testFile);
1865 + return RPMERR_BADFILENAME;
1866 + }
1867 + }
1868 +#endif
1870 for (p = pkg->triggerFiles; p != NULL; p = p->next) {
1871 (void) headerAddOrAppendEntry(pkg->header, RPMTAG_TRIGGERSCRIPTPROG,
1873 +---------------------------------------------------------------------------
1874 | Add support for the OpenPKG custom .spec file sections %track
1875 | (package build-time feature for performing vendor source tracking)
1876 | and %test (package install-time feature for performing package
1877 | run-time tests).
1878 +---------------------------------------------------------------------------
1879 Index: build/parseBuildInstallClean.c
1880 --- build/parseBuildInstallClean.c 3 Mar 2003 20:43:30 -0000 1.1.1.9
1881 +++ build/parseBuildInstallClean.c 30 Jan 2004 17:06:29 -0000 1.2
1882 @@ -29,6 +29,11 @@
1883 } else if (parsePart == PART_CLEAN) {
1884 sbp = &(spec->clean);
1885 name = "%clean";
1886 +#ifdef OPENPKG
1887 + } else if (parsePart == PART_TRACK) {
1888 + sbp = &(spec->track);
1889 + name = "%track";
1890 +#endif
1891 }
1892 /*@=branchstate@*/
1895 +---------------------------------------------------------------------------
1896 | Add support for the OpenPKG custom .spec file sections %track
1897 | (package build-time feature for performing vendor source tracking)
1898 | and %test (package install-time feature for performing package
1899 | run-time tests).
1900 +---------------------------------------------------------------------------
1901 Index: build/parseScript.c
1902 --- build/parseScript.c 23 Jun 2002 19:47:12 -0000 1.1.1.12
1903 +++ build/parseScript.c 30 Jan 2004 17:06:29 -0000 1.3
1904 @@ -156,6 +156,14 @@
1905 progtag = RPMTAG_TRIGGERSCRIPTPROG;
1906 partname = "%triggerpostun";
1907 break;
1908 +#ifdef OPENPKG
1909 + case PART_TEST:
1910 + tag = RPMTAG_TEST;
1911 + tagflags = RPMSENSE_SCRIPT_TEST;
1912 + progtag = RPMTAG_TESTPROG;
1913 + partname = "%test";
1914 + break;
1915 +#endif
1916 }
1917 /*@=branchstate@*/
1919 @@ -303,6 +312,11 @@
1920 case PART_VERIFYSCRIPT:
1921 pkg->verifyFile = xstrdup(file);
1922 break;
1923 +#ifdef OPENPKG
1924 + case PART_TEST:
1925 + pkg->testFile = xstrdup(file);
1926 + break;
1927 +#endif
1928 }
1929 }
1930 }
1932 +---------------------------------------------------------------------------
1933 | Add support for the OpenPKG custom .spec file sections %track
1934 | (package build-time feature for performing vendor source tracking)
1935 | and %test (package install-time feature for performing package
1936 | run-time tests).
1937 +---------------------------------------------------------------------------
1938 Index: build/parseSpec.c
1939 --- build/parseSpec.c 15 May 2003 13:38:57 -0000 1.1.1.15
1940 +++ build/parseSpec.c 30 Jan 2004 17:06:30 -0000 1.2
1941 @@ -43,6 +43,10 @@
1942 { PART_TRIGGERIN, 0, "%triggerin"},
1943 { PART_TRIGGERIN, 0, "%trigger"},
1944 { PART_VERIFYSCRIPT, 0, "%verifyscript"},
1945 +#ifdef OPENPKG
1946 + { PART_TRACK, 0, "%track"},
1947 + { PART_TEST, 0, "%test"},
1948 +#endif
1949 {0, 0, 0}
1950 };
1952 @@ -489,6 +493,15 @@
1953 parsePart = parseFiles(spec);
1954 /*@switchbreak@*/ break;
1956 +#ifdef OPENPKG
1957 + case PART_TRACK:
1958 + parsePart = parseBuildInstallClean(spec, parsePart);
1959 + /*@switchbreak@*/ break;
1960 + case PART_TEST:
1961 + parsePart = parseScript(spec, parsePart);
1962 + /*@switchbreak@*/ break;
1963 +#endif
1964 +
1965 case PART_NONE: /* XXX avoid gcc whining */
1966 case PART_LAST:
1967 case PART_BUILDARCHITECTURES:
1969 +---------------------------------------------------------------------------
1970 | Add support for the OpenPKG custom .spec file sections %track
1971 | (package build-time feature for performing vendor source tracking)
1972 | and %test (package install-time feature for performing package
1973 | run-time tests).
1974 +---------------------------------------------------------------------------
1975 Index: build/poptBT.c
1976 --- build/poptBT.c 3 Mar 2003 20:04:12 -0000 1.1.1.3
1977 +++ build/poptBT.c 30 Jan 2004 17:06:30 -0000 1.2
1978 @@ -35,6 +35,9 @@
1979 #define POPT_BL 0x626c
1980 #define POPT_BP 0x6270
1981 #define POPT_BS 0x6273
1982 +#ifdef OPENPKG
1983 +#define POPT_BT 0x6274
1984 +#endif
1985 #define POPT_TA 0x7461
1986 #define POPT_TB 0x7462
1987 #define POPT_TC 0x7463
1988 @@ -82,6 +85,9 @@
1989 case POPT_BL:
1990 case POPT_BP:
1991 case POPT_BS:
1992 +#ifdef OPENPKG
1993 + case POPT_BT:
1994 +#endif
1995 case POPT_TA:
1996 case POPT_TB:
1997 case POPT_TC:
1998 @@ -177,6 +183,11 @@
1999 { "bs", 0, POPT_ARGFLAG_ONEDASH, 0, POPT_BS,
2000 N_("build source package only from <specfile>"),
2001 N_("<specfile>") },
2002 +#ifdef OPENPKG
2003 + { "bt", 0, POPT_ARGFLAG_ONEDASH, 0, POPT_BT,
2004 + N_("track versions of sources from <specfile>"),
2005 + N_("<specfile>") },
2006 +#endif
2008 { "tp", 0, POPT_ARGFLAG_ONEDASH, 0, POPT_TP,
2009 N_("build through %prep (unpack sources and apply patches) from <tarball>"),
2011 +---------------------------------------------------------------------------
2012 | Add support for the OpenPKG custom .spec file sections %track
2013 | (package build-time feature for performing vendor source tracking)
2014 | and %test (package install-time feature for performing package
2015 | run-time tests).
2016 +---------------------------------------------------------------------------
2017 Index: build/rpmbuild.h
2018 --- build/rpmbuild.h 4 Mar 2003 17:03:07 -0000 1.1.1.13
2019 +++ build/rpmbuild.h 30 Jan 2004 17:06:30 -0000 1.2
2020 @@ -34,6 +34,9 @@
2021 RPMBUILD_RMSOURCE = (1 << 8), /*!< Remove source(s) and patch(s). */
2022 RPMBUILD_RMBUILD = (1 << 9), /*!< Remove build sub-tree. */
2023 RPMBUILD_STRINGBUF = (1 << 10), /*!< only for doScript() */
2024 +#ifdef OPENPKG
2025 + RPMBUILD_TRACK = (1 << 12), /*!< Execute %%track. */
2026 +#endif
2027 RPMBUILD_RMSPEC = (1 << 11) /*!< Remove spec file. */
2028 } rpmBuildFlags;
2029 /*@=typeuse@*/
2030 @@ -69,7 +72,13 @@
2031 PART_VERIFYSCRIPT = 16, /*!< */
2032 PART_BUILDARCHITECTURES= 17,/*!< */
2033 PART_TRIGGERPOSTUN = 18, /*!< */
2034 +#ifdef OPENPKG
2035 + PART_TRACK = 19, /*!< */
2036 + PART_TEST = 20, /*!< */
2037 + PART_LAST = 21 /*!< */
2038 +#else
2039 PART_LAST = 19 /*!< */
2040 +#endif
2041 } rpmParseState;
2043 #define STRIP_NOTHING 0
2045 +---------------------------------------------------------------------------
2046 | Add support for the OpenPKG custom .spec file sections %track
2047 | (package build-time feature for performing vendor source tracking)
2048 | and %test (package install-time feature for performing package
2049 | run-time tests).
2050 +---------------------------------------------------------------------------
2051 Index: build/rpmspec.h
2052 --- build/rpmspec.h 4 Mar 2003 15:30:23 -0000 1.1.1.11
2053 +++ build/rpmspec.h 30 Jan 2004 17:06:30 -0000 1.2
2054 @@ -164,6 +164,10 @@
2055 StringBuf check; /*!< %check scriptlet. */
2056 /*@only@*/
2057 StringBuf clean; /*!< %clean scriptlet. */
2058 +#ifdef OPENPKG
2059 +/*@only@*/
2060 + StringBuf track; /*!< %track scriptlet. */
2061 +#endif
2063 /*@owned@*/
2064 Package packages; /*!< Package list. */
2065 @@ -196,6 +200,10 @@
2066 const char * postUnFile; /*!< %postun scriptlet. */
2067 /*@only@*/
2068 const char * verifyFile; /*!< %verifyscript scriptlet. */
2069 +#ifdef OPENPKG
2070 +/*@only@*/
2071 + const char * testFile; /*!< %test scriptlet. */
2072 +#endif
2074 /*@only@*/
2075 StringBuf specialDoc;
2077 +---------------------------------------------------------------------------
2078 | Add support for the OpenPKG custom .spec file sections %track
2079 | (package build-time feature for performing vendor source tracking)
2080 | and %test (package install-time feature for performing package
2081 | run-time tests).
2082 +---------------------------------------------------------------------------
2083 Index: build/spec.c
2084 --- build/spec.c 4 Mar 2003 15:25:51 -0000 1.1.1.21
2085 +++ build/spec.c 30 Jan 2004 17:06:31 -0000 1.3
2086 @@ -138,6 +138,9 @@
2087 p->preUnFile = NULL;
2088 p->postUnFile = NULL;
2089 p->verifyFile = NULL;
2090 +#ifdef OPENPKG
2091 + p->testFile = NULL;
2092 +#endif
2094 p->specialDoc = NULL;
2096 @@ -444,6 +455,9 @@
2097 spec->install = NULL;
2098 spec->check = NULL;
2099 spec->clean = NULL;
2100 +#ifdef OPENPKG
2101 + spec->track = NULL;
2102 +#endif
2104 spec->sources = NULL;
2105 spec->packages = NULL;
2106 @@ -491,6 +505,9 @@
2107 spec->install = freeStringBuf(spec->install);
2108 spec->check = freeStringBuf(spec->check);
2109 spec->clean = freeStringBuf(spec->clean);
2110 +#ifdef OPENPKG
2111 + spec->track = freeStringBuf(spec->track);
2112 +#endif
2114 spec->buildRootURL = _free(spec->buildRootURL);
2115 spec->buildSubdir = _free(spec->buildSubdir);
2117 +---------------------------------------------------------------------------
2118 | Add support for the OpenPKG custom .spec file sections %track
2119 | (package build-time feature for performing vendor source tracking)
2120 | and %test (package install-time feature for performing package
2121 | run-time tests).
2122 +---------------------------------------------------------------------------
2123 Index: lib/rpmlib.h
2124 --- lib/rpmlib.h 19 Jun 2003 17:39:35 -0000 1.1.1.26
2125 +++ lib/rpmlib.h 30 Jan 2004 17:06:31 -0000 1.2
2126 @@ -414,6 +414,12 @@
2127 RPMTAG_FILEDEPENDSN = 1144,
2128 RPMTAG_DEPENDSDICT = 1145,
2129 RPMTAG_SOURCEPKGID = 1146,
2130 +#ifdef OPENPKG
2131 + RPMTAG_TRACK = 1200,
2132 + RPMTAG_TEST = 1201,
2133 + RPMTAG_TESTPROG = 1202,
2134 + RPMTAG_CLASS = 1203,
2135 +#endif
2136 /*@-enummemuse@*/
2137 RPMTAG_FIRSTFREE_TAG /*!< internal */
2138 /*@=enummemuse@*/
2139 @@ -488,6 +494,9 @@
2140 RPMSENSE_SCRIPT_BUILD = (1 << 21), /*!< %build build dependency. */
2141 RPMSENSE_SCRIPT_INSTALL = (1 << 22),/*!< %install build dependency. */
2142 RPMSENSE_SCRIPT_CLEAN = (1 << 23), /*!< %clean build dependency. */
2143 +#ifdef OPENPKG
2144 + RPMSENSE_SCRIPT_TEST = (1 << 29), /*!< %test build dependency. */
2145 +#endif
2146 RPMSENSE_RPMLIB = ((1 << 24) | RPMSENSE_PREREQ), /*!< rpmlib(feature) dependency. */
2147 /*@-enummemuse@*/
2148 RPMSENSE_TRIGGERPREIN = (1 << 25), /*!< @todo Implement %triggerprein. */
2150 +---------------------------------------------------------------------------
2151 | Add support for the OpenPKG custom .spec file sections %track
2152 | (package build-time feature for performing vendor source tracking)
2153 | and %test (package install-time feature for performing package
2154 | run-time tests).
2155 | Additionally, add support for "Class" header.
2156 +---------------------------------------------------------------------------
2157 Index: rpmdb/tagtbl.c
2158 --- rpmdb/tagtbl.c 2 Jul 2003 20:20:27 -0000 1.1.1.4
2159 +++ rpmdb/tagtbl.c 30 Jan 2004 17:06:32 -0000 1.2
2160 @@ -135,6 +135,12 @@
2161 { "RPMTAG_FILEDEPENDSN", 1144, },
2162 { "RPMTAG_DEPENDSDICT", 1145, },
2163 { "RPMTAG_SOURCEPKGID", 1146, },
2164 +#ifdef OPENPKG
2165 + { "RPMTAG_TRACK", 1200, },
2166 + { "RPMTAG_TEST", 1201, },
2167 + { "RPMTAG_TESTPROG", 1202, },
2168 + { "RPMTAG_CLASS", 1203, },
2169 +#endif
2170 { NULL, 0 }
2171 };
2174 +---------------------------------------------------------------------------
2175 | Add support for "Class" header.
2176 +---------------------------------------------------------------------------
2177 Index: build/parsePreamble.c
2178 --- build/parsePreamble.c 3 Mar 2003 20:46:34 -0000 1.1.1.13
2179 +++ build/parsePreamble.c 6 Feb 2004 15:37:58 -0000 1.3
2180 @@ -21,6 +21,7 @@
2181 RPMTAG_LICENSE,
2182 RPMTAG_PACKAGER,
2183 RPMTAG_DISTRIBUTION,
2184 + RPMTAG_CLASS,
2185 RPMTAG_DISTURL,
2186 RPMTAG_VENDOR,
2187 RPMTAG_ICON,
2188 @@ -327,6 +328,7 @@
2189 { RPMTAG_VENDOR, "%{vendor}" },
2190 { RPMTAG_PACKAGER, "%{packager}" },
2191 { RPMTAG_DISTRIBUTION, "%{distribution}" },
2192 + { RPMTAG_CLASS, "%{class}" },
2193 { RPMTAG_DISTURL, "%{disturl}" },
2194 { -1, NULL }
2195 };
2196 @@ -537,6 +547,7 @@
2197 (void) stashSt(spec, pkg->header, tag, lang);
2198 /*@fallthrough@*/
2199 case RPMTAG_DISTRIBUTION:
2200 + case RPMTAG_CLASS:
2201 case RPMTAG_VENDOR:
2202 case RPMTAG_LICENSE:
2203 case RPMTAG_PACKAGER:
2204 @@ -743,6 +754,7 @@
2205 {RPMTAG_LICENSE, 0, 0, "copyright"},
2206 {RPMTAG_LICENSE, 0, 0, "license"},
2207 {RPMTAG_DISTRIBUTION, 0, 0, "distribution"},
2208 + {RPMTAG_CLASS, 0, 0, "class"},
2209 {RPMTAG_DISTURL, 0, 0, "disturl"},
2210 {RPMTAG_VENDOR, 0, 0, "vendor"},
2211 {RPMTAG_GROUP, 0, 1, "group"},