]> git.pld-linux.org Git - packages/rpm-build-tools.git/blobdiff - adapter.awk
- more en
[packages/rpm-build-tools.git] / adapter.awk
index ca1e6c43aed77b0e5c19f97cd2e1003ff5c60258..60eff7e254c1323e478351488f1333f18720057d 100644 (file)
@@ -1,15 +1,18 @@
 #!/bin/awk -f
 #
-# This is adapter v0.27. Adapter adapts .spec files for PLD.
+# This is adapter v0.27. Adapter adapts .spec files for PLD Linux.
 #
-# Copyright (C) 1999-2003 PLD-Team <feedback@pld-linux.org>
+# Copyright (C) 1999-2005 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>
+#      Elan Ruusamä¤e <glen@pld-linux.org>
+#
+# See cvs log adapter{,.awk} for list of contributors
+#
 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 
 # TODO
@@ -21,6 +24,9 @@
 # - 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"
+       SECTIONS = "^%(" RPM_SECTIONS ")"
+
        preamble = 1            # Is it part of preamble? Default - yes
        boc = 4                 # Beginning of %changelog
        bod = 0                 # Beginning of %description
@@ -60,6 +66,7 @@ BEGIN {
        "rpm --eval %_mandir"   | getline mandir
        "rpm --eval %_infodir"  | getline infodir
        "rpm --eval %_examplesdir"      | getline examplesdir
+       "rpm --eval %_defaultdocdir"    | getline docdir
 
        "rpm --eval %perl_sitearch" | getline perl_sitearch
        "rpm --eval %perl_archlib" | getline perl_archlib
@@ -109,7 +116,12 @@ function b_makekey(a, b,   s) {
 #   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["SORTBR"] == 1 && preamble == 1 && /(Build)?Requires/, /(Build)?Requires/ { # && !/^%/) {
+ENVIRON["SKIP_SORTBR"] != 1 && preamble == 1 && /(PreReq|(Build)?Requires)/, /(PreReq|(Build)?Requires)/ {
+       if ($1 ~ /PreReq:/) {
+               sub(/PreReq:/, "Requires:", $1);
+       }
+       format_preamble()
+
        b_idx++;
        l = substr($0, index($0, $2));
        b_ktmp = b_makekey($1, l);
@@ -151,8 +163,8 @@ preamble == 1 {
        next
 }
 
-# Remove defining _applnkdir (this macro has been included in rpm-3.0.4)
 /^%define/ {
+       # Remove defining _applnkdir (this macro has been included in rpm-3.0.4)
        if ($2 == "_applnkdir") {
                next
        }
@@ -176,8 +188,14 @@ preamble == 1 {
                sbindir = $3
        if ($2 ~ /_libdir/)
                libdir = $3
-       if ($2 ~ /_sysconfdir/ && $3 !~ /^%\(/)
-               sysconfdir = $3
+       if ($2 ~ /_sysconfdir/) {
+               if ($3 ~ /^%\(/) {
+                       # TODO: should escape for latter checks like: ($c ~ sysconfdir "/{?cron.")
+                       sysconfdir = "%%%%%%%%%%%%%%"
+               } else {
+                       sysconfdir = $3
+               }
+       }
        if ($2 ~ /_datadir/)
                datadir = $3
        if ($2 ~ /_includedir/)
@@ -186,6 +204,8 @@ preamble == 1 {
                mandir = $3
        if ($2 ~ /_infodir/)
                infodir = $3
+       if ($2 ~ /_docdir/)
+               docdir = $3
 
        # version related macros
        if ($2 ~ /^_beta$/)
@@ -216,7 +236,7 @@ preamble == 1 {
 ################
 # %description #
 ################
-/^%description/, (/^%[a-z]+/ && !/^%description/ && !/^%((end)?if|else)/) {
+/^%description/, (!/^%description/ && $0 ~ SECTIONS) {
        preamble = 0
 
        if (/^%description/) {
@@ -265,7 +285,7 @@ preamble == 1 {
 #########
 # %prep #
 #########
-/^%prep/, (/^%[a-z]+$/ && !/^%prep/ && !/^%((end)?if|else)/) {
+/^%prep/, (!/^%prep/ && $0 ~ SECTIONS) {
        preamble = 0
 
        use_macros()
@@ -300,7 +320,7 @@ preamble == 1 {
 ##########
 # %build #
 ##########
-/^%build/, (/^%[a-z]+$/ && !/^%build/ && !/^%((end)?if|else)/) {
+/^%build/, (!/^%build/ && $0 ~ SECTIONS) {
        preamble = 0
 
        use_macros()
@@ -367,7 +387,7 @@ preamble == 1 {
 ##########
 # %clean #
 ##########
-/^%clean/, (/^%[a-z]+$/ && !/^%clean/ && !/^%((end)?if|else)/) {
+/^%clean/, (!/^%clean/ && $0 ~ SECTIONS) {
        did_clean = 1
 
        # prevent next section header like "%post -p /sbin/ldconfig" being adapterized
@@ -379,7 +399,7 @@ preamble == 1 {
 ############
 # %install #
 ############
-/^%install/, (/^%[a-z]+$/ && !/^%install/ && !/^%((end)?if|else)/) {
+/^%install/, (!/^%install/ && $0 ~ SECTIONS) {
 
        preamble = 0
 
@@ -430,7 +450,7 @@ preamble == 1 {
 ##########
 # %files #
 ##########
-/^%files/, (/^%[a-z \-]+$/ && !/^%files/ && !/^%((end)?if|else)/) {
+/^%files/, (!/^%files/ && $0 ~ SECTIONS) {
        preamble = 0
 
        if ($0 ~ /^%files/)
@@ -442,7 +462,7 @@ preamble == 1 {
 ##############
 # %changelog #
 ##############
-/^%changelog/, (/^%[a-z]+$/ && !/^%changelog/) {
+/^%changelog/, (!/^%changelog/ && $0 ~ SECTIONS) {
        preamble = 0
        has_changelog = 1
        skip = 0
@@ -490,7 +510,7 @@ preamble == 1 {
 ###########
 # SCRIPTS #
 ###########
-/^%pre/, (/^%[a-z]+$/ && !/^%pre/) {
+/^%pre/, (!/^%pre/ && $0 ~ SECTIONS) {
        preamble = 0
 
        # %useradd and %groupadd may not be wrapped
@@ -501,28 +521,29 @@ preamble == 1 {
        }
 }
 
-/^%post/, (/^%[a-z]+$/ && !/^%post/) {
+/^%post/, (!/^%post/ && $0 ~ SECTIONS) {
        preamble = 0
+       use_macros()
 }
-/^%preun/, (/^%[a-z]+$/ && !/^%preun/) {
+/^%preun/, (!/^%preun/ && $0 ~ SECTIONS) {
        preamble = 0
 }
-/^%postun/, (/^%[a-z]+$/ && !/^%postun/) {
+/^%postun/, (!/^%postun/ && $0 ~ SECTIONS) {
        preamble = 0
 }
-/^%triggerin/, (/^%[a-z]+$/ && !/^%triggerin/) {
+/^%triggerin/, (!/^%triggerin/ && $0 ~ SECTIONS) {
        preamble = 0
 }
-/^%triggerun/, (/^%[a-z]+$/ && !/^%triggerun/) {
+/^%triggerun/, (!/^%triggerun/ && $0 ~ SECTIONS) {
        preamble = 0
 }
-/^%triggerpostun/, (/^%[a-z]+$/ && !/^%triggerpostun/) {
+/^%triggerpostun/, (!/^%triggerpostun/ && $0 ~ SECTIONS) {
        preamble = 0
 }
-/^%pretrans/, (/^%[a-z]+$/ && !/^%pretrans/) {
+/^%pretrans/, (!/^%pretrans/ && $0 ~ SECTIONS) {
        preamble = 0
 }
-/^%posttrans/, (/^%[a-z]+$/ && !/^%posttrans/) {
+/^%posttrans/, (!/^%posttrans/ && $0 ~ SECTIONS) {
        preamble = 0
 }
 
@@ -542,7 +563,7 @@ preamble == 1 {
 
        field = tolower($1)
        fieldnlower = $1
-       if (field ~ /summary:/) {
+       if (field ~ /summary:/ && !/etc\.$/) {
                sub(/\.$/, "", $0);
        }
        if (field ~ /group(\([^)]+\)):/)
@@ -566,9 +587,10 @@ preamble == 1 {
                sub(/^System Environment\/Daemons$/, "Daemons", Grupa)
                sub(/^Applications\/Internet$/, "Applications/Networking", Grupa)
                sub(/^Applications\/Daemons$/, "Daemons", Grupa)
+               sub(/^Application\/Multimedia$/, "Applications/Multimedia", Grupa)
                sub(/^System\/Servers$/, "Daemons", Grupa)
                sub(/^X11\/Xserver$/, "X11/Servers", Grupa)
-               sub(/^X11\/XFree86$/, "X11", Grupa)
+               sub(/^X11\/XFree86/, "X11", Grupa)
                sub(/^Applications\/Compilers$/, "Development/Languages", Grupa)
                sub(/^Applications\/Internet\/Peer to Peer/, "Applications/Networking", Grupa)
                sub(/^Networking\/Deamons$/, "Networking/Daemons", Grupa)
@@ -889,6 +911,8 @@ function use_macros()
                gsub(sysconfdir, "%{_sysconfdir}", $c)
        }
 
+       gsub(docdir, "%{_docdir}")
+
        for (c = 1; c <= NF; c++) {
                if ($c ~ datadir "/automake")
                        continue;
@@ -899,10 +923,6 @@ function use_macros()
                gsub(datadir, "%{_datadir}", $c)
        }
 
-       gsub("%_sbindir", "%{_sbindir}")
-       gsub("%_mandir", "%{_mandir}")
-       gsub("%name", "%{name}")
-
        gsub("%{prefix}/share", "%{_datadir}")
        if (prefix"/share" == datadir)
                gsub("%{_prefix}/share", "%{_datadir}")
@@ -957,8 +977,11 @@ function use_macros()
                                if ($c ~ prefix "/lib/pkgconfig")
                                        continue;
 
-                               # CFLAGS="-I/usr/include/ncurses is usually correct.
-                               if (/-I\/usr\/include/)
+                               # CFLAGS="-I/usr..." is usually correct.
+                               if (/-I\/usr/)
+                                       continue;
+                               # same for LDFLAGS="-L/usr..."
+                               if (/-L\/usr/)
                                        continue;
 
                                gsub(prefix, "%{_prefix}", $c)
@@ -967,6 +990,10 @@ function use_macros()
                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}")
 
@@ -995,6 +1022,9 @@ function use_macros()
        gsub("%_bindir", "%{_bindir}")
        gsub("%_datadir", "%{_datadir}")
        gsub("%_iconsdir", "%{_iconsdir}")
+       gsub("%_sbindir", "%{_sbindir}")
+       gsub("%_mandir", "%{_mandir}")
+       gsub("%name", "%{name}")
 
        gsub("/usr/src/linux", "%{_kernelsrcdir}")
        gsub("%{_prefix}/src/linux", "%{_kernelsrcdir}")
This page took 0.051948 seconds and 4 git commands to generate.