Fix build error with Ubuntu22.04 51/289251/3 tizen/4.11.0.1.tizen20231101
authorbiao716.wang <biao716.wang@samsung.com>
Fri, 3 Mar 2023 07:51:24 +0000 (16:51 +0900)
committerbiao716.wang <biao716.wang@samsung.com>
Fri, 10 Mar 2023 05:38:18 +0000 (14:38 +0900)
Python bindings:  The initialization function must be named PyInit_name(),
 where name is the name of the module, and should be the only non-static item defined in the module file
https://github.com/rpm-software-management/rpm/commit/0073376965ee8d8df63c21b0da634fc315c97d0b
related bug: https://bugzilla.redhat.com/show_bug.cgi?id=1064758

Add more patch:
https://github.com/rpm-software-management/rpm/commit/f3801bccb9eb068a747ca63a4b01518a260d9919
https://github.com/rpm-software-management/rpm/commit/ddc7ff28e14064f57c6917e133a95e73f749cf41
https://github.com/rpm-software-management/rpm/commit/2c6e0366ffc6bdbafbdf82df7fcedd975a361465
https://github.com/rpm-software-management/rpm/commit/71527b6fbd2b3898beabd602c462a01b691d67d8

Change-Id: I67a51ee893d06173b3d33d444dfa56a5796523fb
Signed-off-by: biao716.wang <biao716.wang@samsung.com>
16 files changed:
build/files.c
configure.ac
debian/control
debian/librpm-tizen.install
debian/rules
misc/Makefile.am
misc/fts.c
misc/fts.h [deleted file]
misc/rpmfts.h [new file with mode: 0644]
python/Makefile.am
python/rpmbmodule.c
python/rpmfd-py.c
python/rpmii-py.c
python/rpmmi-py.c
python/rpmsmodule.c
python/rpmsystem-py.h

index 63cac8bc35960bfb9db7fc1fe26a5f5233dfc0ba..71d12729d464c0875be20bdf0da83227dc39a972 100644 (file)
@@ -26,7 +26,7 @@
 #endif
 
 #include "rpmio/rpmio_internal.h"      /* XXX rpmioSlurp */
-#include "misc/fts.h"
+#include "misc/rpmfts.h"
 #include "lib/cpio.h"
 #include "lib/rpmfi_internal.h"        /* XXX fi->apath */
 #include "lib/rpmug.h"
index 89c54e405dfbbc0db83b9942f6d92d952e0cb0b0..a47b319f5e6e0ef295294bb94ff05ab42e774a2a 100644 (file)
@@ -540,7 +540,7 @@ esac],
 [enable_python=no])
 
 AS_IF([test "$enable_python" = yes],[
-  AM_PATH_PYTHON([2.6],[
+  AM_PATH_PYTHON([3.2],[
     WITH_PYTHON_INCLUDE=`${PYTHON} -c 'from distutils.sysconfig import *; import sys; sys.stdout.write(get_python_inc())'`
     WITH_PYTHON_SUBPACKAGE=1
     save_CPPFLAGS="$CPPFLAGS"
index a3a31bc4cc612de003a416f63ff9c05814896655..5aac236609c02d6f95c8c8129ac59193f396b9e3 100644 (file)
@@ -2,6 +2,7 @@ Source: librpm-tizen
 Section: vcs
 Priority: optional
 Build-Depends: debhelper,
+               dh-python,
                dpkg-dev,
                dh-autoreconf,
                libtool,
@@ -14,7 +15,8 @@ Build-Depends: debhelper,
                libxml2-dev,
                libreadline-dev,
                libsqlite3-dev,
-               python-all-dev,
+               python3-all-dev,
+               python3,
                pkg-config,
                libnspr4-dev,
                libnss3-dev,
@@ -27,11 +29,11 @@ Build-Depends: debhelper,
 Maintainer: Markus Lehtonen <markus.lehtonen@linux.intel.com>
 Standards-Version: 3.9.3
 Homepage: http://rpm.org/
-X-Python-Version: >= 2.6
+X-Python-Version: >= 3
 
 Package: librpm-tizen
 Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${python3:Depends}
 Description:  The RPM libraries for git-buildpackage
  RPM Package Manager is the main tool for managing the software packages
  of Tizen.
index 78f09f7b8da622438b6f4dee66b988c053e10b7e..84594ba09fdd4c1c757571281c280fd2e6d9a558 100644 (file)
@@ -1,4 +1,4 @@
 usr/lib*/*/*.so.*
 usr/lib*/*/rpm/*
-usr/lib/python*/dist-packages/*/*.so
-usr/lib/python*/dist-packages/*/*.py*
+usr/lib/python*/*packages/*/*.so
+usr/lib/python*/*packages/*/*.py*
index 5949630184a946c64379191ca5bf02f24bdb3181..c396cb479d4339790ac05eaa17311ef8a5c956e4 100755 (executable)
@@ -5,8 +5,7 @@ python_mod_name := rpm_tizen
 CPPFLAGS += $(shell pkg-config --cflags nss)
 
 %:
-       dh $@ --with python2,autoreconf,autotools_dev
-
+       dh $@ --with python3,autoreconf,autotools_dev
 override_dh_auto_configure:
        dh_auto_configure -- --disable-dependency-tracking \
                        --libdir=/usr/lib/librpm-tizen \
@@ -28,6 +27,3 @@ override_dh_auto_install:
        install -d debian/tmp/usr/lib/librpm-tizen/rpm/tizen
        ln -s ../tizen_macros debian/tmp/usr/lib/librpm-tizen/rpm/tizen/macros
 
-override_dh_python2:
-       dh_python2 --no-guessing-versions
-
index 4fdde952533955b0f284d58d32542a98254ab3d0..e413a211c401e421c9509171151be63c617b0e80 100644 (file)
@@ -9,5 +9,5 @@ EXTRA_DIST = \
 
 noinst_LTLIBRARIES = libmisc.la
 
-libmisc_la_SOURCES = fts.c fts.h
+libmisc_la_SOURCES = fts.c rpmfts.h
 libmisc_la_LIBADD = @LTLIBOBJS@
index 9fbefe3d25c1dd0770bced40e34a5bdaf7853abf..39f059d801088494394dd9f95342b83ee47a40ea 100644 (file)
 static char sccsid[] = "@(#)fts.c      8.6 (Berkeley) 8/14/94";
 #endif /* LIBC_SCCS and not lint */
 
+/* Conditional to set up proper fstat64 implementation */
+#if defined(hpux) || defined(sun)
+#   define FTS_FSTAT64(_fd, _sbp)   fstat((_fd), (_sbp))
+#else
+#   define FTS_FSTAT64(_fd, _sbp)   fstat64((_fd), (_sbp))
+#endif
+
 #if defined(_LIBC)
 #include <sys/param.h>
 #include <include/sys/stat.h>
 #include <fcntl.h>
 #include <dirent.h>
 #include <errno.h>
-#include "misc/fts.h"
+#include "misc/rpmfts.h"
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 #else
+
+/* Conditionals for working around non-GNU environments */
 #if defined(hpux)
-# define        _INCLUDE_POSIX_SOURCE
+#   define        _INCLUDE_POSIX_SOURCE
 #   define __errno_location()  (&errno)
 #   define dirfd(dirp)         -1
 #   define stat64              stat
-#   define _STAT_VER           0
-#   define __fxstat64(_stat_ver, _fd, _sbp)    fstat((_fd), (_sbp))
 #endif
 #if defined(sun)
 #   define __errno_location()  (&errno)
 #   define dirfd(dirp)         -1
-#   define _STAT_VER           0
-#   define __fxstat64(_stat_ver, _fd, _sbp)    fstat((_fd), (_sbp))
 #endif
 #if defined(__APPLE__)
 #   define __errno_location()  (__error())
-#   define _STAT_VER           0
-#   define __fxstat64(_stat_ver, _fd, _sbp) fstat64((_fd), (_sbp))
 #endif
+
 #include "system.h"
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include "misc/fts.h"
+#include "misc/rpmfts.h"
 #   define __set_errno(val) (*__errno_location ()) = (val)
 #   define __open      open
 #   define __close     close
@@ -1118,7 +1122,7 @@ fts_safe_changedir(FTS * sp, FTSENT * p, int fd, const char * path)
                return (0);
        if (fd < 0 && (newfd = __open(path, O_RDONLY, 0)) < 0)
                return (-1);
-       if (__fxstat64(_STAT_VER, newfd, &sb)) {
+       if (FTS_FSTAT64(newfd, &sb)) {
                ret = -1;
                goto bail;
        }
@@ -1135,3 +1139,4 @@ bail:
        __set_errno (oerrno);
        return (ret);
 }
+
diff --git a/misc/fts.h b/misc/fts.h
deleted file mode 100644 (file)
index 47c650e..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *     @(#)fts.h       8.3 (Berkeley) 8/14/94
- */
-
-#ifndef        _FTS_H
-#define        _FTS_H 1
-
-#include <rpm/rpmutil.h>
-
-#if defined(__GLIBC__)
-#include <features.h>
-#else
-
-#   define __THROW
-#ifdef  __cplusplus
-# define __BEGIN_DECLS  extern "C" {
-# define __END_DECLS    }
-#else
-# define __BEGIN_DECLS
-# define __END_DECLS
-#endif
-
-#if defined(hpux)
-# define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
-# define       _INCLUDE_POSIX_SOURCE
-# define       _LARGEFILE64_SOURCE
-#endif
-
-#if defined(sun)
-# define _D_EXACT_NAMLEN(d) ((d)->d_reclen)
-#endif
-
-#if defined(__APPLE__)
-# define _D_EXACT_NAMLEN(d) (strlen((d)->d_name))
-#endif
-
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdint.h>
-#include <dirent.h>
-
-typedef struct {
-       struct _ftsent *fts_cur;        /*!< current node */
-       struct _ftsent *fts_child;      /*!< linked list of children */
-       struct _ftsent **fts_array;     /*!< sort array */
-       dev_t fts_dev;                  /*!< starting device # */
-       char *fts_path;                 /*!< path for this descent */
-       int fts_rfd;                    /*!< fd for root */
-       int fts_pathlen;                /*!< sizeof(path) */
-       int fts_nitems;                 /*!< elements in the sort array */
-       int (*fts_compar) (const void *, const void *);                 /*!< compare fn */
-
-       DIR * (*fts_opendir) (const char * path);
-       struct dirent * (*fts_readdir) (DIR * dir);
-       int (*fts_closedir) (DIR * dir);
-       int (*fts_stat) (const char * path, struct stat * st);
-       int (*fts_lstat) (const char * path, struct stat * st);
-
-#define        FTS_COMFOLLOW   0x0001          /* follow command line symlinks */
-#define        FTS_LOGICAL     0x0002          /* logical walk */
-#define        FTS_NOCHDIR     0x0004          /* don't change directories */
-#define        FTS_NOSTAT      0x0008          /* don't get stat info */
-#define        FTS_PHYSICAL    0x0010          /* physical walk */
-#define        FTS_SEEDOT      0x0020          /* return dot and dot-dot */
-#define        FTS_XDEV        0x0040          /* don't cross devices */
-#define FTS_WHITEOUT   0x0080          /* return whiteout information */
-#define        FTS_OPTIONMASK  0x00ff          /* valid user option mask */
-
-#define        FTS_NAMEONLY    0x0100          /* (private) child names only */
-#define        FTS_STOP        0x0200          /* (private) unrecoverable error */
-       int fts_options;                /*!< fts_open options, global flags */
-} FTS;
-
-typedef struct _ftsent {
-       struct _ftsent *fts_cycle;      /*!< cycle node */
-       struct _ftsent *fts_parent;     /*!< parent directory */
-       struct _ftsent *fts_link;       /*!< next file in directory */
-       long fts_number;                /*!< local numeric value */
-       void *fts_pointer;              /*!< local address value */
-       char *fts_accpath;              /*!< access path */
-       char *fts_path;                 /*!< root path */
-       int fts_errno;                  /*!< errno for this node */
-       int fts_symfd;                  /*!< fd for symlink */
-       uint16_t fts_pathlen;           /*!< strlen(fts_path) */
-       uint16_t fts_namelen;           /*!< strlen(fts_name) */
-
-       ino_t fts_ino;                  /*!< inode */
-       dev_t fts_dev;                  /*!< device */
-       nlink_t fts_nlink;              /*!< link count */
-
-#define        FTS_ROOTPARENTLEVEL     -1
-#define        FTS_ROOTLEVEL            0
-       short fts_level;                /*!< depth (-1 to N) */
-
-#define        FTS_D            1              /* preorder directory */
-#define        FTS_DC           2              /* directory that causes cycles */
-#define        FTS_DEFAULT      3              /* none of the above */
-#define        FTS_DNR          4              /* unreadable directory */
-#define        FTS_DOT          5              /* dot or dot-dot */
-#define        FTS_DP           6              /* postorder directory */
-#define        FTS_ERR          7              /* error; errno is set */
-#define        FTS_F            8              /* regular file */
-#define        FTS_INIT         9              /* initialized only */
-#define        FTS_NS          10              /* stat(2) failed */
-#define        FTS_NSOK        11              /* no stat(2) requested */
-#define        FTS_SL          12              /* symbolic link */
-#define        FTS_SLNONE      13              /* symbolic link without target */
-#define FTS_W          14              /* whiteout object */
-       uint16_t fts_info;              /*!< user flags for FTSENT structure */
-
-#define        FTS_DONTCHDIR    0x01           /* don't chdir .. to the parent */
-#define        FTS_SYMFOLLOW    0x02           /* followed a symlink to get here */
-       uint16_t fts_flags;             /*!< private flags for FTSENT structure */
-
-#define        FTS_AGAIN        1              /* read node again */
-#define        FTS_FOLLOW       2              /* follow symbolic link */
-#define        FTS_NOINSTR      3              /* no instructions */
-#define        FTS_SKIP         4              /* discard node */
-       uint16_t fts_instr;             /*!< fts_set() instructions */
-
-       struct stat *fts_statp;         /*!< stat(2) information */
-       char fts_name[1];               /*!< file name */
-} FTSENT;
-
-__BEGIN_DECLS
-
-/**
- * Return list of children of the current node.
- * @param sp           file hierarchy state
- * @param instr
- * @return             file set member
- */
-RPM_GNUC_INTERNAL
-FTSENT *Fts_children (FTS * sp, int instr) __THROW
-;
-
-/**
- * Destroy a file hierarchy traversal handle.
- * @param sp           file hierarchy state
- * @return             0 on sucess, -1 on error
- */
-RPM_GNUC_INTERNAL
-int     Fts_close (FTS * sp) __THROW
-;
-
-/**
- * Create a handle for file hierarchy traversal.
- * @param argv         paths that compose a logical file hierarchy
- * @param options      traversal options
- * @param compar       traversal ordering (or NULL)
- * @return             file hierarchy state (or NULL on error)
- */
-RPM_GNUC_INTERNAL
-FTS    *Fts_open (char * const * argv, int options,
-                  int (*compar) (const FTSENT **, const FTSENT **)) __THROW
-       ;
-
-/**
- * Return next node in the file hierarchy traversal.
- * @param sp           file hierarchy state
- * @return             file set member
- */
-RPM_GNUC_INTERNAL
-FTSENT *Fts_read (FTS * sp) __THROW
-;
-
-/**
- * Modify the traversal for a file set member.
- * @param sp           file hierarchy state
- * @param p            file set member
- * @param instr                new disposition for file set member
- * @return             0 on sucess, -1 on error
- */
-RPM_GNUC_INTERNAL
-int     Fts_set (FTS * sp, FTSENT * p, int instr) __THROW
-;
-
-__END_DECLS
-
-#endif /* fts.h */
diff --git a/misc/rpmfts.h b/misc/rpmfts.h
new file mode 100644 (file)
index 0000000..0c059cf
--- /dev/null
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 1989, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)fts.h       8.3 (Berkeley) 8/14/94
+ */
+
+#ifndef        _FTS_H
+#define        _FTS_H 1
+
+#include <rpm/rpmutil.h>
+
+#if defined(__GLIBC__)
+#include <features.h>
+#else
+
+#   define __THROW
+
+#if !defined(_LARGEFILE64_SOURCE)
+# define       _LARGEFILE64_SOURCE
+#endif
+
+#if !defined(_D_EXACT_NAMLEN)
+# define _D_EXACT_NAMLEN(d) (strlen((d)->d_name))
+#endif
+
+#if defined(hpux)
+# if !defined(_INCLUDE_POSIX_SOURCE)
+#  define      _INCLUDE_POSIX_SOURCE
+# endif
+#endif
+
+#endif
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdint.h>
+#include <dirent.h>
+
+typedef struct {
+       struct _ftsent *fts_cur;        /*!< current node */
+       struct _ftsent *fts_child;      /*!< linked list of children */
+       struct _ftsent **fts_array;     /*!< sort array */
+       dev_t fts_dev;                  /*!< starting device # */
+       char *fts_path;                 /*!< path for this descent */
+       int fts_rfd;                    /*!< fd for root */
+       int fts_pathlen;                /*!< sizeof(path) */
+       int fts_nitems;                 /*!< elements in the sort array */
+       int (*fts_compar) (const void *, const void *);                 /*!< compare fn */
+
+       DIR * (*fts_opendir) (const char * path);
+       struct dirent * (*fts_readdir) (DIR * dir);
+       int (*fts_closedir) (DIR * dir);
+       int (*fts_stat) (const char * path, struct stat * st);
+       int (*fts_lstat) (const char * path, struct stat * st);
+
+#define        FTS_COMFOLLOW   0x0001          /* follow command line symlinks */
+#define        FTS_LOGICAL     0x0002          /* logical walk */
+#define        FTS_NOCHDIR     0x0004          /* don't change directories */
+#define        FTS_NOSTAT      0x0008          /* don't get stat info */
+#define        FTS_PHYSICAL    0x0010          /* physical walk */
+#define        FTS_SEEDOT      0x0020          /* return dot and dot-dot */
+#define        FTS_XDEV        0x0040          /* don't cross devices */
+#define FTS_WHITEOUT   0x0080          /* return whiteout information */
+#define        FTS_OPTIONMASK  0x00ff          /* valid user option mask */
+
+#define        FTS_NAMEONLY    0x0100          /* (private) child names only */
+#define        FTS_STOP        0x0200          /* (private) unrecoverable error */
+       int fts_options;                /*!< fts_open options, global flags */
+} FTS;
+
+typedef struct _ftsent {
+       struct _ftsent *fts_cycle;      /*!< cycle node */
+       struct _ftsent *fts_parent;     /*!< parent directory */
+       struct _ftsent *fts_link;       /*!< next file in directory */
+       long fts_number;                /*!< local numeric value */
+       void *fts_pointer;              /*!< local address value */
+       char *fts_accpath;              /*!< access path */
+       char *fts_path;                 /*!< root path */
+       int fts_errno;                  /*!< errno for this node */
+       int fts_symfd;                  /*!< fd for symlink */
+       uint16_t fts_pathlen;           /*!< strlen(fts_path) */
+       uint16_t fts_namelen;           /*!< strlen(fts_name) */
+
+       ino_t fts_ino;                  /*!< inode */
+       dev_t fts_dev;                  /*!< device */
+       nlink_t fts_nlink;              /*!< link count */
+
+#define        FTS_ROOTPARENTLEVEL     -1
+#define        FTS_ROOTLEVEL            0
+       short fts_level;                /*!< depth (-1 to N) */
+
+#define        FTS_D            1              /* preorder directory */
+#define        FTS_DC           2              /* directory that causes cycles */
+#define        FTS_DEFAULT      3              /* none of the above */
+#define        FTS_DNR          4              /* unreadable directory */
+#define        FTS_DOT          5              /* dot or dot-dot */
+#define        FTS_DP           6              /* postorder directory */
+#define        FTS_ERR          7              /* error; errno is set */
+#define        FTS_F            8              /* regular file */
+#define        FTS_INIT         9              /* initialized only */
+#define        FTS_NS          10              /* stat(2) failed */
+#define        FTS_NSOK        11              /* no stat(2) requested */
+#define        FTS_SL          12              /* symbolic link */
+#define        FTS_SLNONE      13              /* symbolic link without target */
+#define FTS_W          14              /* whiteout object */
+       uint16_t fts_info;              /*!< user flags for FTSENT structure */
+
+#define        FTS_DONTCHDIR    0x01           /* don't chdir .. to the parent */
+#define        FTS_SYMFOLLOW    0x02           /* followed a symlink to get here */
+       uint16_t fts_flags;             /*!< private flags for FTSENT structure */
+
+#define        FTS_AGAIN        1              /* read node again */
+#define        FTS_FOLLOW       2              /* follow symbolic link */
+#define        FTS_NOINSTR      3              /* no instructions */
+#define        FTS_SKIP         4              /* discard node */
+       uint16_t fts_instr;             /*!< fts_set() instructions */
+
+       struct stat *fts_statp;         /*!< stat(2) information */
+       char fts_name[1];               /*!< file name */
+} FTSENT;
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Return list of children of the current node.
+ * @param sp           file hierarchy state
+ * @param instr
+ * @return             file set member
+ */
+RPM_GNUC_INTERNAL
+FTSENT *Fts_children (FTS * sp, int instr) __THROW
+;
+
+/**
+ * Destroy a file hierarchy traversal handle.
+ * @param sp           file hierarchy state
+ * @return             0 on success, -1 on error
+ */
+RPM_GNUC_INTERNAL
+int     Fts_close (FTS * sp) __THROW
+;
+
+/**
+ * Create a handle for file hierarchy traversal.
+ * @param argv         paths that compose a logical file hierarchy
+ * @param options      traversal options
+ * @param compar       traversal ordering (or NULL)
+ * @return             file hierarchy state (or NULL on error)
+ */
+RPM_GNUC_INTERNAL
+FTS    *Fts_open (char * const * argv, int options,
+                  int (*compar) (const FTSENT **, const FTSENT **)) __THROW
+       ;
+
+/**
+ * Return next node in the file hierarchy traversal.
+ * @param sp           file hierarchy state
+ * @return             file set member
+ */
+RPM_GNUC_INTERNAL
+FTSENT *Fts_read (FTS * sp) __THROW
+;
+
+/**
+ * Modify the traversal for a file set member.
+ * @param sp           file hierarchy state
+ * @param p            file set member
+ * @param instr                new disposition for file set member
+ * @return             0 on success, -1 on error
+ */
+RPM_GNUC_INTERNAL
+int     Fts_set (FTS * sp, FTSENT * p, int instr) __THROW
+;
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif /* fts.h */
+
index 914bf3dcace9700c98addfec3529e945ed2dd392..1f2e596acef9c141d96db65deaa2a269f8bbf118 100644 (file)
@@ -7,17 +7,17 @@ AM_CPPFLAGS += -I$(top_srcdir)/python
 AM_CPPFLAGS += -I@WITH_PYTHON_INCLUDE@
 AM_CPPFLAGS += -I$(top_srcdir)
 
-rpmpyexec_LTLIBRARIES = _rpmmodule.la _rpmbmodule.la _rpmsmodule.la
+rpmpyexec_LTLIBRARIES = _rpm.la _rpmb.la _rpms.la
 rpmpyexec_DATA = rpm/__init__.py rpm/transaction.py
 rpmpyexecdir = @pyexecdir@/@PYTHON_MODULENAME@
 
-_rpmmodule_la_LDFLAGS = -module -avoid-version -shared
-_rpmmodule_la_LIBADD = \
+_rpm_la_LDFLAGS = -module -avoid-version -shared
+_rpm_la_LIBADD = \
        $(top_builddir)/lib/librpm.la \
        $(top_builddir)/rpmio/librpmio.la \
        @WITH_PYTHON_LIB@
 
-_rpmmodule_la_SOURCES = rpmmodule.c rpmsystem-py.h \
+_rpm_la_SOURCES = rpmmodule.c rpmsystem-py.h \
        header-py.c header-py.h \
        rpmds-py.c rpmds-py.h \
        rpmfd-py.c rpmfd-py.h \
@@ -31,22 +31,22 @@ _rpmmodule_la_SOURCES = rpmmodule.c rpmsystem-py.h \
        rpmte-py.c rpmte-py.h \
        rpmts-py.c rpmts-py.h
 
-_rpmbmodule_la_LDFLAGS = -module -avoid-version -shared
-_rpmbmodule_la_LIBADD = \
+_rpmb_la_LDFLAGS = -module -avoid-version -shared
+_rpmb_la_LIBADD = \
        $(top_builddir)/build/librpmbuild.la \
        $(top_builddir)/lib/librpm.la \
        $(top_builddir)/rpmio/librpmio.la \
        @WITH_PYTHON_LIB@
 
-_rpmbmodule_la_SOURCES = rpmbmodule.c rpmsystem-py.h \
+_rpmb_la_SOURCES = rpmbmodule.c rpmsystem-py.h \
        spec-py.c spec-py.h
 
-_rpmsmodule_la_LDFLAGS = -module -avoid-version -shared
-_rpmsmodule_la_LIBADD = \
+_rpms_la_LDFLAGS = -module -avoid-version -shared
+_rpms_la_LIBADD = \
         $(top_builddir)/sign/librpmsign.la \
         $(top_builddir)/lib/librpm.la \
         $(top_builddir)/rpmio/librpmio.la \
         @WITH_PYTHON_LIB@
 
-_rpmsmodule_la_SOURCES = rpmsmodule.c rpmsystem-py.h
+_rpms_la_SOURCES = rpmsmodule.c rpmsystem-py.h
 
index f6e149118985d3296b81fd982c4e9ef82d9c3c3f..ad30570e40099475812c3f98efab2a62701ff025 100644 (file)
@@ -66,8 +66,8 @@ static struct PyModuleDef moduledef = {
     NULL         /* m_free */
 };
 
-PyObject * PyInit__rpm(void);  /* XXX eliminate gcc warning */
-PyObject * PyInit__rpm(void)
+PyObject * PyInit__rpmb(void); /* XXX eliminate gcc warning */
+PyObject * PyInit__rpmb(void)
 {
     PyObject *m;
 
index 79eb5b6ee3807309e645976ef8cf2776e73cf04a..41f494108b3ce42829aca687873bb55a5e1dc85a 100644 (file)
@@ -230,7 +230,7 @@ static PyObject *rpmfd_read(rpmfdObject *s, PyObject *args, PyObject *kwds)
 
        if (nb > 0) {
            PyObject *tmp = PyBytes_FromStringAndSize(buf, nb);
-           PyString_ConcatAndDel(&res, tmp);
+           PyBytes_ConcatAndDel(&res, tmp);
            left -= nb;
        }
     } while (nb > 0);
index 17fe79e98ac15f1d55d69569e6a42e352386d1ff..9209b54e550894dcc40484561a010b7762f362ee 100644 (file)
@@ -88,7 +88,6 @@ static PyNumberMethods rpmii_as_number = {
        0, /* nb_add */
        0, /* nb_subtract */
        0, /* nb_multiply */
-       0, /* nb_divide */
        0, /* nb_remainder */
        0, /* nb_divmod */
        0, /* nb_power */
index 6c34c9876cd1e648db3a8b355d4823ef58939730..70bb1665b38b208708e99a660ea70516f8e3171f 100644 (file)
@@ -149,7 +149,6 @@ static PyNumberMethods rpmmi_as_number = {
        0, /* nb_add */
        0, /* nb_subtract */
        0, /* nb_multiply */
-       0, /* nb_divide */
        0, /* nb_remainder */
        0, /* nb_divmod */
        0, /* nb_power */
index 3eb24031424de5752701fa1d202999b62c1ba1ac..a8289b5f62ac18ae3e41a8c70d8411ccd51cc50d 100644 (file)
@@ -59,15 +59,15 @@ static struct PyModuleDef moduledef = {
     "_rpms",     /* m_name */
     rpms__doc__, /* m_doc */
     0,           /* m_size */
-    NULL,        /* m_methods */
+    modMethods,  /* m_methods */
     NULL,        /* m_reload */
     NULL,        /* m_traverse */
     NULL,        /* m_clear */
     NULL         /* m_free */
 };
 
-PyObject * PyInit__rpm(void);  /* XXX eliminate gcc warning */
-PyObject * PyInit__rpm(void)
+PyObject * PyInit__rpms(void); /* XXX eliminate gcc warning */
+PyObject * PyInit__rpms(void)
 {
     PyObject *m;
 
index c7286a24efe65f102ddabac3b670e313ca8f8c15..30f74561e26bcaf08d14c0ac69e3b85d138a462c 100644 (file)
@@ -50,6 +50,7 @@ typedef Py_ssize_t (*lenfunc)(PyObject *);
 #define PyInt_FromLong PyLong_FromLong
 #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
 #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
+#define PyInt_AsSsize_t PyLong_AsSsize_t
 #endif
 
 #endif /* H_SYSTEM_PYTHON */