Sprout from master 2007-05-26 14:17:51 UTC Jakub Bogusz <qboosh@pld-linux.org> '- behave like on x86'
Cherrypick from master 2008-05-21 19:15:42 UTC Elan Ruusamäe <glen@pld-linux.org> '- avoid commandline args overflow':
rpm-hrmib-cache -> 1.11
rpm-lzma-size_t.patch -> 1.1
rpm-man_pl.patch -> 1.1
rpm-mono.patch -> 1.7
rpm-perl-macros.patch -> 1.33
rpm-rpm5-patchset-8413.patch -> 1.1
rpm-rpm5-patchset-8637.patch -> 1.1
rpm-tar_as_secondary_source.patch -> 1.1
rpm-v3-support.patch -> 1.1
Cherrypick from master 2008-02-23 17:33:34 UTC Elan Ruusamäe <glen@pld-linux.org> '- --bcond is rpmbuild popt alias':
rpm-find-spec-bcond -> 1.10
Cherrypick from rpm-4_4_9 2008-04-25 12:54:28 UTC Elan Ruusamäe <glen@pld-linux.org> '- disable user(foo), group(foo) namespace probes which confuse triggers if the':
rpm-as_needed-fix.patch -> 1.2.6.1
rpm-chroot-hack.patch -> 1.1.2.1
rpm-cleanbody.patch -> 1.1.2.2
rpm-lzma-tukaani.patch -> 1.1.2.1
rpm-macros.patch -> 1.41.2.4
rpm-namespace-probe.patch -> 1.1.2.1
rpm-nopie.patch -> 1.1.2.1.4.1
rpm-popt-coreutils.patch -> 1.1.2.1
rpm-rpmrc.patch -> 1.40.2.2
rpm.sysinfo -> 1.2.4.1
Cherrypick from rpm-4_4_9 2008-02-11 17:07:37 UTC Elan Ruusamäe <glen@pld-linux.org> '- skip debuginfo on missing buildroot':
rpm-debuginfo.patch -> 1.15.6.7
Cherrypick from AC-branch 2008-07-17 17:23:36 UTC Elan Ruusamäe <glen@pld-linux.org> '- add %_excludedocs sample to macros':
rpm-disable-features.patch -> 1.1.2.1
rpm-rpmrc-ac.patch -> 1.1.2.1
rpm.spec -> 1.837.2.42.2.49
Cherrypick from unlabeled-1.16.6 2004-11-20 19:45:23 UTC Adam Gołębiowski <adamg@pld-linux.org> '- reverted php provides/requires scripts to those that were in Ra (details:':
rpm-php-requires -> 1.16.6.1
Cherrypick from unlabeled-1.9.6 2004-11-20 19:45:22 UTC Adam Gołębiowski <adamg@pld-linux.org> '- reverted php provides/requires scripts to those that were in Ra (details:':
rpm-php-provides -> 1.9.6.1
Delete:
RPM-GPG-KEY
adapter.awk
builder
patch.4.5.20.1
patch.4.5.20.2
pldnotify.awk
rpm-Nmalloc.patch
rpm-bb-and-short-circuit.patch
rpm-bug-146549.patch
rpm-check-files
rpm-cpuinfo.patch
rpm-dontneedutils.patch
rpm-error-fatal.patch
rpm-find-lang
rpm-java-requires
rpm-javadeps.patch
rpm-libtool-deps.patch
rpm-magic-usesystem.patch
rpm-obsolete-rpmrc.patch
rpm-p4.patch
rpm-perl-req-perlfile.patch
rpm-perl_req-INC_dirs.patch
rpm-perl_req.patch
rpm-php-deps.patch
rpm-pl.po.patch
rpm-python-macros.patch
rpm-reduce-stack-usage.patch
rpm-rpmrc-resurrect.patch
rpm-user_group.sh
rpm.groups
rpm.macros
rpm.platform
rpm.sysconfig
+++ /dev/null
-Below is public GPG key used for signing all PLD 2.0 (Ac) packages. It is also available on our FTP.
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.6 (GNU/Linux)
-
-mQGiBEYeXR4RBADzXva/pQ3Cb7W5u0ogtvi3ooo26kXKYUFhnZJndq4iCCTIyUYC
-twMasZvDz7RXO36V9x/uXCCj8POc11wfQaRV+H92zQBAnAwZRUCkfOJ4u2cv+4Dd
-KyCq4KwPC0K+eyz9hEXHg6qlXaOCBxnGuOWaN8qdVc1ZzA0KvofqRJGCQwCgy8+V
-97aqXYbPgkKsVLy/C2o9xXED/3DYkfVzgBpfpnnfe8VhrKXh3Ko0vQs5r67Lhi9o
-QZOHYD7Ub+ahMzGbW/F2Dq5jF9Mam57z93FoROw3Y/mJ0Cu3Ua43Ii5fVEKmqH24
-1Zow4c78D/GJfh1EUqmqOx2zkTO2KIbvNJqoRjQ22JzbJLjEYlnBhPvWWKlfQZss
-xKFuBACfxuaNJ2gSYCqkScAwUx4nvFpJlfAdWt/7eaaAMzFmnFEakYliZ12UrdO1
-U0xT5UkvP7yAvxdXC3HhI03sRGKBtqCQn7jA4DznCL3Jz5+XGG5tE/RpR0WBlzaW
-uS4Kuyf9/Imas7Fyxfv/ZPrsjEe1LcD0yr1zg0G2nvOlEgAgXrQ4UExEIExpbnV4
-IERpc3RyaWJ1dGlvbiAyLjAgKEFjKSA8YWMtYWRtaW5AcGxkLWxpbnV4Lm9yZz6I
-YAQTEQIAIAUCRh5dHgIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEHx1HFwb
-vVRZx/EAn1pN8ykFoMUd9ap/orPWuiK/HC7IAJwI0a/Vg4d5O/XseXHifKiizmvG
-frkBDQRGHl0eEAQAsXIeTPUCfMER3FjOnVsFpG3AzjTnHCGZa1F9ri7/AoOoi0ZT
-bzvzUDa+e6mVKGCgZssxSfuLc841fylSg9Fh6FIKdOm4i7xMHR4lGJ0OAfSdyT7R
-h6xeM6Kv+6r6cTTmt60vul+/SYSi5Tsd7zdKhmw9Sz2sR4xmQz4IGM4Pve8AAwUD
-/0d95Q3kff3QzXxMrpnVmQN1mRZL2x+aDpzRe6oLn6clWis2Fj/LNx71Mb87Frw5
-Tz5RY6WuU/fyZGsPX/ngCmf8S9pM53VPtW2PWoyJpu5ENO5iEY2RLFCsKXCOS2j4
-p0IEKULPAIZ/12+wKks2uZG+tNMzIvXzmWtTPzKazSPmiEkEGBECAAkFAkYeXR4C
-GwwACgkQfHUcXBu9VFkZogCgjPi/pyQ4Wqs20kZXIP/QbVC7kjUAoLw5INvpciE2
-GKFQV2VUl29FqBmJ
-=K14g
------END PGP PUBLIC KEY BLOCK-----
-
+++ /dev/null
-#!/bin/awk -f
-#
-# This is adapter v0.28. Adapter adapts .spec files for PLD Linux.
-# $Id$
-#
-# Copyright (C) 1999-2006 PLD-Team <feedback@pld-linux.org>
-# Authors:
-# Micha³ Kuratczyk <kura@pld.org.pl>
-# Sebastian Zagrodzki <s.zagrodzki@mimuw.edu.pl>
-# Tomasz K³oczko <kloczek@rudy.mif.pg.gda.pl>
-# Artur Frysiak <wiget@pld-linux.org>
-# Michal Kochanowicz <mkochano@pld.org.pl>
-# Elan Ruusamä¤e <glen@pld-linux.org>
-#
-# See cvs log adapter{,.awk} for list of contributors
-#
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-
-# TODO
-# - parse ../PLD-doc/BuildRequires.txt and setup proper BR epoches?
-# - add "-nc" option to skip CVS interaction
-# - sort Summary(XX)
-# - sort Requires, BuildRequires
-# - check if %description (lang=C) contains 8bit
-# - desc wrapping is totally fucked up on global.spec,1.25, dosemu.spec,1.115-
-
-BEGIN {
- RPM_SECTIONS = "package|build|changelog|clean|description|install|post|posttrans|postun|pre|prep|pretrans|preun|triggerin|triggerpostun|triggerun|verifyscript|check"
- SECTIONS = "^%(" RPM_SECTIONS ")"
-
- PREAMBLE_TAGS = "(Summary|Name|Version|Release|Epoch|License|Group|URL|BuildArch|BuildRoot|Obsoletes|Conflicts|Provides|ExclusiveArch|ExcludeArch|Pre[Rr]eq|(Build)?Requires)"
-
- preamble = 1 # Is it part of preamble? Default - yes
- boc = 4 # Beginning of %changelog
- bod = 0 # Beginning of %description
- tw = 70 # Descriptions width
-
- b_idx = 0 # index of BR/R arrays
- BR_count = 0 # number of additional BuildRequires
-
- # If variable removed, then 1 (for removing it from export)
- removed["LDFLAGS"] = 0
- removed["CFLAGS"] = 0
- removed["CXXFLAGS"] = 0
-
- # get cvsaddress for changelog section
- # using rpm macros as too lazy to add ~/.adapterrc parsing support.
- "rpm --eval '%{?_cvsmaildomain}%{!?_cvsmaildomain:@pld-linux.org}'" | getline _cvsmaildomain
- "rpm --eval '%{?_cvsmailfeedback}%{!?_cvsmailfeedback:PLD Team <feedback@pld-linux.org>}'" | getline _cvsmailfeedback
-
- # If 1, we are inside of comment block (started with /^#%/)
- comment_block = 0
-
- # File with rpm groups
- "rpm --eval %_sourcedir" | getline groups_file
- groups_file = groups_file "/rpm.groups"
- system("cd `rpm --eval %_sourcedir`; [ -f rpm.groups ] || cvs up rpm.groups >/dev/null")
- system("[ -d ../PLD-doc ] && cd ../PLD-doc && ([ -f BuildRequires.txt ] || cvs up BuildRequires.txt >/dev/null)");
-
- # Temporary file for changelog section
- changelog_file = ENVIRON["HOME"] "/tmp/adapter.changelog"
-
- # Load rpm macros
- "rpm --eval %_prefix" | getline prefix
- "rpm --eval %_bindir" | getline bindir
- "rpm --eval %_sbindir" | getline sbindir
- "rpm --eval %_libdir" | getline libdir
- "rpm --eval %_sysconfdir" | getline sysconfdir
- "rpm --eval %_datadir" | getline datadir
- "rpm --eval %_includedir" | getline includedir
- "rpm --eval %_mandir" | getline mandir
- "rpm --eval %_infodir" | getline infodir
- "rpm --eval %_examplesdir" | getline examplesdir
- "rpm --eval %_defaultdocdir" | getline docdir
- "rpm --eval %_desktopdir" | getline desktopdir
- "rpm --eval %_pixmapsdir" | getline pixmapsdir
-
- "rpm --eval %perl_sitearch" | getline perl_sitearch
- "rpm --eval %perl_archlib" | getline perl_archlib
- "rpm --eval %perl_privlib" | getline perl_privlib
- "rpm --eval %perl_vendorlib" | getline perl_vendorlib
- "rpm --eval %perl_vendorarch" | getline perl_vendorarch
- "rpm --eval %perl_sitelib" | getline perl_sitelib
-
- "rpm --eval %py_sitescriptdir 2>/dev/null" | getline py_sitescriptdir
- "rpm --eval %py_sitedir 2>/dev/null" | getline py_sitedir
- "rpm --eval %py_scriptdir 2>/dev/null" | getline py_scriptdir
-
- "rpm --eval %ruby_archdir" | getline ruby_archdir
- "rpm --eval %ruby_ridir" | getline ruby_ridir
- "rpm --eval %ruby_rubylibdir" | getline ruby_rubylibdir
- "rpm --eval %ruby_sitearchdir" | getline ruby_sitearchdir
- "rpm --eval %ruby_sitelibdir" | getline ruby_sitelibdir
-
- "rpm --eval %php_pear_dir" | getline php_pear_dir
- "rpm --eval %tmpdir" | getline tmpdir
-}
-
-# There should be a comment with CVS keywords on the first line of file.
-FNR == 1 {
- if (!/# \$Revision:/) # If this line is already OK?
- print "# $" "Revision:$, " "$" "Date:$" # No
- else {
- print $0 # Yes
- next # It is enough for first line
- }
-}
-
-# If the latest line matched /%files/
-defattr == 1 {
- if (ENVIRON["SKIP_DEFATTR"] != 1) {
- if ($0 !~ /defattr/) { # If no %defattr
- print "%defattr(644,root,root,755)" # Add it
- } else {
- $0 = "%defattr(644,root,root,755)" # Correct mistakes (if any)
- }
- }
- defattr = 0
-}
-
-function b_makekey(a, b, s) {
- s = a "" b;
- # kill bcond
- gsub(/[#%]+{[!?]+[_a-zA-Z0-9]+:/, "", s);
-
- # kill commented out items
- gsub(/^#[ \t]*/, "", s);
-
- # force order
- gsub(/^Summary\(/, "11Summary(", s);
- gsub(/^Summary/, "10Summary", s);
- gsub(/^Name/, "2Name", s);
- gsub(/^Version/, "3Version", s);
- gsub(/^Release/, "4Release", s);
- gsub(/^Epoch/, "5Epoch", s);
- gsub(/^License/, "5License", s);
- gsub(/^Group/, "6Group", s);
- gsub(/^URL/, "7URL", s);
-
- gsub(/^BuildRequires/, "B1BuildRequires", s);
- gsub(/^BuildConflicts/, "B2BuildConflicts", s);
- gsub(/^Provides/, "X1Provides", s);
- gsub(/^Obsoletes/, "X2Obsoletes", s);
- gsub(/^Conflicts/, "X3Conflicts", s);
- gsub(/^BuildArch/, "X4BuildArch", s);
- gsub(/^ExclusiveArch/, "X6ExclusiveArch", s);
- gsub(/^ExcludeArch/, "X7ExcludeArch", s);
- gsub(/^BuildRoot/, "X9BuildRoot", s);
-
-# printf("%s -> %s\n", a""b, s);
- return s;
-}
-
-# Comments
-/^#/ && (description == 0) {
- if (/This file does not like to be adapterized!/) {
- print # print this message
- while (getline) # print the rest of spec as it is
- print
- do_not_touch_anything = 1 # do not touch anything in END()
- exit 0
- }
-
- # Generally, comments are printed without touching
- sub(/[ \t]+$/, "")
-
- if (/Source.*md5/) {
- print $0
- next
- }
-}
-
-/^%define/ {
- # Remove defining _applnkdir (this macro has been included in rpm-3.0.4)
- if ($2 == "_applnkdir") {
- next
- }
- if ($2 == "date") {
- date = 1
- if (did_files == 0) {
- print "%files"
- print ""
- did_files = 1
- }
- }
-
- # Do not add %define of _prefix if it already is.
- if ($2 ~ /^_prefix/) {
- sub("^"prefix, $3, bindir)
- sub("^"prefix, $3, sbindir)
- sub("^"prefix, $3, libdir)
- sub("^"prefix, $3, datadir)
- sub("^"prefix, $3, includedir)
- prefix = $3
- }
-
- if ($2 ~ /_bindir/ && !/_sbindir/)
- bindir = $3
- if ($2 ~ /_sbindir/)
- sbindir = $3
- if ($2 ~ /_libdir/) {
- if ($3 ~ /^%\(/) {
- # TODO: should escape for latter checks like: ($c ~ sysconfdir "/{?cron.")
- libdir = "%%%%%%%%%%%%%%"
- } else {
- libdir = $3
- }
- }
- if ($2 ~ /_sysconfdir/) {
- if ($3 ~ /^%\(/) {
- # TODO: should escape for latter checks like: ($c ~ sysconfdir "/{?cron.")
- sysconfdir = "%%%%%%%%%%%%%%"
- } else {
- sysconfdir = $3
- }
- }
- if ($2 ~ /_datadir/) {
- if ($3 ~ /^%\(/) {
- # TODO: should escape for latter checks like: ($c ~ sysconfdir "/{?cron.")
- datadir = "%%%%%%%%%%%%%%"
- } else {
- datadir = $3
- }
- }
- if ($2 ~ /_includedir/)
- includedir = $3
- if ($2 ~ /_mandir/)
- mandir = $3
- if ($2 ~ /_infodir/)
- infodir = $3
- if ($2 ~ /_docdir/)
- docdir = $3
-
- # version related macros
- if ($2 ~ /^_beta$/)
- _beta = $3
- if ($2 ~ /^_rc$/)
- _rc = $3
- if ($2 ~ /^_pre$/)
- _pre = $3
- if ($2 ~ /^_snap$/)
- _snap = $3
-
- # these are used usually when adapterizing external spec
- if ($2 ~ /^name$/)
- name = $3
- if ($2 ~ /^version$/)
- version = $3
- if ($2 ~ /^release$/)
- release = $3
-
- if ($2 ~ /^mod_name$/)
- mod_name = $3
-
- sub(/[ \t]+$/, "");
- # do nothing further, otherwise adapter thinks we're at preamble
- print
- next
-}
-
-# Obsolete
-/^%include.*\/usr\/lib\/rpm\/macros\.python$/ {
- next
-}
-
-################
-# %description #
-################
-/^%description/, (!/^%description/ && $0 ~ SECTIONS) {
- preamble = 0
-
- if (/^%description/) {
- bod++
- format_line = ""
- format_indent = -1
- }
-
- # Format description
- if (ENVIRON["SKIP_DESC"] != 1 && description == 1 && !/^%[a-z]+/ && !/^%description/) {
- if (/^[ \t]*$/) {
- format_flush(format_line, format_indent)
- print ""
- format_line = ""
- format_indent = -1
- } else if (/^[ \t]*[-\*][ \t]*/) {
- format_flush(format_line, format_indent)
- match($0, /^[ \t]*/)
- format_indent = RLENGTH
- match($0, /^[ \t]*[-\*][ \t]/)
- format_line = substr($0, RLENGTH)
- } else
- format_line = format_line " " $0
- next
- }
-
- if (/^%[a-z]+/ && (!/^%description/ || bod == 2)) {
- if (NF > 3 && $2 == "-l") {
- ll = $1
- for (i = 4; i <= NF; i++)
- ll = ll " " $i
- $0 = ll " -l " $3
- }
- format_flush(format_line, format_indent)
- if (bod == 2) {
- bod = 1
- description = 1
- } else {
- bod = 0
- description = 0
- }
- } else
- description = 1
-}
-
-#########
-# %prep #
-#########
-/^%prep/, (!/^%prep/ && $0 ~ SECTIONS) {
- preamble = 0
- did_prep = 1
-
- use_macros()
-
- # Add '-q' to %setup
- if (/^%setup/ && !/-q/) {
- sub(/^%setup/, "%setup -q")
- }
-
- if (/^%setup/ && name != "setup") {
- $0 = fixedsub(name, "%{name}", $0);
- $0 = fixedsub(version, "%{version}", $0);
- if (_beta) {
- $0 = fixedsub(_beta, "%{_beta}", $0);
- }
- if (_rc) {
- $0 = fixedsub(_rc, "%{_rc}", $0);
- }
- if (_pre) {
- $0 = fixedsub(_pre, "%{_pre}", $0);
- }
- if (_snap) {
- $0 = fixedsub(_snap, "%{_snap}", $0);
- }
- }
-
- if (/^%setup/ && /-n %{name}-%{version}( |$)/) {
- $0 = fixedsub(" -n %{name}-%{version}", "", $0)
- }
- sub("^%patch ", "%patch0 ");
-
- # invalid in %prep
- sub("^rm -rf \$RPM_BUILD_ROOT.*", "");
-}
-
-##########
-# %build #
-##########
-/^%build/, (!/^%build/ && $0 ~ SECTIONS) {
- preamble = 0
-
- if (did_prep == 0) {
- print "%prep"
- print ""
- did_prep = 1
- }
-
- use_macros()
- use_tabs()
-
- if (/^automake$/)
- sub(/$/, " -a -c")
-
- if (/LDFLAGS/) {
- if (/LDFLAGS="-s"/) {
- removed["LDFLAGS"] = 1
- next
- } else {
- split($0, tmp, "LDFLAGS=")
- count = split(tmp[2], flags, "\"")
- if (flags[1] != "" && flags[1] !~ "!?debug") {
- sub(/-s[" ]?/, "%{rpmldflags} ", flags[1])
- $0 = tmp[1] line[1] "LDFLAGS=" flags[1] "\""
- for (i = 2; i < count; i++)
- $0 = $0 flags[i] "\""
- }
- }
- }
-
- if (/CFLAGS=/)
- if (cflags("CFLAGS") == 0)
- next
-
- if (/CXXFLAGS=/)
- if (cflags("CXXFLAGS") == 0)
- next
-
- if (/^export /) {
- if (removed["LDFLAGS"])
- sub(" LDFLAGS", "")
- if (removed["CFLAGS"])
- sub(" CFLAGS", "")
- if (removed["CXXFLAGS"])
- sub(" CXXFLAGS", "")
- # Is there still something?
- if (/^export[ ]*$/)
- next
- }
-
- # quote CC
- if (/CC=%{__cc} /) {
- sub("CC=%{__cc}", "CC=\"%{__cc}\"")
- }
-
- # use PLD Linux macros
- $0 = fixedsub("glib-gettextize --copy --force","%{__glib_gettextize}", $0);
- $0 = fixedsub("intltoolize --copy --force", "%{__intltoolize}", $0);
- $0 = fixedsub("automake --add-missing --copy", "%{__automake}", $0);
- $0 = fixedsub("automake -a --foreign --copy", "%{__automake}", $0);
- $0 = fixedsub("automake -a -c --foreign", "%{__automake}", $0);
- $0 = fixedsub("libtoolize --force --automake --copy", "%{__libtoolize}", $0);
- $0 = fixedsub("libtoolize -c -f --automake", "%{__libtoolize}", $0);
-
- sub(/^aclocal$/, "%{__aclocal}");
- sub(/^autoheader$/, "%{__autoheader}");
- sub(/^autoconf$/, "%{__autoconf}");
- sub(/^automake$/, "%{__automake}");
-
- # atrpms
- $0 = fixedsub("%perl_configure", "%{__perl} Makefile.PL \\\n\tINSTALLDIRS=vendor", $0);
- $0 = fixedsub("%perl_makecheck", "%{?with_tests:%{__make} test}", $0);
-}
-
-##########
-# %clean #
-##########
-/^%clean/, (!/^%clean/ && $0 ~ SECTIONS) {
- did_clean = 1
-
- use_macros()
-}
-
-############
-# %install #
-############
-/^%install/, (!/^%install/ && $0 ~ SECTIONS) {
-
- preamble = 0
-
- # foreign rpms
- sub("^%{__rm} -rf %{buildroot}", "rm -rf $RPM_BUILD_ROOT")
- sub("%buildroot", "$RPM_BUILD_ROOT");
- sub("%{buildroot}", "$RPM_BUILD_ROOT");
-
- if (/^[ \t]*rm([ \t]+-[rf]+)*[ \t]+(\${?RPM_BUILD_ROOT}?|%{?buildroot}?)/ && did_rmroot==0) {
- did_rmroot=1
- print "rm -rf $RPM_BUILD_ROOT"
- next
- }
-
- if (!/^(#?[ \t]*)$/ && !/^%install/ && did_rmroot==0) {
- print "rm -rf $RPM_BUILD_ROOT"
- did_rmroot=1
- }
-
- if (tmpdir) {
- buildroot = tmpdir "/" name "-" version "-root-" ENVIRON["USER"]
- gsub(buildroot, "$RPM_BUILD_ROOT")
- }
-
- if (!/%{_lib}/) {
- sub("\$RPM_BUILD_ROOT/%", "$RPM_BUILD_ROOT%")
- }
-
- use_macros()
-
- # 'install -d' instead 'mkdir -p'
- if (/mkdir -p/)
- sub(/mkdir -p/, "install -d")
-
- # cp -a already implies cp -r
- sub(/^cp -ar/, "cp -a")
-
- # No '-u root' or '-g root' for 'install'
- if (/^install/ && /-[ug][ \t]*root/)
- gsub(/-[ug][ \t]*root /, "")
-
- if (/^install/ && /-m[ \t]*[0-9]+/)
- gsub(/-m[ \t]*[0-9]+ /, "")
-
- # No lines contain 'chown' or 'chgrp' if owner/group is 'root'
- if (($1 ~ /chown/ && $2 ~ /root\.root/) || ($1 ~ /chgrp/ && $2 ~ /root/))
- next
-
- # No lines contain 'chmod' if it sets the modes to '644'
- if ($1 ~ /chmod/ && $2 ~ /644/)
- next
-
- # atrpms
- $0 = fixedsub("%perl_makeinstall", "%{__make} pure_install \\\n\tDESTDIR=$RPM_BUILD_ROOT", $0);
-}
-
-##########
-# %files #
-##########
-/^%files/, (!/^%files/ && $0 ~ SECTIONS) {
- preamble = 0
- did_files = 1
-
- if ($0 ~ /^%files/)
- defattr = 1
-
- use_files_macros()
-}
-
-##############
-# %changelog #
-##############
-/^%changelog/, (!/^%changelog/ && $0 ~ SECTIONS) {
- preamble = 0
- has_changelog = 1
- skip = 0
- # There should be some CVS keywords on the first line of %changelog.
- if (boc == 3) {
- if ($0 !~ _cvsmailfeedback)
- print "* %{date} " _cvsmailfeedback > changelog_file
- else
- skip = 1
- boc = 2
- }
- if (boc == 2 && !skip) {
- if (!/All persons listed below/) {
- printf "All persons listed below can be reached at " > changelog_file
- print "<cvs_login>" _cvsmaildomain "\n" > changelog_file
- } else
- skip = 1
- boc = 1
- }
- if (boc == 1 && !skip) {
- if (!/^$/) {
- if (!/\$.*Log:.*\$/)
- print "$" "Log:$" > changelog_file
- boc = 0
- }
- }
- # Define date macro.
- if (boc == 4) {
- if (date == 0) {
- printf "%%define date\t%%(echo `LC_ALL=\"C\"" > changelog_file
- print " date +\"%a %b %d %Y\"`)" > changelog_file
- date = 1
- }
- boc = 3
- }
-
- sub(/[ \t]+$/, "")
- if (!/^%[a-z]+$/ || /changelog/)
- print > changelog_file
- else
- print
- next
-}
-
-###########
-# SCRIPTS #
-###########
-/^%pre/, (!/^%pre/ && $0 ~ SECTIONS) {
- preamble = 0
-
- if (gsub("/usr/sbin/useradd", "%useradd")) {
- sub(" 2> /dev/null \|\| :", "");
- sub(" >/dev/null 2>&1 \|\|:", "");
- }
-
- # %useradd and %groupadd may not be wrapped
- if (/%(useradd|groupadd).*\\$/) {
- a = $0; getline;
- sub(/^[\s\t]*/, "");
- $0 = substr(a, 1, length(a) - 1) $0;
- }
- use_script_macros()
-}
-
-/^%post/, (!/^%post/ && $0 ~ SECTIONS) {
- preamble = 0
- use_macros()
-}
-/^%preun/, (!/^%preun/ && $0 ~ SECTIONS) {
- preamble = 0
- use_script_macros()
-}
-/^%postun/, (!/^%postun/ && $0 ~ SECTIONS) {
- preamble = 0
- use_script_macros()
-}
-/^%triggerin/, (!/^%triggerin/ && $0 ~ SECTIONS) {
- preamble = 0
- use_script_macros()
-}
-/^%triggerun/, (!/^%triggerun/ && $0 ~ SECTIONS) {
- preamble = 0
- use_script_macros()
-}
-/^%triggerpostun/, (!/^%triggerpostun/ && $0 ~ SECTIONS) {
- preamble = 0
- use_script_macros()
-}
-/^%pretrans/, (!/^%pretrans/ && $0 ~ SECTIONS) {
- preamble = 0
- use_script_macros()
-}
-/^%posttrans/, (!/^%posttrans/ && $0 ~ SECTIONS) {
- preamble = 0
- use_script_macros()
-}
-/^%verifyscript/, (!/^%verifyscript/ && $0 ~ SECTIONS) {
- preamble = 0
- use_script_macros()
-}
-/^%check/, (!/^%check/ && $0 ~ SECTIONS) {
- preamble = 0
- use_script_macros()
-}
-
-#############
-# PREAMBLES #
-#############
-preamble == 1 {
- # There should not be a space after the name of field
- # and before the colon.
- sub(/[ \t]*:/, ":")
-
- if (/^%perl_module_wo_prefix/) {
- name = $2
- version = $3
- release = "0." fixedsub(".%{disttag}.at", "", $4)
- }
-
- field = tolower($1)
- fieldnlower = $1
- if (field ~ /summary:/ && !/etc\.$/) {
- sub(/\.$/, "", $0);
- }
- if (field ~ /group(\([^)]+\)):/)
- next
- if (field ~ /group:/) {
- format_preamble()
- group = $0;
- sub(/^[^ \t]*[ \t]*/, "", group);
-
- sub(/^Utilities\//,"Applications/", group)
- sub(/^Games/,"Applications/Games", group)
- sub(/^X11\/Games/,"X11/Applications/Games", group)
- sub(/^X11\/GNOME\/Development\/Libraries/,"X11/Development/Libraries", group)
- sub(/^X11\/GNOME\/Applications/,"X11/Applications", group)
- sub(/^X11\/GNOME/,"X11/Applications", group)
- sub(/^X11\/Utilities/,"X11/Applications", group)
- sub(/^X11\/Games\/Strategy/,"X11/Applications/Games/Strategy", group)
- sub(/^X11\/Library/,"X11/Libraries", group)
- sub(/^Shells/,"Applications/Shells", group)
- sub(/^System Environment\/Libraries$/, "Libraries", group)
- sub(/^Library\/Development$/, "Development/Libraries", group)
- sub(/^System Environment\/Daemons$/, "Daemons", group)
- sub(/^Applications\/Internet$/, "Applications/Networking", group)
- sub(/^Applications\/Daemons$/, "Daemons", group)
- sub(/^Application\/Multimedia$/, "Applications/Multimedia", group)
- sub(/^System\/Servers$/, "Daemons", group)
- sub(/^X11\/Xserver$/, "X11/Servers", group)
- sub(/^X11\/XFree86/, "X11", group)
- sub(/^Applications\/Compilers$/, "Development/Languages", group)
- sub(/^Applications\/Internet\/Peer to Peer/, "Applications/Networking", group)
- sub(/^Networking\/Deamons$/, "Networking/Daemons", group)
- sub(/^Development\/Docs$/, "Documentation", group)
- sub(/^Development\/Documentation$/, "Documentation", group)
- sub(/^System Environment\/Kernel$/, "Base/Kernel", group)
- sub(/^Development\/Libraries\/Java$/, "Development/Languages/Java", group)
- sub(/^Development\/Java/, "Development/Languages/Java", group)
- sub(/^Development\/Testing$/, "Development", group)
- sub(/^Text Processing\/Markup\/HTML$/, "Applications/Text", group)
- sub(/^Text Processing\/Markup\/XML$/, "Applications/Text", group)
- sub(/^Web\/Database$/, "Applications/WWW", group)
- sub(/^System Environment\/Base$/, "Base", group)
-
- $0 = "Group:\t\t" group
-
- if (group ~ /^X11/ && x11 == 0) # Is it X11 application?
- x11 = 1
-
- byl_plik_z_groupmi = 0
- byl_opis_grupy = 0
- while ((getline linia_grup < groups_file) > 0) {
- byl_plik_z_groupmi = 1
- if (linia_grup == group) {
- byl_opis_grupy = 1
- break
- }
- }
-
- if (!byl_plik_z_groupmi)
- print "######\t\t" groups_file ": no such file"
- else if (!byl_opis_grupy)
- print "######\t\t" "Unknown group!"
-
- close(groups_file)
- did_groups = 1
- }
-
- if (field ~ /prereq:/) {
- sub(/Pre[Rr]eq:/, "Requires:", $1);
- }
-
- # split (build)requires, obsoletes on commas
- if (field ~ /(obsoletes|requires|provides|conflicts):/ && NF > 2) {
- value = substr($0, index($0, $2));
- $0 = format_requires($1, value);
- }
-
- # BR: tar (and others) is to common (rpm-build requires it)
- if (field ~ /^buildrequires:/) {
- l = substr($0, index($0, $2));
- if (l == "awk" ||
- l == "binutils" ||
- l == "bzip2" ||
- l == "cpio" ||
- l == "diffutils" ||
- l == "elfutils" ||
- l == "fileutils" ||
- l == "findutils" ||
- l == "glibc-devel" ||
- l == "grep" ||
- l == "gzip" ||
- l == "make" ||
- l == "patch" ||
- l == "sed" ||
- l == "sh-utils" ||
- l == "tar" ||
- l == "textutils") {
- next
- }
-
- # perhaps we have common known name?
-
- # jpackages
- sub(/^java-devel$/, "jdk", $2);
- sub(/^log4j$/, "jakarta-log4j", $2);
- sub(/^oro$/, "jakarta-oro", $2);
- sub(/^xerces-j2$/, "xerces-j", $2);
- sub(/^ant-junit$/, "jakarta-ant", $2);
- sub(/^ldapjdk$/, "ldapsdk", $2);
- sub(/^saxon-scripts$/, "saxon", $2);
-
- replace_php_virtual_deps();
- }
-
- if (field ~ /^requires:/) {
- replace_php_virtual_deps();
- }
-
-
- # obsolete/unwanted tags
- if (field ~ /vendor:|packager:|distribution:|docdir:|prefix:|icon:|author:|author-email:|metadata-version:/) {
- next
- }
-
- if (field ~ /buildroot:/) {
- $0 = $1 "%{tmpdir}/%{name}-%{version}-root-%(id -u -n)"
- did_build_root = 1
- }
-
- # Use "License" instead of "Copyright" if it is (L)GPL or BSD
- if (field ~ /copyright:/ && $2 ~ /GPL|BSD/) {
- $1 = "License:"
- }
-
- if (field ~ /license:/) {
- l = substr($0, index($0, $2));
- if (l == "Python Software Foundation License") {
- l = "PSF"
- }
- $0 = "License:\t" l;
- }
-
-
- if (field ~ /name:/) {
- if ($2 == "%{name}" && name) {
- $2 = name
- }
- name = $2
- name_seen = 1;
- }
-
- if (field ~ /version:/) {
- if ($2 == "%{version}" && version) {
- $2 = version
- }
- version = $2
- version_seen = 1;
- }
-
- if (field ~ /release:/) {
- if ($2 == "%{release}" && release) {
- $2 = release
- }
- sub(/%atrelease /, "0.", $0)
- release = $2
- release_seen = 1;
- }
-
-
- if (field ~ /serial:/)
- $1 = "Epoch:"
-
- if (field ~ /home-page:/)
- $1 = "URL:"
-
- # proper caps
- if (field ~ /^url:$/)
- $1 = "URL:"
-
- if (field ~ /^description:$/)
- $1 = "\n%description\n"
-
- # Use %{name} and %{version} in the filenames in "Source:"
- if (field ~ /^source/ || field ~ /patch/) {
- n = split($2, url, /\//)
- if (url[n] ~ /\.gz$/) {
- url[n+1] = ".gz" url[n+1]
- sub(/\.gz$/,"",url[n])
- }
- if (url[n] ~ /\.zip$/) {
- url[n+1] = ".zip" url[n+1]
- sub(/\.zip$/,"",url[n])
- }
- if (url[n] ~ /\.tar$/) {
- url[n+1] = ".tar" url[n+1]
- sub(/\.tar$/,"",url[n])
- }
- if (url[n] ~ /\.patch$/) {
- url[n+1] = ".patch" url[n+1]
- sub(/\.patch$/,"",url[n])
- }
- if (url[n] ~ /\.bz2$/) {
- url[n+1] = ".bz2" url[n+1]
- sub(/\.bz2$/,"",url[n])
- }
- if (url[n] ~ /\.logrotate$/) {
- url[n+1] = ".logrotate" url[n+1]
- sub(/\.logrotate$/,"",url[n])
- }
- if (url[n] ~ /\.pamd$/) {
- url[n+1] = ".pamd" url[n+1]
- sub(/\.pamd$/,"",url[n])
- }
-
- # allow %{name} only in last url component
- s = ""
- for (i = 1; i <= n; i++) {
- url[i] = fixedsub("%{name}", name, url[i])
- if (s) {
- s = s "/" url[i]
- } else {
- s = url[i]
- }
- }
- $2 = s url[n+1]
-
- filename = url[n]
- if (name) {
- url[n] = fixedsub(name, "%{name}", url[n])
- }
- if (field ~ /source/) {
- if (version) {
- url[n] = fixedsub(version, "%{version}", url[n])
- }
- if (_beta) {
- url[n] = fixedsub(_beta, "%{_beta}", url[n])
- }
- if (_rc) {
- url[n] = fixedsub(_rc, "%{_rc}", url[n])
- }
- if (_pre) {
- url[n] = fixedsub(_pre, "%{_pre}", url[n])
- }
- if (_snap) {
- url[n] = fixedsub(_snap, "%{_snap}", url[n])
- }
- }
- # assigning to $2 kills preamble formatting
- $2 = fixedsub(filename, url[n], $2)
-
- # sourceforge urls
- sub("[?&]big_mirror=.*$", "", $2);
- sub("[?&]modtime=.*$", "", $2);
-
- sub("[?]use_mirror=.*$", "", $2);
- sub("[?]download$", "", $2);
-
- sub("^http://prdownloads\.sourceforge\.net/", "http://dl.sourceforge.net/", $2)
- sub("^http://download\.sf\.net/", "http://dl.sourceforge.net/", $2)
- sub("^http://downloads\.sourceforge\.net/", "http://dl.sourceforge.net/", $2)
-
- sub("^http://.*\.dl\.sourceforge\.net/", "http://dl.sourceforge.net/", $2)
- sub("^http://dl\.sourceforge\.net/sourceforge/", "http://dl.sourceforge.net/", $2)
- sub("^http://dl\.sf\.net/", "http://dl.sourceforge.net/", $2)
- }
-
-
- if (field ~ /^source:/)
- $1 = "Source0:"
-
- if (field ~ /^patch:/)
- $1 = "Patch0:"
-
- kill_preamble_macros();
- format_preamble()
-
- if (field ~ /requires/) {
- # atrpms
- $0 = fixedsub("%{eversion}", "%{epoch}:%{version}-%{release}", $0);
- }
-}
-
-/^%bcond_/ {
- # do nothing
- print
- next
-}
-
-# sort BR/R!
-#
-# NOTES:
-# - mixing BR/R and anything else confuses this (all will be sorted together)
-# so don't do that.
-# - comments leading the BR/R can not be associated,
-# so don't adapterize when the BR/R are mixed with comments
-ENVIRON["SKIP_SORTBR"] != 1 && preamble == 1 && $0 ~ PREAMBLE_TAGS, $0 ~ PREAMBLE_TAGS {
- if ($1 ~ /Pre[Rr]eq:/) {
- sub(/Pre[Rr]eq:/, "Requires:", $1);
- }
- format_preamble()
-# kill_preamble_macros(); # breaks tabbing
-
- b_idx++;
- l = substr($0, index($0, $2));
- b_ktmp = b_makekey($1, l);
- b_key[b_idx] = b_ktmp;
- b_val[b_ktmp] = $0;
-
- next;
-}
-
-preamble == 1 {
- if (b_idx > 0) {
- isort(b_key, b_idx);
- for (i = 1; i <= b_idx; i++) {
- v = b_val[b_key[i]];
- sub(/[ \t]+$/, "", v);
- print "" v;
- }
- b_idx = 0
- }
-}
-
-# main() ;-)
-{
- preamble = 1
-
- sub(/[ \t]+$/, "")
- print
-
- if (name_seen == 0 && name) {
- print "Name:\t\t" name
- name_seen = 1
- }
-
- if (version_seen == 0 && version) {
- print "Version:\t" version
- version_seen = 1
- }
-
- if (release_seen == 0 && release) {
- print "Release:\t" release
- release_seen = 1
- }
-
- if (did_build_root == 0) {
-# print "BuildRoot:\t%{tmpdir}/%{name}-%{version}-root-%(id -u -n)"
- did_build_root = 1
- }
- if (did_groups == 0) {
-# print "Group:\t\tunknown"
- did_groups = 1
- }
-}
-
-
-END {
- if (do_not_touch_anything)
- exit 0
-
- # TODO: need to output these in proper place
- if (BR_count > 0) {
- for (i = 0; i <= BR_count; i++) {
- print BR[i];
- }
- }
-
- close(changelog_file)
- while ((getline < changelog_file) > 0)
- print
- system("rm -f " changelog_file)
-
- if (did_clean == 0) {
- print ""
- print "%clean"
- print "rm -rf $RPM_BUILD_ROOT"
- }
-
- if (date == 0) {
- print ""
- print "%define date\t%(echo `LC_ALL=\"C\" date +\"%a %b %d %Y\"`)"
- }
-
- if (has_changelog == 0) {
- print "%changelog"
- }
-
- if (boc > 2) {
- print "* %{date} PLD Team <feedback@pld-linux.org>"
- }
- if (boc > 1) {
- printf "All persons listed below can be reached at "
- print "<cvs_login>@pld-linux.org\n"
- }
- if (boc > 0) {
- print "$" "Log:$"
- }
-}
-
-function fixedsub(s1,s2,t, ind) {
-# substitutes fixed strings (not regexps)
- if (ind = index(t,s1))
- t = substr(t, 1, ind-1) s2 substr(t, ind+length(s1))
- return t
-}
-
-# There should be one or two tabs after the colon.
-function format_preamble()
-{
- if (/^#/ || /^%bcond_with/) {
- return;
- }
- sub(/:[ \t]*/, ":")
- if (match($0, /[A-Za-z0-9(),#_ \t]+[ \t]*:[ \t]*/) == 1) {
- if (RLENGTH < 8)
- sub(/:/, ":\t\t")
- else
- sub(/:/, ":\t")
- }
-}
-
-# Replace directly specified directories with macros
-function use_macros()
-{
- # -m, --skip-macros, --no-macros -- skip macros subst
- if (ENVIRON["SKIP_MACROS"]) {
- return
- }
-
- # leave inline sed lines alone
- if (/(%{__sed}|sed) -i -e/) {
- return;
- }
-
- sub("%{_defaultdocdir}", "%{_docdir}");
- sub("%{_bindir}/perl", "%{__perl}");
- sub("%{_bindir}/python", "%{__python}");
-
- gsub(infodir, "%{_infodir}")
-
- gsub(perl_sitearch, "%{perl_sitearch}")
- gsub(perl_archlib, "%{perl_archlib}")
- gsub(perl_privlib, "%{perl_privlib}")
- gsub(perl_vendorlib, "%{perl_vendorlib}")
- gsub(perl_vendorarch, "%{perl_vendorarch}")
- gsub(perl_sitelib, "%{perl_sitelib}")
-
- gsub(py_sitescriptdir, "%{py_sitescriptdir}")
- gsub(py_sitedir, "%{py_sitedir}")
- gsub(py_scriptdir, "%{py_scriptdir}")
- gsub("%{_libdir}/python2.4/site-packages", "%{py_sitedir}")
- gsub("%{python_sitelib}", "%{py_sitedir}")
-
- gsub(ruby_archdir, "%{ruby_archdir}")
- gsub(ruby_ridir, "%{ruby_ridir}")
- gsub(ruby_rubylibdir, "%{ruby_rubylibdir}")
- gsub(ruby_sitearchdir, "%{ruby_sitearchdir}")
- gsub(ruby_sitelibdir, "%{ruby_sitelibdir}")
-
- gsub("%{_datadir}/applications", "%{_desktopdir}")
- gsub("%{_datadir}/pixmaps", "%{_pixmapsdir}")
-
- gsub(bindir, "%{_bindir}")
- gsub("%{prefix}/bin", "%{_bindir}")
- if (prefix"/bin" == bindir)
- gsub("%{_prefix}/bin", "%{_bindir}")
-
- for (c = 1; c <= NF; c++) {
- if ($c ~ sbindir "/fix-info-dir")
- continue;
- if ($c ~ sbindir "/webapp")
- continue;
- if ($c ~ sbindir "/ldconfig")
- continue;
- if ($c ~ sbindir "/chsh")
- continue;
- if ($c ~ sbindir "/usermod")
- continue;
- if ($c ~ sbindir "/chkconfig")
- continue;
- if ($c ~ sbindir "/installzope(product|3package)")
- continue;
- gsub(sbindir, "%{_sbindir}", $c)
- }
-
- gsub("%{prefix}/sbin", "%{_sbindir}")
- if (prefix"/sbin" == sbindir) {
- gsub("%{_prefix}/sbin", "%{_sbindir}")
- }
-
- for (c = 1; c <= NF; c++) {
- if ($c ~ sysconfdir "/{?cron.")
- continue;
- if ($c ~ sysconfdir "/{?crontab.d")
- continue;
- if ($c ~ sysconfdir "/{?env.d")
- continue;
- if ($c ~ sysconfdir "/{?modprobe.(d|conf)")
- continue;
- if ($c ~ sysconfdir "/{?udev/rules.d")
- continue;
- if ($c ~ sysconfdir "/{?logrotate.d")
- continue;
- if ($c ~ sysconfdir "/{?pam.d")
- continue;
- if ($c ~ sysconfdir "/{?profile.d")
- continue;
- if ($c ~ sysconfdir "/{?rc.d")
- continue;
- if ($c ~ sysconfdir "/{?security")
- continue;
- if ($c ~ sysconfdir "/{?skel")
- continue;
- if ($c ~ sysconfdir "/{?sysconfig")
- continue;
- if ($c ~ sysconfdir "/{?shrc.d")
- continue;
- if ($c ~ sysconfdir "/{?certs")
- continue;
- if ($c ~ sysconfdir "/{?X11")
- continue;
- if ($c ~ sysconfdir "/{?ld.so.conf.d")
- continue;
- if ($c ~ sysconfdir "/{?rpm")
- continue;
- if ($c ~ sysconfdir "/{?bash_completion.d")
- continue;
- if ($c ~ sysconfdir "/{?samba")
- continue;
- if ($c ~ sysconfdir "/shells")
- continue;
- gsub(sysconfdir, "%{_sysconfdir}", $c)
- }
-
- gsub(docdir, "%{_docdir}")
- gsub(php_pear_dir, "%{php_pear_dir}")
-
- for (c = 1; c <= NF; c++) {
- if ($c ~ datadir "/automake")
- continue;
- if ($c ~ datadir "/unsermake")
- continue;
- if ($c ~ datadir "/file/magic.mime")
- continue;
- gsub(datadir, "%{_datadir}", $c)
- }
-
- gsub("%{prefix}/share", "%{_datadir}")
- if (prefix"/share" == datadir)
- gsub("%{_prefix}/share", "%{_datadir}")
-
- # CFLAGS="-I/usr/include/ncurses is usually correct.
- if (!/-I\/usr\/include/) {
- gsub(includedir, "%{_includedir}")
- }
-
- gsub("%{prefix}/include", "%{_includedir}")
- if (prefix"/include" == includedir) {
- gsub("%{_prefix}/include", "%{_includedir}")
- }
-
- gsub(mandir, "%{_mandir}")
- if ($0 !~ "%{_datadir}/manual") {
- gsub("%{_datadir}/man", "%{_mandir}")
- }
- gsub("%{_prefix}/share/man", "%{_mandir}")
- gsub("%{prefix}/share/man", "%{_mandir}")
- gsub("%{prefix}/man", "%{_mandir}")
- gsub("%{_prefix}/man", "%{_mandir}")
-
- gsub(infodir, "%{_infodir}")
- gsub("%{prefix}/info", "%{_infodir}")
- gsub("%{_prefix}/info", "%{_infodir}")
-
- if (prefix !~ "/X11R6") {
- gsub("%{_datadir}/aclocal", "%{_aclocaldir}")
- }
-
- gsub(examplesdir, "%{_examplesdir}")
-
- if (prefix != "/") {
- # leave --with-foo=/usr alone
- if ($0 !~ "--with.*=.*" prefix) {
- for (c = 1; c <= NF; c++) {
- if ($c ~ prefix "/sbin/fix-info-dir")
- continue;
- if ($c ~ prefix "/sbin/webapp")
- continue;
- if ($c ~ prefix "/sbin/chsh")
- continue;
- if ($c ~ prefix "/sbin/usermod")
- continue;
- if ($c ~ prefix "/sbin/installzope(product|3package)")
- continue;
- if ($c ~ prefix "/share/automake")
- continue;
- if ($c ~ prefix "/share/unsermake")
- continue;
- if ($c ~ prefix "/lib/sendmail")
- continue;
- if ($c ~ prefix "/lib/pkgconfig")
- continue;
-
- # CFLAGS="-I/usr..." is usually correct.
- if (/-I\/usr/)
- continue;
- # same for LDFLAGS="-L/usr..."
- if (/-L\/usr/)
- continue;
-
- gsub(prefix, "%{_prefix}", $c)
- }
- }
- gsub("%{prefix}", "%{_prefix}")
- }
-
- # replace back
- gsub("%{_includedir}/ncurses", "/usr/include/ncurses")
- gsub("%{_includedir}/freetype", "/usr/include/freetype")
-
- gsub("%{PACKAGE_VERSION}", "%{version}")
- gsub("%{PACKAGE_NAME}", "%{name}")
-
- gsub("^make$", "%{__make}")
- gsub("^make ", "%{__make} ")
- gsub("^gcc ", "%{__cc} ")
-
- # mandrake specs
- gsub("^%make$", "%{__make}")
- gsub("^%make ", "%{__make} ")
- gsub("^%makeinstall_std", "%{__make} install \\\n\tDESTDIR=$RPM_BUILD_ROOT")
- gsub("^%{makeinstall}", "%{__make} install \\\n\tDESTDIR=$RPM_BUILD_ROOT")
- gsub("^%makeinstall", "%{__make} install \\\n\tDESTDIR=$RPM_BUILD_ROOT")
- gsub("^%{__rm} -rf %{buildroot}", "rm -rf $RPM_BUILD_ROOT")
- gsub("^%{__install}", "install")
- gsub("^%{__rm}", "rm")
- gsub("%optflags", "%{rpmcflags}")
- gsub("%{compat_perl_vendorarch}", "%{perl_vendorarch}")
-
- gsub("^%{__make} install DESTDIR=\$RPM_BUILD_ROOT", "%{__make} install \\\n\tDESTDIR=$RPM_BUILD_ROOT")
- gsub("^fix-info-dir$", "[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>\&1")
- $0 = fixedsub("%buildroot", "$RPM_BUILD_ROOT", $0)
- $0 = fixedsub("%{buildroot}", "$RPM_BUILD_ROOT", $0)
- $0 = fixedsub("CXXFLAGS=%{rpmcflags} %configure", "CXXFLAGS=%{rpmcflags}\n%configure", $0);
-
- # split configure line to multiple lines
- if (/%configure / && !/\\$/) {
- $0 = format_configure($0);
- }
-
- gsub("%_bindir", "%{_bindir}")
- gsub("%_datadir", "%{_datadir}")
- gsub("%_iconsdir", "%{_iconsdir}")
- gsub("%_sbindir", "%{_sbindir}")
- gsub("%_mandir", "%{_mandir}")
- gsub("%name", "%{name}")
- gsub(/%__rm/, "rm");
- gsub(/%__mkdir_p/, "install -d");
- gsub(/%__cp/, "cp");
- gsub(/%__ln_s/, "ln -s");
- gsub(/%__sed/, "%{__sed}");
- gsub(/%__cat/, "cat");
- gsub(/%__chmod/, "chmod");
-
- gsub("/usr/src/linux", "%{_kernelsrcdir}")
- gsub("%{_prefix}/src/linux", "%{_kernelsrcdir}")
-
- if (/^ant /) {
- sub(/^ant/, "%ant")
- add_br("BuildRequires: jpackage-utils");
- add_br("BuildRequires: rpmbuild(macros) >= 1.294");
- }
-
-}
-
-function format_configure(line, n, a, s) {
- n = split(line, a, / /);
- s = a[1] " \\\n";
- for (i = 2; i <= n; i++) {
- s = s "\t" a[i] " \\\n"
- }
- return s
-}
-
-
-# insertion sort of A[1..n]
-# copied from mawk manual
-function isort(A,n, i,j,hold) {
- for (i = 2; i <= n; i++) {
- hold = A[j = i]
- while (A[j-1] > hold) {
- j-- ; A[j+1] = A[j]
- }
- A[j] = hold
- }
- # sentinel A[0] = "" will be created if needed
-}
-
-
-function use_files_macros( i, n, t, a)
-{
- use_macros()
-
- # skip comments
- if (/^#/) {
- return;
- }
-
- sub("^%doc %{_mandir}", "%{_mandir}")
-
- gsub("^%{_sbindir}", "%attr(755,root,root) %{_sbindir}")
- gsub("^%{_bindir}", "%attr(755,root,root) %{_bindir}")
-
- # uid/gid nobody is not valid in %files
- if (/%attr([^)]*nobody[^)]*)/ && !/FIXME/) {
- $0 = $0 " # FIXME nobody user/group can't own files! -adapter.awk"
- }
-
- # s[gu]id programs with globs are evil
- if (/%attr\([246]...,.*\*/ && !/FIXME/) {
- $0 = $0 " # FIXME no globs for suid/sgid files"
- }
-
- # replace back
- gsub("%{_sysconfdir}/cron\.d", "/etc/cron.d")
- gsub("%{_sysconfdir}/crontab\.d", "/etc/crontab.d")
- gsub("%{_sysconfdir}/logrotate\.d", "/etc/logrotate.d")
- gsub("%{_sysconfdir}/pam\.d", "/etc/pam.d")
- gsub("%{_sysconfdir}/profile\.d", "/etc/profile.d")
- gsub("%{_sysconfdir}/rc\.d", "/etc/rc.d")
- gsub("%{_sysconfdir}/security", "/etc/security")
- gsub("%{_sysconfdir}/skel", "/etc/skel")
- gsub("%{_sysconfdir}/sysconfig", "/etc/sysconfig")
- gsub("%{_sysconfdir}/certs", "/etc/certs")
- gsub("%{_sysconfdir}/init.d", "/etc/init.d")
-
- # /etc/init.d -> /etc/rc.d/init.d
- if (!/^\/etc\/init\.d$/) {
- gsub("/etc/init.d", "/etc/rc.d/init.d")
- }
-
- if (/\/etc\/rc\.d\/init\.d\// && !/functions/) {
- if (!/%attr.*\/etc\/rc\.d\/init\.d/) {
- $0 = "%attr(754,root,root) " $0
- }
- if (/^%attr.*\/etc\/rc\.d\/init\.d/ && !/^%attr\(754 *,/) {
- gsub("^%attr\\(... *,", "%attr(754,");
- }
- }
-
- if (/lib.+\.so/ && !/\.so$/ && !/^%attr.*/ && !/%exclude/) {
- $0 = "%attr(755,root,root) " $0
- }
-
- if (/%{perl_vendorarch}.*\.so$/ && !/^%attr.*/) {
- $0 = "%attr(755,root,root) " $0
- }
-
- # /etc/sysconfig files
- # %attr(640,root,root) %config(noreplace) %verify(not size mtime md5) /etc/sysconfig/*
- # attr not required, allow default 644 attr
- if (!/network-scripts/ && !/%dir/ && !/\.d$/ && !/functions/ && !/\/etc\/sysconfig\/wmstyle/) {
- if (/\/etc\/sysconfig\// && /%config/ && !/%config\(noreplace/) {
- gsub("%config", "%config(noreplace)")
- }
-
- if (/\/etc\/sysconfig\// && !/%config\(noreplace/) {
- $NF = "%config(noreplace) " $NF
- }
-
- if (/\/etc\/sysconfig\// && /%attr\(755/) {
- gsub("^%attr\\(... *,", "%attr(640,");
- }
-
- if (/\/etc\/sysconfig\// && !/%verify/) {
- gsub("/etc/sysconfig", "%verify(not size mtime md5) /etc/sysconfig");
- }
- }
-
- # kill leading zeros
- if (/%attr\(0[1-9]/) {
- gsub("%attr\\(0", "%attr(")
- }
-
- # kill default attrs
- gsub(/%dir %attr\(755,root,root\)/, "%dir");
- if (!/%dir/) {
- gsub(/%attr\(644,root,root\) /, "");
- }
-
- # sort %verify attrs
- if (match($0, /%verify\(not([^)]+)\)/)) {
- t = substr($0, RSTART, RLENGTH)
- # kill commas: %verify(not,md5,size,mtime)
- gsub(/,/, " ", t);
-
- gsub(/^%verify\(not |\)$/, "", t)
- n = split(t, a, / /)
- isort(a, n)
-
- s = "%verify(not"
- for (i = 1 ; i <= n; i++) {
- s = s " " a[i]
- }
- s = s ")"
-
- gsub(/%verify\(not[^)]+\)/, s)
- }
-
- if (/%{_mandir}/) {
- gsub("\.gz$", "*")
- }
-
- # locale dir and no %lang -> bad
- if (/%{_datadir}\/locale\/.*\// && !/%(dir|lang)/) {
- $(NF + 1) = "# FIXME consider using %find_lang"
- }
-
- # atrpms
- $0 = fixedsub("%{perl_man1dir}", "%{_mandir}/man1", $0);
- $0 = fixedsub("%{perl_man3dir}", "%{_mandir}/man3", $0);
- $0 = fixedsub("%{perl_bin}", "%{_bindir}", $0);
-
- gsub(libdir "/pkgconfig", "%{_pkgconfigdir}");
- gsub("%{_libdir}/pkgconfig", "%{_pkgconfigdir}");
- gsub("%{_prefix}/lib/pkgconfig", "%{_pkgconfigdir}");
-
- gsub("%{_datadir}/applications", "%{_desktopdir}");
- gsub("%{_datadir}/icons", "%{_iconsdir}");
- gsub("%{_datadir}/pixmaps", "%{_pixmapsdir}");
-}
-
-function use_script_macros()
-{
- if (gsub("/sbin/service", "%service")) {
- sub(" >/dev/null 2>&1 \|\|:", "");
- sub(" 2> /dev/null \|\| :", "");
- }
-}
-
-function fill(ch, n, i) {
- for (i = 0; i < n; i++)
- printf("%c", ch)
-}
-
-function format_flush(line, indent, newline, word, first_word) {
- first_word = 1
- if (format_indent == -1)
- newline = ""
- else
- newline = fill(" ", format_indent) "- "
-
- while (match(line, /[^\t ]+/)) {
- word = substr(line, RSTART, RLENGTH)
- if (length(newline) + length(word) + 1 > tw) {
- print newline
-
- if (format_indent == -1)
- newline = ""
- else
- newline = fill(" ", format_indent + 2)
- first_word = 1
- }
-
- if (first_word) {
- newline = newline word
- first_word = 0
- } else
- newline = newline " " word
-
- line = substr(line, RSTART + RLENGTH)
- }
- if (newline ~ /[^\t ]/) {
- print newline
- }
-}
-
-function cflags(var)
-{
- if ($0 == var "=\"$RPM_OPT_FLAGS\"") {
- removed[var] = 1
- return 0
- }
-
- if (!/!\?debug/)
- sub("\$RPM_OPT_FLAGS", "%{rpmcflags}")
- return 1
-}
-
-function demacroize(str)
-{
- if (mod_name) {
- sub("%{mod_name}", mod_name, str);
- }
- if (name) {
- sub("%{name}", name, str);
- }
- if (version) {
- sub("%{version}", version, str);
- }
- if (_beta) {
- sub("%{_beta}", _beta, str);
- }
- if (_rc) {
- sub("%{_rc}", _rc, str);
- }
- if (_pre) {
- sub("%{_pre}", _pre, str);
- }
- if (_snap) {
- sub("%{_snap}", _snap, str);
- }
- return str;
-}
-
-function kill_preamble_macros()
-{
- if ($1 ~ /^URL:/ || $1 ~ /^Obsoletes:/) {
- # NB! assigning $2 a value breaks tabbing
- $2 = demacroize($2);
- # unify sourceforge url
- sub("\.sf\.net/$", ".sourceforge.net/", $2);
- }
-}
-
-function get_epoch(pkg, ver, epoch)
-{
- return
-# should parse the BR lines more adequately:
-# freetype = 2.0.0 -> correct
-# freetype = 2.1.9 -> with epoch 1, as epoch 1 was added in 2.1.7
-
- shell = "grep -o '^" pkg ":[^:]\+' ../PLD-doc/BuildRequires.txt | awk '{print $NF}'";
- shell | getline epoch;
- return epoch;
-}
-
-function format_requires(tag, value, n, p, i, deps, ndeps) {
- # skip any formatting for commented out items or some weird macros
- if (/^#/ || /%\(/) {
- return tag "\t" value
- }
- n = split(value, p, / *,? */);
- for (i = 1; i <= n; i++) {
- if (p[i+1] ~ /[<=>]/) {
- # add epoch if the version doesn't have it but BuildRequires.txt has
- if (p[i] ~ /^[a-z]/ && p[i+2] !~ /^[0-9]+:/) {
- epoch = get_epoch(p[i], p[i+2])
- if (epoch) {
- p[i+2] = epoch ":" p[i+2];
- }
- }
- deps[ndeps++] = p[i] " " p[i+1] " " p[i+2];
- i += 2;
- } else {
- deps[ndeps++] = p[i];
- }
- }
- s = ""
- for (i in deps) {
- s = s sprintf("%s\t%s\n", tag, deps[i]);
- }
- return substr(s, 1, length(s)-1);
-}
-
-function use_tabs()
-{
- # reverse vim: ts=4 sw=4 et
- gsub(/ /, "\t");
-}
-
-function add_br(br)
-{
- BR[BR_count++] = br
-}
-
-# php virtual deps as discussed in devel-en
-function replace_php_virtual_deps()
-{
- pkg = $2
-# if (pkg == "php-program") {
-# $0 = $1 "\t/usr/bin/php"
-# return
-# }
-
- if (pkg ~ /^php-/ && pkg !~ /^php-(pear|common|cli|devel|fcgi|cgi|dirs|program|ZendOptimizer|pecl-)/) {
- sub(/^php-/, "php(", pkg);
- sub(/$/, ")", pkg);
- $2 = pkg
- }
-
- if (pkg ~/^php$/) {
- $2 = "webserver(php)";
- if ($4 ~ /^[0-9]:/) {
- $4 = substr($4, 3);
- }
- }
-
- if (pkg ~/^php4$/) {
- $2 = "webserver(php)";
- if ($4 ~ /^[0-9]:/) {
- $4 = substr($4, 3);
- }
- }
-}
-
-# vim:ts=4:sw=4:et
+++ /dev/null
-#!/bin/ksh
-# -----------
-# Exit codes:
-# 0 - succesful
-# 1 - help displayed
-# 2 - no spec file name in cmdl parameters
-# 3 - spec file not stored in repo
-# 4 - some source, patch or icon files not stored in repo
-# 5 - package build failed
-# 6 - spec file with errors
-# 7 - wrong source in /etc/poldek.conf
-# 8 - Failed installing buildrequirements and subrequirements
-# 9 - Requested tag already exist
-# 10 - Refused to build fractional release
-# 100 - Unknown error (should not happen)
-
-# Notes (todo):
-# - builder -u fetches current version first (well that's okay, how you compare versions if you have no old spec?)
-# - when Icon: field is present, -5 and -a5 doesn't work
-# - builder -R skips installing BR if spec is not present before builder invocation (need to run builder twice)
-
-RCSID='$Id$'
-r=${RCSID#* * }
-rev=${r%% *}
-VERSION="v0.18/$rev"
-VERSIONSTRING="\
-Build package utility from PLD Linux CVS repository
-$VERSION (C) 1999-2007 Free Penguins".
-
-PATH="/bin:/usr/bin:/usr/sbin:/sbin:/usr/X11R6/bin"
-
-COMMAND="build"
-TARGET=""
-
-SPECFILE=""
-BE_VERBOSE=""
-QUIET=""
-CLEAN=""
-DEBUG=""
-NOURLS=""
-NOCVS=""
-NOCVSSPEC=""
-NODIST=""
-NOINIT=""
-UPDATE=""
-ADD5=""
-NO5=""
-ALWAYS_CVSUP=${ALWAYS_CVSUP:-"yes"}
-CVSROOT=""
-
-# user agent when fetching files
-USER_AGENT="PLD/Builder($VERSION)"
-
-# It can be used i.e. in log file naming.
-# See LOGFILE example.
-DATE=`date +%Y-%m-%d_%H-%M-%S`
-
-# Example: LOGFILE='../log.$PACKAGE_NAME'
-# Example: LOGFILE='../LOGS/log.$PACKAGE_NAME.$DATE'
-# Yes, you can use variable name! Note _single_ quotes!
-LOGFILE=''
-
-LOGDIR=""
-LOGDIROK=""
-LOGDIRFAIL=""
-LASTLOG_FILE=""
-
-CHMOD="no"
-CHMOD_MODE="0444"
-RPMOPTS=""
-RPMBUILDOPTS=""
-BCOND=""
-GROUP_BCONDS="no"
-CVSIGNORE_DF="no"
-
-PATCHES=""
-SOURCES=""
-ICONS=""
-PACKAGE_RELEASE=""
-PACKAGE_VERSION=""
-PACKAGE_NAME=""
-ASSUMED_NAME=""
-PROTOCOL="ftp"
-WGET_RETRIES=${MAX_WGET_RETRIES:-0}
-CVS_RETRIES=${MAX_CVS_RETRIES:-1000}
-
-CVSTAG=""
-RES_FILE=""
-CVS_FORCE=""
-
-CVS_SERVER="cvs.pld-linux.org"
-DISTFILES_SERVER="://distfiles.pld-linux.org"
-ATTICDISTFILES_SERVER="://attic-distfiles.pld-linux.org"
-
-DEF_NICE_LEVEL=19
-SCHEDTOOL="auto"
-
-FAIL_IF_NO_SOURCES="yes"
-
-# let get_files skip over files which are present to get those damn files fetched
-SKIP_EXISTING_FILES="no"
-
-TRY_UPGRADE=""
-# should the specfile be restored if upgrade failed?
-REVERT_BROKEN_UPGRADE="yes"
-
-if [ -x /usr/bin/rpm-getdeps ]; then
- FETCH_BUILD_REQUIRES_RPMGETDEPS="yes"
-else
- FETCH_BUILD_REQUIRES_RPMGETDEPS="no"
-fi
-
-# Here we load saved user environment used to
-# predefine options set above, or passed to builder
-# in command line.
-# This one reads global system environment settings:
-if [ -f ~/etc/builderrc ]; then
- . ~/etc/builderrc
-fi
-# And this one cascades settings using user personal
-# builder settings.
-# Example of ~/.builderrc:
-#
-#UPDATE_POLDEK_INDEXES="yes"
-#FETCH_BUILD_REQUIRES="yes"
-#REMOVE_BUILD_REQUIRES="force"
-#GROUP_BCONDS="yes"
-#LOGFILE='../LOGS/log.$PACKAGE_NAME.$DATE'
-#TITLECHANGE=no
-#
-SU_SUDO=""
-if [ -n "$HOME_ETC" ]; then
- USER_CFG="$HOME_ETC/.builderrc"
- BUILDER_MACROS="$HOME_ETC/.builder-rpmmacros"
-else
- USER_CFG=~/.builderrc
- BUILDER_MACROS=~/.builder-rpmmacros
-fi
-
-[ -f "$USER_CFG" ] && . "$USER_CFG"
-
-if [ "$SCHEDTOOL" = "auto" ]; then
- if [ -x /usr/bin/schedtool ] && schedtool -B -e echo >/dev/null; then
- SCHEDTOOL="schedtool -B -e"
- else
- SCHEDTOOL="no"
- fi
-fi
-
-if [ -n "$USE_PROZILLA" ]; then
- GETURI="proz --no-getch -r -P ./ -t$WGET_RETRIES $PROZILLA_OPTS"
- GETURI2="$GETURI"
- OUTFILEOPT="-O"
-elif [ -n "$USE_AXEL" ]; then
- GETURI="axel -a $AXEL_OPTS"
- GETURI2="$GETURI"
- OUTFILEOPT="-o"
-else
- wget --help 2>&1 | grep -q -- ' --no-check-certificate ' && WGET_OPTS="$WGET_OPTS --no-check-certificate"
- wget --help 2>&1 | grep -q -- ' --inet ' && WGET_OPTS="$WGET_OPTS --inet"
- wget --help 2>&1 | grep -q -- ' --retry-connrefused ' && WGET_OPTS="$WGET_OPTS --retry-connrefused"
- WGET_OPTS="$WGET_OPTS --user-agent=$USER_AGENT"
-
- GETURI="wget --passive-ftp -c -nd -t$WGET_RETRIES $WGET_OPTS"
- GETURI2="wget -c -nd -t$WGET_RETRIES $WGET_OPTS"
- OUTFILEOPT="-O"
-fi
-
-GETLOCAL="cp -a"
-
-if (rpm --version 2>&1 | grep -q '4.0.[0-2]'); then
- RPM="rpm"
- RPMBUILD="rpm"
-else
- RPM="rpm"
- RPMBUILD="rpmbuild"
-fi
-
-POLDEK_INDEX_DIR="`$RPM --eval %_rpmdir`/"
-POLDEK_CMD="$SU_SUDO /usr/bin/poldek --noask"
-
-run_poldek()
-{
- RES_FILE=~/tmp/poldek-exit-status.$RANDOM
- if [ -n "$LOGFILE" ]; then
- LOG=`eval echo $LOGFILE`
- if [ -n "$LASTLOG_FILE" ]; then
- echo "LASTLOG=$LOG" > $LASTLOG_FILE
- fi
- (${NICE_COMMAND} ${POLDEK_CMD} `while test $# -gt 0; do echo "$1 ";shift;done` ; echo $? > ${RES_FILE})|tee -a $LOG
- return $exit_pldk
- else
- (${NICE_COMMAND} ${POLDEK_CMD} `while test $# -gt 0; do echo "$1 ";shift;done` ; echo $? > ${RES_FILE}) 1>&2 >/dev/null
- return `cat ${RES_FILE}`
- rm -rf ${RES_FILE}
- fi
-}
-
-#---------------------------------------------
-# functions
-
-usage()
-{
- if [ -n "$DEBUG" ]; then set -xv; fi
- echo "\
-Usage: builder [-D|--debug] [-V|--version] [--short-version] [-a|--as_anon] [-b|-ba|--build]
-[-bb|--build-binary] [-bs|--build-source] [-bc] [-bi] [-bl] [-u|--try-upgrade]
-[{-cf|--cvs-force}] [{-B|--branch} <branch>] [{-d|--cvsroot} <cvsroot>]
-[-g|--get] [-h|--help] [--http] [{-l|--logtofile} <logfile>] [-m|--mr-proper]
-[-q|--quiet] [--date <yyyy-mm-dd> [-r <cvstag>] [{-T|--tag <cvstag>]
-[-Tvs|--tag-version-stable] [-Ts|--tag-stable] [-Tv|--tag-version]
-[{-Tp|--tag-prefix} <prefix>] [{-tt|--test-tag}]
-[-nu|--no-urls] [-v|--verbose] [--opts <rpm opts>] [--short-circuit]
-[--show-bconds] [--with/--without <feature>] [--define <macro> <value>]
-<package>[.spec][:cvstag]
-
--5, --update-md5 - update md5 comments in spec, implies -nd -ncs
--a5, --add-md5 - add md5 comments to URL sources, implies -nc -nd -ncs
--n5, --no-md5 - ignore md5 comments in spec
--D, --debug - enable builder script debugging mode,
--debug - produce rpm debug package (same as --opts -debug)
--V, --version - output builder version string
---short-version - output builder short version
--a, --as_anon - get files via pserver as cvs@$CVS_SERVER,
--b, -ba, --build - get all files from CVS repo or HTTP/FTP and build package
- from <package>.spec,
--bb, --build-binary - get all files from CVS repo or HTTP/FTP and build binary
- only package from <package>.spec,
--bp, --build-prep - execute the %prep phase of <package>.spec,
--bc - execute the %build phase of <package>.spec,
--bi - execute the %install phase of <package>.spec
--bl - execute the %files phase of <package>.spec
--bs, --build-source - get all files from CVS repo or HTTP/FTP and only pack
- them into src.rpm,
---short-circuit - short-circuit build
--B, --branch - add branch
--c, --clean - clean all temporarily created files (in BUILD, SOURCES,
- SPECS and \$RPM_BUILD_ROOT),
--cf, --cvs-force - use -F when tagging (useful when moving branches)
--d <cvsroot>, --cvsroot <cvsroot>
- - setup \$CVSROOT,
---define <macro> <value>
- - define a macro <macro> with value <value>,
---nodeps - rpm won't check any dependences
--g, --get - get <package>.spec and all related files from CVS repo
- or HTTP/FTP,
--h, --help - this message,
---http - use http instead of ftp,
--l <logfile>, --logtofile <logfile>
- - log all to file,
--m, --mr-proper - only remove all files related to spec file and all work
- resources,
--nc, --no-cvs - don't download sources from CVS, if source URL is given,
--ncs, --no-cvs-specs
- - don't check specs in CVS
--nd, --no-distfiles - don't download from distfiles
--nm, --no-mirrors - don't download from mirror, if source URL is given,
--nu, --no-urls - don't try to download from FTP/HTTP location,
--ns, --no-srcs - don't download Sources
--ns0, --no-source0 - don't download Source0
--nn, --no-net - don't download anything from the net
---no-init - don't initialize builder paths (SPECS and SOURCES)
--ske,
---skip-existing-files - skip existing files in get_files
---opts <rpm opts> - additional options for rpm
--q, --quiet - be quiet,
---date yyyy-mm-dd - build package using resources from specified CVS date,
--r <cvstag>, --cvstag <cvstag>
- - build package using resources from specified CVS tag,
--A - build package using CVS resources as any sticky tags/date/kopts being reset.
--R, --fetch-build-requires
- - fetch what is BuildRequired,
--RB, --remove-build-requires
- - remove all you fetched with -R or --fetch-build-requires
- remember, this option requires confirmation,
--FRB, --force-remove-build-requires
- - remove all you fetched with -R or --fetch-build-requires
- remember, this option works without confirmation,
--sd, --source-distfiles - list sources available from distfiles (intended for offline
- operations; does not work when Icon field is present
- but icon file is absent),
--sc, --source-cvs - list sources available from CVS
--sdp, --source-distfiles-paths - list sources available from distfiles -
- paths relative to distfiles directory (intended for offline
- operations; does not work when Icon field is present
- but icon file is absent),
--sf, --source-files - list sources - bare filenames (intended for offline
- operations; does not work when Icon field is present
- but icon file is absent),
--sp, --source-paths - list sources - filenames with full local paths (intended for
- offline operations; does not work when Icon field is present
- but icon file is absent),
--su, --source-urls - list urls - urls to sources and patches
- intended for copying urls with spec with lots of macros in urls
--T <cvstag> , --tag <cvstag>
- - add cvs tag <cvstag> for files,
--Tvs, --tag-version-stable
- - add cvs tags STABLE and NAME-VERSION-RELEASE for files,
--Ts, --tag-stable
- - add cvs tag STABLE for files,
--Tv, --tag-version
- - add cvs tag NAME-VERSION-RELEASE for files,
--Tp, --tag-prefix <prefix>
- - add <prefix> to NAME-VERSION-RELEASE tags,
--tt, --test-tag <prefix>
- - fail if tag is already present,
--ir, --integer-release-only
- - allow only integer and snapshot releases
--v, --verbose - be verbose,
--u, --try-upgrade - check version, and try to upgrade package
--un, --try-upgrade-with-float-version
- - as above, but allow float version
--U, --update - refetch sources, don't use distfiles, and update md5 comments
--Upi, --update-poldek-indexes
- - refresh or make poldek package index files.
--np, --nopatch <patchnumber>
- - don't apply <patchnumber>
---show-bconds - show available conditional builds, which can be used
- - with --with and/or --without switches.
---show-bcond-args - show active bconds, from ~/.bcondrc. this is used by
- ./repackage.sh script. in other words, the output is
- parseable by scripts.
---with/--without <feature>
- - conditional build package depending on %_with_<feature>/
- %_without_<feature> macro switch. You may now use
- --with feat1 feat2 feat3 --without feat4 feat5 --with feat6
- constructions. Set GROUP_BCONDS to yes to make use of it.
---target <platform>, --target=<platform>
- - build for platform <platform>.
---init-rpm-dir - initialize ~/rpm directory structure
-"
-}
-
-update_shell_title() {
- [ -t 1 ] || return
- local len=${COLUMNS:-80}
- local msg=$(echo "$*" | cut -c-$len)
-
- if [ -n "$BE_VERBOSE" ]; then
- echo >&2 "$(date +%s.%N) $*"
- fi
-
- if [ "x$TITLECHANGE" == "xyes" -o "x$TITLECHANGE" == "x" ]; then
- local pkg
- if [ -n "$PACKAGE_NAME" ]; then
- pkg=${PACKAGE_NAME}-${PACKAGE_VERSION}-${PACKAGE_RELEASE}
- else
- pkg=${SPECFILE}
- fi
-
- msg="$pkg: ${SHELL_TITLE_PREFIX:+$SHELL_TITLE_PREFIX }$msg"
- msg="$(echo $msg | tr -d '\n\r')"
- case "$TERM" in
- cygwin|xterm*)
- echo >&2 -ne "\033]1;$msg\007\033]2;$msg\007"
- ;;
- screen*)
- echo >&2 -ne "\033]0;$msg\007"
- ;;
- esac
- fi
-}
-
-# set TARGET from BuildArch: from SPECFILE
-set_spec_target() {
- if [ -n "$SPECFILE" ] && [ -z "$TARGET" ]; then
- tmp=$(awk '/^BuildArch:/ { print $NF}' $SPECFILE)
- if [ "$tmp" ]; then
- target_platform=$(rpm -E '%{_target_vendor}-%{_target_os}%{?_gnu}')
- TARGET="$tmp"
- case "$RPMBUILD" in
- "rpmbuild")
- TARGET_SWITCH="--target ${TARGET}-${target_platform}" ;;
- "rpm")
- TARGET_SWITCH="--target=$TARGET" ;;
- esac
- fi
- fi
-}
-
-# runs rpm with minimal macroset
-minirpm() {
- # we reset macros not to contain macros.build as all the %() macros are
- # executed here, while none of them are actually needed.
- # at the time of this writing macros.build + macros contained 70 "%(...)" macros.
- safe_macrofiles=$(rpm --showrc | awk -F: '/^macrofiles/ { gsub(/^macrofiles[ \t]+:/, "", $0); gsub(/:.*macros.build:/, ":", $0); print $0 } ')
-
- # TODO: move these to /usr/lib/rpm/macros
- cat > $BUILDER_MACROS <<'EOF'
-%x8664 x86_64 amd64 ia32e
-%alt_kernel %{nil}
-%_alt_kernel %{nil}
-%requires_releq_kernel_up %{nil}
-%requires_releq_kernel_smp %{nil}
-%requires_releq_kernel %{nil}
-%requires_releq() %{nil}
-%pyrequires_eq() %{nil}
-%requires_eq() %{nil}
-%requires_eq_to() %{nil}
-%releq_kernel_up ERROR
-%releq_kernel_smp ERROR
-%releq_kernel ERROR
-%kgcc_package ERROR
-%_fontsdir ERROR
-%ruby_version ERROR
-%ruby_ver_requires_eq() %{nil}
-%ruby_mod_ver_requires_eq() %{nil}
-%__php_api_requires() %{nil}
-%php_major_version ERROR
-%php_api_version ERROR
-%py_ver ERROR
-%perl_vendorarch ERROR
-%perl_vendorlib ERROR
-# damn. need it here! - copied from /usr/lib/rpm/macros.build
-%tmpdir %(echo "${TMPDIR:-/tmp}")
-%patchset_source(f:b:) %(
- base=%{-b*}%{!-b*:10000};
- start=$(expr $base + %1);
- end=$(expr $base + %{?2}%{!?2:%{1}});
- # we need to call seq twice as it doesn't allow two formats
- seq -f 'Patch%g:' $start $end > %{tmpdir}/__ps1;
- seq -f '%{-f*}' %1 %{?2}%{!?2:%{1}} > %{tmpdir}/__ps2;
- paste %{tmpdir}/__ps{1,2};
- rm -f %{tmpdir}/__ps{1,2};
-) \
-%{nil}
-EOF
- if [ "$NOINIT" = "yes" ] ; then
- cat >> $BUILDER_MACROS <<'EOF'
-%_specdir ./
-%_sourcedir ./
-EOF
- fi
- eval $RPMBUILD --macros "$safe_macrofiles:$BUILDER_MACROS" $QUIET $RPMOPTS $RPMBUILDOPTS $BCOND $TARGET_SWITCH $* 2>&1
-}
-
-cache_rpm_dump() {
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- update_shell_title "cache_rpm_dump"
- local rpm_dump
- rpm_dump=`
- # what we need from dump is NAME, VERSION, RELEASE and PATCHES/SOURCES.
- dump='%{echo:dummy: PACKAGE_NAME %{name} }%dump'
- case "$RPMBUILD" in
- rpm)
- ARGS='-bp'
- ;;
- rpmbuild)
- ARGS='--nodigest --nosignature --nobuild'
- ;;
- esac
- minirpm $ARGS --define "'prep $dump'" --nodeps $SPECFILE
- `
- if [ $? -gt 0 ]; then
- error=$(echo "$rpm_dump" | sed -ne '/^error:/,$p')
- echo "$error" >&2
- Exit_error err_build_fail
- fi
-
- # make small dump cache
- rpm_dump_cache=`echo "$rpm_dump" | awk '
- $2 ~ /^SOURCEURL/ {print}
- $2 ~ /^PATCHURL/ {print}
- $2 ~ /^nosource/ {print}
- $2 ~ /^PACKAGE_/ {print}
- '`
-
- update_shell_title "cache_rpm_dump: OK!"
-}
-
-rpm_dump() {
- if [ -z "$rpm_dump_cache" ] ; then
- echo "internal error: cache_rpm_dump not called! (missing %prep?)" 1>&2
- fi
- echo "$rpm_dump_cache"
-}
-
-get_icons()
-{
- update_shell_title "get icons"
- ICONS="`awk '/^Icon:/ {print $2}' ${SPECFILE}`"
- if [ -z "$ICONS" ]; then
- return
- fi
-
- rpm_dump_cache="kalasaba" NODIST="yes" get_files $ICONS
-}
-
-parse_spec()
-{
- update_shell_title "parsing specfile"
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- # icons are needed for successful spec parse
- get_icons
-
- cd $SPECS_DIR
- cache_rpm_dump
-
- if [ "$NOSRCS" != "yes" ]; then
- SOURCES="`rpm_dump | awk '/SOURCEURL[0-9]+/ {print $3}'`"
- fi
-
- if (rpm_dump | grep -qEi ":.*nosource.*1"); then
- FAIL_IF_NO_SOURCES="no"
- fi
-
- PATCHES="`rpm_dump | awk '/PATCHURL[0-9]+/ {print $3}'`"
- ICONS="`awk '/^Icon:/ {print $2}' ${SPECFILE}`"
- PACKAGE_NAME=$(rpm_dump | awk '$2 == "PACKAGE_NAME" { print $3; exit}')
- PACKAGE_VERSION=$(rpm_dump | awk '$2 == "PACKAGE_VERSION" { print $3; exit}')
- PACKAGE_RELEASE=$(rpm_dump | awk '$2 == "PACKAGE_RELEASE" { print $3; exit}')
-
- if [ "$PACKAGE_NAME" != "$ASSUMED_NAME" ]; then
- echo "WARNING! Spec name ($ASSUMED_NAME) does not agree with package name ($PACKAGE_NAME)"
- fi
-
- if [ -n "$BE_VERBOSE" ]; then
- echo "- Sources : `nourl $SOURCES`"
- if [ -n "$PATCHES" ]; then
- echo "- Patches : `nourl $PATCHES`"
- else
- echo "- Patches : *no patches needed*"
- fi
- if [ -n "$ICONS" ]; then
- echo "- Icon : `nourl $ICONS`"
- else
- echo "- Icon : *no package icon*"
- fi
- echo "- Name : $PACKAGE_NAME"
- echo "- Version : $PACKAGE_VERSION"
- echo "- Release : $PACKAGE_RELEASE"
- fi
-
- update_shell_title "parse_spec: OK!"
-}
-
-Exit_error()
-{
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- cd "$__PWD"
-
- case "$1" in
- "err_no_spec_in_cmdl" )
- remove_build_requires
- echo "ERROR: spec file name not specified."
- exit 2 ;;
- "err_invalid_cmdline" )
- echo "ERROR: invalid command line arg ($2)."
- exit 2 ;;
- "err_no_spec_in_repo" )
- remove_build_requires
- echo "Error: spec file not stored in CVS repo."
- exit 3 ;;
- "err_no_source_in_repo" )
- remove_build_requires
- echo "Error: some source, patch or icon files not stored in CVS repo. ($2)"
- exit 4 ;;
- "err_build_fail" )
- remove_build_requires
- echo "Error: package build failed. (${2:-no more info})"
- exit 5 ;;
- "err_no_package_data" )
- remove_build_requires
- echo "Error: couldn't get out package name/version/release from spec file."
- exit 6 ;;
- "err_tag_exists" )
- remove_build_requires
- echo "Tag ${2} already exists (spec release: ${3})."
- exit 9 ;;
- "err_fract_rel" )
- remove_build_requires
- echo "Release ${2} not integer and not a snapshot."
- exit 10 ;;
- "err_branch_exists" )
- remove_build_requires
- echo "Tree branch already exists (${2})."
- exit 11 ;;
- "err_acl_deny" )
- remove_build_requires
- echo "Error: conditions reject building this spec (${2})."
- exit 12 ;;
- esac
- echo "Unknown error."
- exit 100
-}
-
-init_builder()
-{
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- if [ "$NOINIT" != "yes" ] ; then
- SOURCE_DIR="`eval $RPM $RPMOPTS --define '"name $ASSUMED_NAME"' --eval '%{_sourcedir}'`"
- SPECS_DIR="`eval $RPM $RPMOPTS --define '"name $ASSUMED_NAME"' --eval '%{_specdir}'`"
- else
- SOURCE_DIR="."
- SPECS_DIR="."
- fi
-
- __PWD="`pwd`"
-}
-
-get_spec()
-{
-
- update_shell_title "get_spec"
-
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- cd "$SPECS_DIR"
- if [ ! -f "$SPECFILE" ]; then
- SPECFILE="`basename $SPECFILE .spec`.spec"
- fi
- if [ "$NOCVSSPEC" != "yes" ]; then
-
- if [ ! -s CVS/Root -a "$NOCVSSPEC" != "yes" ]; then
- echo "Warning: No CVS access defined - using local .spec file"
- NOCVSSPEC="yes"
- fi
-
- cvsup "$SPECFILE" || Exit_error err_no_spec_in_repo
- fi
-
- if [ ! -f "$SPECFILE" ]; then
- Exit_error err_no_spec_in_repo
- fi
-
- if [ "$CHMOD" = "yes" -a -n "$SPECFILE" ]; then
- chmod $CHMOD_MODE $SPECFILE
- fi
- unset OPTIONS
- [ -n "$DONT_PRINT_REVISION" ] || grep -E -m 1 "^#.*Revision:.*Date" $SPECFILE
-
- set_spec_target
-}
-
-find_mirror()
-{
- cd "$SPECS_DIR"
- local url="$1"
- if [ ! -f "mirrors" -a "$NOCVSSPEC" != "yes" ] ; then
- cvs update mirrors >&2
- fi
-
- IFS="|"
- local origin mirror name rest ol prefix
- while read origin mirror name rest; do
- # skip comments and empty lines
- if [ -z "$origin" ] || [[ $origin == \#* ]]; then
- continue
- fi
- ol=`echo -n "$origin"|wc -c`
- prefix="`echo -n "$url" | head -c $ol`"
- if [ "$prefix" = "$origin" ] ; then
- suffix="`echo "$url"|cut -b $((ol+1))-`"
- echo -n "$mirror$suffix"
- return 0
- fi
- done < mirrors
- echo "$url"
-}
-
-# Warning: unpredictable results if same URL used twice
-src_no ()
-{
- cd $SPECS_DIR
- rpm_dump | \
- grep "SOURCEURL[0-9]*[ ]*$1""[ ]*$" | \
- sed -e 's/.*SOURCEURL\([0-9][0-9]*\).*/\1/' | \
- head -n 1 | xargs
-}
-
-src_md5()
-{
- [ "$NO5" = "yes" ] && return
- no=$(src_no "$1")
- [ -z "$no" ] && return
- cd $SPECS_DIR
- local md5
-
- if [ -f additional-md5sums ]; then
- local spec_rev=$(grep $SPECFILE CVS/Entries 2>/dev/null | sed -e s:/$SPECFILE/:: -e s:/.*::)
- if [ -z "$spec_rev" ]; then
- spec_rev="$(head -n 1 $SPECFILE | sed -e 's/.*\$Revision: \([0-9.]*\).*/\1/')"
- fi
- local spec="$SPECFILE[0-9.,]*,$(echo $spec_rev | sed 's/\./\\./g')"
- md5=$(grep -s -v '^#' additional-md5sums | \
- grep -E "[ ]$(basename "$1")[ ]+${spec}([ ,]|\$)" | \
- sed -e 's/^\([0-9a-f]\{32\}\).*/\1/' | \
- grep -E '^[0-9a-f]{32}$')
-
- if [ "$md5" ]; then
- if [ $(echo "$md5" | wc -l) != 1 ] ; then
- echo "$SPECFILE: more then one entry in additional-md5sums for $1" 1>&2
- fi
- echo "$md5" | tail -n 1
- return
- fi
- fi
-
- source_md5=`grep -i "#[ ]*Source$no-md5[ ]*:" $SPECFILE | sed -e 's/.*://'`
- if [ -n "$source_md5" ]; then
- echo $source_md5
- else
- # we have empty SourceX-md5, but it is still possible
- # that we have NoSourceX-md5 AND NoSource: X
- nosource_md5=`grep -i "#[ ]*NoSource$no-md5[ ]*:" $SPECFILE | sed -e 's/.*://'`
- if [ -n "$nosource_md5" -a -n "`grep -i "^NoSource:[ ]*$no$" $SPECFILE`" ] ; then
- echo $nosource_md5
- fi
- fi
-}
-
-distfiles_path ()
-{
- echo "by-md5/$(src_md5 "$1" | sed -e 's|^\(.\)\(.\)|\1/\2/&|')/$(basename "$1")"
-}
-
-distfiles_url ()
-{
- echo "$PROTOCOL$DISTFILES_SERVER/distfiles/$(distfiles_path "$1")"
-}
-
-distfiles_attic_url ()
-{
- echo "$PROTOCOL$ATTICDISTFILES_SERVER/distfiles/Attic/$(distfiles_path "$1")"
-}
-
-good_md5 ()
-{
- md5=$(src_md5 "$1")
- [ "$md5" = "" ] || \
- [ "$md5" = "$(md5sum $(nourl "$1") 2> /dev/null | sed -e 's/ .*//')" ]
-}
-
-good_size ()
-{
- size="$(find $(nourl "$1") -printf "%s" 2>/dev/null)"
- [ -n "$size" -a "$size" -gt 0 ]
-}
-
-cvsignore_df ()
-{
- if [ "$CVSIGNORE_DF" != "yes" ]; then
- return
- fi
- cvsignore=${SOURCE_DIR}/.cvsignore
- if ! grep -q "^$1\$" $cvsignore 2> /dev/null; then
- echo "$1" >> $cvsignore
- fi
-}
-
-cvsup()
-{
- update_shell_title "cvsup"
- local OPTIONS="up "
- if [ -n "$CVSROOT" ]; then
- OPTIONS="-d $CVSROOT $OPTIONS"
- fi
-
- if [ -z "$CVSDATE" -a -z "$CVSTAG" ]; then
- OPTIONS="$OPTIONS -A"
- else
- if [ -n "$CVSDATE" ]; then
- OPTIONS="$OPTIONS -D $CVSDATE"
- fi
- if [ -n "$CVSTAG" ]; then
- OPTIONS="$OPTIONS -r $CVSTAG"
- fi
- fi
-
- local result=1
- local retries_counter=0
- if [ $# = 1 ]; then
- update_shell_title "cvsup: $*"
- else
- update_shell_title "cvsup: $# files"
- fi
- while [ "$result" != "0" -a "$retries_counter" -le "$CVS_RETRIES" ]; do
- retries_counter=$(( $retries_counter + 1 ))
- output=$(LC_ALL=C cvs $OPTIONS "$@" 2>&1)
- result=$?
- [ -n "$output" ] && echo "$output"
- if (echo "$output" | grep -qE "(Cannot connect to|connect to .* failed|Connection reset by peer|Connection timed out|Unknown host)") && [ "$result" -ne "0" -a "$retries_counter" -le "$CVS_RETRIES" ]; then
- echo "Trying again [$*]... ($retries_counter)"
- update_shell_title "cvsup: retry #$retries_counter"
- sleep 2
- continue
- else
- break
- fi
- done
- update_shell_title "cvsup: done!"
- return $result
-}
-
-# returns true if "$1" is ftp, http or https protocol url
-is_url()
-{
- case "$1" in
- ftp://*|http://*|https://*)
- return 0
- ;;
- esac
- return 1
-}
-
-update_md5()
-{
- if [ $# -eq 0 ]; then
- return
- fi
-
- update_shell_title "update md5"
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- cd "$SOURCE_DIR"
-
- # pass 1: check files to be fetched
- local todo
- local need_files
- for i in "$@"; do
- local fp=$(nourl "$i")
- local srcno=$(src_no "$i")
- if [ -n "$ADD5" ]; then
- [ "$fp" = "$i" ] && continue # FIXME what is this check doing?
- grep -qiE '^#[ ]*Source'$srcno'-md5[ ]*:' $SPECS_DIR/$SPECFILE && continue
- else
- grep -qiE '^#[ ]*Source'$srcno'-md5[ ]*:' $SPECS_DIR/$SPECFILE || continue
- fi
- if [ ! -f "$fp" ] || [ $ALWAYS_CVSUP = "yes" ]; then
- need_files="$need_files $i"
- fi
- done
-
- # pass 1a: get needed files
- if [ "$need_files" ]; then
- get_files $need_files
- fi
-
- # pass 2: proceed with md5 adding or updating
- for i in "$@"; do
- local fp=$(nourl "$i")
- local srcno=$(src_no "$i")
- local md5=$(grep -iE '^#[ ]*(No)?Source'$srcno'-md5[ ]*:' $SPECS_DIR/$SPECFILE )
- if [ -n "$ADD5" ] && is_url $i || [ -n "$md5" ]; then
- local tag="Source$srcno-md5"
- if [[ "$md5" == *NoSource* ]]; then
- tag="NoSource$srcno-md5"
- fi
- md5=$(md5sum "$fp" | cut -f1 -d' ')
- echo "Updating $tag ($md5: $fp)."
- perl -i -ne '
- print unless /^\s*#\s*(No)?Source'$srcno'-md5\s*:/i;
- print "# '$tag':\t'$md5'\n" if /^Source'$srcno'\s*:\s+/;
- ' \
- $SPECS_DIR/$SPECFILE
- fi
- done
-}
-
-check_md5()
-{
- update_shell_title "check md5"
-
- for i in "$@"; do
- if good_md5 "$i" && good_size "$i"; then
- continue
- fi
-
- echo "MD5 sum mismatch or 0 size. Use -U to refetch sources,"
- echo "or -5 to update md5 sums, if you're sure files are correct."
- Exit_error err_no_source_in_repo $i
- done
-}
-
-get_files()
-{
- update_shell_title "get_files"
-
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- if [ $# -gt 0 ]; then
- cd "$SOURCE_DIR"
-
- if [ ! -s CVS/Root -a "$NOCVS" != "yes" ]; then
- echo "Warning: No CVS access defined for SOURCES"
- NOCVS="yes"
- fi
-
- local nc=0
- local get_files_cvs=""
- for i in "$@"; do
- nc=$((nc + 1))
- local cvsup=0
- SHELL_TITLE_PREFIX="get_files[$nc/$#]"
- update_shell_title "$i"
- local fp=`nourl "$i"`
- if [ "$SKIP_EXISTING_FILES" = "yes" ] && [ -f "$fp" ]; then
- continue
- fi
-
- FROM_DISTFILES=0
- local srcmd5=$(src_md5 "$i")
-
- # we know if source/patch is present in cvs/distfiles
- # - has md5 (in distfiles)
- # - in cvs... ideas?
-
- # CHECK: local file didn't exist or always cvs up (first) requested.
- if [ ! -f "$fp" ] || [ $ALWAYS_CVSUP = "yes" ]; then
- if echo $i | grep -vE '(http|ftp|https|cvs|svn)://' | grep -qE '\.(gz|bz2)$']; then
- echo "Warning: no URL given for $i"
- fi
-
- if [ -z "$NODIST" ] && [ -n "$srcmd5" ]; then
- if good_md5 "$i" && good_size "$i"; then
- echo "$fp having proper md5sum already exists"
- continue
- fi
- target="$fp"
-
- # prefer mirror over distfiles if there's mirror
- # TODO: build url list and then try each url from the list
- if [ -z "$NOMIRRORS" ] && im=$(find_mirror "$i") && [ "$im" != "$i" ]; then
- url="$im"
- else
- url=$(distfiles_url "$i")
- fi
-
- url_attic=$(distfiles_attic_url "$i")
- FROM_DISTFILES=1
- # is $url local file?
- if [[ "$url" = [./]* ]]; then
- update_shell_title "${GETLOCAL%% *}: $url"
- ${GETLOCAL} $url $target
- else
- if [ -z "$NOMIRRORS" ]; then
- url=$(find_mirror "$url")
- fi
-
- local uri=${url}
- # make shorter message for distfiles urls
- if [[ "$uri" = ${PROTOCOL}${DISTFILES_SERVER}* ]] || [[ "$uri" = ${PROTOCOL}${ATTICDISTFILES_SERVER}* ]]; then
- uri=${uri#${PROTOCOL}${DISTFILES_SERVER}/distfiles/by-md5/?/?/*/}
- uri=${uri#${PROTOCOL}${ATTICDISTFILES_SERVER}/distfiles/by-md5/?/?/*/}
- uri="df: $uri"
- fi
- update_shell_title "${GETURI%% *}: $uri"
- ${GETURI} ${OUTFILEOPT} "$target" "$url" || \
- if [ "`echo $url | grep -E 'ftp://'`" ]; then
- update_shell_title "${GETURI2%% *}: $url"
- ${GETURI2} ${OUTFILEOPT} "$target" "$url"
- fi
- fi
-
- # is it empty file?
- if [ ! -s "$target" ]; then
- rm -f "$target"
- if [ `echo $url_attic | grep -E '^(\.|/)'` ]; then
- update_shell_title "${GETLOCAL%% *}: $url_attic"
- ${GETLOCAL} $url_attic $target
- else
- if [ -z "$NOMIRRORS" ]; then
- url_attic="`find_mirror "$url_attic"`"
- fi
- update_shell_title "${GETURI%% *}: $url_attic"
- ${GETURI} ${OUTFILEOPT} "$target" "$url_attic" || \
- if [ "`echo $url_attic | grep -E 'ftp://'`" ]; then
- update_shell_title "${GETURI2%% *}: $url_attic"
- ${GETURI2} ${OUTFILEOPT} "$target" "$url_attic"
- fi
- fi
- fi
-
- if [ -s "$target" ]; then
- cvsignore_df $target
- else
- rm -f "$target"
- FROM_DISTFILES=0
- fi
- elif [ "$NOCVS" != "yes" -a -z "$srcmd5" ]; then
- if [ $# -gt 1 ]; then
- get_files_cvs="$get_files_cvs $fp"
- update_shell_title "$fp (will cvs up later)"
- cvsup=1
- else
- cvsup $fp
- fi
- fi
-
- if [ -z "$NOURLS" ] && [ ! -f "$fp" -o -n "$UPDATE" ] && [ "`echo $i | grep -E 'ftp://|http://|https://'`" ]; then
- if [ -z "$NOMIRRORS" ]; then
- im="`find_mirror "$i"`"
- else
- im="$i"
- fi
- update_shell_title "${GETURI%% *}: $im"
- ${GETURI} "$im" || \
- if [ "`echo $im | grep -E 'ftp://'`" ]; then
- update_shell_title "${GETURI2%% *}: $im"
- ${GETURI2} "$im"
- fi
- fi
-
- if [ "$cvsup" = 1 ]; then
- continue
- fi
-
- fi
-
- # the md5 check must be moved elsewhere as if we've called from update_md5 the md5 is wrong.
- if [ ! -f "$fp" -a "$FAIL_IF_NO_SOURCES" != "no" ]; then
- Exit_error err_no_source_in_repo $i
- fi
-
- # we check md5 here just only to refetch immediately
- if good_md5 "$i" && good_size "$i"; then
- :
- elif [ "$FROM_DISTFILES" = 1 ]; then
- # wrong md5 from distfiles: remove the file and try again
- # but only once ...
- echo "MD5 sum mismatch. Trying full fetch."
- FROM_DISTFILES=2
- rm -f $target
- update_shell_title "${GETURI%% *}: $url"
- ${GETURI} ${OUTFILEOPT} "$target" "$url" || \
- if [ "`echo $url | grep -E 'ftp://'`" ]; then
- update_shell_title "${GETURI2%% *}: $url"
- ${GETURI2} ${OUTFILEOPT} "$target" "$url"
- fi
- if [ ! -s "$target" ]; then
- rm -f "$target"
- update_shell_title "${GETURI%% *}: $url_attic"
- ${GETURI} ${OUTFILEOPT} "$target" "$url_attic" || \
- if [ "`echo $url_attic | grep -E 'ftp://'`" ]; then
- update_shell_title "${GETURI2%% *}: $url_attic"
- ${GETURI2} ${OUTFILEOPT} "$target" "$url_attic"
- fi
- fi
- test -s "$target" || rm -f "$target"
- fi
- done
- SHELL_TITLE_PREFIX=""
-
- if [ "$get_files_cvs" ]; then
- cvsup $get_files_cvs
- fi
-
- if [ "$CHMOD" = "yes" ]; then
- CHMOD_FILES="`nourl "$@"`"
- if [ -n "$CHMOD_FILES" ]; then
- chmod $CHMOD_MODE $CHMOD_FILES
- fi
- fi
- fi
-}
-
-make_tagver() {
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- # Check whether first character of PACKAGE_NAME is legal for tag name
- if [ -z "${PACKAGE_NAME##[_0-9]*}" -a -z "$TAG_PREFIX" ]; then
- TAG_PREFIX=tag_
- fi
-
- # NOTE: CVS tags may must not contain the characters `$,.:;@'
- TAGVER=$(echo $TAG_PREFIX$PACKAGE_NAME-$PACKAGE_VERSION-$PACKAGE_RELEASE | tr '[.@]' '[_#]')
-
- # Remove #kernel.version_release from TAGVER because tagging sources
- # could occur with different kernel-headers than kernel-headers used at build time.
- # besides, %{_kernel_ver_str} is not expanded.
-
- # TAGVER=auto-ac-madwifi-ng-0-0_20070225_1#%{_kernel_ver_str}
- # TAGVER=auto-ac-madwifi-ng-0-0_20070225_1
-
- TAGVER=${TAGVER%#*}
- echo -n "$TAGVER"
-}
-
-tag_files()
-{
- TAG_FILES="$@"
-
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- echo "Version: $PACKAGE_VERSION"
- echo "Release: $PACKAGE_RELEASE"
-
- local TAGVER
- if [ "$TAG_VERSION" = "yes" ]; then
- TAGVER=`make_tagver`
- echo "CVS tag: $TAGVER"
- fi
- if [ -n "$TAG" ]; then
- echo "CVS tag: $TAG"
- fi
-
- local OPTIONS="tag $CVS_FORCE"
- if [ -n "$CVSROOT" ]; then
- OPTIONS="-d $CVSROOT $OPTIONS"
- fi
-
- cd "$SOURCE_DIR"
- local tag_files
- for i in $TAG_FILES; do
- # don't tag files stored on distfiles
- [ -n "`src_md5 $i`" ] && continue
- local fp=`nourl "$i"`
- if [ -f "$fp" ]; then
- tag_files="$tag_files $fp"
- else
- Exit_error err_no_source_in_repo $i
- fi
- done
-
- if [ "$tag_files" ]; then
- if [ "$TAG_VERSION" = "yes" ]; then
- update_shell_title "tag sources: $TAGVER"
- cvs $OPTIONS $TAGVER $tag_files || exit
- fi
- if [ -n "$TAG" ]; then
- update_shell_title "tag sources: $TAG"
- cvs $OPTIONS $TAG $tag_files || exit
- fi
- fi
-
- cd "$SPECS_DIR"
- if [ "$TAG_VERSION" = "yes" ]; then
- update_shell_title "tag spec: $TAGVER"
- cvs $OPTIONS $TAGVER $SPECFILE || exit
- fi
- if [ -n "$TAG" ]; then
- update_shell_title "tag spec: $TAG"
- cvs $OPTIONS $TAG $SPECFILE || exit
- fi
-}
-
-branch_files()
-{
- TAG=$1
- echo "CVS branch tag: $TAG"
- shift
-
- TAG_FILES="$@"
-
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- local OPTIONS="tag $CVS_FORCE -b"
- if [ -n "$CVSROOT" ]; then
- OPTIONS="-d $CVSROOT $OPTIONS"
- fi
- cd "$SOURCE_DIR"
- local tag_files
- for i in $TAG_FILES; do
- local fp=`nourl "$i"`
- if [ -f "$fp" ]; then
- tag_files="$tag_files $fp"
- else
- Exit_error err_no_source_in_repo $i
- fi
- done
- if [ "$tag_files" ]; then
- cvs $OPTIONS $TAG $tag_files || exit
- fi
-
- cd "$SPECS_DIR"
- cvs $OPTIONS $TAG $SPECFILE || exit
-}
-
-
-# this function should exit early if package can't be built for this arch
-# this avoids unneccessary BR filling.
-check_buildarch() {
- local out ret
- out=$(minirpm --short-circuit -bp --define "'prep exit 0'" --nodeps $SPECFILE 2>&1)
- ret=$?
- if [ $ret -ne 0 ]; then
- echo >&2 "$out"
- exit $ret
- fi
-}
-
-
-build_package()
-{
- update_shell_title "build_package"
- if [ -n "$DEBUG" ]; then
- set -x
- set -v
- fi
-
- cd "$SPECS_DIR"
-
- if [ -n "$TRY_UPGRADE" ]; then
- update_shell_title "build_package: try_upgrade"
- if [ -n "$FLOAT_VERSION" ]; then
- TNOTIFY=`./pldnotify.awk $SPECFILE -n` || exit 1
- else
- TNOTIFY=`./pldnotify.awk $SPECFILE` || exit 1
- fi
-
- TNEWVER=`echo $TNOTIFY | awk '{ match($4,/\[NEW\]/); print $5 }'`
-
- if [ -n "$TNEWVER" ]; then
- TOLDVER=`echo $TNOTIFY | awk '{ print $3; }'`
- echo "New version found, updating spec file to version " $TNEWVER
- if [ "$REVERT_BROKEN_UPGRADE" = "yes" ]; then
- cp -f $SPECFILE $SPECFILE.bak
- fi
- chmod +w $SPECFILE
- eval "perl -pi -e 's/Version:\t"$TOLDVER"/Version:\t"$TNEWVER"/gs' $SPECFILE"
- eval "perl -pi -e 's/Release:\t[1-9]{0,4}/Release:\t0.1/' $SPECFILE"
- parse_spec
- NODIST="yes" get_files $SOURCES $PATCHES
- update_md5 $SOURCES
-
- unset TOLDVER TNEWVER TNOTIFY
- fi
- fi
- cd "$SPECS_DIR"
-
- case "$COMMAND" in
- build )
- BUILD_SWITCH="-ba" ;;
- build-binary )
- BUILD_SWITCH="-bb" ;;
- build-source )
- BUILD_SWITCH="-bs --nodeps" ;;
- build-prep )
- BUILD_SWITCH="-bp --nodeps" ;;
- build-build )
- BUILD_SWITCH="-bc" ;;
- build-install )
- BUILD_SWITCH="-bi" ;;
- build-list )
- BUILD_SWITCH="-bl" ;;
-
- esac
-
- update_shell_title "build_package: $COMMAND"
- if [ -n "$LOGFILE" ]; then
- LOG=`eval echo $LOGFILE`
- if [ -d "$LOG" ]; then
- echo "Log file $LOG is a directory."
- echo "Parse error in the spec?"
- Exit_error err_build_fail
- fi
- if [ -n "$LASTLOG_FILE" ]; then
- echo "LASTLOG=$LOG" > $LASTLOG_FILE
- fi
- RES_FILE=~/tmp/$RPMBUILD-exit-status.$RANDOM
- (time eval ${NICE_COMMAND} $RPMBUILD $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND $TARGET_SWITCH $SPECFILE; echo $? > $RES_FILE) 2>&1 |tee $LOG
- RETVAL=`cat $RES_FILE`
- rm $RES_FILE
- if [ -n "$LOGDIROK" ] && [ -n "$LOGDIRFAIL" ]; then
- if [ "$RETVAL" -eq "0" ]; then
- mv $LOG $LOGDIROK
- else
- mv $LOG $LOGDIRFAIL
- fi
- fi
- else
- eval ${NICE_COMMAND} $RPMBUILD $BUILD_SWITCH -v $QUIET $CLEAN $RPMOPTS $RPMBUILDOPTS $BCOND $TARGET_SWITCH $SPECFILE
- RETVAL=$?
- fi
- if [ "$RETVAL" -ne "0" ]; then
- if [ -n "$TRY_UPGRADE" ]; then
- echo "\n!!! Package with new version cannot be built automagically\n"
- if [ "$REVERT_BROKEN_UPGRADE" = "yes" ]; then
- mv -f $SPECFILE.bak $SPECFILE
- fi
- fi
- Exit_error err_build_fail
- fi
- unset BUILD_SWITCH
-}
-
-nourl()
-{
- echo "$@" | sed 's#\<\(ftp\|http\|https\|cvs\|svn\)://[^ ]*/##g'
-}
-
-install_required_packages()
-{
- run_poldek -vi $1
- return $?
-}
-
-find_spec_bcond() {
- # taken from find-spec-bcond, but with just getting the list
- local SPEC="$1"
- # quick revert hint: '$RPMBUILD --bcond $SPEC'
- awk -F"\n" '
- /^%changelog/ { exit }
- /_with(out)?_[_a-zA-Z0-9]+/{
- match($0, /_with(out)?_[_a-zA-Z0-9]+/);
- print substr($0, RSTART, RLENGTH);
- }
- /^%bcond_with/{
- match($0, /bcond_with(out)?[ \t]+[_a-zA-Z0-9]+/);
- bcond = substr($0, RSTART +5 , RLENGTH -5);
- gsub(/[ \t]+/,"_",bcond);
- print bcond
- }' $SPEC | LC_ALL=C sort -u
-}
-
-process_bcondrc() {
- # expand bconds from ~/.bcondrc
- # The file structure is like gentoo's package.use:
- # ---
- # * -selinux
- # samba -mysql -pgsql
- # w32codec-installer license_agreement
- # php +mysqli
- # ---
- if ([ -f $HOME/.bcondrc ] || ([ -n $HOME_ETC ] && [ -f $HOME_ETC/.bcondrc ])); then
- :
- else
- return
- fi
-
- SN=${SPECFILE%%\.spec}
-
- local bcondrc=$HOME/.bcondrc
- [ -n $HOME_ETC ] && [ -f $HOME_ETC/.bcondrc ] && bcondrc=$HOME_ETC/.bcondrc
-
- local bcond_avail=$(find_spec_bcond $SPECFILE)
-
- while read pkg flags; do
- # ignore comments
- [[ "$pkg" == \#* ]] && continue
-
- # any package or current package?
- if [ "$pkg" = "*" ] || [ "$pkg" = "$PACKAGE_NAME" ] || [ "$pkg" = "$SN" ]; then
- for flag in $flags; do
- local opt=${flag#[+-]}
-
- # use only flags which are in this package.
- if [[ $bcond_avail = *${opt}* ]]; then
- if [[ $flag = -* ]]; then
- if [[ $BCOND != *--with?${opt}* ]]; then
- BCOND="$BCOND --without $opt"
- fi
- else
- if [[ $BCOND != *--without?${opt}* ]]; then
- BCOND="$BCOND --with $opt"
- fi
- fi
- fi
- done
- fi
- done < $bcondrc
- update_shell_title "parse ~/.bcondrc: DONE!"
-}
-
-set_bconds_values()
-{
- update_shell_title "set bcond values"
-
- AVAIL_BCONDS_WITHOUT=""
- AVAIL_BCONDS_WITH=""
- if `grep -q ^%bcond ${SPECFILE}`; then
- BCOND_VERSION="NEW"
- elif `egrep -q ^#\ *_with ${SPECFILE}`; then
- BCOND_VERSION="OLD"
- else
- return
- fi
-
- local bcond_avail=$(find_spec_bcond $SPECFILE)
- process_bcondrc "$SPECFILE"
-
- update_shell_title "parse bconds"
- case "${BCOND_VERSION}" in
- NONE)
- :
- ;;
- OLD)
- echo "Warning: This spec has old style bconds. Fix it || die."
- for opt in `echo "$bcond_avail" | grep ^_without_`
- do
- AVAIL_BCOND_WITHOUT=${opt#_without_}
- if [[ "$BCOND" = *--without?${AVAIL_BCOND_WITHOUT}* ]]; then
- AVAIL_BCONDS_WITHOUT="$AVAIL_BCONDS_WITHOUT <$AVAIL_BCOND_WITHOUT>"
- else
- AVAIL_BCONDS_WITHOUT="$AVAIL_BCONDS_WITHOUT $AVAIL_BCOND_WITHOUT"
- fi
- done
-
- for opt in `echo "$bcond_avail" | grep ^_with_`
- do
- AVAIL_BCOND_WITH=${opt#_with_}
- if [[ "$BCOND" = *--with?${AVAIL_BCOND_WITH}* ]]; then
- AVAIL_BCONDS_WITH="$AVAIL_BCONDS_WITH <$AVAIL_BCOND_WITH>"
- else
- AVAIL_BCONDS_WITH="$AVAIL_BCONDS_WITH $AVAIL_BCOND_WITH"
- fi
- done
- ;;
- NEW)
- local cond_type="" # with || without
- for opt in $bcond_avail; do
- case "$opt" in
- _without)
- cond_type="without"
- ;;
- _with)
- cond_type="with"
- ;;
- _without_*)
- AVAIL_BCOND_WITHOUT=${opt#_without_}
- if [[ "$BCOND" = *--without?${AVAIL_BCOND_WITHOUT}* ]]; then
- AVAIL_BCONDS_WITHOUT="$AVAIL_BCONDS_WITHOUT <$AVAIL_BCOND_WITHOUT>"
- else
- AVAIL_BCONDS_WITHOUT="$AVAIL_BCONDS_WITHOUT $AVAIL_BCOND_WITHOUT"
- fi
- ;;
- _with_*)
- AVAIL_BCOND_WITH=${opt#_with_}
- if [[ "$BCOND" = *--with?${AVAIL_BCOND_WITH}* ]]; then
- AVAIL_BCONDS_WITH="$AVAIL_BCONDS_WITH <$AVAIL_BCOND_WITH>"
- else
- AVAIL_BCONDS_WITH="$AVAIL_BCONDS_WITH $AVAIL_BCOND_WITH"
- fi
- ;;
- *)
- case "$cond_type" in
- with)
- cond_type=''
- AVAIL_BCOND_WITH="$opt"
- if [[ "$BCOND" = *--with?${AVAIL_BCOND_WITH}* ]]; then
- AVAIL_BCONDS_WITH="$AVAIL_BCONDS_WITH <$AVAIL_BCOND_WITH>"
- else
- AVAIL_BCONDS_WITH="$AVAIL_BCONDS_WITH $AVAIL_BCOND_WITH"
- fi
- ;;
- without)
- cond_type=''
- AVAIL_BCOND_WITHOUT="$opt"
- if [[ "$BCOND" = *--without?${AVAIL_BCOND_WITHOUT}* ]]; then
- AVAIL_BCONDS_WITHOUT="$AVAIL_BCONDS_WITHOUT <$AVAIL_BCOND_WITHOUT>"
- else
- AVAIL_BCONDS_WITHOUT="$AVAIL_BCONDS_WITHOUT $AVAIL_BCOND_WITHOUT"
- fi
- ;;
- esac
- ;;
- esac
- done
- ;;
- esac
-}
-
-run_sub_builder()
-{
- package_name="${1}"
- update_shell_title "run_sub_builder $package_name"
- #
- # No i tutaj bym chcia³ zrobiæ sztuczn± inteligencjê, która spróbuje tego
- # pakieta zbudowaæ. Aktualnie niewiele dziala, bo generalnie nie widze do
- # konca algorytmu... Ale damy rade. :) Na razie po prostu sie wyjebie tak samo
- # jakby nie bylo tego kawalka kodu.
- #
- # Update: Poprawi³em parê rzeczy i zaczê³o generowaæ pakiety spoza zadanej listy.
- # Jednym s³owem budowanie niespoldkowanych zale¿no¶ci dzia³a w paru przypadkach.
- #
- #
- # y0shi.
-
- parent_spec_name=''
-
- # Istnieje taki spec? ${package}.spec
- if [ -f "${SPECS_DIR}/${package}.spec" ]; then
- parent_spec_name=${package}.spec
- elif [ -f "${SPECS_DIR}/`echo ${package_name} | sed -e s,-devel.*,,g -e s,-static,,g`.spec" ]; then
- parent_spec_name="`echo ${package_name} | sed -e s,-devel.*,,g -e s,-static,,g`.spec"
- else
- for provides_line in `grep ^Provides:.*$package ${SPECS_DIR} -R`
- do
- echo $provides_line
- done
- fi
-
- if [ "${parent_spec_name}" != "" ]; then
- spawn_sub_builder $parent_spec_name
- fi
- NOT_INSTALLED_PACKAGES="$NOT_INSTALLED_PACKAGES $package_name"
-}
-
-spawn_sub_builder()
-{
- package_name="${1}"
- update_shell_title "spawn_sub_builder $package_name"
-
- sub_builder_opts=''
- if [ "${FETCH_BUILD_REQUIRES}" == "yes" ]; then
- sub_builder_opts="${sub_builder_opts} -R"
- fi
- if [ "${REMOVE_BUILD_REQUIRES}" == "nice" ]; then
- sub_builder_opts="${sub_builder_opts} -RB"
- elif [ "${REMOVE_BUILD_REQUIRES}" == "force" ]; then
- sub_builder_opts="${sub_builder_opts} -FRB"
- fi
- if [ "${UPDATE_POLDEK_INDEXES}" == "yes" ]; then
- sub_builder_opts="${sub_builder_opts} -Upi"
- fi
-
- cd "${SPECS_DIR}"
- ./builder ${sub_builder_opts} "$@"
-}
-
-remove_build_requires()
-{
- if [ "$INSTALLED_PACKAGES" != "" ]; then
- case "$REMOVE_BUILD_REQUIRES" in
- "force")
- run_poldek --noask -ve $INSTALLED_PACKAGES
- ;;
- "nice")
- run_poldek --ask -ve $INSTALLED_PACKAGES
- ;;
- *)
- echo You may want to manually remove following BuildRequires fetched:
- echo $INSTALLED_PACKAGES
- echo Try poldek -e \`cat `pwd`/.${SPECFILE}_INSTALLED_PACKAGES\`
- ;;
- esac
- fi
-}
-
-display_bconds()
-{
- if [ "$AVAIL_BCONDS_WITH" != "" ] || [ "$AVAIL_BCONDS_WITHOUT" != "" ]; then
- if [ "$BCOND" != "" ]; then
- echo -ne "\nBuilding $SPECFILE with the following conditional flags:\n"
- echo -ne "$BCOND"
- else
- echo -ne "\nNo conditional flags passed"
- fi
- echo -ne "\n\nfrom available:\n"
- echo -ne "--with :\t$AVAIL_BCONDS_WITH\n--without:\t$AVAIL_BCONDS_WITHOUT\n\n"
- fi
-}
-
-display_branches()
-{
- if [ "$NOCVSSPEC" != "yes" ]; then
- echo -ne "Available branches: "
- cvs status -v "${SPECFILE}" | awk '!/Sticky Tag:/ && /\(branch:/ { print $1 } ' | xargs
- fi
-}
-
-# checks a given list of packages/files/provides agains current rpmdb.
-# outputs all dependencies whcih current rpmdb doesn't satisfy.
-# input can be either STDIN or parameters
-_rpm_prov_check()
-{
- local DEPS
-
- if [ "$#" -gt 0 ]; then
- DEPS="$@"
- else
- DEPS=$(cat)
- fi
-
- DEPS=$(rpm -q --whatprovides $DEPS 2>&1 | awk '/^(error:|no package provides)/ { print }')
-
- # packages
- echo "$DEPS" | awk '/^no package provides/ { print $NF }'
-
- # other deps (files)
- echo "$DEPS" | awk -F: '/^error:.*No such file/{o = $2; gsub("^ file ", "", o); print o}'
-}
-
-# checks if given package/files/provides exists in rpmdb.
-# inout can be either stdin or parameters
-# returns packages wchi hare present in the rpmdb
-_rpm_cnfl_check()
-{
- local DEPS
-
- if [ "$#" -gt 0 ]; then
- DEPS="$@"
- else
- DEPS=$(cat)
- fi
-
- rpm -q --whatprovides $DEPS 2>/dev/null | awk '!/no package provides/ { print }'
-}
-
-fetch_build_requires()
-{
- if [ "${FETCH_BUILD_REQUIRES}" = "yes" ]; then
- update_shell_title "fetch build requires"
- if [ "$FETCH_BUILD_REQUIRES_RPMGETDEPS" = "yes" ]; then
- # TODO: Conflicts list doesn't check versions
- local CNFL=$(rpm-getdeps $BCOND $SPECFILE 2> /dev/null | awk '/^\-/ { print $3 } ' | _rpm_cnfl_check | xargs)
- local DEPS=$(rpm-getdeps $BCOND $SPECFILE 2> /dev/null | awk '/^\+/ { print $3 } ' | _rpm_prov_check | xargs)
-
- if [ -n "$CNFL" ] || [ -n "$DEPS" ]; then
- echo "fetch builderequires: install $DEPS; remove $CNFL"
- update_shell_title "poldek: install $DEPS; remove $CNFL"
- $SU_SUDO /usr/bin/poldek -q --update || $SU_SUDO /usr/bin/poldek -q --upa
- fi
- if [ -n "$CNFL" ]; then
- update_shell_title "uninstall conflicting packages: $CNFL"
- echo "Trying to uninstall conflicting packages ($CNFL):"
- $SU_SUDO /usr/bin/poldek --noask --nofollow -ev $CNFL
- fi
-
- while [ "$DEPS" ]; do
- update_shell_title "install deps: $DEPS"
- echo "Trying to install dependencies ($DEPS):"
- local log=.${SPECFILE}_poldek.log
- $SU_SUDO /usr/bin/poldek --caplookup -uGq $DEPS | tee $log
- failed=$(awk -F: '/^error:/{print $2}' $log)
- rm -f $log
- local ok
- if [ -n "$failed" ]; then
- for package in $failed; do
- # FIXME: sanitise, deps could be not .spec files
- spawn_sub_builder -bb $package && ok="$ok $package"
- done
- DEPS="$ok"
- else
- DEPS=""
- fi
- done
- return
- fi
-
- echo -ne "\nAll packages installed by fetch_build_requires() are written to:\n"
- echo -ne "`pwd`/.${SPECFILE}_INSTALLED_PACKAGES\n"
- echo -ne "\nIf anything fails, you may get rid of them by executing:\n"
- echo "poldek -e \`cat `pwd`/.${SPECFILE}_INSTALLED_PACKAGES\`\n\n"
- echo > `pwd`/.${SPECFILE}_INSTALLED_PACKAGES
- for package_item in `cat $SPECFILE|grep -B100000 ^%changelog|grep -v ^#|grep BuildRequires|grep -v ^-|sed -e "s/^.*BuildRequires://g"|awk '{print $1}'|sed -e s,perl\(,perl-,g -e s,::,-,g -e s,\(.*\),,g -e s,%{,,g -e s,},,g|grep -v OpenGL-devel|sed -e s,sh-utils,coreutils,g -e s,fileutils,coreutils,g -e s,textutils,coreutils,g -e s,kgcc_package,gcc,g -e s,\),,g`
- do
- package_item="`echo $package_item|sed -e s,rpmbuild,rpm-build,g |sed -e s,__perl,perl,g |sed -e s,gasp,binutils-gasp,g -e s,binutils-binutils,binutils,g -e s,apxs,apache,g|sed -e s,apache\(EAPI\)-devel,apache-devel,g -e s,kernel-headers\(netfilter\),kernel-headers,g -e s,awk,mawk,g -e s,mmawk,mawk,g -e s,motif,openmotif,g -e s,openopenmotif,openmotif,g`"
- GO="yes"
- package=`basename "$package_item"|sed -e "s/}$//g"`
- COND_ARCH_TST="`cat $SPECFILE|grep -B1 BuildRequires|grep -B1 $package|grep ifarch|sed -e "s/^.*ifarch//g"`"
- mach=`uname -m`
-
- COND_TST=`cat $SPECFILE|grep BuildRequires|grep "$package"`
- if `echo $COND_TST|grep -q '^BuildRequires:'`; then
- if [ "$COND_ARCH_TST" != "" ] && [ "`echo $COND_ARCH_TST|sed -e "s/i.86/ix86/g"`" != "`echo $mach|sed -e "s/i.86/ix86/g"`" ]; then
- GO="yes"
- fi
- # bcond:
- else
- COND_NAME=`echo $COND_TST|sed -e s,:BuildRequires:.*$,,g`
- GO=""
- # %{without}
- if `echo $COND_TST|grep -q 'without_'`; then
- COND_NAME=`echo $COND_NAME|sed -e s,^.*without_,,g`
- if `echo $COND_TST|grep -q !`; then
- COND_STATE="with"
- else
- COND_STATE="wout"
- fi
- COND_WITH=`echo $AVAIL_BCONDS_WITH|grep "<$COND_NAME>"`
- COND_WITHOUT=`echo $AVAIL_BCONDS_WITHOUT|grep "<$COND_NAME>"`
- if [ -n "$COND_WITHOUT" ] || [ -z "$COND_WITH" ]; then
- COND_ARGV="wout"
- else
- COND_ARGV="with"
- fi
- # %{with}
- elif `echo $COND_TST|grep -q 'with_'`; then
- COND_NAME=`echo $COND_NAME|sed -e s,^.*with_,,g`
- if `echo $COND_TST|grep -q !`; then
- COND_STATE="wout"
- else
- COND_STATE="with"
- fi
- COND_WITH=`echo $AVAIL_BCONDS_WITH|grep "<$COND_NAME>"`
- COND_WITHOUT=`echo $AVAIL_BCONDS_WITHOUT|grep "<$COND_NAME>"`
- if [ -n "$COND_WITH" ] || [ -z "$COND_WITHOUT" ]; then
- COND_ARGV="with"
- else
- COND_ARGV="wout"
- fi
- fi
- RESULT="${COND_STATE}-${COND_ARGV}"
- case "$RESULT" in
- "with-wout" | "wout-with" )
- GO=""
- ;;
- "wout-wout" | "with-with" )
- GO="yes"
- ;;
- * )
- echo "Action '$RESULT' was not defined for package '$package_item'"
- GO="yes"
- ;;
- esac
- fi
-
- if [ "$GO" = "yes" ]; then
- if [ "`rpm -q $package|sed -e "s/$package.*/$package/g"`" != "$package" ]; then
- echo "Testing if $package has subrequirements..."
- run_poldek -t -i $package --dumpn=".$package-req.txt"
- if [ -f ".$package-req.txt" ]; then
- for package_name in `cat ".$package-req.txt"|grep -v ^#`
- do
- if [ "$package_name" = "$package" ]; then
- echo -ne "Installing BuildRequired package:\t$package_name\n"
- update_shell_title "Installing BuildRequired package: ${package_name}"
- install_required_packages $package
- else
- echo -ne "Installing (sub)Required package:\t$package_name\n"
- update_shell_title "Installing (sub)Required package: ${package_name}"
- install_required_packages $package_name
- fi
- case $? in
- 0)
- INSTALLED_PACKAGES="$package_name $INSTALLED_PACKAGES"
- echo $package_name >> `pwd`/.${SPECFILE}_INSTALLED_PACKAGES
- ;;
- *)
- echo "Attempting to run spawn sub - builder..."
- echo -ne "Package installation failed:\t$package_name\n"
- run_sub_builder $package_name
- if [ $? -eq 0 ]; then
- install_required_packages $package_name
- case $? in
- 0)
- INSTALLED_PACKAGES="$package_name $INSTALLED_PACKAGES"
- echo $package_name >> `pwd`/.${SPECFILE}_INSTALLED_PACKAGES
- ;;
- *)
- NOT_INSTALLED_PACKAGES="$package_name $NOT_INSTALLED_PACKAGES"
- ;;
- esac
- fi
- ;;
- esac
- done
- rm -f ".$package-req.txt"
- else
- echo "Attempting to run spawn sub - builder..."
- echo -ne "Package installation failed:\t$package\n"
- run_sub_builder $package
- if [ $? -eq 0 ]; then
- install_required_packages $package
- case $? in
- 0)
- INSTALLED_PACKAGES="$package_name $INSTALLED_PACKAGES"
- echo $package_name >> `pwd`/.${SPECFILE}_INSTALLED_PACKAGES
- ;;
- *)
- NOT_INSTALLED_PACKAGES="$package_name $NOT_INSTALLED_PACKAGES"
- ;;
- esac
- fi
- fi
- else
- echo "Package $package is already installed. BuildRequirement satisfied."
- fi
- fi
- done
- if [ "$NOT_INSTALLED_PACKAGES" != "" ]; then
- echo "Unable to install following packages and their dependencies:"
- for pkg in "$NOT_INSTALLED_PACKAGES"
- do
- echo $pkg
- done
- remove_build_requires
- exit 8
- fi
- fi
-}
-
-init_rpm_dir() {
-
- TOP_DIR="`eval $RPM $RPMOPTS --eval '%{_topdir}'`"
- CVSROOT=":pserver:cvs@$CVS_SERVER:/cvsroot"
-
- mkdir -p $TOP_DIR/{RPMS,BUILD,SRPMS}
- cd $TOP_DIR
- cvs -d $CVSROOT co SOURCES/.cvsignore SPECS/{mirrors,adapter{,.awk},fetchsrc_request,builder,{relup,compile,repackage}.sh}
-
- init_builder
-
- echo "To checkout *all* .spec files:"
- echo "- remove $SPECS_DIR/CVS/Entries.Static"
- echo "- run cvs up in $SPECS_DIR dir"
-
- echo ""
- echo "To commit with your developer account:"
- echo "- edit $SPECS_DIR/CVS/Root"
- echo "- edit $SOURCE_DIR/CVS/Root"
-}
-
-#---------------------------------------------
-# main()
-
-if [ $# = 0 ]; then
- usage
- exit 1
-fi
-
-while [ $# -gt 0 ]; do
- case "${1}" in
- -5 | --update-md5)
- COMMAND="update_md5"
- NODIST="yes"
- NOCVSSPEC="yes"
- shift ;;
- -a5 | --add-md5 )
- COMMAND="update_md5"
- NODIST="yes"
- NOCVS="yes"
- NOCVSSPEC="yes"
- ADD5="yes"
- shift ;;
- -n5 | --no-md5 )
- NO5="yes"
- shift ;;
- -D | --debug )
- DEBUG="yes"; shift ;;
- -V | --version )
- COMMAND="version"; shift ;;
- --short-version )
- COMMAND="short-version"; shift ;;
- -a | --as_anon )
- CVSROOT=":pserver:cvs@$CVS_SERVER:/cvsroot"; shift ;;
- -b | -ba | --build )
- COMMAND="build"; shift ;;
- -bb | --build-binary )
- COMMAND="build-binary"; shift ;;
- -bc )
- COMMAND="build-build"; shift ;;
- -bi )
- COMMAND="build-install"; shift ;;
- -bl )
- COMMAND="build-list"; shift ;;
- -bp | --build-prep )
- COMMAND="build-prep"; shift ;;
- -bs | --build-source )
- COMMAND="build-source"; shift ;;
- -B | --branch )
- COMMAND="branch"; shift; TAG="${1}"; shift;;
- -c | --clean )
- CLEAN="--clean --rmspec --rmsource"; shift ;;
- -cf | --cvs-force )
- CVS_FORCE="-F"; shift;;
- -d | --cvsroot )
- shift; CVSROOT="${1}"; shift ;;
- -g | --get )
- COMMAND="get"; shift ;;
- -h | --help )
- COMMAND="usage"; shift ;;
- --http )
- PROTOCOL="http"; shift ;;
- -l | --logtofile )
- shift; LOGFILE="${1}"; shift ;;
- -ni| --nice )
- shift; DEF_NICE_LEVEL=${1}; shift ;;
- -ske | --skip-existing-files)
- SKIP_EXISTING_FILES="yes"; shift ;;
- -m | --mr-proper )
- COMMAND="mr-proper"; shift ;;
- -nc | --no-cvs )
- NOCVS="yes"; shift ;;
- -ncs | --no-cvs-specs )
- NOCVSSPEC="yes"; shift ;;
- -nd | --no-distfiles )
- NODIST="yes"; shift ;;
- -nm | --no-mirrors )
- NOMIRRORS="yes"; shift ;;
- -nu | --no-urls )
- NOURLS="yes"; shift ;;
- -ns | --no-srcs )
- NOSRCS="yes"; shift ;;
- -ns0 | --no-source0 )
- NOSOURCE0="yes"; shift ;;
- -nn | --no-net )
- NOCVS="yes"
- NOCVSSPEC="yes"
- NODIST="yes"
- NOMIRRORS="yes"
- NOURLS="yes"
- NOSRCS="yes"
- ALWAYS_CVSUP="no"
- shift;;
- --no-init )
- NOINIT="yes"
- shift;;
- --opts )
- shift; RPMOPTS="${RPMOPTS} ${1}"; shift ;;
- --nopatch | -np )
- shift; RPMOPTS="${RPMOPTS} --define \"patch${1} : ignoring patch${1}; exit 1; \""; shift ;;
- --with | --without )
- case $GROUP_BCONDS in
- "yes")
- COND=${1}
- shift
- while ! `echo ${1}|grep -qE '(^-|spec)'`
- do
- BCOND="$BCOND $COND $1"
- shift
- done;;
- "no")
- if [[ "$2" = *,* ]]; then
- for a in $(echo "$2" | tr , ' '); do
- BCOND="$BCOND $1 $a"
- done
- else
- BCOND="$BCOND $1 $2"
- fi
- shift 2 ;;
- esac
- ;;
- --target )
- shift; TARGET="${1}"; shift ;;
- --target=* )
- TARGET=$(echo "${1}" | sed 's/^--target=//'); shift ;;
- -q | --quiet )
- QUIET="--quiet"; shift ;;
- --date )
- CVSDATE="${2}"; shift 2 ;;
- -r | --cvstag )
- shift; CVSTAG="${1}"; shift ;;
- -A)
- shift; CVSTAG="HEAD"; ;;
- -R | --fetch-build-requires)
- FETCH_BUILD_REQUIRES="yes"
- NOT_INSTALLED_PACKAGES=
- shift ;;
- -RB | --remove-build-requires)
- REMOVE_BUILD_REQUIRES="nice"
- shift ;;
- -FRB | --force-remove-build-requires)
- REMOVE_BUILD_REQUIRES="force"
- shift ;;
- -sc | --sources-cvs)
- COMMAND="list-sources-cvs"
- shift ;;
- -sd | --sources-distfiles)
- COMMAND="list-sources-distfiles"
- shift ;;
- -sdp | --sources-distfiles-paths)
- COMMAND="list-sources-distfiles-paths"
- shift ;;
- -sf | --sources-files)
- COMMAND="list-sources-files"
- shift ;;
- -sp | --sources-paths)
- COMMAND="list-sources-local-paths"
- shift ;;
- -su | --sources-urls)
- COMMAND="list-sources-urls"
- shift ;;
- -Tvs | --tag-version-stable )
- COMMAND="tag"
- TAG="STABLE"
- TAG_VERSION="yes"
- shift;;
- -Ts | --tag-stable )
- COMMAND="tag"
- TAG="STABLE"
- TAG_VERSION="no"
- shift;;
- -Tv | --tag-version )
- COMMAND="tag"
- TAG=""
- TAG_VERSION="yes"
- shift;;
- -Tp | --tag-prefix )
- TAG_PREFIX="$2"
- shift 2;;
- -tt | --test-tag )
- TEST_TAG="yes"
- shift;;
- -T | --tag )
- COMMAND="tag"
- shift
- TAG="$1"
- TAG_VERSION="no"
- shift;;
- -ir | --integer-release-only )
- INTEGER_RELEASE="yes"
- shift;;
- -U | --update )
- COMMAND="update_md5"
- UPDATE="yes"
- NOCVSSPEC="yes"
- NODIST="yes"
- shift ;;
- -Upi | --update-poldek-indexes )
- UPDATE_POLDEK_INDEXES="yes"
- shift ;;
- --init-rpm-dir)
- COMMAND="init_rpm_dir"
- shift ;;
- -u | --try-upgrade )
- TRY_UPGRADE="1"; shift ;;
- -un | --try-upgrade-with-float-version )
- TRY_UPGRADE="1"; FLOAT_VERSION="1"; shift ;;
- -v | --verbose )
- BE_VERBOSE="1"; shift ;;
- --define)
- shift
- MACRO="${1}"
- shift
- if echo "${MACRO}" | grep -q '\W'; then
- RPMOPTS="${RPMOPTS} --define \"${MACRO}\""
- else
- VALUE="${1}"
- shift
- RPMOPTS="${RPMOPTS} --define \"${MACRO} ${VALUE}\""
- fi
- ;;
- --short-circuit)
- RPMBUILDOPTS="${RPMBUILDOPTS} --short-circuit"
- shift
- ;;
- --show-bconds | -show-bconds | -print-bconds | --print-bconds | -display-bconds | --display-bconds )
- COMMAND="show_bconds"
- shift
- ;;
- --show-bcond-args)
- COMMAND="show_bcond_args"
- shift
- ;;
- --nodeps)
- shift
- RPMOPTS="${RPMOPTS} --nodeps"
- ;;
- -debug)
- RPMBUILDOPTS="${RPMBUILDOPTS} -debug"; shift
- ;;
- -* )
- Exit_error err_invalid_cmdline "$1"
- ;;
- * )
- SPECFILE="${1}"
- # check if specname was passed as specname:cvstag
- if [ "${SPECFILE##*:}" != "${SPECFILE}" ]; then
- CVSTAG="${SPECFILE##*:}"
- SPECFILE="${SPECFILE%%:*}"
- fi
- ASSUMED_NAME="${SPECFILE%%.spec}"
- shift
- esac
-done
-
-if [ -f CVS/Entries ] && [ -z "$CVSTAG" ]; then
- CVSTAG=$(awk -vSPECFILE="${SPECFILE%.spec}.spec" -F/ '$2 == SPECFILE && $6 ~ /^T/{print substr($6, 2)}' CVS/Entries)
- if [ "$CVSTAG" ]; then
- echo >&2 "builder: Stick tag $CVSTAG active. Use -r TAGNAME to override."
- fi
-elif [ "$CVSTAG" = "HEAD" ]; then
- # assume -r HEAD is same as -A
- CVSTAG=""
-fi
-
-if [ -n "$DEBUG" ]; then
- set -x
- set -v
-fi
-
-if [ -n "$TARGET" ]; then
- case "$RPMBUILD" in
- "rpmbuild")
- TARGET_SWITCH="--target $TARGET" ;;
- "rpm")
- TARGET_SWITCH="--target=$TARGET" ;;
- esac
-fi
-
-if [ "$SCHEDTOOL" != "no" ]; then
- NICE_COMMAND="$SCHEDTOOL"
-else
- NICE_COMMAND="nice -n ${DEF_NICE_LEVEL}"
-fi
-
-update_shell_title "$COMMAND"
-case "$COMMAND" in
- "show_bconds")
- init_builder
- if [ -n "$SPECFILE" ]; then
- get_spec > /dev/null
- parse_spec
- set_bconds_values
- display_bconds
- fi
- ;;
- "show_bcond_args")
- init_builder
- if [ -n "$SPECFILE" ]; then
- get_spec > /dev/null
- parse_spec
- set_bconds_values
- echo "$BCOND"
- fi
- ;;
- "build" | "build-binary" | "build-source" | "build-prep" | "build-build" | "build-install" | "build-list")
- init_builder
- if [ -n "$SPECFILE" ]; then
- get_spec
- parse_spec
- set_bconds_values
- display_bconds
- display_branches
- if [ "$COMMAND" != "build-source" ]; then
- check_buildarch
- fi
- fetch_build_requires
- if [ "$INTEGER_RELEASE" = "yes" ]; then
- echo "Checking release $PACKAGE_RELEASE..."
- if echo $PACKAGE_RELEASE | grep -q '^[^.]*\.[^.]*$' 2>/dev/null ; then
- Exit_error err_fract_rel "$PACKAGE_RELEASE"
- fi
- fi
-
- # ./builder -bs test.spec -r AC-branch -Tp auto-ac- -tt
- if [ -n "$TEST_TAG" ]; then
- # - do not allow utf8 encoded specs on AC-branch
- if [ "$CVSTAG" = "AC-branch-disabled" ]; then
- local t
- t=$(grep '^Summary(.*\.UTF-8):' $SPECFILE)
- if [ "$t" ]; then
- Exit_error err_acl_deny "UTF-8 .specs not allowed on $CVSTAG"
- fi
- fi
-
- local TAGVER=`make_tagver`
- echo "Searching for tag $TAGVER..."
- TAGREL=$(cvs status -v $SPECFILE | grep -E "^[[:space:]]*${TAGVER}[[[:space:]]" | sed -e 's#.*(revision: ##g' -e 's#).*##g')
- if [ -n "$TAGREL" ]; then
- Exit_error err_tag_exists "$TAGVER" "$TAGREL"
- fi
-
- # - do not allow to build from HEAD when XX-branch exists
- TREE_PREFIX=$(echo "$TAG_PREFIX" | sed -e 's#^auto-\([a-zA-Z]\+\)-.*#\1#g')
- if [ "$TREE_PREFIX" != "$TAG_PREFIX" ]; then
- TAG_BRANCH="${TREE_PREFIX}-branch"
- TAG_STATUS=$(cvs status -v $SPECFILE | grep -Ei "${TAG_BRANCH}.+(branch: [0-9.]+)")
- if [ -n "$TAG_STATUS" -a "$CVSTAG" = "HEAD" ]; then
- Exit_error err_branch_exists "$TAG_STATUS"
- fi
- fi
-
- fi
-
- if [ -n "$NOSOURCE0" ] ; then
- SOURCES=`echo $SOURCES | xargs | sed -e 's/[^ ]*//'`
- fi
- get_files $SOURCES $PATCHES
- check_md5 $SOURCES
- build_package
- if [ "$UPDATE_POLDEK_INDEXES" = "yes" -a "$COMMAND" != "build-prep" ]; then
- run_poldek --sdir="${POLDEK_INDEX_DIR}" --mkidxz
- fi
- remove_build_requires
- else
- Exit_error err_no_spec_in_cmdl
- fi
- ;;
- "branch" )
- init_builder
- if [ -n "$SPECFILE" ]; then
- get_spec
- parse_spec
- # don't fetch sources from remote locations
- new_SOURCES=""
- for file in $SOURCES; do
- [ -n "`src_md5 $file`" ] && continue
- new_SOURCES="$new_SOURCES $file"
- done
- SOURCES="$new_SOURCES"
- get_files $SOURCES $PATCHES
- check_md5 $SOURCES
- branch_files $TAG $SOURCES $PATCHES $ICONS
- else
- Exit_error err_no_spec_in_cmdl
- fi
- ;;
- "get" )
- init_builder
- if [ -n "$SPECFILE" ]; then
- get_spec
- parse_spec
-
- if [ -n "$NOSOURCE0" ] ; then
- SOURCES=`echo $SOURCES | xargs | sed -e 's/[^ ]*//'`
- fi
- get_files $SOURCES $PATCHES
- check_md5 $SOURCES
- else
- Exit_error err_no_spec_in_cmdl
- fi
- ;;
- "update_md5" )
- init_builder
- if [ -n "$SPECFILE" ]; then
- get_spec
- parse_spec
-
- if [ -n "$NOSOURCE0" ] ; then
- SOURCES=`echo $SOURCES | xargs | sed -e 's/[^ ]*//'`
- fi
- update_md5 $SOURCES
- else
- Exit_error err_no_spec_in_cmdl
- fi
- ;;
- "tag" )
- NOURLS=1
- NODIST="yes"
- init_builder
- if [ -n "$SPECFILE" ]; then
- get_spec
- parse_spec
-
- # don't fetch sources from remote locations
- new_SOURCES=""
- for file in $SOURCES; do
- [ -n "`src_md5 $file`" ] && continue
- new_SOURCES="$new_SOURCES $file"
- done
- SOURCES="$new_SOURCES"
- get_files $SOURCES $PATCHES
- check_md5 $SOURCES
- tag_files $SOURCES $PATCHES $ICONS
- else
- Exit_error err_no_spec_in_cmdl
- fi
- ;;
- "mr-proper" )
- $RPM --clean --rmsource --rmspec --force --nodeps $SPECFILE
- ;;
- "list-sources-files" )
- init_builder
- NOCVSSPEC="yes"
- DONT_PRINT_REVISION="yes"
- get_spec
- parse_spec
- for SAP in $SOURCES $PATCHES; do
- echo $SAP | awk '{gsub(/.*\//,"") ; print}'
- done
- ;;
- "list-sources-urls" )
- init_builder
- NOCVSSPEC="yes"
- DONT_PRINT_REVISION="yes"
- get_spec
- parse_spec
- SAPS="$SOURCES $PATCHES"
- for SAP in $SAPS ; do
- echo $SAP
- done
- ;;
- "list-sources-local-paths" )
- init_builder
- NOCVSSPEC="yes"
- DONT_PRINT_REVISION="yes"
- get_spec
- parse_spec
- for SAP in $SOURCES $PATCHES; do
- echo $SOURCE_DIR/$(echo $SAP | awk '{gsub(/.*\//,"") ; print }')
- done
- ;;
- "list-sources-distfiles-paths" )
- init_builder
- NOCVSSPEC="yes"
- DONT_PRINT_REVISION="yes"
- get_spec
- parse_spec
- for SAP in $SOURCES $PATCHES; do
- if [ -n "$(src_md5 "$SAP")" ]; then
- distfiles_path "$SAP"
- fi
- done
- ;;
- "list-sources-distfiles" )
- init_builder
- NOCVSSPEC="yes"
- DONT_PRINT_REVISION="yes"
- get_spec
- parse_spec
- for SAP in $SOURCES $PATCHES; do
- if [ -n "$(src_md5 "$SAP")" ]; then
- distfiles_url "$SAP"
- fi
- done
- ;;
- "list-sources-cvs" )
- init_builder
-# NOCVSSPEC="yes"
- DONT_PRINT_REVISION="yes"
- get_spec
- parse_spec
- for SAP in $SOURCES $PATCHES; do
- if [ -z "$(src_md5 "$SAP")" ]; then
- echo $SAP | awk '{gsub(/.*\//,"") ; print}'
- fi
- done
- ;;
- "init_rpm_dir")
- init_rpm_dir
- ;;
- "usage" )
- usage
- ;;
- "short-version" )
- echo "$VERSION"
- ;;
- "version" )
- echo "$VERSIONSTRING"
- ;;
-esac
-if [ -f "`pwd`/.${SPECFILE}_INSTALLED_PACKAGES" -a "$REMOVE_BUILD_REQUIRES" != "" ]; then
- rm "`pwd`/.${SPECFILE}_INSTALLED_PACKAGES"
-fi
-cd "$__PWD"
-
-# vi:syntax=sh:ts=4:sw=4:noet
+++ /dev/null
-*** sequence/sequence.c.orig 27 Sep 2006 14:56:17 -0000 12.39
---- sequence/sequence.c 26 Oct 2006 07:36:05 -0000
-***************
-*** 228,233 ****
---- 228,236 ----
- seq->seq_data.ulen = seq->seq_data.size = sizeof(seq->seq_record);
- seq->seq_rp = &seq->seq_record;
-
-+ if ((ret = __dbt_usercopy(dbenv, keyp)) != 0)
-+ goto err;
-+
- memset(&seq->seq_key, 0, sizeof(DBT));
- if ((ret = __os_malloc(dbenv, keyp->size, &seq->seq_key.data)) != 0)
- goto err;
-***************
-*** 365,370 ****
---- 368,374 ----
- ret = t_ret;
-
- ENV_LEAVE(dbenv, ip);
-+ __dbt_userfree(dbenv, keyp, NULL, NULL);
- return (ret);
- }
-
-***************
-*** 764,769 ****
---- 768,777 ----
- DBT *key;
- {
- SEQ_ILLEGAL_BEFORE_OPEN(seq, "DB_SEQUENCE->get_key");
-+
-+ if (F_ISSET(key, DB_DBT_USERCOPY))
-+ return (__db_retcopy(seq->seq_dbp->dbenv, key,
-+ seq->seq_key.data, seq->seq_key.size, NULL, 0));
-
- key->data = seq->seq_key.data;
- key->size = key->ulen = seq->seq_key.size;
+++ /dev/null
-*** rep/rep_method.c.orig Fri Oct 20 08:34:06 2006
---- rep/rep_method.c Fri Oct 27 12:09:04 2006
-***************
-*** 526,535 ****
- * will allow the client to either perform recovery or
- * simply join in.
- */
-! if (announce)
- (void)__rep_send_message(dbenv,
- DB_EID_BROADCAST, REP_NEWCLIENT, NULL, dbt, 0, 0);
-! else
- (void)__rep_send_message(dbenv,
- DB_EID_BROADCAST, REP_ALIVE_REQ, NULL, NULL, 0, 0);
- }
---- 526,537 ----
- * will allow the client to either perform recovery or
- * simply join in.
- */
-! if (announce) {
-! if ((ret = __dbt_usercopy(dbenv, dbt)) != 0)
-! goto err;
- (void)__rep_send_message(dbenv,
- DB_EID_BROADCAST, REP_NEWCLIENT, NULL, dbt, 0, 0);
-! } else
- (void)__rep_send_message(dbenv,
- DB_EID_BROADCAST, REP_ALIVE_REQ, NULL, NULL, 0, 0);
- }
-***************
-*** 553,558 ****
---- 555,561 ----
- }
- if (pending_event != DB_EVENT_NO_SUCH_EVENT)
- DB_EVENT(dbenv, pending_event, NULL);
-+ __dbt_userfree(dbenv, dbt, NULL, NULL);
- return (ret);
- }
-
-*** rep/rep_record.c.orig Fri Oct 20 08:34:06 2006
---- rep/rep_record.c Mon Nov 13 10:46:29 2006
-***************
-*** 163,168 ****
---- 163,176 ----
- return (EINVAL);
- }
-
-+ if ((ret = __dbt_usercopy(dbenv, control)) != 0 ||
-+ (ret = __dbt_usercopy(dbenv, rec)) != 0) {
-+ __dbt_userfree(dbenv, control, rec, NULL);
-+ __db_errx(dbenv,
-+ "DB_ENV->rep_process_message: error retrieving DBT contents");
-+ return ret;
-+ }
-+
- ret = 0;
- db_rep = dbenv->rep_handle;
- rep = db_rep->region;
-***************
-*** 621,626 ****
---- 629,635 ----
- *ret_lsnp = rp->lsn;
- ret = DB_REP_NOTPERM;
- }
-+ __dbt_userfree(dbenv, control, rec, NULL);
- return (ret);
- }
-
+++ /dev/null
-#!/bin/awk -f
-# $Revision$, $Date$
-# TODO: "SourceXDownload" support (use given URLs if present instead of cut-down SourceX URLs)
-
-function fixedsub(s1,s2,t, ind) {
-# substitutes fixed strings (not regexps)
- if (ind = index(t,s1)) {
- t = substr(t, 1, ind-1) s2 substr(t, ind+length(s1))
- }
- return t
-}
-
-function ispre(s) {
- if ((s~"pre")||(s~"PRE")||(s~"beta")||(s~"BETA")||(s~"alpha")||(s~"ALPHA")||(s~"rc")||(s~"RC")) {
- if (DEBUG) print "pre-version"
- return 1
- } else {
- return 0
- }
-}
-
-function compare_ver(v1,v2) {
-# compares version numbers
- while (match(v1,/[a-zA-Z][0-9]|[0-9][a-zA-Z]/))
- v1=(substr(v1,1,RSTART) "." substr(v1,RSTART+RLENGTH-1))
- while (match(v2,/[a-zA-Z][0-9]|[0-9][a-zA-Z]/))
- v2=(substr(v2,1,RSTART) "." substr(v2,RSTART+RLENGTH-1))
- sub("^0*","",v1)
- sub("^0*","",v2)
- gsub("\.0*",".",v1)
- gsub("\.0*",".",v2)
- if (DEBUG) print "v1 == " v1
- if (DEBUG) print "v2 == " v2
- count=split(v1,v1a,"\.")
- count2=split(v2,v2a,"\.")
-
- if (count<count2) mincount=count
- else mincount=count2
-
- for (i=1; i<=mincount; i++) {
- if (v1a[i]=="") v1a[i]=0
- if (v2a[i]=="") v2a[i]=0
- if (DEBUG) print "i == " i
- if (DEBUG) print "v1[i] == " v1a[i]
- if (DEBUG) print "v2[i] == " v2a[i]
- if ((v1a[i]~/[0-9]/)&&(v2a[i]~/[0-9]/)) {
- if (length(v2a[i])>length(v1a[i]))
- return 1
- else if (v2a[i]>v1a[i])
- return 1
- else if (length(v1a[i])>length(v2a[i]))
- return 0
- else if (v1a[i]>v2a[i])
- return 0
- } else if ((v1a[i]~/[A-Za-z]/)&&(v2a[i]~/[A-Za-z]/)) {
- if (v2a[i]>v1a[i])
- return 1
- else if (v1a[i]>v2a[i])
- return 0
- } else if (ispre(v1a[i]) == 1)
- return 1
- else
- return 0
- }
- if ((count2==mincount)&&(count!=count2)) {
- for (i=count2+1; i<=count; i++)
- if (ispre(v1a[i]) == 1)
- return 1
- return 0
- } else if (count!=count2) {
- for (i=count+1; i<=count2; i++)
- if (ispre(v2a[i]) == 1)
- return 0
- return 1
- }
- return 0
-}
-
-function compare_ver_dec(v1,v2) {
-# compares version numbers as decimal floats
- while (match(v1,/[0-9][a-zA-Z]/))
- v1=(substr(v1,1,RSTART) "." substr(v1,RSTART+RLENGTH-1))
- while (match(v2,/[0-9][a-zA-Z]/))
- v2=(substr(v2,1,RSTART) "." substr(v2,RSTART+RLENGTH-1))
- sub("^0*","",v1)
- sub("^0*","",v2)
- if (DEBUG) print "v1 == " v1
- if (DEBUG) print "v2 == " v2
- count=split(v1,v1a,"\.")
- count2=split(v2,v2a,"\.")
-
- if (count<count2) mincount=count
- else mincount=count2
-
- for (i=1; i<=mincount; i++) {
- if (v1a[i]=="") v1a[i]=0
- if (v2a[i]=="") v2a[i]=0
- if (DEBUG) print "i == " i
- if (DEBUG) print "v1[i] == " v1a[i]
- if (DEBUG) print "v2[i] == " v2a[i]
- if ((v1a[i]~/[0-9]/)&&(v2a[i]~/[0-9]/)) {
- if (i==2) {
- if (0+("." v2a[i])>0+("." v1a[i]))
- return 1
- else if (0+("." v1a[i])>0+("." v2a[i]))
- return 0
- } else {
- if (length(v2a[i])>length(v1a[i]))
- return 1
- else if (v2a[i]>v1a[i])
- return 1
- else if (length(v1a[i])>length(v2a[i]))
- return 0
- else if (v1a[i]>v2a[i])
- return 0
- }
- } else if ((v1a[i]~/[A-Za-z]/)&&(v2a[i]~/[A-Za-z]/)) {
- if (v2a[i]>v1a[i])
- return 1
- else if (v1a[i]>v2a[i])
- return 0
- } else if (ispre(v1a[i]) == 1)
- return 1
- else
- return 0
- }
- if ((count2==mincount)&&(count!=count2)) {
- for (i=count2+1; i<=count; i++)
- if (ispre(v1a[i]) == 1)
- return 1
- return 0
- } else if (count!=count2) {
- for (i=count+1; i<=count2; i++)
- if (ispre(v2a[i]) == 1)
- return 0
- return 1
- }
- return 0
-}
-
-function get_links(url, errno,link,oneline,retval,odp,wholeodp,lowerodp,tmpfile) {
-# get all <A HREF=..> tags from specified URL
- "mktemp /tmp/XXXXXX" | getline tmpfile
- close("mktemp /tmp/XXXXXX")
-
- if (url ~ /^http:\/\/(download|dl).(sf|sourceforge).net\//) {
- gsub("^http://(download|dl).(sf|sourceforge).net/", "", url)
- url = "http://prdownloads.sourceforge.net/" substr(url, 1, 1) "/" substr(url, 1, 2) "/" url
- if (DEBUG) print "sf url, mungled url to: " url
- }
-
- if (DEBUG) print "Retrieving: " url
- errno=system("wget -O - \"" url "\" -t 3 -T 300 --passive-ftp > " tmpfile " 2>/dev/null" )
-
- if (errno==0) {
- while (getline oneline < tmpfile)
- wholeodp=(wholeodp " " oneline)
- if ( DEBUG ) print "Response: " wholeodp
- }
-
- close(tmpfile)
- system("rm -f " tmpfile)
- urldir=url;
- sub(/[^\/]+$/,"",urldir)
-
- if ( errno==0) {
- while (match(wholeodp, /<([aA]|[fF][rR][aA][mM][eE])[ \t][^>]*>/) > 0) {
- odp=substr(wholeodp,RSTART,RLENGTH);
- wholeodp=substr(wholeodp,RSTART+RLENGTH);
-
- lowerodp=tolower(odp);
- if (lowerodp ~ /<frame[ \t]/) {
- sub(/[sS][rR][cC]=[ \t]*/,"src=",odp);
- match(odp,/src="[^"]+"/)
- newurl=substr(odp,RSTART+5,RLENGTH-6)
- if (DEBUG) print "Frame: " newurl
- if (newurl !~ /\//) {
- newurl=(urldir newurl)
- if (DEBUG) print "Frame->: " newurl
- }
- retval=(retval " " get_links(newurl))
- } else if (lowerodp ~ /href=[ \t]*"[^"]*"/) {
- sub(/[hH][rR][eE][fF]=[ \t]*"/,"href=\"",odp)
- match(odp,/href="[^"]*"/)
- link=substr(odp,RSTART,RLENGTH)
- odp=substr(odp,1,RSTART) substr(odp,RSTART+RLENGTH)
- link=substr(link,7,length(link)-7)
- retval=(retval " " link)
- if (DEBUG) print "href(\"\"): " link
- } else if (lowerodp ~ /href=[ \t]*'[^']*'/) {
- sub(/[hH][rR][eE][fF]=[ \t]*'/,"href='",odp)
- match(odp,/href='[^']*'/)
- link=substr(odp,RSTART,RLENGTH)
- odp=substr(odp,1,RSTART) substr(odp,RSTART+RLENGTH)
- link=substr(link,7,length(link)-7)
- retval=(retval " " link)
- if (DEBUG) print "href(''): " link
- } else if (lowerodp ~ /href=[ \t]*[^ \t>]*/) {
- sub(/[hH][rR][eE][fF]=[ \t]*/,"href=",odp)
- match(odp,/href=[^ \t>]*/)
- link=substr(odp,RSTART,RLENGTH)
- odp=substr(odp,1,RSTART) substr(odp,RSTART+RLENGTH)
- link=substr(link,6,length(link)-5)
- retval=(retval " " link)
- if (DEBUG) print "href(): " link
- } else {
- # <a ...> but not href - skip
- if (DEBUG) print "skipping <a > without href: " odp
- }
- }
- } else {
- retval=("WGET ERROR: " errno)
- }
-
-
- if (DEBUG) print "Returning: " retval
- return retval
-}
-
-function subst_defines(var,defs) {
-# substitute all possible RPM macros
- while ((var ~ /%{.*}/) || (var ~ /%[A-Za-z0-9_]+/)) {
- oldvar=var
- for (j in defs) {
- gsub("%{" j "}", defs[j], var)
- gsub("%" j , defs[j], var)
- }
- if (var==oldvar) {
- if ( DEBUG ) for (i in defs) print i " == " defs[i]
- return var
- }
- }
- return var
-}
-
-function find_mirror(url) {
-
- while (succ = (getline line < "mirrors")) {
- if (succ==-1) { return url }
- nf=split(line,fields,"|")
- if (nf>1){
- origin=fields[1]
- mirror=fields[2]
- mname=fields[3]
- prefix=substr(url,1,length(origin))
- if (prefix==origin){
- if ( DEBUG ) print "Mirror fount at " mname
- close("mirrors")
- return mirror substr(url,length(origin)+1)
- }
- }
- }
-
- return url
-}
-
-function process_source(number,lurl,name,version) {
-# fetches file list, and compares version numbers
- if ( DEBUG ) print "Processing " lurl
-
- if ( index(lurl,version)==0 ) {
- if (DEBUG) print "There is no version number."
- return 0
- }
-
- sub("://",":",lurl)
- sub("/",":/",lurl)
- gsub("[^/]*$",":&",lurl)
- split(lurl,url,":")
- acc=url[1]
- host=url[2]
- dir=url[3]
- filename=url[4]
-
- if (index(dir,version)) {
- dir=substr(dir,1,index(dir,version)-1)
- sub("[^/]*$","",dir)
- sub("(\.tar\.(bz|bz2|gz)|zip)$","",filename)
- if ( DEBUG ) print "Will check a directory: " dir
- if ( DEBUG ) print "and a file: " filename
- }
-
- filenameexp=filename
- gsub("\+","\\+",filenameexp)
- sub(version,"[A-Za-z0-9.]+",filenameexp)
- gsub("\.","\\.",filenameexp)
- if ( DEBUG ) print "Expression: " filenameexp
- match(filename,version)
- prever=substr(filename,1,RSTART-1)
- postver=substr(filename,RSTART+RLENGTH)
- if ( DEBUG ) print "Before number: " prever
- if ( DEBUG ) print "and after: " postver
- newurl=find_mirror(acc "://" host dir)
- #print acc "://" host dir
- #newurl=url[1]"://"url[2]url[3]url[4]
- #newurl=acc "://" host dir filename
- if ( DEBUG ) print "Looking at " newurl
-
- references=0
- finished=0
- oldversion=version
- odp=get_links(newurl)
- if( odp ~ "ERROR: ") {
- print name "(" number ") " odp
- } else {
- if (DEBUG) print "WebPage downloaded"
- c=split(odp,linki)
- for (nr=1; nr<=c; nr++) {
- addr=linki[nr]
- if (DEBUG) print "Found link: " addr
- if ((addr ~ filenameexp) && !(addr ~ "[-_.0-9A-Za-z~]" filenameexp)) {
- match(addr,filenameexp)
- newfilename=substr(addr,RSTART,RLENGTH)
- if (DEBUG) print "Hypothetical new: " newfilename
- newfilename=fixedsub(prever,"",newfilename)
- newfilename=fixedsub(postver,"",newfilename)
- if (DEBUG) print "Version: " newfilename
- if (newfilename ~ /\.(pkg|bin|binary|built)$/) continue
- if (NUMERIC) {
- if ( compare_ver_dec(version, newfilename)==1 ) {
- if (DEBUG) print "Yes, there is new one"
- version=newfilename
- finished=1
- }
- } else if ( compare_ver(version, newfilename)==1 ) {
- if (DEBUG) print "Yes, there is new one"
- version=newfilename
- finished=1
- }
- }
- }
- if (finished==0)
- print name "(" number ") seems ok: " oldversion
- else
- print name "(" number ") [OLD] " oldversion " [NEW] " version
- }
-}
-
-# upgrade check for pear package using PEAR CLI
-function pear_upgrade(name, ver) {
- pname = name;
- sub(/^php-pear-/, "", pname);
-
- pearcmd = "pear remote-info " pname " | awk '/^Latest/{print $NF}'"
- if (DEBUG) {
- print "pearcmd: " pearcmd
- }
- pearcmd | getline nver
- close(pearcmd)
-
- if (compare_ver(ver, nver)) {
- print name " [OLD] " ver " [NEW] " nver
- } else {
- print name " seems ok: " ver
- }
-
- return
-}
-
-function process_data(name,ver,rel,src) {
- if (name ~ /^php-pear-/) {
- return pear_upgrade(name, ver);
- }
-
-# this function checks if substitutions were valid, and if true:
-# processes each URL and tries to get current file list
- for (i in src) {
- if ( src[i] !~ /%{.*}/ && src[i] !~ /%[A-Za-z0-9_]/ ) {
- if ( DEBUG ) print "Source: " src[i]
- process_source(i,src[i],name,ver)
- } else {
- print FNAME ":" i ": impossible substitution: " src[i]
- }
- }
-}
-
-BEGIN {
- # if U want to use DEBUG, run script with "-v DEBUG=1"
- # or uncomment the line below
- # DEBUG = 1
-
- errno=system("wget --help > /dev/null 2>&1")
- if (errno) {
- print "No wget installed!"
- exit 1
- }
- if (ARGC>=3 && ARGV[2]=="-n") {
- NUMERIC=1
- for (i=3; i<ARGC; i++) ARGV[i-1]=ARGV[i]
- ARGC=ARGC-1
- }
-}
-
-FNR==1 {
- if ( ARGIND != 1 ) {
- process_data(NAME,VER,REL,SRC)
- NAME="" ; VER="" ; REL=""
- for (i in DEFS) delete DEFS[i]
- for (i in SRC) delete SRC[i]
- }
- FNAME=FILENAME
-}
-
-/^[Uu][Rr][Ll]:/&&(URL=="") { URL=subst_defines($2,DEFS) ; DEFS["url"]=URL }
-/^[Nn]ame:/&&(NAME=="") { NAME=subst_defines($2,DEFS) ; DEFS["name"]=NAME }
-/^[Vv]ersion:/&&(VER=="") { VER=subst_defines($2,DEFS) ; DEFS["version"]=VER }
-/^[Rr]elease:/&&(REL=="") { REL=subst_defines($2,DEFS) ; DEFS["release"]=REL }
-/^[Ss]ource[0-9]*:/ { if (/(ftp|http):\/\//) SRC[FNR]=subst_defines($2,DEFS) }
-/%define/ { DEFS[$2]=subst_defines($3,DEFS) }
-
-END {
- process_data(NAME,VER,REL,SRC)
-}
+++ /dev/null
-Index: depends.c
-===================================================================
-RCS file: /cvs/devel/rpm/lib/depends.c,v
-retrieving revision 1.325.2.78
-diff -u -b -B -w -p -r1.325.2.78 depends.c
---- rpm/lib/depends.c 16 May 2007 11:47:44 -0000 1.325.2.78
-+++ rpm/lib/depends.c 22 May 2007 11:41:02 -0000
-@@ -1264,12 +1264,12 @@ static int checkPackageDeps(rpmts ts, co
- * Adding: check name/provides dep against each conflict match,
- * Erasing: check name/provides/filename dep against each requiredby match.
- * @param ts transaction set
-- * @param dep dependency name
-+ * @param depName dependency name
- * @param mi rpm database iterator
- * @param adding dependency is from added package set?
- * @return 0 no problems found
- */
--static int checkPackageSet(rpmts ts, const char * dep,
-+static int checkPackageSet(rpmts ts, const char * depName,
- /*@only@*/ /*@null@*/ rpmdbMatchIterator mi, int adding)
- /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
- /*@modifies ts, mi, rpmGlobalMacroContext, fileSystem, internalState @*/
-@@ -1307,7 +1307,7 @@ static int checkPackageSet(rpmts ts, con
-
- rc = checkPackageDeps(ts, pkgNEVRA,
- requires, conflicts, dirnames, linktos,
-- dep, tscolor, adding);
-+ depName, tscolor, adding);
-
- linktos = rpmdsFree(linktos);
- dirnames = rpmdsFree(dirnames);
-@@ -1328,10 +1328,10 @@ static int checkPackageSet(rpmts ts, con
- /**
- * Check to-be-erased dependencies against installed requires.
- * @param ts transaction set
-- * @param dep requires name
-+ * @param depName requires name
- * @return 0 no problems found
- */
--static int checkDependentPackages(rpmts ts, const char * dep)
-+static int checkDependentPackages(rpmts ts, const char * depName)
- /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
- /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/
- {
-@@ -1340,8 +1340,8 @@ static int checkDependentPackages(rpmts
- /* XXX rpmdb can be closed here, avoid error msg. */
- if (rpmtsGetRdb(ts) != NULL) {
- rpmdbMatchIterator mi;
-- mi = rpmtsInitIterator(ts, RPMTAG_REQUIRENAME, dep, 0);
-- rc = checkPackageSet(ts, dep, mi, 0);
-+ mi = rpmtsInitIterator(ts, RPMTAG_REQUIRENAME, depName, 0);
-+ rc = checkPackageSet(ts, depName, mi, 0);
- }
- return rc;
- }
-@@ -1349,10 +1349,10 @@ static int checkDependentPackages(rpmts
- /**
- * Check to-be-added dependencies against installed conflicts.
- * @param ts transaction set
-- * @param dep conflicts name
-+ * @param depName conflicts name
- * @return 0 no problems found
- */
--static int checkDependentConflicts(rpmts ts, const char * dep)
-+static int checkDependentConflicts(rpmts ts, const char * depName)
- /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
- /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/
- {
-@@ -1361,8 +1361,8 @@ static int checkDependentConflicts(rpmts
- /* XXX rpmdb can be closed here, avoid error msg. */
- if (rpmtsGetRdb(ts) != NULL) {
- rpmdbMatchIterator mi;
-- mi = rpmtsInitIterator(ts, RPMTAG_CONFLICTNAME, dep, 0);
-- rc = checkPackageSet(ts, dep, mi, 1);
-+ mi = rpmtsInitIterator(ts, RPMTAG_CONFLICTNAME, depName, 0);
-+ rc = checkPackageSet(ts, depName, mi, 1);
- }
-
- return rc;
-@@ -2277,6 +2277,7 @@ assert(newOrderCount == ts->orderCount);
-
- int rpmtsCheck(rpmts ts)
- {
-+ const char * depName = NULL;;
- rpmdepFlags depFlags = rpmtsDFlags(ts);
- uint_32 tscolor = rpmtsColor(ts);
- rpmdbMatchIterator mi = NULL;
-@@ -2331,17 +2332,15 @@ int rpmtsCheck(rpmts ts)
- provides = rpmdsInit(provides);
- if (provides != NULL)
- while (rpmdsNext(provides) >= 0) {
-- const char * Name;
--
-- if ((Name = rpmdsN(provides)) == NULL)
-- /*@innercontinue@*/ continue; /* XXX can't happen */
-+ depName = _free(depName);
-+ depName = xstrdup(rpmdsN(provides));
-
- #ifdef NOTYET
- if (rpmdsNSType(provides) == RPMNS_TYPE_ENVVAR) {
- const char * EVR = rpmdsEVR(provides);
- if (rpmdsNegateRC(provides, 0))
- EVR = NULL;
-- rc = envPut(Name, EVR);
-+ rc = envPut(depName, EVR);
- if (!rc)
- /*@innercontinue@*/ continue;
- /*@innerbreak@*/ break;
-@@ -2349,7 +2348,7 @@ int rpmtsCheck(rpmts ts)
- #endif
-
- /* Adding: check provides key against conflicts matches. */
-- if (!checkDependentConflicts(ts, Name))
-+ if (!checkDependentConflicts(ts, depName))
- /*@innercontinue@*/ continue;
- rc = 1;
- /*@innerbreak@*/ break;
-@@ -2377,13 +2376,11 @@ int rpmtsCheck(rpmts ts)
- provides = rpmdsInit(provides);
- if (provides != NULL)
- while (rpmdsNext(provides) >= 0) {
-- const char * Name;
--
-- if ((Name = rpmdsN(provides)) == NULL)
-- /*@innercontinue@*/ continue; /* XXX can't happen */
-+ depName = _free(depName);
-+ depName = xstrdup(rpmdsN(provides));
-
- /* Erasing: check provides against requiredby matches. */
-- if (!checkDependentPackages(ts, Name))
-+ if (!checkDependentPackages(ts, depName))
- /*@innercontinue@*/ continue;
- rc = 1;
- /*@innerbreak@*/ break;
-@@ -2395,10 +2392,10 @@ int rpmtsCheck(rpmts ts)
- fi = rpmteFI(p, RPMTAG_BASENAMES);
- fi = rpmfiInit(fi, 0);
- while (rpmfiNext(fi) >= 0) {
-- const char * fn = rpmfiFN(fi);
--
-+ depName = _free(depName);
-+ depName = xstrdup(rpmfiFN(fi));
- /* Erasing: check filename against requiredby matches. */
-- if (!checkDependentPackages(ts, fn))
-+ if (!checkDependentPackages(ts, depName))
- /*@innercontinue@*/ continue;
- rc = 1;
- /*@innerbreak@*/ break;
-@@ -2429,6 +2426,7 @@ int rpmtsCheck(rpmts ts)
- exit:
- mi = rpmdbFreeIterator(mi);
- pi = rpmtsiFree(pi);
-+ depName = _free(depName);
-
- (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_CHECK), 0);
-
-diff -Nur rpm-4.4.2.orig/build/Makefile.am rpm-4.4.2.as_needed-fix/build/Makefile.am
---- rpm-4.4.2.orig/build/Makefile.am 2006-08-04 22:17:16.000000000 +0200
-+++ rpm-4.4.2.as_needed-fix/build/Makefile.am 2006-08-04 22:17:43.000000000 +0200
-@@ -33,6 +33,7 @@
+diff -urN rpm-4.4.9.org/build/Makefile.am rpm-4.4.9/build/Makefile.am
+--- rpm-4.4.9.org/build/Makefile.am 2007-05-19 14:44:43.000000000 +0200
++++ rpm-4.4.9/build/Makefile.am 2007-11-15 01:51:35.501378544 +0100
+@@ -37,6 +37,7 @@
$(top_builddir)/lib/librpm.la \
$(top_builddir)/rpmdb/librpmdb.la \
$(top_builddir)/rpmio/librpmio.la \
+ @WITH_MAGIC_LIB@ \
@WITH_LIBELF_LIB@
- rpmfile.h:
+ if HAVE_LD_VERSION_SCRIPT
+diff -urN rpm-4.4.9.org/lib/Makefile.am rpm-4.4.9/lib/Makefile.am
+--- rpm-4.4.9.org/lib/Makefile.am 2007-05-19 13:54:06.000000000 +0200
++++ rpm-4.4.9/lib/Makefile.am 2007-11-15 01:52:19.806906700 +0100
+@@ -46,6 +46,7 @@
+ librpm_la_LDFLAGS = -no-undefined -release $(LT_CURRENT).$(LT_REVISION) $(LDFLAGS) \
+ $(top_builddir)/rpmdb/librpmdb.la \
+ $(top_builddir)/rpmio/librpmio.la \
++ @WITH_MAGIC_LIB@ \
+ @WITH_POPT_LIB@ \
+ @WITH_SELINUX_LIB@ \
+ @LTLIBINTL@
+++ /dev/null
---- rpm-4.1/rpmqv.c.sc Thu Sep 19 11:32:08 2002
-+++ rpm-4.1/rpmqv.c Thu Sep 19 11:38:45 2002
-@@ -685,6 +685,8 @@
- case 'b':
- ba->buildAmount |= RPMBUILD_PACKAGEBINARY;
- ba->buildAmount |= RPMBUILD_CLEAN;
-+ if ((ba->buildChar == 'b') && ba->shortCircuit)
-+ /*@innerbreak@*/ break;
- /*@fallthrough@*/
- case 'i':
- ba->buildAmount |= RPMBUILD_INSTALL;
-diff -Nura rpm-4.3/doc/pl/rpmbuild.8 rpm-4.3.aft/doc/pl/rpmbuild.8
---- rpm-4.3/doc/pl/rpmbuild.8 2004-05-20 14:13:22.000000000 +0200
-+++ rpm-4.3.aft/doc/pl/rpmbuild.8 2004-05-20 14:10:43.000000000 +0200
-@@ -145,7 +145,8 @@
- .TP
- \fB--short-circuit\fR
- Przechodzi wprost do podanego etapu (tzn. pomija wszystkie etapy
--prowadz±ce do podanego). Prawid³owe tylko z \fB-bc\fR i \fB-bi\fR.
-+prowadz±ce do podanego). Prawid³owe tylko z \fB-bc\fR, \fB-bi\fR
-+i \fB-bb\fR (-bb --short-circuit odnosi siê do PLD i jest niezalecane).
- .TP
- \fB--sign\fR
- Osadza w pakiecie sygnaturê GPG. Sygnatura ta mo¿e byæ u¿ywana do
-diff -Nura rpm-4.3/doc/rpmbuild.8 rpm-4.3.aft/doc/rpmbuild.8
---- rpm-4.3/doc/rpmbuild.8 2004-05-20 14:13:22.000000000 +0200
-+++ rpm-4.3.aft/doc/rpmbuild.8 2004-05-20 14:10:13.000000000 +0200
-@@ -167,8 +167,9 @@
- .TP
- \fB--short-circuit\fR
- Skip straight to specified stage (i.e., skip all stages leading
--up to the specified stage). Only valid with \fB-bc\fR
--and \fB-bi\fR.
-+up to the specified stage). Only valid with \fB-bc\fR, \fB-bi\fR
-+and \fB-bb\fR (note: -bb in conjunction with --short-circuit is
-+PLD-specific and not recommended).
- .TP
- \fB--sign\fR
- Embed a GPG signature in the package. This signature can be used
+++ /dev/null
-https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=146549
-
---- rpm-4.4.2/rpmio/rpmsq.c.deadlock 2005-07-13 12:47:03.000000000 +0200
-+++ rpm-4.4.2/rpmio/rpmsq.c 2005-08-19 14:47:53.000000000 +0200
-@@ -218,7 +218,6 @@
-
- sq->id = ME();
- ret = pthread_mutex_init(&sq->mutex, NULL);
-- ret = pthread_cond_init(&sq->cond, NULL);
- insque(elem, (prev != NULL ? prev : rpmsqQueue));
- ret = sigrelse(SIGCHLD);
- }
-@@ -240,8 +239,11 @@
- ret = sighold (SIGCHLD);
- if (ret == 0) {
- remque(elem);
-- ret = pthread_cond_destroy(&sq->cond);
-- ret = pthread_mutex_destroy(&sq->mutex);
-+
-+ /* Unlock the mutex and then destroy it */
-+ if((ret = pthread_mutex_unlock(&sq->mutex)) == 0)
-+ ret = pthread_mutex_destroy(&sq->mutex);
-+
- sq->id = NULL;
- /*@-bounds@*/
- if (sq->pipes[1]) ret = close(sq->pipes[1]);
-@@ -315,11 +317,20 @@
- sq != NULL && sq != rpmsqQueue;
- sq = sq->q_forw)
- {
-+ int ret;
-+
- if (sq->child != reaped)
- /*@innercontinue@*/ continue;
- sq->reaped = reaped;
- sq->status = status;
-- (void) pthread_cond_signal(&sq->cond);
-+
-+ /* Unlock the mutex. The waiter will then be able to
-+ * aquire the lock.
-+ *
-+ * XXX: jbj, wtd, if this fails?
-+ */
-+ ret = pthread_mutex_unlock(&sq->mutex);
-+
- /*@innerbreak@*/ break;
- }
- }
-@@ -391,6 +402,7 @@
- {
- pid_t pid;
- int xx;
-+ int nothreads = 0; /* XXX: Shouldn't this be a global? */
-
- if (sq->reaper) {
- xx = rpmsqInsert(sq, NULL);
-@@ -405,6 +417,24 @@
-
- xx = sighold(SIGCHLD);
-
-+ /*
-+ * Initialize the cond var mutex. We have to aquire the lock we
-+ * use for the condition before we fork. Otherwise it is possible for
-+ * the child to exit, we get sigchild and the sig handler to send
-+ * the condition signal before we are waiting on the condition.
-+ */
-+ if (!nothreads) {
-+ if(pthread_mutex_lock(&sq->mutex)) {
-+ /* Yack we did not get the lock, lets just give up */
-+/*@-bounds@*/
-+ xx = close(sq->pipes[0]);
-+ xx = close(sq->pipes[1]);
-+ sq->pipes[0] = sq->pipes[1] = -1;
-+/*@=bounds@*/
-+ goto out;
-+ }
-+ }
-+
- pid = fork();
- if (pid < (pid_t) 0) { /* fork failed. */
- /*@-bounds@*/
-@@ -462,10 +492,6 @@
- /* Protect sq->reaped from handler changes. */
- ret = sighold(SIGCHLD);
-
-- /* Initialize the cond var mutex. */
-- if (!nothreads)
-- ret = pthread_mutex_lock(&sq->mutex);
--
- /* Start the child, linux often runs child before parent. */
- /*@-bounds@*/
- if (sq->pipes[0] >= 0)
-@@ -486,7 +512,13 @@
- ret = sigpause(SIGCHLD);
- else {
- xx = sigrelse(SIGCHLD);
-- ret = pthread_cond_wait(&sq->cond, &sq->mutex);
-+
-+ /*
-+ * We start before the fork with this mutex locked;
-+ * The only one that unlocks this the signal handler.
-+ * So if we get the lock the child has been reaped.
-+ */
-+ ret = pthread_mutex_lock(&sq->mutex);
- xx = sighold(SIGCHLD);
- }
- }
-@@ -495,9 +527,6 @@
- /* Accumulate stopwatch time spent waiting, potential performance gain. */
- sq->ms_scriptlets += rpmswExit(&sq->op, -1)/1000;
-
-- /* Tear down cond var mutex, our child has been reaped. */
-- if (!nothreads)
-- xx = pthread_mutex_unlock(&sq->mutex);
- xx = sigrelse(SIGCHLD);
-
- #ifdef _RPMSQ_DEBUG
+++ /dev/null
-#!/bin/sh
-#
-# Gets file list on standard input and RPM_BUILD_ROOT as first parameter
-# and searches omited files (not counting directories).
-# Returns it's output on standard output.
-#
-# filon@pld.org.pl
-
-RPM_BUILD_ROOT=$1
-
-[ ! -d "$RPM_BUILD_ROOT" ] && exit 1
-
-[ "$TMPDIR" ] || TMPDIR=/tmp
-FILES_DISK=`mktemp $TMPDIR/rpmXXXXXX`
-FILES_RPM=`mktemp $TMPDIR/rpmXXXXXX`
-
-find $RPM_BUILD_ROOT -type f | LC_ALL=C sort > $FILES_DISK
-LC_ALL=C sort > $FILES_RPM
-
-diff "$FILES_DISK" "$FILES_RPM" | grep "^< " | cut -c3- | sed -e "s#^$RPM_BUILD_ROOT# #"
-
-rm -f $FILES_DISK
-rm -f $FILES_RPM
--- /dev/null
+diff -urN rpm-4.4.9.org/rpmdb/db3.c rpm-4.4.9/rpmdb/db3.c
+--- rpm-4.4.9.org/rpmdb/db3.c 2007-04-25 03:48:42.000000000 +0200
++++ rpm-4.4.9/rpmdb/db3.c 2007-11-12 20:01:29.761434045 +0100
+@@ -1329,6 +1329,8 @@
+ } else {
+ assert(rpmdb && rpmdb->db_dbenv);
+ dbenv = rpmdb->db_dbenv;
++ if (rpmdb->db_chrootDone)
++ dbenv->set_data_dir(dbenv, dbhome);
+ rpmdb->db_opens++;
+ }
+ /*@=mods@*/
+@@ -1496,7 +1498,7 @@
+ if (dbfile)
+ t = stpcpy( stpcpy( t, "/"), dbfile);
+ /*@=boundswrite@*/
+-#ifdef HACK /* XXX necessary to support dbsubfile */
++#if 1
+ dbpath = (!dbi->dbi_use_dbenv && !dbi->dbi_temporary)
+ ? dbfullpath : dbfile;
+ #else
--- /dev/null
+--- rpm-4.4.9/build/parseBuildInstallClean.c 2008-01-30 23:16:55.347346942 +0200
++++ rpm-4.4.9/build/parseBuildInstallClean.c 2008-01-30 23:22:24.241459876 +0200
+@@ -47,11 +47,10 @@
+ appendStringBuf(*sbp, s);
+ s = _free(s);
+ } else if (parsePart == PART_CLEAN) {
+- const char * s = rpmExpand("%{?buildroot:rm -rf '%{buildroot}'\n}", NULL);
++ const char * s = rpmExpand("%{?__spec_clean_body}%{!?__spec_clean_body:%{?buildroot:rm -rf '%{buildroot}'\n}}\n", NULL);
+ if (s && *s)
+ appendStringBuf(*sbp, s);
+ s = _free(s);
+- sbp = NULL; /* XXX skip %clean from spec file. */
+ }
+
+ /* There are no options to %build, %install, %check, or %clean */
+++ /dev/null
---- rpm/lib/depends.c 2007-02-13 20:39:00.386623000 +0100
-+++ rpm/lib/depends.c 2007-02-19 19:48:40.490623000 +0100
-@@ -507,6 +507,10 @@
- goto unsatisfied;
- }
-
-+ /* Ignore cpuinfo() deps */
-+ if (!strncmp(Name, "cpuinfo(", sizeof("cpuinfo(")-1))
-+ goto exit;
-+
- /* Search added packages for the dependency. */
- if (rpmalSatisfiesDepend(ts->addedPackages, dep, NULL) != NULL) {
- /*
-diff -ur rpm-4.4.6.org/macros.in rpm-4.4.6/macros.in
---- rpm-4.4.6.org/macros.in 2006-04-08 21:04:54.000000000 +0200
-+++ rpm-4.4.6/macros.in 2006-06-30 22:03:15.076727750 +0200
-@@ -168,15 +168,20 @@
+--- rpm-4.4.9.orig/macros.in 2008-01-31 19:20:08.798315963 +0200
++++ rpm-4.4.9/macros.in 2008-01-31 19:20:50.850567944 +0200
+@@ -188,15 +188,21 @@
%debug_package \
%ifnarch noarch\
%global __debug_package 1\
-%package debug\
+%package debuginfo\
Summary: Debug information for package %{name}\
-+Summary(pl): Informacje dla debuggera dla pakietu %{name}\
++Summary(pl.UTF-8): Informacje dla debuggera dla pakietu %{name}\
Group: Development/Debug\
++Requires: filesystem-debuginfo >= 3.0-16\
AutoReqProv: 0\
-%description debug\
+%description debuginfo\
Debug information is useful when developing applications that use this\
package or when debugging this package.\
-%files debug -f debugfiles.list\
-+%description debuginfo -l pl\
++%description debuginfo -l pl.UTF-8\
+Ten pakiet dostarcza informacje dla debuggera dla pakietu %{name}.\
-+Informacje te s± przydatne przy rozwijaniu aplikacji u¿ywaj±cych tego\
++Informacje te są przydatne przy rozwijaniu aplikacji używających tego\
+pakietu oraz przy odpluskwianiu samego pakietu.\
+%files debuginfo -f debugfiles.list\
%defattr(-,root,root)\
%endif\
%{nil}
-@@ -961,7 +966,7 @@
- %__spec_install_pre %{___build_pre}
+@@ -1046,7 +1052,7 @@
+ %{?buildroot:%{__rm} -rf '%{buildroot}'}
%__spec_install_body %{___build_body}
%__spec_install_post\
-%{?__debug_package:%{__debug_install_post}}\
%{__arch_install_post}\
%{__os_install_post}\
%{nil}
-diff -ur rpm-4.4.6.org/platform.in rpm-4.4.6/platform.in
---- rpm-4.4.6.org/platform.in 2006-06-30 22:01:46.743207000 +0200
-+++ rpm-4.4.6/platform.in 2006-06-30 22:03:15.080728000 +0200
+--- rpm-4.4.9.orig/platform.in 2008-01-31 19:20:08.676303626 +0200
++++ rpm-4.4.9/platform.in 2008-01-31 19:20:50.844567337 +0200
@@ -61,7 +61,7 @@
%{nil}
%{__arch_install_post}\
%{__os_install_post}\
%{nil}
-diff -ur rpm-4.4.6.org/scripts/find-debuginfo.sh rpm-4.4.6/scripts/find-debuginfo.sh
---- rpm-4.4.6.org/scripts/find-debuginfo.sh 2006-02-12 15:59:51.000000000 +0100
-+++ rpm-4.4.6/scripts/find-debuginfo.sh 2006-06-30 22:03:53.451126000 +0200
-@@ -15,7 +15,8 @@
+--- rpm-4.4.9.orig/scripts/find-debuginfo.sh 2006-02-12 16:59:51.000000000 +0200
++++ rpm-4.4.9/scripts/find-debuginfo.sh 2008-01-31 19:20:50.852568146 +0200
+@@ -1,36 +1,49 @@
+ #!/bin/sh
+-#find-debuginfo.sh - automagically generate debug info and file list
+-#for inclusion in an rpm spec file.
++# find-debuginfo.sh - automagically generate debug info and file list
++# for inclusion in an rpm spec file.
+
+-if [ -z "$1" ] ; then BUILDDIR="."
+-else BUILDDIR=$1
++if [ -z "$1" ]; then
++ BUILDDIR="."
++else
++ BUILDDIR=$1
+ fi
+
+ LISTFILE=$BUILDDIR/debugfiles.list
+ SOURCEFILE=$BUILDDIR/debugsources.list
+
+-debugdir="${RPM_BUILD_ROOT}/usr/lib/debug"
+-
+-echo -n > $SOURCEFILE
++: > $SOURCEFILE
++: > $LISTFILE
strip_to_debug()
{
+ objcopy --add-gnu-debuglink="$1" "$2"
}
++filelist=$(find $RPM_BUILD_ROOT ! -path "$RPM_BUILD_ROOT/usr/lib/debug/*.debug" -type f '(' -perm -0100 -or -perm -0010 -or -perm -0001 ')')
++if [ -z "$filelist" ]; then
++ # no files, exit
++ exit 0
++fi
++
++filetypes=$(echo "$filelist" | xargs -r -d'\n' file)
++elflist=$(echo "$filetypes" | awk -F: '/ELF.*, not stripped/ {print $1}')
++if [ -z "$elflist" ]; then
++ # no elf objects, exit
++ exit 0
++fi
++
# Strip ELF binaries
-@@ -30,7 +31,7 @@
- [ -f "${debugfn}" ] && continue
+-for f in `find $RPM_BUILD_ROOT ! -path "${debugdir}/*.debug" -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) -exec file {} \; | \
+- sed -n -e 's/^\(.*\):[ ]*.*ELF.*, not stripped/\1/p'`
+-do
+- dn=$(dirname $f | sed -n -e "s#^$RPM_BUILD_ROOT##p")
+- bn=$(basename $f .debug).debug
+-
+- debugdn="${debugdir}${dn}"
+- debugfn="${debugdn}/${bn}"
+- [ -f "${debugfn}" ] && continue
++echo "$elflist" | while read f; do
++ dn=$(dirname "${f#$RPM_BUILD_ROOT}")
++ bn=$(basename "$f" .debug).debug
++
++ debugdn="$RPM_BUILD_ROOT/usr/lib/debug$dn"
++ debugfn="$debugdn/$bn"
++ [ -f "$debugfn" ] && continue
echo extracting debug info from $f
- /usr/lib/rpm/debugedit -b "$RPM_BUILD_DIR" -d /usr/src/debug -l "$SOURCEFILE" "$f"
# A binary already copied into /usr/lib/debug doesn't get stripped,
# just has its file names collected and adjusted.
-@@ -54,4 +55,5 @@
- find ${RPM_BUILD_ROOT}/usr/src/debug -type d -print0 | xargs -0 chmod a+rx
+@@ -38,20 +51,27 @@
+ /usr/lib/debug/*) continue ;;
+ esac
+
+- mkdir -p "${debugdn}"
++ mkdir -p "$debugdn"
+ if test -w "$f"; then
+- strip_to_debug "${debugfn}" "$f"
++ strip_to_debug "$debugfn" "$f"
+ else
+ chmod u+w "$f"
+- strip_to_debug "${debugfn}" "$f"
++ strip_to_debug "$debugfn" "$f"
+ chmod u-w "$f"
+ fi
+ done
+
+-mkdir -p ${RPM_BUILD_ROOT}/usr/src/debug
+-cat $SOURCEFILE | (cd $RPM_BUILD_DIR; LANG=C sort -z -u | cpio -pd0mL ${RPM_BUILD_ROOT}/usr/src/debug)
++mkdir -p $RPM_BUILD_ROOT/usr/src/debug
++cat $SOURCEFILE | (cd $RPM_BUILD_DIR; LANG=C sort -z -u | fgrep -zv '<built-in>' | cpio --quiet -pd0mL $RPM_BUILD_ROOT/usr/src/debug)
+ # stupid cpio creates new directories in mode 0700, fixup
+-find ${RPM_BUILD_ROOT}/usr/src/debug -type d -print0 | xargs -0 chmod a+rx
++find $RPM_BUILD_ROOT/usr/src/debug -type d -print0 | xargs -0 chmod a+rx
+
+-find ${RPM_BUILD_ROOT}/usr/lib/debug -type f | sed -n -e "s#^$RPM_BUILD_ROOT##p" > $LISTFILE
+-find ${RPM_BUILD_ROOT}/usr/src/debug -mindepth 1 -maxdepth 1 | sed -n -e "s#^$RPM_BUILD_ROOT##p" >> $LISTFILE
++find $RPM_BUILD_ROOT/usr/lib/debug -type f | sed -n -e "s#^$RPM_BUILD_ROOT##p" > $LISTFILE
++find $RPM_BUILD_ROOT/usr/lib/debug -mindepth 1 -type d | sed -n -e "s#^$RPM_BUILD_ROOT#%dir #p" >> $LISTFILE
++find $RPM_BUILD_ROOT/usr/src/debug -mindepth 1 -maxdepth 1 | sed -n -e "s#^$RPM_BUILD_ROOT##p" >> $LISTFILE
++
++# add dirs already in filesystem-debuginfo package to exclude
++cat /usr/src/debug/filesystem-debuginfo.files | while read dir; do
++ [ -d $RPM_BUILD_ROOT$dir ] || continue
++ echo "%exclude %dir $dir"
++done >> $LISTFILE
+--- rpm-4.4.9.orig/scripts/find-debuginfo.sh 2008-02-11 18:51:12.304461614 +0200
++++ rpm-4.4.9/scripts/find-debuginfo.sh 2008-02-11 18:50:17.000000000 +0200
+@@ -20,6 +20,11 @@
+ objcopy --add-gnu-debuglink="$1" "$2"
+ }
- find ${RPM_BUILD_ROOT}/usr/lib/debug -type f | sed -n -e "s#^$RPM_BUILD_ROOT##p" > $LISTFILE
-+find ${RPM_BUILD_ROOT}/usr/lib/debug -mindepth 1 -type d | sed -n -e "s#^$RPM_BUILD_ROOT#%dir #p" >> $LISTFILE
- find ${RPM_BUILD_ROOT}/usr/src/debug -mindepth 1 -maxdepth 1 | sed -n -e "s#^$RPM_BUILD_ROOT##p" >> $LISTFILE
++if [ ! -d $RPM_BUILD_ROOT ]; then
++ # no buildroot, exit
++ exit 0
++fi
++
+ filelist=$(find $RPM_BUILD_ROOT ! -path "$RPM_BUILD_ROOT/usr/lib/debug/*.debug" -type f '(' -perm -0100 -or -perm -0010 -or -perm -0001 ')')
+ if [ -z "$filelist" ]; then
+ # no files, exit
--- /dev/null
+--- rpm-4.4.9/macros.in 2008-01-13 19:07:45.023017755 +0200
++++ rpm-4.4.9/macros.in 2008-01-10 13:18:10.454983604 +0200
+@@ -350,7 +350,7 @@
+ # "w9.lzdio" lzma level 9.
+ #
+ %_source_payload w9.gzdio
+-%_binary_payload w9.lzdio
++%_binary_payload w9.bzdio
+
+ # Archive formats to use for source/binary package payloads.
+ # "cpio" cpio archive (default)
+@@ -1426,8 +1426,8 @@
+ #
+ # Note: Used iff _use_internal_dependency_generator is non-zero. The
+ # helpers are also used by %{_usrlibrpm}/rpmdeps {--provides|--requires}.
+-%__libtool_provides %{_usrlibrpm}/libtooldeps.sh --provides %{buildroot} %{name}
+-%__libtool_requires %{_usrlibrpm}/libtooldeps.sh --requires %{buildroot} %{name}
++#%__libtool_provides %{_usrlibrpm}/libtooldeps.sh --provides %{buildroot} %{name}
++#%__libtool_requires %{_usrlibrpm}/libtooldeps.sh --requires %{buildroot} %{name}
+
+ #------------------------------------------------------------------------
+ # pkgconfig(...) configuration.
+@@ -1436,8 +1436,8 @@
+ #
+ # Note: Used iff _use_internal_dependency_generator is non-zero. The
+ # helpers are also used by %{_usrlibrpm}/rpmdeps {--provides|--requires}.
+-%__pkgconfig_provides %{_usrlibrpm}/pkgconfigdeps.sh --provides
+-%__pkgconfig_requires %{_usrlibrpm}/pkgconfigdeps.sh --requires
++#%__pkgconfig_provides %{_usrlibrpm}/pkgconfigdeps.sh --provides
++#%__pkgconfig_requires %{_usrlibrpm}/pkgconfigdeps.sh --requires
+
+ #------------------------------------------------------------------------
+ # executable(...) configuration.
+@@ -1451,7 +1451,7 @@
+ #%__scriptlet_requires /bin/bash --rpm-requires
+
+ # PLD rpm macros
+-%_enable_debug_packages 1
++%_enable_debug_packages 0
+
+ #-----------------------------------------------------------------
+ # CFLAGS and LDFLAGS used to build
+++ /dev/null
---- rpm-4.3/rpmpopt.in.orig 2003-06-08 21:14:18.000000000 +0200
-+++ rpm-4.3/rpmpopt.in 2003-06-08 21:40:01.000000000 +0200
-@@ -185,22 +185,22 @@
- #rpm exec --target rpmb --target
- #rpm exec --short-circuit rpmb --short-circuit
-
--rpm exec --initdb rpmd --initdb
--rpm exec --rebuilddb rpmd --rebuilddb
--rpm exec --verifydb rpmd --verifydb
--
--rpm exec --addsign rpmk --addsign
--rpm exec -K rpmk -K
--rpm exec --checksig rpmk --checksig
--rpm exec --import rpmk --import
--rpm exec --resign rpmk --resign
--
--rpm exec -q rpmq -q
--rpm exec --query rpmq --query
--rpm exec --querytags rpmq --querytags
--rpm exec -V rpmv -V
--rpm exec -y rpmv -y
--rpm exec --verify rpmv --verify
-+#rpm exec --initdb rpmd --initdb
-+#rpm exec --rebuilddb rpmd --rebuilddb
-+#rpm exec --verifydb rpmd --verifydb
-+
-+#rpm exec --addsign rpmk --addsign
-+#rpm exec -K rpmk -K
-+#rpm exec --checksig rpmk --checksig
-+#rpm exec --import rpmk --import
-+#rpm exec --resign rpmk --resign
-+
-+#rpm exec -q rpmq -q
-+#rpm exec --query rpmq --query
-+#rpm exec --querytags rpmq --querytags
-+#rpm exec -V rpmv -V
-+#rpm exec -y rpmv -y
-+#rpm exec --verify rpmv --verify
-
- #rpm exec -i rpmi -i
- #rpm exec --install rpmi --install
+++ /dev/null
-+---------------------------------------------------------------------------
-| Make sure that an %{error:<msg>} macro really stops further
-| processing. Else it would be nothing more than a %{warn:<msg>}.
-+---------------------------------------------------------------------------
---- rpm-4.4.2/rpmio/macro.c~ 2007-03-07 18:50:42.754005171 +0200
-+++ rpm-4.4.2/rpmio/macro.c 2007-03-07 18:55:51.040958707 +0200
-@@ -1380,7 +1380,7 @@
- STREQ("error", f, fn)) {
- int waserror = 0;
- if (STREQ("error", f, fn))
-- waserror = 1;
-+ waserror = 1, rc = 1;
- if (g != NULL && g < ge)
- doOutput(mb, waserror, g, gn);
- else
+++ /dev/null
-#!/bin/sh
-#findlang - automagically generate list of language specific files
-#for inclusion in an rpm spec file.
-#This does assume that the *.mo files are under .../share/locale/...
-#Run with no arguments gets a usage message.
-
-#findlang is copyright (c) 1998 by W. L. Estes <wlestes@uncg.edu>
-
-#Redistribution and use of this software are hereby permitted for any
-#purpose as long as this notice and the above copyright notice remain
-#in tact and are included with any redistribution of this file or any
-#work based on this file.
-
-#changes:
-# $Id$
-# 2006-08-28 Elan Ruusamäe <glen@pld-linux.org>
-# * fixed --all-name which got broken with last change.
-# 2006-08-09 Elan Ruusamäe <glen@pld-linux.org>
-# * huge performance boost for packages calling %find_lang multiple times (kde*i18n)
-# 2001-01-08 Micha³ Kochanowicz <mkochano@pld.org.pl>
-# * --all-name support for KDE.
-# 2000-11-28 Rafa³ Cygnarowski <pascalek@pld.org.pl>
-# * next simple rule for KDE
-# 2000-11-12 Rafa³ Cygnarowski <pascalek@pld.org.pl>
-# * simple rules for KDE help files
-# 2000-06-05 Micha³ Kochanowicz <mkochano@pld.org.pl>
-# * exact, not substring matching $NAME, i.e. find-lang top_dir NAME will
-# no longer find /usr/share/locale/pl/LC_MESSAGES/<anything>NAME.mo.
-# 2000-04-17 Arkadiusz Mi¶kiewicz <misiek@pld.org.pl>
-# * exit 1 when no files found
-# 1999-10-19 Artur Frysiak <wiget@pld.org.pl>
-# * added support for GNOME help files
-# * start support for KDE help files
-
-PROG=${0##*/}
-
-usage () {
-cat <<EOF
-
-Usage: $PROG TOP_DIR PACKAGE_NAME [prefix]
-
-where TOP_DIR is
-the top of the tree containing the files to be processed--should be
-\$RPM_BUILD_ROOT usually. TOP_DIR gets sed'd out of the output list.
-PACKAGE_NAME is the %{name} of the package. This should also be
-the basename of the .mo files. the output is written to
-PACKAGE_NAME.lang unless \$3 is given in which case output is written
-to \$3.
-Additional options:
- --with-gnome find GNOME help files
- --with-kde find KDE help files
- --all-name match all package/domain names
- --without-mo skip *.mo locale files
-EOF
-exit 1
-}
-
-if [ -z "$1" ]; then
- usage
-elif [ $1 = / ]; then
- echo >&2 "$PROG: expects non-/ argument for '$1'"
- exit 1
-elif [ ! -d $1 ]; then
- echo >&2 "$PROG: $1: No such directory"
- exit 1
-else
- TOP_DIR="${1%/}"
-fi
-shift
-
-if [ -z "$1" ]; then
- usage
-else
- NAME=$1
-fi
-shift
-
-GNOME='#'
-KDE='#'
-MO=''
-MO_NAME=$NAME.lang
-ALL_NAME='#'
-NO_ALL_NAME=''
-while test $# -gt 0 ; do
- case "$1" in
- --with-gnome)
- GNOME=''
- echo "$PROG: Enabling with GNOME"
- shift
- ;;
- --with-kde)
- echo "$PROG: Enabling with KDE"
- KDE=''
- shift
- ;;
- --without-mo)
- echo "$PROG: Disabling .mo files"
- MO='#'
- shift
- ;;
- --all-name)
- echo "$PROG: Enabling with all names"
- ALL_NAME=''
- NO_ALL_NAME='#'
- shift
- ;;
- * )
- MO_NAME=$1
- shift
- ;;
- esac
-done
-
-echo '%defattr(644,root,root,755)' > $MO_NAME
-
-if [ ! -f __find.files ] || [ "$TOP_DIR" -nt __find.files ]; then
- find $TOP_DIR -type f -name '*.mo' | xargs -r file | egrep -v ', 1 messages$' | \
- sed -e '
- s/:.*//
- s:'"$TOP_DIR"'::' > __find.files
-else
- echo "$PROG: Using cached __find.files"
-fi
-
-(
- if [ "$ALL_NAME" ]; then
- fgrep $NAME __find.files
- else
- cat __find.files
- fi
-) | sed '
-'"$ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/_]\+\)\(.*\.mo$\):%lang(\2) \1\2\3:
-'"$NO_ALL_NAME$MO"'s:\(.*/share/locale/\)\([^/]\+\)\(.*/'"$NAME"'\.mo$\):%lang(\2) \1\2\3:
-s:^\([^%].*\)::
-s:%lang(C) ::
-s:^\$::' | egrep -v '^$' >> $MO_NAME
-
-if [ ! -f __find.dirs ] || [ "$TOP_DIR" -nt __find.dirs ]; then
- find $TOP_DIR -type d | sed 's:'"$TOP_DIR"'::' > __find.dirs
-else
- echo "$PROG: Using cached __find.dirs"
-fi
-
-(
- if [ "$ALL_NAME" ]; then
- fgrep $NAME __find.dirs
- else
- cat __find.dirs
- fi
-) | sed '
-'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'$\):%dir \1:
-'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'/[a-zA-Z0-9.\_\-]/.\+\)::
-'"$NO_ALL_NAME$GNOME"'s:\(.*/gnome/help/'"$NAME"'\/\)\([^/]\+\):%lang(\2) \1\2:
-'"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[a-zA-Z0-9.\_\-]\+$\):%dir \1:
-'"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]/.\+\)::
-'"$ALL_NAME$GNOME"'s:\(.*/gnome/help/[a-zA-Z0-9.\_\-]\+\/\)\([^/]\+\):%lang(\2) \1\2:
-s:%lang(.*) .*/gnome/help/[a-zA-Z0-9.\_\-]\+/[a-zA-Z0-9.\_\-]\+/.*::
-s:^\([^%].*\)::
-s:%lang(C) ::' | egrep -v '^$' >> $MO_NAME
-
-(
- if [ "$ALL_NAME" ]; then
- fgrep $NAME __find.dirs
- else
- cat __find.dirs
- fi
-) | sed '
-'"$NO_ALL_NAME$KDE"'s:\(.*/doc/kde/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'/\)::
-'"$NO_ALL_NAME$KDE"'s:\(.*/doc/kde/HTML/\)\([^/_]\+\)\(.*/'"$NAME"'\)$:%lang(\2) \1\2\3:
-'"$ALL_NAME$KDE"'s:\(.*/doc/kde/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+/\)::
-'"$ALL_NAME$KDE"'s:\(.*/doc/kde/HTML/\)\([^/_]\+\)\(.*/[a-zA-Z0-9.\_\-]\+$\):%lang(\2) \1\2\3:
-s:^\([^%].*\)::
-s:%lang(C) ::' | egrep -v '^$' >> $MO_NAME
-
-if [ "$(egrep -v '(^%defattr|^$)' $MO_NAME | wc -l)" -le 0 ]; then
- echo >&2 "Error: international files not found for $NAME!"
- exit 1
-fi
SPEC=$1
if [ $SPEC = "--" ]; then
if [ "$#" -lt 2 ]; then
- echo "Usage: rpm --bcond SPEC"
+ echo "Usage: rpmbuikd --bcond SPEC"
exit 1
fi
SPEC=$2
fi
if [ ! -f $SPEC ]; then
- echo "rpm: $SPEC: no such file"
+ echo "rpmbuild: $SPEC: no such file"
exit 1
fi
--- /dev/null
+#!/bin/sh
+build_hrmib_cache() {
+ # skip if no rpm(1), touch(1), xargs(1)
+ [ -x /bin/rpm -a -x /bin/touch -a -x /bin/xargs ] || return
+
+ export LC_ALL=C
+ umask 002
+
+ mydir=/var/cache/hrmib
+
+ echo >&2 "Populating $mydir with initial contents"
+ mkdir -p $mydir || return
+ echo $mydir/* | xargs rm -f
+
+ buf=$(rpm --nodigest --nosignature -qa --qf '%{N}-%{V}-%{R}.%{ARCH} %{INSTALLTIME:date}\n')
+ echo "$buf" | while read nvra idate; do
+ touch -d "$idate" "$mydir/$nvra"
+ done
+ touch $mydir
+}
+
+build_hrmib_cache
+++ /dev/null
-#!/bin/sh
-# This script reads filenames from STDIN and outputs any relevant requires
-# information that needs to be included in the package.
-#
-# Based on rpm-4.4.2/scripts/find-req.pl
-# Authors: Elan Ruusamäe <glen@pld-linux.org>
-
-export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
-
-javaclassversion() {
- [ $# -gt 0 ] || return
-
- local ver
- classver=$(echo "$@" | xargs -r file | grep -o 'compiled Java class data, version [0-9.]*' | awk '{print $NF}' | sort -u)
- [ "$classver" ] || return
- for v in $classver; do
- echo "java(ClassDataVersion) >= $v"
- done
-}
-
-javajarversion() {
- local jar="$1"
-
- # check only files, symlinks could point outside buildroot
- [ -f "$jar" -a ! -L "$jar" ] || return
-
-# echo >&2 "find java requires: ${jar#$RPM_BUILD_ROOT}"
-
- tmp=$(mktemp -d)
- unzip -q -d $tmp $jar >&2
- javaclassversion $(find $tmp -type f -name '*.class')
- rm -rf $tmp
-}
-
-FILES=$(cat -)
-
-find_requires() {
- for file in $FILES; do
- case $file in
- *.jar)
- javajarversion "$file"
- ;;
- *.class)
- javaclassversion "$file"
- ;;
- esac
- done
-}
-
-find_requires | sort -u
+++ /dev/null
---- rpm-4.4.9/lib/rpmfc.c.orig 2007-05-22 20:19:05.990914000 +0200
-+++ rpm-4.4.9/lib/rpmfc.c 2007-05-22 22:12:38.775152636 +0200
-@@ -866,6 +866,12 @@
- /* not only executable, files run by httpd usually are not */
- if (fc->findreq)
- xx = rpmfcHelper(fc, 'R', "php", fc->noautoreq, fc->noautoreq_c);
-+ } else
-+ if (fc->fcolor->vals[fc->ix] & RPMFC_JAVA) {
-+ if (fc->findprov)
-+ xx = rpmfcHelper(fc, 'P', "java", fc->noautoprov, fc->noautoprov_c);
-+ if (fc->findreq)
-+ xx = rpmfcHelper(fc, 'R', "java", fc->noautoreq, fc->noautoreq_c);
- }
-
- return 0;
---- rpm-4.4.9/macros.in.orig 2007-05-24 21:20:49.657284000 +0200
-+++ rpm-4.4.9/macros.in 2007-05-24 21:22:32.823163996 +0200
-@@ -1416,8 +1416,8 @@
- #
- # Note: Used iff _use_internal_dependency_generator is non-zero. The
- # helpers are also used by %{_usrlibrpm}/rpmdeps {--provides|--requires}.
--%__java_provides %{_usrlibrpm}/javadeps.sh --provides
--%__java_requires %{_usrlibrpm}/javadeps.sh --requires
-+%__java_provides %{nil}
-+%__java_requires %{nil}
-
- #------------------------------------------------------------------------
- # libtool(...) configuration.
+++ /dev/null
---- rpm-4.4.8.org/scripts/libtooldeps.sh 2005-11-12 22:20:42.000000000 +0100
-+++ rpm-4.4.8/scripts/libtooldeps.sh 2006-11-26 20:06:49.254008750 +0100
-@@ -5,6 +5,8 @@
- exit 0
- }
-
-+pkgname="$3"
-+
- case $1 in
- -P|--provides)
- shift
-@@ -13,7 +15,8 @@
- do
- case "$possible" in
- *.la)
-- if grep -iq '^# Generated by ltmain.sh' "$possible" 2> /dev/null ; then
-+ possible="`readlink -f "$possible" 2> /dev/null || echo "$possible"`"
-+ if file "$possible" | grep -iq 'libtool library file' 2> /dev/null ; then
- possible="`echo ${possible} | sed -e s,${RPM_BUILD_ROOT}/,/,`"
- echo "libtool($possible)"
- fi
-@@ -22,21 +25,28 @@
- done
- ;;
- -R|--requires)
-- while read possible ; do
-- case "$possible" in
-- *.la)
-- for dep in `grep '^dependency_libs='"$possible" 2> /dev/null | \
-- sed -e "s,^dependency_libs='\(.*\)',\1,g"`
-- do
-- case "$dep" in
-- /*.la)
-- echo "libtool($dep)"
-+ case $pkgname in
-+ *-devel)
-+ while read possible ; do
-+ case "$possible" in
-+ *.la)
-+ for dep in `grep '^dependency_libs='"$possible" 2> /dev/null | \
-+ sed -e "s,^dependency_libs='\(.*\)',\1,g"`
-+ do
-+ case "$dep" in
-+ /*.la)
-+ dep="`readlink -f "$dep" 2> /dev/null || echo "$dep"`"
-+ echo "libtool($dep)"
-+ ;;
-+ esac
-+ done
- ;;
- esac
- done
-- ;;
-- esac
-- done
-- ;;
-+ ;;
-+ *)
-+ cat > /dev/null
-+ ;;
-+ esac
- esac
- exit 0
--- /dev/null
+--- rpm-4.4.9/rpmio/LzmaDecode.h.orig 2007-10-14 19:23:02.629594398 +0000
++++ rpm-4.4.9/rpmio/LzmaDecode.h 2007-10-14 19:23:16.628653630 +0000
+@@ -35,7 +35,7 @@
+ /* #define _LZMA_LOC_OPT */
+ /* Enable local speed optimizations inside code */
+
+-/* #define _LZMA_SYSTEM_SIZE_T */
++#define _LZMA_SYSTEM_SIZE_T
+ /* Use system's size_t. You can use it to enable 64-bit sizes supporting*/
+
+ #ifndef UInt32
--- /dev/null
+diff -urN rpm-4.4.9.org/rpmio/rpmio.c rpm-4.4.9/rpmio/rpmio.c
+--- rpm-4.4.9.org/rpmio/rpmio.c 2007-03-31 13:33:15.000000000 +0200
++++ rpm-4.4.9/rpmio/rpmio.c 2007-12-10 12:50:56.678906501 +0100
+@@ -2879,7 +2879,7 @@
+ xx = dup2(fdno, 1);
+ for (i = 3; i < 1024; i++)
+ xx = close(i);
+- if (execl("/usr/bin/lzma", "lzma", "e", "-si", "-so", NULL))
++ if (execl("/usr/bin/lzma", "lzma", "--format=alone", "-zc", "-", NULL))
+ _exit(1);
+ }
+ return NULL; /* warning */
---- rpm-4.4.8/macros.in.orig 2007-04-08 20:24:47.206783474 +0200
-+++ rpm-4.4.8/macros.in 2007-04-08 20:36:08.925632417 +0200
-@@ -206,7 +206,7 @@
+--- rpm-4.4.9/macros.in 2008-01-25 02:16:46.248708080 +0200
++++ rpm-4.4.9/macros.in 2008-04-04 23:15:28.121279270 +0300
+@@ -109,6 +109,10 @@
+ %__automake automake
+ %__autoconf autoconf
+
++# compiler used to build kernel and kernel modules
++%kgcc %{__cc}
++%kgcc_package gcc
++
+ #==============================================================================
+ # Conditional build stuff.
+
+@@ -206,7 +210,7 @@
%endif\
%{nil}
# The path to the pgp executable (legacy, use %{__pgp} instead).
%_pgpbin %{__pgp}
-@@ -233,12 +233,12 @@
+@@ -233,12 +237,12 @@
# The directory where newly built source packages will be written.
%_srcrpmdir %{_topdir}/SRPMS
#==============================================================================
# ---- Optional rpmrc macros.
-@@ -248,7 +248,7 @@
+@@ -248,7 +252,7 @@
# Configurable build root path, same as BuildRoot: in a specfile.
# (Note: the configured macro value will override the spec file value).
#
# The sub-directory (relative to %{_builddir}) where sources are compiled.
# This macro is set after processing %setup, either explicitly from the
-@@ -347,8 +347,8 @@
+@@ -347,8 +351,8 @@
# "w9.bzdio" bzip2 level 9.
# "w9.lzdio" lzma level 9.
#
# Archive formats to use for source/binary package payloads.
# "cpio" cpio archive (default)
-@@ -498,7 +498,7 @@
+@@ -498,7 +502,7 @@
#
# Path to magic file used for file classification.
#==============================================================================
# ---- Database configuration macros.
-@@ -1127,17 +1127,17 @@
+@@ -991,9 +995,12 @@
+ %{?_javaclasspath:CLASSPATH=\"%{_javaclasspath}\"\
+ export CLASSPATH}\
+ unset PERL_MM_OPT || :\
+- LANG=C\
+- export LANG\
+- unset DISPLAY || :\
++ export LC_ALL=C\
++ export LANG=C\
++ unset LINGUAS ||:\
++ unset LANGUAGE ||:\
++ unset LC_MESSAGES ||:\
++ unset DISPLAY ||:\
+ \
+ %{verbose:set -x}%{!verbose:exec > /dev/null}\
+ umask 022\
+@@ -1127,17 +1134,17 @@
%_exec_prefix %{_prefix}
%_bindir %{_exec_prefix}/bin
%_sbindir %{_exec_prefix}/sbin
%_localedir %{_datadir}/locale
#==============================================================================
-@@ -1428,7 +1428,25 @@
- # helpers are also used by %{_usrlibrpm}/rpmdeps {--provides|--requires}.
+@@ -1429,6 +1436,23 @@
#%__executable_provides %{_usrlibrpm}/executabledeps.sh --provides
#%__executable_requires %{_usrlibrpm}/executabledeps.sh --requires
-%__scriptlet_requires /bin/bash --rpm-requires
+#%__scriptlet_requires /bin/bash --rpm-requires
-
++
+# PLD rpm macros
+%_enable_debug_packages 1
+
+# -feliminate-dwarf2-dups disabled until PR ld/3290 is fixed.
+
+%debugcflags -O0 -g -Wall
-+%optldflags -Wl,--as-needed
-+
+
+# Warning: those macros are overwritten by macros.build,
+# left here for compatibility
+%rpmcflags %{?debug:%debugcflags}%{!?debug:%optflags}%{?debuginfocflags}
+++ /dev/null
-diff -ur rpm.org/file/doc/Makefile.am rpm/file/doc/Makefile.am
---- rpm.org/file/doc/Makefile.am 2004-11-18 15:04:33.000000000 +0100
-+++ rpm/file/doc/Makefile.am 2004-11-22 01:02:30.114807597 +0100
-@@ -1,4 +1,4 @@
--MAGIC = $(pkgdatadir)/magic
-+MAGIC = /usr/share/file/magic
- if FSECT5
- man_MAGIC = magic.5
- else
-diff -ur rpm.org/file/Makefile.am rpm/file/Makefile.am
---- rpm.org/file/Makefile.am 2004-11-18 15:04:32.000000000 +0100
-+++ rpm/file/Makefile.am 2004-11-22 01:01:36.817958788 +0100
-@@ -3,4 +3,4 @@
-
- EXTRA_DIST = ChangeLog LEGAL.NOTICE MAINT README
-
--SUBDIRS = src magic doc python
-+SUBDIRS = src magic python
-diff -ur rpm.org/file/src/Makefile.am rpm/file/src/Makefile.am
---- rpm.org/file/src/Makefile.am 2004-11-18 15:04:33.000000000 +0100
-+++ rpm/file/src/Makefile.am 2004-11-22 01:01:36.823963503 +0100
-@@ -3,7 +3,7 @@
-
- #MAGIC = $(pkgdatadir)/magic
- pkglibdir = @prefix@/lib/rpm
--MAGIC = $(pkglibdir)/magic
-+MAGIC = /usr/share/file/magic
-
- AM_CPPFLAGS = -DMAGIC='"$(MAGIC)"'
-
--- /dev/null
+--- rpm/doc/pl/rpm.8~ 2007-11-24 23:21:26.000000000 +0100
++++ rpm/doc/pl/rpm.8 2007-11-24 23:21:26.000000000 +0100
+@@ -325,6 +325,7 @@
+ Instaluje pakiety nawet je¶li niektóre z nich s± ju¿ zainstalowane na tym
+ systemie.
+ .TP
++\fB--test\fR
+ Nie instaluje pakietu, po prostu sprawdza i raportuje potencjalne
+ konflikty.
+ .SS "OPCJE USUWANIA"
---- rpm-4.4.8/lib/rpmfc.c.orig 2005-11-19 01:11:00.884392480 +0100
-+++ rpm-4.4.8/lib/rpmfc.c 2005-11-19 01:13:08.489993480 +0100
-@@ -539,6 +539,10 @@
-
- { "Java ", RPMFC_JAVA|RPMFC_INCLUDE },
-
-+ /* .NET executables and libraries. file(1) cannot differ it from native win32 executables unfortunatelly */
-+ { "PE executable", RPMFC_MONO|RPMFC_INCLUDE },
-+ { "executable PE", RPMFC_MONO|RPMFC_INCLUDE },
-+
- { "current ar archive", RPMFC_STATIC|RPMFC_LIBRARY|RPMFC_ARCHIVE|RPMFC_INCLUDE },
-
- { "Zip archive data", RPMFC_COMPRESSED|RPMFC_ARCHIVE|RPMFC_INCLUDE },
-@@ -900,6 +904,35 @@
- }
-
- /**
-+ * Extract .NET dependencies.
-+ * @param fc file classifier
-+ * @return 0 on success
-+ */
-+static int rpmfcMONO(rpmfc fc)
-+ /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
-+ /*@modifies fc, rpmGlobalMacroContext, fileSystem, internalState @*/
-+{
-+ const char * fn = fc->fn[fc->ix];
-+ FILE * fp;
-+ int xx;
-+
-+ fp = fopen(fn, "r");
-+ if (fp == NULL || ferror(fp)) {
-+ if (fp) (void) fclose(fp);
-+ return -1;
-+ }
-+
-+ (void) fclose(fp);
-+
-+ if (fc->findprov)
-+ xx = rpmfcHelper(fc, 'P', "mono", fc->noautoprov, fc->noautoprov_c);
-+ if (fc->findreq)
-+ xx = rpmfcHelper(fc, 'R', "mono", fc->noautoreq, fc->noautoreq_c);
-+
-+ return 0;
-+}
-+
-+/**
- * Extract Elf dependencies.
- * @param fc file classifier
- * @return 0 on success
-@@ -931,6 +963,7 @@
- static struct rpmfcApplyTbl_s rpmfcApplyTable[] = {
- { rpmfcELF, RPMFC_ELF },
- { rpmfcSCRIPT, (RPMFC_SCRIPT|RPMFC_PERL|RPMFC_PYTHON|RPMFC_LIBTOOL|RPMFC_PKGCONFIG|RPMFC_BOURNE|RPMFC_JAVA|RPMFC_PHP) },
-+ { rpmfcMONO, RPMFC_MONO },
- { NULL, 0 }
- };
-
---- rpm-4.4.8./lib/rpmfc.h 2005-08-11 13:11:54.000000000 +0200
-+++ rpm-4.4.8/lib/rpmfc.h 2005-08-11 14:10:33.000000000 +0200
-@@ -78,6 +78,7 @@
- RPMFC_PYTHON = (1 << 26),
- RPMFC_PHP = (1 << 27),
- RPMFC_TCL = (1 << 28),
-+ RPMFC_MONO = (1 << 6),
-
- RPMFC_WHITE = (1 << 29),
- RPMFC_INCLUDE = (1 << 30),
---- rpm-4.4.9/macros.in.orig 2007-05-24 21:20:58.889811039 +0200
-+++ rpm-4.4.9/macros.in 2007-05-24 21:20:49.657284908 +0200
-@@ -1406,6 +1406,9 @@
- #%__php_provides %{_usrlibrpm}/php.prov
- #%__php_requires %{_usrlibrpm}/php.req
-
+--- rpm-5.0.1/macros.in~ 2008-01-31 00:06:10.000000000 +0200
++++ rpm-5.0.1/macros.in 2008-01-31 00:07:31.097681189 +0200
+@@ -1578,8 +1578,8 @@
+ #
+ # Note: Used iff _use_internal_dependency_generator is non-zero. The
+ # helpers are also used by %{_rpmhome}/rpmdeps {--provides|--requires}.
+-%__mono_provides %{_rpmhome}/mono-find-provides
+-%__mono_requires %{_rpmhome}/mono-find-requires
+%__mono_provides %{nil}
+%__mono_requires %{nil}
-+
+
#------------------------------------------------------------------------
- # java(...) configuration.
- #
+ # executable(...) configuration.
--- /dev/null
+Disable Provides: user(NAME), group(NAME) probes as it would fire trigger on NAME uninstall
+
+as for example uninstalling this spec: https://bugs.pld-linux.org/attachment.cgi?id=20
+
+15:30:53 jbj> glen_: rpmns.c splits group(mailman) into the tuple {group, mailman} for name space processing.
+15:32:48 jbj> the code in unbsatisfiedDepnds is driven by the name "group". if split, then its not the string
+ "group(mailman)" any more.
+
+--- rpm-4.4.9/lib/depends.c~ 2008-04-08 19:44:02.000000000 +0300
++++ rpm-4.4.9/lib/depends.c 2008-04-25 15:12:52.734623679 +0300
+@@ -611,6 +611,7 @@
+ goto exit;
+ }
+
++#if 0
+ /* Evaluate user/group lookup probes. */
+ if (NSType == RPMNS_TYPE_USER) {
+ const char *s;
+@@ -646,6 +647,7 @@
+ rpmdsNotify(dep, _("(group lookup)"), rc);
+ goto exit;
+ }
++#endif
+
+ /* Evaluate access(2) probe dependencies. */
+ if (NSType == RPMNS_TYPE_ACCESS) {
+--- rpm-4.4.9/lib/rpmns.c~ 2007-05-16 14:31:58.000000000 +0300
++++ rpm-4.4.9/lib/rpmns.c 2008-04-25 15:36:20.223855745 +0300
+@@ -179,8 +179,10 @@
+ case RPMNS_TYPE_UNAME:
+ case RPMNS_TYPE_SONAME:
+ case RPMNS_TYPE_ACCESS:
++#if 0
+ case RPMNS_TYPE_USER:
+ case RPMNS_TYPE_GROUP:
++#endif
+ case RPMNS_TYPE_MOUNTED:
+ case RPMNS_TYPE_DISKSPACE:
+ case RPMNS_TYPE_DIGEST:
--- /dev/null
+--- rpm-4.4.9.org/configure.ac 2007-05-19 21:26:29.000000000 +0200
++++ rpm-4.4.9/configure.ac 2007-11-15 01:11:58.263879867 +0100
+@@ -35,7 +35,6 @@
+ AC_SUBST(AS)
+ if test "$ac_cv_c_compiler_gnu" = yes; then
+ CFLAGS="$CFLAGS -fPIC -DPIC -D_GNU_SOURCE -D_REENTRANT -Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes -Wno-char-subscripts"
+- LDFLAGS="-pie"
+ fi
+ export CFLAGS LDFLAGS
+
+--- rpm-4.4.9/Makefile.am~ 2008-01-10 11:08:04.000000000 +0200
++++ rpm-4.4.9/Makefile.am 2008-01-10 11:30:56.897013850 +0200
+@@ -62,19 +62,19 @@
+ #rpm_LDFLAGS = $(myLDFLAGS)
+ #rpm_LDADD = rpm.o $(top_builddir)/build/.libs/librpmbuild.a $(myLDADD)
+ rpm.o: $(top_srcdir)/rpmqv.c
+- $(COMPILE) -fpie -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c $<
++ $(COMPILE) -DIAM_RPMDB -DIAM_RPMEIU -DIAM_RPMK -DIAM_RPMQV -o $@ -c $<
+
+ rpmb_SOURCES = $(top_srcdir)/build.c
+ rpmb_LDFLAGS = $(myLDFLAGS) $(staticLDFLAGS)
+ rpmb_LDADD = rpmb.o $(top_builddir)/build/librpmbuild.la $(myLDADD)
+ rpmb.o: $(top_srcdir)/rpmqv.c
+- $(COMPILE) -fpie -DIAM_RPMBT -o $@ -c $<
++ $(COMPILE) -DIAM_RPMBT -o $@ -c $<
+
+ rpmd_SOURCES =
+ rpmd_LDFLAGS = $(myLDFLAGS) $(staticLDFLAGS)
+ rpmd_LDADD = rpmd.o $(myLDADD)
+ rpmd.o: $(top_srcdir)/rpmqv.c
+- $(COMPILE) -fpie -DIAM_RPMDB -o $@ -c $<
++ $(COMPILE) -DIAM_RPMDB -o $@ -c $<
+
+ rpmi_SOURCES =
+ rpmi_LDFLAGS = $(myLDFLAGS) # $(staticLDFLAGS)
+@@ -82,19 +82,19 @@
+ #rpmi_LDFLAGS = $(myLDFLAGS)
+ #rpmi_LDADD = rpmi.o $(myLDADD)
+ rpmi.o: $(top_srcdir)/rpmqv.c
+- $(COMPILE) -fpie -DIAM_RPMEIU -o $@ -c $<
++ $(COMPILE) -DIAM_RPMEIU -o $@ -c $<
+
+ rpmk_SOURCES =
+ rpmk_LDFLAGS = $(myLDFLAGS) $(staticLDFLAGS)
+ rpmk_LDADD = rpmk.o $(myLDADD)
+ rpmk.o: $(top_srcdir)/rpmqv.c
+- $(COMPILE) -fpie -DIAM_RPMK -o $@ -c $<
++ $(COMPILE) -DIAM_RPMK -o $@ -c $<
+
+ rpmq_SOURCES =
+ rpmq_LDFLAGS = $(myLDFLAGS) # $(staticLDFLAGS)
+ rpmq_LDADD = rpmq.o $(top_builddir)/build/librpmbuild.la $(myLDADD)
+ rpmq.o: $(top_srcdir)/rpmqv.c
+- $(COMPILE) -fpie -DIAM_RPMQV -o $@ -c $<
++ $(COMPILE) -DIAM_RPMQV -o $@ -c $<
+
+ $(PROGRAMS): @WITH_APIDOCS_TARGET@
+
+++ /dev/null
-diff -u -b -B -w -p -r1.148 rpmmodule.c
---- rpm/python/rpmmodule.c 21 May 2007 16:17:04 -0000 1.148
-+++ rpm/python/rpmmodule.c 23 May 2007 14:00:41 -0000
-@@ -241,7 +241,7 @@ void init_rpm(void)
- if (m == NULL)
- return;
-
-- rpmReadConfigFiles(rpmRcfiles, NULL);
-+ rpmReadConfigFiles(NULL, NULL);
-
- d = PyModule_GetDict(m);
-
+++ /dev/null
---- rpm-4.4.1/lib/rpmrc.c.orig 2005-08-02 21:33:34.000000000 +0200
-+++ rpm-4.4.1/lib/rpmrc.c 2005-10-11 07:51:45.000000000 +0200
-@@ -1076,6 +1076,7 @@
- // Pentium 4 Xeon, Pentium 4 Xeon MP,
- // Celeron, Mobile Celron (0.13um)
- case 3: // Pentium 4, Celeron (0.09um)
-+ case 4: // Pentium 4 540J
- return 1;
- }
- return 0;
diff -urN rpm-4.3.org/configure.ac rpm-4.3/configure.ac
--- rpm-4.3.org/configure.ac 2004-01-07 01:51:35.251160244 +0100
+++ rpm-4.3/configure.ac 2004-01-07 01:55:53.198560246 +0100
-@@ -1196,6 +1196,7 @@
- AC_CONFIG_SUBDIRS(popt beecrypt zlib elfutils file db3)
-
- AC_CONFIG_FILES([ Doxyfile Makefile rpmrc macros platform rpmpopt rpm.spec
-+ scripts/perl.req scripts/perl.prov
- rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
- scripts/Makefile scripts/brp-redhat
- scripts/macros.perl scripts/macros.php scripts/macros.python
-diff -urN rpm-4.3.org/scripts/perl.req rpm-4.3/scripts/perl.req
---- rpm-4.3.org/scripts/perl.req 2004-01-07 01:51:04.911464416 +0100
-+++ rpm-4.3/scripts/perl.req 2004-01-07 01:55:17.030076058 +0100
+@@ -1313,6 +1313,7 @@
+ Doxyfile Makefile macros rpmpopt rpm.spec
+ rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
+ scripts/Makefile scripts/macros.perl scripts/macros.php
++ scripts/perl.req scripts/perl.prov
+ scripts/macros.python tools/Makefile misc/Makefile doc/Makefile
+ doc/manual/Makefile doc/fr/Makefile doc/ja/Makefile doc/ko/Makefile
+ doc/pl/Makefile doc/ru/Makefile doc/sk/Makefile python/Makefile
+--- rpm-4.4.9/scripts/perl.req.orig 2006-07-08 16:13:50.000000000 +0200
++++ rpm-4.4.9/scripts/perl.req 2008-03-24 01:13:31.985544655 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!@__PERL@
- # RPM (and it's source code) is covered under two separate licenses.
+ # RPM (and its source code) is covered under two separate licenses.
@@ -41,7 +41,11 @@
}
} else {
-@@ -49,14 +53,22 @@
+@@ -49,7 +53,11 @@
# contents of the file.
foreach (<>) {
}
}
+@@ -203,19 +211,41 @@
- foreach $module (sort keys %require) {
- if (length($require{$module}) == 0) {
-- print "perl($module)\n";
-+ if ($module =~ /^[0-9._]+$/) {
-+ print "perl >= $module\n";
-+ } else {
-+ print "perl($module)\n";
-+ }
- } else {
+ $module =~ s/\(\s*\)$//;
+
+- if ( $module =~ m/^v?([0-9._]+)$/ ) {
++ if ( $module =~ m/^(v?)([0-9._]+)$/ ) {
+ # if module is a number then both require and use interpret that
+ # to mean that a particular version of perl is specified
+
+- my $ver=$1;
+- if ($ver =~ /5.00/) {
+- print "perl >= 0:$ver\n";
+- next;
+- }
+- else {
+- print "perl >= 1:$ver\n";
+- next;
+- }
++ my $ver=$2;
++ if (($1 eq 'v') or ($ver =~ /[0-9]+\.[0-9]+\.[0-9]+/)) {
++ # $V-style
++ if ($ver =~ m/5\.([0-5])(\.([0-9]+))?$/) {
++ if (defined $3) {
++ print "perl-base >= 0:5.00$1_$3\n";
++ } else {
++ print "perl-base >= 0:5.00$1\n";
++ }
++ } else {
++ print "perl-base >= 1:$ver\n";
++ }
++ } else {
++ # $]-style
++ if ($ver =~ m/5\.(00[0-5])_?([0-9]+)?$/) {
++ if (defined $2) {
++ print "perl-base >= 0:5.$1_$2\n";
++ } else {
++ print "perl-base >= 0:5.$1\n";
++ }
++ } else {
++ # expand to M.NNN_nnn form
++ $ver =~ s/^([0-9])$/$1./;
++ $ver =~ s/^([0-9]\.[0-9]{0,5}|[0-9]\.[0-9]{3}_[0-9]{0,2})$/${1}000000/;
++ $ver =~ s/^([0-9]\.[0-9]{3})_?([0-9]{3})0*$/$1_$2/;
++ # match trimming leading 0s
++ $ver =~ m/^([0-9])\.0*([1-9][0-9]*|0)_0*([1-9][0-9]*|0)$/;
++ print "perl-base >= 1:$1.$2.$3\n";
++ }
++ }
++ next;
+
+ };
- # I am not using rpm3.0 so I do not want spaces arround my
-@@ -219,7 +231,31 @@
+@@ -232,7 +262,31 @@
# will be included with the name sys/systeminfo.ph so only use the
# basename of *.ph files
+++ /dev/null
---- rpm-4.2/scripts/perl.req.wigperl Tue Apr 1 13:33:52 2003
-+++ rpm-4.2/scripts/perl.req Tue Apr 1 13:39:47 2003
-@@ -39,28 +39,20 @@
-
- # by Ken Estes Mail.com kestes@staff.mail.com
-
--if ("@ARGV") {
-- foreach (@ARGV) {
-+foreach ( @ARGV ? @ARGV : <> ) {
-+ chomp;
- if (m=/usr/(sbin|bin|lib|share|X11R6/(lib|bin))/=) {
- if (! m=(/(doc|man|info|usr/src)/|\.(so|ph|h|html|pod)$)=) {
-- process_file($_);
-+ process_file($_) if -f;
- }
- }
-- }
--} else {
--
-- # notice we are passed a list of filenames NOT as common in unix the
-- # contents of the file.
--
-- foreach (<>) {
-- if (m=/usr/(sbin|bin|lib|share|X11R6/(lib|bin))/=) {
-- if (! m=(/(doc|man|info|usr/src)/|\.(so|ph|h|html|pod)$)=) {
-- process_file($_);
-- }
-- }
-- }
- }
-
-+foreach (sort keys %provide) {
-+ delete $require{$_};
-+}
-+delete $require{the}; # don't count "use the sth" as perl module
-+
-
- foreach $module (sort keys %require) {
- if (length($require{$module}) == 0) {
-@@ -82,6 +74,53 @@
- exit 0;
-
-
-+sub is_perlfile {
-+ my $file = shift;
-+ my $fh = shift;
-+
-+ my $fl = <$fh>;
-+
-+ my $is_perl = 0;
-+
-+ my $nw = 0;
-+
-+ if ($file =~ /\.(so|ph|h|html|pod|gz|bz2|png|gif|jpg|xpm|a|patch|o|mo)$/) {
-+ $is_perl = 0;
-+
-+ # .al, .pl, .pm and .plx (perl-Font-TTF contains *.plx files)
-+ } elsif ($file =~ /\.p[lm]x?$/ || $file =~ /\.al$/) {
-+ $is_perl = 1;
-+ #print STDERR "$file PERL by ext\n";
-+ } elsif ($fl =~ m|bin/perl| or $fl =~ m|env\s+perl| or $fl =~ m|exec\s+perl|) {
-+ $is_perl = 1;
-+ #print STDERR "$file PERL by perl\n";
-+ } elsif ($fl =~ m|bin/sh|) {
-+ while (<$fh>) {
-+ if (/eval/ && /perl/) {
-+ $is_perl = 1;
-+ last;
-+ }
-+ $nw++ if (/^\s*BEGIN/);
-+ $nw++ if (/^\s*sub\s+/);
-+ $nw++ if (/^\s*package\s+/);
-+ $nw++ if (/^\s*use\s+strict\s+;/);
-+ $nw++ if (/^\s*use\s+vars\s*qw/);
-+ last if ($. > 30);
-+ }
-+ }
-+
-+ seek($fh, 0, 0);
-+
-+ $is_perl = 1 if ($nw > 1); # propably perl file
-+
-+ #if (!$is_perl) {
-+ # print STDERR "NOPERL $file\n";
-+ # return 0;
-+ #}
-+ #print STDERR "PERL $file\n" if ($is_perl);
-+ return $is_perl;
-+}
-+
-
- sub process_file {
-
-@@ -90,6 +129,8 @@
-
- open(FILE, "<$file") || return;
-
-+ return if (!is_perlfile($file, \*FILE));
-+
- while (<FILE>) {
-
- # skip the documentation
-@@ -111,6 +152,10 @@
- last;
- }
-
-+ if (m/^\s*package\s+([_:a-zA-Z0-9]+)\s*;/) {
-+ $provide{$1} = 1;
-+ }
-+
- # Each keyword can appear multiple times. Don't
- # bother with datastructures to store these strings,
- # if we need to print it print it now.
-@@ -236,6 +281,10 @@
-
- ($module =~ m/^\./) && next;
-
-+ # name starts in a non alphanumeric character it is not a module
-+ # name.
-+ ($module =~ m/^\W/) && next;
-+
- # if the module ends with .pm strip it to leave only basename.
-
- $module =~ s/\.pm$//;
+++ /dev/null
---- scripts/perl.req~ 2004-04-16 13:27:10.000000000 +0200
-+++ scripts/perl.req 2004-04-26 23:54:42.128568344 +0200
-@@ -39,8 +39,19 @@
-
- # by Ken Estes Mail.com kestes@staff.mail.com
-
-+
-+
-+# *inc variables are used to track dependencies on directories for modules.
-+# These directories (especially arch-dependent) are likely to change some day.
-+my @inc = sort { length $b cmp length $a }
-+ map { s#/*$##; $_ }
-+ grep m#^/.#, @INC;
-+my %inc = map { $_ => 0 } @inc;
-+my $inc = join '|', map "\Q$_\E", @inc;
-+
- foreach ( @ARGV ? @ARGV : <> ) {
-- chomp;
-- if (m=/usr/(sbin|bin|lib|share|X11R6/(lib|bin))/=) {
-+ chomp;
-+ $inc{$1}++ if m#($inc)/#; # can't anchor on ^
-+ if (m=/usr/(sbin|bin|lib|lib64|share|X11R6/(lib|lib64|bin))/=) {
- if (! m=(/(doc|man|info|usr/src)/|\.(so|ph|h|html|pod)$)=) {
- process_file($_) if -f;
-@@ -53,8 +64,9 @@
- }
- delete $require{the}; # don't count "use the sth" as perl module
-
-+print "$_\n" for sort grep $inc{$_}, keys %inc;
-
--foreach $module (sort keys %require) {
-+foreach my $module (sort grep length, keys %require) {
- if (length($require{$module}) == 0) {
- if ($module =~ /^[0-9._]+$/) {
- print "perl-base >= $module\n";
+++ /dev/null
---- rpm-4.4.3/scripts/perl.req.orig 2005-11-18 23:00:58.604519312 +0100
-+++ rpm-4.4.3/scripts/perl.req 2005-11-18 23:03:17.506403016 +0100
-@@ -57,7 +57,7 @@
- foreach $module (sort keys %require) {
- if (length($require{$module}) == 0) {
- if ($module =~ /^[0-9._]+$/) {
-- print "perl >= $module\n";
-+ print "perl-base >= $module\n";
- } else {
- print "perl($module)\n";
- }
-@@ -255,11 +255,11 @@
-
- my $ver=$1;
- if ($ver =~ /5.00/) {
-- print "perl >= 0:$ver\n";
-+ print "perl-base >= 0:$ver\n";
- next;
- }
- else {
-- print "perl >= 1:$ver\n";
-+ print "perl-base >= 1:$ver\n";
- next;
- }
-
+++ /dev/null
---- rpm-4.4.8/lib/rpmfc.c.orig 2007-02-14 07:31:50.000000000 +0100
-+++ rpm-4.4.8/lib/rpmfc.c 2007-04-08 16:48:00.273560592 +0200
-@@ -773,7 +773,7 @@
- } else
- if (fc->fcolor->vals[fc->ix] & RPMFC_PHP) {
- xx = rpmfcHelper(fc, 'P', "php");
-- if (is_executable)
-+ /* not only executable, files run by httpd usually are not */
- xx = rpmfcHelper(fc, 'R', "php");
- }
-
-
#!/usr/bin/perl
#####################################################################
# #
-# Small script to generate provides for php-pear/php-pecl #
+# Check system dependences between php-pear modules #
# #
-# Adam Go³êbiowski <adamg@pld-linux.org> #
-# #
-# Somehow based on previous work by: #
-# Pawe³ Go³aszewski <blues@pld-linux.org> #
+# Pawe³ Go³aszewski <blues@ds.pg.gda.pl> #
# Micha³ Moskal <malekith@pld-linux.org> #
+# ------------------------------------------------------------------#
+# TODO: #
#####################################################################
-# Contest: shrink this one to oneliner
-# Bonus : and fit in 80 columns ;)
+$pear = "/usr/share/pear";
-/package.xml/ and open(F, $_) foreach (@ARGV ? @ARGV : <> );
-/^\s+\<name\>([a-zA-Z0-9\_]+)\<\/name\>$/ and print "php-pear-$1" while (<F>);
+foreach (@ARGV ? @ARGV : <>) {
+ chomp;
+ $f = $_;
+ next unless ($f =~ /$pear.*\.php$/);
+ $f =~ s/.*$pear\///;
+ print "pear($f)\n";
+}
-#!/usr/bin/perl -W
+#!/usr/bin/perl
#####################################################################
# #
-# Check system dependencies between php-pear/php-pecl modules #
+# Check system dependences between php-pear modules #
# #
-# Adam Go³êbiowski <adamg@pld-linux.org> #
-# #
-# based on previous work by: #
# Pawe³ Go³aszewski <blues@ds.pg.gda.pl> #
-# Micha³ Moskal <malekith@pld-linux.org> #
-# #
-# ----------------------------------------------------------------- #
-# ChangeLog: #
-# 20031201: complete rewrite to use PEAR's package.xml, now handles #
-# all dependencies, including PHP modules (like php-gmp), #
-# and PECL extensions (adamg) #
+# Micha³ Moskal <malekith@pld-linux.org> #
+# ------------------------------------------------------------------#
+# TODO: #
+# - extension_loaded - dependencies. #
+# - some clean-up... #
#####################################################################
-@req_arr = ();
-$fname = '/dev/null';
-foreach ( @ARGV ? $ARGV : <> )
-{
- $fname = $_ if (/package.xml/)
-}
+$pear = "/usr/share/pear";
+
+@files = ();
+%req = ();
+
+foreach (@ARGV ? $ARGV : <> ) {
+ chomp;
+ $f = $_;
+ push @files, $f;
+ # skip non-php files
+ next unless ($f =~ /\.php$/);
+ open(F, "< $f") or die;
-open F, $fname;
+ if ($f =~ /$pear/) {
+ $file_dir = $f;
+ $file_dir =~ s|.*$pear/||;
+ $file_dir =~ s|/[^/]*$||;
+ } else {
+ $file_dir = undef;
+ }
-while (<F>) {
- if ( /\s+\<dep\s+type\=\"([a-zA-z]*)\"/ ) {
- $type = $1;
- die ("ERROR: Unsupported type: $type\n") if ( $type !~ /^(pkg|ext|php|prog|os|sapi|zend)$/i);
- # Default relation (as suggested by PEAR manual) is has
- $rel = "has";
- $rel = $1 if ( /rel="([a-zA-Z]*)"/ );
- die ("ERROR: Unsupported relation: $rel\n") if ( $rel !~ /^(has|eq|lt|le|gt|ge)$/ );
-
- # Check if we don't have some unsupported connection betweend relation and type
- die ("ERROR: Cannot use lt/le/gt/ge relation with prog/os/sapi type!\n") if ( $rel =~ /^(lt|le|gt|ge)$/ && $type =~ /^(prog|os|sapi)$/ );
+ while (<F>) {
+ # skip comments
+ next if (/^\s*(#|\/\/|\*|\/\*)/);
- # do we have version?
- $version = "";
- $version = $1 if ( /version="([a-zA-z0-9\.\+]*)"/ );
+ while (/(\W|^)(require|include)(_once)?
+ \s* \(? \s* ("([^"]*)"|'([^']*)')
+ \s* \)? \s* ;/xg) {
+ if ($5 ne "") {
+ $x = $5;
+ } elsif ($6 ne "") {
+ $x = $6;
+ } else {
+ next;
+ }
- # optional - actually this one is optional ;)
- # NOTE:
- # even though this attribute marks dependency as optional,
- # we will add it to Requires:
- $optional = "no";
- $optional = $1 if ( /optional="([a-zA-Z]*)"/ );
- die ("ERROR: Ambigous value of optional attribute: $optional\n") if ( $optional !~ /(yes|no)/i );
+ next if ($x =~ m|^\./| or $x =~ /\$/);
+ next unless ($x =~ /\.php$/);
+ $req{$x} = 1;
+ }
- # now, check if we need to pull out package/extension/whatever name
- $name = "";
- $name = "php" if ( $type =~ /php/ );
- $name = "$1" if ( $type !~ /php/ && /\>([a-zA-Z0-9\_\-]*)\</ );
-
- $relation = "";
- $relation = "<" if ( $rel eq "lt");
- $relation = "<=" if ( $rel eq "le");
- $relation = "=" if ( $rel eq "eq");
- $relation = ">=" if ( $rel eq "ge");
- $relation = ">" if ( $rel eq "gt");
- $relation = "=" if ( $rel eq "has");
- # die if we were unable to substitute relations
- die "ERROR: Unexpected relation! ($rel)\n" if ( $relation eq "");
-
- $req = "";
- $relver = "";
- $relver = "$relation $version" if ( $version !~ /^$/ );
- $req = "$name $relver" if ( $type =~ /(php|prog)/ );
- $req = "php-$name $relver" if ( $type =~ /ext/ );
- $req = "php-pear-$name" if ( $type =~ /pkg/ );
-
- push @req_arr, $req
+ next unless (defined $file_dir);
+
+ while (/(\W|^)(require|include)(_once)?
+ \s* \(? \s* dirname \s* \( \s* __FILE__ \s* \) \s* \. \s*
+ ("([^"]*)"|'([^']*)')
+ \s* \)? \s* ;/xg) {
+ if ($5 ne "") {
+ $x = $5;
+ } elsif ($6 ne "") {
+ $x = $6;
+ } else {
+ next;
+ }
+
+ next if ($x =~ /\$/);
+ next unless ($x =~ /\.php$/);
+
+ $x = "$file_dir/$x";
+ $x =~ s|/+|/|g;
+ $req{$x} = 1;
+ }
+ }
+}
- }
+f: for $f (keys %req) {
+ for $g (@files) { next f if ($g =~ /\Q$f\E$/); }
+ print "pear($f)\n";
}
-for $r (@req_arr) { print "$r\n"; }
+++ /dev/null
---- rpm-4.4.9/po/pl.po.orig 2007-05-21 13:46:34.000000000 +0200
-+++ rpm-4.4.9/po/pl.po 2007-05-22 20:01:36.707118912 +0200
-@@ -9,11 +9,11 @@
- #
- msgid ""
- msgstr ""
--"Project-Id-Version: rpm 4.4.8\n"
-+"Project-Id-Version: rpm 4.4.9\n"
- "Report-Msgid-Bugs-To: <rpm-devel@lists.dulug.duke.edu>\n"
- "POT-Creation-Date: 2007-05-21 07:46-0400\n"
--"PO-Revision-Date: 2006-02-28 20:20+0100\n"
--"Last-Translator: Arkadiusz Miskiewicz <arekm@pld-linux.org>\n"
-+"PO-Revision-Date: 2007-05-22 00:13+0200\n"
-+"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
- "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=ISO-8859-2\n"
-@@ -505,7 +505,7 @@
- #: build/files.c:1029
- #, c-format
- msgid "illegal _docdir_fmt: %s\n"
--msgstr ""
-+msgstr "niedozwolony _docdir_fmt: %s\n"
-
- #: build/files.c:1307
- #, c-format
-@@ -882,12 +882,12 @@
-
- #: build/parsePreamble.c:376
- msgid "No icon file in sources\n"
--msgstr ""
-+msgstr "Brak pliku ikony w ¼ród³ach\n"
-
- #: build/parsePreamble.c:393
--#, fuzzy, c-format
-+#, c-format
- msgid "Invalid icon URL: %s\n"
--msgstr "B³êdny znak %s: %s\n"
-+msgstr "B³±dny URL ikony: %s\n"
-
- #: build/parsePreamble.c:400
- #, c-format
-@@ -902,7 +902,7 @@
- #: build/parsePreamble.c:414
- #, c-format
- msgid "Icon %s is too big (max. %d bytes)\n"
--msgstr ""
-+msgstr "Ikona %s jest zbyt du¿a (maksimum to %d bajtów)\n"
-
- #: build/parsePreamble.c:424
- #, c-format
-@@ -927,7 +927,7 @@
- #: build/parsePreamble.c:544 build/parsePreamble.c:551
- #, c-format
- msgid "line %d: Illegal char '-' in %s: %s\n"
--msgstr "linia %d: Nielegalny znak '-' w %s: %s\n"
-+msgstr "linia %d: Niedozwolony znak '-' w %s: %s\n"
-
- #: build/parsePreamble.c:584
- #, c-format
-@@ -1049,14 +1049,14 @@
- msgstr "linia %d: B³êdny argument dla %%patch: %s\n"
-
- #: build/parsePrep.c:624
--#, fuzzy, c-format
-+#, c-format
- msgid "Missing %s%d %s: %s\n"
--msgstr "Brak %s w %s %s\n"
-+msgstr "Brak %s%d %s: %s\n"
-
- #: build/parsePrep.c:632
--#, fuzzy, c-format
-+#, c-format
- msgid "file %s missing: %s\n"
--msgstr "plik %s: %s\n"
-+msgstr "brak pliku %s: %s\n"
-
- #: build/parsePrep.c:640
- #, c-format
-@@ -1406,56 +1406,48 @@
- msgstr "(zbuforowane)"
-
- #: lib/depends.c:606
--#, fuzzy
- msgid "(function probe)"
--msgstr "(test makra)"
-+msgstr "(test funkcji)"
-
- #: lib/depends.c:625
- msgid "(user lookup)"
--msgstr ""
-+msgstr "(wyszukiwanie u¿ytkownika)"
-
- #: lib/depends.c:642
- msgid "(group lookup)"
--msgstr ""
-+msgstr "(wyszukiwanie grupy)"
-
- #: lib/depends.c:651
- msgid "(access probe)"
- msgstr "(test dostêpu)"
-
- #: lib/depends.c:673
--#, fuzzy
- msgid "(mtab probe)"
--msgstr "(test makra)"
-+msgstr "(test mtab)"
-
- #: lib/depends.c:728
--#, fuzzy
- msgid "(diskspace probe)"
--msgstr "(test dostêpu)"
-+msgstr "(test miejsca na dysku)"
-
- #: lib/depends.c:758
--#, fuzzy
- msgid "(digest probe)"
--msgstr "(test dostêpu)"
-+msgstr "(test skrótu)"
-
- #: lib/depends.c:771
--#, fuzzy
- msgid "(gnupg probe)"
--msgstr "(test makra)"
-+msgstr "(test gnupg)"
-
- #: lib/depends.c:784
--#, fuzzy
- msgid "(macro probe)"
- msgstr "(test makra)"
-
- #: lib/depends.c:812
--#, fuzzy
- msgid "(envvar probe)"
--msgstr "(test makra)"
-+msgstr "(test zmiennej ¶rodowiskowej)"
-
- #: lib/depends.c:839
--#, fuzzy
- msgid "(running probe)"
--msgstr "(test makra)"
-+msgstr "(test uruchomienia)"
-
- #: lib/depends.c:852
- msgid "(sysinfo provides)"
-@@ -2293,9 +2285,8 @@
- msgstr "<spec>"
-
- #: lib/poptQV.c:144
--#, fuzzy
- msgid "query source metadata from spec file parse"
--msgstr "buduj tylko pakiet ¼ród³owy z <pliku spec>"
-+msgstr "odpytaj metadane ¼ród³owe z analizy pliku spec"
-
- #: lib/poptQV.c:146
- msgid "query/verify package(s) from install transaction"
-@@ -2689,9 +2680,9 @@
- msgstr "%s: Fwrite nie powiod³o siê: %s\n"
-
- #: lib/rpmchecksig.c:122
--#, fuzzy, c-format
-+#, c-format
- msgid "%s: Fflush failed: %s\n"
--msgstr "%s: Fseek nie powiod³o siê: %s\n"
-+msgstr "%s: Fflush nie powiod³o siê: %s\n"
-
- #: lib/rpmchecksig.c:216 lib/rpmchecksig.c:755
- #, c-format
-@@ -2836,28 +2827,27 @@
- msgstr "dane pakietu mog± byæ w formacie archiwum tara ustar."
-
- #: lib/rpmds.c:1452
--#, fuzzy
- msgid "package payload can be compressed using lzma."
--msgstr "dane pakietu mog± byæ skompresowane bzipem2."
-+msgstr "dane pakietu mog± byæ skompresowane przy u¿yciu lzma."
-
- #: lib/rpmds.c:1455
- msgid "file digests can be other than MD5."
--msgstr ""
-+msgstr "skróty plików mog± byæ inne ni¿ MD5."
-
- #: lib/rpmds.c:1545 lib/rpmds.c:3535
--#, fuzzy, c-format
-+#, c-format
- msgid "%s:%d \"%s\" has invalid name. Skipping ...\n"
--msgstr "%s ma b³êdn± warto¶æ liczbow±, pominiêto\n"
-+msgstr "%s:%d \"%s\" ma b³êdn± nazwê. Pomijanie...\n"
-
- #: lib/rpmds.c:1569 lib/rpmds.c:3553
--#, fuzzy, c-format
-+#, c-format
- msgid "%s:%d \"%s\" has no comparison operator. Skipping ...\n"
--msgstr "\tlinia %d: \"%s\" nie ma operatora porównania. Pomijanie...\n"
-+msgstr "%s:%d \"%s\" nie ma operatora porównania. Pomijanie...\n"
-
- #: lib/rpmds.c:1580 lib/rpmds.c:3568
--#, fuzzy, c-format
-+#, c-format
- msgid "%s:%d \"%s\" has no EVR string. Skipping ...\n"
--msgstr "\tlinia %d: \"%s\" nie ma operatora porównania. Pomijanie...\n"
-+msgstr "%s:%d \"%s\" nie ma ³añcucha EVR. Pomijanie...\n"
-
- #: lib/rpmds.c:3534 lib/rpmds.c:3552 lib/rpmds.c:3564
- #, c-format
-@@ -2893,59 +2883,59 @@
- msgstr "pakiet %s ma niespe³nione %s: %s\n"
-
- #: lib/rpmfc.c:93
--#, fuzzy, c-format
-+#, c-format
- msgid "\texecv(%s) pid %d\n"
--msgstr "%s: %s(%s-%s-%s.%s)\texecv(%s) pid %d\n"
-+msgstr "\texecv(%s) pid %d\n"
-
- #: lib/rpmfc.c:99
--#, fuzzy, c-format
-+#, c-format
- msgid "Couldn't exec %s: %s\n"
- msgstr "Nie mo¿na uruchomiæ %s: %s\n"
-
- #: lib/rpmfc.c:104
--#, fuzzy, c-format
-+#, c-format
- msgid "Couldn't fork %s: %s\n"
--msgstr "Nie mo¿na otworzyæ %s: %s\n"
-+msgstr "Nie mo¿na wykonaæ fork na %s: %s\n"
-
- #: lib/rpmfc.c:189
--#, fuzzy, c-format
-+#, c-format
- msgid "\twaitpid(%d) rc %d status %x\n"
--msgstr "%s: waitpid(%d) rc %d status %x secs %u.%03u\n"
-+msgstr "\twaitpid(%d) rc %d status %x\n"
-
- #: lib/rpmfc.c:196
- #, c-format
- msgid "Command \"%s\" failed, exit(%d)\n"
--msgstr ""
-+msgstr "Polecenie \"%s\" nie powiod³o siê, zakoñczenie (z kodem %d)\n"
-
- #: lib/rpmfc.c:201
--#, fuzzy, c-format
-+#, c-format
- msgid "failed to write all data to %s\n"
--msgstr "Nie mo¿na zapisaæ danych do %s: %s\n"
-+msgstr "nie uda³o siê zapisaæ wszystkich danych do %s\n"
-
- #: lib/rpmfc.c:1003
--#, fuzzy, c-format
-+#, c-format
- msgid "magic_open(0x%x) failed: %s\n"
--msgstr "otwarcie %s nie powiod³o siê: %s\n"
-+msgstr "magic_open(0x%x) nie powiod³o siê: %s\n"
-
- #: lib/rpmfc.c:1011
--#, fuzzy, c-format
-+#, c-format
- msgid "magic_load(ms, \"%s\") failed: %s\n"
--msgstr "%s rmdir %s nie powiod³o siê: %s\n"
-+msgstr "magic_load(ms, \"%s\") nie powiod³o siê: %s\n"
-
- #: lib/rpmfc.c:1077
- #, c-format
- msgid "magic_file(ms, \"%s\") failed: mode %06o %s\n"
--msgstr ""
-+msgstr "magic_file(ms, \"%s\") nie powiod³o siê: uprawnienia %06o %s\n"
-
- #: lib/rpmfc.c:1295
--#, fuzzy, c-format
-+#, c-format
- msgid "Finding %s: %s\n"
--msgstr "Plik %s: %s\n"
-+msgstr "Szukanie %s: %s\n"
-
- #: lib/rpmfc.c:1301 lib/rpmfc.c:1312
--#, fuzzy, c-format
-+#, c-format
- msgid "Failed to find %s:\n"
--msgstr "Odczytanie %s nie powiod³o siê: %s.\n"
-+msgstr "Nie uda³o siê odnale¼æ %s:\n"
-
- #: lib/rpmfi.c:622
- #, c-format
-@@ -3070,9 +3060,9 @@
- msgstr "\tdodano pakiet binarny [%d]\n"
-
- #: lib/rpminstall.c:605
--#, fuzzy, c-format
-+#, c-format
- msgid "package file %s was skipped\n"
--msgstr "pakiet %s ma niespe³nione %s: %s\n"
-+msgstr "plik pakietu %s zosta³ pominiêty\n"
-
- #: lib/rpminstall.c:609
- #, c-format
-@@ -3143,9 +3133,9 @@
- msgstr "pakiet %s jest ju¿ zainstalowany"
-
- #: lib/rpmps.c:219
--#, fuzzy, c-format
-+#, c-format
- msgid "re-packaged package with %s: %s is missing"
--msgstr "\tPrzepakowany Pakiet %s...\n"
-+msgstr "przepakowany pakiet z %s: brak %s"
-
- #: lib/rpmps.c:224
- #, c-format
-@@ -3318,17 +3308,16 @@
- msgstr "Cechy dostarczane przez bie¿±ce uname:\n"
-
- #: lib/rpmrollback.c:389
--#, fuzzy
- msgid "Failed dependencies"
--msgstr "Niespe³nione zale¿no¶ci:\n"
-+msgstr "Niespe³nione zale¿no¶ci"
-
- #: lib/rpmrollback.c:394
- msgid "Ordering problems"
--msgstr ""
-+msgstr "Problemy z kolejno¶ci±"
-
- #: lib/rpmrollback.c:399
- msgid "Rollback problems"
--msgstr ""
-+msgstr "Problemy z wycofywaniem"
-
- #: lib/rpmrollback.c:518
- #, c-format
-@@ -3336,9 +3325,8 @@
- msgstr "Wy³±czanie TID z wycofania: %-24.24s (0x%08x)\n"
-
- #: lib/rpmrollback.c:620
--#, fuzzy
- msgid "Missing re-packaged package(s)"
--msgstr "Wykryto brakuj±ce przepakowane pakiety:\n"
-+msgstr "Brak przepakowywanych pakietów"
-
- #: lib/rpmrollback.c:628
- #, c-format
-@@ -3601,14 +3589,14 @@
- msgstr "wy³±czanie katalogu %s\n"
-
- #: lib/transaction.c:1013
--#, fuzzy, c-format
-+#, c-format
- msgid "rpmdb erase failed. NEVRA: %s\n"
--msgstr "%s rmdir %s nie powiod³o siê: %s\n"
-+msgstr "usuwanie z rpmdb nie powiod³o siê. NEVRA: %s\n"
-
- #: lib/transaction.c:1031
--#, fuzzy, c-format
-+#, c-format
- msgid "Rollback to %-24.24s (0x%08x)\n"
--msgstr "Cel wycofania: %-24.24s (0x%08x)\n"
-+msgstr "Wycofanie do %-24.24s (0x%08x)\n"
-
- #: lib/transaction.c:1178
- msgid "Invalid number of transaction elements.\n"
-@@ -4375,274 +4363,183 @@
- msgid "check Requires: against Provides: for dependency closure"
- msgstr "sprawd¼ Requires: wzglêdem Provides: dla dope³nienia zale¿no¶ci"
-
--#~ msgid "Rolling back successful transactions to %-24.24s (0x%08x).\n"
--#~ msgstr "Cofanie udanych transakcji do %-24.24s (0x%08x).\n"
--
--#~ msgid "Transaction failed...rolling back\n"
--#~ msgstr "Transakcja nie powiod³a siê... wycofywanie\n"
--
--#, fuzzy
--#~ msgid "Failed transaction: %-24.24s(0x%08x)\n"
--#~ msgstr "Nieudana transakcja: %-24.24s(0x%08x)\n"
--
--#~ msgid "Could not resolve semaphore_backout macro!\n"
--#~ msgstr "Nie uda³o siê rozwi±zaæ makra semaphore_backout!\n"
--
--#~ msgid "Creating semaphore %s...\n"
--#~ msgstr "Tworzenie semafora %s...\n"
--
--#~ msgid "Could not order auto-rollback transaction!\n"
--#~ msgstr "Nie uda³o siê wykonaæ transakcji automatycznego wycofania!\n"
--
--#~ msgid "Rolling back successful transactions to %-24.24s (0x%08x)\n"
--#~ msgstr "Cofanie udanych transakcji do %-24.24s (0x%08x)\n"
--
--#~ msgid "Removing semaphore %s...\n"
--#~ msgstr "Usuwanie semafora %s...\n"
--
--#~ msgid "Getting repackaged header from transaction element\n"
--#~ msgstr "Pobieranie przepakowanego nag³ówka z elementu transakcji\n"
--
--#~ msgid "\tLooking for %s...\n"
--#~ msgstr "\tPoszukiwanie %s...\n"
--
--#~ msgid "\tRepackaged package not found!.\n"
--#~ msgstr "\tPrzepakowany pakiet nie znaleziony!.\n"
--
--#~ msgid "\t\tName: %s.\n"
--#~ msgstr "\t\tNazwa: %s.\n"
--
--#~ msgid "Processing failed install element %s for autorollback.\n"
--#~ msgstr ""
--#~ "Przetwarzanie nieudanego elementu instalacji %s do automatycznego "
--#~ "wycofania.\n"
--
--#~ msgid "\tForce adding header to rpmdb.\n"
--#~ msgstr "\tWymuszenie dodania nag³ówka do rpmdb.\n"
-+#: rpmpopt:47 rpmpopt:371 rpmpopt:482
-+msgid "list install/erase scriptlets from package(s)"
-+msgstr "wypisz skrypty (de)instalacyjne z pakietu(ów)"
-+
-+#: rpmpopt:51
-+msgid "display directories needed, but not provided, by packages"
-+msgstr "wy¶wietl katalogi wymagane ale nie dostarczane przez pakiety"
-+
-+#: rpmpopt:55
-+msgid "set permissions of files in a package"
-+msgstr "ustaw uprawnienia plików w pakiecie"
-+
-+#: rpmpopt:60
-+msgid "set user/group ownership of files in a package"
-+msgstr "ustaw u¿ytkownika/grupê w³a¶ciciela plików w pakiecie"
-+
-+#: rpmpopt:64 rpmpopt:375 rpmpopt:486
-+msgid "list capabilities this package conflicts with"
-+msgstr "wypisz w³asno¶ci z którymi ten pakiet jest w konflikcie"
-+
-+#: rpmpopt:67 rpmpopt:378 rpmpopt:489
-+msgid "list other packages removed by installing this package"
-+msgstr "wypisz inne pakiety usuwane przy instalacji tego pakietu"
-+
-+#: rpmpopt:70 rpmpopt:381 rpmpopt:492
-+msgid "list capabilities that this package provides"
-+msgstr "wypisz w³asno¶ci dostarczane przez ten pakiet"
-+
-+#: rpmpopt:74 rpmpopt:385 rpmpopt:496
-+msgid "list capabilities required by package(s)"
-+msgstr "wypisz w³asno¶ci wymagane przez pakiet(y)"
-+
-+#: rpmpopt:78 rpmpopt:81 rpmpopt:389 rpmpopt:392
-+#: rpmpopt:500 rpmpopt:503
-+msgid "list enhancements suggested by package(s)"
-+msgstr "wypisz rozszerzenia sugerowane przez pakiet(y)"
-+
-+#: rpmpopt:94 rpmpopt:405 rpmpopt:515
-+msgid "list descriptive information from package(s)"
-+msgstr "wypisz informacje opisowe z pakietu(ów)"
-+
-+#: rpmpopt:97 rpmpopt:408 rpmpopt:518
-+msgid "list change logs for this package"
-+msgstr "wypisz kronikê zmian dla tego pakietu"
-+
-+#: rpmpopt:100 rpmpopt:411 rpmpopt:521
-+msgid "list metadata in xml"
-+msgstr "wypisz metadane w formacie xml"
-+
-+#: rpmpopt:102 rpmpopt:413 rpmpopt:523
-+msgid "list metadata in yaml"
-+msgstr "wypisz metadane w formacie yaml"
-+
-+#: rpmpopt:108 rpmpopt:419 rpmpopt:529
-+msgid "list trigger scriptlets from package(s)"
-+msgstr "wypisz skrypty trigger z pakietu(ów)"
-+
-+#: rpmpopt:112 rpmpopt:423 rpmpopt:533
-+msgid "list package(s) by install time, most recent first"
-+msgstr "wypisz pakiet(y) wed³ug czasu instalacji od naj¶wie¿szego"
-+
-+#: rpmpopt:115 rpmpopt:426 rpmpopt:536
-+msgid "list duplicated packages"
-+msgstr "wypisz pakiety wielokrotne"
-+
-+#: rpmpopt:118 rpmpopt:429 rpmpopt:539
-+msgid "list all files from each package"
-+msgstr "wypisz wszystkie pliki z ka¿dego pakietu"
-+
-+#: rpmpopt:121 rpmpopt:432 rpmpopt:542
-+msgid "list file names with classes"
-+msgstr "wypisz nazwy plików z klasami"
-+
-+#: rpmpopt:124 rpmpopt:435 rpmpopt:545
-+msgid "list file names with colors"
-+msgstr "wypisz nazwy plików z kolorami"
-+
-+#: rpmpopt:127
-+msgid "list file names with security context from header"
-+msgstr "wypisz nazwy plików z kontekstami bezpieczeñstwa z nag³ówka"
-+
-+#: rpmpopt:130 rpmpopt:441 rpmpopt:551
-+msgid "list file names with security context from file system"
-+msgstr "wypisz nazwy plików z kontekstami bezpieczeñstwa z systemu plików"
-+
-+#: rpmpopt:133 rpmpopt:444 rpmpopt:554
-+msgid "list file names with security context from policy RE"
-+msgstr "wypisz nazwy plików z kontekstami bezpieczeñstwa z RE polityki"
-+
-+#: rpmpopt:136 rpmpopt:447 rpmpopt:557
-+msgid "list file names with provides"
-+msgstr "wypisz nazwy plików z dostarczanymi w³asno¶ciami"
-+
-+#: rpmpopt:139 rpmpopt:450 rpmpopt:560
-+msgid "list file names with requires"
-+msgstr "wypisz nazwy plików z wymaganiami"
-
--#~ msgid "\tCould not add failed package header to db!\n"
--#~ msgstr "\tNie uda³o siê dodaæ nag³ówka nieudanego pakietu do bazy!\n"
--
--#~ msgid "%s: Unknown transaction element type!\n"
--#~ msgstr "%s: Nieznany typ elementu transakcji!\n"
--
--#~ msgid "TYPE: %d\n"
--#~ msgstr "RODZAJ: %d\n"
--
--#~ msgid "Processing install element for autorollback...\n"
--#~ msgstr "Przetwarzanie elementu instalacji do automatycznego wycofania...\n"
--
--#~ msgid "\tNEVRA: %s\n"
--#~ msgstr "\tNEVRA: %s\n"
--
--#~ msgid "Could not get install element database instance!\n"
--#~ msgstr "Nie uda³o siê uzyskaæ instancji bazy danych elementu instalacji!\n"
--
--#~ msgid "Could not get header for auto-rollback transaction!\n"
--#~ msgstr ""
--#~ "Nie uda³o siê uzyskaæ nag³ówka do transakcji automatycznego wycofania!\n"
--
--#~ msgid "\tAdded repackaged package header: %s.\n"
--#~ msgstr "\tDodano przepakowany nag³ówek pakietu: %s.\n"
--
--#~ msgid "\tAdded erase element.\n"
--#~ msgstr "\tDodano element usuniêcia.\n"
--
--#~ msgid "Could not get repackaged header for auto-rollback transaction!\n"
--#~ msgstr ""
--#~ "Nie uda³o siê uzyskaæ przepakowanego nag³ówka do transakcji "
--#~ "automatycznego wycofania!\n"
--
--#~ msgid "Processing erase element for autorollback...\n"
--#~ msgstr "Przetwarzanie elementu usuniêcia do automatycznego wycofania...\n"
--
--#~ msgid "\tErase element(s) already added.\n"
--#~ msgstr "\tElement(y) usuniêcia ju¿ dodane.\n"
--
--#~ msgid "\tAdded repackaged package %s.\n"
--#~ msgstr "\tDodano przepakowany pakiet %s.\n"
--
--#~ msgid "Could not add erase element to auto-rollback transaction.\n"
--#~ msgstr ""
--#~ "Nie uda³o siê dodaæ elementu usuniêcia do transakcji automatycznego "
--#~ "wycofania.\n"
--
--#~ msgid "\tNo repackaged package...nothing to do.\n"
--#~ msgstr "\tNie ma przepakowanych pakietów... nie ma nic do zrobienia.\n"
--
--#~ msgid "Failure reading repackaged package!\n"
--#~ msgstr "B³±d podczas odczytu przepakowanego pakietu!\n"
--
--#~ msgid "Creating auto-rollback transaction\n"
--#~ msgstr "Tworzenie transakcji automatycznego wycofania\n"
--
--#~ msgid "Adding %s to autorollback transaction.\n"
--#~ msgstr "Dodawanie %s do transakcji automatycznego wycofania.\n"
--
--#~ msgid "Could not add transaction element to autorollback!.\n"
--#~ msgstr ""
--#~ "Nie uda³o siê dodaæ elementu transakcji do automatycznego wycofania!\n"
--
--#~ msgid "%s:%d \"%s\" must begin with alphanumeric, '_', '/' or '%%'.\n"
--#~ msgstr "%s:%d \"%s\" musi zaczynaæ siê liter±, cyfr±, '_', '/' lub '%%'.\n"
--
--#~ msgid "%s:%d No comparison operator found.\n"
--#~ msgstr "%s:%d Brak operatora porównania.\n"
--
--#~ msgid "%s:%d No EVR comparison value found.\n"
--#~ msgstr "%s:%d Nie znaleziono warto¶ci do porównania EVR.\n"
--
--#~ msgid ""
--#~ "\tline %d: \"%s\" must begin with alphanumeric, '_', '/' or '%%'. "
--#~ "Skipping ...\n"
--#~ msgstr ""
--#~ "\tlinia %d: \"%s\" musi zaczynaæ siê liter±, cyfr±, '_', '/' lub '%%'. "
--#~ "Pomijanie...\n"
--
--#~ msgid "argument is not an RPM package\n"
--#~ msgstr "argument nie jest pakietem RPM\n"
--
--#~ msgid "error reading header from package\n"
--#~ msgstr "b³±d odczytu nag³ówka z pakietu\n"
--
--#~ msgid "cannot re-open payload: %s\n"
--#~ msgstr "nie mo¿na ponownie otworzyæ danych: %s\n"
--
--#, fuzzy
--#~ msgid "%s failed\n"
--#~ msgstr "%s nie powiod³o siê: %s\n"
--
--#~ msgid "package %s is intended for a %s operating system"
--#~ msgstr "pakiet %s jest przeznaczony dla systemu operacyjnego %s"
--
--#~ msgid "error reading from file %s\n"
--#~ msgstr "b³±d czytania z pliku %s\n"
--
--#~ msgid "list install/erase scriptlets from package(s)"
--#~ msgstr "wypisz skrypty (de)instalacyjne z pakietu(ów)"
--
--#~ msgid "set permissions of files in a package"
--#~ msgstr "ustaw uprawnienia plików w pakiecie"
--
--#~ msgid "set user/group ownership of files in a package"
--#~ msgstr "ustaw u¿ytkownika/grupê w³a¶ciciela plików w pakiecie"
--
--#~ msgid "list capabilities this package conflicts with"
--#~ msgstr "wypisz w³asno¶ci z którymi ten pakiet jest w konflikcie"
--
--#~ msgid "list other packages removed by installing this package"
--#~ msgstr "wypisz inne pakiety usuwane przy instalacji tego pakietu"
--
--#~ msgid "list capabilities that this package provides"
--#~ msgstr "wypisz w³asno¶ci dostarczane przez ten pakiet"
--
--#~ msgid "list capabilities required by package(s)"
--#~ msgstr "wypisz w³asno¶ci wymagane przez pakiet(y)"
--
--#~ msgid "list descriptive information from package(s)"
--#~ msgstr "wypisz informacje opisowe z pakietu(ów)"
--
--#~ msgid "list change logs for this package"
--#~ msgstr "wypisz kronikê zmian dla tego pakietu"
--
--#~ msgid "list trigger scriptlets from package(s)"
--#~ msgstr "wypisz skrypty trigger z pakietu(ów)"
--
--#~ msgid "list package(s) by install time, most recent first"
--#~ msgstr "wypisz pakiet(y) wed³ug czasu instalacji od naj¶wie¿szego"
--
--#~ msgid "list all files from each package"
--#~ msgstr "wypisz wszystkie pliki z ka¿dego pakietu"
--
--#~ msgid ""
--#~ "find package name that contains a provided capability (needs rpmdb-redhat "
--#~ "package installed)"
--#~ msgstr ""
--#~ "znajd¼ nazwê pakietu, który dostarcza w³asno¶æ (wymaga zainstalowanego "
--#~ "pakietu rpmdb-redhat)"
--
--#~ msgid "set buildroot <policy> (e.g. compress man pages)"
--#~ msgstr "ustaw <politykê> buildroot (np. kompresowanie stron manuala)"
--
--#~ msgid "<policy>"
--#~ msgstr "<polityka>"
--
--#~ msgid "enable configure <option> for build"
--#~ msgstr "w³±cz <opcjê> konfiguracji przy budowaniu"
--
--#~ msgid "<option>"
--#~ msgstr "<opcja>"
--
--#~ msgid "disable configure <option> for build"
--#~ msgstr "wy³±cz <opcjê> konfiguracji przy budowaniu"
--
--#~ msgid "use database in DIRECTORY"
--#~ msgstr "u¿yj bazy danych w KATALOGu"
--
--#~ msgid "DIRECTORY"
--#~ msgstr "KATALOG"
--
--#~ msgid "don't verify header+payload signature"
--#~ msgstr "nie sprawdzaj sygnatury nag³ówka+danych"
--
--#~ msgid "don't update cache database, only print package paths"
--#~ msgstr "nie uaktualniaj bazy danych bufora, tylko wypisz ¶cie¿ki pakietu"
--
--#~ msgid "File tree walk options:"
--#~ msgstr "Opcje przechodzenia po drzewie plików:"
--
--#~ msgid "%s: %%{_cache_dbpath} macro is mis-configured.\n"
--#~ msgstr "%s: makro %%{_cache_dbpath} jest b³êdnie skonfigurowane.\n"
--
--#~ msgid "%s: cache operation failed: ec %d.\n"
--#~ msgstr "%s: operacja na cache nie powiod³a siê: ec %d.\n"
--
--#~ msgid "%s: read manifest failed: %s\n"
--#~ msgstr "%s: odczyt \"manifestu\" nie powiód³ siê: %s\n"
--
--#~ msgid "Spec file can't use BuildRoot\n"
--#~ msgstr "Plik spec nie mo¿e u¿ywaæ BuildRoot\n"
--
--#~ msgid "buildroot already specified, ignoring %s\n"
--#~ msgstr "buildroot by³ ju¿ wcze¶niej podany, %s jest ignorowany\n"
--
--#~ msgid "override build root"
--#~ msgstr "wymu¶ build root"
--
--#~ msgid " %s[%d]: %s\n"
--#~ msgstr " %s[%d]: %s\n"
--
--#~ msgid "Target buffer overflow\n"
--#~ msgstr "Przepe³nienie bufora docelowego\n"
--
--#~ msgid "Building for target %s\n"
--#~ msgstr "Budowanie dla %s\n"
--
--#~ msgid "Internal error in argument processing (%d) :-(\n"
--#~ msgstr "B³±d wewnêtrzny w przetwarzaniu argumentu (%d) :-(\n"
--
--#~ msgid "\tMatches found.\n"
--#~ msgstr "\tPasuj±cych znaleziono.\n"
--
--#~ msgid "\tNo matches found.\n"
--#~ msgstr "\tNie znaleziono pasuj±cych.\n"
-+#: rpmpopt:142
-+msgid ""
-+"find package name that contains a provided capability (needs rpmdb-vendor "
-+"package installed)"
-+msgstr ""
-+"znajd¼ nazwê pakietu, który zawiera dostarczan± w³asno¶æ (wymaga "
-+"zainstalowanego pakietu rpmdb-vendor)"
-
--#~ msgid "\tREMOVETID matched INSTALLTID.\n"
--#~ msgstr "\tREMOVETID dopasowano do INSTALLTID.\n"
-+#: rpmpopt:145
-+msgid ""
-+"find package name that contains a required capability (needs rpmdb-vendor "
-+"package installed)"
-+msgstr ""
-+"znajd¼ nazwê pakietu, który zawiera wymagan± w³asno¶æ (wymaga "
-+"zainstalowanego pakietu rpmdb-vendor)"
-
--#~ msgid "Couldn't download nosource %s: %s\n"
--#~ msgstr "Nie mo¿na ¶ci±gn±æ pliku nosource %s: %s\n"
-+#: rpmpopt:150
-+msgid "Failed transactions will be rolled back automatically"
-+msgstr "Transakcje zakoñczone niepowodzeniem zostan± wycofane automatycznie"
-+
-+#: rpmpopt:154
-+msgid "display package(s) previously installed"
-+msgstr "wy¶wietl pakiet(y) zainstalowane wcze¶niej"
-+
-+#: rpmpopt:157
-+msgid "display package(s) which replaced"
-+msgstr "wy¶wietl zastêpowane pakiet(y)"
-+
-+#: rpmpopt:168
-+msgid "set buildroot <policy> (e.g. compress man pages)"
-+msgstr "ustaw <politykê> buildroot (np. kompresowanie stron manuala)"
-+
-+#: rpmpopt:169
-+msgid "<policy>"
-+msgstr "<polityka>"
-+
-+#: rpmpopt:255 rpmpopt:270 rpmpopt:285
-+msgid "enable configure <option> for build"
-+msgstr "w³±cz <opcjê> konfiguracji przy budowaniu"
-+
-+#: rpmpopt:256 rpmpopt:259 rpmpopt:271 rpmpopt:274
-+#: rpmpopt:286 rpmpopt:289
-+msgid "<option>"
-+msgstr "<opcja>"
-+
-+#: rpmpopt:258 rpmpopt:273 rpmpopt:288
-+msgid "disable configure <option> for build"
-+msgstr "wy³±cz <opcjê> konfiguracji przy budowaniu"
-+
-+#: rpmpopt:262 rpmpopt:277 rpmpopt:295 rpmpopt:303
-+#: rpmpopt:311 rpmpopt:319 rpmpopt:327 rpmpopt:335
-+#: rpmpopt:343 rpmpopt:454 rpmpopt:564 rpmpopt:572
-+msgid "use database in DIRECTORY"
-+msgstr "u¿yj bazy danych w KATALOGu"
-+
-+#: rpmpopt:263 rpmpopt:278 rpmpopt:292 rpmpopt:296
-+#: rpmpopt:304 rpmpopt:312 rpmpopt:320 rpmpopt:328
-+#: rpmpopt:336 rpmpopt:344 rpmpopt:455 rpmpopt:565
-+#: rpmpopt:573
-+msgid "DIRECTORY"
-+msgstr "KATALOG"
-
--# --- from popt/po/pl.po (in popt.h, not in .pot) ---
--#~ msgid "Options implemented via popt alias/exec:"
--#~ msgstr "Opcje zaimplementowane poprzez popt alias/exec:"
-+#: rpmpopt:291
-+msgid "override build root"
-+msgstr "wymu¶ build root"
-+
-+#: rpmpopt:438 rpmpopt:548
-+msgid "list file names with security context"
-+msgstr "wypisz nazwy plików z kontekstami bezpieczeñstwa"
-+
-+# --- from popt/po/pl.po (in popt.h, displayed using rpm domain)
-+msgid "Options implemented via popt alias/exec:"
-+msgstr "Opcje zaimplementowane poprzez popt alias/exec:"
-
--#~ msgid "Help options:"
--#~ msgstr "Opcje pomocy:"
-+msgid "Help options:"
-+msgstr "Opcje pomocy:"
-
- # --- from popt (displayed using rpm domain)
--#~ msgid "Show this help message"
--#~ msgstr "Poka¿ tê pomoc"
-+msgid "Show this help message"
-+msgstr "Poka¿ tê pomoc"
-
--#~ msgid "Display brief usage message"
--#~ msgstr "Wy¶wietl skrócony sposób u¿ycia"
-+msgid "Display brief usage message"
-+msgstr "Wy¶wietl skrócony sposób u¿ycia"
--- /dev/null
+--- rpm-4.4.9/rpmpopt.in~ 2007-12-22 19:32:34.458262026 +0200
++++ rpm-4.4.9/rpmpopt.in 2007-12-22 17:29:07.000000000 +0200
+@@ -55,8 +55,8 @@
+ --POPTdesc=$"set permissions of files in a package"
+
+ rpm alias --setugids -q --qf \
+- '[ch %{FILEUSERNAME:shescape} %{FILEGROUPNAME:shescape} %{FILENAMES:shescape}\n]' \
+- --pipe "(echo 'ch() { chown -- \"$1\" \"$3\";chgrp -- \"$2\" \"$3\"; }';grep -v \(none\))|sh" \
++ '[chown %{FILEUSERNAME:shescape}:%{FILEGROUPNAME:shescape} %{FILENAMES:shescape}\n]' \
++ --pipe "grep -v '(none)' | sh" \
+ --POPTdesc=$"set user/group ownership of files in a package"
+
+ rpm alias --conflicts --qf \
+++ /dev/null
---- rpm-4.0.4/configure.ac.wiget Tue Feb 12 23:26:36 2002
-+++ rpm-4.0.4/configure.ac Tue Feb 12 23:27:46 2002
-@@ -1166,6 +1166,7 @@
-
- AC_OUTPUT([ Doxyfile Makefile rpmrc macros platform rpmpopt rpm.spec
- scripts/perl.req scripts/perl.prov
-+ scripts/php.req scripts/php.prov
- rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
- scripts/Makefile scripts/brp-redhat tools/Makefile
- tests/Makefile tests/rpmrc tests/macros tests/hello-test/Makefile
+++ /dev/null
---- rpm-4.4.8/rpmio/macro.c.orig 2007-01-21 21:37:58.000000000 +0100
-+++ rpm-4.4.8/rpmio/macro.c 2007-04-08 19:50:49.214644921 +0200
-@@ -942,7 +942,8 @@
- /*@globals rpmGlobalMacroContext @*/
- /*@modifies mb, rpmGlobalMacroContext @*/
- {
-- char buf[BUFSIZ], *b, *be;
-+ static char buf[BUFSIZ];
-+ char *b, *be;
- char aname[16];
- const char *opts, *o;
- int argc = 0;
-@@ -1850,7 +1851,7 @@
- return 0;
- if (mc == NULL) mc = rpmGlobalMacroContext;
-
-- tbuf = alloca(slen + 1);
-+ tbuf = xmalloc(slen + 1);
- memset(tbuf, 0, (slen + 1));
-
- mb->s = sbuf;
-@@ -1870,6 +1871,7 @@
- rpmError(RPMERR_BADSPEC, _("Macro expansion too big for target buffer\n"));
- else
- strncpy(sbuf, tbuf, (slen - mb->nb + 1));
-+ free(tbuf);
-
- return rc;
- }
-@@ -2308,7 +2310,7 @@
- const char *
- rpmGetPath(const char *path, ...)
- {
-- char buf[BUFSIZ];
-+ static char buf[BUFSIZ];
- const char * s;
- char * t, * te;
- va_list ap;
--- /dev/null
+Index: rpm/rpmdb/db3.c
+RCS File: /v/rpm/cvs/rpm/rpmdb/db3.c,v
+rcsdiff -q -kk '-r1.71' '-r1.72' -u '/v/rpm/cvs/rpm/rpmdb/db3.c,v' 2>/dev/null
+--- db3.c 2007/08/18 23:40:36 1.71
++++ db3.c 2007/09/24 02:38:57 1.72
+@@ -275,12 +275,21 @@
+ fileSystem @*/
+ /*@modifies dbi, *dbenvp, fileSystem @*/
+ {
++ static int oneshot = 0;
+ rpmdb rpmdb = dbi->dbi_rpmdb;
+ DB_ENV *dbenv = NULL;
+ int eflags;
+ int rc;
+ int xx;
+
++ if (!oneshot) {
++#if (DB_VERSION_MAJOR == 3 && DB_VERSION_MINOR != 0) || (DB_VERSION_MAJOR == 4)
++ xx = db_env_set_func_open(Open);
++ xx = cvtdberr(dbi, "db_env_set_func_open", xx, _debug);
++#endif
++ oneshot++;
++ }
++
+ if (dbenvp == NULL)
+ return 1;
+
+Index: rpm/rpmdb/rpmdb.c
+RCS File: /v/rpm/cvs/rpm/rpmdb/rpmdb.c,v
+rcsdiff -q -kk '-r1.158' '-r1.159' -u '/v/rpm/cvs/rpm/rpmdb/rpmdb.c,v' 2>/dev/null
+--- rpmdb.c 2007/09/09 19:06:51 1.158
++++ rpmdb.c 2007/09/24 02:38:57 1.159
+@@ -3618,8 +3618,9 @@
+ if (db == NULL) return 0;
+
+ mi = rpmdbInitIterator(db, RPMTAG_BASENAMES, NULL, 0);
+- if (mi == NULL) /* XXX should never happen */
+- return 0;
++assert(mi); /* XXX will never happen. */
++ if (mi == NULL)
++ return 2;
+
+ key = &mi->mi_key;
+ data = &mi->mi_data;
+Index: rpm/rpmio/librpmio.vers
+RCS File: /v/rpm/cvs/rpm/rpmio/librpmio.vers,v
+rcsdiff -q -kk '-r2.12' '-r2.13' -u '/v/rpm/cvs/rpm/rpmio/librpmio.vers,v' 2>/dev/null
+--- librpmio.vers 2007/09/09 20:32:43 2.12
++++ librpmio.vers 2007/09/24 02:38:57 2.13
+@@ -140,6 +140,8 @@
+ _Mknod;
+ Mount;
+ noLibio;
++ Open;
++ _Open;
+ Opendir;
+ _Opendir;
+ pgpArmorKeyTbl;
+Index: rpm/rpmio/rpmio.h
+RCS File: /v/rpm/cvs/rpm/rpmio/rpmio.h,v
+rcsdiff -q -kk '-r1.57' '-r1.58' -u '/v/rpm/cvs/rpm/rpmio/rpmio.h,v' 2>/dev/null
+--- rpmio.h 2007/08/28 20:45:49 1.57
++++ rpmio.h 2007/09/24 02:38:57 1.58
+@@ -342,11 +342,22 @@
+ /*@globals errno, h_errno, fileSystem, internalState @*/
+ /*@modifies errno, fileSystem, internalState @*/;
+
++/*@unchecked@*/ /*@observer@*/ /*@null@*/
++extern const char * _chroot_prefix;
++
+ /**
+ * chroot(2) clone.
+ * @todo Implement remotely.
+ */
+ int Chroot(const char * path)
++ /*@globals _chroot_prefix, errno, fileSystem, internalState @*/
++ /*@modifies _chroot_prefix, errno, fileSystem, internalState @*/;
++
++/**
++ * open(2) clone.
++ * @todo Implement remotely.
++ */
++int Open(const char * path, int flags, mode_t mode)
+ /*@globals errno, fileSystem, internalState @*/
+ /*@modifies errno, fileSystem, internalState @*/;
+
+Index: rpm/rpmio/rpmrpc.c
+RCS File: /v/rpm/cvs/rpm/rpmio/rpmrpc.c,v
+rcsdiff -q -kk '-r2.54' '-r2.55' -u '/v/rpm/cvs/rpm/rpmio/rpmrpc.c,v' 2>/dev/null
+--- rpmrpc.c 2007/07/10 18:00:30 2.54
++++ rpmrpc.c 2007/09/24 02:38:57 2.55
+@@ -160,6 +160,9 @@
+ return rmdir(path);
+ }
+
++/*@unchecked@*/
++const char * _chroot_prefix = NULL;
++
+ int Chroot(const char * path)
+ {
+ const char * lpath;
+@@ -183,11 +186,56 @@
+ return -2;
+ /*@notreached@*/ break;
+ }
++
++ _chroot_prefix = _free(_chroot_prefix);
++ if (strcmp(path, "."))
++ _chroot_prefix = rpmGetPath(path, NULL);
++
+ /*@-superuser@*/
+ return chroot(path);
+ /*@=superuser@*/
+ }
+
++int Open(const char * path, int flags, mode_t mode)
++{
++ const char * lpath;
++ int ut = urlPath(path, &lpath);
++
++if (_rpmio_debug)
++fprintf(stderr, "*** Open(%s, 0x%x, 0%o)\n", path, flags, mode);
++ switch (ut) {
++ case URL_IS_PATH:
++ path = lpath;
++ /*@fallthrough@*/
++ case URL_IS_UNKNOWN:
++ break;
++ case URL_IS_DASH:
++ case URL_IS_HKP:
++ case URL_IS_FTP: /* XXX TODO: implement. */
++ case URL_IS_HTTPS: /* XXX TODO: implement. */
++ case URL_IS_HTTP: /* XXX TODO: implement. */
++ default:
++ errno = EINVAL; /* XXX W2DO? */
++ return -2;
++ /*@notreached@*/ break;
++ }
++
++ if (_chroot_prefix && _chroot_prefix[0] == '/' && _chroot_prefix[1] != '\0')
++ {
++ size_t nb = strlen(_chroot_prefix);
++ size_t ob = strlen(path);
++ while (nb > 0 && _chroot_prefix[nb-1] == '/')
++ nb--;
++ if (ob > nb && !strncmp(path, _chroot_prefix, nb) && path[nb] == '/')
++ path += nb;
++ }
++#ifdef NOTYET /* XXX likely sane default. */
++ if (mode == 0)
++ mode = 0644;
++#endif
++ return open(path, flags, mode);
++}
++
+ /* XXX rpmdb.c: analogue to rename(2). */
+
+ int Rename (const char * oldpath, const char * newpath)
--- /dev/null
+Index: rpm/rpmdb/rpmdb.c
+--- rpm/rpmdb/rpmdb.c 2007/10/22 02:48:42 1.195
++++ rpm/rpmdb/rpmdb.c 2007/11/02 03:07:46 1.196
+@@ -3917,7 +3917,7 @@
+ }
+ dbpath = rootdbpath = rpmGetPath(prefix, tfn, NULL);
+ if (!(prefix[0] == '/' && prefix[1] == '\0'))
+- dbpath += strlen(prefix) - 1;
++ dbpath += strlen(prefix);
+ tfn = _free(tfn);
+
+ /*@-nullpass@*/
--- /dev/null
+--- rpm-4.4.9/rpmrc.in~ 2008-01-10 12:40:27.020788566 +0200
++++ rpm-4.4.2/rpmrc.in 2007-11-27 23:25:28.577554219 +0200
+@@ -13,67 +13,65 @@
+ # Values for RPM_OPT_FLAGS for various platforms
+
+ # "fat" binary with both archs, for Darwin
+-optflags: fat -O2 -arch i386 -arch ppc%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_fat: %{specflags_fat}}}
++optflags: fat -O2 -arch i386 -arch ppc %{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_fat: %{specflags_fat}}}
+
+-optflags: i386 -O2 -fno-strict-aliasing -fwrapv -march=i386%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i386: %{specflags_i386}}}
+-optflags: i486 -O2 -fno-strict-aliasing -fwrapv -march=i486%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i486: %{specflags_i486}}}
+-optflags: i586 -O2 -fno-strict-aliasing -fwrapv -march=i586%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i586: %{specflags_i586}}}
+-optflags: i686 -O2 -fno-strict-aliasing -fwrapv -march=i686 -mtune=pentium4%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i686: %{specflags_i686}}}
+-optflags: pentium3 -O2 -fno-strict-aliasing -fwrapv -march=pentium3%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_pentium3: %{specflags_pentium3}}}
+-optflags: pentium4 -O2 -fno-strict-aliasing -fwrapv -march=pentium4%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_pentium4: %{specflags_pentium4}}}
+-optflags: athlon -O2 -fno-strict-aliasing -fwrapv -march=athlon%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_athlon: %{specflags_athlon}}}
+-optflags: ia64 -O2 -fno-strict-aliasing -fwrapv%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia64: %{specflags_ia64}}}
+-optflags: x86_64 -O2 -fno-strict-aliasing -fwrapv -march=x86-64%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_x86_64: %{specflags_x86_64}}}
+-optflags: amd64 -O2 -fno-strict-aliasing -fwrapv -march=k8%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_amd64: %{specflags_amd64}}}
+-optflags: ia32e -O2 -fno-strict-aliasing -fwrapv -march=nocona%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32e: %{specflags_ia32e}}}
+-
+-optflags: alpha -O2 -fno-strict-aliasing -fwrapv -mieee%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}}
+-optflags: alphaev5 -O2 -fno-strict-aliasing -fwrapv -mieee -mcpu=ev5%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev5: %{specflags_alphaev5}}}
+-optflags: alphaev56 -O2 -fno-strict-aliasing -fwrapv -mieee -mcpu=ev56%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev56: %{specflags_alphaev56}}}
+-optflags: alphapca56 -O2 -fno-strict-aliasing -fwrapv -mieee -mcpu=pca56%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphapca56: %{specflags_alphapca56}}}
+-optflags: alphaev6 -O2 -fno-strict-aliasing -fwrapv -mieee -mcpu=ev6%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev6: %{specflags_alphaev6}}}
+-optflags: alphaev67 -O2 -fno-strict-aliasing -fwrapv -mieee -mcpu=ev67%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev67: %{specflags_alphaev67}}}
+-
+-optflags: sparc -O2 -fno-strict-aliasing -fwrapv -m32 -mcpu=v7 -mtune=ultrasparc%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_sparc: %{specflags_sparc}}}
+-optflags: sparcv8 -O2 -fno-strict-aliasing -fwrapv -m32 -mcpu=v8 -mtune=ultrasparc%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_sparc: %{specflags_sparc}}%{?specflags_sparcv8: %{specflags_sparcv8}}}
+-optflags: sparcv9 -O2 -fno-strict-aliasing -fwrapv -m32 -mcpu=ultrasparc%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_sparc: %{specflags_sparc}}%{?specflags_sparcv9: %{specflags_sparcv9}}}
+-optflags: sparc64 -O2 -fno-strict-aliasing -fwrapv -mcpu=ultrasparc%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_sparc: %{specflags_sparc}}%{?specflags_sparc64: %{specflags_sparc64}}}
+-
+-optflags: m68k -O2 -fno-strict-aliasing -fwrapv -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_m68k: %{specflags_m68k}}}
+-
+-optflags: ppc -O2 -fno-strict-aliasing -fwrapv -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc: %{specflags_ppc}}}
+-optflags: ppc8260 -O2 -fno-strict-aliasing -fwrapv -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc8260: %{specflags_ppc8260}}}
+-optflags: ppc8560 -O2 -fno-strict-aliasing -fwrapv -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc8560: %{specflags_ppc8560}}}
+-optflags: ppc32dy4 -O2 -fno-strict-aliasing -fwrapv -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc32dy4: %{specflags_ppc32dy4}}}
+-optflags: ppciseries -O2 -fno-strict-aliasing -fwrapv -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppciseries: %{specflags_ppciseries}}}
+-optflags: ppcpseries -O2 -fno-strict-aliasing -fwrapv -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppcpseries: %{specflags_ppcpseries}}}
+-optflags: ppc64 -O2 -fno-strict-aliasing -fwrapv -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc64: %{specflags_ppc64}}}
+-
+-optflags: parisc -O2 -fno-strict-aliasing -fwrapv -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_parisc: %{specflags_parisc}}}
+-optflags: hppa1.0 -O2 -fno-strict-aliasing -fwrapv -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hppa1_0: %{specflags_hppa1_0}}}
+-optflags: hppa1.1 -O2 -fno-strict-aliasing -fwrapv -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hppa1_1: %{specflags_hppa1_1}}}
+-optflags: hppa1.2 -O2 -fno-strict-aliasing -fwrapv -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hppa1_2: %{specflags_hppa1_2}}}
+-optflags: hppa2.0 -O2 -fno-strict-aliasing -fwrapv -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hppa2_0: %{specflags_hppa2_0}}}
+-
+-optflags: mips -O2 -fno-strict-aliasing -fwrapv%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_mips: %{specflags_mips}}}
+-optflags: mipsel -O2 -fno-strict-aliasing -fwrapv%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_mips: %{specflags_mips}}%{?specflags_mipsel: %{specflags_mipsel}}}
+-
+-optflags: armv3l -O2 -fno-strict-aliasing -fwrapv -fsigned-char -fomit-frame-pointer -march=armv3%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_armv3l: %{specflags_armv3l}}}
+-optflags: armv4b -O2 -fno-strict-aliasing -fwrapv -fsigned-char -fomit-frame-pointer -march=armv4%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_armv4b: %{specflags_armv4b}}}
+-optflags: armv4l -O2 -fno-strict-aliasing -fwrapv -fsigned-char -fomit-frame-pointer -march=armv4%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_armv4l: %{specflags_armv4l}}}
+-optflags: armv5teb -O2 -fno-strict-aliasing -fwrapv -fsigned-char -fomit-frame-pointer -march=armv5te%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_armv5teb: %{specflags_armv5teb}}}
+-optflags: armv5tel -O2 -fno-strict-aliasing -fwrapv -fsigned-char -fomit-frame-pointer -march=armv5te%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_armv5tel: %{specflags_armv5tel}}}
+-
+-optflags: atarist -O2 -fno-strict-aliasing -fwrapv -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_atarist: %{specflags_atarist}}}
+-optflags: atariste -O2 -fno-strict-aliasing -fwrapv -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_atariste: %{specflags_atariste}}}
+-optflags: ataritt -O2 -fno-strict-aliasing -fwrapv -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ataritt: %{specflags_ataritt}}}
+-optflags: falcon -O2 -fno-strict-aliasing -fwrapv -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_falcon: %{specflags_falcon}}}
+-optflags: atariclone -O2 -fno-strict-aliasing -fwrapv -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_atariclone: %{specflags_atariclone}}}
+-optflags: milan -O2 -fno-strict-aliasing -fwrapv -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_milan: %{specflags_milan}}}
+-optflags: hades -O2 -fno-strict-aliasing -fwrapv -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hades: %{specflags_hades}}}
++optflags: i386 -O2 -march=i386%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i386: %{specflags_i386}}}
++optflags: i486 -O2 -march=i486%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i486: %{specflags_i486}}}
++optflags: i586 -O2 -march=i586%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i586: %{specflags_i586}}}
++optflags: i686 -O2 -march=i686%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_i686: %{specflags_i686}}}
++optflags: pentium3 -O2 -march=pentium3%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_pentium3: %{specflags_pentium3}}}
++optflags: pentium4 -O2 -march=pentium4%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_pentium4: %{specflags_pentium4}}}
++optflags: athlon -O2 -march=athlon%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32: %{specflags_ia32}}%{?specflags_athlon: %{specflags_athlon}}}
++optflags: ia64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia64: %{specflags_ia64}}}
++optflags: x86_64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_x86_64: %{specflags_x86_64}}}
++optflags: amd64 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_amd64: %{specflags_amd64}}}
++optflags: ia32e -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ia32e: %{specflags_ia32e}}}
++
++optflags: alpha -O2 -mieee%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}}
++optflags: alphaev5 -O2 -mieee -mcpu=ev5%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev5: %{specflags_alphaev5}}}
++optflags: alphaev56 -O2 -mieee -mcpu=ev56%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev56: %{specflags_alphaev56}}}
++optflags: alphapca56 -O2 -mieee -mcpu=pca56%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphapca56: %{specflags_alphapca56}}}
++optflags: alphaev6 -O2 -mieee -mcpu=ev6%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev6: %{specflags_alphaev6}}}
++optflags: alphaev67 -O2 -mieee -mcpu=ev67%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_alpha: %{specflags_alpha}}%{?specflags_alphaev67: %{specflags_alphaev67}}}
++
++optflags: sparc -O2 -m32 -mtune=ultrasparc%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_sparc: %{specflags_sparc}}}
++optflags: sparcv8 -O2 -m32 -mtune=ultrasparc -mv8%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_sparc: %{specflags_sparc}}%{?specflags_sparcv8: %{specflags_sparcv8}}}
++optflags: sparcv9 -O2 -m32 -mtune=ultrasparc%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_sparc: %{specflags_sparc}}%{?specflags_sparcv9: %{specflags_sparcv9}}}
++optflags: sparc64 -O2 -m64 -mtune=ultrasparc%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_sparc: %{specflags_sparc}}%{?specflags_sparc64: %{specflags_sparc64}}}
++
++optflags: m68k -O2 -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_m68k: %{specflags_m68k}}}
++
++optflags: ppc -O2 -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc: %{specflags_ppc}}}
++optflags: ppc8260 -O2 -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc8260: %{specflags_ppc8260}}}
++optflags: ppc8560 -O2 -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc8560: %{specflags_ppc8560}}}
++optflags: ppc32dy4 -O2 -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc32dy4: %{specflags_ppc32dy4}}}
++optflags: ppciseries -O2 -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppciseries: %{specflags_ppciseries}}}
++optflags: ppcpseries -O2 -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppcpseries: %{specflags_ppcpseries}}}
++optflags: ppc64 -O2 -fsigned-char%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ppc64: %{specflags_ppc64}}}
++
++optflags: parisc -O2 -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_parisc: %{specflags_parisc}}}
++optflags: hppa1.0 -O2 -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hppa1_0: %{specflags_hppa1_0}}}
++optflags: hppa1.1 -O2 -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hppa1_1: %{specflags_hppa1_1}}}
++optflags: hppa1.2 -O2 -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hppa1_2: %{specflags_hppa1_2}}}
++optflags: hppa2.0 -O2 -mpa-risc-1-0%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hppa2_0: %{specflags_hppa2_0}}}
++
++optflags: mips -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_mips: %{specflags_mips}}}
++optflags: mipsel -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_mips: %{specflags_mips}}%{?specflags_mipsel: %{specflags_mipsel}}}
++
++optflags: armv3l -O2 -fsigned-char -fomit-frame-pointer -march=armv3%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_armv3l: %{specflags_armv3l}}}
++optflags: armv4b -O2 -fsigned-char -fomit-frame-pointer -march=armv4%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_armv4b: %{specflags_armv4b}}}
++optflags: armv4l -O2 -fsigned-char -fomit-frame-pointer -march=armv4%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_armv4l: %{specflags_armv4l}}}
++
++optflags: atarist -O2 -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_atarist: %{specflags_atarist}}}
++optflags: atariste -O2 -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_atariste: %{specflags_atariste}}}
++optflags: ataritt -O2 -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_ataritt: %{specflags_ataritt}}}
++optflags: falcon -O2 -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_falcon: %{specflags_falcon}}}
++optflags: atariclone -O2 -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_atariclone: %{specflags_atariclone}}}
++optflags: milan -O2 -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_milan: %{specflags_milan}}}
++optflags: hades -O2 -fomit-frame-pointer%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_hades: %{specflags_hades}}}
+
+-optflags: s390 -O2 -fno-strict-aliasing -fwrapv%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_s390: %{specflags_s390}}}
+-optflags: s390x -O2 -fno-strict-aliasing -fwrapv%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_s390: %{specflags_s390}}%{?specflags_s390x: %{specflags_s390x}}}
++optflags: s390 -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_s390: %{specflags_s390}}}
++optflags: s390x -O2%{!?nospecflags:%{?specflags: %{specflags}}%{?specflags_s390: %{specflags_s390}}%{?specflags_s390x: %{specflags_s390x}}}
+
+ #############################################################
+ # Canonical arch names and numbers
+@@ -126,8 +124,6 @@
+ arch_canon: armv3l: armv3l 12
+ arch_canon: armv4b: armv4b 12
+ arch_canon: armv4l: armv4l 12
+-arch_canon: armv5teb: armv5teb 12
+-arch_canon: armv5tel: armv5tel 12
+
+ arch_canon: m68kmint: m68kmint 13
+ arch_canon: atarist: m68kmint 13
+@@ -209,8 +205,8 @@
+ buildarchtranslate: sun4m: sparc
+ buildarchtranslate: sparcv8: sparc
+ buildarchtranslate: sparcv9: sparc
+-buildarchtranslate: sun4u: sparc64
+-buildarchtranslate: sparc64: sparc64
++buildarchtranslate: sun4u: sparc
++buildarchtranslate: sparc64: sparc
+
+ buildarchtranslate: osfmach3_ppc: ppc
+ buildarchtranslate: powerpc: ppc
+@@ -236,9 +232,9 @@
+
+ buildarchtranslate: ia64: ia64
+
+-buildarchtranslate: x86_64: x86_64
+-buildarchtranslate: amd64: x86_64
+-buildarchtranslate: ia32e: x86_64
++buildarchtranslate: x86_64: amd64
++buildarchtranslate: amd64: amd64
++buildarchtranslate: ia32e: amd64
+
+ #############################################################
+ # Architecture compatibility
+@@ -295,8 +291,6 @@
+ arch_compat: hppa1.0: parisc
+ arch_compat: parisc: noarch
+
+-arch_compat: armv5teb: armv4b
+-arch_compat: armv5tel: armv4l
+ arch_compat: armv4b: noarch
+ arch_compat: armv4l: armv3l
+ arch_compat: armv3l: noarch
+@@ -391,8 +385,6 @@
+ buildarch_compat: armv3l: noarch
+ buildarch_compat: armv4b: noarch
+ buildarch_compat: armv4l: noarch
+-buildarch_compat: armv5teb: noarch
+-buildarch_compat: armv5tel: noarch
+
+ buildarch_compat: hppa2.0: hppa1.2
+ buildarch_compat: hppa1.2: hppa1.1
+++ /dev/null
---- rpm/lib/rpmrc.c~ 2006-10-18 19:47:13.889558500 +0200
-+++ rpm/lib/rpmrc.c 2006-10-18 20:00:09.350021750 +0200
-@@ -1797,10 +1797,8 @@
- defaultsInitialized = 1;
- }
-
--#ifdef DYING
- if (rcfiles == NULL)
- rcfiles = rpmRcfiles;
--#endif
-
- /* Read each file in rcfiles. */
- rc = 0;
--- /dev/null
+--- rpm-4.4.9/rpmio/macro.c.old 2007-11-10 10:29:08.000000000 +0100
++++ rpm-4.4.9/rpmio/macro.c 2007-11-10 10:37:25.000000000 +0100
+@@ -21,6 +21,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <strings.h>
+ #define rpmError fprintf
+ #define RPMERR_BADSPEC stderr
+ #undef _
+@@ -2106,6 +2107,7 @@ int isCompressed(const char * file, rpmC
+ ssize_t nb;
+ int rc = -1;
+ unsigned char magic[13];
++ char *end, *ext;
+
+ *compressed = COMPRESSED_NOT;
+
+@@ -2131,6 +2133,11 @@ int isCompressed(const char * file, rpmC
+
+ rc = 0;
+
++ /* Tar archives will be recognized by filename. */
++ end = strchr(file, '\0');
++ ext = end - 4;
++ if (ext > file && !strcasecmp(ext, ".tar")) return rc;
++
+ if (magic[0] == 'B' && magic[1] == 'Z')
+ *compressed = COMPRESSED_BZIP2;
+ else
+++ /dev/null
-#!/bin/sh
-
-[ -f /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm
-[ -z "$RPM_SCRIPTVERBOSITY" ] && RPM_SCRIPTVERBOSITY=5
-
-if [ -x /usr/bin/banner.sh ]; then
- BANNERCMD="/usr/bin/banner.sh "
- BANNERPARA="-s -M user-group.error"
-else
- BANNERCMD="cat"
- BANNERPARA=""
-fi
-
-if [ "$1" = user -o "$1" = group ]; then
- MODE=$1
-else
- echo ERROR
- exit 2
-fi
-shift
-
-bannercmd()
-{
- if [ "$BANNERCMD" = cat ]; then
- echo cat
- else
- if [ "$RPM_SCRIPTVERBOSITY" -lt 2 ]; then
- echo "$BANNERCMD -M $1"
- else
- echo "$BANNERCMD -s -M $1"
- fi
- fi
-}
-
-testrm()
-{
- [ "$RPM_USERDEL" != yes ] || [ ! -x /bin/rpm ] && return 1
- [ -z "$1" ] && return 2
- rpm -q --whatprovides "${MODE}($1)" >/dev/null 2>&1
- # no package Provides it (strange)
- [ $? -ne 0 ] && return 0
- # only current package Provides it
- [ `rpm -q --whatprovides "${MODE}($1)" | wc -l` -lt 2 ] && return 0
- return 1
-}
-
-if [ "$1" = "testrm" ]; then
- testrm $2
- exit $?
-elif [ "$1" = del ]; then
- if testrm $2; then
- echo "Removing $MODE $2" | `bannercmd "${MODE}del-$2"`
- /usr/sbin/${MODE}del $2 || :
- if [ -x /usr/sbin/nscd ]; then
- case "${MODE}" in
- user)
- /usr/sbin/nscd -i passwd
- ;;
- group)
- /usr/sbin/nscd -i group
- ;;
- esac
- fi
- fi
-elif [ "$MODE" = "user" -a "$1" = "addtogroup" ]; then
- user="$2"
- group="$3"
- groups=$(id -n -G $user)
- if [[ " $groups " != *\ $group\ * ]]; then
- echo "Adding user $user to group $group" | `bannercmd "${MODE}mod-$user"`
- for grp in $groups $group; do
- new="$new${new:+,}$grp"
- done
- usermod -G "$new" $user
- fi
-else
- echo ERROR
- exit 2
-fi
--- /dev/null
+--- a/lib/rpmds.c 10 Jun 2007 17:12:25 -0000 2.55.2.4
++++ b/lib/rpmds.c 6 Oct 2007 01:09:19 -0000
+@@ -253,6 +255,7 @@
+ const char ** N;
+ rpmTagType Nt;
+ int_32 Count;
++int rpmv3 = headerIsEntry(h, RPMTAG_OLDFILENAMES);
+
+ assert(scareMem == 0); /* XXX always allocate memory */
+ if (tagN == RPMTAG_PROVIDENAME) {
+@@ -280,12 +283,12 @@
+ tagEVR = RPMTAG_TRIGGERVERSION;
+ tagF = RPMTAG_TRIGGERFLAGS;
+ } else
+- if (tagN == RPMTAG_DIRNAMES) {
++ if (!rpmv3 && tagN == RPMTAG_DIRNAMES) {
+ Type = "Dirnames";
+ tagEVR = 0;
+ tagF = 0;
+ } else
+- if (tagN == RPMTAG_FILELINKTOS) {
++ if (!rpmv3 && tagN == RPMTAG_FILELINKTOS) {
+ Type = "Filelinktos";
+ tagEVR = RPMTAG_DIRNAMES;
+ tagF = RPMTAG_DIRINDEXES;
+++ /dev/null
-Applications
- [cs]: Aplikace
- [da]: Programmer
- [de]: Applikationen
- [es]: Aplicaciones
- [fr]: Applications
- [id]: Aplikasi
- [is]: Forrit
- [it]: Applicazioni
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó
- [nb]: Applikasjoner
- [pl]: Aplikacje
- [pt]: Aplicações
- [pt_BR]: Aplicações
- [ru]: ðÒÉÌÏÖÅÎÉÑ
- [sl]: Programi
- [sv]: Tillämpningar
- [uk]: Прикладні Програми
-
-Applications/Archiving
- [cs]: Aplikace/Archivování
- [da]: Programmer/Arkivering
- [de]: Applikationen/Archivierung
- [es]: Aplicaciones/Archivar
- [fr]: Applications/Archivage
- [is]: Forrit/Þjöppun
- [it]: Applicazioni/Archiviazione
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¢¡¼¥«¥¤¥Ö
- [nb]: Applikasjoner/Arkivering
- [pl]: Aplikacje/Archiwizacja
- [pt]: Aplicações/Arquivos
- [ru]: ðÒÉÌÏÖÅÎÉÑ/áÒÈÉ×ÁÃÉÑ
- [sl]: Programi/Arhiviranje
- [sv]: Tillämpningar/Arkivering
- [uk]: Прикладні Програми/Архівація
-
-Applications/Communications
- [cs]: Aplikace/Komunikace
- [da]: Programmer/Kommunikation
- [de]: Applikationen/Kommunikation
- [es]: Aplicaciones/Comunicaciones
- [fr]: Applications/Transmissions
- [is]: Forrit/Samskipti
- [it]: Applicazioni/Comunicazioni
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/ÄÌ¿®
- [nb]: Applikasjoner/Kommunikasjon
- [pl]: Aplikacje/Komunikacja
- [pt]: Aplicações/Comunicações
- [ru]: ðÒÉÌÏÖÅÎÉÑ/ëÏÍÍÕÎÉËÁÃÉÉ
- [sl]: Programi/Komunikacije
- [sv]: Tillämpningar/Kommunikation
- [uk]: Прикладні Програми/Комунікації
-
-Applications/Console
- [cs]: Aplikace/Konzole
- [da]: Programmer/Konsol
- [de]: Applikationen/Konsole
- [es]: Aplicaciones/Consola
- [fr]: Applications/Console
- [is]: Forrit/Stjórnskjá
- [it]: Applicazioni/Console
- [nb]: Applikasjoner/Konsollet
- [pl]: Aplikacje/Konsola
- [pt]: Aplicações/Console
- [ru]: ðÒÉÌÏÖÅÎÉÑ/ëÏÎÓÏÌØ
- [sv]: Tillämpningar/Konsolen
- [uk]: Прикладні Програми/Консоль
-
-Applications/Databases
- [cs]: Aplikace/Databáze
- [da]: Programmer/Databaser
- [de]: Applikationen/Datenbanken
- [es]: Aplicaciones/Bases de Datos
- [fr]: Applications/Bases de Données
- [id]: Aplikasi/Database
- [is]: Forrit/Gagnagrunnar
- [it]: Applicazioni/Database
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ç¡¼¥¿¥Ù¡¼¥¹
- [nb]: Applikasjoner/Databaser
- [pl]: Aplikacje/Bazy Danych
- [pt]: Aplicações/Bases de Dados
- [ru]: ðÒÉÌÏÖÅÎÉÑ/âÁÚÙ ÄÁÎÎÙÈ
- [sl]: Programi/Zbirke podatkov
- [sv]: Tillämpningar/Databaser
- [uk]: Прикладні Програми/Бази даних
-
-Applications/Databases/Interfaces
- [cs]: Aplikace/Databáze/Rozhraní
- [da]: Programmer/Databaser/Grænsefladen
- [de]: Applikationen/Datenbanken/Schnittstellen
- [es]: Aplicaciones/Bases de Datos/Interfaces
- [fr]: Applications/Bases de données/Interfaces
- [is]: Forrit/Gagnagrunnar/Viðmót
- [it]: Applicazioni/Database/Interfacce
- [nb]: Applikasjoner/Databaser/Grensesnitt
- [pl]: Aplikacje/Bazy Danych/Interfejsy
- [pt]: Aplicações/Bases de Dados/Interfaces
- [ru]: ðÒÉÌÏÖÅÎÉÑ/âÁÚÙ ÄÁÎÎÙÈ/éÎÔÅÒÆÅÊÓÙ
- [sl]: Programi/Zbirke podatkov/Vmesniki
- [sv]: Tillämpningar/Databaser/Gränssnitten
- [uk]: Прикладні Програми/Бази даних/Інтерфейсі
-
-Applications/Dictionaries
- [cs]: Aplikace/Slovníky
- [da]: Programmer/Ordbøger
- [de]: Applikationen/Wörterbücher
- [es]: Aplicaciones/Diccionarios
- [fr]: Applications/Dictionaires
- [is]: Forrit/Orðabókum
- [it]: Applicazioni/Dizionari
- [nb]: Applikasjoner/Ordbøker
- [pl]: Aplikacje/S³owniki
- [pt]: Aplicações/Dicionários
- [ru]: ðÒÉÌÏÖÅÎÉÑ/óÌÏ×ÁÒÉ
- [sl]: Programi/Slovarji
- [sv]: Tillämpningar/Ordlistor
- [uk]: Прикладні Програми/Словники
-
-Applications/Editors
- [cs]: Aplikace/Editory
- [da]: Programmer/Tekstbehandlere
- [de]: Applikationen/Editoren
- [es]: Aplicaciones/Editores
- [fr]: Applications/Editeurs
- [is]: Forrit/Ritlar
- [it]: Applicazioni/Editor
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿
- [nb]: Applikasjoner/Editorer
- [pl]: Aplikacje/Edytory
- [pt]: Aplicações/Editores
- [ru]: ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ
- [sl]: Programi/Urejevalniki
- [sv]: Tillämpningar/Editorer
- [uk]: Прикладні Програми/Редактори
-
-Applications/Editors/Emacs
- [cs]: Aplikace/Editory/Emacs
- [da]: Programmer/Tekstbehandlere/Emacs
- [de]: Applikationen/Editoren/Emacs
- [es]: Aplicaciones/Editores/Emacs
- [fr]: Applications/Editeurs/Emacs
- [is]: Forrit/Ritlar/Emacs
- [it]: Applicazioni/Editor/Emacs
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿/Emacs
- [nb]: Applikasjoner/Editorer/Emacs
- [pl]: Aplikacje/Edytory/Emacs
- [pt]: Aplicações/Editores/Emacs
- [ru]: ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ/Emacs
- [sl]: Programi/Urejevalniki/Emacs
- [sv]: Tillämpningar/Editorer/Emacs
- [uk]: Прикладні Програми/Редактори/Emacs
-
-Applications/Editors/Vim
- [cs]: Aplikace/Editory/Vim
- [da]: Programmer/Tekstbehandlere/Vim
- [de]: Applikationen/Editoren/Vim
- [es]: Aplicaciones/Editores/Vim
- [fr]: Applications/Editeurs/Vim
- [is]: Forrit/Ritlar/Vim
- [it]: Applicazioni/Editor/Vim
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿/Vim
- [nb]: Applikasjoner/Editorer/Vim
- [pl]: Aplikacje/Edytory/Vim
- [pt]: Aplicações/Editores/Vim
- [ru]: ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ/Vim
- [sl]: Programi/Urejevalniki/Vim
- [sv]: Tillämpningar/Editorer/Vim
- [uk]: Прикладні Програми/Редактори/Vim
-
-Applications/Editors/XEmacs
- [cs]: Aplikace/Editory/XEmacs
- [da]: Programmer/Tekstbehandlere/XEmacs
- [de]: Applikationen/Editoren/XEmacs
- [es]: Aplicaciones/Editores/XEmacs
- [fr]: Applications/Editeurs/XEmacs
- [is]: Forrit/Ritlar/XEmacs
- [it]: Applicazioni/Editor/XEmacs
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿/XEmacs
- [nb]: Applikasjoner/Editorer/XEmacs
- [pl]: Aplikacje/Edytory/XEmacs
- [pt]: Aplicações/Editores/XEmacs
- [ru]: ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ/XEmacs
- [sl]: Programi/Urejevalniki/XEmacs
- [sv]: Tillämpningar/Editorer/XEmacs
- [uk]: Прикладні Програми/Редактори/XEmacs
-
-Applications/Emulators
- [da]: Programmer/Emulatorer
- [de]: Applikationen/Emulatoren
- [es]: Aplicaciones/Emuladores
- [fr]: Applications/Émulateurs
- [is]: Forrit/Hermar
- [it]: Applicazioni/Emulatori
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥ß¥å¥ì¡¼¥¿
- [nb]: Applikasjoner/Emulatorer
- [pl]: Aplikacje/Emulatory
- [pt]: Aplicações/Emuladores
- [ru]: ðÒÉÌÏÖÅÎÉÑ/üÍÕÌÑÔÏÒÙ
- [sl]: Programi/Emulatorji
- [sv]: Tillämpningar/Emulatorer
- [uk]: Прикладні Програми/Емулятори
-
-Applications/Engineering
- [cs]: Aplikace/In¾enýrské
- [da]: Programmer/Ingeniørarbejde
- [de]: Applikationen/Technik
- [es]: Aplicaciones/Ingeniería
- [fr]: Applications/Ingénierie
- [is]: Forrit/Verkfræði
- [it]: Applicazioni/Engineering
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥ó¥¸¥Ë¥¢¥ê¥ó¥°
- [nb]: Applikasjoner/Teknisk
- [pl]: Aplikacje/In¿ynierskie
- [pt]: Aplicações/Engenharia
- [ru]: ðÒÉÌÏÖÅÎÉÑ/éÎÖÅÎÅÒÎÙÅ ÐÒÉÌÏÖÅÎÉÑ
- [sl]: Programi/In¾enirstvo
- [sv]: Tillämpningar/Konstruktion
-
-Applications/File
- [cs]: Aplikace/Práce se soubory
- [da]: Programmer/Filer
- [de]: Applikationen/Datei
- [es]: Aplicaciones/Archivos
- [fr]: Applications/Fichiers
- [is]: Forrit/Skráatól
- [it]: Applicazioni/File
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Õ¥¡¥¤¥ë
- [nb]: Applikasjoner/Fil
- [pl]: Aplikacje/Pliki
- [pt]: Aplicações/Ficheiros
- [pt_BR]: Aplicações/Arquivos
- [ru]: ðÒÉÌÏÖÅÎÉÑ/æÁÊÌÏ×ÙÅ ÕÔÉÌÉÔÙ
- [sl]: Programi/Datoteke
- [sv]: Tillämpningar/Fil
- [uk]: Прикладні Програми/Файлові утиліти
-
-Applications/Graphics
- [cs]: Aplikace/Grafika
- [da]: Programmer/Grafik
- [de]: Applikationen/Graphiken
- [es]: Aplicaciones/Gráficos
- [fr]: Applications/Graphiques
- [id]: Aplikasi/Grafik
- [is]: Forrit/Myndvinnsla
- [it]: Applicazioni/Immagini
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥°¥é¥Õ¥£¥Ã¥¯¥¹
- [nb]: Applikasjoner/Grafikk
- [pl]: Aplikacje/Grafika
- [pt]: Aplicações/Gráficos
- [ru]: ðÒÉÌÏÖÅÎÉÑ/çÒÁÆÉËÁ
- [sl]: Programi/Grafika
- [sv]: Tillämpningar/Grafik
- [uk]: Прикладні Програми/Графіка
-
-Applications/Games
- [cs]: Aplikace/Hry
- [da]: Programmer/Spil
- [de]: Applikationen/Spiele
- [es]: Aplicaciones/Juegos
- [fr]: Applications/Jeux
- [is]: Forrit/Leikir
- [it]: Applicazioni/Giochi
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥²¡¼¥à
- [nb]: Applikasjoner/Spill
- [pl]: Aplikacje/Gry
- [pt]: Aplicações/Jogos
- [ru]: ðÒÉÌÏÖÅÎÉÑ/éÇÒÙ
- [sl]: Programi/Igre
- [sv]: Tillämpningar/Spel
- [uk]: Прикладні Програми/Ігри
-
-Applications/Networking
- [cs]: Aplikace/Sí»ové
- [da]: Programmer/Netværks
- [de]: Applikationen/Netzwerkwesen
- [es]: Aplicaciones/Red
- [fr]: Applications/Réseau
- [is]: Forrit/Net
- [it]: Applicazioni/Rete
- [nb]: Applikasjoner/Nettverk
- [pl]: Aplikacje/Sieciowe
- [pt]: Aplicações/Rede
- [pt_BR]: Aplicações/Rede
- [ru]: ðÒÉÌÏÖÅÎÉÑ/óÅÔØ
- [sl]: Programi/Omre¾ni
- [sv]: Tillämpningar/Nätverk
- [uk]: Прикладні Програми/Мережа
-
-Applications/Mail
- [cs]: Aplikace/Po¹ta
- [da]: Programmer/Post
- [de]: Applikationen/Post
- [es]: Aplicaciones/Correo Electrónico
- [fr]: Applications/Courrier
- [is]: Forrit/Póst
- [it]: Applicazioni/Posta
- [nb]: Applikasjoner/Epost
- [pl]: Aplikacje/Poczta
- [pt]: Aplicações/Correio Eletrônico
- [ru]: ðÒÉÌÏÖÅÎÉÑ/üÌÅËÔÒÏÎÎÁÑ ÐÏÞÔÁ
- [sl]: Programi/Po¹tna
- [sv]: Tillämpningar/Post
- [uk]: Прикладні Програми/Пошта
-
-Applications/Math
- [cs]: Aplikace/Matematické
- [da]: Programmer/Matematik
- [de]: Applikationen/Mathematik
- [es]: Aplicaciones/Matemáticas
- [fr]: Applications/Mathématiques
- [it]: Applicazioni/Matematiche
- [nb]: Applikasjoner/Matematiske
- [pl]: Aplikacje/Matematyczne
- [pt]: Aplicações/Matemática
- [ru]: ðÒÉÌÏÖÅÎÉÑ/íÁÔÅÍÁÔÉÞÅÓËÉÅ
- [sl]: Programi/Matematièni
- [sv]: Tillämpningar/Matemataisk
- [uk]: Прикладні Програми/Математика
-
-Applications/Multimedia
- [cs]: Aplikace/Multimédia
- [da]: Programmer/Multimedie
- [de]: Applikationen/Multimedien
- [es]: Aplicaciones/Multimedia
- [fr]: Applications/Multimédia
- [is]: Forrit/Margmiðlun
- [it]: Applicazioni/Multimedia
- [ja]: ¥ê¥±¡¼¥·¥ç¥ó/¥Þ¥ë¥Á¥á¥Ç¥£¥¢
- [nb]: Programmer/Multimedia
- [pl]: Aplikacje/Multimedia
- [pt]: Aplicações/Multimédia
- [ru]: ðÒÉÌÏÖÅÎÉÑ/íÕÌØÔÉÍÅÄÉÁ
- [sl]: Programi/Veèpredstavnost
- [sv]: Tillämpningar/Multimedia
- [uk]: Прикладні Програми/Мультимедіа
-
-Applications/News
- [cs]: Aplikace/News
- [da]: Programmer/Nyheder
- [de]: Applikationen/News
- [es]: Aplicaciones/Noticias
- [fr]: Applications/Nouvelles
- [is]: Forrit/Fréttir
- [it]: Applicazioni/News
- [nb]: Applikasjoner/News
- [pl]: Aplikacje/News
- [pt]: Aplicações/News
- [pt_BR]: Aplicações/News
- [ru]: ðÒÉÌÏÖÅÎÉÑ/îÏ×ÏÓÔÉ
- [sl]: Programi/Novièarske
- [sv]: Tillämpningar/Nyheter
- [uk]: Прикладні Програми/Новини
-
-Applications/Printing
- [cs]: Aplikace/Tisk
- [da]: Programmer/Udskrift
- [de]: Applikationen/Drucken
- [es]: Aplicaciones/Impresión
- [fr]: Applications/Impression
- [is]: Forrit/Þróað
- [it]: Applicazioni/Stampa
- [nb]: Applikasjoner/Utskrift
- [pl]: Aplikacje/Drukowanie
- [pt]: Aplicações/Impressão
- [ru]: ðÒÉÌÏÖÅÎÉÑ/ðÅÞÁÔØ
- [sl]: Programi/Tiskanje
- [sv]: Tillämpningar/Utskrift
- [uk]: Прикладні Програми/Друк
-
-Applications/Publishing
- [cs]: Aplikace/Publikování
- [da]: Programmer/Udgivelse
- [de]: Applikationen/Publizieren
- [es]: Aplicaciones/Edición
- [fr]: Applications/Edition
- [is]: Forrit/Umbrot
- [it]: Applicazioni/Publishing
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°
- [nb]: Applikasjoner/Publisering
- [pl]: Aplikacje/Publikowanie
- [pt]: Aplicações/Publicação
- [pt_BR]: Aplicações/Editoração
- [ru]: ðÒÉÌÏÖÅÎÉÑ/ôÉÐÏÇÒÁÆÉÑ
- [sl]: Programi/Zalo¾ni¹tvo
- [sv]: Tillämpningar/Publicering
- [uk]: Прикладні Програми/Типографія
-
-Applications/Publishing/SGML
- [cs]: Aplikace/Publikování/SGML
- [da]: Programmer/Udgivelse/SGML
- [de]: Applikationen/Publizieren/SGML
- [es]: Aplicaciones/Edición/SGML
- [fr]: Applications/Edition/SGML
- [is]: Forrit/Umbrot/SGML
- [it]: Applicazioni/Publishing/SGML
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°/SGML
- [nb]: Applikasjoner/Publisering/SGML
- [pl]: Aplikacje/Publikowanie/SGML
- [pt]: Aplicações/Publicação/SGML
- [pt_BR]: Aplicações/Editoração/SGML
- [ru]: ðÒÉÌÏÖÅÎÉÑ/éÚÄÁÔÅÌØÓÔ×Ï/SGML
- [sl]: Programi/Zalo¾ni¹tvo/SGML
- [sv]: Tillämpningar/Publicering/SGML
- [uk]: Прикладні Програми/Типографія/SGML
-
-Applications/Publishing/TeX
- [cs]: Aplikace/Publikování/TeX
- [da]: Programmer/Udgivelse/TeX
- [de]: Applikationen/Publizieren/TeX
- [es]: Aplicaciones/Edición/TeX
- [fr]: Applications/Edition/TeX
- [is]: Forrit/Umbrot/TeX
- [it]: Applicazioni/Publishing/TeX
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°/TeX
- [nb]: Applikasjoner/Publisering/TeX
- [pl]: Aplikacje/Publikowanie/TeX
- [pt]: Aplicações/Publicação/TeX
- [pt_BR]: Aplicações/Editoração/TeX
- [ru]: ðÒÉÌÏÖÅÎÉÑ/éÚÄÁÔÅÌØÓÔ×Ï/TeX
- [sl]: Programi/Zalo¾ni¹tvo/TeX
- [sv]: Tillämpningar/Publicering/TeX
- [uk]: Прикладні Програми/Типографія/TeX
-
-Applications/Publishing/XML
- [cs]: Aplikace/Publikování/XML
- [da]: Programmer/Udgivelse/XML
- [de]: Applikationen/Publizieren/XML
- [es]: Aplicaciones/Edición/XML
- [fr]: Applications/Edition/XML
- [is]: Forrit/Umbrot/XML
- [it]: Applicazioni/Publishing/XML
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°/XML
- [nb]: Applikasjoner/Publisering/XML
- [pl]: Aplikacje/Publikowanie/XML
- [pt]: Aplicações/Publicação/XML
- [pt_BR]: Aplicações/Editoração/XML
- [ru]: ðÒÉÌÏÖÅÎÉÑ/éÚÄÁÔÅÌØÓÔ×Ï/XML
- [sl]: Programi/Zalo¾ni¹tvo/XML
- [sv]: Tillämpningar/Publicering/XML
- [uk]: Прикладні Програми/Типографія/XML
-
-Applications/Publishing/XML/Java
- [cs]: Aplikace/Publikování/XML/Java
- [da]: Programmer/Udgivelse/XML/Java
- [de]: Applikationen/Publizieren/XML/Java
- [es]: Aplicaciones/Edición/XML/Java
- [fr]: Applications/Edition/XML/Java
- [is]: Forrit/Umbrot/XML/Java
- [it]: Applicazioni/Publishing/XML/Java
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°/XML/Java
- [nb]: Applikasjoner/Publisering/XML/Java
- [pl]: Aplikacje/Publikowanie/XML/Java
- [pt]: Aplicações/Publicação/XML/Java
- [pt_BR]: Aplicações/Editoração/XML/Java
- [ru]: ðÒÉÌÏÖÅÎÉÑ/éÚÄÁÔÅÌØÓÔ×Ï/XML/Java
- [sl]: Programi/Zalo¾ni¹tvo/XML/Java
- [sv]: Tillämpningar/Publicering/XML/Java
- [uk]: Прикладні Програми/Типографія/XML/Java
-
-Applications/Science
- [cs]: Aplikace/Vìdecké
- [de]: Applikationen/Wissenschaft
- [es]: Aplicaciones/Ciencia
- [fr]: Applications/Science
- [it]: Applicazioni/Sciencia
- [pl]: Aplikacje/Nauka
- [pt]: Aplicações/Ciência
- [ru]: ðÒÉÌÏÖÅÎÉÑ/îÁÕËÁ
- [sv]: Tillämpningar/Vetenskaplig
- [uk]: Прикладні Програми/Наука
-
-Applications/Shells
- [cs]: Aplikace/Shelly
- [da]: Programmer/Skaller
- [de]: Applikationen/Shells
- [es]: Aplicaciones/Shells
- [fr]: Applications/Shells
- [is]: Forrit/Skeljar
- [it]: Applicazioni/Shell
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥·¥§¥ë
- [nb]: Applikasjoner/Skall
- [pl]: Aplikacje/Pow³oki
- [pt]: Aplicações/Shells
- [pt_BR]: Aplicações/Shells
- [ru]: ðÒÉÌÏÖÅÎÉÑ/ëÏÍÁÎÄÎÙÅ ÐÒÏÃÅÓÓÏÒÙ
- [sl]: Programi/Ukazne lupine
- [sv]: Tillämpningar/Skal
- [uk]: Прикладні Програми/Командні процесори
-
-Applications/Sound
- [cs]: Aplikace/Zvuk
- [da]: Programmer/Lyd
- [de]: Applikationen/Laut
- [es]: Aplicaciones/Sonido
- [fr]: Aplications/Son
- [is]: Forrit/Hljóð
- [it]: Applicazioni/Audio
- [nb]: Applikasjoner/Lyd
- [pl]: Aplikacje/D¼wiêk
- [pt]: Aplicações/Som
- [pt_BR]: Aplicações/Som
- [ru]: ðÒÉÌÏÖÅÎÉÑ/ú×ÕË
- [sl]: Programi/Zvok
- [sv]: Tillämpningar/Ljud
- [uk]: Прикладні Програми/Звук
-
-Applications/Spreadsheets
- [cs]: Aplikace/Tabulkove procesorý
- [da]: Programmer/Regneark
- [de]: Applikationen/Arbeitsblätter
- [es]: Aplicaciones/Hojas de Cálculo
- [fr]: Applications/Tableurs
- [is]: Forrit/Töflureikni
- [it]: Applicazioni/Fogli di calcolo
- [nb]: Applikasjoner/Regneark
- [pl]: Aplikacje/Arkusze kalkulacyjne
- [pt]: Aplicações/Folhas de Cálculo
- [ru]: ðÒÉÌÏÖÅÎÉÑ/üÌÅËÔÒÏÎÎÙÅ ÔÁÂÌÉÃÙ
- [sl]: Programi/Preglednice
- [sv]: Tillämpningar/Kalkylark
- [uk]: Прикладні Програми/Електронна таблиця
-
-Applications/System
- [cs]: Aplikace/Systém
- [da]: Programmer/System
- [de]: Applikationen/System
- [es]: Aplicaciones/Sistema
- [fr]: Applications/Système
- [is]: Forrit/Kerfisforrit
- [it]: Applicazioni/Sistema
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥·¥¹¥Æ¥à
- [nb]: Applikasjoner/System
- [pl]: Aplikacje/System
- [pt]: Aplicações/Sistema
- [pt_BR]: Aplicações/Sistema
- [ru]: ðÒÉÌÏÖÅÎÉÑ/óÉÓÔÅÍÁ
- [sl]: Programi/Sistem
- [sv]: Tillämpningar/System
- [uk]: Прикладні Програми/Система
-
-Applications/Terminal
- [cs]: Aplikace/Terminál
- [da]: Programmer/Terminal
- [de]: Applikationen/Terminal
- [es]: Aplicaciones/Terminal
- [fr]: Applications/Terminal
- [is]: Forrit/Textaskilum
- [it]: Applicazioni/Terminale
- [nb]: Applikasjoner/Terminal
- [pl]: Aplikacje/Terminal
- [pt]: Aplicações/Terminal
- [ru]: ðÒÉÌÏÖÅÎÉÑ/ôÅÒÍÉÎÁÌ
- [sl]: Programi/Terminal
- [sv]: Tillämpningar/Terminal
- [uk]: Прикладні Програми/Термінали
-
-Applications/Text
- [cs]: Aplikace/Text
- [da]: Programmer/Tekst
- [de]: Applikationen/Text
- [es]: Aplicaciones/Texto
- [fr]: Applications/Texte
- [is]: Forrit/Texti
- [it]: Applicazioni/Testo
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Æ¥¥¹¥È
- [nb]: Applikasjoner/Tekst
- [pl]: Aplikacje/Tekst
- [pt]: Aplicações/Texto
- [ru]: ðÒÉÌÏÖÅÎÉÑ/ôÅËÓÔÏ×ÙÅ ÕÔÉÌÉÔÙ
- [sl]: Programi/Besedilo
- [sv]: Tillämpningar/Text
- [uk]: Прикладні Програми/Текстові утиліти
-
-Applications/WWW
- [cs]: Aplikace/WWW
- [da]: Programmer/WWW
- [de]: Applikationen/WWW
- [es]: Aplicaciones/WWW
- [fr]: Applications/WWW
- [is]: Forrit/WWW
- [nb]: Applikasjoner/WWW
- [pl]: Aplikacje/WWW
- [pt]: Aplicações/WWW
- [sl]: Programi/WWW
- [sv]: Tillämpningar/WWW
-
-Base
- [cs]: Základ
- [da]: Basal
- [de]: Grundsätzlich
- [es]: Base
- [fr]: Base
- [is]: Grunnforrit
- [it]: Base
- [ja]: ¥Ù¡¼¥¹
- [nb]: Basis
- [pl]: Podstawowe
- [pt]: Base
- [pt_BR]: Base
- [ru]: âÁÚÁ
- [sl]: Osnova
- [sv]: Bas
- [uk]: База
-
-Base/Kernel
- [cs]: Základ/Jádro
- [da]: Basal/Kerne
- [de]: Grundsätzlich/Kern
- [es]: Base/Núcleo
- [fr]: Base/Noyau
- [is]: Grunnforrit/Kjarninn
- [it]: Base/Kernel
- [ja]: ¥Ù¡¼¥¹/¥«¡¼¥Í¥ë
- [nb]: Basis/Kjerne
- [pl]: Podstawowe/J±dro
- [pt]: Base/Núcleo
- [ru]: âÁÚÁ/ñÄÒÏ
- [sl]: Osnova/Jedro
- [sv]: Bas/Kärna
- [uk]: База/Ядро
-
-Base/Authentication and Authorization
- [cs]: Základ/Autentizace a autorizace
- [de]: Grundsätzlich/Authentisierung und Ermächtigung
- [es]: Base/Autenticación y Autorización
- [fr]: Base/Authentification et autorisation
- [it]: Base/Autenticazione e autorizzazione
- [pl]: Podstawowe/Uwierzytelnianie i autoryzacja
- [pt]: Base/Autenticação e Autorização
- [ru]: âÁÚÁ/áÕÔÅÎÔÉÆÉËÁÃÉÑ É Á×ÔÏÒÉÚÁÃÉÑ
- [sl]: Osnova/Avtentikacija in identifikacija
- [sv]: Bas/Autentisering och Auktorisering
- [uk]: База/Аутентикація та авторизація
-
-Base/Utilities
- [cs]: Základ/Utility
- [da]: Basal/Værktøj
- [de]: Gründsätzlich/Dienstprogramme
- [es]: Base/Utilitarios
- [fr]: Base/Utilitaires
- [is]: Grunnforrit/Tól
- [it]: Base/Utility
- [nb]: Basis/Verktøy
- [pl]: Podstawowe/Narzêdzia
- [pt]: Base/Utilidades
- [pt_BR]: Base/Utilitários
- [ru]: âÁÚÁ/õÔÉÌÉÔÙ
- [sl]: Osnova/Pripomoèki
- [sv]: Bas/Verktyg
- [uk]: База/Утиліти
-
-Daemons
- [cs]: Démoni
- [da]: Dæmoner
- [de]: Server
- [es]: Servidores
- [fr]: Serveurs
- [is]: Púkar
- [it]: Demoni
- [ja]: ¥Ç¡¼¥â¥ó
- [nb]: Daemoner
- [pl]: Serwery
- [pt]: Servidores
- [ru]: äÅÍÏÎÙ
- [sl]: Stre¾niki
- [sv]: Demoner
- [uk]: Демони
-
-Development
- [cs]: Vývojové prostøedky
- [da]: Udvikling
- [de]: Entwicklung
- [es]: Desarrollo
- [fr]: Développement
- [is]: Þróunartól
- [it]: Sviluppo
- [ja]: ³«È¯
- [nb]: Utvikling
- [pl]: Programowanie
- [pt]: Desenvolvimento
- [pt_BR]: Desenvolvimento
- [ru]: òÁÚÒÁÂÏÔËÁ
- [sl]: Razvoj
- [sv]: Utveckling
- [uk]: Розробка
-
-Development/Building
- [cs]: Základ/Vývoj
- [da]: Udvikling/Bygge
- [de]: Entwicklung/Bauen
- [es]: Desarrollo/Construcción
- [fr]: Développement/Construction
- [it]: Sviluppo/Sviluppo
- [nb]: Utvikling/Bygge
- [pl]: Programowanie/Budowanie
- [pt]: Desenvolvimento/Criação
- [ru]: òÁÚÒÁÂÏÔËÁ/óÔÒÏÅÎÉÅ
- [sv]: Utveckling/Bygga
- [uk]: Розробка/Будова
-
-Development/Debuggers
- [cs]: Vývojové prostøedky/Debuggery
- [da]: Udvikling/Fejlfinding
- [de]: Entwicklung/Debugger
- [es]: Desarrollo/Depuradores
- [fr]: Développement/Débogueurs
- [is]: Þróunartól/Aflúsarar
- [it]: Sviluppo/Debugger
- [ja]: ³«È¯/¥Ç¥Ð¥Ã¥¬
- [nb]: Utvikling/Debuggere
- [pl]: Programowanie/Odpluskwiacze
- [pt]: Desenvolvimento/Depuradores
- [ru]: òÁÚÒÁÂÏÔËÁ/ïÔÌÁÄÞÉËÉ
- [sl]: Razvoj/Razhro¹èevalniki
- [sv]: Utveckling/Felsökning
- [uk]: Розробка/Відладчики
-
-Development/Languages
- [cs]: Vývojové prostøedky/Programovací jazyky
- [da]: Udvikling/Sprog
- [de]: Entwicklung/Sprachen
- [es]: Desarrollo/Lenguajes
- [fr]: Développement/Langues
- [is]: Þróunartól/Forritunarmál
- [it]: Sviluppo/Linguaggi
- [ja]: ³«È¯/¸À¸ì
- [nb]: Utvikling/Programmeringsspråk
- [pl]: Programowanie/Jêzyki
- [pt]: Desenvolvimento/Linguagens
- [ru]: òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ
- [sl]: Razvoj/Jeziki
- [sv]: Utveckling/Språk
- [uk]: Розробка/Мови
-
-Development/Languages/Fortran
- [cs]: Vývojové prostøedky/Programovací jazyky/Fortran
- [da]: Udvikling/Sprog/Fortran
- [de]: Entwicklung/Sprachen/Fortran
- [es]: Desarrollo/Lenguajes/Fortran
- [fr]: Développement/Langues/Fortran
- [is]: Þróunartól/Forritunarmál/Fortran
- [it]: Sviluppo/Linguaggi/Fortran
- [ja]: ³«È¯/¸À¸ì/Fortran
- [nb]: Utvikling/Programmeringsspråk/Fortran
- [pl]: Programowanie/Jêzyki/Fortran
- [pt]: Desenvolvimento/Linguagens/Fortran
- [ru]: òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Fortran
- [sl]: Razvoj/Jeziki/Fortran
- [sv]: Utveckling/Språk/Fortran
- [uk]: Розробка/Мови/Fortran
-
-Development/Languages/Java
- [cs]: Vývojové prostøedky/Programovací jazyky/Java
- [da]: Udvikling/Sprog/Java
- [de]: Entwicklung/Sprachen/Java
- [es]: Desarrollo/Lenguajes/Java
- [fr]: Développement/Langues/Java
- [is]: Þróunartól/Forritunarmál/Java
- [it]: Sviluppo/Linguaggi/Java
- [ja]: ³«È¯/¸À¸ì/Java
- [nb]: Utvikling/Programmeringsspråk/Java
- [pl]: Programowanie/Jêzyki/Java
- [pt]: Desenvolvimento/Linguagens/Java
- [ru]: òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Java
- [sl]: Razvoj/Jeziki/Java
- [sv]: Utveckling/Språk/Java
- [uk]: Розробка/Мови/Java
-
-Development/Languages/Modula3
- [cs]: Vývojové prostøedky/Programovací jazyky/Modula3
- [da]: Udvikling/Sprog/Modula3
- [de]: Entwicklung/Sprachen/Modula3
- [es]: Desarrollo/Lenguajes/Modula3
- [fr]: Développement/Langues/Modula3
- [is]: Þróunartól/Forritunarmál/Modula3
- [it]: Sviluppo/Linguaggi/Modula3
- [ja]: ³«È¯/¸À¸ì/Modula3
- [nb]: Utvikling/Programmeringsspråk/Modula3
- [pl]: Programowanie/Jêzyki/Modula3
- [pt]: Desenvolvimento/Linguagens/Modula3
- [ru]: òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Modula3
- [sl]: Razvoj/Jeziki/Modula3
- [sv]: Utveckling/Språk/Modula3
- [uk]: Розробка/Мови/Modula3
-
-Development/Languages/PHP
- [cs]: Vývojové prostøedky/Programovací jazyky/PHP
- [da]: Udvikling/Sprog/PHP
- [de]: Entwicklung/Sprachen/PHP
- [es]: Desarrollo/Lenguajes/PHP
- [fr]: Développement/Langues/PHP
- [is]: Þróunartól/Forritunarmál/PHP
- [it]: Sviluppo/Linguaggi/PHP
- [ja]: ³«È¯/¸À¸ì/PHP
- [nb]: Utvikling/Programmeringsspråk/PHP
- [pl]: Programowanie/Jêzyki/PHP
- [pt]: Desenvolvimento/Linguagens/PHP
- [ru]: òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/PHP
- [sl]: Razvoj/Jeziki/PHP
- [sv]: Utveckling/Språk/PHP
- [uk]: Розробка/Мови/PHP
-
-Development/Languages/Perl
- [cs]: Vývojové prostøedky/Programovací jazyky/Perl
- [da]: Udvikling/Sprog/Perl
- [de]: Entwicklung/Sprachen/Perl
- [es]: Desarrollo/Lenguajes/Perl
- [fr]: Développement/Langues/Perl
- [is]: Þróunartól/Forritunarmál/Perl
- [it]: Sviluppo/Linguaggi/Perl
- [ja]: ³«È¯/¸À¸ì/Perl
- [nb]: Utvikling/Programmeringsspråk/Perl
- [pl]: Programowanie/Jêzyki/Perl
- [pt]: Desenvolvimento/Linguagens/Perl
- [ru]: òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Perl
- [sl]: Razvoj/Jeziki/Perl
- [sv]: Utveckling/Språk/Perl
- [uk]: Розробка/Мови/Perl
-
-Development/Languages/Python
- [cs]: Vývojové prostøedky/Programovací jazyky/Python
- [da]: Udvikling/Sprog/Python
- [de]: Entwicklung/Sprachen/Python
- [es]: Desarrollo/Lenguajes/Python
- [fr]: Développement/Langues/Python
- [is]: Þróunartól/Forritunarmál/Python
- [it]: Sviluppo/Linguaggi/Python
- [ja]: ³«È¯/¸À¸ì/Python
- [nb]: Utvikling/Programmeringsspråk/Python
- [pl]: Programowanie/Jêzyki/Python
- [pt]: Desenvolvimento/Linguagens/Python
- [ru]: òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Python
- [sl]: Razvoj/Jeziki/Python
- [sv]: Utveckling/Språk/Python
- [uk]: Розробка/Мови/Python
-
-Development/Languages/Scheme
- [cs]: Vývojové prostøedky/Programovací jazyky/Scheme
- [da]: Udvikling/Sprog/Scheme
- [de]: Entwicklung/Sprachen/Scheme
- [es]: Desarrollo/Lenguajes/Scheme
- [fr]: Développement/Langues/Scheme
- [is]: Þróunartól/Forritunarmál/Scheme
- [it]: Sviluppo/Linguaggi/Scheme
- [ja]: ³«È¯/¸À¸ì/Scheme
- [nb]: Utvikling/Programmeringsspråk/Scheme
- [pl]: Programowanie/Jêzyki/Scheme
- [pt]: Desenvolvimento/Linguagens/Scheme
- [ru]: òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Scheme
- [sl]: Razvoj/Jeziki/Scheme
- [sv]: Utveckling/Språk/Scheme
- [uk]: Розробка/Мови/Scheme
-
-Development/Languages/Tcl
- [cs]: Vývojové prostøedky/Programovací jazyky/Tcl
- [da]: Udvikling/Sprog/Tcl
- [de]: Entwicklung/Sprachen/Tcl
- [es]: Desarrollo/Lenguajes/Tcl
- [fr]: Développement/Langues/Tcl
- [is]: Þróunartól/Forritunarmál/Tcl
- [it]: Sviluppo/Linguaggi/Tcl
- [ja]: ³«È¯/¸À¸ì/Tcl
- [nb]: Utvikling/Programmeringsspråk/Tcl
- [pl]: Programowanie/Jêzyki/Tcl
- [pt]: Desenvolvimento/Linguagens/Tcl
- [ru]: òÁÚÒÁÂÏÔËÁ/ñÚÙËÉ/Tcl
- [sl]: Razvoj/Jeziki/Tcl
- [sv]: Utveckling/Språk/Tcl
- [uk]: Розробка/Мови/Tcl
-
-Development/Libraries
- [cs]: Vývojové prostøedky/Knihovny
- [da]: Udvikling/Biblioteker
- [de]: Entwicklung/Bibliotheken
- [es]: Desarrollo/Bibliotecas
- [fr]: Développement/Librairies
- [is]: Þróunartól/Aðgerðasöfn
- [it]: Sviluppo/Librerie
- [ja]: ³«È¯/¥é¥¤¥Ö¥é¥ê
- [nb]: Utvikling/Bibliotek
- [pl]: Programowanie/Biblioteki
- [pt]: Desenvolvimento/Bibliotecas
- [pt_BR]: Desenvolvimento/Bibliotecas
- [ru]: òÁÚÒÁÂÏÔËÁ/âÉÂÌÉÏÔÅËÉ
- [sl]: Razvoj/Knji¾nice
- [sv]: Utveckling/Bibliotek
- [uk]: Розробка/Бібліотеки
-
-Development/Libraries/Libc
- [cs]: Vývojové prostøedky/Knihovny/Libc
- [da]: Udvikling/Biblioteker/Libc
- [de]: Entwicklung/Bibliotheken/Libc
- [es]: Desarrollo/Bibliotecas/Libc
- [fr]: Développement/Librairies/Libc
- [is]: Þróunartól/Aðgerðasöfn/Libc
- [it]: Sviluppo/Librerie/Libc
- [ja]: ³«È¯/¥é¥¤¥Ö¥é¥ê/Libc
- [nb]: Utvikling/Bibliotek/Libc
- [pl]: Programowanie/Biblioteki/Libc
- [pt]: Desenvolvimento/Bibliotecas/Libc
- [pt_BR]: Desenvolvimento/Bibliotecas/Libc
- [ru]: òÁÚÒÁÂÏÔËÁ/âÉÂÌÉÏÔÅËÉ/Libc
- [sl]: Razvoj/Knji¾nice/Libc
- [sv]: Utveckling/Bibliotek/Libc
- [uk]: Розробка/Бібліотеки/Libc
-
-Development/Tools
- [cs]: Vývojové prostøedky/Nástroje
- [da]: Udvikling/Værktøj
- [de]: Entwicklung/Tools
- [es]: Desarrollo/Herramientas
- [fr]: Développement/Outils
- [is]: Þróunartól/Tól
- [it]: Sviluppo/Tool
- [ja]: ³«È¯/¥Ä¡¼¥ë
- [nb]: Utvikling/Verktøy
- [pl]: Programowanie/Narzêdzia
- [pt]: Desenvolvimento/Ferramentas
- [ru]: òÁÚÒÁÂÏÔËÁ/éÎÓÔÒÕÍÅÎÔÙ
- [sl]: Razvoj/Orodja
- [sv]: Utveckling/Verktyg
- [uk]: Розробка/Інструменти
-
-Development/Version Control
- [cs]: Vývojové prostøedky/Správ verzí
- [da]: Udvikling/Versionskontrol
- [de]: Entwicklung/Versionkontrolle
- [es]: Desarrollo/Control de Versiones
- [fr]: Développement/Contrôle de version
- [is]: Þróunartól/Útgáfu Stýring
- [it]: Sviluppo/Controllo della versione
- [nb]: Utvikling/Versjonskontroll
- [pl]: Programowanie/Zarz±dzanie wersjami
- [pt]: Desenvolvimento/Controlo de Versões
- [ru]: òÁÚÒÁÂÏÔËÁ/ëÏÎÔÒÏÌØ ×ÅÒÓÉÊ
- [sl]: Razvoj/Nadzor razlièic
- [sv]: Utveckling/Versionshantering
- [uk]: Розробка/Керуванне версіями
-
-Documentation
- [cs]: Dokumentace
- [da]: Dokumentationen
- [de]: Dokumentation
- [es]: Documentación
- [fr]: Documentacion
- [is]: Skjölun
- [it]: Documentazione
- [nb]: Dokumentasjonen
- [pl]: Dokumentacja
- [pt]: Documentação
- [ru]: äÏËÕÍÅÎÔÁÃÉÑ
- [sl]: Dokumentacija
- [sv]: Dokumentation
- [uk]: Документація
-
-Fonts
- [cs]: Fonty
- [da]: Skrifttyper
- [de]: Zeichensätze
- [es]: Fuentes
- [fr]: Polices
- [is]: Leturgerðir
- [it]: Font
- [nb]: Skrifttyper
- [pl]: Fonty
- [pt]: Tipos de Letra
- [ru]: ûÒÉÆÔÙ
- [sl]: Pisave
- [sv]: Typsnitt
- [uk]: Шрифти
-
-Libraries
- [cs]: Knihovny
- [da]: Biblioteker
- [de]: Bibliotheken
- [es]: Bibliotecas
- [fr]: Librairies
- [is]: Aðgerðasöfn
- [it]: Librerie
- [ja]: ¥é¥¤¥Ö¥é¥ê
- [nb]: Biblioteker
- [pl]: Biblioteki
- [pt]: Bibliotecas
- [pt_BR]: Bibliotecas
- [ru]: âÉÂÌÉÏÔÅËÉ
- [sv]: Bibliotek
- [sl]: Knji¾nice
- [uk]: Бібліотеки
-
-Libraries/Python
- [cs]: Knihovny/Python
- [da]: Biblioteker/Python
- [de]: Bibliotheken/Python
- [es]: Bibliotecas/Python
- [fr]: Librairies/Python
- [is]: Aðgerðasöfn/Python
- [it]: Librerie/Python
- [ja]: ¥é¥¤¥Ö¥é¥ê/Python
- [nb]: Biblioteker/Python
- [pl]: Biblioteki/Python
- [pt]: Bibliotecas/Python
- [pt_BR]: Bibliotecas/Python
- [ru]: âÉÂÌÉÏÔÅËÉ/Python
- [sv]: Bibliotek/Python
- [sl]: Knji¾nice/Python
- [uk]: Бібліотеки/Python
-
-Libraries/XML
- [cs]: Knihovny/XML
- [da]: Biblioteker/XML
- [de]: Bibliotheken/XML
- [es]: Bibliotecas/XML
- [fr]: Librairies/XML
- [is]: Aðgerðasöfn/XML
- [it]: Librerie/XML
- [ja]: ¥é¥¤¥Ö¥é¥ê/XML
- [nb]: Biblioteker/XML
- [pl]: Biblioteki/XML
- [pt]: Bibliotecas/XML
- [pt_BR]: Bibliotecas/XML
- [ru]: âÉÂÌÉÏÔÅËÉ/XML
- [sl]: Knji¾nice/XML
- [sv]: Bibliotek/XML
- [uk]: Бібліотеки/XML
-
-Networking
- [cs]: Sí»ové
- [da]: Netværks
- [de]: Netzwerkwesen
- [es]: Red
- [fr]: Réseau
- [is]: Net
- [it]: Rete
- [nb]: Nettverks
- [pl]: Sieciowe
- [pt]: Rede
- [pt_BR]: Rede
- [ru]: óÅÔØ
- [sl]: Omre¾ni
- [sv]: Nätverk
- [uk]: Мережа
-
-Networking/Admin
- [cs]: Sí»ové/Administrace
- [da]: Netværks/Administration
- [de]: Netzwerkwesen/Administration
- [es]: Red/Administración
- [fr]: Réseau/Administration
- [is]: Net/Stjórnar
- [it]: Rete/Amministrazione
- [nb]: Nettverks/Administrasjon
- [pl]: Sieciowe/Administracyjne
- [pt]: Rede/Administração
- [ru]: óÅÔØ/õÐÒÁ×ÌÅÎÉÅ
- [sv]: Nätverk/Administration
- [uk]: Мережа/Керуванне
-
-Networking/Daemons
- [cs]: Sí»ové/Démoni
- [da]: Netværks/Dæmoner
- [de]: Netzwerkwesen/Server
- [es]: Red/Servidores
- [fr]: Réseau/Serveurs
- [is]: Net/Púkar
- [it]: Rete/Demoni
- [nb]: Nettverks/Daemoner
- [pl]: Sieciowe/Serwery
- [pt]: Rede/Servidores
- [ru]: óÅÔØ/äÅÍÏÎÙ
- [sl]: Omre¾ni/Stre¾niki
- [sv]: Nätverk/Demoner
- [uk]: Мережа/Демони
-
-Networking/Daemons/Java
- [cs]: Sí»ové/Démoni/Java
- [da]: Netværks/Dæmoner/Java
- [de]: Netzwerkwesen/Server/Java
- [es]: Red/Servidores/Java
- [fr]: Réseau/Serveurs/Java
- [is]: Net/Púkar/Java
- [it]: Rete/Demoni/Java
- [nb]: Nettverks/Daemoner/Java
- [pl]: Sieciowe/Serwery/Java
- [pt]: Rede/Servidores/Java
- [ru]: óÅÔØ/äÅÍÏÎÙ/Java
- [sl]: Omre¾ni/Stre¾niki/Java
- [sv]: Nätverk/Demoner/Java
- [uk]: Мережа/Демони/Java
-
-Networking/Daemons/Java/Extensions
- [cs]: Sí»ové/Démoni/Java/Roz¹íøení
- [da]: Netværks/Dæmoner/Java/Udvidelser
- [de]: Netzwerkwesen/Server/Java/Extensionen
- [es]: Red/Servidores/Java/Extensiones
- [fr]: Réseau/Serveurs/Java/Extensions
- [it]: Rete/Demoni/Java/Estensioni
- [nb]: Nettverks/Daemoner/Java/Utvidelser
- [pl]: Sieciowe/Serwery/Java/Rozszerzenia
- [pt]: Rede/Servidores/Java/Extensões
- [ru]: óÅÔØ/äÅÍÏÎÙ/Java/òÁÓÛÉÒÅÎÉÑ
- [sl]: Omre¾ni/Stre¾niki/Java/Raz¹iritve
- [sv]: Nätverk/Demoner/Java/Utvidgningar
- [uk]: Мережа/Демони/Java/Расширение
-
-Networking/Daemons/Java/Servlets
- [pl]: Sieciowe/Serwery/Java/Servlety
-
-Networking/News
- [cs]: Sí»ové/News
- [da]: Netværks/Nyheder
- [de]: Netzwerkwesen/News
- [es]: Red/Noticias
- [fr]: Réseau/Nouvelles
- [is]: Net/Fréttir
- [it]: Rete/News
- [nb]: Nettverks/News
- [pl]: Sieciowe/News
- [pt]: Rede/News
- [pt_BR]: Rede/News
- [ru]: óÅÔØ/îÏ×ÏÓÔÉ
- [sl]: Omre¾ni/Novièarske
- [sv]: Nätverk/Nyheter
- [uk]: Мережа/Новини
-
-Networking/Utilities
- [cs]: Sí»ové/Utility
- [da]: Netværks/Værktøj
- [de]: Netzwerkwesen/Dienstprogramme
- [es]: Red/Utilitarios
- [fr]: Réseau/Utilitaires
- [is]: Net/Tól
- [it]: Rete/Utility
- [nb]: Nettverks/Verktøy
- [pl]: Sieciowe/Narzêdzia
- [pt]: Rede/Utilidades
- [pt_BR]: Rede/Utilitários
- [ru]: óÅÔØ/õÔÉÌÉÔÙ
- [sl]: Omre¾ni/Pripomoèki
- [sv]: Nätverk/Verktyg
- [uk]: Мережа/Утиліти
-
-Themes
- [cs]: Témata
- [da]: Temaer
- [de]: Themen
- [es]: Temas
- [fr]: Thèmes
- [is]: Þemur
- [it]: Temi
- [nb]: Temaer
- [pl]: Motywy
- [pt]: Temas
- [ru]: ôÅÍÙ
- [sv]: Teman
- [uk]: Теми
-
-Themes/GTK+
- [cs]: Témata/GTK+
- [da]: Temaer/GTK+
- [de]: Themen/GTK+
- [es]: Temas/GTK+
- [fr]: Thèmes/GTK+
- [is]: Þemur/GTK+
- [it]: Temi/GTK+
- [nb]: Temaer/GTK+
- [pl]: Motywy/GTK+
- [pt]: Temas/GTK+
- [ru]: ôÅÍÙ/GTK+
- [sv]: Teman/GTK+
- [uk]: Теми/GTK+
-
-X11
- [cs]: X11
- [da]: X11
- [de]: X11
- [es]: X11
- [fr]: X11
- [id]: X11
- [is]: X11
- [it]: X11
- [ja]: X11
- [nb]: X11
- [pl]: X11
- [pt]: X11
- [pt_BR]: X11
- [ru]: X11
- [sl]: X11
- [sv]: X11
- [uk]: X11
-
-X11/Amusements
- [cs]: X11/Zábava
- [da]: X11/Underholdning
- [de]: X11/Unterhaltung
- [es]: X11/Diversiones
- [fr]: X11/Divertissements
- [id]: X11/Hiburan
- [is]: X11/Skemmtun
- [it]: X11/Divertimenti
- [ja]: X11/¥¢¥ß¥å¡¼¥º¥á¥ó¥È
- [nb]: X11/Fornøyelse
- [pl]: X11/Rozrywka
- [pt]: X11/Divertimentos
- [ru]: X11/òÁÚ×ÌÅÞÅÎÉÑ
- [sl]: X11/Zabava
- [sv]: X11/Underhållning
- [uk]: X11/Розваги
-
-X11/Applications
- [cs]: X11/Aplikace
- [da]: X11/Programmer
- [de]: X11/Applikationen
- [es]: X11/Aplicaciones
- [fr]: X11/Applications
- [id]: X11/Aplikasi
- [is]: X11/Forrit
- [it]: X11/Applicazioni
- [ja]: X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó
- [nb]: X11/Applikasjoner
- [pl]: X11/Aplikacje
- [pt]: X11/Aplicações
- [pt_BR]: X11/Aplicações
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ
- [sl]: X11/Programi
- [sv]: X11/Tillämpningar
- [uk]: X11/Прикладні Програми
-
-X11/Applications/Editors
- [cs]: X11/Aplikace/Editory
- [da]: X11/Programmer/Tekstbehandlere
- [de]: X11/Applikationen/Editoren
- [es]: X11/Aplicaciones/Editores
- [fr]: X11/Applications/Editeurs
- [is]: X11/Forrit/Ritlar
- [it]: X11/Applicazioni/Editor
- [ja]: X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥¨¥Ç¥£¥¿
- [nb]: X11/Applikasjoner/Editorer
- [pl]: X11/Aplikacje/Edytory
- [pt]: X11/Aplicações/Editores
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ/òÅÄÁËÔÏÒÙ
- [sl]: X11/Programi/Urejevalniki
- [sv]: X11/Tillämpningar/Editorer
- [uk]: X11/Прикладні Програми/Редактори
-
-X11/Applications/Games
- [cs]: X11/Aplikace/Hry
- [da]: X11/Programmer/Spil
- [de]: X11/Applikationen/Spiele
- [es]: X11/Aplicaciones/Juegos
- [fr]: X11/Applications/Jeux
- [is]: X11/Forrit/Leikir
- [it]: X11/Applicazioni/Giochi
- [ja]: X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥²¡¼¥à
- [nb]: X11/Applikasjoner/Spill
- [pl]: X11/Aplikacje/Gry
- [pt]: X11/Aplicações/Jogos
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ/éÇÒÙ
- [sl]: X11/Programi/Igre
- [sv]: X11/Tillämpningar/Spel
- [uk]: X11/Прикладні Програми/Ігри
-
-X11/Applications/Games/Strategy
- [cs]: X11/Aplikace/Hry/Strategické
- [da]: X11/Programmer/Spil/Strategi
- [de]: X11/Applikationen/Spiele/Strategie
- [es]: X11/Aplicaciones/Juegos/Estratégico
- [fr]: X11/Applications/Jeux/Stratégique
- [it]: X11/Applicazioni/Giochi/Strategico
- [nb]: X11/Applikasjoner/Spill/Strategi
- [pl]: X11/Aplikacje/Gry/Strategiczne
- [pt]: X11/Aplicações/Jogos/Estratégico
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ/éÇÒÙ/óÔÒÁÔÅÇÉÞÅÓËÉÅ
- [sl]: X11/Programi/Igre/Strate¹ke
- [sv]: X11/Tillämpningar/Spel/Strategi
- [uk]: X11/Прикладні Програми/Ігри/Стратегія
-
-X11/Applications/Graphics
- [cs]: X11/Aplikace/Grafika
- [da]: X11/Programmer/Grafik
- [de]: X11/Applikationen/Grafik
- [es]: X11/Aplicaciones/Gráficos
- [fr]: X11/Applications/Graphiques
- [id]: X11/Aplikasi/Grafik
- [is]: X11/Forrit/Myndvinnsla
- [it]: X11/Applicazioni/Immagini
- [ja]: X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥°¥é¥Õ¥£¥Ã¥¯¥¹
- [nb]: X11/Applikasjoner/Grafikk
- [pl]: X11/Aplikacje/Grafika
- [pt]: X11/Aplicações/Gráficos
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ/çÒÁÆÉËÁ
- [sl]: X11/Programi/Grafika
- [sv]: X11/Tillämpningar/Grafik
- [uk]: X11/Прикладні Програми/Графіка
-
-X11/Applications/Multimedia
- [cs]: X11/Aplikace/Multimédia
- [da]: X11/Programmer/Multimedie
- [de]: X11/Applikationen/Multimedien
- [es]: X11/Aplicaciones/Multimedia
- [fr]: X11/Applications/Multimédia
- [is]: X11/Forrit/Margmiðlun
- [it]: X11/Applicazioni/Multimedia
- [ja]: ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Þ¥ë¥Á¥á¥Ç¥£¥¢
- [nb]: X11/Programmer/Multimedia
- [pl]: X11/Aplikacje/Multimedia
- [pt]: X11/Aplicações/Multimédia
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ/íÕÌØÔÉÍÅÄÉÁ
- [sl]: X11/Programi/Veèpredstavnost
- [sv]: X11/Tillämpningar/Multimedia
- [uk]: X11/Прикладні Програми/Мультимедіа
-
-X11/Applications/Networking
- [cs]: X11/Aplikace/Sí»ové
- [da]: X11/Programmer/Netværks
- [de]: X11/Applikationen/Netzwerkwesen
- [es]: X11/Aplicaciones/Red
- [fr]: X11/Applications/Réseau
- [is]: X11/Forrit/Net
- [it]: X11/Applicazioni/Rete
- [nb]: X11/Applikasjoner/Nettverks
- [pl]: X11/Aplikacje/Sieciowe
- [pt]: X11/Aplicações/Rede
- [pt_BR]: X11/Aplicações/Rede
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ/óÅÔØ
- [sl]: X11/Programi/Omre¾ni
- [sv]: X11/Tillämpningar/Nätverk
- [uk]: X11/Прикладні Програми/Мережа
-
-X11/Applications/Publishing
- [cs]: X11/Aplikace/Publikování
- [da]: X11/Programmer/Udgivelse
- [de]: X11/Applikationen/Publizieren
- [es]: X11/Aplicaciones/Edición
- [fr]: X11/Applications/Edition
- [is]: X11/Forrit/Umbrot
- [it]: X11/Applicazioni/Publishing
- [ja]: X11/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó/¥Ñ¥Ö¥ê¥Ã¥·¥ó¥°
- [nb]: X11/Applikasjoner/Publisering
- [pl]: X11/Aplikacje/Publikowanie
- [pt]: X11/Aplicações/Publicação
- [pt_BR]: X11/Aplicações/Editoração
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ/ôÉÐÏÇÒÁÆÉÑ
- [sl]: X11/Programi/Zalo¾ni¹tvo
- [sv]: X11/Tillämpningar/Publicering
- [uk]: X11/Прикладні Програми/Типографія
-
-X11/Applications/Science
- [cs]: X11/Aplikace/Vìdecké
- [de]: X11/Applikationen/Wissenschaft
- [es]: X11/Aplicaciones/Ciencia
- [fr]: X11/Applications/Science
- [it]: X11/Applicazioni/Sciencia
- [pl]: X11/Aplikacje/Nauka
- [pt]: X11/Aplicações/Ciência
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ/îÁÕËÁ
- [sv]: X11/Tillämpningar/Vetenskaplig
- [uk]: X11/Прикладні Програми/Наука
-
-X11/Applications/Sound
- [cs]: X11/Aplikace/Zvuk
- [da]: X11/Programmer/Lyd
- [de]: X11/Applikationen/Laut
- [es]: X11/Aplicaciones/Sonido
- [fr]: X11/Aplicações/Son
- [is]: X11/Forrit/Hljóð
- [it]: X11/Applicazioni/Audio
- [nb]: X11/Applikasjoner/Lyd
- [pl]: X11/Aplikacje/D¼wiêk
- [pt]: X11/Aplicações/Som
- [pt_BR]: X11/Aplicações/Som
- [ru]: X11/ðÒÉÌÏÖÅÎÉÑ/ú×ÕË
- [sl]: X11/Programi/Zvok
- [sv]: X11/Tillämpningar/Ljud
- [uk]: X11/Прикладні Програми/Звук
-
-X11/Development/Libraries
- [cs]: X11/Vývojové prostøedky/Knihovny
- [da]: X11/Udvikling/Biblioteker
- [de]: X11/Entwicklung/Bibliotheken
- [es]: X11/Desarrollo/Bibliotecas
- [fr]: X11/Développement/Librairies
- [is]: X11/Þróunartól/Aðgerðasöfn
- [it]: X11/Sviluppo/Librerie
- [ja]: X11/³«È¯/¥é¥¤¥Ö¥é¥ê
- [nb]: X11/Applikasjoner/Biblioteker
- [pl]: X11/Programowanie/Biblioteki
- [pt]: X11/Desenvolvimento/Bibliotecas
- [pt_BR]: X11/Desenvolvimento/Bibliotecas
- [ru]: X11/òÁÚÒÁÂÏÔËÁ/âÉÂÌÉÏÔÅËÉ
- [sl]: X11/Razvoj/Knji¾nice
- [sv]: X11/Utveckling/Bibliotek
- [uk]: X11/Розробка/Бібліотеки
-
-X11/Development/Tools
- [cs]: X11/Vývojové prostøedky/Nástroje
- [da]: X11/Udvikling/Værktøj
- [de]: X11/Entwicklung/Tools
- [es]: X11/Desarrollo/Herramientas
- [fr]: X11/Développement/Outils
- [is]: X11/Þróunartól/Tól
- [it]: X11/Sviluppo/Tool
- [ja]: X11/³«È¯/¥Ä¡¼¥ë
- [nb]: X11/Applikasjoner/Verktøy
- [pl]: X11/Programowanie/Narzêdzia
- [pt]: X11/Desenvolvimento/Ferramentas
- [ru]: X11/òÁÚÒÁÂÏÔËÁ/éÎÓÔÒÕÍÅÎÔÙ
- [sl]: X11/Razvoj/Orodja
- [sv]: X11/Utveckling/Verktyg
- [uk]: X11/Розробка/Інструменти
-
-X11/Libraries
- [cs]: X11/Knihovny
- [da]: X11/Biblioteker
- [de]: X11/Bibliotheken
- [es]: X11/Bibliotecas
- [fr]: X11/Librairies
- [is]: X11/Aðgerðasöfn
- [it]: X11/Librerie
- [ja]: X11/¥é¥¤¥Ö¥é¥ê
- [nb]: X11/Biblioteker
- [pl]: X11/Biblioteki
- [pt]: X11/Bibliotecas
- [pt_BR]: X11/Bibliotecas
- [ru]: X11/âÉÂÌÉÏÔÅËÉ
- [sl]: X11/Knji¾nice
- [sv]: X11/Bibliotek
- [uk]: X11/Бібліотеки
-
-X11/Servers
- [cs]: X11/Servery
- [da]: X11/Tjenere
- [de]: X11/Server
- [es]: X11/Servidores
- [fr]: X11/Serveurs
- [is]: X11/Þjóna
- [it]: X11/Server
- [nb]: X11/Tjenere
- [pl]: X11/Serwery
- [pt]: X11/Servidores
- [ru]: X11/óÅÒ×ÅÒÙ
- [sl]: X11/Stre¾niki
- [sv]: X11/Servrar
- [uk]: X11/Сервери
-
-X11/Window Managers
- [cs]: X11/Okenní mana¾ery
- [da]: X11/Vindueshåndtererene
- [de]: X11/Fenstermanagern
- [es]: X11/Administradores de Ventanas
- [fr]: X11/Gestionnaires de fenêtres
- [is]: X11/Gluggastjórunum
- [it]: X11/Window manager
- [nb]: X11/Vindushåndtererene
- [pl]: X11/Zarz±dcy okien
- [pt]: X11/Gestores de Janelas
- [ru]: X11/ïËÏÎÎÙÅ ÍÅÎÅÄÖÅÒÙ
- [sl]: X11/Upravljalniki
- [sv]: X11/Fönsterhanterarna
- [uk]: X11/Віконні менеджери
-
-X11/Window Managers/Tools
- [cs]: X11/Okenní mana¾ery/Nástroje
- [da]: X11/Vindueshåndtererene/Værktøj
- [de]: X11/Fenstermanager/Tools
- [es]: X11/Administradores de Ventanas/Herramientas
- [fr]: X11/Gestionnaires de fenêtres/Outils
- [is]: X11/Gluggastjórunum/Tól
- [it]: X11/Window manager/Tool
- [nb]: X11/Vindushåndtererene/Verktøy
- [pl]: X11/Zarz±dcy okien/Narzêdzia
- [pt]: X11/Gestores de Janelas/Ferramentas
- [ru]: X11/ïËÏÎÎÙÅ ÍÅÎÅÄÖÅÒÙ/éÎÓÔÒÕÍÅÎÔÙ
- [sl]: X11/Upravljalniki/Orodja
- [sv]: X11/Fönsterhanterarna/Verktyg
- [uk]: X11/Віконні менеджери/Інструменти
+++ /dev/null
-# $Revision$, $Date$
-# PLD Linux rpm macros
-
-%epoch 0
-%x8664 x86_64 amd64 ia32e
-
-# kernel compiler
-%kgcc %{__cc}
-%kgcc_package gcc
-
-# Build system path macros.
-#
-%__autoconf autoconf %{?debug:-Wall}
-%__automake automake -a -c -f --foreign
-%__autopoint autopoint --force
-
-%__gettextize { \
-if ! gettextize --version | grep -q '0\.10\.' ; then \
- if grep -qs 'AM_GNU_GETTEXT.*external' configure.{ac,in} ; then \
- gettextize --copy --force --no-changelog; \
- else \
- gettextize --copy --force --no-changelog --intl; \
- fi; \
- if [ ! -f po/Makevars ]; then \
- cp -f po/Makevars{.template,}; \
- fi; \
-else \
- gettextize --copy --force; \
-fi; \
-}
-
-%__glib_gettextize glib-gettextize --copy --force
-%__gnome_doc_common gnome-doc-common --copy
-%__gnome_doc_prepare gnome-doc-prepare --copy --force
-%__gtkdocize gtkdocize --copy
-%__intltoolize intltoolize --copy --force
-%__libtoolize libtoolize --copy --force
-
-# The number of cvs changelog entries kept when building package.
-%_buildchangelogtruncate 20
-
-%dependencytracking %{nil}
-
-# Relations between package names that cause dependency loops
-# with legacy packages that cannot be fixed. Relations are
-# specified as
-# p>q
-# where package p has a Requires: on something that package q Provides:
-#
-# XXX Note: that there cannot be any whitespace within the string "p>q",
-# and that both p and q are package names (i.e. no version/release).
-%_dependency_whiteout %{nil}
-
-
-#-----------------------------------------------------------------
-#
-# (re)definition of %{rpm*flags} with %filterout_* support
-# BuildRequires: awk
-# BuildRequires: rpmbuild(macros) >= 1.315
-#
-# Flags specified in %filterout_* are removed from %rpm*flags, exactly:
-# %rpmcflags = %optflags - %filterout - %filterout_c - %filterout_ld
-# %rpmcxxflags = %optflags - %filterout - %filterout_cxx - %filterout_ld
-# %rpmldflags = %optldflags - %filterout_ld
-#
-# Regular expressions are supported, but to avoid some character be treated
-# as regular expression it must be escaped twice.
-
-%filter_out \
- for (i = 1; i in I; i++) { A=0; \
- for (f in F) { \
- if (I[i] ~ "^" F[f] "$") A=1; \
- }; \
- if (!A) printf(I[i] FS); \
- }
-
-%rpmcflags %(awk 'BEGIN {
- split("%{?debug:%debugcflags}%{!?debug:%optflags}%{?debuginfocflags}",I);
- split("%{?filterout} %{?filterout_c} %{?filterout_ld}",F);
- %{filter_out}
-}')
-
-%rpmcxxflags %(awk 'BEGIN {
- split("%{?debug:%debugcflags}%{!?debug:%optflags}%{?debuginfocflags}",I);
- split("%{?filterout} %{?filterout_cxx} %{?filterout_ld}",F);
- %{filter_out}
-}')
-
-%rpmldflags %(awk 'BEGIN {
- split("%{?optldflags}",I);
- split("%{?filterout_ld}",F)
- %{filter_out}
-}')
-
-# rpmldflags with stripped -Wl, -- in the form flags have to be passed to 'ld'
-# but, don't use it, better use gcc as linker
-%ld_rpmldflags %(awk 'BEGIN {
- split("%{rpmldflags}",F);
- for (f in F) {
- s = F[f];
- if (s ~ /^-Wl,/) {
- s = substr(s,5);
- gsub(/,/," ",s);
- };
- printf(s FS);
- };
-}')
-
-#-----------------------------------------------------------------
-%configure2_13 { \
- if [ -n "$LINGUAS" ]; then unset LINGUAS; fi; \
- LDFLAGS="${LDFLAGS:-%rpmldflags}" ; export LDFLAGS ; \
- CFLAGS="${CFLAGS:-%rpmcflags}" ; export CFLAGS ; \
- CXXFLAGS="${CXXFLAGS:-%rpmcxxflags}" ; export CXXFLAGS ; \
- FFLAGS="${FFLAGS:-%rpmcflags}" ; export FFLAGS ; \
- FCFLAGS="${FCFLAGS:-%rpmcflags}" ; export FCFLAGS ; \
- CPPFLAGS="${CPPFLAGS:-}" ; export CPPFLAGS ; \
- %{?__cc:CC="%{__cc}" ; export CC ; } \
- %{?__cxx:CXX="%{__cxx}" ; export CXX ; } \
- %{?configuredir:%{configuredir}}%{!?configuredir:.}/configure \
- --host=%{_target_platform} \
- --prefix=%{_prefix} \
- --exec-prefix=%{_exec_prefix} \
- --bindir=%{_bindir} \
- --sbindir=%{_sbindir} \
- --sysconfdir=%{_sysconfdir} \
- --datadir=%{_datadir} \
- --includedir=%{_includedir} \
- --libdir=%{_libdir} \
- --libexecdir=%{_libexecdir} \
- --localstatedir=%{_localstatedir} \
- --sharedstatedir=%{_sharedstatedir} \
- --mandir=%{_mandir} \
- --infodir=%{_infodir} \
- --x-libraries=%{?_x_libraries}%{!?_x_libraries:%{_libdir}} \
- %{dependencytracking} \
-}
-
-# override __cmake to add -j4 in your ~/.rpmmacros for parallel make
-%__cmake /usr/bin/cmake
-%cmake { \
-CC="%{__cc}" \
-CXX="%{__cxx}" \
-CFLAGS="%{rpmcflags}" \
-CXXFLAGS="%{rpmcxxflags}" \
-%{__cmake} \
-}
-
-# override __scons to add -j4 in your ~/.rpmmacros for parallel make
-# TODO: find way to pass CC/CXX and CC/CXXFLAGS
-%__scons /usr/bin/scons
-%scons { \
-%{__scons} \
-}
-
-# waf. see waf.spec
-# override __waf to add -j4 in your ~/.rpmmacros for parallel make
-%__waf /usr/bin/waf
-%waf { \
-CC="%{__cc}" \
-CXX="%{__cxx}" \
-CPP="%{__cpp}" \
-CFLAGS="%{rpmcflags}" \
-CXXFLAGS="%{rpmcxxflags}" \
-%{__waf} \
-}
-
-#----------------------------------------------------------------
-%global configure_cache 0
-%configure_cache_file %{buildroot}.configure.cache
-
-%configure {./configure \
- LDFLAGS="${LDFLAGS:-%rpmldflags}" \
- CFLAGS="${CFLAGS:-%rpmcflags}" \
- CXXFLAGS="${CXXFLAGS:-%rpmcxxflags}" \
- FFLAGS="${FFLAGS:-%rpmcflags}" \
- FCFLAGS="${FCFLAGS:-%rpmcflags}" \
- CPPFLAGS="${CPPFLAGS:-}" \
- %{?__cc:CC="%{__cc}"} \
- %{?__cxx:CXX="%{__cxx}"} \
- --host=%{_target_platform} \
- --build=%{_target_platform} \
- --prefix=%{_prefix} \
- --exec-prefix=%{_exec_prefix} \
- --bindir=%{_bindir} \
- --sbindir=%{_sbindir} \
- --sysconfdir=%{_sysconfdir} \
- --datadir=%{_datadir} \
- --includedir=%{_includedir} \
- --libdir=%{_libdir} \
- --libexecdir=%{_libexecdir} \
- --localstatedir=%{_localstatedir} \
- --sharedstatedir=%{_sharedstatedir} \
- --mandir=%{_mandir} \
- --infodir=%{_infodir} \
- --x-libraries=%{?_x_libraries}%{!?_x_libraries:%{_libdir}} \
- %{dependencytracking} \
- %{?configure_cache:--cache-file=%{configure_cache_file:-%{buildroot}.configure.cache}} \
-}
-
-# ------------------------------------------------------------------------
-# Overloading of some basic macros
-%prep \
-%%prep\
-export LC_ALL=C\
-export LANG=C\
-unset LINGUAS ||:\
-unset LANGUAGE ||:\
-unset LC_MESSAGES ||:\
-unset DISPLAY ||:\
-%{nil}
-
-%build %%build\
-export LC_ALL=C\
-export LANG=C\
-unset LINGUAS ||:\
-unset LANGUAGE ||:\
-unset LC_MESSAGES ||:\
-unset DISPLAY ||:\
-%{nil}
-
-%install \
-%if 0%{?_enable_debug_packages}\
-%{?buildsubdir:%{debug_package}}\
-%endif\
-%%install\
-export LC_ALL=C\
-export LANG=C\
-unset LINGUAS ||:\
-unset LANGUAGE ||:\
-unset LC_MESSAGES ||:\
-unset DISPLAY ||:\
-%{nil}
-
-# Location of autoconf macros
-%_aclocaldir %(aclocal --print-ac-dir)
-
-# Location of omf files
-%_omf_dest_dir %(scrollkeeper-config --omfdir)
-
-# Location of pkgconfig files
-%_pkgconfigdir /usr/%{_lib}/pkgconfig
-
-# Location of desktop files
-%_desktopdir /usr/share/applications
-%_applnkdir ERROR:_applnkdir_is_obsolete_use_desktopdir_instead
-
-# Location of pixmaps for applnk/desktop files
-%_pixmapsdir /usr/share/pixmaps
-
-# Location of themable icons for applnk/desktop files
-%_iconsdir /usr/share/icons
-
-# Location of fonts directories
-%_fontsdir /usr/share/fonts
-
-# Location of Gtk and associated libraries documentation
-%_gtkdocdir %{_defaultdocdir}/gtk-doc/html
-
-# Location of KDE documentation
-%_kdedocdir %{_defaultdocdir}/kde/HTML
-
-# unsermake script
-%__unsermake /usr/share/unsermake/unsermake
-
-# Current date
-%date %(LC_ALL="C" date +"%a %b %d %Y")
-
-# tmp directory
-%tmpdir %(echo "${TMPDIR:-/tmp}")
-
-# Example files, programs, scripts...
-%_examplesdir /usr/src/examples
-
-# Alternative kernel type/version
-%_alt_kernel %{nil}%{?alt_kernel:-%{?alt_kernel}}
-
-# The directory holding Linux kernel sources
-%_kernelsrcdir /usr/src/linux%{_alt_kernel}
-
-# If non-empty "debug" macro defined, add "dbg" suffix to release number
-%_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}%{?debug:dbg}.%%{ARCH}.rpm
-
-# Requires name = version-release
-%requires_releq() %(echo '%*' | LC_ALL="C" xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}-%%{release}\\n' | sed -e 's/ (none):/ /' | grep -v "is not")
-
-%releq_kernel() %((LC_ALL="C" rpm -qf --qf '%%{name} = %%{epoch}:%%{version}-%%{release}\\n' %{_kernelsrcdir}/include/linux/version.h 2>/dev/null || echo ERROR) | sed -e 's/ (none):/ /' | sed -e 's:-headers::' | grep -vE "(is not|no such)")
-%requires_releq_kernel(s:) Requires%{-s:(%{-s*})}: %releq_kernel
-
-%requires_eq() %(echo '%*' | LC_ALL="C" xargs -r rpm -q --qf 'Requires: %%{name} = %%{epoch}:%%{version}\\n' | sed -e 's/ (none):/ /' -e 's/ 0:/ /' | grep -v "is not")
-%requires_eq_to() %(LC_ALL="C" rpm -q --qf 'Requires: %1 = %%{epoch}:%%{version}\\n' %2 | sed -e 's/ (none):/ /' | grep -v "is not")
-
-%apache_modules_api %(awk '/#define MODULE_MAGIC_NUMBER_MAJOR/ {print $3}' /usr/include/apache/ap_mmn.h 2>/dev/null || echo ERROR)
-
-# kernel version-release handling
-%__kernel_ver %( VER_H=%{_kernelsrcdir}/include/linux/utsrelease.h; [ -f $VER_H ] || VER_H=%{_kernelsrcdir}/include/linux/version.h; [ -f $VER_H ] && (grep UTS_RELEASE $VER_H 2>/dev/null | head -n 1 | cut -d'"' -f2) || (awk '/^VERSION/ { ver = $0; gsub(/VERSION.*=/, NIL, ver); } /^PATCHLEVEL/ { plev = $0; gsub(/PATCHLEVEL.*=/, NIL, plev); } /^SUBLEVEL/ { slev = $0; gsub(/SUBLEVEL.*=/, NIL, slev); } /^EXTRAVERSION/ { ever = $0; gsub(/EXTRAVERSION.*=/, NIL, ever); gsub(/ /, NIL, ever); } END { printf("%d.%d.%d%s", ver, plev, slev, ever); }' %{_kernelsrcdir}/Makefile 2> /dev/null))
-%__kernel_rel %(LC_ALL="C" rpm -qf %{_kernelsrcdir}/include/linux/fs.h 2>/dev/null --qf "%{RELEASE}" | grep -v "is not")
-%__kernel_rpmvr %(LC_ALL="C" rpm -qf %{_kernelsrcdir}/include/linux/fs.h 2>/dev/null --qf "%{VERSION}-%{RELEASE}" | grep -v "is not")
-%_kernel_ver %{__kernel_ver}%{?with_dist_kernel:%(echo %{__kernel_ver} | grep -q -e - || echo -%{__kernel_rel})}
-%_kernel_ver_str %(echo %{!?_without_dist_kernel:%{__kernel_rpmvr}}%{?_without_dist_kernel:%{__kernel_ver}} | sed -e 's/-/_/g')
-
-# sgml macros
-%xmlcat_add() /usr/bin/xmlcatalog --noout --add nextCatalog \"\" %1 /etc/xml/catalog ;
-%xmlcat_del() /usr/bin/xmlcatalog --noout --del %1 /etc/xml/catalog ;
-%xmlcat_add_rewrite /usr/bin/xmlcatalog --noout --add rewriteSystem
-%xmlcat_create() /usr/bin/xmlcatalog --noout --create %1 ;
-%sgmlcat_add() /usr/bin/install-catalog --add %1 %2 > /dev/null ;
-%sgmlcat_del() /usr/bin/install-catalog --remove %1 %2 > /dev/null ;
-%docbook_sgmlcat_fix() { for l in \
-'' \
-' -- default decl --' \
-'DTDDECL "-//OASIS//DTD DocBook XML V%2//EN" "../../xml.dcl"' \
-' -- hacks for opensp --' \
-'SYSTEM "file://%{_datadir}/sgml/docbook/xml-dtd-%2/docbookx.dtd" "%{_datadir}/sgml/docbook/xml-dtd-%2/docbookx.dtd"' \
-'SYSTEM "http://www.oasis-open.org/docbook/xml/%2/docbookx.dtd" "%{_datadir}/sgml/docbook/xml-dtd-%2/docbookx.dtd"' \
-'' \
-; do echo $l; done >> %1 \
-}
-
-# vim - "
-
-# minimum file size needed for compressed documents.
-# just smaller files than this get larger when compressed.
-# some stats:
-# - 0 byte file compressed was 25 bytes .gz
-# - 39 byte file was compressed as 57
-# - with test/test.spec@man 158 byte file was compressed also 158
-%_min_compress_bytes 159
-
-#-----------------------------------------------------------------
-# find and gzip all files in %{_mandir} and %{infodir}
-#
-# Requires: xargs, find
-#
-#%no_install_post_compress_docs 1
-%__spec_install_post_compress_docs { \
-%{!?no_install_post_compress_docs:__spec_install_post_compress_docs() { \
- for i in /usr/share/man /usr/X11R6/man /usr/share/info; do \
- if [ -d "$RPM_BUILD_ROOT$i" ]; then \
- echo "Compress $(basename $i) pages: $i"; \
- find "$RPM_BUILD_ROOT$i" -name '*.bz2' -print | xargs -r %{__bzip2} -df; \
- find "$RPM_BUILD_ROOT$i" -name '*.gz' -print | xargs -r %{__gzip} -dnf; \
- find "$RPM_BUILD_ROOT$i" -type f -size +%{_min_compress_bytes}c -print | xargs -r %{__gzip} -9nf; \
- fi; \
- done; \
-}; __spec_install_post_compress_docs } }
-
-#-----------------------------------------------------------------
-# Strip executable binaries and shared object files
-#
-# Requires: find, awk, strip, cut, xargs
-#
-#%no_install_post_strip 1
-%__spec_install_post_strip {%{!?debug: \
-%{!?no_install_post_strip:__spec_install_post_strip() { \
-if [ -d "$RPM_BUILD_ROOT" ]; then \
- if [ -d $RPM_BUILD_ROOT/lib/modules ]; then \
- modulelist=$(find $RPM_BUILD_ROOT/lib/modules -name '*o' -type f -print); \
- printf "Stripping %d kernel modules..." $(echo "$modulelist" | wc -l); \
- echo "$modulelist" | xargs -l512 chmod u+w; \
- echo "$modulelist" | xargs -l512 %{__strip} --strip-unneeded --remove-section=.comment --remove-section=.note.GNU-stack; \
- echo "DONE"; \
- fi; \
- filelist=`find $RPM_BUILD_ROOT -type f ! -regex ".*ld-[0-9.]*so.*" ! -regex ".*/usr/lib[0-9]*/debug/.*\.debug" ! -regex ".*%{_docdir}/.*" ! -regex ".*%{_includedir}/.*" %{?_noautostrip:! -regex "%{_noautostrip}"}`; \
- # vim - " \
- if [ -z "$filelist" ]; then \
- return; \
- fi; \
- filetypes=`echo "$filelist" | xargs -r -d'\\n' file`; \
- elfexelist=`echo "$filetypes" | awk -F: '/ELF.*executable/ {print $1}'`; \
- elfsharedlist=`echo "$filetypes" | awk -F: '/LF.*shared object/ {print $1}'`; \
- archiveslist=`echo "$filetypes" | awk -F '/current ar archive/ {print $1}'`; \
- if [ -n "$elfexelist" ]; then \
- printf "Stripping %d ELF executables..." $(echo "$elfexelist" | wc -l); \
- chmod u+w $elfexelist; \
- %{__strip} --remove-section=.note --remove-section=.comment $elfexelist; \
- echo "DONE"; \
- fi; \
- if [ -n "$elfsharedlist" ]; then \
- printf "Stripping %d ELF shared libraries..." $(echo "$elfsharedlist" | wc -l); \
- chmod u+w $elfsharedlist; \
- %{__strip} --strip-unneeded --remove-section=.note --remove-section=.comment $elfsharedlist; \
- echo "DONE"; \
- fi; \
- if [ -n "$archiveslist" ]; then \
- printf "Stripping %d ar archives..." $(echo "$elfsharedlist" | wc -l); \
- chmod u+w $archiveslist; \
- %{__strip} --strip-debug --remove-section=.note --remove-section=.comment $archiveslist; \
- echo "DONE"; \
- fi; \
-fi; }; __spec_install_post_strip } } }
-
-#-----------------------------------------------------------------
-# remove all RPATH from executable binaries and shared object files
-#
-# Requires: find, awk, cut, xargs, chrpath, uname
-#
-#%no_install_post_chrpath 1
-%__spec_install_post_chrpath {%{!?debug: \
-%{!?no_install_post_chrpath: __spec_install_post_chrpath() { \
-if [ -d "$RPM_BUILD_ROOT" ]; then \
- files=`find $RPM_BUILD_ROOT -type f ! -regex ".*ld-[0-9.]*so.*" ! -regex ".*/usr/lib[0-9]*/debug/.*" ! -regex ".*%{_docdir}/.*" ! -regex ".*%{_includedir}/.*" %{?_noautochrpath:! -regex "%{_noautochrpath}"}`; \
- if [ -n "$files" ]; then \
- objs=`echo "$files" | xargs -r -d'\\n' file | awk -F: '/ELF.*(executable.*dynamically linked|shared object)/ {print $1}'`; \
- fi
- #"
- if [ -n "$objs" ]; then \
- printf "Remove RPATH from %d executable binaries and shared object files.\n" $(echo "$objs" | wc -l); \
- echo "$objs" | \
- while read file; do \
- rpath= ; \
- chmod u+w "$file"; \
- for dir in `chrpath -l "$file" | \
- awk '/RPATH=/ { gsub(/.*RPATH=/,""); gsub(/:/," "); print $0 }'` ; do \
- case $dir in \
- /home/* | /tmp/* | /usr/lib | /usr/lib64 | /lib | /lib64 | /usr/local/lib | /usr/local/lib64 | /usr/X11R6/lib | /usr/X11R6/lib64 ) \
- echo "remove-rpath: $dir in $file"; \
- ;; \
- * ) \
- if [ "$rpath" = "" ] ; then rpath="$dir" ; \
- else rpath="$rpath:$dir" ; fi ; \
- ;; \
- esac ; \
- done ; \
- if [ "$rpath" = "" ] ; then chrpath -d "$file" > /dev/null ; \
- else chrpath -r "$rpath" "$file" > /dev/null ; fi ; \
- done; \
- fi; \
-fi; }; __spec_install_post_chrpath } } }
-
-#-----------------------------------------------------------------
-# Find and gzip all kernel modules
-#
-# Requires: find
-#
-#%no_install_post_compress_modules 1
-%__spec_install_post_compress_modules { \
-%{!?no_install_post_compress_modules: __spec_install_post_compress_modules() { \
- if [ -d $RPM_BUILD_ROOT/lib/modules ]; then \
- echo "Compress kernel modules"; \
- q=$(find $RPM_BUILD_ROOT/lib/modules -name '*o' -type f -print); \
- echo "$q" | xargs -r %{__gzip} -9nf; \
- printf "%d modules compressed\n" $(echo "$q" | wc -l); \
- find $RPM_BUILD_ROOT/lib/modules -name '*o' -type l -printf "%p %l\n" | \
- while read a b; do ln -sf $b.gz $a.gz; rm -f $a; done; \
- fi; \
-}; __spec_install_post_compress_modules } }
-
-# Remove common Perl files we don't package
-%__spec_install_post_perl_clean {\
-%{!?no_install_post_perl_clean: \
-%{?pdir:rm -f $RPM_BUILD_ROOT{%{perl_archlib}/perllocal.pod,%{perl_vendorarch}/auto/%{pdir}%{?pnam:/%(echo %{pnam} | tr - /)}/.packlist}} \
-} }
-
-#-----------------------------------------------------------------
-# Update GConf2 schemas
-#
-# Requires: GConf2
-#
-%gconf_schema_install() \
- umask 022; \
- GCONF_CONFIG_SOURCE="xml:readwrite:/etc/gconf/gconf.xml.defaults" /usr/bin/gconftool-2 --makefile-install-rule /etc/gconf/schemas/%{?1}%{!?1:*.schemas} > /dev/null \
- %{nil}
-
-%gconf_schema_uninstall() \
-if [ $1 = 0 ]; then \
- umask 022; \
- GCONF_CONFIG_SOURCE="xml:readwrite:/etc/gconf/gconf.xml.defaults" /usr/bin/gconftool-2 --makefile-uninstall-rule /etc/gconf/schemas/%{?1} > /dev/null \
-fi \
-%{nil}
-
-#-----------------------------------------------------------------
-# Update desktop MIME database
-# requires: desktop-file-utils
-#
-%update_desktop_database_post() {{ \
- umask 022; \
- /usr/bin/update-desktop-database -q; \
-}}
-
-%update_desktop_database_postun() {{ \
-if [ $1 = 0 ]; then \
- umask 022; \
- /usr/bin/update-desktop-database -q; \
-fi \
-}}
-
-#-----------------------------------------------------------------
-# Update shared MIME info database
-# requires: shared-mime-info
-#
-%update_mime_database() {{ \
- umask 022; \
- /usr/bin/update-mime-database %{_datadir}/mime; \
-}}
-
-#-----------------------------------------------------------------
-# Update icon cache
-# requires: gtk+
-#
-%update_icon_cache() {{ \
- umask 022; \
- /usr/bin/gtk-update-icon-cache -qf %{_datadir}/icons/%1; \
-}}
-
-#-----------------------------------------------------------------
-# Update scrollkeeper database
-# requires: scrollkeeper
-#
-%scrollkeeper_update_post() \
- /usr/bin/scrollkeeper-update -q; \
- %{nil}
-
-%scrollkeeper_update_postun() \
-if [ $1 = 0 ]; then \
- /usr/bin/scrollkeeper-update -q; \
-fi \
-%{nil}
-
-#-----------------------------------------------------------------
-# post %install sequence:
-# - autodeps exceptions
-# - compress all man and info pages,
-# - strip all ELF executables and ELF shared objects if not %debug.
-# - compress kernel modules if any
-
-###################################################################
-# Requires/Provides automation
-# exceptions system by Jacek Konieczny <jajcus@pld.org.pl>
-#
-%__noautoreqfiles %(sed -e s'/#.*//' /etc/rpm/noautoreqfiles)%{?_noautoreqfiles: %{_noautoreqfiles}}
-%__noautoprovfiles %(sed -e s'/#.*//' /etc/rpm/noautoprovfiles)%{?_noautoprovfiles: %{_noautoprovfiles}}
-%__noautoreq %(sed -e s'/#.*//' /etc/rpm/noautoreq)%{?_noautoreq: %{_noautoreq}}
-%__noautoreqdep %(sed -e s'/#.*//' /etc/rpm/noautoreqdep)%{?_noautoreqdep: %{_noautoreqdep}}
-%__noautoprov %(sed -e s'/#.*//' /etc/rpm/noautoprov)%{?_noautoprov: %{_noautoprov}}
-#%_noautocompressdoc %{nil}
-#
-%_missing_doc_files_terminate_build 1%{nil}
-%_unpackaged_files_terminate_build %{nil}
-# (X)emacs support
-%___emacs_lispdir_helper -batch -q -eval '(while load-path (princ (concat (car load-path) "\\n")) (setq load-path (cdr load-path)))' 2> /dev/null|sed -n '/\\(.*\\/x\\?emacs\\/site-lisp\\)\\/\\?$/{s,,\\1,p;q;}'
-%_emacs_lispdir %(emacs %___emacs_lispdir_helper)
-%_xemacs_lispdir %(xemacs %___emacs_lispdir_helper)
-
-%__php_provides %{nil}
-%__php_requires %{nil}
-%__perl_provides %{nil}
-%__perl_requires %{nil}
-%__mono_provides %{nil}
-%__mono_requires %{nil}
-
-# Perl specific macro definitions.
-%perl_privlib %(eval "`%{__perl} -V:installprivlib`"; echo $installprivlib)
-%perl_archlib %(eval "`%{__perl} -V:installarchlib`"; echo $installarchlib)
-%perl_vendorlib %(eval "`%{__perl} -V:installvendorlib`"; echo $installvendorlib)
-%perl_vendorarch %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch)
-%perl_sitelib %(eval "`%{__perl} -V:installsitelib`"; echo $installsitelib)
-%perl_sitearch %(eval "`%{__perl} -V:installsitearch`"; echo $installsitearch)
-
-# Ruby
-%ruby_archdir %(ruby -r rbconfig -e 'print Config::CONFIG["archdir"]' 2>/dev/null || echo ERROR)
-%ruby_ridir %(ruby -r rbconfig -e 'include Config; print File.join(CONFIG["datadir"], "ri", CONFIG["ruby_version"], "system")' 2>/dev/null || echo ERROR)
-%ruby_rubylibdir %(ruby -r rbconfig -e 'print Config::CONFIG["rubylibdir"]' 2>/dev/null || echo ERROR)
-%ruby_sitearchdir %(ruby -r rbconfig -e 'print Config::CONFIG["sitearchdir"]' 2>/dev/null || echo ERROR)
-%ruby_sitelibdir %(ruby -r rbconfig -e 'print Config::CONFIG["sitelibdir"]' 2>/dev/null || echo ERROR)
-%ruby_version %(ruby -r rbconfig -e 'print Config::CONFIG["ruby_version"]' 2>/dev/null || echo ERROR)
-%ruby_ver_requires_eq Requires: ruby(ver) = %ruby_version
-%ruby_mod_ver_requires_eq Requires: ruby-modules(ver) = %ruby_version
-
-%php_pear_dir /usr/share/pear
-%php_extensiondir %(php-config --extension-dir 2>/dev/null || echo ERROR)
-%php_sysconfdir %(php-config --sysconfdir 2>/dev/null || echo ERROR)
-
-# directory where php includes are installed on system.
-%__php_includedir /usr/include/php
-# extract php/zend api versions
-%php_major_version %(awk '/#define PHP_MAJOR_VERSION/{print $3}' %{__php_includedir}/main/php_version.h 2>/dev/null || echo ERROR)
-%php_api_version %(awk '/#define PHP_API_VERSION/{print $3}' %{__php_includedir}/main/php.h 2>/dev/null || echo ERROR)
-%php_pdo_api_version %(awk '/#define PDO_DRIVER_API/{print $3}' %{__php_includedir}/ext/pdo/php_pdo_driver.h 2>/dev/null || echo ERROR)
-%php_debug %(awk '/#define ZEND_DEBUG/{print $3}' %{__php_includedir}/main/php_config.h 2>/dev/null || echo ERROR)
-%zend_module_api %(awk '/#define ZEND_MODULE_API_NO/{print $3}' %{__php_includedir}/Zend/zend_modules.h 2>/dev/null || echo ERROR)
-%zend_extension_api %(awk '/#define ZEND_EXTENSION_API_NO/{print $3}' %{__php_includedir}/Zend/zend_extensions.h 2>/dev/null || echo ERROR)
-%zend_zts %(Z=$(grep -sc '^#define ZTS 1' %{__php_includedir}/main/php_config.h); echo ${Z:-ERROR})
-
-# helper macro
-%__php_api_requires(v:) Requires: php%{-v*}(%{expand:%1}) = %{expand:%{%{!?2:%{1}}%{?2}}}
-
-# macros for public use
-# for php extensions (php-pecl)
-%requires_php_extension %{__php_api_requires modules_api php_api_version} \
-%{__php_api_requires zend_module_api} \
-%{__php_api_requires -v %php_major_version debug php_debug} \
-%{__php_api_requires -v %php_major_version thread-safety zend_zts}
-
-# for zend extensions
-%requires_zend_extension %{__php_api_requires zend_module_api} \
-%{__php_api_requires zend_extension_api} \
-%{__php_api_requires -v %php_major_version debug php_debug} \
-%{__php_api_requires -v %php_major_version thread-safety zend_zts}
-
-# for php pdo modules (php-pecl-PDO_*)
-%requires_php_pdo_module %{__php_api_requires PDO_API php_pdo_api_version}
-
-# for using PHP post scripts. for PHP >= 5.0
-%php_webserver_restart \
-[ ! -f /etc/apache/conf.d/??_mod_php.conf ] || %service -q apache restart \
-[ ! -f /etc/httpd/conf.d/??_mod_php.conf ] || %service -q httpd restart \
-if [ -f /etc/rc.d/init.d/php-fcgi ]; then \
- PHP_FCGI_BINARY=; . /etc/sysconfig/php-fcgi 2>/dev/null \
- if [[ ${PHP_FCGI_BINARY:-php.fcgi} = *php.fcgi* ]]; then \
- %service -q php-fcgi restart \
- fi \
-fi \
-%{nil}
-
-# for using php post scripts. for PHP >= 4.0 && PHP < 5.0
-%php4_webserver_restart \
-[ ! -f /etc/apache/conf.d/??_mod_php4.conf ] || %service -q apache restart \
-[ ! -f /etc/httpd/conf.d/??_mod_php4.conf ] || %service -q httpd restart \
-if [ -f /etc/rc.d/init.d/php-fcgi ]; then \
- PHP_FCGI_BINARY=; . /etc/sysconfig/php-fcgi 2>/dev/null \
- if [[ ${PHP_FCGI_BINARY:-php.fcgi} = *php4.fcgi* ]]; then \
- %service -q php-fcgi restart \
- fi \
-fi \
-%{nil}
-
-# Python specific macro definitions.
-# python main version
-%py_ver %(python -c "import sys; print sys.version[:3]")
-
-# directories
-%py_prefix %(python -c "import sys; print sys.prefix")
-%py_libdir %{py_prefix}/%{_lib}/python%{py_ver}
-%py_scriptdir %{py_prefix}/share/python%{py_ver}
-%py_incdir /usr/include/python%{py_ver}
-%py_sitedir %{py_libdir}/site-packages
-%py_sitescriptdir %{py_scriptdir}/site-packages
-%py_dyndir %{py_libdir}/lib-dynload
-
-# pure python modules compilation
-%py_comp python -c "import compileall; import sys; compileall.compile_dir(sys.argv[1], ddir=sys.argv[1][len('$RPM_BUILD_ROOT'):])"
-
-%py_ocomp python -O -c "import compileall; import sys; compileall.compile_dir(sys.argv[1], ddir=sys.argv[1][len('$RPM_BUILD_ROOT'):])"
-
-# Software written in Python language require Python with main version
-%pyrequires_eq() Requires: %1
-
-# Hardlink binary identical .pyc and .pyo files
-# (idea by glen <at> pld-linux <dot> org)
-%__spec_install_post_py_hardlink {\
-%{!?no_install_post_py_hardlink: __spec_install_post_py_hardlink() { \
-[ ! -d "$RPM_BUILD_ROOT" ] || find "$RPM_BUILD_ROOT" -name '*.pyc' | while read a; do \
- b="$(echo $a|sed -e 's/.pyc$/.pyo/')"; \
- if cmp -s "$a" "$b"; then \
- ln -f "$a" "$b"; \
- fi; \
-done \
-}; __spec_install_post_py_hardlink } }
-
-# remove python sources, so that check-files won't complain
-# (idea by glen <at> pld-linux <dot> org)
-%py_postclean() \
-for d in %{py_sitescriptdir} %{py_sitedir} %*; do \
- [ ! -d "$RPM_BUILD_ROOT$d" ] || find "$RPM_BUILD_ROOT$d" -name '*.py' -print0 | xargs -0r -l512 rm;\
-done \
-%{nil}
-
-# depmod macro
-%depmod() { \
-umask 022; \
-if [ -e /boot/System.map-%1 ]; then \
- /sbin/depmod -a -F /boot/System.map-%1 %1; \
-else \
- if [ -e /boot/System.map ]; then \
- /sbin/depmod -a -F /boot/System.map %1; \
- else \
- /sbin/depmod -a %1; \
- fi \
-fi; \
-}
-
-# XMMS specific macros
-%xmms_prefix %(xmms-config --prefix 2>/dev/null)
-%xmms_exec_prefix %(xmms-config --exec-prefix 2>/dev/null)
-%xmms_version %(xmms-config --version 2>/dev/null)
-%xmms_datadir %(xmms-config --data-dir 2>/dev/null)
-%xmms_plugindir %(xmms-config --plugin-dir 2>/dev/null)
-%xmms_visualization_plugindir %(xmms-config --visualization-plugin-dir 2>/dev/null)
-%xmms_input_plugindir %(xmms-config --input-plugin-dir 2>/dev/null)
-%xmms_output_plugindir %(xmms-config --output-plugin-dir 2>/dev/null)
-%xmms_effect_plugindir %(xmms-config --effect-plugin-dir 2>/dev/null)
-%xmms_general_plugindir %(xmms-config --general-plugin-dir 2>/dev/null)
-
-%_target_base_arch %(echo %{_target_cpu} | sed 's/i.86/i386/;s/athlon/i386/;s/pentium./i386/;s/amd64/x86_64/;s/ia32e/x86_64/')
-
-# user/group checking macros
-#
-# Usage:
-# %userremove myuser
-#
-%userremove /usr/lib/rpm/user_group.sh user del
-%groupremove /usr/lib/rpm/user_group.sh group del
-#
-# Usage:
-# if %usertestrm myuser; then
-# /usr/sbin/userdel -r myuser
-# Note:
-# use these macros only if you need to call userdel/groupdel with
-# a non-standard option or take an extra action; otherwise use the
-# %userremove/%groupremove macros
-#
-%usertestrm /usr/lib/rpm/user_group.sh user testrm
-%grouptestrm /usr/lib/rpm/user_group.sh group testrm
-# user group membership management macros
-#
-# Usage:
-# %addusertogroup myuser agroup
-#
-%addusertogroup /usr/lib/rpm/user_group.sh user addtogroup
-
-# banner support (useful in {pre,post}{,un} and triggers)
-#
-# Usage:
-# %banner name [-a] [-e] [-n] [-tn] <<EOF
-# the banner text, the banner text
-# the banner text, and following line
-#EOF
-# You can use any form of here-document, <<'EOF' <<-EOT will do.
-# NOTE: if your use "<<-EOF", then You can actually indent inside here-document.
-#
-# -a - append to the banner
-# -e - send to stderr instead of stdout
-# -n - no show banner (overrides -t)
-# -t - show only, if RPM_SCRIPTVERBOSITY >= n; default n=5
-%banner(aent:) \
-RPM_SCRIPTVERBOSITY=5 \
-[ -r /etc/sysconfig/rpm ] && . /etc/sysconfig/rpm \
-if [ -x /usr/bin/banner.sh ]; then \
- CMD="/usr/bin/banner.sh %{-e:--stderr} %{!-n:$([ $RPM_SCRIPTVERBOSITY -ge %{-t:%{-t*}}%{!-t:5} ] && echo -s)} %{!-a:-m}%{-a:-M} %1" \
-else \
- CMD="cat%{-e: >&2}" \
-fi \
-eval $CMD %2%{?3: %3} \
-%nil
-
-# useradd/groupadd macros
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-#
-# Usage:
-# %useradd [-P package] [-u uid] [-d home_dir] [-s shell] [-c comment]
-# [-g initial_group] [-G group[,...]] login
-#
-# -u uid. REQUIRED
-# -g gid/group. REQUIRED
-# -s defaults to /bin/false
-# -d defaults to /usr/share/empty
-# -c No default
-# -r is accepted but ignored (it's always set)
-# -k skeleton dir. defaults to /usr/share/empty
-# rpm specific flags
-# -P package name. defaults to %{name}
-#
-%useradd(c:d:e:f:g:G:Mmk:op:s:u:rP:) \
-%{!-u:%{error:useradd: Required argument -u missing}} \
-%{!-g:%{error:useradd: Required argument -g missing}} \
-%{!?1:%{error:useradd: Required parameter login missing}} \
-if [ -n "`/bin/id -u %{expand:%{%{#}}} 2>/dev/null`" ]; then \
- if [ "`/bin/id -u %{expand:%{%{#}}}`" != "%{-u*}" ]; then \
- echo "Error: user %{expand:%{%{#}}} doesn't have uid=%{-u*}. Correct this before installing %{-P*}%{!?-P:%{name}}." 1>&2 \
- exit 1 \
- fi \
-else \
- echo "Adding user %{expand:%{%{#}}} UID=%{-u*}." \
- /usr/sbin/useradd \\\
- %{-m:-m -k %{-k*}%{!-k:/usr/share/empty}} \\\
- -u %{-u*} \\\
- -r \\\
- -d %{-d*}%{!-d:/usr/share/empty} \\\
- -s %{-s*}%{!-s:/bin/false} \\\
- %{-c:-c "%(set -- %{-c*} %{*}; echo $1)"}\\\
- -g %{-g*} \\\
- %{-M} \\\
- %{-G:-G %{-G*}} \\\
- %{expand:%{%{#}}} 1>&2 || exit $? \
- [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i passwd || : \
-fi;
-
-# Usage:
-# %groupadd [-P package] [-g gid] group
-#
-# -g gid. REQUIRED
-#
-# Sample:
-# %groupadd -P %{name}-base -g %{gid} %{name}
-
-%groupadd(g:P:rfo) \
-%{!-g:%{error:groupadd: Required argument -g missing}} \
-%{!?1:%{error:groupadd: Required parameter group missing}} \
-if [ -n "`/usr/bin/getgid %{1}`" ]; then \
- if [ "`/usr/bin/getgid %{1}`" != "%{-g*}" ]; then \
- echo "Error: group %{1} doesn't have gid=%{-g*}. Correct this before installing %{-P*}%{!?-P:%{name}}." 1>&2 \
- exit 1 \
- fi \
-else \
- echo "Adding group %{1} GID=%{-g*}." \
- /usr/sbin/groupadd -g %{-g*} -r %{1} 1>&2 || exit $? \
- [ ! -x /usr/sbin/nscd ] || /usr/sbin/nscd -i group || : \
-fi;
-
-# apache_config_{install/uninstall} macros *DEPRECATED*
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-#
-# You should use webapp macros instead. these are here until single piece of
-# them is gone from specs ;)
-#
-# The config is installed/removed inside trigger, this means that you can any
-# time install apache1 or apache package and the configuration file is updated.
-# if you don't need the config for various reason for specific apache, just
-# remove the symlink from apache config directory. the trigger will not put the
-# config again to that version of apache. In other words the config is linked
-# to apache config directory on first install of PACKAGE or apache.
-#
-# should be called in trigger body:
-# %triggerin -- apache1 >= 1.3.33-2
-# %apache_config_install -v 1
-#
-# Add package's apache config to apache config.
-#
-# Usage:
-# %apache_config_install -v {1|2} -c %{_sysconfdir}/apache-%{name}.conf -n 99
-#
-# -v REQUIRED: specify apache version. can be 1 or 2.
-# -c OPTIONAL: specify full path to PACKAGE's config. Defaults to %{_sysconfdir}/apache-%{name}.conf.
-# -n OPTIONAL: specify config "slot". defaults to 99
-# -f OPTIONAL: force symlink creation regardless if package was upraded. useful in triggers
-#
-# Internal macros. don't use ;).
-# expands apache config dir by apache version at build time.
-%__apache_confdir() %(if [ %{1} = 1 ]; then echo /etc/apache/conf.d; elif [ %{1} = 2 ]; then echo /etc/httpd/httpd.conf; else echo >&2 Unknown apache version specified; fi)
-# expands apache service name by apache version at build time.
-%__apache_svcname() %(if [ %{1} = 1 ]; then echo apache; elif [ %{1} = 2 ]; then echo httpd; else echo >&2 Unknown apache version specified; fi)
-
-%apache_config_install(fv:c:n:) \
-%{!-v:%{error:apache_config_install: Required argument -v missing}} \
-%{?debug:set -x; echo "apache_config_install:%{-v*} %{name}-%{version}-%{release} 1:[$1]; 2:[$2]"} \
-if [ -n "%{-f:1}" ] || ([ "$1" = "1" ] && [ "$2" = "1" ]) && [ -d %{__apache_confdir %{-v*}} ]; then\
- ln -sf %{-c*}%{!-c:%{_sysconfdir}/apache-%{name}.conf} %{__apache_confdir %{-v*}}/%{-n*}%{!-n:99}_%{name}.conf\
-fi\
-# reload apache if the config symlink is there\
-if [ -L %{__apache_confdir %{-v*}}/%{-n*}%{!-n:99}_%{name}.conf ]; then\
- # additionally don't reload if target package (the webserver) is upgraded, as webserver is restarted anyway in %post \
- if [ "$2" != "2" ] && [ -f /var/lock/subsys/%{__apache_svcname %{-v*}} ]; then\
- /etc/rc.d/init.d/%{__apache_svcname %{-v*}} reload 1>&2\
- fi\
-fi\
-%{nil}
-
-# Remove package's apache config from apache config.
-#
-# Usage:
-# %apache_config_uninstall -v {1|2} -n 99
-#
-# -v REQUIRED: specify apache version. can be 1 or 2.
-# -n OPTIONAL: specify config "slot". defaults to 99
-%apache_config_uninstall(v:n:) \
-%{!-v:%{error:apache_config_uninstall: Required argument -v missing}} \
-%{?debug:set -x; echo "apache_config_uninstall:%{-v*} %{name}-%{version}-%{release}: 1:[$1]; 2:[$2]"} \
-# remove link if either of the packages are gone \
-if [ "$1" = "0" ] || [ "$2" = "0" ]; then \
- if [ -L %{__apache_confdir %{-v*}}/%{-n*}%{!-n:99}_%{name}.conf ]; then \
- rm -f %{__apache_confdir %{-v*}}/%{-n*}%{!-n:99}_%{name}.conf \
- if [ -f /var/lock/subsys/%{__apache_svcname %{-v*}} ]; then \
- /etc/rc.d/init.d/%{__apache_svcname %{-v*}} reload 1>&2 \
- fi \
- fi \
-fi \
-%{nil}
-
-# webapp macros
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-#
-# The config is installed/removed inside trigger, this means that you can any
-# time install apache1/apache/lighttpd package and the configuration file is
-# updated. if you don't need the config for various reason for specific
-# webserver, just remove the symlink from config directory using webapp
-# program. the trigger will not recreate the symlink on upgrades. In other
-# words the config is linked to webserver config directory on first install of
-# PACKAGE or WEBSERVER.
-#
-# Add package's webserver config to webserver webapps dir.
-# Usage:
-# %webapp_register WEBSERVER WEBAPP
-#
-%webapp_register() \
-%{?debug:set -x; echo "webapp_register: %{name}-%{version}-%{release} 1:[$1]; 2:[$2]"} \
-if [ "$1" = "1" ] && [ "$2" = "1" ]; then\
- /usr/sbin/webapp register %1 %2\
-fi\
-# reload webserver if the config symlink is there and skip reload if webserver is upgraded\
-if [ -L /etc/%1/webapps.d/%(echo "%2" | tr '/' '-').conf ] && [ "$2" -lt "2" ]; then\
- %{expand:%service -q %%1 reload}\
-fi\
-%{nil}
-
-# Remove package's config from webserver webapps dir.
-# Usage:
-# %webapp_register [-f] WEBSERVER WEBAPP
-%webapp_unregister(f) \
-%{?debug:set -x; echo "webapp_unregister: %{name}-%{version}-%{release}: 1:[$1]; 2:[$2]"} \
-# remove link if either of the packages are gone \
-if [ -n "%{-f:1}" ] || [ "$1" = "0" ] || [ "$2" = "0" ] && [ -L /etc/%1/webapps.d/%(echo "%2" | tr '/' '-').conf ]; then \
- /usr/sbin/webapp unregister %1 %2\
- %{expand:%service -q %%1 reload}\
-fi \
-%{nil}
-
-# see browser-plugins.spec / template-browser-plugin.spec
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-%nsplugin_install(d:f) { \
-# create link if it's first install of either of the packages \
-if [ -n "%{-f:1}" ] || ([ "$1" = "1" ] && [ "$2" = "1" ] && [ -d %{-d*} ]); then \
-( \
-%( \
- for file in %{*}; do \
- echo echo Installing $file to %{-d*}; \
- echo "ln -sf %{_libdir}/browser-plugins/$file %{-d*};"; \
- done ) \
-) | ( %banner -t 5 -e %{name}-in ); fi; \
-}
-
-%nsplugin_uninstall(d:) { \
-# remove link if either of the packages are gone \
-if [ "$1" = "0" ] || [ "$2" = "0" ]; then \
-( \
-%( \
- for file in %{*}; do \
- echo echo Removing $file from %{-d*}; \
- echo "rm -f %{-d*}/$file;"; \
- done ) \
-) | ( %banner -t 5 -e %{name}-un ); fi; \
-}
-
-# service macro.
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-#
-# calls usual service restart on package %post, but skips the restart if
-# administrator has disabled automatic service restarts in either global
-# /etc/sysconfig/rpm or per service /etc/sysconfig/SERVICE file.
-#
-# Usage:
-# %service [-q] SERVICE ACTION ["SERVICE NICE DESCRIPTION"]
-#
-# -q be silent when service isn't started (for scriplets restaring other package's services)
-#
-%service(q) {{%(export quiet=%{-q:1}; /usr/lib/rpm/service_generator.sh %{*}) };}
-
-
-# Java macros. based on jpackage macros.java
-#
-# Root directory where all Java VMs/SDK/JREs are installed.
-%_jvmdir %{_libdir}/jvm
-
-# Root directory where all Java VMs/SDK/JREs expose their jars
-%_jvmjardir %{_libdir}/jvm-exports
-
-# Root directory for all Java VM/SDK/JRE's private things.
-%_jvmprivdir %{_libdir}/jvm-private
-
-# Root directory for all architecture dependent parts of Java VM/SDK/JRE's
-%_jvmlibdir %{_libdir}/jvm
-
-# Root directory for all architecture independent parts of Java VM/SDK/JRE's
-%_jvmdatadir %{_datadir}/jvm
-
-# Root directory for all configurations parts of Java VM/SDK/JRE's
-%_jvmsysconfdir %{_sysconfdir}/jvm
-
-# Root directory for all common architecture dependent parts of Java VM/SDK/JRE's
-%_jvmcommonlibdir %{_libdir}/jvm-common
-
-# Root directory for all common architecture independent parts of Java VM/SDK/JRE's
-%_jvmcommondatadir %{_datadir}/jvm-common
-
-# Root directory for all common configurations parts of Java VM/SDK/JRE's
-%_jvmcommonsysconfdir %{_sysconfdir}/jvm-common
-
-# Directory where arch-specific (JNI) version-independent jars are installed.
-%_jnidir %{_libdir}/java
-
-
-%java_home %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVA_HOME; . %{_javadir}-utils/java-functions; set_jvm; echo ${JAVA_HOME:-ERROR})
-
-%ant JAVA_HOME=%{java_home} ant
-%jar %{java_home}/bin/jar
-%java %([ -f %{_javadir}-utils/java-functions ] || { echo ERROR; exit 0; }; unset JAVACMD; . %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD)
-%javac %{java_home}/bin/javac
-%javadoc %{java_home}/bin/javadoc
-
-%add_jvm_extension JAVA_LIBDIR=%{buildroot}/%{_javadir} %{_bindir}/jvmjar -l
-
-%jpackage_script() \
-install -d $RPM_BUILD_ROOT%{_bindir}\
-cat > $RPM_BUILD_ROOT%{_bindir}/%5 << 'EOF' \
-#!/bin/sh\
-#\
-# %{name} script\
-# JPackage Project <http://www.jpackage.org/>\
-\
-# Source functions library\
-. %{_javadir}-utils/java-functions\
-\
-# Source system prefs\
-if [ -f %{_sysconfdir}/java/%{name}.conf ]; then\
- . %{_sysconfdir}/java/%{name}.conf\
-fi\
-\
-# Source user prefs\
-if [ -f $HOME/.%{name}rc ]; then\
- . $HOME/.%{name}rc\
-fi\
-\
-# Configuration\
-MAIN_CLASS=%1\
-BASE_FLAGS=%2\
-BASE_OPTIONS=%3\
-BASE_JARS="%(echo %4 | tr ':' ' ')"\
-\
-# Set parameters\
-set_jvm\
-set_classpath $BASE_JARS\
-set_flags $BASE_FLAGS\
-set_options $BASE_OPTIONS\
-\
-# Let's start\
-run "$@"\
-EOF
-
-# PEAR install macros
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-#
-# Usage:
-# %%pear_package_setup [-a #] [-n FMT]
-#
-# -a # - also unpack SOURCE#. for PEAR bootstrapping
-# -n FMT - create builddir with FMT, instead of default %%{_pearname}-%%{version}
-# -z - unpack pear package and let pear use package.xml (not tarball) for install. for PEAR bootstrapping
-#
-# unpack PEAR package to %%{_builddir}/FMT. package is extracted with already
-# destination hierarchy. you should copy the tree to buildroot after
-# patching/reorganizing with %%pear_package_install.
-#
-# additionally BUILDROOT is stripped from files and files are converted to UNIX
-# line endings.
-#
-# the pear install process output is recorded to install.log, you should put it
-# to %%doc for later debug or just for information.
-#
-# additionally additional-packages.txt is produced if it was detected that the
-# package has optional dependencies. the file format is suitable of displaying
-# in %%post of a package. you should put this file to %%doc. noautocompressdoc is
-# automatically added for this file.
-
-
-# records install.log and transforms PEAR names to PLD Linux rpm package names.
-%__pear_install_log \
-tee install.log \
-# make post message of optional packages \
-grep 'can optionally use' install.log | sed -e 's,package "pear/,package "php-pear-,g;s,^pear/,php-pear-,' > optional-packages.txt \
-if [ -s optional-packages.txt ]; then \
- awk -F'"' '/use package/{print $2}' optional-packages.txt | sed -e "s,_,/,g;s,php-pear-, 'pear(,;s,$,.*)'," | tr -d '\\\n' > _noautoreq \
-else \
- rm -f optional-packages.txt \
-fi \
-%{nil}
-
-# command invoking pear cli
-%__pear /usr/bin/pear
-
-# The main macro.
-# using this macro will append optional-packages.txt to the nocompressdoc list
-# as it's displayed to user after package install. and adding additional gzip
-# dep is just waste ;)
-%pear_package_setup(a:n:zD) \
-%define srcdir %{-n*}%{!-n:%{_pearname}-%{version}} \
-%define builddir %{_builddir}/%{srcdir} \
-%setup -q -c -T %{-D:-D} -n %{srcdir} \
-%{-z:tar zxf %{S:0}; %{-a:tar zxf %{S:%{-a*}}}} \
-%{-z:_P=package2.xml; [ -f $_P ] || _P=package.xml; _N=%{srcdir}; mv $_P $_N; cd $_N} \
-%__pear \\\
- -c pearrc \\\
- -d doc_dir=/docs \\\
- -d php_dir=%{php_pear_dir} \\\
- -d bin_dir=%{_bindir} \\\
- -d data_dir=%{php_pear_dir}/data \\\
- -d test_dir=%{php_pear_dir}/tests \\\
- install \\\
- --packagingroot=%{builddir} \\\
- --offline \\\
- --nodeps \\\
- %{-f:--force} \\\
- %{!-z:%{S:%{-a*}%{!-a:0}}}%{-z:$_P} > .install.log || { c=$?; cat .install.log; exit $c; } \
-%{-z:cd ..} \
-cat %{-z:$_N/}.install.log | %__pear_install_log \
-\
-# undos sources \
-find . -type f -print0 | xargs -0 sed -i -e 's,\\r$,,' \
-%{!?_noautocompressdoc:%global _noautocompressdoc %{nil}}%{expand:%%global _noautocompressdoc %{_noautocompressdoc} optional-packages.txt} \
-%{!?_noautoprov:%global _noautoprov %{nil}}%{expand:%%global _noautoprov %{_noautoprov} 'pear(tests/.*)'} \
-%{nil}
-
-# Copies exctracted PEAR package structure and PEAR registry to buildroot.
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-%pear_package_install() \
-cp -a ./%{php_pear_dir}/{.registry,*} $RPM_BUILD_ROOT%{php_pear_dir} \
-find $RPM_BUILD_ROOT%{php_pear_dir} '(' -name '*~' -o -name '*.orig' ')' | xargs -r rm -v \
-# help the developer out a little: \
-if [ -f _noautoreq ]; then \
- echo "AutoReqdep detected:" \
- echo "_noautoreq $(cat _noautoreq)" \
-fi \
-%{nil}
-
-
-# Register OpenLDAP schema.
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-#
-# Usage:
-# %%openldap_schema_register [-d core,nis] %{schemadir}/horde.schema
-#
-# -d specify dependant schemas, separated by comma
-#
-%openldap_schema_register(d:) \
-for schema in %*; do \
- if ! grep -q "$schema" /etc/openldap/slapd.conf; then \
- %{__sed} -i -e " \
- /^include.*local.schema/{ \
- iinclude\\t $schema\
- } \
- " /etc/openldap/slapd.conf \
- fi \
-done \
-# enable dependant schemas \
-if [ "%{-d*}" ]; then \
- %{__sed} -i -e ' \
- /^#include.*\\(%(echo '%{-d*}' | %{__sed} -e 's/,/\\\\|/g')\\)\\.schema/{ \
- s/^#// \
- }' /etc/openldap/slapd.conf \
-fi \
-%{nil}
-
-# Unregister OpenLDAP schema.
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-#
-# Usage:
-# %%openldap_schema_unregister %{schemadir}/horde.schema
-#
-%openldap_schema_unregister() \
-for schema in %*; do \
- if grep -q "$schema" /etc/openldap/slapd.conf; then \
- %{__sed} -i -e " \
- /^include.*$(echo "$schema" | %{__sed} -e 's,/,\\\\/,g')/d \
- # for symmetry it would be nice if we disable enabled schemas in post, \
- # but we really can not do that, it would break something else. \
- " /etc/openldap/slapd.conf \
- fi \
-done \
-%{nil}
-
-%env_update [ ! -x /sbin/env-update ] || /sbin/env-update -u || :
-
-
-# Build modules for kernels 2.6
-# Author: Przemyslaw Iskra <sparky@pld-linux.org>
-#
-# Usage:
-# %build_kernel_modules -m <modules> -C <directory>
-#
-# remember that proper Makefile is still required
-# Options:
-# -m <modules> (required) -- comma-separated list of modules to save,
-# without .ko extension, may be placed in subdirectory
-# -C <directory> -- change to <directory> before doing anything
-# -p <arg>, -P <arg> -- arguments passeed to make scripts
-# -c -- do not execute make clean
-# <additional arguments> -- all additional arguments will be passed to
-# make modules
-#
-# Additional patching supported via here document. Try:
-# %build_kernel_modules -m module <<'EOF'
-# your patch script here
-# EOF
-# Don't use it unless patching depends on config options.
-
-# Developer note: don't touch it unless you know how to handle '\'.
-# - \ in script expands to nothing
-# - \\\ in script expands to \
-# - \\\ inside definition expands to nothing
-# - \\\\\\\ inside definition expands to \
-# - in last line \ has to touch arguments so arguments passing
-# in new lines (using \) will be supported
-
-%build_kernel_modules(p:P:m:C:c) \
-%{!?-m:%{error:%{0}: Required module name/list missing} exit 1} \
- \
-%define Opts \\\\\\\
-%if "%{_target_base_arch}" != "%{_arch}" \\\
- %if "%{_arch}" == "x86_64" && "%{_target_base_arch}" == "i386" \\\
- CC="%{__cc}" CPP="%{__cpp}" ARCH=%{_target_base_arch} \\\
- %else \\\
- ARCH=%{_target_base_arch} CROSS_COMPILE=%{_target_cpu}-pld-linux- \\\
- %endif \\\
-%else \\\
- CC="%{__cc}" CPP="%{__cpp}" \\\
-%endif \
-%define MakeOpts HOSTCC="%{__cc}" SYSSRC=%{_kernelsrcdir} SYSOUT=$PWD/o \\\\\\\
- O=$PWD/o %{?with_verbose:V=1} %{Opts} \
- \
-%{?-C:cd %{-C*}} \
-compile() { \
- L="<"; [[ '%{*}' != *$L$L* ]] || PATCH_SH="set -x -e;$(cat)" \
- set -e -x \
- \
-for cfg in %{?with_dist_kernel:dist}%{!?with_dist_kernel:nondist}; do \
- [ -r "%{_kernelsrcdir}/config-$cfg" ] || exit 1 \
- \
- rm -rf o \
- install -d o/include/linux \
- ln -sf %{_kernelsrcdir}/config-$cfg o/.config \
- ln -sf %{_kernelsrcdir}/Module.symvers-$cfg o/Module.symvers \
- ln -sf %{_kernelsrcdir}/include/linux/autoconf-$cfg.h o/include/linux/autoconf.h \
-%ifarch ppc ppc64 \
- install -d o/include/asm \
- [ ! -d %{_kernelsrcdir}/include/asm-%{_target_base_arch} ] || ln -sf %{_kernelsrcdir}/include/asm-%{_target_base_arch}/* o/include/asm \
- [ ! -d %{_kernelsrcdir}/include/asm-powerpc ] || ln -snf %{_kernelsrcdir}/include/asm-powerpc/* o/include/asm \
-%else \
- ln -sf %{_kernelsrcdir}/include/asm-%{_target_base_arch} o/include/asm \
-%endif \
- \
- set +x \
- [ -z "$PATCH_SH" ] || echo "$PATCH_SH" | %__spec_build_shell \
- set -x \
- \
- %if %{with dist_kernel} \
- %{__make} -j1 -C %{_kernelsrcdir} prepare scripts \\\
- %{-p*} %{-P*} \\\
- %{MakeOpts} \
- %else \
- install -d o/include/config \
- touch o/include/config/MARKER \
- ln -sf %{_kernelsrcdir}/scripts o/scripts \
- %endif \
- \
- %{!?-c:%{__make} -C %{_kernelsrcdir} clean \\\
- RCS_FIND_IGNORE="-name '*.ko' -o" \\\
- M=$PWD %{MakeOpts}} \
- %{__make} -C %{_kernelsrcdir} modules \\\
- ${1+"$@"} \\\
- M=$PWD %{MakeOpts} \
- \
- for MODULE in {%{-m*},}; do \
- [ -z "${MODULE}" ] || mv ${MODULE}{,-$cfg}.ko \
- done \
-done \
-%{?-C:cd -} \
-} \
-compile %{*}\
-%{nil}
-
-
-# Install kernel modules built by %build_kernel_modules
-# Author: Przemyslaw Iskra <sparky@pld-linux.org>
-#
-# Usage:
-# %install_kernel_modules -m <modules> -d <directory>
-#
-# Options:
-# -m <modules> (required) -- comma-separated list of modules to install,
-# without .ko extension, may be placed in subdirectory
-# -d <directory> (required) -- in what subdirectory modules should be
-# installed (eg. misc, kernel/drivers/net)
-# -s <suffix> -- suffix to use when installing modules, useful when module
-# with same name exists in kernel already
-# -n <file> -- name of modprobe config file to use (without .conf extension)
-# for definig aliases, only useful with -s
-
-%install_kernel_modules(m:d:s:n:) \
-%{!?-m:%{error:%{0}: Required module name (-m) missing}exit 1} \
-%{!?-d:%{error:%{0}: Required module directory missing}exit 1} \
-%{?-n:%{!?-s:%{error:%{0}: Modprobe .conf file requires module suffix}exit 1}} \
- \
-%define KernelD $RPM_BUILD_ROOT/lib/modules/%{_kernel_ver} \
-%define ModprobeD $RPM_BUILD_ROOT%{_sysconfdir}/modprobe.d/%{_kernel_ver} \
- \
-install -d %{KernelD}/%{-d*} \
-%{?-s:install -d %{ModprobeD}} \
- \
-for MODULE in {%{-m*},}; do \
- [ -n "${MODULE}" ] || continue \
- MNAME=${MODULE##*/} \
- %if %{without dist_kernel} \
- install ${MODULE}-nondist.ko \\\
- %{KernelD}/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko \
- %{?-s:echo "alias ${MNAME} ${MNAME}-%{-s*}" \\\
- >> %{ModprobeD}/%{-n*}.conf} \
- %else \
- install ${MODULE}-dist.ko \\\
- %{KernelD}/%{-d*}/${MNAME}%{-s:-%{-s*}}.ko \
- %{?-s:echo "alias ${MNAME} ${MNAME}-%{-s*}" \\\
- >> %{ModprobeD}/%{-n*}.conf} \
- %endif \
-done \
-%{nil}
-
-# patchset macros
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-#
-# Usage:
-# %patchset_source -f <seq(1) format> <start> [<end>]
-# %patchset_patch <start> [<end>]
-#
-# If <end> is omited, it is assumed to be <start>.
-#
-# For example in preamble:
-# %patchset_source -f ftp://ftp.vim.org/pub/editors/vim/patches/7.0/7.0.%03g 33 44
-# and in %prep:
-# %patchset_patch 33 44
-
-# generate SourceX urls from range START STOP
-# Format can be SINGLE format char of %e, %f, %g, see seq(1)
-# The sources start from 10000
-%patchset_source(f:b:) %(
- base=%{-b*}%{!-b*:10000};
- start=$(expr $base + %1);
- end=$(expr $base + %{?2}%{!?2:%{1}});
- # we need to call seq twice as it doesn't allow two formats
- seq -f 'Patch%g:' $start $end > %{tmpdir}/__ps1;
- seq -f '%{-f*}' %1 %{?2}%{!?2:%{1}} > %{tmpdir}/__ps2;
- paste %{tmpdir}/__ps{1,2};
- rm -f %{tmpdir}/__ps{1,2};
-) \
-%{nil}
-
-# apply sources from %patchset_source
-# -p specify -pX for %patch line
-# -b base offset: defaults to 10000
-%patchset_patch(f:p:b:) %(
- base=%{-b*}%{!-b*:10000};
- start=$(expr $base + %1);
- end=$(expr $base + %{?2}%{!?2:%{1}});
- echo ": patchset_patch %1%{?2: to %2}";
- seq -f 'patch%g %{-p*:-p%{-p*}}' $start $end | sed -e s,^,%%,;
-) \
-%{nil}
-
-# browser plugins v2
-# Author: Elan Ruusamäe <glen@pld-linux.org>
-#
-# Usage:
-# %browser_plugins_add_browser <name> -p <plugindir>
-#
-# <name> (required) -- name of the browser. usually %{name}.
-# -p <plugindir> (required) -- in what directory browser searches for its plugins.
-# -b -- default blacklists
-# -a <arch> override arch
-#
-# Example:
-# %browser_plugins_add_browser %{name} -p %{_firefoxdir}/plugins
-
-%_browserpluginsconfdir /etc/browser-plugins
-%_browserpluginsdir %{_libdir}/browser-plugins
-%update_browser_plugins /usr/sbin/update-browser-plugins || :
-
-%browser_plugins_add_browser(p:b:a:) \
- browser=%1.%{!-a:%{_target_base_arch}}%{-a*} \
- install -d $RPM_BUILD_ROOT%{_browserpluginsconfdir}/{blacklist,browsers}.d \
- ln -s %{-p*} $RPM_BUILD_ROOT%{_browserpluginsconfdir}/browsers.d/$browser \
- blacklist_file=$RPM_BUILD_ROOT%{_browserpluginsconfdir}/blacklist.d/$browser.blacklist \
- echo '# This file format is shell globs at base dir of plugindir' > $blacklist_file \
- %{-b:cat >> $blacklist_file %{-b*}} \
-%{nil}
-
-# vim:ts=4 sw=4 noet syn=spec
+++ /dev/null
-# PLD rpm macros
-
-%__id @__ID@
-%__id_u %{__id} -u
-%__chown_Rhf @__CHOWN_RHF@
-%__chgrp_Rhf @__CHGRP_RHF@
-
-%_fixowner [ `%{__id_u}` = '0' ] && %{__chown_Rhf} root:@ROOT_GROUP@
-%_fixgroup true
-%_fixperms %{__chmod} -Rf @FIXPERMS@
-
-%_exec_prefix %{_prefix}
-%_bindir %{_exec_prefix}/bin
-%_sbindir %{_exec_prefix}/sbin
-%_datadir %{_prefix}/share
-%_sharedstatedir /var/lib
-%_lib @LIB@
-%_libdir %{_exec_prefix}/%{_lib}
-%_libexecdir %{_exec_prefix}/%{_lib}
-%_includedir %{_prefix}/include
-%_oldincludedir /usr/include
-%_sysconfdir /etc
-%_localstatedir /var
-%_infodir /usr/share/info
-%_mandir %{_prefix}/share/man
-%_defaultdocdir /usr/share/doc
-
-%__os_install_post \
-%{__spec_install_post_strip}\
-%{__spec_install_post_chrpath}\
-%{__spec_install_post_compress_docs}\
-%{__spec_install_post_compress_modules}\
-%{__spec_install_post_py_hardlink}\
-%{__spec_install_post_perl_clean}\
-%{__arch_install_post}\
-%{nil}
-
# Conditional build:
%bcond_with static # build static rpm+rpmi
%bcond_without apidocs # don't generate documentation with doxygen
-%bcond_with autoreqdep # autogenerate package name deps in addition to sonames/perl(X)
+%bcond_without autoreqdep # autogenerate package name deps in addition to sonames/perl(X)
%bcond_without python # don't build python bindings
%bcond_without selinux # build without selinux support
%bcond_without system_libmagic # don't use system libmagic
# force_cpp - force using __cpp other than "%{_target_cpu}-pld-linux-gcc -E"
# versions of required libraries
-%define reqdb_ver 4.5.20
+%define reqdb_ver 4.5.20-6
%define reqpopt_ver 1.10.8
%define beecrypt_ver 2:4.1.2-4
%define sover 4.4
Summary(uk.UTF-8): Менеджер пакетів від RPM
Name: rpm
Version: 4.4.9
-Release: 0.2
-License: GPL
+Release: 70
+License: LGPL
Group: Base
-Source0: ftp://jbj.org/pub/rpm-4.4.x/%{name}-%{version}.tar.gz
+Source0: http://rpm5.org/files/rpm/rpm-4.4/%{name}-%{version}.tar.gz
# Source0-md5: 210b768006e7d88dd8a3bcd498ea27f6
Source1: %{name}.groups
Source2: %{name}.platform
Source3: %{name}-install-tree
Source4: %{name}-find-spec-bcond
-Source5: %{name}-find-lang
+Source5: %{name}-hrmib-cache
Source6: %{name}-groups-po.awk
Source7: %{name}-compress-doc
-Source8: %{name}-check-files
+Source8: RPM-GPG-KEY
Source9: %{name}-php-provides
Source10: %{name}-php-requires
Source11: %{name}.sysinfo
Source14: %{name}.sysconfig
Source15: %{name}-macros.java
Source16: %{name}-java-requires
-Source30: builder
-Source31: adapter.awk
-Source32: pldnotify.awk
# http://svn.pld-linux.org/banner.sh/
-Source33: banner.sh
+Source17: banner.sh
+Patch1067: %{name}-disable-features.patch
+Patch1069: %{name}-parentdirs.patch
+Patch1070: %{name}-rpmrc-ac.patch
+
Patch0: %{name}-pl.po.patch
Patch1: %{name}-rpmrc.patch
Patch2: %{name}-arch.patch
Patch15: %{name}-system_libs-more.patch
Patch16: %{name}-php-deps.patch
Patch17: %{name}-ldconfig-always.patch
-Patch18: %{name}-perl_req.patch
+Patch18: %{name}-macros-ac.patch
Patch19: %{name}-link.patch
Patch20: %{name}-magic-usesystem.patch
Patch21: %{name}-dontneedutils.patch
Patch22: %{name}-provides-dont-obsolete.patch
Patch23: %{name}-pkgconfigdeps.patch
Patch24: %{name}-po.patch
-
+Patch25: %{name}-rpm2cpio-payload.patch
Patch26: %{name}-notsc.patch
Patch27: %{name}-hack-norpmlibdep.patch
Patch28: %{name}-makefile-no_myLDADD_deps.patch
-
+Patch29: %{name}-macros-dbhash.patch
+Patch30: %{name}-rpm5-patchset-8784.patch
Patch31: %{name}-missing-prototypes.patch
Patch32: %{name}-pld-autodep.patch
Patch33: %{name}-arch-x86_64.patch
Patch35: %{name}-perl_req-INC_dirs.patch
Patch36: %{name}-debuginfo.patch
Patch37: %{name}-doxygen_hack.patch
-
+Patch38: %{name}-rpm5-patchset-8021.patch
+Patch39: %{name}-popt-coreutils.patch
Patch41: %{name}-reduce-stack-usage.patch
Patch42: %{name}-old-fileconflicts-behaviour.patch
-
+Patch43: %{name}-rpm5-patchset-8637.patch
Patch44: %{name}-no-neon.patch
Patch45: %{name}-no-sqlite.patch
Patch46: %{name}-mono.patch
Patch47: %{name}-javadeps.patch
-
+Patch48: %{name}-nopie.patch
Patch49: %{name}-p4.patch
Patch50: %{name}-macros.patch
Patch51: %{name}-cleanlibdirs.patch
Patch52: %{name}-morearchs.patch
-
+Patch53: %{name}-chroot-hack.patch
Patch55: %{name}-truncate-cvslog.patch
-
+Patch56: %{name}-rpm5-patchset-8413.patch
Patch57: %{name}-as_needed-fix.patch
Patch58: %{name}-repackage-wo-lzma.patch
Patch59: %{name}-libtool-deps.patch
Patch60: %{name}-obsolete-rpmrc.patch
-URL: http://wraptastic.org/
+Patch61: %{name}-rpmdb.patch
+Patch62: %{name}-lzma-size_t.patch
+Patch63: %{name}-tar_as_secondary_source.patch
+Patch64: %{name}-man_pl.patch
+Patch65: %{name}-lzma-tukaani.patch
+Patch66: %{name}-v3-support.patch
+Patch67: %{name}-cleanbody.patch
+Patch68: %{name}-rpm5-patchset-9486.patch
+Patch69: %{name}-popt-aliases.patch
+Patch70: %{name}-lualeak.patch
+#Patch71: %{name}-rpm5-patchset-10061.patch
+Patch72: %{name}-rpm5-patchset-7657.patch
+Patch73: %{name}-namespace-probe.patch
+Patch74: %{name}-mktemperror.patch
+URL: http://rpm5.org/
BuildRequires: autoconf >= 2.57
BuildRequires: automake >= 1.4
BuildRequires: beecrypt-devel >= %{beecrypt_ver}
%endif
BuildRequires: patch >= 2.2
BuildRequires: popt-devel >= %{reqpopt_ver}
-%{?with_python:BuildRequires: python-devel >= 1:2.5}
-BuildRequires: python-modules >= 1:2.5
+%{?with_python:BuildRequires: python-devel >= 1:2.3}
+BuildRequires: python-modules >= 1:2.3
BuildRequires: rpm-perlprov
%{?with_python:BuildRequires: rpm-pythonprov}
BuildRequires: zlib-devel
Requires: %{name}-lib = %{version}-%{release}
Requires: beecrypt >= %{beecrypt_ver}
Requires: popt >= %{reqpopt_ver}
+Obsoletes: rpm-getdeps
%{!?with_static:Obsoletes: rpm-utils-static}
Conflicts: glibc < 2.2.92
-# ABI changes in rpm, new poldek needed
-Conflicts: poldek < 0.20.1-0.20070108.1.4
+Conflicts: poldek < 0.21-0.20070703.00.11
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _binary_payload w9.gzdio
# don't require very fresh rpm.macros to build
%define __gettextize gettextize --copy --force --intl ; cp -f po/Makevars{.template,}
+%define find_lang sh ./scripts/find-lang.sh $RPM_BUILD_ROOT
%define ix86 i386 i486 i586 i686 athlon pentium3 pentium4
%define ppc ppc ppc7400 ppc7450
%define x8664 amd64 ia32e x86_64
%define __newcpp %{?force_cpp}%{!?force_cpp:%{_target_cpu}-pld-linux-gcc -E}
%define _rpmlibdir /usr/lib/rpm
+%define _noautocompressdoc RPM-GPG-KEY
%define specflags -fno-strict-aliasing
Summary(pl.UTF-8): Podstawowy pakiet RPM - skrypty używane przez same pakiety rpm
Group: Base
Requires: filesystem
+Obsoletes: rpm-scripts
Obsoletes: vserver-rpm
%description base
Group: Libraries
Requires: beecrypt >= %{beecrypt_ver}
Requires: db >= %{reqdb_ver}
+Requires: zlib >= 1.2.3
%{?with_selinux:Requires: libselinux >= 1.18}
%{?with_system_libmagic:Requires: libmagic >= 1.15-2}
Requires: popt >= %{reqpopt_ver}
+%{?with_suggest_tags:Suggests: lzma >= 1:4.42.0}
Obsoletes: rpm-libs
+# avoid installing with incompatible (non-tukaani) lzma
+Conflicts: lzma < 1:4.42.0
# avoid SEGV caused by mixed db versions
Conflicts: poldek < 0.18.1-16
-%{?with_suggest_tags:Suggests: lzma}
%description lib
RPMs library.
Group: Applications/File
Requires: %{name} = %{version}-%{release}
Requires: popt >= %{reqpopt_ver}
+Conflicts: filesystem-debuginfo < 2.0-7
%description utils
Additional utilities for managing RPM packages and database.
Summary(ru.UTF-8): Скрипты и утилиты, необходимые для сборки пакетов
Summary(uk.UTF-8): Скрипти та утиліти, необхідні для побудови пакетів
Group: Applications/File
-Requires(pre): findutils
-Requires: %{name}-build-macros >= 1.314
+Requires(pretrans): findutils
+Requires: %{name}-build-macros >= 1.433-2
Requires: %{name}-utils = %{version}-%{release}
Requires: /bin/id
Requires: awk
-# we need fixed binutils for -feliminate-dwarf2-dups
-Requires: binutils >= 3:2.17.50.0.3-2
Requires: bzip2
Requires: chrpath >= 0.10-4
Requires: cpio
Requires: file >= 4.17
Requires: fileutils
Requires: findutils
-Requires: gcc >= 5:3.4
+%ifarch athlon
+Requires: gcc >= 3.0.3
+%else
+Requires: gcc
+%endif
Requires: glibc-devel
Requires: grep
Requires: gzip
Різноманітні допоміжні скрипти та утиліти, які використовуються для
побудови RPM'ів.
-%package build-tools
-Summary: Scripts for managing .spec files and building RPM packages
-Summary(de.UTF-8): Scripts fürs Bauen binärer RPM-Pakete
-Summary(pl.UTF-8): Skrypty pomocnicze do zarządznia plikami .spec i budowania RPM-ów
-Summary(pt_BR.UTF-8): Scripts e programas executáveis usados para construir pacotes
-Summary(ru.UTF-8): Скрипты и утилиты, необходимые для сборки пакетов
-Summary(uk.UTF-8): Скрипти та утиліти, необхідні для побудови пакетів
-Group: Applications/File
-Requires: %{name}-build = %{version}-%{release}
-# these are optional
-#Requires: cvs
-Requires: wget
-
-%description build-tools
-Scripts for managing .spec files and building RPM packages.
-
-%description build-tools -l de.UTF-8
-Scripts fürs Bauen RPM-Pakete.
-
-%description build-tools -l pl.UTF-8
-Skrypty pomocnicze do zarządzania plikami .spec i do budowania RPM-ów.
-
-%description build-tools -l pt_BR.UTF-8
-Este pacote contém scripts e programas executáveis que são usados para
-construir pacotes usando o RPM.
-
-%description build-tools -l ru.UTF-8
-Различные вспомогательные скрипты и исполняемые программы, которые
-используются для сборки RPM'ов.
-
-%description build-tools -l uk.UTF-8
-Різноманітні допоміжні скрипти та утиліти, які використовуються для
-побудови RPM'ів.
-
%package javaprov
Summary: Additional utilities for checking Java provides/requires in RPM packages
Summary(pl.UTF-8): Dodatkowe narzędzia do sprawdzania zależności kodu w Javie w pakietach RPM
%patch15 -p1
%patch16 -p1
%patch17 -p1
-%patch18 -p1
sed -e 's/^/@pld@/' %{SOURCE2} >>platform.in
#cp -f platform.in macros.pld.in # what for?
echo '%%define __perl_provides %%{__perl} /usr/lib/rpm/perl.prov' > macros.perl
echo '%%define __php_requires /usr/lib/rpm/php.req' >> macros.php
echo '%%define __mono_provides /usr/lib/rpm/mono-find-provides' > macros.mono
echo '%%define __mono_requires /usr/lib/rpm/mono-find-requires' >> macros.mono
-install %{SOURCE5} scripts/find-lang.sh
install %{SOURCE9} scripts/php.prov.in
install %{SOURCE10} scripts/php.req.in
install %{SOURCE12} scripts/perl.prov
%patch22 -p1
%patch23 -p1
%patch24 -p1
+%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
+%patch29 -p1
+%patch30 -p1
%patch31 -p1
%patch32 -p1
%patch33 -p1
%patch35 -p0
%patch36 -p1
%patch37 -p1
+%patch38 -p1
+%patch39 -p1
%patch41 -p1
%patch42 -p1
+%patch43 -p1
%{!?with_neon:%patch44 -p1}
%patch45 -p1
%patch46 -p1
%patch47 -p1
+%patch48 -p1
%patch49 -p1
%patch50 -p1
%patch51 -p1
#%patch52 -p1
+%patch53 -p1
%patch55 -p1
+%patch56 -p1
%patch57 -p1
%patch58 -p1
%patch59 -p1
%patch60 -p1
-
-cd scripts
-mv -f perl.req perl.req.in
-mv -f perl.prov perl.prov.in
-cd ..
-
+%patch18 -p1
+%patch61 -p1
+%patch62 -p1
+%patch63 -p1
+%patch64 -p1
+%patch65 -p1
+%patch66 -p1
+%patch67 -p1
+%patch68 -p1
+%patch69 -p1
+%patch70 -p1
+#%patch71 -p0
+%patch72 -p0
+%patch73 -p1
+%patch74 -p1
+
+mv -f scripts/{perl.req,perl.req.in}
+mv -f scripts/{perl.prov,perl.prov.in}
mv -f po/{no,nb}.po
mv -f po/{sr,sr@Latn}.po
-
rm -rf sqlite zlib db db3 popt rpmdb/db.h
+cp %{SOURCE8} RPM-GPG-KEY
+
+%patch1067 -p1
+%patch1069 -p1
+%patch1070 -p1
# generate Group translations to *.po
awk -f %{SOURCE6} %{SOURCE1}
--enable-shared \
--enable-static \
%{!?with_apidocs:--without-apidocs} \
- %{?with_python:--with-python=2.5} \
+ %{?with_python:--with-python=%{py_ver}} \
%{!?with_python:--without-python} \
%{!?with_selinux:--without-selinux} \
--without-db
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/%{_lib},/etc/sysconfig,%{_sysconfdir}/rpm,/var/lib/banner}
+install -d $RPM_BUILD_ROOT{/%{_lib},/etc/sysconfig,%{_sysconfdir}/rpm,/var/lib/banner,/var/cache/hrmib}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT \
pylibdir=%{py_libdir} \
pkgbindir="%{_bindir}"
-echo "%{_target_cpu}-%{_target_vendor}-linux-gnu" > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+cat <<'EOF' > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/platform
+# first platform file entry can't contain regexps
+%{_target_cpu}-%{_target_vendor}-linux
-%ifarch %{ppc}
-#sed -e '/_target_platform/s/[%]{_target_cpu}/ppc/' \
-# -i $RPM_BUILD_ROOT%{_rpmlibdir}/ppc74[05]0-linux/macros
+%ifarch x86_64
+# x86_64 things
+amd64-[^-]*-linux(-gnu)?
+x86_64-[^-]*-linux(-gnu)?
+%endif
+%ifarch amd64
+amd64-[^-]*-linux(-gnu)?
+x86_64-[^-]*-linux(-gnu)?
+%endif
+%ifarch ia32e
+ia32e-[^-]*-linux(-gnu)?
+x86_64-[^-]*-linux(-gnu)?
+%endif
+
+%ifarch athlon %{x8664}
+# x86 things
+athlon-[^-]*-linux(-gnu)?
+%endif
+%ifarch pentium4 athlon %{x8664}
+pentium4-[^-]*-linux(-gnu)?
+%endif
+%ifarch pentium3 pentium4 athlon %{x8664}
+pentium3-[^-]*-linux(-gnu)?
+%endif
+%ifarch i686 pentium3 pentium4 athlon %{x8664}
+i686-[^-]*-linux(-gnu)?
+%endif
+%ifarch i586 i686 pentium3 pentium4 athlon %{x8664}
+i586-[^-]*-linux(-gnu)?
+%endif
+%ifarch i486 i586 i686 pentium3 pentium4 athlon %{x8664}
+i486-[^-]*-linux(-gnu)?
+%endif
+%ifarch %{ix86} %{x8664}
+i386-[^-]*-linux(-gnu)?
+%endif
+
+%ifarch alpha
+alpha-[^-]*-linux(-gnu)?
+%endif
+
+%ifarch ia64
+ia64-[^-]*-linux(-gnu)?
+%endif
+
+%ifarch ppc64
+powerpc64-[^-]*-linux(-gnu)?
+ppc64-[^-]*-linux(-gnu)?
+%endif
+%ifarch ppc ppc64
+powerpc-[^-]*-linux(-gnu)?
+ppc-[^-]*-linux(-gnu)?
%endif
+%ifarch s390x
+s390x-[^-]*-linux(-gnu)?
+%endif
+%ifarch s390 s390x
+s390-[^-]*-linux(-gnu)?
+%endif
+
+%ifarch sparc64
+sparc64-[^-]*-linux(-gnu)?
+sparcv8-[^-]*-linux(-gnu)?
+sparcv9-[^-]*-linux(-gnu)?
+%endif
+%ifarch sparcv9
+sparcv8-[^-]*-linux(-gnu)?
+sparcv9-[^-]*-linux(-gnu)?
+%endif
+%ifarch sparc sparcv9 sparc64
+sparc-[^-]*-linux(-gnu)?
+%endif
+
+# noarch
+noarch-[^-]*-.*
+EOF
+
rm $RPM_BUILD_ROOT%{_rpmlibdir}/vpkg-provides*
rm $RPM_BUILD_ROOT%{_rpmlibdir}/find-{prov,req}.pl
rm $RPM_BUILD_ROOT%{_rpmlibdir}/find-{provides,requires}.perl
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/find-lang.sh
# not installed since 4.4.8 (-tools-perl subpackage)
install scripts/rpmdiff scripts/rpmdiff.cgi $RPM_BUILD_ROOT%{_rpmlibdir}
install %{SOURCE3} $RPM_BUILD_ROOT%{_rpmlibdir}/install-build-tree
install %{SOURCE4} $RPM_BUILD_ROOT%{_rpmlibdir}/find-spec-bcond
install %{SOURCE7} $RPM_BUILD_ROOT%{_rpmlibdir}/compress-doc
-install %{SOURCE8} $RPM_BUILD_ROOT%{_rpmlibdir}/check-files
install %{SOURCE13} $RPM_BUILD_ROOT%{_rpmlibdir}/user_group.sh
install %{SOURCE16} $RPM_BUILD_ROOT%{_rpmlibdir}/java-find-requires
-install scripts/find-php* $RPM_BUILD_ROOT%{_rpmlibdir}
install scripts/php.{prov,req} $RPM_BUILD_ROOT%{_rpmlibdir}
+install %{SOURCE5} $RPM_BUILD_ROOT%{_rpmlibdir}/hrmib-cache
install %{SOURCE14} $RPM_BUILD_ROOT/etc/sysconfig/rpm
-install %{SOURCE30} $RPM_BUILD_ROOT%{_bindir}/builder
-install %{SOURCE31} $RPM_BUILD_ROOT%{_bindir}/adapter.awk
-install %{SOURCE32} $RPM_BUILD_ROOT%{_bindir}/pldnotify.awk
-install %{SOURCE33} $RPM_BUILD_ROOT%{_bindir}/banner.sh
+install %{SOURCE17} $RPM_BUILD_ROOT%{_bindir}/banner.sh
-install %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo
+install -d $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo
+touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Conflictname
+touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Dirnames
+install %{SOURCE11} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Filelinktos
+touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Obsoletename
+touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Providename
+touch $RPM_BUILD_ROOT%{_sysconfdir}/rpm/sysinfo/Requirename
# obsolete but still installed
rm $RPM_BUILD_ROOT%{_rpmlibdir}/rpmrc
# If non-zero, all erasures will be automagically repackaged.
#%%_repackage_all_erasures 1
+
+# Boolean (i.e. 1 == "yes", 0 == "no") that controls whether files
+# marked as %doc should be installed.
+#%%_excludedocs 1
EOF
cat > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautoprovfiles <<EOF
^libxkbui.so
# -- fam / gamin
^libfam.so.0
+# -- mdns-bonjour: mDNSResponder-libs / avahi-compat-libdns_sd
+^libdns_sd.so.1
EOF
cat > $RPM_BUILD_ROOT%{_sysconfdir}/rpm/noautocompressdoc <<EOF
# global list of file masks not to be compressed in DOCDIR
# manuals for utils dropped in 4.4.8 (?)
#rm -f $RPM_BUILD_ROOT%{_mandir}/{,*/}/man8/{rpmcache,rpmgraph}.8
+# unpackaged in 4.4.9, reasons unknown
+rm $RPM_BUILD_ROOT%{_bindir}/rpm{db,e,i,query,sign,u,verify}
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/rpm{d,e,i,k,q,u,v}
+rm $RPM_BUILD_ROOT%{_rpmlibdir}/symclash.{sh,py}
+rm $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod
+rm $RPM_BUILD_ROOT%{perl_sitearch}/RPM.pm
+rm $RPM_BUILD_ROOT%{perl_sitearch}/auto/RPM/.packlist
+rm $RPM_BUILD_ROOT%{perl_sitearch}/auto/RPM/RPM.bs
+rm $RPM_BUILD_ROOT%{perl_sitearch}/auto/RPM/RPM.so
+rm $RPM_BUILD_ROOT%{_prefix}/local/man/man3/RPM.3pm
+rm $RPM_BUILD_ROOT%{_mandir}/{,ja,pl}/man8/rpm{cache,graph}.8
+
%find_lang %{name}
rm -rf manual
%clean
rm -rf $RPM_BUILD_ROOT
+%triggerpostun lib -- %{name}-lib < %{version}
+echo >&2 "rpm-lib upgrade: Removing /var/lib/rpm/__db* from older rpmdb version"
+rm -f /var/lib/rpm/__db*
+if [ -d /vservers ]; then
+ echo >&2 "rpm-lib upgrade: Removing vservers apps/pkgmgmt/base/rpm/state/__* from older rpmdb version"
+ rm -f /etc/vservers/*/apps/pkgmgmt/base/rpm/state/__*
+fi
+echo >&2 "You should rebuild your rpmdb: rpm --rebuilddb to avoid random rpmdb errors"
+# TODO: poldek should abort if it can't reopen rpmdb after rpm exec:
+#Installing set #3
+#rpmdb: Program version 4.2 doesn't match environment version
+#error: db4 error(22) from dbenv->open: Invalid argument
+#error: cannot open Packages index using db3 - Invalid argument (22)
+#error: //var/lib/rpm: open rpm database failed
+#Processing dependencies...
+#There are more than one package which provide "/bin/sh":
+# if poldek is running, kill it so it will not attempt to fill whole rpmdb
+p=$(/sbin/pidof poldek)
+if [ "$p" ]; then
+ echo >&2 "Killing poldek ($p), don't panic :)"
+ kill $p
+fi
+
+%triggerpostun lib -- db4.5 < %{reqdb_ver}
+echo >&2 "db4.5 upgrade: Removing /var/lib/rpm/__db* from older rpmdb version"
+rm -f /var/lib/rpm/__db*
+if [ -d /vservers ]; then
+ echo >&2 "db4.5 upgrade: Removing vservers apps/pkgmgmt/base/rpm/state/__* from older rpmdb version"
+ rm -f /etc/vservers/*/apps/pkgmgmt/base/rpm/state/__*
+fi
+echo >&2 "You should rebuild your rpmdb: rpm --rebuilddb to avoid random rpmdb errors"
+if [ "$p" ]; then
+ echo >&2 "Killing poldek ($p), don't panic :)"
+ kill $p
+fi
+
+%triggerpostun -- %{name} < 4.4.9-44
+%{_rpmlibdir}/hrmib-cache
+
%post lib -p /sbin/ldconfig
%postun lib -p /sbin/ldconfig
-%pre build
+%pretrans build
find %{_rpmlibdir} -name '*-linux' -type l | xargs rm -f
%files -f %{name}.lang
%defattr(644,root,root,755)
%doc CHANGES CREDITS README wdj/JBJ-GPG-KEY manual/*
+%doc RPM-GPG-KEY
%attr(755,root,root) /bin/rpm
#%attr(755,root,root) %{_bindir}/rpmdb
%dir %{_sysconfdir}/rpm
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rpm/macros
+%dir %{_sysconfdir}/rpm/sysinfo
# these are ok to be replaced
-%config %verify(not md5 mtime size) %{_sysconfdir}/rpm/sysinfo
+%config %verify(not md5 mtime size) %{_sysconfdir}/rpm/sysinfo/*
%config %verify(not md5 mtime size) %{_sysconfdir}/rpm/platform
%dir /var/lock/rpm
/var/lock/rpm/transaction
+# exported package NVRA (stamped with install tid)
+# net-snmp hrSWInstalledName queries, bash-completions
+%dir /var/cache/hrmib
+
#%attr(755,root,root) %{_rpmlibdir}/rpmd
#%{!?with_static:%attr(755,root,root) %{_rpmlibdir}/rpm[eiu]}
#%attr(755,root,root) %{_rpmlibdir}/rpmk
%{_rpmlibdir}/rpmpopt*
%{_rpmlibdir}/macros
+%attr(755,root,root) %{_rpmlibdir}/hrmib-cache
+
%files base
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/rpm
%files lib
%defattr(644,root,root,755)
-%attr(755,root,root) /%{_lib}/librpm*-*.so
-%attr(755,root,root) %{_libdir}/librpm*-*.so
+%attr(755,root,root) /%{_lib}/librpm-%{sover}.so
+%attr(755,root,root) /%{_lib}/librpmdb-%{sover}.so
+%attr(755,root,root) /%{_lib}/librpmio-%{sover}.so
+%attr(755,root,root) %{_libdir}/librpmbuild-%{sover}.so
%files devel
%defattr(644,root,root,755)
-%{_includedir}/rpm
-%{_libdir}/librpm*.la
%attr(755,root,root) %{_libdir}/librpm.so
%attr(755,root,root) %{_libdir}/librpm-%{sover}.so
%attr(755,root,root) %{_libdir}/librpmio.so
%attr(755,root,root) %{_libdir}/librpmdb.so
%attr(755,root,root) %{_libdir}/librpmdb-%{sover}.so
%attr(755,root,root) %{_libdir}/librpmbuild.so
+%{_libdir}/librpm.la
+%{_libdir}/librpmbuild.la
+%{_libdir}/librpmdb.la
+%{_libdir}/librpmio.la
+%{_includedir}/rpm
%files static
%defattr(644,root,root,755)
-%{_libdir}/librpm*.a
+%{_libdir}/librpm.a
+%{_libdir}/librpmbuild.a
+%{_libdir}/librpmdb.a
+%{_libdir}/librpmio.a
%files utils
%defattr(644,root,root,755)
%attr(755,root,root) %{_rpmlibdir}/config.*
%attr(755,root,root) %{_rpmlibdir}/cross-build
%attr(755,root,root) %{_rpmlibdir}/find-spec-bcond
-%attr(755,root,root) %{_rpmlibdir}/find-lang.sh
%attr(755,root,root) %{_rpmlibdir}/getpo.sh
%attr(755,root,root) %{_rpmlibdir}/install-build-tree
%attr(755,root,root) %{_rpmlibdir}/mkinstalldirs
%{_rpmlibdir}/sparc*
%endif
%ifarch %{x8664}
+%{_rpmlibdir}/amd64*
+%{_rpmlibdir}/ia32e*
%{_rpmlibdir}/x86_64*
%endif
# must be here for "Requires: rpm-*prov" to work
%lang(pl) %{_mandir}/pl/man1/gendiff.1*
%lang(pl) %{_mandir}/pl/man8/rpmbuild.8*
-%files build-tools
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/builder
-%attr(755,root,root) %{_bindir}/adapter.awk
-%attr(755,root,root) %{_bindir}/pldnotify.awk
-
%files javaprov
%defattr(644,root,root,755)
%attr(755,root,root) %{_rpmlibdir}/java-find-requires
%files php-pearprov
%defattr(644,root,root,755)
%attr(755,root,root) %{_rpmlibdir}/php*
-%attr(755,root,root) %{_rpmlibdir}/find-php*
%if %{with python}
%files -n python-rpm
+++ /dev/null
-# This file is intended for setting rpm options that cannot be set as macros
-#
-# NOTE:
-# At this moment only few packages use this features.
-
-# How verbose the .rpm scripts/triggers should be?
-RPM_SCRIPTVERBOSITY=5
-
-# Should unused users be removed at package deinstallation?
-RPM_USERDEL=yes
-
-# Should automatic restarts from rpm upgrades be skipped?
-# You can also disable this per service, if service supports it from
-# /etc/sysconfig/SERVICE
-#RPM_SKIP_AUTO_RESTART=yes
-Filelinktos:
- /proc/self/fd
- /dev/fd/0
- /dev/fd/1
- /dev/fd/2
+/proc/self/fd
+/dev/fd/0
+/dev/fd/1
+/dev/fd/2