~alpine/aports

testing/py3-pycdio: import tests patch v1 PROPOSED

Drew DeVault: 1
 testing/py3-pycdio: import tests patch

 2 files changed, 283 insertions(+), 5 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.alpinelinux.org/~alpine/aports/patches/2916/mbox | git am -3
Learn more about email & git

[PATCH] testing/py3-pycdio: import tests patch Export this patch

Upstream provided a fix for the broken tests on py3.
---
 testing/py3-pycdio/APKBUILD        |  13 +-
 testing/py3-pycdio/py3-tests.patch | 275 +++++++++++++++++++++++++++++
 2 files changed, 283 insertions(+), 5 deletions(-)
 create mode 100644 testing/py3-pycdio/py3-tests.patch

diff --git a/testing/py3-pycdio/APKBUILD b/testing/py3-pycdio/APKBUILD
index 858232ccf1..13f1a01060 100644
--- a/testing/py3-pycdio/APKBUILD
+++ b/testing/py3-pycdio/APKBUILD
@@ -2,7 +2,7 @@
pkgname=py3-pycdio
_pyname=pycdio
pkgver=2.0.0
pkgrel=0
pkgrel=1
pkgdesc="Python interface to libcdio (CD Input and Control library)"
url="https://pypi.org/project/pycdio/"
arch="all"
@@ -11,9 +11,11 @@ depends="python3"
makedepends="python3-dev libcdio-dev swig"
checkdepends="py3-nose"
_pypiprefix="${_pyname%${_pyname#?}}"
source="https://files.pythonhosted.org/packages/source/$_pypiprefix/$_pyname/$_pyname-$pkgver.tar.gz"
builddir="$srcdir/$_pyname-$pkgver"
options="!check" # https://savannah.gnu.org/bugs/index.php?56739
source="
	http://git.savannah.gnu.org/cgit/libcdio/$_pyname.git/snapshot/$_pyname-release-$pkgver.tar.gz
	py3-tests.patch
"
builddir="$srcdir/$_pyname-release-$pkgver"

build() {
	python3 setup.py build
@@ -27,4 +29,5 @@ package() {
	python3 setup.py install --prefix=/usr --root="$pkgdir"
}

sha512sums="b73d49e143e4b5ebf5e8514d526a57f71d004b9ce4298743bb109902ee9551fa586384a236b26da9cd86284b2aa8c31fb02a324a1cebc03f2071d06fbd3e3285  pycdio-2.0.0.tar.gz"
sha512sums="5056de8b9226801576acf82ee4db7482b79749ff30e0d13e95ad89f60ef1b23994c8f5365e41db94c80577fde485b6fee1fcbb8d095a20bbd2f0ada841335b66  pycdio-release-2.0.0.tar.gz
87164912b4a63fe017022e113c855405f53ccd001d64a150d755381be950753f77e696cec57c589e75b5ff7d7cfa5200490a4a5050bdb506d913dbd0a34d18f1  py3-tests.patch"
diff --git a/testing/py3-pycdio/py3-tests.patch b/testing/py3-pycdio/py3-tests.patch
new file mode 100644
index 0000000000..f7ea3d6adc
--- /dev/null
+++ b/testing/py3-pycdio/py3-tests.patch
@@ -0,0 +1,275 @@
From 4c68c5a44f98a7cf3fa388ca66c7d312e44e78df Mon Sep 17 00:00:00 2001
From: rocky <rocky@gnu.org>
Date: Sun, 11 Aug 2019 16:54:52 -0400
Subject: Adjust for Python 3.

See https://savannah.gnu.org/bugs/?56739
---
 .gitignore |   1 +
 README.rst |  11 ++---
 cdio.py    |   8 +++-
 setup.py   | 135 ++++++++++++++++++++++++++++++++++++-------------------------
 4 files changed, 92 insertions(+), 63 deletions(-)

diff --git a/.gitignore b/.gitignore
index 252e696..caa3623 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,4 +13,5 @@
 /pycdio.py
 /pyiso9660.py
 /pytracer.egg-info
+/tmp
 __pycache__
diff --git a/README.rst b/README.rst
index 5acd1a9..3643f32 100644
--- a/README.rst
+++ b/README.rst
@@ -67,11 +67,12 @@ To build on Debian (e.g. Ubuntu):
 
 ::
 
-    apt-get install python-dev
-    apt-get install libcdio-dev
-    apt-get install libiso9660-dev
-    apt-get install swig pkg-config
-
+    $ apt-get install python-dev
+    $ apt-get install libcdio-dev
+    $ apt-get install libiso9660-dev
+    $ apt-get install swig pkg-config
+    $ pip install -e .
+    $ make check
 
 Completeness
 ============
diff --git a/cdio.py b/cdio.py
index 9fb7cc8..63843cd 100644
--- a/cdio.py
+++ b/cdio.py
@@ -19,8 +19,11 @@ and device-dependent properties of a CD-ROM can use this library."""
 
 import pycdio
 import _pycdio
+import sys
 import types
 
+PYTHON2 = sys.version_info[0] <= 2
+
 class DeviceException(Exception):
     """General device or driver exceptions"""
 
@@ -182,9 +185,10 @@ def have_driver(driver_id):
 
     Return True if we have driver driver_id.
     """
-    if isinstance(driver_id, long) or isinstance(driver_id, int):
+    if (isinstance(driver_id, int) or
+        (PYTHON2 and isinstance(driver_id, long))) :
         return pycdio.have_driver(driver_id)
-    elif type(driver_id)==bytes and driver_id in drivers:
+    elif type(driver_id) in (bytes, str) and driver_id in drivers:
         ret = pycdio.have_driver(drivers[driver_id])
         if ret == 0: return False
         if ret == 1: return True
diff --git a/setup.py b/setup.py
index 86101b7..63a5cb9 100755
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-#  Copyright (C) 2015, 2018 Rocky Bernstein <rocky@gnu.org>
+#  Copyright (C) 2015, 2018-2019 Rocky Bernstein <rocky@gnu.org>
 #
 #  This program is free software: you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
@@ -20,8 +20,16 @@ This gets a bit of package info from __pkginfo__.py file
 """
 
 # Get the required package information
-from __pkginfo__ import modname, VERSION, license, short_desc, \
-     web, author, author_email, classifiers
+from __pkginfo__ import (
+    modname,
+    VERSION,
+    license,
+    short_desc,
+    web,
+    author,
+    author_email,
+    classifiers,
+)
 
 from setuptools import setup
 from distutils.core import Extension
@@ -32,51 +40,57 @@ import os
 import shutil
 
 top_dir = os.path.dirname(os.path.abspath(__file__))
-README  = os.path.join(top_dir, 'README.rst')
-pkg_config = os.getenv('PKG_CONFIG') or 'pkg-config'
+README = os.path.join(top_dir, "README.rst")
+pkg_config = os.getenv("PKG_CONFIG") or "pkg-config"
+
 
 def rm_file(*paths):
-  global top_dir
-  toast = os.path.join(top_dir, *paths)
-  try:
-    os.remove(toast)
-  except:
-    pass
-  return
+    global top_dir
+    toast = os.path.join(top_dir, *paths)
+    try:
+        os.remove(toast)
+    except:
+        pass
+    return
+
 
 # Description in package will come from the README file.
-long_description = open(README).read() + '\n\n'
+long_description = open(README).read() + "\n\n"
 
 # We store swig sources in ./swig, but we want the generated python
 # module not to appear in that directory, but instead in the top-level
 # directory where we have the other modules. I'd move *all* of the modules
 # to their own directory if I knew how to do that in distutils.
-swig_opts        = ['-outdir', top_dir]
+swig_opts = ["-outdir", top_dir]
+
 
 class custom_build(build):
     # Reorder build commands such that swig generated files are also copied.
-    sub_commands = [('build_ext', build.has_ext_modules),
-                    ('build_py', build.has_pure_modules),
-                    ('build_clib', build.has_c_libraries),
-                    ('build_scripts', build.has_scripts)]
+    sub_commands = [
+        ("build_ext", build.has_ext_modules),
+        ("build_py", build.has_pure_modules),
+        ("build_clib", build.has_c_libraries),
+        ("build_scripts", build.has_scripts),
+    ]
 
     def run(self):
         # Account for API change after 0.83
-        ge_2 = call([pkg_config,'--atleast-version=2.0.0','libcdio'])
+        ge_2 = call([pkg_config, "--atleast-version=2.0.0", "libcdio"])
         assert ge_2 == 0, "Need at least libcdio 2.0.0 to use this"
         print("libcdio version >= 2.0.0")
         build.run(self)
 
+
 # Find runtime library directories for libcdio and libiso9660 using
 # pkg-config. Then create the right Extension object lists which later
 # get fed into setup()'s list of ext_modules.
 modules = []
-for lib_name in ('libcdio', 'libiso9660'):
-    short_libname = lib_name[3:] # Strip off "lib" from name
+for lib_name in ("libcdio", "libiso9660"):
+    short_libname = lib_name[3:]  # Strip off "lib" from name
 
     # FIXME: DRY this code.
     try:
-        p = Popen([pkg_config, '--libs-only-L', lib_name], stdout=PIPE)
+        p = Popen([pkg_config, "--libs-only-L", lib_name], stdout=PIPE)
     except:
         print("** Error trying to run pkg-config. Is it installed?")
         print("** If not, see http://pkg-config.freedesktop.org")
@@ -85,47 +99,56 @@ for lib_name in ('libcdio', 'libiso9660'):
 
     if p.returncode is None:
         # Strip off blanks and initial '-L'
-        dirs = p.communicate()[0].split(b'-L')[1:]
+        dirs = p.communicate()[0].split(b"-L")[1:]
         runtime_lib_dirs = [d.strip() for d in dirs]
     else:
-        print(("** Didn't the normal return code running pkg-config," +
-               "on %s. got:\n\t%s" % [lib_name, p.returncode]))
+        print(
+            (
+                "** Didn't the normal return code running pkg-config,"
+                + "on %s. got:\n\t%s" % [lib_name, p.returncode]
+            )
+        )
         print("** Will try to add %s anyway." % short_libname)
         runtime_lib_dirs = None
     library_dirs = runtime_lib_dirs
-    p = Popen([pkg_config, '--cflags-only-I', lib_name], stdout=PIPE)
+    p = Popen([pkg_config, "--cflags-only-I", lib_name], stdout=PIPE)
     if p.returncode is None:
-	# String starts '-I' so the first entry is ''; Discard that,
-	# the others we want.
-        dirs = p.communicate()[0].split(b'-I')[1:]
+        # String starts '-I' so the first entry is ''; Discard that,
+        # the others we want.
+        dirs = p.communicate()[0].split(b"-I")[1:]
         include_dirs = [d.strip() for d in dirs]
-    p = Popen([pkg_config, '--libs-only-l', lib_name], stdout=PIPE)
+    p = Popen([pkg_config, "--libs-only-l", lib_name], stdout=PIPE)
     if p.returncode is None:
-	# String starts '-l' so the first entry is ''; Discard that,
-	# the others we want.
-        dirs = p.communicate()[0].split(b'-l')[1:]
+        # String starts '-l' so the first entry is ''; Discard that,
+        # the others we want.
+        dirs = p.communicate()[0].split(b"-l")[1:]
         libraries = [d.strip().decode("utf-8") for d in dirs]
         pass
-    py_shortname = 'py' + short_libname
-    modules.append(Extension('_' + py_shortname,
-                             libraries = libraries,
-                             swig_opts = swig_opts,
-                             include_dirs=include_dirs,
-                             library_dirs=library_dirs,
-                             runtime_library_dirs=runtime_lib_dirs,
-                             sources=['swig/%s.i' % py_shortname]))
-
-setup (author             = author,
-       author_email       = author_email,
-       classifiers        = classifiers,
-       cmdclass           = {'build': custom_build},
-       description        = short_desc,
-       ext_modules        = modules,
-       license            = license,
-       long_description   = long_description,
-       name               = modname,
-       py_modules         = ['cdio', 'iso9660', 'pycdio', 'pyiso9660'],
-       test_suite         = 'nose.collector',
-       url                = web,
-       version            = VERSION,
-       )
+    py_shortname = "py" + short_libname
+    modules.append(
+        Extension(
+            "_" + py_shortname,
+            libraries=libraries,
+            swig_opts=swig_opts,
+            include_dirs=include_dirs,
+            library_dirs=library_dirs,
+            runtime_library_dirs=runtime_lib_dirs,
+            sources=["swig/%s.i" % py_shortname],
+        )
+    )
+
+setup(
+    author=author,
+    author_email=author_email,
+    classifiers=classifiers,
+    cmdclass={"build": custom_build},
+    description=short_desc,
+    ext_modules=modules,
+    license=license,
+    long_description=long_description,
+    name=modname,
+    py_modules=["cdio", "iso9660", "pycdio", "pyiso9660"],
+    test_suite="nose.collector",
+    url=web,
+    version=VERSION,
+)
-- 
cgit v1.0-41-gc330

-- 
2.22.0