X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=adapter.awk;h=b52d41140b910212040b572c80a249f4291264ab;hb=ca5cfdeafbd72041e7f1b824b692024d0523e5c9;hp=4c97a90d2c08a72f6b03f9c580f70b42bbd37b81;hpb=dfc32054d93167de88315e9e5a892a945c702172;p=packages%2Frpm-build-tools.git diff --git a/adapter.awk b/adapter.awk index 4c97a90..b52d411 100644 --- a/adapter.awk +++ b/adapter.awk @@ -1,9 +1,8 @@ #!/usr/bin/gawk -f # -# This is adapter v0.28. Adapter adapts .spec files for PLD Linux. -# $Id$ +# Adapter adapts .spec files for PLD Linux. # -# Copyright (C) 1999-2007 PLD-Team +# Copyright (C) 1999-2008 PLD-Team # Authors: # Michał Kuratczyk # Sebastian Zagrodzki @@ -18,18 +17,27 @@ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # TODO +# - really long sourceX make preamble sorting totally fcked up (try snake.spec r1.1) # - 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- +# - it should change: /%source([0-9]+)/i to %{SOURCE\1} +# - extra quote on LDFLAGS line: https://bugs.launchpad.net/pld-linux/+bug/385836 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)" + RCSID = "$Id$" + rev = RCSID # TODO: parse from RCSID + VERSION = "0.35/" rev + + PREAMBLE_TAGS = "(R|BR|Summary|Name|Version|Release|Epoch|License|Group|URL|BuildArch|BuildRoot|Obsoletes|Conflicts|Provides|ExclusiveArch|ExcludeArch|Pre[Rr]eq|(Build)?Requires|Suggests|Auto(Req|Prov))" + + usedigest = 0 # Enable to switch to rpm 4.4.6+ md5 digests preamble = 1 # Is it part of preamble? Default - yes boc = 4 # Beginning of %changelog @@ -44,58 +52,19 @@ BEGIN { 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 }'" | 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") + import_rpm_macros() + + packages_dir = topdir "/packages" + groups_file = packages_dir "/rpm.groups" + + system("cd "packages_dir"; [ -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 %_kdedocdir" | getline kdedocdir - "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. @@ -131,6 +100,7 @@ function b_makekey(a, b, s) { # force order gsub(/^Summary\(/, "11Summary(", s); gsub(/^Summary/, "10Summary", s); + gsub(/^Name/, "2Name", s); gsub(/^Version/, "3Version", s); gsub(/^Release/, "4Release", s); @@ -141,14 +111,19 @@ function b_makekey(a, b, 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(/^Suggests/, "X1Suggests", s); + gsub(/^Provides/, "X2Provides", s); + gsub(/^Obsoletes/, "X3Obsoletes", s); + gsub(/^Conflicts/, "X4Conflicts", s); + gsub(/^BuildArch/, "X5BuildArch", s); gsub(/^ExclusiveArch/, "X6ExclusiveArch", s); gsub(/^ExcludeArch/, "X7ExcludeArch", s); gsub(/^BuildRoot/, "X9BuildRoot", s); + gsub(/^AutoProv/, "Xx1AutoProv", s); + gsub(/^AutoReq/, "Xx2AutoReq", s); + # printf("%s -> %s\n", a""b, s); return s; } @@ -166,7 +141,11 @@ function b_makekey(a, b, s) { # Generally, comments are printed without touching sub(/[ \t]+$/, "") - if (/Source.*md5/) { + if (/#[ \t]*Source.*md5/) { + if (usedigest == 1) { + sub(/^#[ \t]*Source/, "BuildRequires:\tdigest(%SOURCE", $0) + sub(/-md5[ \t]*:[ \t]*/, ") = ", $0) + } print $0 next } @@ -242,6 +221,8 @@ function b_makekey(a, b, s) { _pre = $3 if ($2 ~ /^_snap$/) _snap = $3 + if ($2 ~ /^subver$/) + subver = $3 # these are used usually when adapterizing external spec if ($2 ~ /^name$/) @@ -343,6 +324,9 @@ function b_makekey(a, b, s) { if (_snap) { $0 = fixedsub(_snap, "%{_snap}", $0); } + if (subver) { + $0 = fixedsub(subver, "%{subver}", $0); + } } if (/^%setup/ && /-n %{name}-%{version}( |$)/) { @@ -513,7 +497,9 @@ function b_makekey(a, b, s) { if ($0 ~ /^%files/) defattr = 1 - use_files_macros() + if (!use_files_macros()) { + next + } } ############## @@ -661,46 +647,7 @@ preamble == 1 { 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) - sub(/^System$/, "Base", group) - sub(/^Applications\/Productivity$/, "X11/Applications", group) - sub(/^Database$/, "Applications/Databases", group) - sub(/^Development\/Code Generators$/, "Development", group) - sub(/^Emulators$/, "Applications/Emulators", group) - sub(/^System\/Libraries$/, "Libraries", group) - + group = replace_groupnames(group); $0 = "Group:\t\t" group if (group ~ /^X11/ && x11 == 0) # Is it X11 application? @@ -758,24 +705,11 @@ preamble == 1 { next } - # perhaps we have common known name? - - # jpackages - sub(/^java-devel$/, "jdk", $2); - sub(/^log4j$/, "jakarta-log4j", $2); - sub(/^oro$/, "jakarta-oro", $2); - sub(/^jakarta-ant$/, "ant", $2); - sub(/^xerces-j2$/, "xerces-j", $2); - sub(/^ldapjdk$/, "ldapsdk", $2); - sub(/^saxon-scripts$/, "saxon", $2); - sub(/^xalan-j2$/, "xalan-j", $2); - sub(/^xerces-j2$/, "xerces-j", $2); - - replace_php_virtual_deps(); + replace_requires(); } if (field ~ /^requires:/) { - replace_php_virtual_deps(); + replace_requires(); } @@ -799,6 +733,27 @@ preamble == 1 { if (l == "Python Software Foundation License") { l = "PSF" } + if (l == "Apache License 2.0" || l == "Apache 2.0" || l == "Apache License Version 2.0" || l == "Apache License, Version 2.0" || l == "Apache Software License v2") { + l = "Apache v2.0" + } + if (l == "Apache Group License" || l == "Apache Software License" || l == "Apache License") { + l = "Apache" + } + if (l == "Apache-style License" || l == "Apache-style Software License") { + l = "Apache-like" + } + if (l == "Apache Software License 1.1" || l == "Apache 1.1") { + l = "Apache v1.1" + } + if (l == "GPLv2") { + l = "GPL v2" + } + if (l == "GPLv2+") { + l = "GPL v2+" + } + if (l == "LGPLv2+") { + l = "LGPL v2+" + } $0 = "License:\t" l; } @@ -906,27 +861,14 @@ preamble == 1 { if (_snap) { url[n] = fixedsub(_snap, "%{_snap}", url[n]) } + if (subver) { + url[n] = fixedsub(subver, "%{subver}", 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) - - sub("^ftp://ftp\.gnome\.org/", "http://ftp.gnome.org/", $2) - sub("^http://ftp\.gnome\.org/pub/gnome/", "http://ftp.gnome.org/pub/GNOME/", $2) + $2 = unify_url($2) } @@ -962,6 +904,12 @@ ENVIRON["SKIP_SORTBR"] != 1 && preamble == 1 && $0 ~ PREAMBLE_TAGS, $0 ~ PREAMBL if ($1 ~ /Pre[Rr]eq:/) { sub(/Pre[Rr]eq:/, "Requires:", $1); } + if ($1 == "BR:" ) { + $1 = "BuildRequires:" + } + if ($1 == "R:" ) { + $1 = "Requires:" + } format_preamble() # kill_preamble_macros(); # breaks tabbing @@ -1062,13 +1010,22 @@ END { } } -function fixedsub(s1,s2,t, ind) { # substitutes fixed strings (not regexps) +function fixedsub(s1,s2,t, ind) { if (ind = index(t,s1)) t = substr(t, 1, ind-1) s2 substr(t, ind+length(s1)) return t } +# replace s with s2 if it equals to s1 +function replace(s, s1, s2) { + if (s == s1) { + return s2; + } else { + return s; + } +} + # There should be one or two tabs after the colon. function format_preamble() { @@ -1122,11 +1079,14 @@ function use_macros() gsub(ruby_rubylibdir, "%{ruby_rubylibdir}") gsub(ruby_sitearchdir, "%{ruby_sitearchdir}") gsub(ruby_sitelibdir, "%{ruby_sitelibdir}") + gsub(ruby_rdocdir, "%{ruby_rdocdir}") gsub("%{_datadir}/applications", "%{_desktopdir}") gsub("%{_datadir}/pixmaps", "%{_pixmapsdir}") + gsub("%{_datadir}/java", "%{_javadir}") gsub(libdir, "%{_libdir}") + gsub(javadir, "%{_javadir}") gsub(bindir, "%{_bindir}") gsub("%{prefix}/bin", "%{_bindir}") @@ -1165,7 +1125,9 @@ function use_macros() continue; if ($c ~ sysconfdir "/{?modprobe.(d|conf)") continue; - if ($c ~ sysconfdir "/{?udev/rules.d") + if ($c ~ sysconfdir "/{?udev") + continue; + if ($c ~ sysconfdir "/{?hotplug") continue; if ($c ~ sysconfdir "/{?logrotate.d") continue; @@ -1199,12 +1161,22 @@ function use_macros() continue; if ($c ~ sysconfdir "/ppp") continue; + if ($c ~ sysconfdir "/dbus-1") + continue; + if ($c ~ sysconfdir "/tmpwatch") + continue; gsub(sysconfdir, "%{_sysconfdir}", $c) } - gsub(kdedocdir, "%{_kdedocdir}") gsub(docdir, "%{_docdir}") + + gsub(kdedocdir, "%{_kdedocdir}") + + gsub(gtkdocdir, "%{_gtkdocdir}") + gsub("%{_docdir}/gtk-doc/html", "%{_gtkdocdir}") + gsub(php_pear_dir, "%{php_pear_dir}") + gsub(php_data_dir, "%{php_data_dir}") for (c = 1; c <= NF; c++) { if ($c ~ datadir "/automake") @@ -1295,6 +1267,7 @@ function use_macros() gsub("^make$", "%{__make}") gsub("^make ", "%{__make} ") gsub("^gcc ", "%{__cc} ") + gsub("^rm --interactive=never ", "%{__rm} ") # mandrake specs gsub("^%make$", "%{__make}") @@ -1304,7 +1277,6 @@ function use_macros() 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}") @@ -1313,6 +1285,7 @@ function use_macros() $0 = fixedsub("%buildroot", "$RPM_BUILD_ROOT", $0) $0 = fixedsub("%{buildroot}", "$RPM_BUILD_ROOT", $0) $0 = fixedsub("CXXFLAGS=%{rpmcflags} %configure", "CXXFLAGS=%{rpmcflags}\n%configure", $0); + $0 = fixedsub("%__install", "install", $0); # split configure line to multiple lines if (/%configure / && !/\\$/) { @@ -1336,12 +1309,15 @@ function use_macros() gsub("/usr/src/linux", "%{_kernelsrcdir}") gsub("%{_prefix}/src/linux", "%{_kernelsrcdir}") - if (/^ant /) { + if (/^ant / || /^%{ant}/) { sub(/^ant/, "%ant") + sub(/^%{ant}/, "%ant") add_br("BuildRequires: jpackage-utils"); add_br("BuildRequires: rpmbuild(macros) >= 1.300"); } + $0 = fixedsub("%(%{__cc} -dumpversion)", "%{cc_version}", $0); + $0 = fixedsub("%(%{__cxx} -dumpversion)", "%{cxx_version}", $0); } function format_configure(line, n, a, s) { @@ -1368,13 +1344,13 @@ function isort(A,n, i,j,hold) { } -function use_files_macros( i, n, t, a) +function use_files_macros( i, n, t, a, l) { use_macros() # skip comments if (/^#/) { - return; + return 1; } sub("^%doc %{_mandir}", "%{_mandir}") @@ -1404,6 +1380,9 @@ function use_files_macros( i, n, t, a) gsub("%{_sysconfdir}/sysconfig", "/etc/sysconfig") gsub("%{_sysconfdir}/certs", "/etc/certs") gsub("%{_sysconfdir}/init.d", "/etc/init.d") + gsub("%{_sysconfdir}/dbus-1", "/etc/dbus-1") + gsub("%{_sysconfdir}/pki", "/etc/pki") + gsub("%{_sysconfdir}/tmpwatch", "/etc/tmpwatch") # /etc/init.d -> /etc/rc.d/init.d if (!/^\/etc\/init\.d$/) { @@ -1427,6 +1406,11 @@ function use_files_macros( i, n, t, a) $0 = "%attr(755,root,root) " $0 } + # remove attrs from man pages + if (/%{_mandir}/ && /^%attr/) { + sub("^%attr\\(.*\\) *", ""); + } + # /etc/sysconfig files # %attr(640,root,root) %config(noreplace) %verify(not size mtime md5) /etc/sysconfig/* # attr not required, allow default 644 attr @@ -1491,6 +1475,32 @@ function use_files_macros( i, n, t, a) $(NF + 1) = "# FIXME consider using %find_lang" } + # python egg-infos + if (match($0, "^%{py_site(script)?dir}/.+-py"py_ver".egg-info$")) { + # tests: + #%{py_sitedir}/*-py2.4.egg-info + #%{py_sitescriptdir}/GnuPGInterface-%{version}-py2.4.egg-info + #%{py_sitescriptdir}/python_mpd-%{version}-py2.4.egg-info + #%{py_sitescriptdir}/mechanize-0.1.6b-py2.4.egg-info + + l = index($0, "/"); + t = substr($0, 0, l); + s = substr($0, l + 1, RLENGTH - l - length("-py"py_ver".egg-info")); + if (match(s, "[^-]+$")) { +#printf("s[%s]; start[%d]; length[%d]\n", s, RSTART, RLENGTH); + if (RSTART > 1) { + s = substr(s, 0, RSTART - 1); + } +#printf("s2[%s]\n", s); + print "%if \"%{py_ver}\" > \"2.4\"" +#print t "/.+.egg-info" + gsub(t "/.+.egg-info", t "/" s "-*.egg-info"); + print + print "%endif" + return 0; + } + } + # atrpms $0 = fixedsub("%{perl_man1dir}", "%{_mandir}/man1", $0); $0 = fixedsub("%{perl_man3dir}", "%{_mandir}/man3", $0); @@ -1503,6 +1513,10 @@ function use_files_macros( i, n, t, a) gsub("%{_datadir}/applications", "%{_desktopdir}"); gsub("%{_datadir}/icons", "%{_iconsdir}"); gsub("%{_datadir}/pixmaps", "%{_pixmapsdir}"); + gsub("%{_datadir}/pear", "%{php_pear_dir}"); + gsub("%{_datadir}/php", "%{php_data_dir}"); + + return 1 } function use_script_macros() @@ -1562,6 +1576,44 @@ function cflags(var) return 1 } +function unify_url(url) +{ + + # sourceforge urls + # Docs about sourceforge mirror system: http://sourceforge.net/apps/trac/sourceforge/wiki/Mirrors + sub("^http://prdownloads\.sourceforge\.net/", "http://downloads.sourceforge.net/", url) + sub("^http://download\.sf\.net/", "http://downloads.sourceforge.net/", url) + sub("^http://download\.sourceforge\.net/", "http://downloads.sourceforge.net/", url) + sub("^http://dl\.sourceforge\.net/", "http://downloads.sourceforge.net/", url) + sub("^http://.*\.dl\.sourceforge\.net/", "http://downloads.sourceforge.net/", url) + sub("^http://dl\.sf\.net/", "http://downloads.sourceforge.net/", url) + sub("^http://downloads\.sourceforge\.net/sourceforge/", "http://downloads.sourceforge.net/", url) + # new style urls, strip "files/" between and prepend dl. + if (match(url, "^http://sourceforge.net/projects/[^/]+/files/")) { + url = substr(url, 1, RLENGTH - length("files/")) substr(url, RSTART + RLENGTH); + sub("^http://sourceforge.net/projects/", "http://downloads.sourceforge.net/project/", url); + } + if (url ~ /sourceforge.net/) { + sub("[?&]big_mirror=.*$", "", url); + sub("[?&]modtime=.*$", "", url); + sub("[?]use_mirror=.*$", "", url); + sub("[?]download$", "", url); + sub("/download$", "", url); + } + + sub("^ftp://ftp\.gnome\.org/", "http://ftp.gnome.org/", url) + sub("^http://ftp\.gnome\.org/pub/gnome/", "http://ftp.gnome.org/pub/GNOME/", url) + + # apache urls + sub("^http://apache.zone-h.org/", "http://www.apache.org/dist/", url) + + # gnu.org + sub("^ftp://ftp.gnu.org/", "http://ftp.gnu.org/", url) + sub("^http://ftp.gnu.org/pub/gnu/", "http://ftp.gnu.org/gnu/", url) + + return url +} + function demacroize(str) { if (mod_name) { @@ -1585,16 +1637,22 @@ function demacroize(str) if (_snap) { sub("%{_snap}", _snap, str); } + if (subver) { + sub("%{subver}", subver, str); + } return str; } function kill_preamble_macros() { - if ($1 ~ /^URL:/ || $1 ~ /^Obsoletes:/) { + if ($1 ~ /^Obsoletes:/) { + # NB! assigning $2 a value breaks tabbing + $2 = demacroize($2); + } + if ($1 ~ /^URL:/) { # NB! assigning $2 a value breaks tabbing $2 = demacroize($2); - # unify sourceforge url - sub("\.sf\.net/$", ".sourceforge.net/", $2); + $2 = unify_url($2) } } @@ -1649,6 +1707,51 @@ function add_br(br) BR[BR_count++] = br } +function replace_requires() +{ + + # jpackages + sub(/^java-devel$/, "jdk", $2); + sub(/^log4j$/, "java-log4j", $2); + sub(/^logging-log4j$/, "java-log4j", $2); + sub(/^jakarta-log4j$/, "java-log4j", $2); + sub(/^oro$/, "java-oro", $2); + sub(/^jakarta-oro$/, "java-oro", $2); + sub(/^jakarta-ant$/, "ant", $2); + sub(/^xerces-j2$/, "java-xerces", $2); + sub(/^xerces-j$/, "java-xerces", $2); + sub(/^ldapjdk$/, "ldapsdk", $2); + sub(/^saxon-scripts$/, "saxon", $2); + sub(/^xalan-j2$/, "java-xalan", $2); + sub(/^xalan-j$/, "java-xalan", $2); + sub(/^gnu-regexp$/, "java-gnu-regexp", $2); + sub(/^gnu.regexp$/, "java-gnu-regexp", $2); + sub(/^jakarta-commons-httpclient$/, "java-commons-httpclient", $2); + sub(/^xml-commons-resolver$/, "java-xml-commons-resolver", $2); + sub(/^axis$/, "java-axis", $2); + sub(/^wsdl4j$/, "java-wsdl4j", $2); + sub(/^uddi4j$/, "java-uddi4j", $2); + sub(/^hamcrest$/, "java-hamcrest", $2); + + # redhat virtual + sub(/^tftp-server$/, "tftpdaemon", $2); + + sub(/^gcc-c\+\+$/, "libstdc++-devel", $2); + sub(/^chkconfig$/, "/sbin/chkconfig", $2); + + # fedora + sub(/^iscsi-initiator-utils$/, "open-iscsi", $2); + sub(/^gnome-python2-extras$/, "python-gnome-extras", $2); + sub(/^gtk2$/, "gtk+2", $2); + sub(/^gtk2-devel$/, "gtk+2-devel", $2); + sub(/^pygtk2-devel$/, "python-pygtk-devel", $2); + sub(/^pygtk2$/, "python-pygtk", $2); + sub(/^qt4-devel$/, "qt4-build", $2); + sub(/^file-devel$/, "libmagic-devel", $2); + + replace_php_virtual_deps() +} + # php virtual deps as discussed in devel-en function replace_php_virtual_deps() { @@ -1679,4 +1782,119 @@ function replace_php_virtual_deps() } } +# Load rpm macros +# you should update the list also in adapter when making changes here +function import_rpm_macros() { + # File with rpm groups + topdir = ENVIRON["_topdir"] + + if (!topdir) { + print "adapter.awk should not not be invoked directly, but via adapter script" > "/dev/stderr" + do_not_touch_anything = 1 + exit(1); + } + + # get cvsaddress for changelog section + # using rpm macros as too lazy to add ~/.adapterrc parsing support. + _cvsmaildomain = ENVIRON["_cvsmaildomain"] + _cvsmailfeedback = ENVIRON["_cvsmailfeedback"] + + prefix = ENVIRON["_prefix"] + bindir = ENVIRON["_bindir"] + sbindir = ENVIRON["_sbindir"] + libdir = ENVIRON["_libdir"] + sysconfdir = ENVIRON["_sysconfdir"] + datadir = ENVIRON["_datadir"] + includedir = ENVIRON["_includedir"] + mandir = ENVIRON["_mandir"] + infodir = ENVIRON["_infodir"] + examplesdir = ENVIRON["_examplesdir"] + docdir = ENVIRON["_defaultdocdir"] + kdedocdir = ENVIRON["_kdedocdir"] + gtkdocdir = ENVIRON["_gtkdocdir"] + desktopdir = ENVIRON["_desktopdir"] + pixmapsdir = ENVIRON["_pixmapsdir"] + javadir = ENVIRON["_javadir"] + + perl_sitearch = ENVIRON["perl_sitearch"] + perl_archlib = ENVIRON["perl_archlib"] + perl_privlib = ENVIRON["perl_privlib"] + perl_vendorlib = ENVIRON["perl_vendorlib"] + perl_vendorarch = ENVIRON["perl_vendorarch"] + perl_sitelib = ENVIRON["perl_sitelib"] + + py_sitescriptdir = ENVIRON["py_sitescriptdir"] + py_sitedir = ENVIRON["py_sitedir"] + py_scriptdir = ENVIRON["py_scriptdir"] + py_ver = ENVIRON["py_ver"] + + ruby_archdir = ENVIRON["ruby_archdir"] + ruby_ridir = ENVIRON["ruby_ridir"] + ruby_rubylibdir = ENVIRON["ruby_rubylibdir"] + ruby_sitearchdir = ENVIRON["ruby_sitearchdir"] + ruby_sitelibdir = ENVIRON["ruby_sitelibdir"] + ruby_rdocdir = ENVIRON["ruby_rdocdir"] + + php_pear_dir = ENVIRON["php_pear_dir"] + php_data_dir = ENVIRON["php_data_dir"] + tmpdir = ENVIRON["tmpdir"] +} + +function replace_groupnames(group) { + group = replace(group, "Amusements/Games/Strategy/Real Time", "X11/Applications/Games/Strategy"); + group = replace(group, "Application/Multimedia", "Applications/Multimedia"); + group = replace(group, "Application/System", "Applications/System"); + group = replace(group, "Applications/Compilers", "Development/Languages"); + group = replace(group, "Applications/Daemons", "Daemons"); + group = replace(group, "Applications/Internet", "Applications/Networking"); + group = replace(group, "Applications/Internet/Peer to Peer", "Applications/Networking"); + group = replace(group, "Applications/Productivity", "X11/Applications"); + group = replace(group, "Database", "Applications/Databases"); + group = replace(group, "Development/C", "Development/Libraries"); + group = replace(group, "Development/Code Generators", "Development"); + group = replace(group, "Development/Docs", "Documentation"); + group = replace(group, "Development/Documentation", "Documentation"); + group = replace(group, "Development/Java", "Development/Languages/Java"); + group = replace(group, "Development/Languages/Other", "Development/Languages");; + group = replace(group, "Development/Languages/Ruby", "Development/Languages"); + group = replace(group, "Development/Libraries/C and C++", "Development/Libraries"); + group = replace(group, "Development/Libraries/Java", "Development/Languages/Java"); + group = replace(group, "Development/Libraries/Python", "Development/Languages/Python"); + group = replace(group, "Development/Libraries/TCL", "Development/Languages/Tcl");; + group = replace(group, "Development/Other", "Development"); + group = replace(group, "Development/Python", "Development/Languages/Python"); + group = replace(group, "Development/Testing", "Development"); + group = replace(group, "Emulators", "Applications/Emulators"); + group = replace(group, "Games", "Applications/Games"); + group = replace(group, "Library/Development", "Development/Libraries"); + group = replace(group, "Networking/Deamons", "Networking/Daemons"); + group = replace(group, "Productivity/Databases/Servers", "Applications/Databases"); + group = replace(group, "Productivity/Networking/Web/Servers", "Networking/Daemons/HTTP");; + group = replace(group, "Shells", "Applications/Shells"); + group = replace(group, "System Environment/Base", "Base"); + group = replace(group, "System Environment/Daemons", "Daemons"); + group = replace(group, "System Environment/Kernel", "Base/Kernel"); + group = replace(group, "System Environment/Libraries", "Libraries"); + group = replace(group, "System", "Base"); + group = replace(group, "System/Base", "Base"); + group = replace(group, "System/Kernel and hardware", "Base/Kernel"); + group = replace(group, "System/Libraries", "Libraries"); + group = replace(group, "System/Servers", "Daemons"); + group = replace(group, "Text Processing/Markup/HTML", "Applications/Text"); + group = replace(group, "Text Processing/Markup/XML", "Applications/Text"); + group = replace(group, "Web/Database", "Applications/WWW"); + group = replace(group, "X11/GNOME", "X11/Applications"); + group = replace(group, "X11/GNOME/Applications", "X11/Applications"); + group = replace(group, "X11/GNOME/Development/Libraries", "X11/Development/Libraries"); + group = replace(group, "X11/Games", "X11/Applications/Games"); + group = replace(group, "X11/Games/Strategy", "X11/Applications/Games/Strategy"); + group = replace(group, "X11/Library", "X11/Libraries"); + group = replace(group, "X11/Utilities", "X11/Applications"); + group = replace(group, "X11/XFree86", "X11"); + group = replace(group, "X11/Xserver", "X11/Servers"); + group = replace(group, "User Interface/Desktops", "X11/Applications"); + + return group; +} + # vim:ts=4:sw=4