This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "IPFire 3.x development tree".
The branch, master has been updated via 5fcdfe3b42dc8302e619d3af37428164a2ac8059 (commit) via 6d3b56d06f042d8d685121fad11bbe6667a20d5f (commit) via 978f4d75694e1af373e29822101cb02bddc58cff (commit) via a4fbcaa9fbb93460f71543be33bfcf3b537c25a2 (commit) via a2854ff6485872e794f9fe7aac567a8ec7f4f9f4 (commit) via b8d5575f1993db19852af06d44087911cfa7a3ea (commit) via c698e4be7e9c1824af15c94955f78c39bf7caaf8 (commit) via e7f6ab54f5ed2b9e58b95557cbcc2acfd2146d1a (commit) via 47bdaf55edae167b8784c3f66ffc07c46b4efd9f (commit) via 9788e5aff8eb8dd201f9e963d5ae48199148799b (commit) via 49026b7ddbe382afa92fed9f82611614e0569aaf (commit) via ac29baf9e771f45a5c69e7a113cce4d6ef06d349 (commit) from 15a11c5bc9c5871ee0e9fa5aa01f989947c9cf53 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit 5fcdfe3b42dc8302e619d3af37428164a2ac8059 Merge: 6d3b56d ac29baf Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Oct 2 21:42:27 2011 +0200
Merge remote-tracking branch 'stevee/bind'
commit 6d3b56d06f042d8d685121fad11bbe6667a20d5f Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Oct 2 21:41:42 2011 +0200
pcre: Update to 8.13.
Fixes #241.
commit 978f4d75694e1af373e29822101cb02bddc58cff Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Oct 2 21:32:10 2011 +0200
quagga: Update to 0.99.20.
Fixes #255.
commit a4fbcaa9fbb93460f71543be33bfcf3b537c25a2 Merge: a2854ff e7f6ab5 Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Oct 2 21:31:20 2011 +0200
Merge remote-tracking branch 'stevee/coreutils'
commit a2854ff6485872e794f9fe7aac567a8ec7f4f9f4 Merge: b8d5575 9788e5a Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Oct 2 21:21:57 2011 +0200
Merge remote-tracking branch 'stevee/libcap-ng'
commit b8d5575f1993db19852af06d44087911cfa7a3ea Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Oct 2 21:21:10 2011 +0200
xorg-x11-fonts: Fix typos in makefile.
commit c698e4be7e9c1824af15c94955f78c39bf7caaf8 Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Oct 2 21:20:39 2011 +0200
kernel: kernel-headers accidentially had a dep to kernel.
commit e7f6ab54f5ed2b9e58b95557cbcc2acfd2146d1a Author: Stefan Schantl stefan.schantl@ipfire.org Date: Sun Oct 2 21:10:28 2011 +0200
coreutils: Update to 8.13.
Fixes #251
commit 47bdaf55edae167b8784c3f66ffc07c46b4efd9f Author: Michael Tremer michael.tremer@ipfire.org Date: Sun Oct 2 21:06:28 2011 +0200
grub: Update to 1.99.
Fixes #232.
commit 9788e5aff8eb8dd201f9e963d5ae48199148799b Author: Stefan Schantl stefan.schantl@ipfire.org Date: Sun Oct 2 21:02:46 2011 +0200
libcap-ng: Update to 0.6.6.
commit 49026b7ddbe382afa92fed9f82611614e0569aaf Author: Stefan Schantl stefan.schantl@ipfire.org Date: Sun Oct 2 21:00:56 2011 +0200
libcap-ng: Move libraries to /lib.
commit ac29baf9e771f45a5c69e7a113cce4d6ef06d349 Author: Stefan Schantl stefan.schantl@ipfire.org Date: Sun Oct 2 12:35:58 2011 +0200
bind: Rework package.
* Update to 9.8.1. * Add patches. * Also build named and libs. * Run daemon in chroot env. * Create sub packages.
-----------------------------------------------------------------------
Summary of changes: bind/bind.nm | 185 +++++- bind/named.logrotate | 8 + bind/named.tmpfiles | 1 + bind/patches/bind-9.3.2-redhat_doc.patch | 66 ++ bind/patches/bind-9.5-PIE.patch | 27 + bind/patches/bind-9.5-dlz-64bit.patch | 70 ++ bind/patches/bind-9.5-libidn.patch | 270 ++++++++ bind/patches/bind-9.5-libidn2.patch | 221 ++++++ bind/patches/bind-9.5-libidn3.patch | 21 + bind/patches/bind-9.5-overflow.patch | 24 + bind/patches/bind-9.5-parallel-build.patch | 14 + bind/patches/bind-95-rh452060.patch | 40 ++ bind/patches/bind-96-dyndb.patch | 722 ++++++++++++++++++++ bind/patches/bind-96-libtool2.patch | 13 + bind/patches/bind-nonexec.patch | 72 ++ bind/patches/bind93-rh490837.patch0 | 95 +++ bind/patches/bind95-rh461409.patch | 19 + bind/patches/bind97-dist-pkcs11.patch | 22 + bind/patches/bind97-exportlib.patch | 255 +++++++ bind/patches/bind97-rh478718.patch | 30 + bind/patches/bind97-rh570851.patch | 153 +++++ bind/patches/bind97-rh645544.patch | 30 + bind/patches/bind97-rh693982.patch | 35 + bind/patches/bind97-rh699951.patch | 46 ++ bind/patches/bind97-rh700097.patch | 11 + bind/patches/bind97-rh714049.patch | 160 +++++ bind/patches/bind98-dlz_buildfix.patch | 25 + bind/patches/bind98-rh725741.patch | 24 + bind/patches/bind98-rh735103.patch | 40 ++ bind/trusted-key.key | 1 + coreutils/coreutils.nm | 14 +- coreutils/patches/coreutils-i18n.patch | 260 ++++---- coreutils/patches/coreutils-selinux.patch | 158 +++--- grub/grub.nm | 40 +- grub/patches/grub-1.97.1-initramfs.patch | 13 - .../grub-1.98-GRUB_DISTRIBUTOR-spaces-fix-1.patch0 | 39 -- grub/patches/grub-1.99-just-say-linux.patch | 46 ++ kernel/kernel.nm | 8 +- libcap-ng/libcap-ng.nm | 15 +- pcre/pcre.nm | 9 +- quagga/quagga.nm | 7 +- xorg-x11-fonts/xorg-x11-fonts.nm | 8 +- 42 files changed, 3013 insertions(+), 304 deletions(-) create mode 100644 bind/named.logrotate create mode 100644 bind/named.tmpfiles create mode 100644 bind/patches/bind-9.3.2-redhat_doc.patch create mode 100644 bind/patches/bind-9.5-PIE.patch create mode 100644 bind/patches/bind-9.5-dlz-64bit.patch create mode 100644 bind/patches/bind-9.5-libidn.patch create mode 100644 bind/patches/bind-9.5-libidn2.patch create mode 100644 bind/patches/bind-9.5-libidn3.patch create mode 100644 bind/patches/bind-9.5-overflow.patch create mode 100644 bind/patches/bind-9.5-parallel-build.patch create mode 100644 bind/patches/bind-95-rh452060.patch create mode 100644 bind/patches/bind-96-dyndb.patch create mode 100644 bind/patches/bind-96-libtool2.patch create mode 100644 bind/patches/bind-nonexec.patch create mode 100644 bind/patches/bind93-rh490837.patch0 create mode 100644 bind/patches/bind95-rh461409.patch create mode 100644 bind/patches/bind97-dist-pkcs11.patch create mode 100644 bind/patches/bind97-exportlib.patch create mode 100644 bind/patches/bind97-rh478718.patch create mode 100644 bind/patches/bind97-rh570851.patch create mode 100644 bind/patches/bind97-rh645544.patch create mode 100644 bind/patches/bind97-rh693982.patch create mode 100644 bind/patches/bind97-rh699951.patch create mode 100644 bind/patches/bind97-rh700097.patch create mode 100644 bind/patches/bind97-rh714049.patch create mode 100644 bind/patches/bind98-dlz_buildfix.patch create mode 100644 bind/patches/bind98-rh725741.patch create mode 100644 bind/patches/bind98-rh735103.patch create mode 100644 bind/trusted-key.key delete mode 100644 grub/patches/grub-1.97.1-initramfs.patch delete mode 100644 grub/patches/grub-1.98-GRUB_DISTRIBUTOR-spaces-fix-1.patch0 create mode 100644 grub/patches/grub-1.99-just-say-linux.patch
Difference in files: diff --git a/bind/bind.nm b/bind/bind.nm index 4daec6d..cb40481 100644 --- a/bind/bind.nm +++ b/bind/bind.nm @@ -4,7 +4,7 @@ ###############################################################################
name = bind -version = 9.7.2-P3 +version = 9.8.1 release = 1
groups = Networking/Tools @@ -19,32 +19,191 @@ end
source_dl = ftp://ftp.isc.org/isc/bind/%{version}/
+sources = \ + bind-9.8.1.tar.gz \ + bind-config-8.tar.bz2 + +# Apply patches in a special order. +patches = \ + bind-nonexec.patch \ + bind-9.5-PIE.patch \ + bind-9.3.2-redhat_doc.patch \ + bind-96-dyndb.patch \ + bind98-rh725741.patch \ + bind-9.5-overflow.patch \ + bind-9.5-dlz-64bit.patch \ + bind-9.5-libidn.patch \ + bind-9.5-libidn2.patch \ + bind-9.5-libidn3.patch \ + bind-9.5-parallel-build.patch \ + bind95-rh461409.patch\ + bind-96-libtool2.patch \ + bind-95-rh452060.patch \ + bind97-dist-pkcs11.patch \ + bind97-rh478718.patch \ + bind97-rh570851.patch \ + bind97-exportlib.patch \ + bind97-rh645544.patch \ + bind97-rh699951.patch \ + bind97-rh693982.patch \ + bind97-rh700097.patch \ + bind97-rh714049.patch \ + bind98-dlz_buildfix.patch \ + bind98-rh735103.patch + build requires + autoconf + automake + chrpath db4-devel + libtool + libcap-devel + libidn-devel + pkg-config openssl-devel end
- build - ./configure \ - --prefix=/usr \ - --mandir=/usr/share/man + configure_options += \ + --with-libtool \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --enable-threads \ + --enable-ipv6 \ + --with-pic \ + --disable-static \ + --disable-openssl-version-check \ + --enable-exportlib \ + --with-export-libdir=/lib/ \ + --with-export-includedir=/usr/include/ \ + --includedir=/usr/include/bind9/ \ + --with-pkcs11=/usr/lib/pkcs11/PKCS11_API.so \ + --with-gssapi=yes \ + --disable-isc-spnego + + prepare + cd %{DIR_SRC} && %{MACRO_EXTRACT} %{DIR_DL}/%{thisapp}.tar.gz + + # Create m4 directory. + cd %{DIR_APP} && mkdir -pv m4
- make -C lib/dns #%{PARALLELISMFLAGS} - make -C lib/isc #%{PARALLELISMFLAGS} - make -C lib/bind9 #%{PARALLELISMFLAGS} - make -C lib/isccfg #%{PARALLELISMFLAGS} - make -C lib/lwres #%{PARALLELISMFLAGS} - make -C bin/dig #%{PARALLELISMFLAGS} + # Apply all patches. + %{MACRO_PATCHES} + + # Branding. + sed -i -e 's/RELEASEVER=(.*)/RELEASEVER=\1-%{DISTRO_NAME}-%{version}-%{release}/' version + + # Regenerate build environment + libtoolize -c -f + aclocal -I m4 --force + autoconf -f end
install - make -C bin/dig install DESTDIR=%{BUILDROOT} + # Compress doc files. + gzip -9 doc/rfc/* + + # Create directory layout. + mkdir -pv %{BUILDROOT}/usr/lib/bind + mkdir -pv %{BUILDROOT}/var/named/{slaves,data,dynamic} + mkdir -pv %{BUILDROOT}/usr/share/man/{man1,man5,man8} + mkdir -pv %{BUILDROOT}/run/named + mkdir -pv %{BUILDROOT}/var/log + + # Create named chroot environment. + mkdir -pv %{BUILDROOT}/var/named/chroot/{dev,etc,var} + mkdir -pv %{BUILDROOT}/var/named/chroot/var/{log,named,run/named,tmp} + mkdir -pv %{BUILDROOT}/var/named/chroot/etc/{pki/dnssec-keys,named} + mkdir -pv %{BUILDROOT}/var/named/chroot/usr/lib/bind + mkdir -pv %{BUILDROOT}/var/named/chroot/dev/null + mkdir -pv %{BUILDROOT}/var/named/chroot/dev/random + mkdir -pv %{BUILDROOT}/var/named/chroot/dev/zero + mkdir -pv %{BUILDROOT}/var/named/chroot/etc/localtime + + touch %{BUILDROOT}/var/named/chroot/etc/named.conf + + # Run make install + make DESTDIR=%{BUILDROOT} install + + # Remove RPATH from libraries. + chrpath --delete %{BUILDROOT}/lib*/*export*.so.* + + # Remove unwanted files + rm -rvf %{BUILDROOT}/etc/bind.keys + + # Create ghost config files + touch %{BUILDROOT}/var/log/named.log + + # Configuration files + tar -C %{BUILDROOT} -xaf %{DIR_DL}/bind-config-8.tar.bz2 + touch %{BUILDROOT}/etc/rndc.key + touch %{BUILDROOT}/etc/rndc.conf + + mkdir %{BUILDROOT}/etc/named + install -m 644 bind.keys %{BUILDROOT}/etc/named.iscdlv.key + install -m 644 %{DIR_SOURCE}/trusted-key.key %{BUILDROOT}/etc/trusted-key.key + + # Recreate symlinks for export libraries + rm -rf %{BUILDROOT}/lib/lib*-export.so + + ln -svf ../../lib/libdns-export.so.81 %{BUILDROOT}/usr/lib/libdns-export.so + ln -svf ../../lib/libirs-export.so.80 %{BUILDROOT}/usr/lib/libirs-export.so + ln -svf ../../lib/libisccfg-export.so.82 %{BUILDROOT}/usr/lib/libisccfg-export.so + ln -svf ../../lib/libisc-export.so.83 %{BUILDROOT}/usr/lib/libisc-export.so end end
packages + package %{name} + requires + bind-utils + bind-chroot + end + + prerequires += shadow-utils + + script prein + # Create unprivileged user and group. + getent group named > /dev/null || groupadd -r named + getent passwd named > /dev/null || \ + useradd -r -g named -d /var/named -s /sbin/nologin \ + -c "User for bind DNS server" named + exit0 + end + + # XXX Add systemd scriptlet if a service file becomes available + end + package %{name}-utils - template MAIN + summary = Utilities for querying bind DNS name server. + description = %{summary} + + files + /usr/bin/dig + /usr/bin/host + /usr/bin/nslookup + /usr/bin/nsupdate + /usr/share/man/man1/dig.1* + /usr/share/man/man1/host.1* + /usr/share/man/man1/nslookup.1* + /usr/share/man/man1/nsupdate.1* + end + end + + package %{name}-chroot + summary = Chroot environment for bind DNS servers. + description = %{summary} + + files + /var/named/chroot + end + end + + package %{name}-libs + template LIBS + end + + package %{name}-devel + template DEVEL end end diff --git a/bind/named.logrotate b/bind/named.logrotate new file mode 100644 index 0000000..4ed78cc --- /dev/null +++ b/bind/named.logrotate @@ -0,0 +1,8 @@ +/var/named/data/named.run { + missingok + su named named + create 0644 named named + postrotate + /sbin/service named reload 2> /dev/null > /dev/null || true + endscript +} diff --git a/bind/named.tmpfiles b/bind/named.tmpfiles new file mode 100644 index 0000000..8a7fa49 --- /dev/null +++ b/bind/named.tmpfiles @@ -0,0 +1 @@ +d /var/run/named 0755 named named - diff --git a/bind/patches/bind-9.3.2-redhat_doc.patch b/bind/patches/bind-9.3.2-redhat_doc.patch new file mode 100644 index 0000000..791b95f --- /dev/null +++ b/bind/patches/bind-9.3.2-redhat_doc.patch @@ -0,0 +1,66 @@ +--- bind-9.4.0/bin/named/named.8.redhat_doc 2007-01-30 01:23:44.000000000 +0100 ++++ bind-9.4.0/bin/named/named.8 2007-03-12 15:39:19.000000000 +0100 +@@ -205,6 +205,63 @@ + \fI/var/run/named/named.pid\fR + .RS 4 + The default process-id file. ++.PP ++.SH "NOTES" ++.PP ++.TP ++\fBRed Hat SELinux BIND Security Profile:\fR ++.PP ++By default, Red Hat ships BIND with the most secure SELinux policy ++that will not prevent normal BIND operation and will prevent exploitation ++of all known BIND security vulnerabilities . See the selinux(8) man page ++for information about SElinux. ++.PP ++It is not necessary to run named in a chroot environment if the Red Hat ++SELinux policy for named is enabled. When enabled, this policy is far ++more secure than a chroot environment. Users are recommended to enable ++SELinux and remove the bind-chroot package. ++.PP ++With this extra security comes some restrictions: ++.PP ++By default, the SELinux policy does not allow named to write any master ++zone database files. Only the root user may create files in the $ROOTDIR/var/named ++zone database file directory (the options { "directory" } option), where ++$ROOTDIR is set in /etc/sysconfig/named. ++.PP ++The "named" group must be granted read privelege to ++these files in order for named to be enabled to read them. ++.PP ++Any file created in the zone database file directory is automatically assigned ++the SELinux file context named_zone_t . ++.PP ++By default, SELinux prevents any role from modifying named_zone_t files; this ++means that files in the zone database directory cannot be modified by dynamic ++DNS (DDNS) updates or zone transfers. ++.PP ++The Red Hat BIND distribution and SELinux policy creates three directories where ++named is allowed to create and modify files: /var/named/slaves, /var/named/dynamic ++/var/named/data. By placing files you want named to modify, such as ++slave or DDNS updateable zone files and database / statistics dump files in ++these directories, named will work normally and no further operator action is ++required. Files in these directories are automatically assigned the 'named_cache_t' ++file context, which SELinux allows named to write. ++.PP ++\fBRed Hat BIND SDB support:\fR ++.PP ++Red Hat ships named with compiled in Simplified Database Backend modules that ISC ++provides in the "contrib/sdb" directory. Install bind-sdb package if you want use them ++.PP ++The SDB modules for LDAP, PostGreSQL, DirDB and SQLite are compiled into named-sdb. ++.PP ++See the documentation for the various SDB modules in /usr/share/doc/bind-sdb-*/ . ++.br ++.PP ++\fBRed Hat system-config-bind:\fR ++.PP ++Red Hat provides the system-config-bind GUI to configure named.conf and zone ++database files. Run the "system-config-bind" command and access the manual ++by selecting the Help menu. ++.PP + .RE + .SH "SEE ALSO" + .PP diff --git a/bind/patches/bind-9.5-PIE.patch b/bind/patches/bind-9.5-PIE.patch new file mode 100644 index 0000000..a525b9b --- /dev/null +++ b/bind/patches/bind-9.5-PIE.patch @@ -0,0 +1,27 @@ +--- bind-9.5.0b2/bin/named/Makefile.in.pie 2008-02-11 17:21:47.000000000 +0100 ++++ bind-9.5.0b2/bin/named/Makefile.in 2008-02-11 17:22:10.000000000 +0100 +@@ -100,8 +100,12 @@ HTMLPAGES = named.html lwresd.html named + + MANOBJS = ${MANPAGES} ${HTMLPAGES} + ++EXT_CFLAGS = -fpie ++ + @BIND9_MAKE_RULES@ + ++LDFLAGS += -pie -Wl,-z,relro,-z,now,-z,nodlopen,-z,noexecstack ++ + main.@O@: main.c + ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \ + -DVERSION="${VERSION}" \ +diff -up bind-9.5.0b2/bin/named/unix/Makefile.in.pie bind-9.5.0b2/bin/named/unix/Makefile.in +--- bind-9.5.0b2/bin/named/unix/Makefile.in.pie 2008-02-11 17:22:21.000000000 +0100 ++++ bind-9.5.0b2/bin/named/unix/Makefile.in 2008-02-11 17:23:00.000000000 +0100 +@@ -19,6 +19,8 @@ srcdir = @srcdir@ + VPATH = @srcdir@ + top_srcdir = @top_srcdir@ + ++EXT_CFLAGS = -fpie ++ + @BIND9_MAKE_INCLUDES@ + + CINCLUDES = -I${srcdir}/include -I${srcdir}/../include \ diff --git a/bind/patches/bind-9.5-dlz-64bit.patch b/bind/patches/bind-9.5-dlz-64bit.patch new file mode 100644 index 0000000..3e06577 --- /dev/null +++ b/bind/patches/bind-9.5-dlz-64bit.patch @@ -0,0 +1,70 @@ +diff -up bind-9.5.1b1/contrib/dlz/config.dlz.in.64bit bind-9.5.1b1/contrib/dlz/config.dlz.in +--- bind-9.5.1b1/contrib/dlz/config.dlz.in.64bit 2008-06-17 06:03:31.000000000 +0200 ++++ bind-9.5.1b1/contrib/dlz/config.dlz.in 2008-07-11 12:08:43.000000000 +0200 +@@ -17,6 +17,13 @@ + # + dlzdir='${DLZ_DRIVER_DIR}' + ++AC_MSG_CHECKING([for target libdir]) ++AC_RUN_IFELSE([int main(void) {exit((sizeof(void *) == 8) ? 0 : 1);}], ++ [target_lib=lib64], ++ [target_lib=lib], ++) ++AC_MSG_RESULT(["$target_lib"]) ++ + # + # Private autoconf macro to simplify configuring drivers: + # +@@ -135,9 +142,9 @@ then + then + use_dlz_mysql=$d + mysql_include=$d/include/mysql +- if test -d $d/lib/mysql ++ if test -d $d/${target_lib}/mysql + then +- mysql_lib=$d/lib/mysql ++ mysql_lib=$d/${target_lib}/mysql + else + mysql_lib=$d/lib + fi +@@ -274,11 +281,11 @@ case "$use_dlz_bdb" in + bdb_libnames="db42 db-4.2 db41 db-4.1 db" + for d in $bdb_libnames + do +- if test -f "$dd/lib/lib${d}.so" ++ if test -f "$dd/${target_lib}/lib${d}.so" + then + if test "$dd" != "/usr" + then +- dlz_bdb_libs="-L${dd}/lib " ++ dlz_bdb_libs="-L${dd}/${target_lib} " + else + dlz_bdb_libs="" + fi +@@ -383,7 +390,7 @@ case "$use_dlz_ldap" in + *) + DLZ_ADD_DRIVER(LDAP, dlz_ldap_driver, + [-I$use_dlz_ldap/include], +- [-L$use_dlz_ldap/lib -lldap -llber]) ++ [-L$use_dlz_ldap/${target_lib} -lldap -llber]) + + AC_MSG_RESULT( + [using LDAP from $use_dlz_ldap/lib and $use_dlz_ldap/include]) +@@ -407,7 +414,7 @@ then + odbcdirs="/usr /usr/local /usr/pkg" + for d in $odbcdirs + do +- if test -f $d/include/sql.h -a -f $d/lib/libodbc.a ++ if test -f $d/include/sql.h -a -f $d/${target_lib}/libodbc.a + then + use_dlz_odbc=$d + break +@@ -427,7 +434,7 @@ case "$use_dlz_odbc" in + *) + DLZ_ADD_DRIVER(ODBC, dlz_odbc_driver, + [-I$use_dlz_odbc/include], +- [-L$use_dlz_odbc/lib -lodbc]) ++ [-L$use_dlz_odbc/${target_lib} -lodbc]) + + AC_MSG_RESULT([using ODBC from $use_dlz_odbc]) + ;; diff --git a/bind/patches/bind-9.5-libidn.patch b/bind/patches/bind-9.5-libidn.patch new file mode 100644 index 0000000..fccfa61 --- /dev/null +++ b/bind/patches/bind-9.5-libidn.patch @@ -0,0 +1,270 @@ +diff -up bind-9.7.0b1/bin/dig/dighost.c.libidn bind-9.7.0b1/bin/dig/dighost.c +--- bind-9.7.0b1/bin/dig/dighost.c.libidn 2009-09-16 01:48:09.000000000 +0200 ++++ bind-9.7.0b1/bin/dig/dighost.c 2009-10-20 10:49:26.719056220 +0200 +@@ -44,6 +44,11 @@ + #include <idn/api.h> + #endif + ++#ifdef WITH_LIBIDN ++#include <stringprep.h> ++#include <idna.h> ++#endif ++ + #include <dns/byaddr.h> + #ifdef DIG_SIGCHASE + #include <dns/dnssec.h> +@@ -153,6 +158,14 @@ static void idn_check_result(idn_result + int idnoptions = 0; + #endif + ++#ifdef WITH_LIBIDN ++static isc_result_t libidn_locale_to_utf8 (const char* from, char **to); ++static isc_result_t libidn_utf8_to_ascii (const char* from, char *to); ++static isc_result_t output_filter (isc_buffer_t *buffer, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++#endif ++ + /*% + * Exit Codes: + * +@@ -1184,6 +1197,9 @@ setup_system(void) { + dig_searchlist_t *domain = NULL; + lwres_result_t lwresult; + unsigned int lwresflags; ++#ifdef WITH_LIBIDN ++ isc_result_t result; ++#endif + + debug("setup_system()"); + +@@ -1242,8 +1258,15 @@ setup_system(void) { + + #ifdef WITH_IDN + initialize_idn(); ++ ++#endif ++#ifdef WITH_LIBIDN ++ result = dns_name_settotextfilter(output_filter); ++ check_result(result, "dns_name_settotextfilter"); ++#ifdef HAVE_SETLOCALE ++ setlocale (LC_ALL, ""); ++#endif + #endif +- + if (keyfile[0] != 0) + setup_file_key(); + else if (keysecret[0] != 0) +@@ -1957,12 +1980,18 @@ setup_lookup(dig_lookup_t *lookup) { + idn_result_t mr; + char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME]; + #endif ++#ifdef WITH_LIBIDN ++ char *utf8_str = NULL, utf8_name[MXNAME], ascii_name[MXNAME]; ++#endif + + #ifdef WITH_IDN + result = dns_name_settotextfilter(output_filter); + check_result(result, "dns_name_settotextfilter"); + #endif +- ++#ifdef WITH_LIBIDN ++ result = dns_name_settotextfilter (output_filter); ++ check_result(result, "dns_name_settotextfilter"); ++#endif + REQUIRE(lookup != NULL); + INSIST(!free_now); + +@@ -1999,6 +2028,16 @@ setup_lookup(dig_lookup_t *lookup) { + mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname, + utf8_textname, sizeof(utf8_textname)); + idn_check_result(mr, "convert textname to UTF-8"); ++#elif defined (WITH_LIBIDN) ++ result = libidn_locale_to_utf8 (lookup->textname, &utf8_str); ++ check_result (result, "converting textname to UTF-8"); ++ len = strlen (utf8_str); ++ if (len < MXNAME) { ++ (void) strcpy (utf8_name, utf8_str); ++ } else { ++ fatal ("Too long name"); ++ } ++ isc_mem_free (mctx, utf8_str); + #endif + + /* +@@ -2018,6 +2057,15 @@ setup_lookup(dig_lookup_t *lookup) { + lookup->origin = ISC_LIST_HEAD(search_list); + lookup->need_search = ISC_FALSE; + } ++#elif defined (WITH_LIBIDN) ++ if ((count_dots(utf8_name) >= ndots) || !usesearch) { ++ lookup->origin = NULL; /* Force abs lookup */ ++ lookup->done_as_is = ISC_TRUE; ++ lookup->need_search = usesearch; ++ } else if (lookup->origin == NULL && usesearch) { ++ lookup->origin = ISC_LIST_HEAD(search_list); ++ lookup->need_search = ISC_FALSE; ++ } + #else + if ((count_dots(lookup->textname) >= ndots) || !usesearch) { + lookup->origin = NULL; /* Force abs lookup */ +@@ -2044,6 +2092,20 @@ setup_lookup(dig_lookup_t *lookup) { + IDN_IDNCONV | IDN_LENCHECK, utf8_textname, + idn_textname, sizeof(idn_textname)); + idn_check_result(mr, "convert UTF-8 textname to IDN encoding"); ++#elif defined (WITH_LIBIDN) ++ if (lookup->origin != NULL) { ++ result = libidn_locale_to_utf8 (lookup->origin->origin, &utf8_str); ++ check_result (result, "convert origin to UTF-8"); ++ if (len + strlen (utf8_str) + 1 < MXNAME) { ++ utf8_name[len++] = '.'; ++ (void) strcpy (utf8_name + len, utf8_str); ++ } else { ++ fatal ("Too long name + origin"); ++ } ++ isc_mem_free (mctx, utf8_str); ++ } ++ ++ result = libidn_utf8_to_ascii (utf8_name, ascii_name); + #else + if (lookup->origin != NULL) { + debug("trying origin %s", lookup->origin->origin); +@@ -2099,6 +2161,13 @@ setup_lookup(dig_lookup_t *lookup) { + result = dns_name_fromtext(lookup->name, &b, + dns_rootname, 0, + &lookup->namebuf); ++#elif defined (WITH_LIBIDN) ++ len = strlen (ascii_name); ++ isc_buffer_init(&b, ascii_name, len); ++ isc_buffer_add(&b, len); ++ result = dns_name_fromtext(lookup->name, &b, ++ dns_rootname, 0, ++ &lookup->namebuf); + #else + len = strlen(lookup->textname); + isc_buffer_init(&b, lookup->textname, len); +@@ -3617,7 +3686,7 @@ destroy_libs(void) { + void * ptr; + dig_message_t *chase_msg; + #endif +-#ifdef WITH_IDN ++#if defined (WITH_IDN) || defined (WITH_LIBIDN) + isc_result_t result; + #endif + +@@ -3656,6 +3725,10 @@ destroy_libs(void) { + result = dns_name_settotextfilter(NULL); + check_result(result, "dns_name_settotextfilter"); + #endif ++#ifdef WITH_LIBIDN ++ result = dns_name_settotextfilter (NULL); ++ check_result(result, "clearing dns_name_settotextfilter"); ++#endif + dns_name_destroy(); + + if (commctx != NULL) { +@@ -3834,6 +3907,79 @@ idn_check_result(idn_result_t r, const c + } + } + #endif /* WITH_IDN */ ++#ifdef WITH_LIBIDN ++/* If stringprep_locale_to_utf8 fails simple copy string */ ++static isc_result_t ++libidn_locale_to_utf8 (const char *from, char **to) { ++ char *utf8_str; ++ ++ utf8_str = stringprep_locale_to_utf8 (from); ++ if (utf8_str == NULL) { ++ *to = isc_mem_allocate (mctx, strlen (from) + 1); ++ if (*to == NULL) ++ return (ISC_R_NOMEMORY); ++ (void) strcpy (*to, from); ++ } else { ++ *to = isc_mem_allocate (mctx, strlen (utf8_str) + 1); ++ if (*to == NULL) ++ return (ISC_R_NOMEMORY); ++ (void) strcpy (*to, utf8_str); ++ free (utf8_str); ++ } ++ return (ISC_R_SUCCESS); ++} ++static isc_result_t ++libidn_utf8_to_ascii (const char *from, char *to) { ++ char *ascii; ++ ++ if (idna_to_ascii_8z (from, &ascii, 0) != IDNA_SUCCESS) ++ return (ISC_R_FAILURE); ++ ++ (void) strcpy (to, ascii); ++ free (ascii); ++ return (ISC_R_SUCCESS); ++} ++/* based on idnkit's code*/ ++static isc_result_t ++output_filter (isc_buffer_t *buffer, unsigned int used_org, ++ isc_boolean_t absolute) { ++ char tmp1[MXNAME], *tmp2; ++ size_t fromlen, tolen; ++ isc_boolean_t end_with_dot; ++ ++ fromlen = isc_buffer_usedlength(buffer) - used_org; ++ if (fromlen >= MXNAME) ++ return (ISC_R_SUCCESS); ++ memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen); ++ end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; ++ if (absolute && !end_with_dot) { ++ fromlen++; ++ if (fromlen >= MXNAME) ++ return (ISC_R_SUCCESS); ++ tmp1[fromlen - 1] = '.'; ++ } ++ tmp1[fromlen] = '\0'; ++ ++ if (idna_to_unicode_lzlz (tmp1, &tmp2, 0) != IDNA_SUCCESS) ++ return (ISC_R_SUCCESS); ++ ++ (void) strcpy (tmp1, tmp2); ++ free (tmp2); ++ ++ tolen = strlen(tmp1); ++ if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') ++ tolen--; ++ ++ if (isc_buffer_length(buffer) < used_org + tolen) ++ return (ISC_R_NOSPACE); ++ ++ isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org); ++ memcpy(isc_buffer_used(buffer), tmp1, tolen); ++ isc_buffer_add(buffer, tolen); ++ ++ return (ISC_R_SUCCESS); ++} ++#endif /* WITH_LIBIDN*/ + + #ifdef DIG_SIGCHASE + void +diff -up bind-9.7.0b1/bin/dig/Makefile.in.libidn bind-9.7.0b1/bin/dig/Makefile.in +--- bind-9.7.0b1/bin/dig/Makefile.in.libidn 2009-09-22 10:47:55.000000000 +0200 ++++ bind-9.7.0b1/bin/dig/Makefile.in 2009-10-20 10:50:06.201543709 +0200 +@@ -46,10 +46,10 @@ DEPLIBS = ${DNSDEPLIBS} ${BIND9DEPLIBS} + ${LWRESDEPLIBS} + + LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \ +- ${ISCLIBS} @IDNLIBS@ @LIBS@ ++ ${ISCLIBS} @IDNLIBS@ @LIBS@ -lidn + + NOSYMLIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \ +- ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@ ++ ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@ -lidn + + SUBDIRS = + +@@ -67,6 +67,8 @@ HTMLPAGES = dig.html host.html nslookup. + + MANOBJS = ${MANPAGES} ${HTMLPAGES} + ++EXT_CFLAGS = -DWITH_LIBIDN ++ + @BIND9_MAKE_RULES@ + + dig@EXEEXT@: dig.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS} diff --git a/bind/patches/bind-9.5-libidn2.patch b/bind/patches/bind-9.5-libidn2.patch new file mode 100644 index 0000000..785b6eb --- /dev/null +++ b/bind/patches/bind-9.5-libidn2.patch @@ -0,0 +1,221 @@ +diff -up bind-9.5.0b1/bin/dig/dighost.c.libidn2 bind-9.5.0b1/bin/dig/dighost.c +--- bind-9.5.0b1/bin/dig/dighost.c.libidn2 2007-12-10 13:12:26.000000000 +0100 ++++ bind-9.5.0b1/bin/dig/dighost.c 2007-12-10 14:21:09.000000000 +0100 +@@ -153,7 +153,7 @@ int idnoptions = 0; + #endif + + #ifdef WITH_LIBIDN +-static isc_result_t libidn_locale_to_utf8 (const char* from, char **to); ++static isc_result_t libidn_locale_to_utf8 (const char* from, char *to); + static isc_result_t libidn_utf8_to_ascii (const char* from, char *to); + static isc_result_t output_filter (isc_buffer_t *buffer, + unsigned int used_org, +@@ -1764,17 +1764,13 @@ setup_lookup(dig_lookup_t *lookup) { + char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME]; + #endif + #ifdef WITH_LIBIDN +- char *utf8_str = NULL, utf8_name[MXNAME], ascii_name[MXNAME]; ++ char utf8_str[MXNAME], utf8_name[MXNAME], ascii_name[MXNAME]; + #endif + +-#ifdef WITH_IDN ++#if defined (WITH_IDN) || defined (WITH_LIBIDN) + result = dns_name_settotextfilter(output_filter); + check_result(result, "dns_name_settotextfilter"); + #endif +-#ifdef WITH_LIBIDN +- result = dns_name_settotextfilter (output_filter); +- check_result(result, "dns_name_settotextfilter"); +-#endif + REQUIRE(lookup != NULL); + INSIST(!free_now); + +@@ -1812,15 +1808,13 @@ setup_lookup(dig_lookup_t *lookup) { + utf8_textname, sizeof(utf8_textname)); + idn_check_result(mr, "convert textname to UTF-8"); + #elif defined (WITH_LIBIDN) +- result = libidn_locale_to_utf8 (lookup->textname, &utf8_str); +- check_result (result, "converting textname to UTF-8"); ++ result = libidn_locale_to_utf8 (lookup->textname, utf8_str); ++ check_result (result, "convert textname to UTF-8"); + len = strlen (utf8_str); +- if (len < MXNAME) { ++ if (len < MXNAME) + (void) strcpy (utf8_name, utf8_str); +- } else { ++ else + fatal ("Too long name"); +- } +- isc_mem_free (mctx, utf8_str); + #endif + + /* +@@ -1833,24 +1827,11 @@ setup_lookup(dig_lookup_t *lookup) { + if (lookup->new_search) { + #ifdef WITH_IDN + if ((count_dots(utf8_textname) >= ndots) || !usesearch) { +- lookup->origin = NULL; /* Force abs lookup */ +- lookup->done_as_is = ISC_TRUE; +- lookup->need_search = usesearch; +- } else if (lookup->origin == NULL && usesearch) { +- lookup->origin = ISC_LIST_HEAD(search_list); +- lookup->need_search = ISC_FALSE; +- } + #elif defined (WITH_LIBIDN) + if ((count_dots(utf8_name) >= ndots) || !usesearch) { +- lookup->origin = NULL; /* Force abs lookup */ +- lookup->done_as_is = ISC_TRUE; +- lookup->need_search = usesearch; +- } else if (lookup->origin == NULL && usesearch) { +- lookup->origin = ISC_LIST_HEAD(search_list); +- lookup->need_search = ISC_FALSE; +- } + #else + if ((count_dots(lookup->textname) >= ndots) || !usesearch) { ++#endif + lookup->origin = NULL; /* Force abs lookup */ + lookup->done_as_is = ISC_TRUE; + lookup->need_search = usesearch; +@@ -1858,7 +1839,6 @@ setup_lookup(dig_lookup_t *lookup) { + lookup->origin = ISC_LIST_HEAD(search_list); + lookup->need_search = ISC_FALSE; + } +-#endif + } + + #ifdef WITH_IDN +@@ -1877,15 +1857,12 @@ setup_lookup(dig_lookup_t *lookup) { + idn_check_result(mr, "convert UTF-8 textname to IDN encoding"); + #elif defined (WITH_LIBIDN) + if (lookup->origin != NULL) { +- result = libidn_locale_to_utf8 (lookup->origin->origin, &utf8_str); ++ result = libidn_locale_to_utf8 (lookup->origin->origin, utf8_str); + check_result (result, "convert origin to UTF-8"); +- if (len + strlen (utf8_str) + 1 < MXNAME) { +- utf8_name[len++] = '.'; ++ if (len + strlen (utf8_str) < MXNAME) + (void) strcpy (utf8_name + len, utf8_str); +- } else { ++ else + fatal ("Too long name + origin"); +- } +- isc_mem_free (mctx, utf8_str); + } + + result = libidn_utf8_to_ascii (utf8_name, ascii_name); +@@ -3600,76 +3577,85 @@ idn_check_result(idn_result_t r, const c + } + #endif /* WITH_IDN */ + #ifdef WITH_LIBIDN +-/* If stringprep_locale_to_utf8 fails simple copy string */ + static isc_result_t +-libidn_locale_to_utf8 (const char *from, char **to) { ++libidn_locale_to_utf8 (const char *from, char *to) { + char *utf8_str; + ++ debug ("libidn_locale_to_utf8"); + utf8_str = stringprep_locale_to_utf8 (from); +- if (utf8_str == NULL) { +- *to = isc_mem_allocate (mctx, strlen (from) + 1); +- if (*to == NULL) +- return (ISC_R_NOMEMORY); +- (void) strcpy (*to, from); +- } else { +- *to = isc_mem_allocate (mctx, strlen (utf8_str) + 1); +- if (*to == NULL) +- return (ISC_R_NOMEMORY); +- (void) strcpy (*to, utf8_str); ++ if (utf8_str != NULL) { ++ (void) strcpy (to, utf8_str); + free (utf8_str); ++ return ISC_R_SUCCESS; + } +- return (ISC_R_SUCCESS); ++ ++ debug ("libidn_locale_to_utf8: failure"); ++ return ISC_R_FAILURE; + } + static isc_result_t + libidn_utf8_to_ascii (const char *from, char *to) { + char *ascii; ++ int iresult; + +- if (idna_to_ascii_8z (from, &ascii, 0) != IDNA_SUCCESS) +- return (ISC_R_FAILURE); ++ debug ("libidn_utf8_to_ascii"); ++ iresult = idna_to_ascii_8z (from, &ascii, 0); ++ if (iresult != IDNA_SUCCESS) { ++ debug ("idna_to_ascii_8z: %s", idna_strerror (iresult)); ++ return ISC_R_FAILURE; ++ } + + (void) strcpy (to, ascii); + free (ascii); +- return (ISC_R_SUCCESS); ++ return ISC_R_SUCCESS; + } +-/* based on idnkit's code*/ ++ + static isc_result_t + output_filter (isc_buffer_t *buffer, unsigned int used_org, + isc_boolean_t absolute) { ++ + char tmp1[MXNAME], *tmp2; + size_t fromlen, tolen; + isc_boolean_t end_with_dot; ++ int iresult; ++ ++ debug ("output_filter"); + +- fromlen = isc_buffer_usedlength(buffer) - used_org; ++ fromlen = isc_buffer_usedlength (buffer) - used_org; + if (fromlen >= MXNAME) +- return (ISC_R_SUCCESS); +- memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen); ++ return ISC_R_SUCCESS; ++ memcpy (tmp1, (char *) isc_buffer_base (buffer) + used_org, fromlen); + end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; + if (absolute && !end_with_dot) { + fromlen++; + if (fromlen >= MXNAME) +- return (ISC_R_SUCCESS); ++ return ISC_R_SUCCESS; + tmp1[fromlen - 1] = '.'; + } + tmp1[fromlen] = '\0'; + +- if (idna_to_unicode_lzlz (tmp1, &tmp2, 0) != IDNA_SUCCESS) +- return (ISC_R_SUCCESS); ++ iresult = idna_to_unicode_8z8z (tmp1, &tmp2, 0); ++ if (iresult != IDNA_SUCCESS) { ++ debug ("output_filter: %s", idna_strerror (iresult)); ++ return ISC_R_SUCCESS; ++ } + + (void) strcpy (tmp1, tmp2); + free (tmp2); + +- tolen = strlen(tmp1); ++ tolen = strlen (tmp1); + if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') + tolen--; + +- if (isc_buffer_length(buffer) < used_org + tolen) +- return (ISC_R_NOSPACE); ++ if (isc_buffer_length (buffer) < used_org + tolen) ++ return ISC_R_NOSPACE; ++ ++ debug ("%s", tmp1); + +- isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org); +- memcpy(isc_buffer_used(buffer), tmp1, tolen); +- isc_buffer_add(buffer, tolen); ++ isc_buffer_subtract (buffer, isc_buffer_usedlength (buffer) - used_org); ++ memcpy (isc_buffer_used (buffer), tmp1, tolen); ++ isc_buffer_add (buffer, tolen); + +- return (ISC_R_SUCCESS); ++ return ISC_R_SUCCESS; + } + #endif /* WITH_LIBIDN*/ + diff --git a/bind/patches/bind-9.5-libidn3.patch b/bind/patches/bind-9.5-libidn3.patch new file mode 100644 index 0000000..3fd5573 --- /dev/null +++ b/bind/patches/bind-9.5-libidn3.patch @@ -0,0 +1,21 @@ +diff -up bind-9.5.0b1/bin/dig/dighost.c.libidn3 bind-9.5.0b1/bin/dig/dighost.c +--- bind-9.5.0b1/bin/dig/dighost.c.libidn3 2007-12-20 13:24:27.000000000 +0100 ++++ bind-9.5.0b1/bin/dig/dighost.c 2007-12-20 13:27:10.000000000 +0100 +@@ -1859,10 +1859,13 @@ setup_lookup(dig_lookup_t *lookup) { + if (lookup->origin != NULL) { + result = libidn_locale_to_utf8 (lookup->origin->origin, utf8_str); + check_result (result, "convert origin to UTF-8"); +- if (len + strlen (utf8_str) < MXNAME) +- (void) strcpy (utf8_name + len, utf8_str); +- else +- fatal ("Too long name + origin"); ++ if (len > 0 && utf8_name[len - 1] != '.') { ++ utf8_name[len++] = '.'; ++ if (len + strlen (utf8_str) < MXNAME) ++ (void) strcpy (utf8_name + len, utf8_str); ++ else ++ fatal ("Too long name + origin"); ++ } + } + + result = libidn_utf8_to_ascii (utf8_name, ascii_name); diff --git a/bind/patches/bind-9.5-overflow.patch b/bind/patches/bind-9.5-overflow.patch new file mode 100644 index 0000000..34b7bed --- /dev/null +++ b/bind/patches/bind-9.5-overflow.patch @@ -0,0 +1,24 @@ +diff -up bind-9.5.0a5/lib/isc/pthreads/condition.c.overflow bind-9.5.0a5/lib/isc/pthreads/condition.c +--- bind-9.5.0a5/lib/isc/pthreads/condition.c.overflow 2007-07-17 07:53:59.000000000 +0200 ++++ bind-9.5.0a5/lib/isc/pthreads/condition.c 2007-07-17 07:55:08.000000000 +0200 +@@ -43,7 +43,7 @@ isc_condition_waituntil(isc_condition_t + * POSIX defines a timespec's tv_sec as time_t. + */ + result = isc_time_secondsastimet(t, &ts.tv_sec); +- if (result != ISC_R_SUCCESS) ++ if (result != ISC_R_RANGE && result != ISC_R_SUCCESS) + return (result); + + /*! +diff -up bind-9.5.0a5/lib/isc/unix/time.c.overflow bind-9.5.0a5/lib/isc/unix/time.c +--- bind-9.5.0a5/lib/isc/unix/time.c.overflow 2007-02-14 01:27:27.000000000 +0100 ++++ bind-9.5.0a5/lib/isc/unix/time.c 2007-07-17 07:53:08.000000000 +0200 +@@ -379,6 +379,9 @@ isc_time_secondsastimet(const isc_time_t + * (Let's hope the compiler got the actual test right.) + */ + UNUSED(i); ++ ++ /* Means that t->seconds > maximum value in time_t and we have int time_t */ ++ seconds = INT_MAX; + return (ISC_R_RANGE); + } diff --git a/bind/patches/bind-9.5-parallel-build.patch b/bind/patches/bind-9.5-parallel-build.patch new file mode 100644 index 0000000..53e34ca --- /dev/null +++ b/bind/patches/bind-9.5-parallel-build.patch @@ -0,0 +1,14 @@ +diff -up bind-9.5.0b1/lib/dns/Makefile.in.parallel bind-9.5.0b1/lib/dns/Makefile.in +--- bind-9.5.0b1/lib/dns/Makefile.in.parallel 2008-01-17 18:27:38.000000000 +0100 ++++ bind-9.5.0b1/lib/dns/Makefile.in 2008-01-17 18:27:45.000000000 +0100 +@@ -19,10 +19,6 @@ srcdir = @srcdir@ + VPATH = @srcdir@ + top_srcdir = @top_srcdir@ + +-# Attempt to disable parallel processing. +-.NOTPARALLEL: +-.NO_PARALLEL: +- + @BIND9_VERSION@ + + @LIBDNS_API@ diff --git a/bind/patches/bind-95-rh452060.patch b/bind/patches/bind-95-rh452060.patch new file mode 100644 index 0000000..58808b0 --- /dev/null +++ b/bind/patches/bind-95-rh452060.patch @@ -0,0 +1,40 @@ +diff -up bind-9.5.0-P2/bin/dig/dighost.c.rh452060 bind-9.5.0-P2/bin/dig/dighost.c +--- bind-9.5.0-P2/bin/dig/dighost.c.rh452060 2008-12-01 22:30:01.000000000 +0100 ++++ bind-9.5.0-P2/bin/dig/dighost.c 2008-12-01 22:30:07.000000000 +0100 +@@ -1280,6 +1280,12 @@ clear_query(dig_query_t *query) { + + debug("clear_query(%p)", query); + ++ if (query->waiting_senddone) { ++ debug("send_done not yet called"); ++ query->pending_free = ISC_TRUE; ++ return; ++ } ++ + lookup = query->lookup; + + if (lookup->current_query == query) +@@ -1301,10 +1307,7 @@ clear_query(dig_query_t *query) { + isc_mempool_put(commctx, query->recvspace); + isc_buffer_invalidate(&query->recvbuf); + isc_buffer_invalidate(&query->lengthbuf); +- if (query->waiting_senddone) +- query->pending_free = ISC_TRUE; +- else +- isc_mem_free(mctx, query); ++ isc_mem_free(mctx, query); + } + + /*% +@@ -2175,9 +2178,9 @@ send_done(isc_task_t *_task, isc_event_t + isc_event_free(&event); + + if (query->pending_free) +- isc_mem_free(mctx, query); ++ clear_query(query); + +- check_if_done(); ++ check_next_lookup(l); + UNLOCK_LOOKUP; + } + diff --git a/bind/patches/bind-96-dyndb.patch b/bind/patches/bind-96-dyndb.patch new file mode 100644 index 0000000..176be49 --- /dev/null +++ b/bind/patches/bind-96-dyndb.patch @@ -0,0 +1,722 @@ +diff -up bind-9.8.1rc1/bin/named/main.c.dyndb bind-9.8.1rc1/bin/named/main.c +--- bind-9.8.1rc1/bin/named/main.c.dyndb 2011-03-11 07:47:00.000000000 +0100 ++++ bind-9.8.1rc1/bin/named/main.c 2011-08-31 14:25:02.244088457 +0200 +@@ -45,6 +45,7 @@ + #include <isccc/result.h> + + #include <dns/dispatch.h> ++#include <dns/dynamic_db.h> + #include <dns/name.h> + #include <dns/result.h> + #include <dns/view.h> +@@ -884,6 +885,8 @@ setup(void) { + + static void + cleanup(void) { ++ dns_dynamic_db_cleanup(ISC_TRUE); ++ + destroy_managers(); + + ns_server_destroy(&ns_g_server); +diff -up bind-9.8.1rc1/bin/named/server.c.dyndb bind-9.8.1rc1/bin/named/server.c +--- bind-9.8.1rc1/bin/named/server.c.dyndb 2011-08-02 06:58:45.000000000 +0200 ++++ bind-9.8.1rc1/bin/named/server.c 2011-08-31 14:29:04.261071645 +0200 +@@ -61,6 +61,7 @@ + #include <dns/db.h> + #include <dns/dispatch.h> + #include <dns/dlz.h> ++#include <dns/dynamic_db.h> + #include <dns/dns64.h> + #include <dns/forward.h> + #include <dns/journal.h> +@@ -1151,6 +1152,72 @@ configure_peer(const cfg_obj_t *cpeer, i + } + + static isc_result_t ++configure_dynamic_db(const cfg_obj_t *dynamic_db, isc_mem_t *mctx, ++ const dns_dyndb_arguments_t *dyndb_args) ++{ ++ isc_result_t result; ++ const cfg_obj_t *obj; ++ const cfg_obj_t *options; ++ const cfg_listelt_t *element; ++ const char *name; ++ const char *libname; ++ const char **argv = NULL; ++ unsigned int i; ++ unsigned int len; ++ ++ /* Get the name of the database. */ ++ obj = cfg_tuple_get(dynamic_db, "name"); ++ name = cfg_obj_asstring(obj); ++ ++ /* Get options. */ ++ options = cfg_tuple_get(dynamic_db, "options"); ++ ++ /* Get library name. */ ++ obj = NULL; ++ CHECK(cfg_map_get(options, "library", &obj)); ++ libname = cfg_obj_asstring(obj); ++ ++ /* Create a list of arguments. */ ++ obj = NULL; ++ result = cfg_map_get(options, "arg", &obj); ++ if (result == ISC_R_NOTFOUND) ++ len = 0; ++ else if (result == ISC_R_SUCCESS) ++ len = cfg_list_length(obj, isc_boolean_false); ++ else ++ goto cleanup; ++ ++ /* Account for the last terminating NULL. */ ++ len++; ++ ++ argv = isc_mem_allocate(mctx, len * sizeof(const char *)); ++ if (argv == NULL) { ++ result = ISC_R_NOMEMORY; ++ goto cleanup; ++ } ++ for (element = cfg_list_first(obj), i = 0; ++ element != NULL; ++ element = cfg_list_next(element), i++) ++ { ++ REQUIRE(i < len); ++ ++ obj = cfg_listelt_value(element); ++ argv[i] = cfg_obj_asstring(obj); ++ } ++ REQUIRE(i < len); ++ argv[i] = NULL; ++ ++ CHECK(dns_dynamic_db_load(libname, name, mctx, argv, dyndb_args)); ++ ++cleanup: ++ if (argv != NULL) ++ isc_mem_free(mctx, argv); ++ ++ return result; ++} ++ ++ ++static isc_result_t + disable_algorithms(const cfg_obj_t *disabled, dns_resolver_t *resolver) { + isc_result_t result; + const cfg_obj_t *algorithms; +@@ -1562,6 +1629,7 @@ configure_view(dns_view_t *view, cfg_obj + const cfg_obj_t *dlz; + unsigned int dlzargc; + char **dlzargv; ++ const cfg_obj_t *dynamic_db_list; + const cfg_obj_t *disabled; + const cfg_obj_t *obj; + const cfg_listelt_t *element; +@@ -1792,6 +1860,39 @@ configure_view(dns_view_t *view, cfg_obj + } + } + ++ ++ ++ /* ++ * Configure dynamic databases. ++ */ ++ dynamic_db_list = NULL; ++ if (voptions != NULL) ++ (void)cfg_map_get(voptions, "dynamic-db", &dynamic_db_list); ++ else ++ (void)cfg_map_get(config, "dynamic-db", &dynamic_db_list); ++ element = cfg_list_first(dynamic_db_list); ++ if (element != NULL) { ++ dns_dyndb_arguments_t *args; ++ ++ args = dns_dyndb_arguments_create(mctx); ++ if (args == NULL) { ++ result = ISC_R_NOMEMORY; ++ goto cleanup; ++ } ++ dns_dyndb_set_view(args, view); ++ dns_dyndb_set_zonemgr(args, ns_g_server->zonemgr); ++ dns_dyndb_set_task(args, ns_g_server->task); ++ dns_dyndb_set_timermgr(args, ns_g_timermgr); ++ while (element != NULL) { ++ obj = cfg_listelt_value(element); ++ CHECK(configure_dynamic_db(obj, mctx, args)); ++ ++ element = cfg_list_next(element); ++ } ++ ++ dns_dyndb_arguments_destroy(mctx, args); ++ } ++ + /* + * Obtain configuration parameters that affect the decision of whether + * we can reuse/share an existing cache. +@@ -4292,6 +4393,7 @@ load_configuration(const char *filename, + cfg_aclconfctx_detach(&ns_g_aclconfctx); + CHECK(cfg_aclconfctx_create(ns_g_mctx, &ns_g_aclconfctx)); + ++ dns_dynamic_db_cleanup(ISC_FALSE); + /* + * Parse the global default pseudo-config file. + */ +diff -up bind-9.8.1rc1/lib/dns/dynamic_db.c.dyndb bind-9.8.1rc1/lib/dns/dynamic_db.c +--- bind-9.8.1rc1/lib/dns/dynamic_db.c.dyndb 2011-08-31 14:25:02.249088456 +0200 ++++ bind-9.8.1rc1/lib/dns/dynamic_db.c 2011-08-31 14:25:02.249088456 +0200 +@@ -0,0 +1,366 @@ ++/* ++ * Copyright (C) 2008-2011 Red Hat, Inc. ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND Red Hat DISCLAIMS ALL WARRANTIES WITH ++ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS. IN NO EVENT SHALL Red Hat BE LIABLE FOR ANY SPECIAL, DIRECT, ++ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM ++ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE ++ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR ++ * PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++ ++#include <config.h> ++ ++#include <isc/buffer.h> ++#include <isc/mem.h> ++#include <isc/mutex.h> ++#include <isc/once.h> ++#include <isc/result.h> ++#include <isc/region.h> ++#include <isc/task.h> ++#include <isc/types.h> ++#include <isc/util.h> ++ ++#include <dns/dynamic_db.h> ++#include <dns/log.h> ++#include <dns/types.h> ++#include <dns/view.h> ++#include <dns/zone.h> ++ ++#include <string.h> ++ ++#if HAVE_DLFCN_H ++#include <dlfcn.h> ++#endif ++ ++#ifndef DYNDB_LIBDIR ++#define DYNDB_LIBDIR "" ++#endif ++ ++#define CHECK(op) \ ++ do { result = (op); \ ++ if (result != ISC_R_SUCCESS) goto cleanup; \ ++ } while (0) ++ ++ ++typedef isc_result_t (*register_func_t)(isc_mem_t *mctx, const char *name, ++ const char * const *argv, ++ const dns_dyndb_arguments_t *dyndb_args); ++typedef void (*destroy_func_t)(void); ++ ++typedef struct dyndb_implementation dyndb_implementation_t; ++ ++struct dyndb_implementation { ++ isc_mem_t *mctx; ++ void *handle; ++ register_func_t register_function; ++ destroy_func_t destroy_function; ++ LINK(dyndb_implementation_t) link; ++}; ++ ++struct dns_dyndb_arguments { ++ dns_view_t *view; ++ dns_zonemgr_t *zmgr; ++ isc_task_t *task; ++ isc_timermgr_t *timermgr; ++}; ++ ++/* List of implementations. Locked by dyndb_lock. */ ++static LIST(dyndb_implementation_t) dyndb_implementations; ++/* Locks dyndb_implementations. */ ++static isc_mutex_t dyndb_lock; ++static isc_once_t once = ISC_ONCE_INIT; ++ ++static void ++dyndb_initialize(void) { ++ RUNTIME_CHECK(isc_mutex_init(&dyndb_lock) == ISC_R_SUCCESS); ++ INIT_LIST(dyndb_implementations); ++} ++ ++ ++#if HAVE_DLFCN_H ++static isc_result_t ++load_symbol(void *handle, const char *symbol_name, void **symbolp) ++{ ++ const char *errmsg; ++ void *symbol; ++ ++ REQUIRE(handle != NULL); ++ REQUIRE(symbolp != NULL && *symbolp == NULL); ++ ++ symbol = dlsym(handle, symbol_name); ++ if (symbol == NULL) { ++ errmsg = dlerror(); ++ if (errmsg == NULL) ++ errmsg = "returned function pointer is NULL"; ++ isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, ++ DNS_LOGMODULE_DYNDB, ISC_LOG_ERROR, ++ "failed to lookup symbol %s: %s", ++ symbol_name, errmsg); ++ return ISC_R_FAILURE; ++ } ++ dlerror(); ++ ++ *symbolp = symbol; ++ ++ return ISC_R_SUCCESS; ++} ++ ++static isc_result_t ++load_library(isc_mem_t *mctx, const char *filename, dyndb_implementation_t **impp) ++{ ++ isc_result_t result; ++ size_t module_size; ++ isc_buffer_t *module_buf = NULL; ++ isc_region_t module_region; ++ void *handle = NULL; ++ dyndb_implementation_t *imp; ++ register_func_t register_function = NULL; ++ destroy_func_t destroy_function = NULL; ++ ++ REQUIRE(impp != NULL && *impp == NULL); ++ ++ /* Build up the full path. */ ++ module_size = strlen(DYNDB_LIBDIR) + strlen(filename) + 1; ++ CHECK(isc_buffer_allocate(mctx, &module_buf, module_size)); ++ isc_buffer_putstr(module_buf, DYNDB_LIBDIR); ++ isc_buffer_putstr(module_buf, filename); ++ isc_buffer_putuint8(module_buf, 0); ++ isc_buffer_region(module_buf, &module_region); ++ ++ handle = dlopen((char *)module_region.base, RTLD_LAZY); ++ if (handle == NULL) { ++ isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, ++ DNS_LOGMODULE_DYNDB, ISC_LOG_ERROR, ++ "failed to dynamically load driver '%s': %s", ++ filename, dlerror()); ++ result = ISC_R_FAILURE; ++ goto cleanup; ++ } ++ dlerror(); ++ ++ CHECK(load_symbol(handle, "dynamic_driver_init", ++ (void **)®ister_function)); ++ CHECK(load_symbol(handle, "dynamic_driver_destroy", ++ (void **)&destroy_function)); ++ ++ imp = isc_mem_get(mctx, sizeof(dyndb_implementation_t)); ++ if (imp == NULL) { ++ result = ISC_R_NOMEMORY; ++ goto cleanup; ++ } ++ ++ imp->mctx = NULL; ++ isc_mem_attach(mctx, &imp->mctx); ++ imp->handle = handle; ++ imp->register_function = register_function; ++ imp->destroy_function = destroy_function; ++ INIT_LINK(imp, link); ++ ++ *impp = imp; ++ ++cleanup: ++ if (result != ISC_R_SUCCESS && handle != NULL) ++ dlclose(handle); ++ if (module_buf != NULL) ++ isc_buffer_free(&module_buf); ++ ++ return result; ++} ++ ++static void ++unload_library(dyndb_implementation_t **impp) ++{ ++ dyndb_implementation_t *imp; ++ ++ REQUIRE(impp != NULL && *impp != NULL); ++ ++ imp = *impp; ++ ++ isc_mem_putanddetach(&imp->mctx, imp, sizeof(dyndb_implementation_t)); ++ ++ *impp = NULL; ++} ++ ++#else /* HAVE_DLFCN_H */ ++static isc_result_t ++load_library(isc_mem_t *mctx, const char *filename, dyndb_implementation_t **impp) ++{ ++ UNUSED(mctx); ++ UNUSED(filename); ++ UNUSED(impp); ++ ++ isc_log_write(dns_lctx, DNS_LOGCATEGORY_DATABASE, DNS_LOGMODULE_DYNDB, ++ ISC_LOG_ERROR, ++ "dynamic database support is not implemented") ++ ++ return ISC_R_NOTIMPLEMENTED; ++} ++ ++static void ++unload_library(dyndb_implementation_t **impp) ++{ ++ dyndb_implementation_t *imp; ++ ++ REQUIRE(impp != NULL && *impp != NULL); ++ ++ imp = *impp; ++ ++ isc_mem_putanddetach(&imp->mctx, imp, sizeof(dyndb_implementation_t)); ++ ++ *impp = NULL; ++} ++#endif /* HAVE_DLFCN_H */ ++ ++isc_result_t ++dns_dynamic_db_load(const char *libname, const char *name, isc_mem_t *mctx, ++ const char * const *argv, ++ const dns_dyndb_arguments_t *dyndb_args) ++{ ++ isc_result_t result; ++ dyndb_implementation_t *implementation = NULL; ++ ++ RUNTIME_CHECK(isc_once_do(&once, dyndb_initialize) == ISC_R_SUCCESS); ++ ++ CHECK(load_library(mctx, libname, &implementation)); ++ CHECK(implementation->register_function(mctx, name, argv, dyndb_args)); ++ ++ LOCK(&dyndb_lock); ++ APPEND(dyndb_implementations, implementation, link); ++ UNLOCK(&dyndb_lock); ++ ++ return ISC_R_SUCCESS; ++ ++cleanup: ++ if (implementation != NULL) ++ unload_library(&implementation); ++ ++ return result; ++} ++ ++void ++dns_dynamic_db_cleanup(isc_boolean_t exiting) ++{ ++ dyndb_implementation_t *elem; ++ dyndb_implementation_t *prev; ++ ++ RUNTIME_CHECK(isc_once_do(&once, dyndb_initialize) == ISC_R_SUCCESS); ++ ++ LOCK(&dyndb_lock); ++ elem = TAIL(dyndb_implementations); ++ while (elem != NULL) { ++ prev = PREV(elem, link); ++ UNLINK(dyndb_implementations, elem, link); ++ elem->destroy_function(); ++ unload_library(&elem); ++ elem = prev; ++ } ++ UNLOCK(&dyndb_lock); ++ ++ if (exiting == ISC_TRUE) ++ isc_mutex_destroy(&dyndb_lock); ++} ++ ++dns_dyndb_arguments_t * ++dns_dyndb_arguments_create(isc_mem_t *mctx) ++{ ++ dns_dyndb_arguments_t *args; ++ ++ args = isc_mem_get(mctx, sizeof(*args)); ++ if (args != NULL) ++ memset(args, 0, sizeof(*args)); ++ ++ return args; ++} ++ ++void ++dns_dyndb_arguments_destroy(isc_mem_t *mctx, dns_dyndb_arguments_t *args) ++{ ++ REQUIRE(args != NULL); ++ ++ dns_dyndb_set_view(args, NULL); ++ dns_dyndb_set_zonemgr(args, NULL); ++ dns_dyndb_set_task(args, NULL); ++ dns_dyndb_set_timermgr(args, NULL); ++ ++ isc_mem_put(mctx, args, sizeof(*args)); ++} ++ ++void ++dns_dyndb_set_view(dns_dyndb_arguments_t *args, dns_view_t *view) ++{ ++ REQUIRE(args != NULL); ++ ++ if (args->view != NULL) ++ dns_view_detach(&args->view); ++ if (view != NULL) ++ dns_view_attach(view, &args->view); ++} ++ ++dns_view_t * ++dns_dyndb_get_view(dns_dyndb_arguments_t *args) ++{ ++ REQUIRE(args != NULL); ++ ++ return args->view; ++} ++ ++void ++dns_dyndb_set_zonemgr(dns_dyndb_arguments_t *args, dns_zonemgr_t *zmgr) ++{ ++ REQUIRE(args != NULL); ++ ++ if (args->zmgr != NULL) ++ dns_zonemgr_detach(&args->zmgr); ++ if (zmgr != NULL) ++ dns_zonemgr_attach(zmgr, &args->zmgr); ++} ++ ++dns_zonemgr_t * ++dns_dyndb_get_zonemgr(dns_dyndb_arguments_t *args) ++{ ++ REQUIRE(args != NULL); ++ ++ return args->zmgr; ++} ++ ++void ++dns_dyndb_set_task(dns_dyndb_arguments_t *args, isc_task_t *task) ++{ ++ REQUIRE(args != NULL); ++ ++ if (args->task != NULL) ++ isc_task_detach(&args->task); ++ if (task != NULL) ++ isc_task_attach(task, &args->task); ++} ++ ++isc_task_t * ++dns_dyndb_get_task(dns_dyndb_arguments_t *args) ++{ ++ REQUIRE(args != NULL); ++ ++ return args->task; ++} ++ ++void ++dns_dyndb_set_timermgr(dns_dyndb_arguments_t *args, isc_timermgr_t *timermgr) ++{ ++ REQUIRE(args != NULL); ++ ++ args->timermgr = timermgr; ++} ++ ++isc_timermgr_t * ++dns_dyndb_get_timermgr(dns_dyndb_arguments_t *args) ++{ ++ REQUIRE(args != NULL); ++ ++ return args->timermgr; ++} +diff -up bind-9.8.1rc1/lib/dns/include/dns/dynamic_db.h.dyndb bind-9.8.1rc1/lib/dns/include/dns/dynamic_db.h +--- bind-9.8.1rc1/lib/dns/include/dns/dynamic_db.h.dyndb 2011-08-31 14:25:02.249088456 +0200 ++++ bind-9.8.1rc1/lib/dns/include/dns/dynamic_db.h 2011-08-31 14:25:02.249088456 +0200 +@@ -0,0 +1,50 @@ ++/* ++ * Copyright (C) 2008-2011 Red Hat, Inc. ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND Red Hat DISCLAIMS ALL WARRANTIES WITH ++ * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS. IN NO EVENT SHALL Red Hat BE LIABLE FOR ANY SPECIAL, DIRECT, ++ * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM ++ * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE ++ * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR ++ * PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++ ++#ifndef DYNAMIC_DB_H ++#define DYNAMIC_DB_H ++ ++#include <isc/types.h> ++ ++#include <dns/types.h> ++ ++/* ++ * TODO: ++ * Reformat the prototypes. ++ * Add annotated comments. ++ */ ++ ++isc_result_t dns_dynamic_db_load(const char *libname, const char *name, ++ isc_mem_t *mctx, const char * const *argv, ++ const dns_dyndb_arguments_t *dyndb_args); ++ ++void dns_dynamic_db_cleanup(isc_boolean_t exiting); ++ ++dns_dyndb_arguments_t *dns_dyndb_arguments_create(isc_mem_t *mctx); ++void dns_dyndb_arguments_destroy(isc_mem_t *mctx, dns_dyndb_arguments_t *args); ++ ++void dns_dyndb_set_view(dns_dyndb_arguments_t *args, dns_view_t *view); ++dns_view_t *dns_dyndb_get_view(dns_dyndb_arguments_t *args); ++void dns_dyndb_set_zonemgr(dns_dyndb_arguments_t *args, dns_zonemgr_t *zmgr); ++dns_zonemgr_t *dns_dyndb_get_zonemgr(dns_dyndb_arguments_t *args); ++void dns_dyndb_set_task(dns_dyndb_arguments_t *args, isc_task_t *task); ++isc_task_t *dns_dyndb_get_task(dns_dyndb_arguments_t *args); ++void dns_dyndb_set_timermgr(dns_dyndb_arguments_t *args, ++ isc_timermgr_t *timermgr); ++isc_timermgr_t *dns_dyndb_get_timermgr(dns_dyndb_arguments_t *args); ++ ++#endif +diff -up bind-9.8.1rc1/lib/dns/include/dns/log.h.dyndb bind-9.8.1rc1/lib/dns/include/dns/log.h +--- bind-9.8.1rc1/lib/dns/include/dns/log.h.dyndb 2009-12-18 23:16:49.000000000 +0100 ++++ bind-9.8.1rc1/lib/dns/include/dns/log.h 2011-08-31 14:25:02.250088456 +0200 +@@ -74,6 +74,7 @@ LIBDNS_EXTERNAL_DATA extern isc_logmodul + #define DNS_LOGMODULE_ACACHE (&dns_modules[25]) + #define DNS_LOGMODULE_DLZ (&dns_modules[26]) + #define DNS_LOGMODULE_DNSSEC (&dns_modules[27]) ++#define DNS_LOGMODULE_DYNDB (&dns_modules[28]) + + ISC_LANG_BEGINDECLS + +diff -up bind-9.8.1rc1/lib/dns/include/dns/Makefile.in.dyndb bind-9.8.1rc1/lib/dns/include/dns/Makefile.in +--- bind-9.8.1rc1/lib/dns/include/dns/Makefile.in.dyndb 2011-02-28 02:20:02.000000000 +0100 ++++ bind-9.8.1rc1/lib/dns/include/dns/Makefile.in 2011-08-31 14:25:02.250088456 +0200 +@@ -22,7 +22,7 @@ top_srcdir = @top_srcdir@ + @BIND9_VERSION@ + + HEADERS = acl.h adb.h byaddr.h cache.h callbacks.h cert.h compress.h \ +- db.h dbiterator.h dbtable.h diff.h dispatch.h dlz.h \ ++ db.h dbiterator.h dbtable.h diff.h dispatch.h dlz.h dynamic_db.h \ + dnssec.h ds.h events.h fixedname.h iptable.h journal.h \ + keyflags.h keytable.h keyvalues.h lib.h log.h \ + master.h masterdump.h message.h name.h ncache.h nsec.h \ +diff -up bind-9.8.1rc1/lib/dns/include/dns/types.h.dyndb bind-9.8.1rc1/lib/dns/include/dns/types.h +--- bind-9.8.1rc1/lib/dns/include/dns/types.h.dyndb 2010-12-08 03:46:16.000000000 +0100 ++++ bind-9.8.1rc1/lib/dns/include/dns/types.h 2011-08-31 14:25:02.251088456 +0200 +@@ -60,6 +60,7 @@ typedef struct dns_dbtable dns_dbtable + typedef void dns_dbversion_t; + typedef struct dns_dlzimplementation dns_dlzimplementation_t; + typedef struct dns_dlzdb dns_dlzdb_t; ++typedef struct dns_dyndb_arguments dns_dyndb_arguments_t; + typedef struct dns_sdlzimplementation dns_sdlzimplementation_t; + typedef struct dns_decompress dns_decompress_t; + typedef struct dns_dispatch dns_dispatch_t; +diff -up bind-9.8.1rc1/lib/dns/log.c.dyndb bind-9.8.1rc1/lib/dns/log.c +--- bind-9.8.1rc1/lib/dns/log.c.dyndb 2009-12-19 00:49:03.000000000 +0100 ++++ bind-9.8.1rc1/lib/dns/log.c 2011-08-31 14:25:02.251088456 +0200 +@@ -80,6 +80,7 @@ LIBDNS_EXTERNAL_DATA isc_logmodule_t dns + { "dns/acache", 0 }, + { "dns/dlz", 0 }, + { "dns/dnssec", 0 }, ++ { "dns/dynamic_db", 0 }, + { NULL, 0 } + }; + +diff -up bind-9.8.1rc1/lib/dns/Makefile.in.dyndb bind-9.8.1rc1/lib/dns/Makefile.in +--- bind-9.8.1rc1/lib/dns/Makefile.in.dyndb 2011-08-31 14:25:02.230088458 +0200 ++++ bind-9.8.1rc1/lib/dns/Makefile.in 2011-08-31 14:25:02.251088456 +0200 +@@ -58,7 +58,7 @@ DNSOBJS = acache.@O@ acl.@O@ adb.@O@ bya + cache.@O@ callbacks.@O@ compress.@O@ \ + db.@O@ dbiterator.@O@ dbtable.@O@ diff.@O@ dispatch.@O@ \ + dlz.@O@ dns64.@O@ dnssec.@O@ ds.@O@ forward.@O@ iptable.@O@ \ +- journal.@O@ keydata.@O@ keytable.@O@ \ ++ dynamic_db.@O@ journal.@O@ keydata.@O@ keytable.@O@ \ + lib.@O@ log.@O@ lookup.@O@ \ + master.@O@ masterdump.@O@ message.@O@ \ + name.@O@ ncache.@O@ nsec.@O@ nsec3.@O@ order.@O@ peer.@O@ \ +@@ -87,7 +87,7 @@ DNSSRCS = acache.c acl.c adb.c byaddr.c + cache.c callbacks.c compress.c \ + db.c dbiterator.c dbtable.c diff.c dispatch.c \ + dlz.c dns64.c dnssec.c ds.c forward.c iptable.c journal.c \ +- keydata.c keytable.c lib.c log.c lookup.c \ ++ dynamic_db.c keydata.c keytable.c lib.c log.c lookup.c \ + master.c masterdump.c message.c \ + name.c ncache.c nsec.c nsec3.c order.c peer.c portlist.c \ + rbt.c rbtdb.c rbtdb64.c rcode.c rdata.c rdatalist.c \ +@@ -118,6 +118,11 @@ version.@O@: version.c + -DLIBAGE=${LIBAGE} \ + -c ${srcdir}/version.c + ++dynamic_db.@O@: dynamic_db.c ++ ${LIBTOOL_MODE_COMPILE} ${CC} ${ALL_CFLAGS} \ ++ -DDYNDB_LIBDIR="@libdir@/bind/" \ ++ -c ${srcdir}/dynamic_db.c ++ + libdns.@SA@: ${OBJS} + ${AR} ${ARFLAGS} $@ ${OBJS} + ${RANLIB} $@ +diff -up bind-9.8.1rc1/lib/isccfg/namedconf.c.dyndb bind-9.8.1rc1/lib/isccfg/namedconf.c +--- bind-9.8.1rc1/lib/isccfg/namedconf.c.dyndb 2011-05-23 22:56:11.000000000 +0200 ++++ bind-9.8.1rc1/lib/isccfg/namedconf.c 2011-08-31 14:25:02.253088456 +0200 +@@ -89,6 +89,7 @@ static cfg_type_t cfg_type_controls; + static cfg_type_t cfg_type_controls_sockaddr; + static cfg_type_t cfg_type_destinationlist; + static cfg_type_t cfg_type_dialuptype; ++static cfg_type_t cfg_type_dynamic_db; + static cfg_type_t cfg_type_ixfrdifftype; + static cfg_type_t cfg_type_key; + static cfg_type_t cfg_type_logfile; +@@ -860,6 +861,7 @@ namedconf_or_view_clauses[] = { + { "zone", &cfg_type_zone, CFG_CLAUSEFLAG_MULTI }, + /* only 1 DLZ per view allowed */ + { "dlz", &cfg_type_dynamically_loadable_zones, 0 }, ++ { "dynamic-db", &cfg_type_dynamic_db, CFG_CLAUSEFLAG_MULTI }, + { "server", &cfg_type_server, CFG_CLAUSEFLAG_MULTI }, + { "trusted-keys", &cfg_type_dnsseckeys, CFG_CLAUSEFLAG_MULTI }, + { "managed-keys", &cfg_type_managedkeys, CFG_CLAUSEFLAG_MULTI }, +@@ -1860,6 +1862,40 @@ static cfg_type_t cfg_type_dialuptype = + &cfg_rep_string, dialup_enums + }; + ++/* ++ * Dynamic database clauses. ++ */ ++ ++static cfg_clausedef_t ++dynamic_db_clauses[] = { ++ { "library", &cfg_type_qstring, 0 }, ++ { "arg", &cfg_type_qstring, CFG_CLAUSEFLAG_MULTI }, ++ { NULL, NULL, 0 } ++}; ++ ++static cfg_clausedef_t * ++dynamic_db_clausesets[] = { ++ dynamic_db_clauses, ++ NULL ++}; ++ ++static cfg_type_t cfg_type_dynamic_db_opts = { ++ "dynamically_loadable_zones_opts", cfg_parse_map, ++ cfg_print_map, cfg_doc_map, &cfg_rep_map, ++ dynamic_db_clausesets ++}; ++ ++static cfg_tuplefielddef_t dynamic_db_fields[] = { ++ { "name", &cfg_type_astring, 0 }, ++ { "options", &cfg_type_dynamic_db_opts, 0 }, ++ { NULL, NULL, 0 } ++}; ++ ++static cfg_type_t cfg_type_dynamic_db = { ++ "dynamic_db", cfg_parse_tuple, cfg_print_tuple, cfg_doc_tuple, ++ &cfg_rep_tuple, dynamic_db_fields ++}; ++ + static const char *notify_enums[] = { "explicit", "master-only", NULL }; + static isc_result_t + parse_notify_type(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { diff --git a/bind/patches/bind-96-libtool2.patch b/bind/patches/bind-96-libtool2.patch new file mode 100644 index 0000000..8ceba2f --- /dev/null +++ b/bind/patches/bind-96-libtool2.patch @@ -0,0 +1,13 @@ +diff -up bind-9.6.0b1/configure.in.libtool2 bind-9.6.0b1/configure.in +--- bind-9.6.0b1/configure.in.libtool2 2008-11-24 13:05:37.000000000 +0100 ++++ bind-9.6.0b1/configure.in 2008-11-24 13:05:56.000000000 +0100 +@@ -27,6 +27,8 @@ AC_CONFIG_SUBDIRS(lib/bind) + + AC_CONFIG_HEADER(config.h) + ++AC_CONFIG_MACRO_DIR([m4]) ++ + AC_CANONICAL_HOST + + AC_PROG_MAKE_SET +diff -up bind-9.6.0b1/Makefile.in.libtool2 bind-9.6.0b1/Makefile.in diff --git a/bind/patches/bind-nonexec.patch b/bind/patches/bind-nonexec.patch new file mode 100644 index 0000000..780ffed --- /dev/null +++ b/bind/patches/bind-nonexec.patch @@ -0,0 +1,72 @@ +diff -up bind-9.7.0rc2/lib/bind9/Makefile.in.nonexec bind-9.7.0rc2/lib/bind9/Makefile.in +--- bind-9.7.0rc2/lib/bind9/Makefile.in.nonexec 2009-12-06 00:31:40.000000000 +0100 ++++ bind-9.7.0rc2/lib/bind9/Makefile.in 2010-01-28 12:13:33.406696161 +0100 +@@ -78,7 +78,7 @@ installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libbind9.@A@ ${DESTDIR}${libdir} ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libbind9.@A@ ${DESTDIR}${libdir} + + clean distclean:: + rm -f libbind9.@A@ timestamp +diff -up bind-9.7.0rc2/lib/dns/Makefile.in.nonexec bind-9.7.0rc2/lib/dns/Makefile.in +--- bind-9.7.0rc2/lib/dns/Makefile.in.nonexec 2009-12-06 00:31:40.000000000 +0100 ++++ bind-9.7.0rc2/lib/dns/Makefile.in 2010-01-28 12:13:33.406696161 +0100 +@@ -131,7 +131,7 @@ installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libdns.@A@ ${DESTDIR}${libdir} ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libdns.@A@ ${DESTDIR}${libdir} + + clean distclean:: + rm -f libdns.@A@ timestamp +diff -up bind-9.7.0rc2/lib/isccc/Makefile.in.nonexec bind-9.7.0rc2/lib/isccc/Makefile.in +--- bind-9.7.0rc2/lib/isccc/Makefile.in.nonexec 2009-12-06 00:31:41.000000000 +0100 ++++ bind-9.7.0rc2/lib/isccc/Makefile.in 2010-01-28 12:13:33.406696161 +0100 +@@ -80,7 +80,7 @@ installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libisccc.@A@ ${DESTDIR}${libdir} ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libisccc.@A@ ${DESTDIR}${libdir} + + clean distclean:: + rm -f libisccc.@A@ timestamp +diff -up bind-9.7.0rc2/lib/isccfg/Makefile.in.nonexec bind-9.7.0rc2/lib/isccfg/Makefile.in +--- bind-9.7.0rc2/lib/isccfg/Makefile.in.nonexec 2009-12-06 00:31:41.000000000 +0100 ++++ bind-9.7.0rc2/lib/isccfg/Makefile.in 2010-01-28 12:13:33.406696161 +0100 +@@ -77,7 +77,7 @@ installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libisccfg.@A@ ${DESTDIR}${libdir} ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libisccfg.@A@ ${DESTDIR}${libdir} + + clean distclean:: + rm -f libisccfg.@A@ timestamp +diff -up bind-9.7.0rc2/lib/isc/Makefile.in.nonexec bind-9.7.0rc2/lib/isc/Makefile.in +--- bind-9.7.0rc2/lib/isc/Makefile.in.nonexec 2009-12-18 05:09:55.000000000 +0100 ++++ bind-9.7.0rc2/lib/isc/Makefile.in 2010-01-28 12:13:53.566696766 +0100 +@@ -121,7 +121,7 @@ installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libisc.@A@ ${DESTDIR}${libdir} ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libisc.@A@ ${DESTDIR}${libdir} + + clean distclean:: + rm -f libisc.@A@ libisc-nosymtbl.@A@ libisc.la \ +diff -up bind-9.7.0rc2/lib/lwres/Makefile.in.nonexec bind-9.7.0rc2/lib/lwres/Makefile.in +--- bind-9.7.0rc2/lib/lwres/Makefile.in.nonexec 2007-06-20 01:47:22.000000000 +0200 ++++ bind-9.7.0rc2/lib/lwres/Makefile.in 2010-01-28 12:13:33.406696161 +0100 +@@ -78,7 +78,7 @@ installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} liblwres.@A@ ${DESTDIR}${libdir} ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} liblwres.@A@ ${DESTDIR}${libdir} + + clean distclean:: + rm -f liblwres.@A@ liblwres.la timestamp diff --git a/bind/patches/bind93-rh490837.patch0 b/bind/patches/bind93-rh490837.patch0 new file mode 100644 index 0000000..230d7a7 --- /dev/null +++ b/bind/patches/bind93-rh490837.patch0 @@ -0,0 +1,95 @@ +? patch +? lib/isc/lex.c.rh490837 +Index: lib/isc/lex.c +=================================================================== +RCS file: /var/snap/bind9/lib/isc/lex.c,v +retrieving revision 1.86 +diff -p -u -r1.86 lex.c +--- lib/isc/lex.c 17 Sep 2007 09:56:29 -0000 1.86 ++++ lib/isc/lex.c 6 Apr 2009 13:24:15 -0000 +@@ -425,17 +425,14 @@ isc_lex_gettoken(isc_lex_t *lex, unsigne + if (source->is_file) { + stream = source->input; + +-#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED) +- c = getc_unlocked(stream); +-#else +- c = getc(stream); +-#endif +- if (c == EOF) { +- if (ferror(stream)) { +- source->result = ISC_R_IOERROR; +- result = source->result; ++ result = isc_stdio_fgetc(stream, &c); ++ ++ if (result != ISC_R_SUCCESS) { ++ if (result != ISC_R_EOF) { ++ source->result = result; + goto done; + } ++ + source->at_eof = ISC_TRUE; + } + } else { +Index: lib/isc/include/isc/stdio.h +=================================================================== +RCS file: /var/snap/bind9/lib/isc/include/isc/stdio.h,v +retrieving revision 1.13 +diff -p -u -r1.13 stdio.h +--- lib/isc/include/isc/stdio.h 19 Jun 2007 23:47:18 -0000 1.13 ++++ lib/isc/include/isc/stdio.h 6 Apr 2009 13:24:15 -0000 +@@ -72,6 +72,9 @@ isc_stdio_sync(FILE *f); + * direct counterpart in the stdio library. + */ + ++isc_result_t ++isc_stdio_fgetc(FILE *f, int *ret); ++ + ISC_LANG_ENDDECLS + + #endif /* ISC_STDIO_H */ +Index: lib/isc/unix/errno2result.c +=================================================================== +RCS file: /var/snap/bind9/lib/isc/unix/errno2result.c,v +retrieving revision 1.17 +diff -p -u -r1.17 errno2result.c +--- lib/isc/unix/errno2result.c 19 Jun 2007 23:47:18 -0000 1.17 ++++ lib/isc/unix/errno2result.c 6 Apr 2009 13:24:15 -0000 +@@ -43,6 +43,7 @@ isc__errno2result(int posixerrno) { + case EINVAL: /* XXX sometimes this is not for files */ + case ENAMETOOLONG: + case EBADF: ++ case EISDIR: + return (ISC_R_INVALIDFILE); + case ENOENT: + return (ISC_R_FILENOTFOUND); +Index: lib/isc/unix/stdio.c +=================================================================== +RCS file: /var/snap/bind9/lib/isc/unix/stdio.c,v +retrieving revision 1.8 +diff -p -u -r1.8 stdio.c +--- lib/isc/unix/stdio.c 19 Jun 2007 23:47:18 -0000 1.8 ++++ lib/isc/unix/stdio.c 6 Apr 2009 13:24:15 -0000 +@@ -115,3 +115,22 @@ isc_stdio_sync(FILE *f) { + return (isc__errno2result(errno)); + } + ++isc_result_t ++isc_stdio_fgetc(FILE *f, int *ret) { ++ int r; ++ isc_result_t result = ISC_R_SUCCESS; ++ ++#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETCUNLOCKED) ++ r = fgetc_unlocked(f); ++#else ++ r = fgets(f); ++#endif ++ ++ if (r == EOF) ++ result = ferror(f) ? isc__errno2result(errno) : ISC_R_EOF; ++ ++ *ret = r; ++ ++ return result; ++} ++ diff --git a/bind/patches/bind95-rh461409.patch b/bind/patches/bind95-rh461409.patch new file mode 100644 index 0000000..8c0c772 --- /dev/null +++ b/bind/patches/bind95-rh461409.patch @@ -0,0 +1,19 @@ +diff -up bind-9.5.1b1/bin/dig/dighost.c.rh461409 bind-9.5.1b1/bin/dig/dighost.c +--- bind-9.5.1b1/bin/dig/dighost.c.rh461409 2008-09-16 14:04:03.000000000 +0200 ++++ bind-9.5.1b1/bin/dig/dighost.c 2008-09-16 14:06:06.000000000 +0200 +@@ -3665,6 +3665,15 @@ output_filter (isc_buffer_t *buffer, uns + (void) strcpy (tmp1, tmp2); + free (tmp2); + ++ tmp2 = stringprep_utf8_to_locale (tmp1); ++ if (tmp2 == NULL) { ++ debug ("output_filter: stringprep_utf8_to_locale failed"); ++ return ISC_R_SUCCESS; ++ } ++ ++ (void) strcpy (tmp1, tmp2); ++ free (tmp2); ++ + tolen = strlen (tmp1); + if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') + tolen--; diff --git a/bind/patches/bind97-dist-pkcs11.patch b/bind/patches/bind97-dist-pkcs11.patch new file mode 100644 index 0000000..cf8c9f0 --- /dev/null +++ b/bind/patches/bind97-dist-pkcs11.patch @@ -0,0 +1,22 @@ +diff -up bind-9.7.0b1/configure.in.dist-pkcs11 bind-9.7.0b1/configure.in +--- bind-9.7.0b1/configure.in.dist-pkcs11 2009-11-03 11:37:25.481430279 +0100 ++++ bind-9.7.0b1/configure.in 2009-11-03 11:41:04.573930858 +0100 +@@ -721,15 +721,16 @@ AC_ARG_WITH(pkcs11, + case "$use_pkcs11" in + no|'') + AC_MSG_RESULT(disabled) +- USE_PKCS11='' + PKCS11_TOOLS='' + ;; + yes|*) + AC_MSG_RESULT(using OpenSSL with PKCS11 support) +- USE_PKCS11='-DUSE_PKCS11' + PKCS11_TOOLS=pkcs11 + ;; + esac ++# We don't want to automatically load engine because it needs to have openct, ++# opencryptoki and friends installed. ++USE_PKCS11='' + AC_SUBST(USE_PKCS11) + AC_SUBST(PKCS11_TOOLS) + diff --git a/bind/patches/bind97-exportlib.patch b/bind/patches/bind97-exportlib.patch new file mode 100644 index 0000000..1f5aa20 --- /dev/null +++ b/bind/patches/bind97-exportlib.patch @@ -0,0 +1,255 @@ +diff -up bind-9.7.2-P2/isc-config.sh.in.exportlib bind-9.7.2-P2/isc-config.sh.in +--- bind-9.7.2-P2/isc-config.sh.in.exportlib 2007-06-20 01:46:59.000000000 +0200 ++++ bind-9.7.2-P2/isc-config.sh.in 2010-10-20 14:05:25.423861548 +0200 +@@ -20,6 +20,8 @@ + prefix=@prefix@ + exec_prefix=@exec_prefix@ + exec_prefix_set= ++libdir=@libdir@ ++includedir=@includedir@ + + usage() + { +@@ -115,14 +117,14 @@ if test x"$echo_exec_prefix" = x"true" ; + echo $exec_prefix + fi + if test x"$echo_cflags" = x"true"; then +- includes="-I${exec_prefix}/include" ++ includes="-I${includedir}" + if test x"$libisc" = x"true"; then + includes="$includes @ALWAYS_DEFINES@ @STD_CINCLUDES@ @STD_CDEFINES@ @CCOPT@" + fi + echo $includes + fi + if test x"$echo_libs" = x"true"; then +- libs=-L${exec_prefix}/lib ++ libs="-L${libdir}" + if test x"$liblwres" = x"true" ; then + libs="$libs -llwres" + fi +diff -up bind-9.7.2-P2/lib/export/dns/Makefile.in.exportlib bind-9.7.2-P2/lib/export/dns/Makefile.in +--- bind-9.7.2-P2/lib/export/dns/Makefile.in.exportlib 2010-06-10 01:49:43.000000000 +0200 ++++ bind-9.7.2-P2/lib/export/dns/Makefile.in 2010-10-20 14:08:58.123772859 +0200 +@@ -35,9 +35,9 @@ CDEFINES = -DUSE_MD5 @USE_OPENSSL@ @USE_ + + CWARNINGS = + +-ISCLIBS = ../isc/libisc.@A@ ++ISCLIBS = ../isc/libisc-export.@A@ + +-ISCDEPLIBS = ../isc/libisc.@A@ ++ISCDEPLIBS = ../isc/libisc-export.@A@ + + LIBS = @LIBS@ + +@@ -114,29 +114,29 @@ version.@O@: ${srcdir}/version.c + -DLIBAGE=${LIBAGE} \ + -c ${srcdir}/version.c + +-libdns.@SA@: ${OBJS} ++libdns-export.@SA@: ${OBJS} + ${AR} ${ARFLAGS} $@ ${OBJS} + ${RANLIB} $@ + +-libdns.la: ${OBJS} ++libdns-export.la: ${OBJS} + ${LIBTOOL_MODE_LINK} \ +- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libdns.la \ ++ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libdns-export.la \ + -rpath ${export_libdir} \ + -version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \ + ${OBJS} ${ISCLIBS} @DNS_CRYPTO_LIBS@ ${LIBS} + +-timestamp: libdns.@A@ ++timestamp: libdns-export.@A@ + touch timestamp + + installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${export_libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libdns.@A@ \ ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libdns-export.@A@ \ + ${DESTDIR}${export_libdir}/ + + clean distclean:: +- rm -f libdns.@A@ timestamp ++ rm -f libdns-export.@A@ timestamp + rm -f gen code.h include/dns/enumtype.h include/dns/enumclass.h + rm -f include/dns/rdatastruct.h + +diff -up bind-9.7.2-P2/lib/export/irs/Makefile.in.exportlib bind-9.7.2-P2/lib/export/irs/Makefile.in +--- bind-9.7.2-P2/lib/export/irs/Makefile.in.exportlib 2009-12-06 00:31:40.000000000 +0100 ++++ bind-9.7.2-P2/lib/export/irs/Makefile.in 2010-10-20 14:10:39.893717488 +0200 +@@ -42,9 +42,9 @@ SRCS = context.c \ + gai_sterror.c getaddrinfo.c getnameinfo.c \ + resconf.c + +-ISCLIBS = ../isc/libisc.@A@ +-DNSLIBS = ../dns/libdns.@A@ +-ISCCFGLIBS = ../isccfg/libisccfg.@A@ ++ISCLIBS = ../isc/libisc-export.@A@ ++DNSLIBS = ../dns/libdns-export.@A@ ++ISCCFGLIBS = ../isccfg/libisccfg-export.@A@ + + LIBS = @LIBS@ + +@@ -61,26 +61,26 @@ version.@O@: ${srcdir}/version.c + -DLIBAGE=${LIBAGE} \ + -c ${srcdir}/version.c + +-libirs.@SA@: ${OBJS} version.@O@ ++libirs-export.@SA@: ${OBJS} version.@O@ + ${AR} ${ARFLAGS} $@ ${OBJS} version.@O@ + ${RANLIB} $@ + +-libirs.la: ${OBJS} version.@O@ ++libirs-export.la: ${OBJS} version.@O@ + ${LIBTOOL_MODE_LINK} \ +- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libirs.la \ ++ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libirs-export.la \ + -rpath ${export_libdir} \ + -version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \ + ${OBJS} version.@O@ ${LIBS} ${ISCCFGLIBS} ${DNSLIBS} ${ISCLIBS} + +-timestamp: libirs.@A@ ++timestamp: libirs-export.@A@ + touch timestamp + + installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${export_libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libirs.@A@ \ ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libirs-export.@A@ \ + ${DESTDIR}${export_libdir}/ + + clean distclean:: +- rm -f libirs.@A@ libirs.la timestamp ++ rm -f libirs-export.@A@ libirs-export.la timestamp +diff -up bind-9.7.2-P2/lib/export/isccfg/Makefile.in.exportlib bind-9.7.2-P2/lib/export/isccfg/Makefile.in +--- bind-9.7.2-P2/lib/export/isccfg/Makefile.in.exportlib 2009-12-06 00:31:41.000000000 +0100 ++++ bind-9.7.2-P2/lib/export/isccfg/Makefile.in 2010-10-20 14:10:14.593741247 +0200 +@@ -30,11 +30,11 @@ CINCLUDES = -I. ${DNS_INCLUDES} -I${expo + CDEFINES = + CWARNINGS = + +-ISCLIBS = ../isc/libisc.@A@ +-DNSLIBS = ../dns/libdns.@A@ ++ISCLIBS = ../isc/libisc-export.@A@ ++DNSLIBS = ../dns/libdns-export.@A@ + + ISCDEPLIBS = ../../lib/isc/libisc.@A@ +-ISCCFGDEPLIBS = libisccfg.@A@ ++ISCCFGDEPLIBS = libisccfg-export.@A@ + + LIBS = @LIBS@ + +@@ -58,26 +58,26 @@ version.@O@: ${srcdir}/version.c + -DLIBAGE=${LIBAGE} \ + -c ${srcdir}/version.c + +-libisccfg.@SA@: ${OBJS} ++libisccfg-export.@SA@: ${OBJS} + ${AR} ${ARFLAGS} $@ ${OBJS} + ${RANLIB} $@ + +-libisccfg.la: ${OBJS} ++libisccfg-export.la: ${OBJS} + ${LIBTOOL_MODE_LINK} \ +- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisccfg.la \ ++ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisccfg-export.la \ + -rpath ${export_libdir} \ + -version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \ + ${OBJS} ${LIBS} ${DNSLIBS} ${ISCLIBS} + +-timestamp: libisccfg.@A@ ++timestamp: libisccfg-export.@A@ + touch timestamp + + installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${export_libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libisccfg.@A@ \ ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libisccfg-export.@A@ \ + ${DESTDIR}${export_libdir}/ + + clean distclean:: +- rm -f libisccfg.@A@ timestamp ++ rm -f libisccfg-export.@A@ timestamp +diff -up bind-9.7.2-P2/lib/export/isc/Makefile.in.exportlib bind-9.7.2-P2/lib/export/isc/Makefile.in +--- bind-9.7.2-P2/lib/export/isc/Makefile.in.exportlib 2010-06-10 01:49:43.000000000 +0200 ++++ bind-9.7.2-P2/lib/export/isc/Makefile.in 2010-10-20 14:05:25.433861543 +0200 +@@ -101,6 +101,10 @@ SRCS = @ISC_EXTRA_SRCS@ \ + + LIBS = @LIBS@ + ++# Note: the order of SUBDIRS is important. ++# Attempt to disable parallel processing. ++.NOTPARALLEL: ++.NO_PARALLEL: + SUBDIRS = include unix nls @ISC_THREAD_DIR@ + TARGETS = timestamp + +@@ -114,26 +118,26 @@ version.@O@: ${srcdir}/version.c + -DLIBAGE=${LIBAGE} \ + -c ${srcdir}/version.c + +-libisc.@SA@: ${OBJS} ++libisc-export.@SA@: ${OBJS} + ${AR} ${ARFLAGS} $@ ${OBJS} + ${RANLIB} $@ + +-libisc.la: ${OBJS} ++libisc-export.la: ${OBJS} + ${LIBTOOL_MODE_LINK} \ +- ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisc.la \ ++ ${CC} ${ALL_CFLAGS} ${LDFLAGS} -o libisc-export.la \ + -rpath ${export_libdir} \ + -version-info ${LIBINTERFACE}:${LIBREVISION}:${LIBAGE} \ + ${OBJS} ${LIBS} + +-timestamp: libisc.@A@ ++timestamp: libisc-export.@A@ + touch timestamp + + installdirs: + $(SHELL) ${top_srcdir}/mkinstalldirs ${DESTDIR}${export_libdir} + + install:: timestamp installdirs +- ${LIBTOOL_MODE_INSTALL} ${INSTALL_DATA} libisc.@A@ \ ++ ${LIBTOOL_MODE_INSTALL} ${INSTALL_PROGRAM} libisc-export.@A@ \ + ${DESTDIR}${export_libdir} + + clean distclean:: +- rm -f libisc.@A@ libisc.la timestamp ++ rm -f libisc-export.@A@ libisc-export.la timestamp +diff -up bind-9.7.2-P2/lib/export/samples/Makefile.in.exportlib bind-9.7.2-P2/lib/export/samples/Makefile.in +--- bind-9.7.2-P2/lib/export/samples/Makefile.in.exportlib 2009-12-06 00:31:41.000000000 +0100 ++++ bind-9.7.2-P2/lib/export/samples/Makefile.in 2010-10-20 14:05:25.433861543 +0200 +@@ -30,15 +30,15 @@ CINCLUDES = -I${srcdir}/include -I../dns + CDEFINES = + CWARNINGS = + +-DNSLIBS = ../dns/libdns.@A@ @DNS_CRYPTO_LIBS@ +-ISCLIBS = ../isc/libisc.@A@ +-ISCCFGLIBS = ../isccfg/libisccfg.@A@ +-IRSLIBS = ../irs/libirs.@A@ +- +-DNSDEPLIBS = ../dns/libdns.@A@ +-ISCDEPLIBS = ../isc/libisc.@A@ +-ISCCFGDEPLIBS = ../isccfg/libisccfg.@A@ +-IRSDEPLIBS = ../irs/libirs.@A@ ++DNSLIBS = ../dns/libdns-export.@A@ @DNS_CRYPTO_LIBS@ ++ISCLIBS = ../isc/libisc-export.@A@ ++ISCCFGLIBS = ../isccfg/libisccfg-export.@A@ ++IRSLIBS = ../irs/libirs-export.@A@ ++ ++DNSDEPLIBS = ../dns/libdns-export.@A@ ++ISCDEPLIBS = ../isc/libisc-export.@A@ ++ISCCFGDEPLIBS = ../isccfg/libisccfg-export.@A@ ++IRSDEPLIBS = ../irs/libirs-export.@A@ + + DEPLIBS = ${DNSDEPLIBS} ${ISCCFGDEPLIBS} ${ISCDEPLIBS} + diff --git a/bind/patches/bind97-rh478718.patch b/bind/patches/bind97-rh478718.patch new file mode 100644 index 0000000..c6ea596 --- /dev/null +++ b/bind/patches/bind97-rh478718.patch @@ -0,0 +1,30 @@ +diff -up bind-9.7.0/configure.in.rh478718 bind-9.7.0/configure.in +--- bind-9.7.0/configure.in.rh478718 2010-03-01 14:50:02.331207076 +0100 ++++ bind-9.7.0/configure.in 2010-03-01 14:50:21.501207488 +0100 +@@ -2540,6 +2540,10 @@ main() { + AC_MSG_RESULT($arch) + fi + ++if test ! "$arch" = "x86_64" -a "$have_xaddq" = "yes"; then ++ AC_MSG_ERROR([XADDQ present but disabled by Fedora patch!]) ++fi ++ + if test "$have_atomic" = "yes"; then + AC_MSG_CHECKING([compiler support for inline assembly code]) + +diff -up bind-9.7.0/lib/isc/include/isc/platform.h.in.rh478718 bind-9.7.0/lib/isc/include/isc/platform.h.in +--- bind-9.7.0/lib/isc/include/isc/platform.h.in.rh478718 2010-03-01 14:50:31.421207522 +0100 ++++ bind-9.7.0/lib/isc/include/isc/platform.h.in 2010-03-01 14:50:40.313707286 +0100 +@@ -255,7 +255,11 @@ + * If the "xaddq" operation (64bit xadd) is available on this architecture, + * ISC_PLATFORM_HAVEXADDQ will be defined. + */ +-@ISC_PLATFORM_HAVEXADDQ@ ++#ifdef __x86_64__ ++#define ISC_PLATFORM_HAVEXADDQ 1 ++#else ++#undef ISC_PLATFORM_HAVEXADDQ ++#endif + + /* + * If the "atomic swap" operation is available on this architecture, diff --git a/bind/patches/bind97-rh570851.patch b/bind/patches/bind97-rh570851.patch new file mode 100644 index 0000000..e24b94c --- /dev/null +++ b/bind/patches/bind97-rh570851.patch @@ -0,0 +1,153 @@ +diff -up bind-9.7.2b1/bin/dig/dighost.c.rh570851 bind-9.7.2b1/bin/dig/dighost.c +--- bind-9.7.2b1/bin/dig/dighost.c.rh570851 2010-08-10 12:55:14.219403986 +0200 ++++ bind-9.7.2b1/bin/dig/dighost.c 2010-08-10 12:56:40.716015777 +0200 +@@ -126,7 +126,8 @@ isc_boolean_t + usesearch = ISC_FALSE, + showsearch = ISC_FALSE, + qr = ISC_FALSE, +- is_dst_up = ISC_FALSE; ++ is_dst_up = ISC_FALSE, ++ verbose = ISC_FALSE; + in_port_t port = 53; + unsigned int timeout = 0; + unsigned int extrabytes; +@@ -1240,10 +1241,24 @@ setup_system(void) { + } + } + ++ if (lwconf->resdebug) { ++ verbose = ISC_TRUE; ++ debug("verbose is on"); ++ } + if (ndots == -1) { + ndots = lwconf->ndots; + debug("ndots is %d.", ndots); + } ++ if (lwconf->attempts) { ++ tries = lwconf->attempts + 1; ++ if (tries < 2) ++ tries = 2; ++ debug("tries is %d.", tries); ++ } ++ if (lwconf->timeout) { ++ timeout = lwconf->timeout; ++ debug("timeout is %d.", timeout); ++ } + + /* If user doesn't specify server use nameservers from resolv.conf. */ + if (ISC_LIST_EMPTY(server_list)) +diff -up bind-9.7.2b1/bin/dig/host.c.rh570851 bind-9.7.2b1/bin/dig/host.c +--- bind-9.7.2b1/bin/dig/host.c.rh570851 2010-08-10 12:57:16.032758098 +0200 ++++ bind-9.7.2b1/bin/dig/host.c 2010-08-10 13:02:12.848559845 +0200 +@@ -659,6 +659,7 @@ parse_args(isc_boolean_t is_batchfile, i + + lookup->servfail_stops = ISC_FALSE; + lookup->comments = ISC_FALSE; ++ short_form = !verbose; + + while ((c = isc_commandline_parse(argc, argv, optstring)) != -1) { + switch (c) { +@@ -869,8 +870,8 @@ main(int argc, char **argv) { + result = isc_app_start(); + check_result(result, "isc_app_start"); + setup_libs(); +- parse_args(ISC_FALSE, argc, argv); + setup_system(); ++ parse_args(ISC_FALSE, argc, argv); + result = isc_app_onrun(mctx, global_task, onrun_callback, NULL); + check_result(result, "isc_app_onrun"); + isc_app_run(); +diff -up bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851 bind-9.7.2b1/bin/dig/include/dig/dig.h +--- bind-9.7.2b1/bin/dig/include/dig/dig.h.rh570851 2010-08-10 13:02:32.722244088 +0200 ++++ bind-9.7.2b1/bin/dig/include/dig/dig.h 2010-08-10 13:02:48.465158159 +0200 +@@ -278,6 +278,7 @@ extern isc_boolean_t debugging, memdebug + extern char *progname; + extern int tries; + extern int fatalexit; ++extern isc_boolean_t verbose; + #ifdef WITH_IDN + extern int idnoptions; + #endif +diff -up bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851 bind-9.7.2b1/lib/lwres/include/lwres/lwres.h +--- bind-9.7.2b1/lib/lwres/include/lwres/lwres.h.rh570851 2010-08-10 13:04:40.465780506 +0200 ++++ bind-9.7.2b1/lib/lwres/include/lwres/lwres.h 2010-08-10 13:05:57.559867830 +0200 +@@ -243,6 +243,8 @@ typedef struct { + lwres_uint8_t resdebug; /*%< non-zero if 'options debug' set */ + lwres_uint8_t ndots; /*%< set to n in 'options ndots:n' */ + lwres_uint8_t no_tld_query; /*%< non-zero if 'options no_tld_query' */ ++ lwres_int32_t attempts; /*%< set to n in 'options attempts:n' */ ++ lwres_int32_t timeout; /*%< set to n in 'options timeout:n' */ + } lwres_conf_t; + + #define LWRES_ADDRTYPE_V4 0x00000001U /*%< ipv4 */ +diff -up bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 bind-9.7.2b1/lib/lwres/lwconfig.c +--- bind-9.7.2b1/lib/lwres/lwconfig.c.rh570851 2010-08-10 13:06:08.051778429 +0200 ++++ bind-9.7.2b1/lib/lwres/lwconfig.c 2010-08-10 13:09:53.972555776 +0200 +@@ -237,6 +237,8 @@ lwres_conf_init(lwres_context_t *ctx) { + confdata->resdebug = 0; + confdata->ndots = 1; + confdata->no_tld_query = 0; ++ confdata->attempts = 0; ++ confdata->timeout = 0; + + for (i = 0; i < LWRES_CONFMAXNAMESERVERS; i++) + lwres_resetaddr(&confdata->nameservers[i]); +@@ -289,6 +291,8 @@ lwres_conf_clear(lwres_context_t *ctx) { + confdata->resdebug = 0; + confdata->ndots = 1; + confdata->no_tld_query = 0; ++ confdata->attempts = 0; ++ confdata->timeout = 0; + } + + static lwres_result_t +@@ -530,6 +534,8 @@ static lwres_result_t + lwres_conf_parseoption(lwres_context_t *ctx, FILE *fp) { + int delim; + long ndots; ++ long attempts; ++ long timeout; + char *p; + char word[LWRES_CONFMAXLINELEN]; + lwres_conf_t *confdata; +@@ -546,6 +552,8 @@ lwres_conf_parseoption(lwres_context_t * + confdata->resdebug = 1; + } else if (strcmp("no_tld_query", word) == 0) { + confdata->no_tld_query = 1; ++ } else if (strcmp("debug", word) == 0) { ++ confdata->resdebug = 1; + } else if (strncmp("ndots:", word, 6) == 0) { + ndots = strtol(word + 6, &p, 10); + if (*p != '\0') /* Bad string. */ +@@ -553,6 +561,18 @@ lwres_conf_parseoption(lwres_context_t * + if (ndots < 0 || ndots > 0xff) /* Out of range. */ + return (LWRES_R_FAILURE); + confdata->ndots = (lwres_uint8_t)ndots; ++ } else if (strncmp("timeout:", word, 8) == 0) { ++ timeout = strtol(word + 8, &p, 10); ++ if (*p != '\0') /* Bad string. */ ++ return (LWRES_R_FAILURE); ++ confdata->timeout = (lwres_int32_t)timeout; ++ } else if (strncmp("attempts:", word, 9) == 0) { ++ attempts = strtol(word + 9, &p, 10); ++ if (*p != '\0') /* Bad string. */ ++ return (LWRES_R_FAILURE); ++ if (attempts < 0) /* Out of range. */ ++ return (LWRES_R_FAILURE); ++ confdata->attempts = (lwres_int32_t)attempts; + } + + if (delim == EOF || delim == '\n') +@@ -716,6 +736,12 @@ lwres_conf_print(lwres_context_t *ctx, F + if (confdata->no_tld_query) + fprintf(fp, "options no_tld_query\n"); + ++ if (confdata->attempts) ++ fprintf(fp, "options attempts:%d\n", confdata->attempts); ++ ++ if (confdata->timeout) ++ fprintf(fp, "options timeout:%d\n", confdata->timeout); ++ + return (LWRES_R_SUCCESS); + } + diff --git a/bind/patches/bind97-rh645544.patch b/bind/patches/bind97-rh645544.patch new file mode 100644 index 0000000..8b9c4e3 --- /dev/null +++ b/bind/patches/bind97-rh645544.patch @@ -0,0 +1,30 @@ +diff -up bind-9.7.2-P2/lib/dns/resolver.c.rh645544 bind-9.7.2-P2/lib/dns/resolver.c +--- bind-9.7.2-P2/lib/dns/resolver.c.rh645544 2010-11-08 14:32:12.254896255 +0100 ++++ bind-9.7.2-P2/lib/dns/resolver.c 2010-11-08 14:33:18.674869633 +0100 +@@ -1097,7 +1097,7 @@ log_edns(fetchctx_t *fctx) { + + dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf)); + isc_log_write(dns_lctx, DNS_LOGCATEGORY_EDNS_DISABLED, +- DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO, ++ DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1), + "success resolving '%s' (in '%s'?) after %s", + fctx->info, domainbuf, fctx->reason); + +@@ -3795,7 +3795,7 @@ log_lame(fetchctx_t *fctx, dns_adbaddrin + dns_name_format(&fctx->domain, domainbuf, sizeof(domainbuf)); + isc_sockaddr_format(&addrinfo->sockaddr, addrbuf, sizeof(addrbuf)); + isc_log_write(dns_lctx, DNS_LOGCATEGORY_LAME_SERVERS, +- DNS_LOGMODULE_RESOLVER, ISC_LOG_INFO, ++ DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1), + "lame server resolving '%s' (in '%s'?): %s", + namebuf, domainbuf, addrbuf); + } +@@ -3822,7 +3822,7 @@ log_formerr(fetchctx_t *fctx, const char + } + + isc_log_write(dns_lctx, DNS_LOGCATEGORY_RESOLVER, +- DNS_LOGMODULE_RESOLVER, ISC_LOG_NOTICE, ++ DNS_LOGMODULE_RESOLVER, ISC_LOG_DEBUG(1), + "DNS format error from %s resolving %s%s%s: %s", + nsbuf, fctx->info, clmsg, clbuf, msgbuf); + } diff --git a/bind/patches/bind97-rh693982.patch b/bind/patches/bind97-rh693982.patch new file mode 100644 index 0000000..57bf812 --- /dev/null +++ b/bind/patches/bind97-rh693982.patch @@ -0,0 +1,35 @@ +diff -up bind-9.7.3-P3/bin/named/server.c.rh693982 bind-9.7.3-P3/bin/named/server.c +--- bind-9.7.3-P3/bin/named/server.c.rh693982 2011-08-12 17:18:55.611978110 +0200 ++++ bind-9.7.3-P3/bin/named/server.c 2011-08-12 17:19:36.009975303 +0200 +@@ -4444,15 +4444,6 @@ load_configuration(const char *filename, + ns_os_changeuser(); + + /* +- * Check that the working directory is writable. +- */ +- if (access(".", W_OK) != 0) { +- isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, +- NS_LOGMODULE_SERVER, ISC_LOG_ERROR, +- "the working directory is not writable"); +- } +- +- /* + * Configure the logging system. + * + * Do this after changing UID to make sure that any log +@@ -4498,6 +4489,15 @@ load_configuration(const char *filename, + } + + /* ++ * Check that the working directory is writable. ++ */ ++ if (access(".", W_OK) != 0) { ++ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, ++ NS_LOGMODULE_SERVER, ISC_LOG_DEBUG(1), ++ "the working directory is not writable"); ++ } ++ ++ /* + * Set the default value of the query logging flag depending + * whether a "queries" category has been defined. This is + * a disgusting hack, but we need to do this for BIND 8 diff --git a/bind/patches/bind97-rh699951.patch b/bind/patches/bind97-rh699951.patch new file mode 100644 index 0000000..77a807f --- /dev/null +++ b/bind/patches/bind97-rh699951.patch @@ -0,0 +1,46 @@ +--- bind-9.8.0-P4/lib/dns/request.c.test 2011-08-04 19:13:34.300999355 +0200 ++++ bind-9.8.0-P4/lib/dns/request.c 2011-08-04 19:37:40.347002723 +0200 +@@ -97,6 +97,7 @@ struct dns_request { + synchronously canceled */ + #define DNS_REQUEST_F_TIMEDOUT 0x0008 /*%< canceled due to a timeout */ + #define DNS_REQUEST_F_TCP 0x0010 /*%< This request used TCP */ ++#define DNS_REQUEST_F_RESPONSE 0x0020 /*%< We got response */ + #define DNS_REQUEST_CANCELED(r) \ + (((r)->flags & DNS_REQUEST_F_CANCELED) != 0) + #define DNS_REQUEST_CONNECTING(r) \ +@@ -105,6 +106,8 @@ struct dns_request { + (((r)->flags & DNS_REQUEST_F_SENDING) != 0) + #define DNS_REQUEST_TIMEDOUT(r) \ + (((r)->flags & DNS_REQUEST_F_TIMEDOUT) != 0) ++#define DNS_REQUEST_RESPONSE(r) \ ++ (((r)->flags & DNS_REQUEST_F_RESPONSE) != 0) + + + /*** +@@ -1312,9 +1315,15 @@ req_senddone(isc_task_t *task, isc_event + + if (DNS_REQUEST_CANCELED(request)) { + /* +- * Send delayed event. ++ * Response can arrive before we proccess ++ * req_senddone which means we received cancellation ++ * request from req_response(). If we successfully ++ * fetched response, send success. Otherwise ++ * indicate failure. + */ +- if (DNS_REQUEST_TIMEDOUT(request)) ++ if (DNS_REQUEST_RESPONSE(request)) ++ send_if_done(request, ISC_R_SUCCESS); ++ else if (DNS_REQUEST_TIMEDOUT(request)) + send_if_done(request, ISC_R_TIMEDOUT); + else + send_if_done(request, ISC_R_CANCELED); +@@ -1367,6 +1376,8 @@ req_response(isc_task_t *task, isc_event + /* + * Send completion event. + */ ++ if (result == ISC_R_SUCCESS) ++ request->flags |= DNS_REQUEST_F_RESPONSE; + send_if_done(request, result); + UNLOCK(&request->requestmgr->locks[request->hash]); + } diff --git a/bind/patches/bind97-rh700097.patch b/bind/patches/bind97-rh700097.patch new file mode 100644 index 0000000..60db2af --- /dev/null +++ b/bind/patches/bind97-rh700097.patch @@ -0,0 +1,11 @@ +diff -up bind-9.7.3-P3/bin/nsupdate/nsupdate.c.rh700097 bind-9.7.3-P3/bin/nsupdate/nsupdate.c +--- bind-9.7.3-P3/bin/nsupdate/nsupdate.c.rh700097 2011-08-12 16:24:18.730205763 +0200 ++++ bind-9.7.3-P3/bin/nsupdate/nsupdate.c 2011-08-12 16:24:27.833205103 +0200 +@@ -2298,6 +2298,7 @@ recvsoa(isc_task_t *task, isc_event_t *e + dns_message_destroy(&soaquery); + ddebug("Out of recvsoa"); + done_update(); ++ seenerror = ISC_TRUE; + return; + } + diff --git a/bind/patches/bind97-rh714049.patch b/bind/patches/bind97-rh714049.patch new file mode 100644 index 0000000..77ed806 --- /dev/null +++ b/bind/patches/bind97-rh714049.patch @@ -0,0 +1,160 @@ +diff -up bind-9.7.3-P3/bin/nsupdate/nsupdate.c.rh714049 bind-9.7.3-P3/bin/nsupdate/nsupdate.c +--- bind-9.7.3-P3/bin/nsupdate/nsupdate.c.rh714049 2011-08-12 14:17:39.520175003 +0200 ++++ bind-9.7.3-P3/bin/nsupdate/nsupdate.c 2011-08-12 15:11:01.812173573 +0200 +@@ -109,6 +109,13 @@ extern int h_errno; + + #define DNSDEFAULTPORT 53 + ++/* ++ * Assume that bind9_getaddresses returns IPv6 and IPv4 addrs ++ * so when master server is not reachable via IPv6 ++ * we can switch to IPv4. ++ */ ++#define MAX_SERVERADDRS 4 ++ + static isc_uint16_t dnsport = DNSDEFAULTPORT; + + #ifndef RESOLV_CONF +@@ -151,6 +158,8 @@ static isc_sockaddr_t *servers; + static int ns_inuse = 0; + static int ns_total = 0; + static isc_sockaddr_t *userserver = NULL; ++static int curserver = 0; ++static int userservers = 0; + static isc_sockaddr_t *localaddr = NULL; + static isc_sockaddr_t *serveraddr = NULL; + static isc_sockaddr_t tempaddr; +@@ -703,7 +712,8 @@ doshutdown(void) { + isc_task_detach(&global_task); + + if (userserver != NULL) +- isc_mem_put(mctx, userserver, sizeof(isc_sockaddr_t)); ++ isc_mem_put(mctx, userserver, ++ MAX_SERVERADDRS * sizeof(isc_sockaddr_t)); + + if (localaddr != NULL) + isc_mem_put(mctx, localaddr, sizeof(isc_sockaddr_t)); +@@ -914,17 +924,21 @@ setup_system(void) { + } + + static void +-get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr) { ++get_addresses(char *host, in_port_t port, isc_sockaddr_t *sockaddr, int *naddrs) { + int count; + isc_result_t result; + + isc_app_block(); +- result = bind9_getaddresses(host, port, sockaddr, 1, &count); ++ result = bind9_getaddresses(host, port, sockaddr, ++ (naddrs == NULL) ? 1 : MAX_SERVERADDRS, &count); + isc_app_unblock(); + if (result != ISC_R_SUCCESS) + fatal("couldn't get address for '%s': %s", + host, isc_result_totext(result)); +- INSIST(count == 1); ++ if (naddrs == NULL) ++ INSIST(count == 1); ++ else ++ *naddrs = count; + } + + #define PARSE_ARGS_FMT "dDML:y:ghlovk:p:rR::t:u:" +@@ -1364,12 +1378,14 @@ evaluate_server(char *cmdline) { + } + + if (userserver == NULL) { +- userserver = isc_mem_get(mctx, sizeof(isc_sockaddr_t)); ++ userserver = isc_mem_get(mctx, ++ MAX_SERVERADDRS * sizeof(isc_sockaddr_t)); + if (userserver == NULL) + fatal("out of memory"); + } + +- get_address(server, (in_port_t)port, userserver); ++ memset(userserver, 0, MAX_SERVERADDRS * sizeof(isc_sockaddr_t)); ++ get_addresses(server, (in_port_t)port, userserver, &userservers); + + return (STATUS_MORE); + } +@@ -2207,19 +2223,25 @@ recvsoa(isc_task_t *task, isc_event_t *e + + if (eresult != ISC_R_SUCCESS) { + char addrbuf[ISC_SOCKADDR_FORMATSIZE]; ++ isc_sockaddr_t *server; + + isc_sockaddr_format(addr, addrbuf, sizeof(addrbuf)); + fprintf(stderr, "; Communication with %s failed: %s\n", + addrbuf, isc_result_totext(eresult)); +- if (userserver != NULL) +- fatal("could not talk to specified name server"); +- else if (++ns_inuse >= lwconf->nsnext) ++ if (userserver != NULL) { ++ if (++curserver == MAX_SERVERADDRS) ++ fatal("could not talk to specified name server"); ++ else ++ ddebug("recvsoa: trying next server"); ++ } else if (++ns_inuse >= lwconf->nsnext) + fatal("could not talk to any default name server"); + ddebug("Destroying request [%p]", request); + dns_request_destroy(&request); + dns_message_renderreset(soaquery); + dns_message_settsigkey(soaquery, NULL); +- sendrequest(localaddr, &servers[ns_inuse], soaquery, &request); ++ server = (userserver != NULL) ? &userserver[curserver] : ++ &servers[ns_inuse]; ++ sendrequest(localaddr, server, soaquery, &request); + isc_mem_put(mctx, reqinfo, sizeof(nsu_requestinfo_t)); + isc_event_free(&event); + setzoneclass(dns_rdataclass_none); +@@ -2351,7 +2373,7 @@ recvsoa(isc_task_t *task, isc_event_t *e + } + + if (userserver != NULL) +- serveraddr = userserver; ++ serveraddr = &userserver[curserver]; + else { + char serverstr[DNS_NAME_MAXTEXT+1]; + isc_buffer_t buf; +@@ -2360,7 +2382,7 @@ recvsoa(isc_task_t *task, isc_event_t *e + result = dns_name_totext(&master, ISC_TRUE, &buf); + check_result(result, "dns_name_totext"); + serverstr[isc_buffer_usedlength(&buf)] = 0; +- get_address(serverstr, dnsport, &tempaddr); ++ get_addresses(serverstr, dnsport, &tempaddr, NULL); + serveraddr = &tempaddr; + } + dns_rdata_freestruct(&soa); +@@ -2464,9 +2486,9 @@ start_gssrequest(dns_name_t *master) + fatal("out of memory"); + } + if (userserver == NULL) +- get_address(namestr, dnsport, kserver); ++ get_addresses(namestr, dnsport, kserver, NULL); + else +- (void)memcpy(kserver, userserver, sizeof(isc_sockaddr_t)); ++ (void)memcpy(kserver, &userserver[curserver], sizeof(isc_sockaddr_t)); + + dns_fixedname_init(&fname); + servname = dns_fixedname_name(&fname); +@@ -2594,15 +2616,17 @@ recvgss(isc_task_t *task, isc_event_t *e + isc_sockaddr_format(addr, addrbuf, sizeof(addrbuf)); + fprintf(stderr, "; Communication with %s failed: %s\n", + addrbuf, isc_result_totext(eresult)); +- if (userserver != NULL) ++ if (userserver != NULL) { + fatal("could not talk to specified name server"); +- else if (++ns_inuse >= lwconf->nsnext) ++ } else if (++ns_inuse >= lwconf->nsnext) + fatal("could not talk to any default name server"); + ddebug("Destroying request [%p]", request); + dns_request_destroy(&request); + dns_message_renderreset(tsigquery); +- sendrequest(localaddr, &servers[ns_inuse], tsigquery, +- &request); ++ sendrequest(localaddr, ++ (userserver != NULL) ? &userserver[curserver] : ++ &servers[ns_inuse], ++ tsigquery, &request); + isc_mem_put(mctx, reqinfo, sizeof(nsu_gssinfo_t)); + isc_event_free(&event); + return; diff --git a/bind/patches/bind98-dlz_buildfix.patch b/bind/patches/bind98-dlz_buildfix.patch new file mode 100644 index 0000000..dc44919 --- /dev/null +++ b/bind/patches/bind98-dlz_buildfix.patch @@ -0,0 +1,25 @@ +diff -up bind-9.8.1rc1/bin/tests/system/dlzexternal/Makefile.in.dlz_buildfix bind-9.8.1rc1/bin/tests/system/dlzexternal/Makefile.in +diff -up bind-9.8.1rc1/bin/tests/system/Makefile.in.dlz_buildfix bind-9.8.1rc1/bin/tests/system/Makefile.in +--- bind-9.8.1rc1/bin/tests/system/Makefile.in.dlz_buildfix 2011-08-31 17:04:34.466423526 +0200 ++++ bind-9.8.1rc1/bin/tests/system/Makefile.in 2011-08-31 17:04:38.512423247 +0200 +@@ -21,7 +21,7 @@ top_srcdir = @top_srcdir@ + + @BIND9_MAKE_INCLUDES@ + +-SUBDIRS = dlzexternal filter-aaaa lwresd rpz tkey tsiggss ++SUBDIRS = filter-aaaa lwresd rpz tkey tsiggss + TARGETS = + + @BIND9_MAKE_RULES@ +diff -up bind-9.8.1rc1/contrib/dlz/drivers/sdlz_helper.c.dlz_buildfix bind-9.8.1rc1/contrib/dlz/drivers/sdlz_helper.c +--- bind-9.8.1rc1/contrib/dlz/drivers/sdlz_helper.c.dlz_buildfix 2010-05-14 08:29:37.000000000 +0200 ++++ bind-9.8.1rc1/contrib/dlz/drivers/sdlz_helper.c 2011-08-31 16:53:47.736468453 +0200 +@@ -50,7 +50,7 @@ + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +-#ifdef DLZ ++#ifdef CONTRIB_DLZ + + #include <config.h> + diff --git a/bind/patches/bind98-rh725741.patch b/bind/patches/bind98-rh725741.patch new file mode 100644 index 0000000..53d924d --- /dev/null +++ b/bind/patches/bind98-rh725741.patch @@ -0,0 +1,24 @@ +diff -up bind-9.8.0-P4/bin/named/main.c.rh725741 bind-9.8.0-P4/bin/named/main.c +--- bind-9.8.0-P4/bin/named/main.c.rh725741 2011-08-03 15:20:28.487516386 +0200 ++++ bind-9.8.0-P4/bin/named/main.c 2011-08-03 15:20:50.197514932 +0200 +@@ -872,8 +872,6 @@ setup(void) { + + static void + cleanup(void) { +- dns_dynamic_db_cleanup(ISC_TRUE); +- + destroy_managers(); + + ns_server_destroy(&ns_g_server); +diff -up bind-9.8.0-P4/bin/named/server.c.rh725741 bind-9.8.0-P4/bin/named/server.c +--- bind-9.8.0-P4/bin/named/server.c.rh725741 2011-08-03 15:20:42.009515447 +0200 ++++ bind-9.8.0-P4/bin/named/server.c 2011-08-03 15:21:01.878514035 +0200 +@@ -5263,6 +5263,8 @@ shutdown_server(isc_task_t *task, isc_ev + dns_view_detach(&view); + } + ++ dns_dynamic_db_cleanup(ISC_TRUE); ++ + while ((nsc = ISC_LIST_HEAD(server->cachelist)) != NULL) { + ISC_LIST_UNLINK(server->cachelist, nsc, link); + dns_cache_detach(&nsc->cache); diff --git a/bind/patches/bind98-rh735103.patch b/bind/patches/bind98-rh735103.patch new file mode 100644 index 0000000..77acfa8 --- /dev/null +++ b/bind/patches/bind98-rh735103.patch @@ -0,0 +1,40 @@ +diff -up bind-9.8.1rc1/lib/isc/unix/socket.c.rh735103 bind-9.8.1rc1/lib/isc/unix/socket.c +--- bind-9.8.1rc1/lib/isc/unix/socket.c.rh735103 2011-07-29 04:19:20.000000000 +0200 ++++ bind-9.8.1rc1/lib/isc/unix/socket.c 2011-09-07 18:49:54.100215897 +0200 +@@ -57,6 +57,20 @@ + #include <isc/util.h> + #include <isc/xml.h> + ++/* See task.c about the following definition: */ ++#ifdef BIND9 ++#ifdef ISC_PLATFORM_USETHREADS ++#define USE_WATCHER_THREAD ++#else ++#define USE_SHARED_MANAGER ++#endif /* ISC_PLATFORM_USETHREADS */ ++#else /* BIND9 */ ++#undef ISC_PLATFORM_HAVESYSUNH ++#undef ISC_PLATFORM_HAVEKQUEUE ++#undef ISC_PLATFORM_HAVEEPOLL ++#undef ISC_PLATFORM_HAVEDEVPOLL ++#endif /* BIND9 */ ++ + #ifdef ISC_PLATFORM_HAVESYSUNH + #include <sys/un.h> + #endif +@@ -76,15 +90,6 @@ + + #include "errno2result.h" + +-/* See task.c about the following definition: */ +-#ifdef BIND9 +-#ifdef ISC_PLATFORM_USETHREADS +-#define USE_WATCHER_THREAD +-#else +-#define USE_SHARED_MANAGER +-#endif /* ISC_PLATFORM_USETHREADS */ +-#endif /* BIND9 */ +- + #ifndef USE_WATCHER_THREAD + #include "socket_p.h" + #include "../task_p.h" diff --git a/bind/trusted-key.key b/bind/trusted-key.key new file mode 100644 index 0000000..ea07836 --- /dev/null +++ b/bind/trusted-key.key @@ -0,0 +1 @@ +. 3600 IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0= diff --git a/coreutils/coreutils.nm b/coreutils/coreutils.nm index a2dfed2..7686216 100644 --- a/coreutils/coreutils.nm +++ b/coreutils/coreutils.nm @@ -4,8 +4,8 @@ ###############################################################################
name = coreutils -version = 8.12 -release = 2 +version = 8.13 +release = 1
groups = Base Build System/Base url = http://www.gnu.org/software/coreutils/ @@ -13,15 +13,13 @@ license = GPLv3+ summary = A set of basic GNU tools commonly used in shell scripts.
description - These are the GNU core utilities. This package is the combination of \ + These are the GNU core utilities. This package is the combination of the old GNU fileutils, sh-utils, and textutils packages. end
source_dl = http://ftp.gnu.org/gnu/coreutils/ sources = %{thisapp}.tar.xz
-CFLAGS += -D_GNU_SOURCE=1 -fno-strict-aliasing - build requires autoconf @@ -36,10 +34,16 @@ build pam-devel end
+ CFLAGS += \ + -D_GNU_SOURCE=1 \ + -fno-strict-aliasing + configure_options += \ + --libexecdir=/usr/lib \ --enable-pam \ --enable-selinux \ --enable-largefile \ + --disable-rpath \ --enable-install-program=arch,hostname,su \ --enable-no-install-program=kill,uptime
diff --git a/coreutils/patches/coreutils-i18n.patch b/coreutils/patches/coreutils-i18n.patch index 6e10f37..9ba6bb4 100644 --- a/coreutils/patches/coreutils-i18n.patch +++ b/coreutils/patches/coreutils-i18n.patch @@ -1,6 +1,6 @@ -diff -urNp coreutils-8.10-orig/lib/linebuffer.h coreutils-8.10/lib/linebuffer.h ---- coreutils-8.10-orig/lib/linebuffer.h 2011-01-06 09:47:56.000000000 +0100 -+++ coreutils-8.10/lib/linebuffer.h 2011-02-04 20:13:23.985464731 +0100 +diff -urNp coreutils-8.13-orig/lib/linebuffer.h coreutils-8.13/lib/linebuffer.h +--- coreutils-8.13-orig/lib/linebuffer.h 2011-04-24 19:21:45.000000000 +0200 ++++ coreutils-8.13/lib/linebuffer.h 2011-09-09 10:23:14.163704760 +0200 @@ -21,6 +21,11 @@
# include <stdio.h> @@ -23,9 +23,9 @@ diff -urNp coreutils-8.10-orig/lib/linebuffer.h coreutils-8.10/lib/linebuffer.h };
/* Initialize linebuffer LINEBUFFER for use. */ -diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c ---- coreutils-8.10-orig/src/cut.c 2011-01-31 13:40:38.000000000 +0100 -+++ coreutils-8.10/src/cut.c 2011-02-04 20:13:23.988464025 +0100 +diff -urNp coreutils-8.13-orig/src/cut.c coreutils-8.13/src/cut.c +--- coreutils-8.13-orig/src/cut.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/cut.c 2011-09-09 10:23:14.165701039 +0200 @@ -28,6 +28,11 @@ #include <assert.h> #include <getopt.h> @@ -75,7 +75,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c + while (0) + +/* Get wide character on BUFPOS. BUFPOS is not included after that. -+ If byte sequence is not valid as a character, CONVFAIL is 1. Otherwise 0. */ ++ If byte sequence is not valid as a character, CONVFAIL is 1. Otherwise 0. */ +#define GET_NEXT_WC_FROM_BUFFER(WC, BUFPOS, BUFLEN, MBLENGTH, STATE, CONVFAIL) \ + do \ + { \ @@ -226,7 +226,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c }
max_range_endpoint = 0; -@@ -580,6 +662,63 @@ cut_bytes (FILE *stream) +@@ -582,6 +664,77 @@ cut_bytes (FILE *stream) } }
@@ -234,11 +234,11 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c +/* This function is in use for the following case. + + 1. Read from the stream STREAM, printing to standard output any selected -+ characters. ++ characters. + + 2. Read from stream STREAM, printing to standard output any selected bytes, + without splitting multibyte characters. */ -+ ++ +static void +cut_characters_or_cut_bytes_no_split (FILE *stream) +{ @@ -251,6 +251,9 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c + as same character as WC. */ + mbstate_t state; /* State of the stream. */ + int convfail = 0; /* 1, when conversion is failed. Otherwise 0. */ ++ /* Whether to begin printing delimiters between ranges for the current line. ++ Set after we've begun printing data corresponding to the first range. */ ++ bool print_delimiter = false; + + idx = 0; + buflen = 0; @@ -273,12 +276,23 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c + { + putchar ('\n'); + idx = 0; ++ print_delimiter = false; + } + else + { ++ bool range_start; ++ bool *rs = output_delimiter_specified ? &range_start : NULL; + idx += (operating_mode == byte_mode) ? mblength : 1; -+ if (print_kth (idx, NULL)) -+ fwrite (bufpos, mblength, sizeof(char), stdout); ++ if (print_kth (idx, rs)) ++ { ++ if (rs && *rs && print_delimiter) ++ { ++ fwrite (output_delimiter_string, sizeof (char), ++ output_delimiter_length, stdout); ++ } ++ print_delimiter = true; ++ fwrite (bufpos, mblength, sizeof(char), stdout); ++ } + } + + buflen -= mblength; @@ -286,11 +300,11 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c + } +} +#endif -+ ++ /* Read from stream STREAM, printing to standard output any selected fields. */
static void -@@ -702,13 +841,192 @@ cut_fields (FILE *stream) +@@ -704,13 +843,195 @@ cut_fields (FILE *stream) } }
@@ -310,7 +324,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c + size_t mblength; /* The byte size of a multibyte character which shows + as same character as WC. */ + mbstate_t state; /* State of the stream. */ -+ int convfail; /* 1, when conversion is failed. Otherwise 0. */ ++ int convfail = 0; /* 1, when conversion is failed. Otherwise 0. */ + + found_any_selected_field = 0; + field_idx = 1; @@ -321,7 +335,10 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c + c = getc (stream); + empty_input = (c == EOF); + if (c != EOF) ++ { + ungetc (c, stream); ++ wc = 0; ++ } + else + wc = WEOF; + @@ -486,7 +503,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c }
/* Process file FILE to standard output. -@@ -760,6 +1078,8 @@ main (int argc, char **argv) +@@ -762,6 +1080,8 @@ main (int argc, char **argv) bool ok; bool delim_specified = false; char *spec_list_string IF_LINT ( = NULL); @@ -495,7 +512,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c
initialize_main (&argc, &argv); set_program_name (argv[0]); -@@ -782,7 +1102,6 @@ main (int argc, char **argv) +@@ -784,7 +1104,6 @@ main (int argc, char **argv) switch (optc) { case 'b': @@ -503,7 +520,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c /* Build the byte list. */ if (operating_mode != undefined_mode) FATAL_ERROR (_("only one type of list may be specified")); -@@ -790,6 +1109,14 @@ main (int argc, char **argv) +@@ -792,6 +1111,14 @@ main (int argc, char **argv) spec_list_string = optarg; break;
@@ -518,7 +535,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c case 'f': /* Build the field list. */ if (operating_mode != undefined_mode) -@@ -801,10 +1128,35 @@ main (int argc, char **argv) +@@ -803,10 +1130,35 @@ main (int argc, char **argv) case 'd': /* New delimiter. */ /* Interpret -d '' to mean `use the NUL byte as the delimiter.' */ @@ -558,7 +575,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c break;
case OUTPUT_DELIMITER_OPTION: -@@ -817,6 +1169,7 @@ main (int argc, char **argv) +@@ -819,6 +1171,7 @@ main (int argc, char **argv) break;
case 'n': @@ -566,7 +583,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c break;
case 's': -@@ -839,7 +1192,7 @@ main (int argc, char **argv) +@@ -841,7 +1194,7 @@ main (int argc, char **argv) if (operating_mode == undefined_mode) FATAL_ERROR (_("you must specify a list of bytes, characters, or fields"));
@@ -575,7 +592,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c FATAL_ERROR (_("an input delimiter may be specified only\ when operating on fields"));
-@@ -866,15 +1219,34 @@ main (int argc, char **argv) +@@ -868,15 +1221,34 @@ main (int argc, char **argv) }
if (!delim_specified) @@ -607,7 +624,7 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c + if (MB_CUR_MAX <= 1 || force_singlebyte_mode) +#endif + { -+ static char dummy[2]; ++ static char dummy[2]; + dummy[0] = delim; + dummy[1] = '\0'; + output_delimiter_string = dummy; @@ -616,9 +633,9 @@ diff -urNp coreutils-8.10-orig/src/cut.c coreutils-8.10/src/cut.c }
if (optind == argc) -diff -urNp coreutils-8.10-orig/src/expand.c coreutils-8.10/src/expand.c ---- coreutils-8.10-orig/src/expand.c 2011-01-31 13:40:38.000000000 +0100 -+++ coreutils-8.10/src/expand.c 2011-02-04 20:13:23.990463571 +0100 +diff -urNp coreutils-8.13-orig/src/expand.c coreutils-8.13/src/expand.c +--- coreutils-8.13-orig/src/expand.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/expand.c 2011-09-09 10:23:14.167583399 +0200 @@ -38,12 +38,29 @@ #include <stdio.h> #include <getopt.h> @@ -806,9 +823,9 @@ diff -urNp coreutils-8.10-orig/src/expand.c coreutils-8.10/src/expand.c
if (have_read_stdin && fclose (stdin) != 0) error (EXIT_FAILURE, errno, "-"); -diff -urNp coreutils-8.10-orig/src/fold.c coreutils-8.10/src/fold.c ---- coreutils-8.10-orig/src/fold.c 2011-01-31 13:40:38.000000000 +0100 -+++ coreutils-8.10/src/fold.c 2011-02-04 20:13:23.992463115 +0100 +diff -urNp coreutils-8.13-orig/src/fold.c coreutils-8.13/src/fold.c +--- coreutils-8.13-orig/src/fold.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/fold.c 2011-09-09 10:23:14.169583741 +0200 @@ -22,12 +22,34 @@ #include <getopt.h> #include <sys/types.h> @@ -1179,7 +1196,7 @@ diff -urNp coreutils-8.10-orig/src/fold.c coreutils-8.10/src/fold.c if (ferror (istream)) { error (0, saved_errno, "%s", filename); -@@ -254,7 +502,8 @@ main (int argc, char **argv) +@@ -254,7 +501,8 @@ main (int argc, char **argv)
atexit (close_stdout);
@@ -1189,7 +1206,7 @@ diff -urNp coreutils-8.10-orig/src/fold.c coreutils-8.10/src/fold.c
while ((optc = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1) { -@@ -263,7 +512,15 @@ main (int argc, char **argv) +@@ -263,7 +511,15 @@ main (int argc, char **argv) switch (optc) { case 'b': /* Count bytes rather than columns. */ @@ -1206,9 +1223,9 @@ diff -urNp coreutils-8.10-orig/src/fold.c coreutils-8.10/src/fold.c break;
case 's': /* Break at word boundaries. */ -diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c ---- coreutils-8.10-orig/src/join.c 2011-01-31 13:40:38.000000000 +0100 -+++ coreutils-8.10/src/join.c 2011-02-04 20:20:15.985114387 +0100 +diff -urNp coreutils-8.13-orig/src/join.c coreutils-8.13/src/join.c +--- coreutils-8.13-orig/src/join.c 2011-08-08 10:16:09.000000000 +0200 ++++ coreutils-8.13/src/join.c 2011-09-09 10:23:14.172687087 +0200 @@ -22,18 +22,32 @@ #include <sys/types.h> #include <getopt.h> @@ -1243,7 +1260,7 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c /* The official name of this program (e.g., no `g' prefix). */ #define PROGRAM_NAME "join"
-@@ -129,10 +143,12 @@ static struct outlist outlist_head; +@@ -135,10 +149,12 @@ static struct outlist outlist_head; /* Last element in `outlist', where a new element can be added. */ static struct outlist *outlist_end = &outlist_head;
@@ -1260,7 +1277,7 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c
/* If nonzero, check that the input is correctly ordered. */ static enum -@@ -257,13 +273,14 @@ xfields (struct line *line) +@@ -263,13 +279,14 @@ xfields (struct line *line) if (ptr == lim) return;
@@ -1278,7 +1295,7 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c { /* Skip leading blanks before the first field. */ while (isblank (to_uchar (*ptr))) -@@ -287,6 +304,148 @@ xfields (struct line *line) +@@ -293,6 +310,148 @@ xfields (struct line *line) extract_field (line, ptr, lim - ptr); }
@@ -1427,7 +1444,7 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c static void freeline (struct line *line) { -@@ -308,56 +467,115 @@ keycmp (struct line const *line1, struct +@@ -314,56 +473,115 @@ keycmp (struct line const *line1, struct size_t jf_1, size_t jf_2) { /* Start of field to compare in each file. */ @@ -1551,7 +1568,7 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c - return xmemcoll (beg1, len1, beg2, len2); - diff = memcmp (beg1, beg2, MIN (len1, len2)); + copy[0] = (unsigned char *) beg[0]; -+ copy[1] = (unsigned char *) beg[1]; ++ copy[1] = (unsigned char *) beg[1]; }
+ if (hard_LC_COLLATE) @@ -1566,9 +1583,9 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c }
/* Check that successive input lines PREV and CURRENT from input file -@@ -438,6 +656,11 @@ get_line (FILE *fp, struct line **linep, - return false; +@@ -455,6 +673,11 @@ get_line (FILE *fp, struct line **linep, } + ++line_no[which - 1];
+#if HAVE_MBRTOWC + if (MB_CUR_MAX > 1) @@ -1578,7 +1595,7 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c xfields (line);
if (prevline[which - 1]) -@@ -537,21 +760,28 @@ prfield (size_t n, struct line const *li +@@ -554,21 +777,28 @@ prfield (size_t n, struct line const *li
/* Output all the fields in line, other than the join field. */
@@ -1610,7 +1627,7 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c prfield (i, line); } } -@@ -562,7 +792,6 @@ static void +@@ -579,7 +809,6 @@ static void prjoin (struct line const *line1, struct line const *line2) { const struct outlist *outlist; @@ -1618,7 +1635,7 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c size_t field; struct line const *line;
-@@ -596,7 +825,7 @@ prjoin (struct line const *line1, struct +@@ -613,7 +842,7 @@ prjoin (struct line const *line1, struct o = o->next; if (o == NULL) break; @@ -1627,12 +1644,12 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c } putchar ('\n'); } -@@ -1075,21 +1304,46 @@ main (int argc, char **argv) +@@ -1091,21 +1320,46 @@ main (int argc, char **argv)
case 't': { - unsigned char newtab = optarg[0]; -+ char *newtab; ++ char *newtab = NULL; + size_t newtablen; + newtab = xstrdup (optarg); +#if HAVE_MBRTOWC @@ -1654,7 +1671,8 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c + newtablen = 1; if (! newtab) + { - newtab = '\n'; /* '' => process the whole line. */ +- newtab = '\n'; /* '' => process the whole line. */ ++ newtab = "\n"; /* '' => process the whole line. */ + } else if (optarg[1]) { @@ -1683,9 +1701,9 @@ diff -urNp coreutils-8.10-orig/src/join.c coreutils-8.10/src/join.c break;
case NOCHECK_ORDER_OPTION: -diff -urNp coreutils-8.10-orig/src/pr.c coreutils-8.10/src/pr.c ---- coreutils-8.10-orig/src/pr.c 2011-01-31 13:40:38.000000000 +0100 -+++ coreutils-8.10/src/pr.c 2011-02-04 20:13:24.002460897 +0100 +diff -urNp coreutils-8.13-orig/src/pr.c coreutils-8.13/src/pr.c +--- coreutils-8.13-orig/src/pr.c 2011-08-30 23:01:40.000000000 +0200 ++++ coreutils-8.13/src/pr.c 2011-09-09 10:23:14.177658905 +0200 @@ -312,6 +312,32 @@
#include <getopt.h> @@ -2408,9 +2426,9 @@ diff -urNp coreutils-8.10-orig/src/pr.c coreutils-8.10/src/pr.c /* We've just printed some files and need to clean up things before looking for more options and printing the next batch of files.
-diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c ---- coreutils-8.10-orig/src/sort.c 2011-02-03 11:24:35.000000000 +0100 -+++ coreutils-8.10/src/sort.c 2011-02-04 20:15:44.160384535 +0100 +diff -urNp coreutils-8.13-orig/src/sort.c coreutils-8.13/src/sort.c +--- coreutils-8.13-orig/src/sort.c 2011-07-29 10:12:25.000000000 +0200 ++++ coreutils-8.13/src/sort.c 2011-09-09 10:23:14.183686800 +0200 @@ -22,11 +22,20 @@
#include <config.h> @@ -2432,7 +2450,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c #include "system.h" #include "argmatch.h" #include "error.h" -@@ -163,12 +172,34 @@ static int thousands_sep; +@@ -167,12 +176,34 @@ static int thousands_sep;
/* Nonzero if the corresponding locales are hard. */ static bool hard_LC_COLLATE; @@ -2468,7 +2486,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c /* The kind of blanks for '-b' to skip in various options. */ enum blanktype { bl_start, bl_end, bl_both };
-@@ -335,13 +366,11 @@ static bool reverse; +@@ -343,13 +374,11 @@ static bool reverse; they were read if all keys compare equal. */ static bool stable;
@@ -2485,7 +2503,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c
/* Flag to remove consecutive duplicate lines from the output. Only the last of a sequence of equal lines will be output. */ -@@ -775,6 +804,46 @@ reap_all (void) +@@ -783,6 +812,46 @@ reap_all (void) reap (-1); }
@@ -2532,7 +2550,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c /* Clean up any remaining temporary files. */
static void -@@ -1207,7 +1276,7 @@ zaptemp (char const *name) +@@ -1215,7 +1284,7 @@ zaptemp (char const *name) free (node); }
@@ -2541,7 +2559,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c
static int struct_month_cmp (void const *m1, void const *m2) -@@ -1222,7 +1291,7 @@ struct_month_cmp (void const *m1, void c +@@ -1230,7 +1299,7 @@ struct_month_cmp (void const *m1, void c /* Initialize the character class tables. */
static void @@ -2550,7 +2568,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c { size_t i;
-@@ -1234,7 +1303,7 @@ inittables (void) +@@ -1242,7 +1311,7 @@ inittables (void) fold_toupper[i] = toupper (i); }
@@ -2559,7 +2577,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c /* If we're not in the "C" locale, read different names for months. */ if (hard_LC_TIME) { -@@ -1316,6 +1385,84 @@ specify_nmerge (int oi, char c, char con +@@ -1324,6 +1393,84 @@ specify_nmerge (int oi, char c, char con xstrtol_fatal (e, oi, c, long_options, s); }
@@ -2644,7 +2662,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c /* Specify the amount of main memory to use when sorting. */ static void specify_sort_size (int oi, char c, char const *s) -@@ -1544,7 +1691,7 @@ buffer_linelim (struct buffer const *buf +@@ -1552,7 +1699,7 @@ buffer_linelim (struct buffer const *buf by KEY in LINE. */
static char * @@ -2653,7 +2671,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c { char *ptr = line->text, *lim = ptr + line->length - 1; size_t sword = key->sword; -@@ -1553,10 +1700,10 @@ begfield (struct line const *line, struc +@@ -1561,10 +1708,10 @@ begfield (struct line const *line, struc /* The leading field separator itself is included in a field when -t is absent. */
@@ -2666,7 +2684,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c ++ptr; if (ptr < lim) ++ptr; -@@ -1582,11 +1729,70 @@ begfield (struct line const *line, struc +@@ -1590,11 +1737,70 @@ begfield (struct line const *line, struc return ptr; }
@@ -2738,7 +2756,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c { char *ptr = line->text, *lim = ptr + line->length - 1; size_t eword = key->eword, echar = key->echar; -@@ -1601,10 +1807,10 @@ limfield (struct line const *line, struc +@@ -1609,10 +1815,10 @@ limfield (struct line const *line, struc `beginning' is the first character following the delimiting TAB. Otherwise, leave PTR pointing at the first `blank' character after the preceding field. */ @@ -2751,7 +2769,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c ++ptr; if (ptr < lim && (eword || echar)) ++ptr; -@@ -1650,10 +1856,10 @@ limfield (struct line const *line, struc +@@ -1658,10 +1864,10 @@ limfield (struct line const *line, struc */
/* Make LIM point to the end of (one byte past) the current field. */ @@ -2764,7 +2782,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c if (newlim) lim = newlim; } -@@ -1684,6 +1890,130 @@ limfield (struct line const *line, struc +@@ -1692,6 +1898,130 @@ limfield (struct line const *line, struc return ptr; }
@@ -2895,7 +2913,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c /* Fill BUF reading from FP, moving buf->left bytes from the end of buf->buf to the beginning first. If EOF is reached and the file wasn't terminated by a newline, supply one. Set up BUF's line -@@ -1770,8 +2100,22 @@ fillbuf (struct buffer *buf, FILE *fp, c +@@ -1778,8 +2108,22 @@ fillbuf (struct buffer *buf, FILE *fp, c else { if (key->skipsblanks) @@ -2920,7 +2938,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c line->keybeg = line_start; } } -@@ -1892,7 +2236,7 @@ human_numcompare (char const *a, char co +@@ -1900,7 +2244,7 @@ human_numcompare (char const *a, char co hideously fast. */
static int @@ -2929,7 +2947,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c { while (blanks[to_uchar (*a)]) a++; -@@ -1902,6 +2246,25 @@ numcompare (char const *a, char const *b +@@ -1910,6 +2254,25 @@ numcompare (char const *a, char const *b return strnumcmp (a, b, decimal_point, thousands_sep); }
@@ -2955,7 +2973,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c static int general_numcompare (char const *sa, char const *sb) { -@@ -1934,7 +2297,7 @@ general_numcompare (char const *sa, char +@@ -1942,7 +2305,7 @@ general_numcompare (char const *sa, char Return 0 if the name in S is not recognized. */
static int @@ -2964,7 +2982,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c { size_t lo = 0; size_t hi = MONTHS_PER_YEAR; -@@ -2209,15 +2572,14 @@ debug_key (struct line const *line, stru +@@ -2217,15 +2580,14 @@ debug_key (struct line const *line, stru char saved = *lim; *lim = '\0';
@@ -2982,7 +3000,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c else if (key->general_numeric) ignore_value (strtold (beg, &tighter_lim)); else if (key->numeric || key->human_numeric) -@@ -2361,7 +2723,7 @@ key_warnings (struct keyfield const *gke +@@ -2369,7 +2731,7 @@ key_warnings (struct keyfield const *gke bool maybe_space_aligned = !hard_LC_COLLATE && default_key_compare (key) && !(key->schar || key->echar); bool line_offset = key->eword == 0 && key->echar != 0; /* -k1.x,1.y */ @@ -2991,7 +3009,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c && ((!key->skipsblanks && !(implicit_skip || maybe_space_aligned)) || (!key->skipsblanks && key->schar) || (!key->skipeblanks && key->echar))) -@@ -2419,11 +2781,83 @@ key_warnings (struct keyfield const *gke +@@ -2427,11 +2789,83 @@ key_warnings (struct keyfield const *gke error (0, 0, _("option `-r' only applies to last-resort comparison")); }
@@ -3076,7 +3094,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c { struct keyfield *key = keylist;
-@@ -2508,7 +2942,7 @@ keycompare (struct line const *a, struct +@@ -2516,7 +2950,7 @@ keycompare (struct line const *a, struct else if (key->human_numeric) diff = human_numcompare (ta, tb); else if (key->month) @@ -3085,7 +3103,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c else if (key->random) diff = compare_random (ta, tlena, tb, tlenb); else if (key->version) -@@ -2624,6 +3058,179 @@ keycompare (struct line const *a, struct +@@ -2632,6 +3066,180 @@ keycompare (struct line const *a, struct return key->reverse ? -diff : diff; }
@@ -3167,7 +3185,8 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c + if (MBLENGTH == (size_t)-2 || MBLENGTH == (size_t)-1) \ + STATE = state_bak; \ + if (!ignore) \ -+ COPY[NEW_LEN++] = TEXT[i++]; \ ++ COPY[NEW_LEN++] = TEXT[i]; \ ++ i++; \ + continue; \ + } \ + \ @@ -3265,7 +3284,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c /* Compare two lines A and B, returning negative, zero, or positive depending on whether A compares less than, equal to, or greater than B. */
-@@ -4087,7 +4694,7 @@ main (int argc, char **argv) +@@ -4095,7 +4702,7 @@ main (int argc, char **argv) initialize_exit_failure (SORT_FAILURE);
hard_LC_COLLATE = hard_locale (LC_COLLATE); @@ -3274,7 +3293,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c hard_LC_TIME = hard_locale (LC_TIME); #endif
-@@ -4108,6 +4715,29 @@ main (int argc, char **argv) +@@ -4116,6 +4723,29 @@ main (int argc, char **argv) thousands_sep = -1; }
@@ -3304,7 +3323,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c have_read_stdin = false; inittables ();
-@@ -4378,13 +5008,34 @@ main (int argc, char **argv) +@@ -4386,13 +5016,34 @@ main (int argc, char **argv)
case 't': { @@ -3343,7 +3362,7 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c else { /* Provoke with `sort -txx'. Complain about -@@ -4395,9 +5046,12 @@ main (int argc, char **argv) +@@ -4403,9 +5054,12 @@ main (int argc, char **argv) quote (optarg)); } } @@ -3358,9 +3377,9 @@ diff -urNp coreutils-8.10-orig/src/sort.c coreutils-8.10/src/sort.c } break;
-diff -urNp coreutils-8.10-orig/src/unexpand.c coreutils-8.10/src/unexpand.c ---- coreutils-8.10-orig/src/unexpand.c 2011-01-31 13:40:38.000000000 +0100 -+++ coreutils-8.10/src/unexpand.c 2011-02-04 20:13:24.015458014 +0100 +diff -urNp coreutils-8.13-orig/src/unexpand.c coreutils-8.13/src/unexpand.c +--- coreutils-8.13-orig/src/unexpand.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/unexpand.c 2011-09-09 10:23:14.185647633 +0200 @@ -39,12 +39,29 @@ #include <stdio.h> #include <getopt.h> @@ -3614,9 +3633,9 @@ diff -urNp coreutils-8.10-orig/src/unexpand.c coreutils-8.10/src/unexpand.c
if (have_read_stdin && fclose (stdin) != 0) error (EXIT_FAILURE, errno, "-"); -diff -urNp coreutils-8.10-orig/src/uniq.c coreutils-8.10/src/uniq.c ---- coreutils-8.10-orig/src/uniq.c 2011-01-31 13:40:38.000000000 +0100 -+++ coreutils-8.10/src/uniq.c 2011-02-04 20:13:24.018457349 +0100 +diff -urNp coreutils-8.13-orig/src/uniq.c coreutils-8.13/src/uniq.c +--- coreutils-8.13-orig/src/uniq.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/uniq.c 2011-09-09 10:24:19.631560964 +0200 @@ -21,6 +21,16 @@ #include <getopt.h> #include <sys/types.h> @@ -3669,7 +3688,7 @@ diff -urNp coreutils-8.10-orig/src/uniq.c coreutils-8.10/src/uniq.c @@ -207,7 +233,7 @@ size_opt (char const *opt, char const *m return a pointer to the beginning of the line's field to be compared. */
- static char * + static char * _GL_ATTRIBUTE_PURE -find_field (struct linebuffer const *line) +find_field_uni (struct linebuffer *line) { @@ -3952,7 +3971,7 @@ diff -urNp coreutils-8.10-orig/src/uniq.c coreutils-8.10/src/uniq.c match = !different (thisfield, prevfield, thislen, prevlen); match_count += match;
-@@ -383,6 +612,9 @@ check_file (const char *infile, const ch +@@ -383,6 +611,9 @@ check_file (const char *infile, const ch SWAP_LINES (prevline, thisline); prevfield = thisfield; prevlen = thislen; @@ -3962,7 +3981,7 @@ diff -urNp coreutils-8.10-orig/src/uniq.c coreutils-8.10/src/uniq.c if (!match) match_count = 0; } -@@ -428,6 +660,19 @@ main (int argc, char **argv) +@@ -428,6 +659,19 @@ main (int argc, char **argv)
atexit (close_stdout);
@@ -3982,10 +4001,10 @@ diff -urNp coreutils-8.10-orig/src/uniq.c coreutils-8.10/src/uniq.c skip_chars = 0; skip_fields = 0; check_chars = SIZE_MAX; -diff -urNp coreutils-8.10-orig/tests/Makefile.am coreutils-8.10/tests/Makefile.am ---- coreutils-8.10-orig/tests/Makefile.am 2011-02-04 20:12:58.236173903 +0100 -+++ coreutils-8.10/tests/Makefile.am 2011-02-04 20:13:24.020456905 +0100 -@@ -235,6 +235,7 @@ TESTS = \ +diff -urNp coreutils-8.13-orig/tests/Makefile.am coreutils-8.13/tests/Makefile.am +--- coreutils-8.13-orig/tests/Makefile.am 2011-09-09 10:22:43.352561668 +0200 ++++ coreutils-8.13/tests/Makefile.am 2011-09-09 10:23:14.189688942 +0200 +@@ -238,6 +238,7 @@ TESTS = \ misc/sort-debug-keys \ misc/sort-debug-warn \ misc/sort-files0-from \ @@ -3993,7 +4012,7 @@ diff -urNp coreutils-8.10-orig/tests/Makefile.am coreutils-8.10/tests/Makefile.a misc/sort-float \ misc/sort-merge \ misc/sort-merge-fdlimit \ -@@ -505,6 +506,10 @@ TESTS = \ +@@ -518,6 +519,10 @@ TESTS = \ $(root_tests)
pr_data = \ @@ -4004,10 +4023,21 @@ diff -urNp coreutils-8.10-orig/tests/Makefile.am coreutils-8.10/tests/Makefile.a pr/0F \ pr/0FF \ pr/0FFnt \ -diff -urNp coreutils-8.10-orig/tests/misc/cut coreutils-8.10/tests/misc/cut ---- coreutils-8.10-orig/tests/misc/cut 2011-01-31 13:40:38.000000000 +0100 -+++ coreutils-8.10/tests/misc/cut 2011-02-04 20:13:24.021456684 +0100 -@@ -26,7 +26,7 @@ use strict; +diff -urNp coreutils-8.13-orig/tests/misc/cut coreutils-8.13/tests/misc/cut +--- coreutils-8.13-orig/tests/misc/cut 2011-09-02 14:08:40.000000000 +0200 ++++ coreutils-8.13/tests/misc/cut 2011-09-09 10:23:14.190686793 +0200 +@@ -23,14 +23,15 @@ my $mb_locale = $ENV{LOCALE_FR_UTF8}; + # Turn off localization of executable's output. + @ENV{qw(LANGUAGE LANG LC_ALL)} = ('C') x 3; + +-my $mb_locale = $ENV{LOCALE_FR_UTF8}; +-! defined $mb_locale || $mb_locale eq 'none' +- and $mb_locale = 'C'; ++#my $mb_locale = $ENV{LOCALE_FR_UTF8}; ++#! defined $mb_locale || $mb_locale eq 'none' ++# and $mb_locale = 'C'; ++my $mb_locale = 'C'; + my $prog = 'cut'; my $try = "Try `$prog --help' for more information.\n"; my $from_1 = "$prog: fields and positions are numbered from 1\n$try"; @@ -4016,7 +4046,7 @@ diff -urNp coreutils-8.10-orig/tests/misc/cut coreutils-8.10/tests/misc/cut my $no_endpoint = "$prog: invalid range with no endpoint: -\n$try";
my @Tests = -@@ -143,7 +143,7 @@ my @Tests = +@@ -147,7 +147,7 @@ my @Tests =
# None of the following invalid ranges provoked an error up to coreutils-6.9. ['inval1', qw(-f 2-0), {IN=>''}, {OUT=>''}, {EXIT=>1}, @@ -4025,41 +4055,41 @@ diff -urNp coreutils-8.10-orig/tests/misc/cut coreutils-8.10/tests/misc/cut ['inval2', qw(-f -), {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}], ['inval3', '-f', '4,-', {IN=>''}, {OUT=>''}, {EXIT=>1}, {ERR=>$no_endpoint}], ['inval4', '-f', '1-2,-', {IN=>''}, {OUT=>''}, {EXIT=>1}, -diff -urNp coreutils-8.10-orig/tests/misc/mb1.I coreutils-8.10/tests/misc/mb1.I ---- coreutils-8.10-orig/tests/misc/mb1.I 1970-01-01 01:00:00.000000000 +0100 -+++ coreutils-8.10/tests/misc/mb1.I 2011-02-04 20:13:24.022456462 +0100 +diff -urNp coreutils-8.13-orig/tests/misc/mb1.I coreutils-8.13/tests/misc/mb1.I +--- coreutils-8.13-orig/tests/misc/mb1.I 1970-01-01 01:00:00.000000000 +0100 ++++ coreutils-8.13/tests/misc/mb1.I 2011-09-09 10:23:14.191687037 +0200 @@ -0,0 +1,4 @@ +Apple@10 +Banana@5 +Citrus@20 +Cherry@30 -diff -urNp coreutils-8.10-orig/tests/misc/mb1.X coreutils-8.10/tests/misc/mb1.X ---- coreutils-8.10-orig/tests/misc/mb1.X 1970-01-01 01:00:00.000000000 +0100 -+++ coreutils-8.10/tests/misc/mb1.X 2011-02-04 20:13:24.023456240 +0100 +diff -urNp coreutils-8.13-orig/tests/misc/mb1.X coreutils-8.13/tests/misc/mb1.X +--- coreutils-8.13-orig/tests/misc/mb1.X 1970-01-01 01:00:00.000000000 +0100 ++++ coreutils-8.13/tests/misc/mb1.X 2011-09-09 10:23:14.192581910 +0200 @@ -0,0 +1,4 @@ +Banana@5 +Apple@10 +Citrus@20 +Cherry@30 -diff -urNp coreutils-8.10-orig/tests/misc/mb2.I coreutils-8.10/tests/misc/mb2.I ---- coreutils-8.10-orig/tests/misc/mb2.I 1970-01-01 01:00:00.000000000 +0100 -+++ coreutils-8.10/tests/misc/mb2.I 2011-02-04 20:13:24.024456019 +0100 +diff -urNp coreutils-8.13-orig/tests/misc/mb2.I coreutils-8.13/tests/misc/mb2.I +--- coreutils-8.13-orig/tests/misc/mb2.I 1970-01-01 01:00:00.000000000 +0100 ++++ coreutils-8.13/tests/misc/mb2.I 2011-09-09 10:23:14.192581910 +0200 @@ -0,0 +1,4 @@ +Apple@AA10@@20 +Banana@AA5@@30 +Citrus@AA20@@5 +Cherry@AA30@@10 -diff -urNp coreutils-8.10-orig/tests/misc/mb2.X coreutils-8.10/tests/misc/mb2.X ---- coreutils-8.10-orig/tests/misc/mb2.X 1970-01-01 01:00:00.000000000 +0100 -+++ coreutils-8.10/tests/misc/mb2.X 2011-02-04 20:13:24.024456019 +0100 +diff -urNp coreutils-8.13-orig/tests/misc/mb2.X coreutils-8.13/tests/misc/mb2.X +--- coreutils-8.13-orig/tests/misc/mb2.X 1970-01-01 01:00:00.000000000 +0100 ++++ coreutils-8.13/tests/misc/mb2.X 2011-09-09 10:23:14.193687456 +0200 @@ -0,0 +1,4 @@ +Citrus@AA20@@5 +Cherry@AA30@@10 +Apple@AA10@@20 +Banana@AA5@@30 -diff -urNp coreutils-8.10-orig/tests/misc/sort-mb-tests coreutils-8.10/tests/misc/sort-mb-tests ---- coreutils-8.10-orig/tests/misc/sort-mb-tests 1970-01-01 01:00:00.000000000 +0100 -+++ coreutils-8.10/tests/misc/sort-mb-tests 2011-02-04 20:13:24.025455797 +0100 +diff -urNp coreutils-8.13-orig/tests/misc/sort-mb-tests coreutils-8.13/tests/misc/sort-mb-tests +--- coreutils-8.13-orig/tests/misc/sort-mb-tests 1970-01-01 01:00:00.000000000 +0100 ++++ coreutils-8.13/tests/misc/sort-mb-tests 2011-09-09 10:23:14.194687565 +0200 @@ -0,0 +1,58 @@ +#! /bin/sh +case $# in @@ -4079,7 +4109,7 @@ diff -urNp coreutils-8.10-orig/tests/misc/sort-mb-tests coreutils-8.10/tests/mis +$xx -t @ -k2 -n misc/mb1.I > misc/mb1.O +code=$? +if test $code != 0; then -+ $echo "Test mb1 failed: $xx return code $code differs from expected value 0" 1>&2 ++ $echo "Test mb1 failed: $xx return code $code differs from expected value 0" + errors=`expr $errors + 1` +else + cmp misc/mb1.O $srcdir/misc/mb1.X > /dev/null 2>&1 diff --git a/coreutils/patches/coreutils-selinux.patch b/coreutils/patches/coreutils-selinux.patch index 0c6c51e..7ebce30 100644 --- a/coreutils/patches/coreutils-selinux.patch +++ b/coreutils/patches/coreutils-selinux.patch @@ -1,7 +1,7 @@ -diff -urNp coreutils-8.11-orig/configure.ac coreutils-8.11/configure.ac ---- coreutils-8.11-orig/configure.ac 2011-04-14 11:05:27.511308852 +0200 -+++ coreutils-8.11/configure.ac 2011-04-14 11:06:05.481433832 +0200 -@@ -132,6 +132,13 @@ if test "$gl_gcc_warnings" = yes; then +diff -urNp coreutils-8.13-orig/configure.ac coreutils-8.13/configure.ac +--- coreutils-8.13-orig/configure.ac 2011-09-09 10:29:52.584690353 +0200 ++++ coreutils-8.13/configure.ac 2011-09-09 10:30:39.524564991 +0200 +@@ -141,6 +141,13 @@ if test "$gl_gcc_warnings" = yes; then AC_SUBST([GNULIB_TEST_WARN_CFLAGS]) fi
@@ -15,18 +15,18 @@ diff -urNp coreutils-8.11-orig/configure.ac coreutils-8.11/configure.ac AC_FUNC_FORK
AC_ARG_ENABLE(pam, AS_HELP_STRING([--disable-pam], -diff -urNp coreutils-8.11-orig/man/chcon.x coreutils-8.11/man/chcon.x ---- coreutils-8.11-orig/man/chcon.x 2009-09-01 13:01:16.000000000 +0200 -+++ coreutils-8.11/man/chcon.x 2011-04-14 11:06:05.482433878 +0200 +diff -urNp coreutils-8.13-orig/man/chcon.x coreutils-8.13/man/chcon.x +--- coreutils-8.13-orig/man/chcon.x 2009-09-01 13:01:16.000000000 +0200 ++++ coreutils-8.13/man/chcon.x 2011-09-09 10:30:39.524564991 +0200 @@ -1,4 +1,4 @@ [NAME] -chcon - change file security context +chcon - change file SELinux security context [DESCRIPTION] ." Add any additional description here -diff -urNp coreutils-8.11-orig/man/runcon.x coreutils-8.11/man/runcon.x ---- coreutils-8.11-orig/man/runcon.x 2009-09-01 13:01:16.000000000 +0200 -+++ coreutils-8.11/man/runcon.x 2011-04-14 11:06:05.483445779 +0200 +diff -urNp coreutils-8.13-orig/man/runcon.x coreutils-8.13/man/runcon.x +--- coreutils-8.13-orig/man/runcon.x 2009-09-01 13:01:16.000000000 +0200 ++++ coreutils-8.13/man/runcon.x 2011-09-09 10:30:39.544686472 +0200 @@ -1,5 +1,5 @@ [NAME] -runcon - run command with specified security context @@ -34,9 +34,9 @@ diff -urNp coreutils-8.11-orig/man/runcon.x coreutils-8.11/man/runcon.x [DESCRIPTION] Run COMMAND with completely-specified CONTEXT, or with current or transitioned security context modified by one or more of LEVEL, -diff -urNp coreutils-8.11-orig/src/chcon.c coreutils-8.11/src/chcon.c ---- coreutils-8.11-orig/src/chcon.c 2011-02-19 18:17:03.000000000 +0100 -+++ coreutils-8.11/src/chcon.c 2011-04-14 11:06:05.489434075 +0200 +diff -urNp coreutils-8.13-orig/src/chcon.c coreutils-8.13/src/chcon.c +--- coreutils-8.13-orig/src/chcon.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/chcon.c 2011-09-09 10:30:39.562561252 +0200 @@ -356,7 +356,7 @@ Usage: %s [OPTION]... CONTEXT FILE...\n\ "), program_name, program_name, program_name); @@ -46,10 +46,10 @@ diff -urNp coreutils-8.11-orig/src/chcon.c coreutils-8.11/src/chcon.c With --reference, change the security context of each FILE to that of RFILE.\n\ \n\ -h, --no-dereference affect symbolic links instead of any referenced file\n\ -diff -urNp coreutils-8.11-orig/src/copy.c coreutils-8.11/src/copy.c ---- coreutils-8.11-orig/src/copy.c 2011-04-12 12:07:43.000000000 +0200 -+++ coreutils-8.11/src/copy.c 2011-04-14 11:06:05.485433752 +0200 -@@ -2179,6 +2179,8 @@ copy_internal (char const *src_name, cha +diff -urNp coreutils-8.13-orig/src/copy.c coreutils-8.13/src/copy.c +--- coreutils-8.13-orig/src/copy.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/copy.c 2011-09-09 10:30:39.564562214 +0200 +@@ -2244,6 +2244,8 @@ copy_internal (char const *src_name, cha { /* Here, we are crossing a file system boundary and cp's -x option is in effect: so don't copy the contents of this directory. */ @@ -58,9 +58,9 @@ diff -urNp coreutils-8.11-orig/src/copy.c coreutils-8.11/src/copy.c } else { -diff -urNp coreutils-8.11-orig/src/copy.h coreutils-8.11/src/copy.h ---- coreutils-8.11-orig/src/copy.h 2011-02-19 18:17:03.000000000 +0100 -+++ coreutils-8.11/src/copy.h 2011-04-14 11:06:05.487340225 +0200 +diff -urNp coreutils-8.13-orig/src/copy.h coreutils-8.13/src/copy.h +--- coreutils-8.13-orig/src/copy.h 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/copy.h 2011-09-09 10:30:39.565563712 +0200 @@ -158,6 +158,9 @@ struct cp_options bool preserve_mode; bool preserve_timestamps; @@ -71,9 +71,9 @@ diff -urNp coreutils-8.11-orig/src/copy.h coreutils-8.11/src/copy.h /* Enabled for mv, and for cp by the --preserve=links option. If true, attempt to preserve in the destination files any logical hard links between the source files. If used with cp's -diff -urNp coreutils-8.11-orig/src/cp.c coreutils-8.11/src/cp.c ---- coreutils-8.11-orig/src/cp.c 2011-02-19 18:17:03.000000000 +0100 -+++ coreutils-8.11/src/cp.c 2011-04-14 11:06:05.488433894 +0200 +diff -urNp coreutils-8.13-orig/src/cp.c coreutils-8.13/src/cp.c +--- coreutils-8.13-orig/src/cp.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/cp.c 2011-09-09 10:30:39.566562062 +0200 @@ -141,6 +141,7 @@ static struct option const long_opts[] = {"target-directory", required_argument, NULL, 't'}, {"update", no_argument, NULL, 'u'}, @@ -162,9 +162,9 @@ diff -urNp coreutils-8.11-orig/src/cp.c coreutils-8.11/src/cp.c case 'S': make_backups = true; backup_suffix_string = optarg; -diff -urNp coreutils-8.11-orig/src/id.c coreutils-8.11/src/id.c ---- coreutils-8.11-orig/src/id.c 2011-02-19 18:17:03.000000000 +0100 -+++ coreutils-8.11/src/id.c 2011-04-14 11:06:05.490435340 +0200 +diff -urNp coreutils-8.13-orig/src/id.c coreutils-8.13/src/id.c +--- coreutils-8.13-orig/src/id.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/id.c 2011-09-09 10:30:39.567562153 +0200 @@ -107,7 +107,7 @@ int main (int argc, char **argv) { @@ -174,9 +174,9 @@ diff -urNp coreutils-8.11-orig/src/id.c coreutils-8.11/src/id.c
/* If true, output the list of all group IDs. -G */ bool just_group_list = false; -diff -urNp coreutils-8.11-orig/src/install.c coreutils-8.11/src/install.c ---- coreutils-8.11-orig/src/install.c 2011-04-12 12:07:43.000000000 +0200 -+++ coreutils-8.11/src/install.c 2011-04-14 11:07:58.333433706 +0200 +diff -urNp coreutils-8.13-orig/src/install.c coreutils-8.13/src/install.c +--- coreutils-8.13-orig/src/install.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/install.c 2011-09-09 10:30:39.569562422 +0200 @@ -261,6 +261,7 @@ cp_option_init (struct cp_options *x) x->data_copy_required = true; x->require_preserve = false; @@ -230,10 +230,10 @@ diff -urNp coreutils-8.11-orig/src/install.c coreutils-8.11/src/install.c use_default_selinux_context = false; break; case_GETOPT_HELP_CHAR; -diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c ---- coreutils-8.11-orig/src/ls.c 2011-04-12 12:07:43.000000000 +0200 -+++ coreutils-8.11/src/ls.c 2011-04-14 11:06:05.498436329 +0200 -@@ -159,7 +159,8 @@ enum filetype +diff -urNp coreutils-8.13-orig/src/ls.c coreutils-8.13/src/ls.c +--- coreutils-8.13-orig/src/ls.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/ls.c 2011-09-09 10:30:39.575562845 +0200 +@@ -166,7 +166,8 @@ enum filetype symbolic_link, sock, whiteout, @@ -243,7 +243,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c };
/* Display letters and indicators for each filetype. -@@ -276,6 +277,7 @@ static void queue_directory (char const +@@ -283,6 +284,7 @@ static void queue_directory (char const static void sort_files (void); static void parse_ls_color (void); void usage (int status); @@ -251,7 +251,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c
/* Initial size of hash table. Most hierarchies are likely to be shallower than this. */ -@@ -345,7 +347,7 @@ static struct pending *pending_dirs; +@@ -352,7 +354,7 @@ static struct pending *pending_dirs;
static struct timespec current_time;
@@ -260,7 +260,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c static char UNKNOWN_SECURITY_CONTEXT[] = "?";
/* Whether any of the files has an ACL. This affects the width of the -@@ -385,7 +387,9 @@ enum format +@@ -392,7 +394,9 @@ enum format one_per_line, /* -1 */ many_per_line, /* -C */ horizontal, /* -x */ @@ -271,7 +271,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c };
static enum format format; -@@ -787,6 +791,9 @@ enum +@@ -794,6 +798,9 @@ enum SHOW_CONTROL_CHARS_OPTION, SI_OPTION, SORT_OPTION, @@ -281,7 +281,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c TIME_OPTION, TIME_STYLE_OPTION }; -@@ -832,7 +839,9 @@ static struct option const long_options[ +@@ -839,7 +846,9 @@ static struct option const long_options[ {"time-style", required_argument, NULL, TIME_STYLE_OPTION}, {"color", optional_argument, NULL, COLOR_OPTION}, {"block-size", required_argument, NULL, BLOCK_SIZE_OPTION}, @@ -292,7 +292,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c {"author", no_argument, NULL, AUTHOR_OPTION}, {GETOPT_HELP_OPTION_DECL}, {GETOPT_VERSION_OPTION_DECL}, -@@ -842,12 +851,12 @@ static struct option const long_options[ +@@ -849,12 +858,12 @@ static struct option const long_options[ static char const *const format_args[] = { "verbose", "long", "commas", "horizontal", "across", @@ -307,7 +307,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c }; ARGMATCH_VERIFY (format_args, format_types);
-@@ -1289,7 +1298,8 @@ main (int argc, char **argv) +@@ -1296,7 +1305,8 @@ main (int argc, char **argv) /* Avoid following symbolic links when possible. */ if (is_colored (C_ORPHAN) || (is_colored (C_EXEC) && color_symlink_as_referent) @@ -317,7 +317,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c check_symlink_color = true;
/* If the standard output is a controlling terminal, watch out -@@ -1336,7 +1346,7 @@ main (int argc, char **argv) +@@ -1343,7 +1353,7 @@ main (int argc, char **argv) if (dereference == DEREF_UNDEFINED) dereference = ((immediate_dirs || indicator_style == classify @@ -326,7 +326,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c ? DEREF_NEVER : DEREF_COMMAND_LINE_SYMLINK_TO_DIR);
-@@ -1356,7 +1366,7 @@ main (int argc, char **argv) +@@ -1363,7 +1373,7 @@ main (int argc, char **argv)
format_needs_stat = sort_type == sort_time || sort_type == sort_size || format == long_format @@ -335,7 +335,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c || print_block_size; format_needs_type = (! format_needs_stat && (recursive -@@ -1387,7 +1397,7 @@ main (int argc, char **argv) +@@ -1394,7 +1404,7 @@ main (int argc, char **argv) } else do @@ -344,7 +344,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c while (i < argc);
if (cwd_n_used) -@@ -1558,7 +1568,7 @@ decode_switches (int argc, char **argv) +@@ -1565,7 +1575,7 @@ decode_switches (int argc, char **argv) ignore_mode = IGNORE_DEFAULT; ignore_patterns = NULL; hide_patterns = NULL; @@ -353,7 +353,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c
/* FIXME: put this in a function. */ { -@@ -1940,13 +1950,27 @@ decode_switches (int argc, char **argv) +@@ -1947,13 +1957,27 @@ decode_switches (int argc, char **argv) break;
case 'Z': @@ -382,7 +382,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c default: usage (LS_FAILURE); } -@@ -2691,8 +2715,10 @@ clear_files (void) +@@ -2714,8 +2738,10 @@ clear_files (void) struct fileinfo *f = sorted_file[i]; free (f->name); free (f->linkname); @@ -395,7 +395,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c }
cwd_n_used = 0; -@@ -2734,6 +2760,7 @@ gobble_file (char const *name, enum file +@@ -2757,6 +2783,7 @@ gobble_file (char const *name, enum file memset (f, '\0', sizeof *f); f->stat.st_ino = inode; f->filetype = type; @@ -403,7 +403,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c
if (command_line_arg || format_needs_stat -@@ -2843,7 +2870,7 @@ gobble_file (char const *name, enum file +@@ -2869,7 +2896,7 @@ gobble_file (char const *name, enum file && print_with_color && is_colored (C_CAP)) f->has_capability = has_capability (absolute_name);
@@ -412,7 +412,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c { bool have_selinux = false; bool have_acl = false; -@@ -2866,7 +2893,7 @@ gobble_file (char const *name, enum file +@@ -2892,7 +2919,7 @@ gobble_file (char const *name, enum file err = 0; }
@@ -421,7 +421,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c { int n = file_has_acl (absolute_name, &f->stat); err = (n < 0); -@@ -2885,7 +2912,8 @@ gobble_file (char const *name, enum file +@@ -2911,7 +2938,8 @@ gobble_file (char const *name, enum file }
if (S_ISLNK (f->stat.st_mode) @@ -431,7 +431,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c { char *linkname; struct stat linkstats; -@@ -2905,6 +2933,7 @@ gobble_file (char const *name, enum file +@@ -2931,6 +2959,7 @@ gobble_file (char const *name, enum file command line are automatically traced if not being listed as files. */ if (!command_line_arg || format == long_format @@ -439,7 +439,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c || !S_ISDIR (linkstats.st_mode)) { /* Get the linked-to file's mode for the filetype indicator -@@ -2944,7 +2973,7 @@ gobble_file (char const *name, enum file +@@ -2970,7 +2999,7 @@ gobble_file (char const *name, enum file block_size_width = len; }
@@ -448,7 +448,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c { if (print_owner) { -@@ -3445,6 +3474,13 @@ print_current_files (void) +@@ -3471,6 +3500,13 @@ print_current_files (void) print_long_format (sorted_file[i]); DIRED_PUTCHAR ('\n'); } @@ -462,7 +462,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c break; } } -@@ -3607,6 +3643,67 @@ format_inode (char *buf, size_t buflen, +@@ -3633,6 +3669,67 @@ format_inode (char *buf, size_t buflen, : (char *) "?"); }
@@ -530,7 +530,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c /* Print information about F in long format. */ static void print_long_format (const struct fileinfo *f) -@@ -3698,9 +3795,15 @@ print_long_format (const struct fileinfo +@@ -3724,9 +3821,15 @@ print_long_format (const struct fileinfo The latter is wrong when nlink_width is zero. */ p += strlen (p);
@@ -547,7 +547,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c { DIRED_FPUTS (buf, stdout, p - buf);
-@@ -3713,9 +3816,6 @@ print_long_format (const struct fileinfo +@@ -3739,9 +3842,6 @@ print_long_format (const struct fileinfo if (print_author) format_user (f->stat.st_author, author_width, f->stat_ok);
@@ -557,7 +557,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c p = buf; }
-@@ -4060,9 +4160,6 @@ print_file_name_and_frills (const struct +@@ -4086,9 +4186,6 @@ print_file_name_and_frills (const struct : human_readable (ST_NBLOCKS (f->stat), buf, human_output_opts, ST_NBLOCKSIZE, output_block_size));
@@ -567,7 +567,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c size_t width = print_name_with_quoting (f, false, NULL, start_col);
if (indicator_style != none) -@@ -4266,9 +4363,6 @@ length_of_file_name_and_frills (const st +@@ -4292,9 +4389,6 @@ length_of_file_name_and_frills (const st output_block_size)) : block_size_width);
@@ -577,7 +577,7 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c quote_name (NULL, f->name, filename_quoting_options, &name_width); len += name_width;
-@@ -4707,9 +4801,16 @@ Mandatory arguments to long options are +@@ -4733,9 +4827,16 @@ Mandatory arguments to long options are -w, --width=COLS assume screen width instead of current value\n\ -x list entries by lines instead of by columns\n\ -X sort alphabetically by entry extension\n\ @@ -595,9 +595,9 @@ diff -urNp coreutils-8.11-orig/src/ls.c coreutils-8.11/src/ls.c fputs (HELP_OPTION_DESCRIPTION, stdout); fputs (VERSION_OPTION_DESCRIPTION, stdout); emit_size_note (); -diff -urNp coreutils-8.11-orig/src/mkdir.c coreutils-8.11/src/mkdir.c ---- coreutils-8.11-orig/src/mkdir.c 2011-02-19 18:17:03.000000000 +0100 -+++ coreutils-8.11/src/mkdir.c 2011-04-14 11:06:05.499460276 +0200 +diff -urNp coreutils-8.13-orig/src/mkdir.c coreutils-8.13/src/mkdir.c +--- coreutils-8.13-orig/src/mkdir.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/mkdir.c 2011-09-09 10:30:39.576564256 +0200 @@ -38,6 +38,7 @@ static struct option const longopts[] = { @@ -606,9 +606,9 @@ diff -urNp coreutils-8.11-orig/src/mkdir.c coreutils-8.11/src/mkdir.c {"mode", required_argument, NULL, 'm'}, {"parents", no_argument, NULL, 'p'}, {"verbose", no_argument, NULL, 'v'}, -diff -urNp coreutils-8.11-orig/src/mknod.c coreutils-8.11/src/mknod.c ---- coreutils-8.11-orig/src/mknod.c 2011-02-19 18:17:03.000000000 +0100 -+++ coreutils-8.11/src/mknod.c 2011-04-14 11:06:05.500309648 +0200 +diff -urNp coreutils-8.13-orig/src/mknod.c coreutils-8.13/src/mknod.c +--- coreutils-8.13-orig/src/mknod.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/mknod.c 2011-09-09 10:30:39.577563177 +0200 @@ -35,7 +35,7 @@
static struct option const longopts[] = @@ -618,9 +618,9 @@ diff -urNp coreutils-8.11-orig/src/mknod.c coreutils-8.11/src/mknod.c {"mode", required_argument, NULL, 'm'}, {GETOPT_HELP_OPTION_DECL}, {GETOPT_VERSION_OPTION_DECL}, -diff -urNp coreutils-8.11-orig/src/mv.c coreutils-8.11/src/mv.c ---- coreutils-8.11-orig/src/mv.c 2011-02-19 18:17:03.000000000 +0100 -+++ coreutils-8.11/src/mv.c 2011-04-14 11:06:05.501309664 +0200 +diff -urNp coreutils-8.13-orig/src/mv.c coreutils-8.13/src/mv.c +--- coreutils-8.13-orig/src/mv.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/mv.c 2011-09-09 10:30:39.578562234 +0200 @@ -118,6 +118,7 @@ cp_option_init (struct cp_options *x) x->preserve_mode = true; x->preserve_timestamps = true; @@ -629,9 +629,9 @@ diff -urNp coreutils-8.11-orig/src/mv.c coreutils-8.11/src/mv.c x->reduce_diagnostics = false; x->data_copy_required = true; x->require_preserve = false; /* FIXME: maybe make this an option */ -diff -urNp coreutils-8.11-orig/src/runcon.c coreutils-8.11/src/runcon.c ---- coreutils-8.11-orig/src/runcon.c 2011-02-19 18:17:03.000000000 +0100 -+++ coreutils-8.11/src/runcon.c 2011-04-14 11:06:05.502310854 +0200 +diff -urNp coreutils-8.13-orig/src/runcon.c coreutils-8.13/src/runcon.c +--- coreutils-8.13-orig/src/runcon.c 2011-07-28 12:38:27.000000000 +0200 ++++ coreutils-8.13/src/runcon.c 2011-09-09 10:30:39.579564283 +0200 @@ -86,7 +86,7 @@ Usage: %s CONTEXT COMMAND [args]\n\ or: %s [ -c ] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] COMMAND [args]\n\ "), program_name, program_name); @@ -641,10 +641,10 @@ diff -urNp coreutils-8.11-orig/src/runcon.c coreutils-8.11/src/runcon.c With neither CONTEXT nor COMMAND, print the current security context.\n\ \n\ CONTEXT Complete security context\n\ -diff -urNp coreutils-8.11-orig/tests/init.cfg coreutils-8.11/tests/init.cfg ---- coreutils-8.11-orig/tests/init.cfg 2011-04-12 12:07:43.000000000 +0200 -+++ coreutils-8.11/tests/init.cfg 2011-04-14 11:06:05.503308646 +0200 -@@ -231,8 +231,8 @@ require_selinux_() +diff -urNp coreutils-8.13-orig/tests/init.cfg coreutils-8.13/tests/init.cfg +--- coreutils-8.13-orig/tests/init.cfg 2011-09-07 18:00:55.000000000 +0200 ++++ coreutils-8.13/tests/init.cfg 2011-09-09 10:32:17.031688699 +0200 +@@ -253,8 +253,8 @@ require_selinux_()
# Independent of whether SELinux is enabled system-wide, # the current file system may lack SELinux support. @@ -652,12 +652,12 @@ diff -urNp coreutils-8.11-orig/tests/init.cfg coreutils-8.11/tests/init.cfg - '? .'|'unlabeled .') + case `ls -Zd . | cut -f4 -d" "` in + '?'|'unlabeled') - skip_test_ "this system (or maybe just" \ + skip_ "this system (or maybe just" \ "the current file system) lacks SELinux support" ;; -diff -urNp coreutils-8.11-orig/tests/misc/selinux coreutils-8.11/tests/misc/selinux ---- coreutils-8.11-orig/tests/misc/selinux 2011-01-31 13:40:38.000000000 +0100 -+++ coreutils-8.11/tests/misc/selinux 2011-04-14 11:06:05.504353757 +0200 +diff -urNp coreutils-8.13-orig/tests/misc/selinux coreutils-8.13/tests/misc/selinux +--- coreutils-8.13-orig/tests/misc/selinux 2011-08-08 09:42:16.000000000 +0200 ++++ coreutils-8.13/tests/misc/selinux 2011-09-09 10:30:39.586563144 +0200 @@ -37,7 +37,7 @@ chcon $ctx f d p ||
# inspect that context with both ls -Z and stat. diff --git a/grub/grub.nm b/grub/grub.nm index 2730668..4adffac 100644 --- a/grub/grub.nm +++ b/grub/grub.nm @@ -4,8 +4,8 @@ ###############################################################################
name = grub -version = 1.98 -release = 6 +version = 1.99 +release = 1
groups = Base System/Boot url = http://www.gnu.org/software/grub/ @@ -19,7 +19,7 @@ description systems. end
-source_dl = +source_dl = http://ftp.gnu.org/gnu/grub/
build requires @@ -30,45 +30,33 @@ build freetype-devel gettext ncurses-devel - xorg-x11-fonts zlib-devel end
- CFLAGS += -fno-strict-aliasing + # Can only use very basic CFLAGS. + export CFLAGS = -O2 -pipe + export CXXFLAGS = %{CFLAGS}
configure_options += \ --sysconfdir=/etc \ - --with-platform=pc \ - --enable-grub-emu - - prepare_cmds - sed -e "s@ GNU/Linux"@"@" -i util/grub.d/10_linux.in - end + --sbindir=/sbin \ + --with-platform=pc
install make install DESTDIR=%{BUILDROOT}
- sed -e "s/pkgdatadir/pkglibdir/g" -i %{BUILDROOT}/usr/sbin/grub-install - - mkdir -pv %{BUILDROOT}/boot/grub - # Install theme file install -m 0744 %{DIR_SOURCE}/05_theme %{BUILDROOT}/etc/grub.d/
# Install splash background + mkdir -pv %{BUILDROOT}/boot/grub install %{DIR_SOURCE}/splash.png %{BUILDROOT}/boot/grub - - # XXX - We will have to do this after the installation of the package by pakfire - # Generate grub compatible font for graphical boot menu - # This only converts Latin-1, Latin Extended A+B, Arrows, Box and Block characters - %{BUILDROOT}/usr/bin/grub-mkfont --output=%{BUILDROOT}/boot/grub/unifont.pf2 \ - --range=0x0000-0x0241,0x2190-0x21FF,0x2500-0x259f /usr/share/X11/fonts/misc/unifont.pcf.gz end end
quality-agent whitelist_nx - /usr/bin/*|/usr/sbin/* + /sbin/*|/usr/bin/* end end
@@ -77,6 +65,14 @@ packages requires gettext os-prober + /usr/share/X11/fonts/misc/unifont.pcf.gz + end + + # Generate grub compatible font for graphical boot menu + # This only converts Latin-1, Latin Extended A+B, Arrows, Box and Block characters + script postin + /usr/bin/grub-mkfont --output /boot/grub/unifont.pf2 \ + --range=0x0000-0x0241,0x2190-0x21FF,0x2500-0x259f /usr/share/X11/fonts/misc/unifont.pcf.gz end end end diff --git a/grub/patches/grub-1.97.1-initramfs.patch b/grub/patches/grub-1.97.1-initramfs.patch deleted file mode 100644 index 85570f0..0000000 --- a/grub/patches/grub-1.97.1-initramfs.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -uNr grub-1.97.1-orig/util/grub.d/10_linux.in grub-1.97.1/util/grub.d/10_linux.in ---- grub-1.97.1-orig/util/grub.d/10_linux.in 2009-11-09 09:48:16.000000000 -0600 -+++ grub-1.97.1/util/grub.d/10_linux.in 2009-12-01 15:28:16.000000000 -0600 -@@ -78,7 +78,8 @@ - initrd= - for i in "initrd.img-${version}" "initrd-${version}.img" \ - "initrd-${version}" "initrd.img-${alt_version}" \ -- "initrd-${alt_version}.img" "initrd-${alt_version}"; do -+ "initrd-${alt_version}.img" "initrd-${alt_version}" \ -+ "initramfs-${version}.img" ; do - if test -e "${dirname}/${i}" ; then - initrd="$i" - break diff --git a/grub/patches/grub-1.98-GRUB_DISTRIBUTOR-spaces-fix-1.patch0 b/grub/patches/grub-1.98-GRUB_DISTRIBUTOR-spaces-fix-1.patch0 deleted file mode 100644 index d3d0727..0000000 --- a/grub/patches/grub-1.98-GRUB_DISTRIBUTOR-spaces-fix-1.patch0 +++ /dev/null @@ -1,39 +0,0 @@ -=== modified file 'util/grub.d/10_hurd.in' ---- util/grub.d/10_hurd.in 2010-02-03 00:24:07 +0000 -+++ util/grub.d/10_hurd.in 2010-04-08 09:54:44 +0000 -@@ -27,7 +27,7 @@ - OS=GNU - else - OS="${GRUB_DISTRIBUTOR} GNU/Hurd" -- CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]') ${CLASS}" -+ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]' | cut -d' ' -f1) ${CLASS}" - fi - - at_least_one=false - -=== modified file 'util/grub.d/10_kfreebsd.in' ---- util/grub.d/10_kfreebsd.in 2010-02-03 00:24:07 +0000 -+++ util/grub.d/10_kfreebsd.in 2010-04-08 09:54:44 +0000 -@@ -30,7 +30,7 @@ - case "${GRUB_DISTRIBUTOR}" in - Debian) - OS="${GRUB_DISTRIBUTOR} GNU/kFreeBSD" -- CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]') --class gnu-kfreebsd --class gnu ${CLASS}" -+ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]' | cut -d' ' -f1) --class gnu-kfreebsd --class gnu ${CLASS}" - ;; - *) - OS="FreeBSD" - -=== modified file 'util/grub.d/10_linux.in' ---- util/grub.d/10_linux.in 2010-02-26 13:32:24 +0000 -+++ util/grub.d/10_linux.in 2010-04-08 09:54:44 +0000 -@@ -31,7 +31,7 @@ - OS=GNU/Linux - else - OS="${GRUB_DISTRIBUTOR} GNU/Linux" -- CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]') ${CLASS}" -+ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr '[A-Z]' '[a-z]' | cut -d' ' -f1) ${CLASS}" - fi - - # loop-AES arranges things so that /dev/loop/X can be our root device, but - diff --git a/grub/patches/grub-1.99-just-say-linux.patch b/grub/patches/grub-1.99-just-say-linux.patch new file mode 100644 index 0000000..389b163 --- /dev/null +++ b/grub/patches/grub-1.99-just-say-linux.patch @@ -0,0 +1,46 @@ +From d4bd41f972c6e22b86c773cbba2a1e14f400a8be Mon Sep 17 00:00:00 2001 +From: Peter Jones pjones@redhat.com +Date: Mon, 14 Mar 2011 14:27:42 -0400 +Subject: [PATCH] Don't say "GNU/Linux" in generated menus. + +In Fedora and RHEL we just call it Linux. +--- + util/grub.d/10_linux.in | 4 ++-- + util/grub.d/20_linux_xen.in | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in +index a09c3e6..0b0df78 100644 +--- a/util/grub.d/10_linux.in ++++ b/util/grub.d/10_linux.in +@@ -29,9 +29,9 @@ export TEXTDOMAINDIR=@localedir@ + CLASS="--class gnu-linux --class gnu --class os" + + if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then +- OS=GNU/Linux ++ OS=Linux + else +- OS="${GRUB_DISTRIBUTOR} GNU/Linux" ++ OS="${GRUB_DISTRIBUTOR} Linux" + CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) ${CLASS}" + fi + +diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in +index ee49cd9..10422b0 100644 +--- a/util/grub.d/20_linux_xen.in ++++ b/util/grub.d/20_linux_xen.in +@@ -29,9 +29,9 @@ export TEXTDOMAINDIR=@localedir@ + CLASS="--class gnu-linux --class gnu --class os --class xen" + + if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then +- OS=GNU/Linux ++ OS=Linux + else +- OS="${GRUB_DISTRIBUTOR} GNU/Linux" ++ OS="${GRUB_DISTRIBUTOR} Linux" + CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1) ${CLASS}" + fi + +-- +1.7.4 + diff --git a/kernel/kernel.nm b/kernel/kernel.nm index 3f87f09..01b2f69 100644 --- a/kernel/kernel.nm +++ b/kernel/kernel.nm @@ -5,7 +5,7 @@
name = kernel version = 3.0.4 -release = 1 +release = 2 thisapp = linux-%{version}
maintainer = Michael Tremer michael.tremer@ipfire.org @@ -100,10 +100,12 @@ packages end package kernel-headers - template DEVEL - summary = Header files of the kernel release %{fullver}. desciption = %{summary} + + files + /usr/include + end end end diff --git a/libcap-ng/libcap-ng.nm b/libcap-ng/libcap-ng.nm index 36b5a78..057bae6 100644 --- a/libcap-ng/libcap-ng.nm +++ b/libcap-ng/libcap-ng.nm @@ -4,7 +4,7 @@ ###############################################################################
name = libcap-ng -version = 0.6.5 +version = 0.6.6 release = 1
groups = System/Libraries @@ -13,11 +13,11 @@ license = LGPLv2+ summary = An alternate posix capabilities library.
description - Libcap-ng is a library that makes using posix capabilities \ + Libcap-ng is a library that makes using posix capabilities easier. end
-source_dl = +source_dl = http://people.redhat.com/sgrubb/libcap-ng/
build requires @@ -25,6 +25,15 @@ build python end
+ install_cmds + # Move libraries to lib + mkdir -pv %{BUILDROOT}/lib + mv -vf %{BUILDROOT}/usr/lib/libcap-ng.so.* %{BUILDROOT}/lib/ + + # Recreate symlink + ln -svf ../../lib/libcap-ng.so.0 %{BUILDROOT}/usr/lib/libcap-ng.so + end + # XXX Testsuite is broken by the package developers #def test # make check diff --git a/pcre/pcre.nm b/pcre/pcre.nm index b7a9da2..f51e459 100644 --- a/pcre/pcre.nm +++ b/pcre/pcre.nm @@ -4,8 +4,8 @@ ###############################################################################
name = pcre -version = 8.12 -release = 2 +version = 8.13 +release = 1
groups = System/Libraries url = http://www.pcre.org/ @@ -18,7 +18,7 @@ description API are also supplied in the library libpcreposix. end
-source_dl = +source_dl = ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
build requires @@ -45,8 +45,7 @@ end
packages package %{name} - end - + package %{name}-devel template DEVEL end diff --git a/quagga/quagga.nm b/quagga/quagga.nm index 482cbe0..459fc44 100644 --- a/quagga/quagga.nm +++ b/quagga/quagga.nm @@ -4,7 +4,7 @@ ###############################################################################
name = quagga -version = 0.99.18 +version = 0.99.20 release = 1
groups = Networking/Routing @@ -41,12 +41,11 @@ end
packages package %{name} - end - + package %{name}-libs template LIBS end - + package %{name}-devel template DEVEL end diff --git a/xorg-x11-fonts/xorg-x11-fonts.nm b/xorg-x11-fonts/xorg-x11-fonts.nm index c931366..6b98ac6 100644 --- a/xorg-x11-fonts/xorg-x11-fonts.nm +++ b/xorg-x11-fonts/xorg-x11-fonts.nm @@ -5,7 +5,7 @@
name = xorg-x11-fonts version = 7.2 -release = 2 +release = 3 arch = noarch
maintainer = Stefan Schantl stefan.schantl@ipfire.org @@ -63,7 +63,7 @@ build xorg-x11-font-utils-devel end
- configure_optins += \ + configure_options += \ --with-fontrootdir=/usr/share/X11/fonts \ --disable-iso8859-3 \ --disable-iso8859-4 \ @@ -110,7 +110,9 @@ build done
# Install unifont - cp -vf %{DIR_DL}/unifont-5.1.20080820.pcf.gz %{BUILDROOT}/usr/share/fonts/X11/misc/unifont.pcf.gz + mkdir -pv %{BUILDROOT}/usr/share/X11/fonts/misc + cp -vf %{DIR_DL}/unifont-5.1.20080820.pcf.gz \ + %{BUILDROOT}/usr/share/X11/fonts/misc/unifont.pcf.gz end end
hooks/post-receive -- IPFire 3.x development tree