RPM Community Forums

Mailing List Message of <rpm-devel>

Re: [CVS] RPM: rpm-5_4: rpm/ CHANGES configure.ac rpm/tools/ dbconvert.c

From: Jeff Johnson <n3npq@mac.com>
Date: Tue 28 Jun 2011 - 14:51:51 CEST
Message-id: <D07D7DE4-73CF-4EA8-A33F-02069CA9FA0B@mac.com>
Nothing wrong with the patch per se but there's more
than testing for sys/endian.h that needs to be done.

There's breakage in colliding WORDS_BIGENDIAN et al, beecrypt
has internal m4 tests that set WORDS_BIGENDIAN, and there are platforms
that are missing endian.h entirely but need WORDS_BIGENDIAN defined
correctly.

It more a tedious issue than anything else. The proper fix (imho)
is to arrange for a run-time, not a compiled in AutoFu check, test for endianness.

The run-time test has been implemented 5 or 6 places in RPM code, and
isn't very hard to do (but does involve a union).

So the better fix is not to include endian.h anywhere.

73 de Jeff

On Jun 28, 2011, at 8:26 AM, Pinto Elia wrote:

>  RPM Package Manager, CVS Repository
>  http://rpm5.org/cvs/
>  ____________________________________________________________________________
> 
>  Server: rpm5.org                         Name:   Pinto Elia
>  Root:   /v/rpm/cvs                       Email:  devzero2000@rpm5.org
>  Module: rpm                              Date:   28-Jun-2011 14:26:11
>  Branch: rpm-5_4                          Handle: 2011062812261001
> 
>  Modified files:           (Branch: rpm-5_4)
>    rpm                     CHANGES configure.ac
>    rpm/tools               dbconvert.c
> 
>  Log:
>    merge from HEAD afb patch portability of endian
> 
>  Summary:
>    Revision    Changes     Path
>    1.3501.2.144+1  -0      rpm/CHANGES
>    2.472.2.25  +2  -2      rpm/configure.ac
>    2.1.2.6     +10 -1      rpm/tools/dbconvert.c
>  ____________________________________________________________________________
> 
>  patch -p0 <<'@@ .'
>  Index: rpm/CHANGES
>  ============================================================================
>  $ cvs diff -u -r1.3501.2.143 -r1.3501.2.144 CHANGES
>  --- rpm/CHANGES	28 Jun 2011 12:01:47 -0000	1.3501.2.143
>  +++ rpm/CHANGES	28 Jun 2011 12:26:10 -0000	1.3501.2.144
>  @@ -1,4 +1,5 @@
>   5.4.1 -> 5.4.2
>  +    - devzero2000: merge afb patch portability of endian
>       - proyvind: check-multiarch-files: remove unnecessary import of MDK::Common,
>   	causing undesired dependency from perl dependency generator.
>       - devzero2000: add a simple usage command to devtool
>  @@ .
>  patch -p0 <<'@@ .'
>  Index: rpm/configure.ac
>  ============================================================================
>  $ cvs diff -u -r2.472.2.24 -r2.472.2.25 configure.ac
>  --- rpm/configure.ac	20 Jun 2011 12:33:27 -0000	2.472.2.24
>  +++ rpm/configure.ac	28 Jun 2011 12:26:10 -0000	2.472.2.25
>  @@ -672,8 +672,8 @@
>   dnl # standard headers (generic)
>   AC_CHECK_HEADERS([dnl
>       fcntl.h getopt.h grp.h memory.h netdb.h pwd.h utime.h dnl
>  -    signal.h sys/ipc.h sys/socket.h sys/select.h sys/time.h dnl
>  -    sys/types.h sys/stdtypes.h sys/mman.h sys/resource.h dnl
>  +    signal.h sys/endian.h sys/ipc.h sys/socket.h sys/select.h dnl
>  +    sys/time.h sys/types.h sys/stdtypes.h sys/mman.h sys/resource.h dnl
>       sys/utsname.h sys/prctl.h sys/wait.h netinet/in_systm.h dnl
>       machine/types.h mntent.h sys/mnttab.h sys/systemcfg.h dnl
>       sys/param.h sys/mount.h sys/mntctl.h sys/vmount.h dnl
>  @@ .
>  patch -p0 <<'@@ .'
>  Index: rpm/tools/dbconvert.c
>  ============================================================================
>  $ cvs diff -u -r2.1.2.5 -r2.1.2.6 dbconvert.c
>  --- rpm/tools/dbconvert.c	2 Jun 2011 17:39:41 -0000	2.1.2.5
>  +++ rpm/tools/dbconvert.c	28 Jun 2011 12:26:11 -0000	2.1.2.6
>  @@ -18,9 +18,18 @@
>   #include <rpmts.h>
>   #include <rpmlog.h>
> 
>  +#ifdef HAVE_SYS_ENDIAN_H
>  +#include <sys/endian.h>
>  +#endif
>  +#ifdef __APPLE__
>  +#include <libkern/OSByteOrder.h>
>  +
>  +#define htobe32(x) OSSwapHostToBigInt32(x)
>  +#define htole32(x) OSSwapHostToLittleInt32(x)
>  +#endif /* __APPLE__ */
>   #if BYTE_ORDER == LITTLE_ENDIAN
>   #define bswap32(x) htobe32(x)
>  -#elif __BYTE_ORDER == BIG_ENDIAN
>  +#elif BYTE_ORDER == BIG_ENDIAN
>   #define bswap32(x) htole32(x)
>   #endif
> 
>  @@ .
> ______________________________________________________________________
> RPM Package Manager                                    http://rpm5.org
> CVS Sources Repository                                rpm-cvs@rpm5.org
Received on Tue Jun 28 14:52:26 2011
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.