diff options
Diffstat (limited to 'package/rpm')
-rw-r--r-- | package/rpm/Config.in | 11 | ||||
-rw-r--r-- | package/rpm/Makefile | 37 | ||||
-rw-r--r-- | package/rpm/patches/patch-config_guess | 207 | ||||
-rw-r--r-- | package/rpm/patches/patch-config_sub | 180 | ||||
-rw-r--r-- | package/rpm/patches/patch-configure | 11 | ||||
-rw-r--r-- | package/rpm/patches/patch-rpmio_fts_c | 12 | ||||
-rw-r--r-- | package/rpm/patches/patch-rpmio_rpmio_h | 12 | ||||
-rw-r--r-- | package/rpm/patches/patch-rpmio_rpmio_h.orig | 22 | ||||
-rw-r--r-- | package/rpm/patches/patch-rpmio_rpmsq_c | 132 | ||||
-rw-r--r-- | package/rpm/patches/patch-rpmio_rpmsq_c.orig | 30 |
10 files changed, 654 insertions, 0 deletions
diff --git a/package/rpm/Config.in b/package/rpm/Config.in new file mode 100644 index 000000000..c84884a08 --- /dev/null +++ b/package/rpm/Config.in @@ -0,0 +1,11 @@ +config ADK_PACKAGE_RPM + prompt "rpm............................... Red Hat package manager" + tristate + depends on ADK_CXX + select ADK_PACKAGE_NSS + select ADK_PACKAGE_NSPR + select ADK_PACKAGE_ZLIB + select ADK_PACKAGE_LIBDB + default n + help + Red Hat package manager diff --git a/package/rpm/Makefile b/package/rpm/Makefile new file mode 100644 index 000000000..c7cf91c97 --- /dev/null +++ b/package/rpm/Makefile @@ -0,0 +1,37 @@ +# This file is part of the OpenADK project. OpenADK is copyrighted +# material, please see the LICENCE file in the top-level directory. + +include $(TOPDIR)/rules.mk + +PKG_NAME:= rpm +PKG_VERSION:= 4.7.0 +PKG_RELEASE:= 1 +PKG_MD5SUM:= 74791d638c571ec79f06227d453a6a03 +PKG_DESCR:= GNU rpm +PKG_SECTION:= base +PKG_URL:= http://www.rpm.org +PKG_SITES:= http://rpm.org/releases/rpm-4.7.x/ + +DISTFILES:= ${PKG_NAME}-$(PKG_VERSION).tar.bz2 + +include $(TOPDIR)/mk/package.mk + +$(eval $(call PKG_template,RPM,${PKG_NAME},$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION})) + +TCPPFLAGS+= -I${STAGING_DIR}/usr/include/nspr \ + -I${STAGING_DIR}/usr/include/nss +CONFIGURE_STYLE:= gnu +CONFIGURE_ARGS:= --with-external-db \ + --without-lua +BUILD_STYLE:= auto +INSTALL_STYLE:= auto + +post-install: + $(INSTALL_DIR) $(IDIR_RPM)/usr/bin $(IDIR_RPM)/usr/lib + $(INSTALL_DIR) $(IDIR_RPM)/usr/lib/rpm + $(INSTALL_BIN) $(WRKINST)/bin/rpm $(IDIR_RPM)/usr/bin + $(INSTALL_BIN) $(WRKINST)/usr/bin/rpm* $(IDIR_RPM)/usr/bin + $(CP) $(WRKINST)/usr/lib/*.so* $(IDIR_RPM)/usr/lib + $(CP) $(WRKINST)/usr/lib/rpm/* $(IDIR_RPM)/usr/lib/rpm + +include ${TOPDIR}/mk/pkg-bottom.mk diff --git a/package/rpm/patches/patch-config_guess b/package/rpm/patches/patch-config_guess new file mode 100644 index 000000000..b5ec8f21a --- /dev/null +++ b/package/rpm/patches/patch-config_guess @@ -0,0 +1,207 @@ +--- rpm-4.7.0.orig/config.guess 2008-08-30 00:27:10.000000000 +0200 ++++ rpm-4.7.0/config.guess 2009-06-11 17:31:39.670840385 +0200 +@@ -4,7 +4,7 @@ + # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 + # Free Software Foundation, Inc. + +-timestamp='2008-01-23' ++timestamp='2008-09-28' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -139,6 +139,23 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` | + UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown + UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + ++if [ "${UNAME_SYSTEM}" = "Linux" ] ; then ++ eval $set_cc_for_build ++ cat << EOF > $dummy.c ++ #include <features.h> ++ #ifdef __UCLIBC__ ++ # ifdef __UCLIBC_CONFIG_VERSION__ ++ LIBC=uclibc __UCLIBC_CONFIG_VERSION__ ++ # else ++ LIBC=uclibc ++ # endif ++ #else ++ LIBC=gnu ++ #endif ++EOF ++ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep LIBC= | sed -e 's: ::g'` ++fi ++ + # Note: order is significant - the case branches are not exclusive. + + case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +@@ -796,7 +813,7 @@ EOF + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; +- EM64T | authenticamd) ++ EM64T | authenticamd | genuineintel) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) +@@ -840,31 +857,31 @@ EOF + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else +- echo ${UNAME_MACHINE}-unknown-linux-gnueabi ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + fi + exit ;; + avr32*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) +- echo cris-axis-linux-gnu ++ echo cris-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) +- echo crisv32-axis-linux-gnu ++ echo crisv32-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) +- echo frv-unknown-linux-gnu ++ echo frv-unknown-linux-${LIBC} + exit ;; + ia64:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build +@@ -887,7 +904,7 @@ EOF + s: ::g + p + }'`" +- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build +@@ -910,16 +927,16 @@ EOF + s: ::g + p + }'`" +- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ++ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + or32:Linux:*:*) +- echo or32-unknown-linux-gnu ++ echo or32-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) +- echo powerpc-unknown-linux-gnu ++ echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64:Linux:*:*) +- echo powerpc64-unknown-linux-gnu ++ echo powerpc64-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in +@@ -932,40 +949,43 @@ EOF + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null +- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi +- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ++ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} ++ exit ;; ++ padre:Linux:*:*) ++ echo sparc-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in +- PA7*) echo hppa1.1-unknown-linux-gnu ;; +- PA8*) echo hppa2.0-unknown-linux-gnu ;; +- *) echo hppa-unknown-linux-gnu ;; ++ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; ++ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; ++ *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) +- echo hppa64-unknown-linux-gnu ++ echo hppa64-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) +- echo ${UNAME_MACHINE}-dec-linux-gnu ++ echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) +- echo x86_64-unknown-linux-gnu ++ echo x86_64-unknown-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) +- echo ${UNAME_MACHINE}-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so +@@ -980,20 +1000,19 @@ EOF + p'` + case "$ld_supported_targets" in + elf32-i386) +- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ++ TENTATIVE="${UNAME_MACHINE}-pc-linux-${LIBC}" + ;; + a.out-i386-linux) +- echo "${UNAME_MACHINE}-pc-linux-gnuaout" +- exit ;; +- coff-i386) +- echo "${UNAME_MACHINE}-pc-linux-gnucoff" ++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}aout" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. +- echo "${UNAME_MACHINE}-pc-linux-gnuoldld" ++ echo "${UNAME_MACHINE}-pc-linux-${LIBC}oldld" + exit ;; + esac ++ # This should get integrated into the C code below, but now we hack ++ if [ "$LIBC" != "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +@@ -1216,6 +1235,9 @@ EOF + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; ++ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. ++ echo i586-pc-haiku ++ exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; diff --git a/package/rpm/patches/patch-config_sub b/package/rpm/patches/patch-config_sub new file mode 100644 index 000000000..3b14117be --- /dev/null +++ b/package/rpm/patches/patch-config_sub @@ -0,0 +1,180 @@ +--- rpm-4.7.0.orig/config.sub 2008-08-30 00:27:10.000000000 +0200 ++++ rpm-4.7.0/config.sub 2009-06-11 17:31:39.670840385 +0200 +@@ -4,7 +4,7 @@ + # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 + # Free Software Foundation, Inc. + +-timestamp='2008-01-16' ++timestamp='2008-09-08' + + # This file is (in principle) common to ALL GNU software. + # The presence of a machine in this file suggests that SOME GNU software +@@ -244,18 +244,20 @@ case $basic_machine in + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ +- | d10v | d30v | dlx | dsp16xx \ ++ | d10v | d30v | dlx | dsp16xx | dvp \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ +- | maxq | mb | microblaze | mcore | mep \ ++ | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ +- | mips64vr | mips64vrel \ ++ | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ ++ | mips64r5900 | mips64r5900el \ ++ | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ +@@ -277,7 +279,7 @@ case $basic_machine in + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | score \ +- | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ ++ | sh | sh[1234] | sh[24]a | sh[24]a*eb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ +@@ -286,7 +288,7 @@ case $basic_machine in + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ +- | z8k) ++ | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) +@@ -331,12 +333,14 @@ case $basic_machine in + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +- | m88110-* | m88k-* | maxq-* | mcore-* \ ++ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ +- | mips64vr-* | mips64vrel-* \ ++ | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ ++ | mips64r5900-* | mips64r5900el-* \ ++ | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ +@@ -358,20 +362,20 @@ case $basic_machine in + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ +- | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ ++ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]a*eb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ +- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ ++ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ +- | z8k-*) ++ | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) +@@ -459,6 +463,10 @@ case $basic_machine in + basic_machine=c90-cray + os=-unicos + ;; ++ cegcc) ++ basic_machine=arm-unknown ++ os=-cegcc ++ ;; + convex-c1) + basic_machine=c1-convex + os=-bsd +@@ -526,6 +534,10 @@ case $basic_machine in + basic_machine=m88k-motorola + os=-sysv3 + ;; ++ dicos) ++ basic_machine=i686-pc ++ os=-dicos ++ ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp +@@ -714,6 +726,24 @@ case $basic_machine in + basic_machine=m68k-atari + os=-mint + ;; ++ mipsEE* | ee | ps2) ++ basic_machine=mips64r5900el-scei ++ case $os in ++ -linux*) ++ ;; ++ *) ++ os=-elf ++ ;; ++ esac ++ ;; ++ iop) ++ basic_machine=mipsel-scei ++ os=-irx ++ ;; ++ dvp) ++ basic_machine=dvp-scei ++ os=-elf ++ ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; +@@ -1128,6 +1158,10 @@ case $basic_machine in + basic_machine=z8k-unknown + os=-sim + ;; ++ z80-*-coff) ++ basic_machine=z80-unknown ++ os=-sim ++ ;; + none) + basic_machine=none-none + os=-none +@@ -1248,7 +1282,7 @@ case $os in + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ +- | -chorusos* | -chorusrdb* \ ++ | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ +@@ -1258,7 +1292,7 @@ case $os in + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ +- | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) ++ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -irx*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) +@@ -1388,6 +1422,9 @@ case $os in + -zvmoe) + os=-zvmoe + ;; ++ -dicos*) ++ os=-dicos ++ ;; + -none) + ;; + *) diff --git a/package/rpm/patches/patch-configure b/package/rpm/patches/patch-configure new file mode 100644 index 000000000..7602cc370 --- /dev/null +++ b/package/rpm/patches/patch-configure @@ -0,0 +1,11 @@ +--- rpm-4.7.0.orig/configure 2009-04-16 10:10:33.000000000 +0200 ++++ rpm-4.7.0/configure 2009-06-23 19:55:16.747272696 +0200 +@@ -21839,7 +21839,7 @@ if test "$GCC" = yes; then + CFLAGS="$CFLAGS -fPIC -DPIC -D_REENTRANT -Wall -Wpointer-arith -Wmissing-prototypes -Wno-char-subscripts" + # XXX disabled for now due to noise from NSPR headers + # CFLAGS="$CFLAGS -Wstrict-prototypes" +- cflags_to_try="-fno-strict-aliasing -fstack-protector" ++ cflags_to_try="-fno-strict-aliasing" + { $as_echo "$as_me:$LINENO: checking supported compiler flags" >&5 + $as_echo_n "checking supported compiler flags... " >&6; } + old_cflags=$CFLAGS diff --git a/package/rpm/patches/patch-rpmio_fts_c b/package/rpm/patches/patch-rpmio_fts_c new file mode 100644 index 000000000..90bed89de --- /dev/null +++ b/package/rpm/patches/patch-rpmio_fts_c @@ -0,0 +1,12 @@ +--- rpm-4.7.0.orig/rpmio/fts.c 2009-03-03 07:51:52.000000000 +0100 ++++ rpm-4.7.0/rpmio/fts.c 2009-06-25 20:23:10.374967519 +0200 +@@ -64,6 +64,9 @@ static char sccsid[] = "@(#)fts.c 8.6 (B + #include "rpmio/fts.h" + #include <rpm/rpmio.h> + #include <rpm/rpmurl.h> ++#ifdef __UCLIBC__ ++# define __fxstat64(_stat_ver, _fd, _sbp) fstat64((_fd), (_sbp)) ++#endif + # define __set_errno(val) (*__errno_location ()) = (val) + # define __open open + # define __close close diff --git a/package/rpm/patches/patch-rpmio_rpmio_h b/package/rpm/patches/patch-rpmio_rpmio_h new file mode 100644 index 000000000..bb7c0b073 --- /dev/null +++ b/package/rpm/patches/patch-rpmio_rpmio_h @@ -0,0 +1,12 @@ +--- rpm-4.7.0.orig/rpmio/rpmio.h 2009-03-03 07:51:52.000000000 +0100 ++++ rpm-4.7.0/rpmio/rpmio.h 2009-06-25 20:22:25.734966728 +0200 +@@ -26,7 +26,8 @@ extern "C" { + * typedefs to isolate the lossage. + */ + #if defined(__GLIBC__) && \ +- (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) ++ (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) && \ ++ !defined(__UCLIBC__) + #define USE_COOKIE_SEEK_POINTER 1 + typedef _IO_off64_t _libio_off_t; + typedef _libio_off_t * _libio_pos_t; diff --git a/package/rpm/patches/patch-rpmio_rpmio_h.orig b/package/rpm/patches/patch-rpmio_rpmio_h.orig new file mode 100644 index 000000000..a2d2d8572 --- /dev/null +++ b/package/rpm/patches/patch-rpmio_rpmio_h.orig @@ -0,0 +1,22 @@ +--- rpm-4.7.0.orig/rpmio/rpmio.h 2009-03-03 07:51:52.000000000 +0100 ++++ rpm-4.7.0/rpmio/rpmio.h 2009-06-25 19:32:01.343208721 +0200 +@@ -25,15 +25,19 @@ extern "C" { + * argument as a pointer rather than as an off_t. The snarl below defines + * typedefs to isolate the lossage. + */ ++/* + #if defined(__GLIBC__) && \ + (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) + #define USE_COOKIE_SEEK_POINTER 1 + typedef _IO_off64_t _libio_off_t; + typedef _libio_off_t * _libio_pos_t; + #else ++*/ + typedef off_t _libio_off_t; + typedef off_t _libio_pos_t; ++/* + #endif ++*/ + + /** \ingroup rpmio + */ diff --git a/package/rpm/patches/patch-rpmio_rpmsq_c b/package/rpm/patches/patch-rpmio_rpmsq_c new file mode 100644 index 000000000..779101b62 --- /dev/null +++ b/package/rpm/patches/patch-rpmio_rpmsq_c @@ -0,0 +1,132 @@ +--- rpm-4.7.0.orig/rpmio/rpmsq.c 2009-03-03 07:51:52.000000000 +0100 ++++ rpm-4.7.0/rpmio/rpmsq.c 2009-06-25 20:15:31.954966249 +0200 +@@ -83,6 +83,7 @@ static rpmsq rpmsqQueue = &rpmsqRock; + */ + static int rpmsqInsert(void * elem, void * prev) + { ++ sigset_t new_set, old_set; + rpmsq sq = (rpmsq) elem; + int ret = -1; + +@@ -91,7 +92,9 @@ static int rpmsqInsert(void * elem, void + if (_rpmsq_debug) + fprintf(stderr, " Insert(%p): %p\n", ME(), sq); + #endif +- ret = sighold(SIGCHLD); ++ sigemptyset(&new_set); ++ sigaddset(&new_set, SIGCHLD); ++ ret = sigprocmask(SIG_BLOCK, &new_set, &old_set); + if (ret == 0) { + sq->child = 0; + sq->reaped = 0; +@@ -102,7 +105,7 @@ fprintf(stderr, " Insert(%p): %p\n", + sq->id = ME(); + ret = pthread_mutex_init(&sq->mutex, NULL); + insque(elem, (prev != NULL ? prev : rpmsqQueue)); +- ret = sigrelse(SIGCHLD); ++ ret = sigprocmask(SIG_SETMASK, &old_set, NULL); + } + } + return ret; +@@ -115,6 +118,7 @@ fprintf(stderr, " Insert(%p): %p\n", + */ + static int rpmsqRemove(void * elem) + { ++ sigset_t new_set, old_set; + rpmsq sq = (rpmsq) elem; + int ret = -1; + +@@ -124,7 +128,9 @@ static int rpmsqRemove(void * elem) + if (_rpmsq_debug) + fprintf(stderr, " Remove(%p): %p\n", ME(), sq); + #endif +- ret = sighold (SIGCHLD); ++ sigemptyset(&new_set); ++ sigaddset(&new_set, SIGCHLD); ++ ret = sigprocmask(SIG_BLOCK, &new_set, &old_set); + if (ret == 0) { + remque(elem); + +@@ -142,7 +148,7 @@ fprintf(stderr, " Remove(%p): %p\n", + sq->reaped = 0; + sq->child = 0; + #endif +- ret = sigrelse(SIGCHLD); ++ ret = sigprocmask(SIG_SETMASK, &old_set, NULL); + } + } + return ret; +@@ -289,6 +295,7 @@ int rpmsqEnable(int signum, rpmsqAction_ + + pid_t rpmsqFork(rpmsq sq) + { ++ sigset_t new_set, old_set; + pid_t pid; + int xx; + int nothreads = 0; /* XXX: Shouldn't this be a global? */ +@@ -304,7 +311,9 @@ fprintf(stderr, " Enable(%p): %p\n", + + xx = pipe(sq->pipes); + +- xx = sighold(SIGCHLD); ++ sigemptyset(&new_set); ++ sigaddset(&new_set, SIGCHLD); ++ xx = sigprocmask(SIG_BLOCK, &new_set, &old_set); + + /* + * Initialize the cond var mutex. We have to aquire the lock we +@@ -355,7 +364,7 @@ fprintf(stderr, " Parent(%p): %p chil + } + + out: +- xx = sigrelse(SIGCHLD); ++ xx = sigprocmask(SIG_SETMASK, &old_set, NULL); + return sq->child; + } + +@@ -367,12 +376,15 @@ out: + */ + static int rpmsqWaitUnregister(rpmsq sq) + { ++ sigset_t new_set, old_set; + int nothreads = 0; + int ret = 0; + int xx; + + /* Protect sq->reaped from handler changes. */ +- ret = sighold(SIGCHLD); ++ sigemptyset(&new_set); ++ sigaddset(&new_set, SIGCHLD); ++ ret = sigprocmask(SIG_BLOCK, &new_set, &old_set); + + /* Start the child, linux often runs child before parent. */ + if (sq->pipes[0] >= 0) +@@ -388,9 +400,9 @@ static int rpmsqWaitUnregister(rpmsq sq) + while (ret == 0 && sq->reaped != sq->child) { + if (nothreads) + /* Note that sigpause re-enables SIGCHLD. */ +- ret = sigpause(SIGCHLD); ++ ret = sigsuspend(&new_set); + else { +- xx = sigrelse(SIGCHLD); ++ xx = sigprocmask(SIG_SETMASK, &old_set, NULL); + + /* + * We start before the fork with this mutex locked; +@@ -398,14 +410,14 @@ static int rpmsqWaitUnregister(rpmsq sq) + * So if we get the lock the child has been reaped. + */ + ret = pthread_mutex_lock(&sq->mutex); +- xx = sighold(SIGCHLD); ++ xx = sigprocmask(SIG_BLOCK, &new_set, &old_set); + } + } + + /* Accumulate stopwatch time spent waiting, potential performance gain. */ + sq->ms_scriptlets += rpmswExit(&sq->op, -1)/1000; + +- xx = sigrelse(SIGCHLD); ++ xx = sigprocmask(SIG_SETMASK, &old_set, NULL); + + #ifdef _RPMSQ_DEBUG + if (_rpmsq_debug) diff --git a/package/rpm/patches/patch-rpmio_rpmsq_c.orig b/package/rpm/patches/patch-rpmio_rpmsq_c.orig new file mode 100644 index 000000000..c192ed276 --- /dev/null +++ b/package/rpm/patches/patch-rpmio_rpmsq_c.orig @@ -0,0 +1,30 @@ +--- rpm-4.7.0.orig/rpmio/rpmsq.c 2009-03-03 07:51:52.000000000 +0100 ++++ rpm-4.7.0/rpmio/rpmsq.c 2009-06-25 20:02:58.903020248 +0200 +@@ -115,6 +115,7 @@ fprintf(stderr, " Insert(%p): %p\n", + */ + static int rpmsqRemove(void * elem) + { ++ sigset_t new_set, old_set; + rpmsq sq = (rpmsq) elem; + int ret = -1; + +@@ -124,7 +125,9 @@ static int rpmsqRemove(void * elem) + if (_rpmsq_debug) + fprintf(stderr, " Remove(%p): %p\n", ME(), sq); + #endif +- ret = sighold (SIGCHLD); ++ sigemptyset( &new_set ); ++ sigaddset( &new_set, SIGCHLD ); ++ ret = sigprocmask(SIG_BLOCK, &new_set, &old_set); + if (ret == 0) { + remque(elem); + +@@ -142,7 +145,7 @@ fprintf(stderr, " Remove(%p): %p\n", + sq->reaped = 0; + sq->child = 0; + #endif +- ret = sigrelse(SIGCHLD); ++ ret = sigprocmask( SIG_SETMASK, &old_set, NULL ); + } + } + return ret; |