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