time="12:30:13" level=debug msg="Configuring container namespace" time="12:30:13" level=debug msg="Obtained package history" time="12:30:13" level=debug msg="Building package" package=python-feedparser profile="unstable-x86_64" release=10 type=ypkg version=5.2.1 time="12:30:13" level=debug msg="Configuring overlay storage" time="12:30:13" level=debug msg="Mounting overlayfs" time="12:30:13" level=debug msg="Mounting root tmpfs" point="/var/cache/solbuild/unstable-x86_64/python-feedparser" size=128G time="12:30:13" level=debug msg="Creating overlay storage directory" dir="/var/cache/solbuild/unstable-x86_64/python-feedparser/work" time="12:30:13" level=debug msg="Creating overlay storage directory" dir="/var/cache/solbuild/unstable-x86_64/python-feedparser/tmp" time="12:30:13" level=debug msg="Creating overlay storage directory" dir="/var/cache/solbuild/unstable-x86_64/python-feedparser/img" time="12:30:13" level=debug msg="Creating overlay storage directory" dir="/var/cache/solbuild/unstable-x86_64/python-feedparser/union" time="12:30:13" level=debug msg="Mounting backing image" point="/var/lib/solbuild/images/unstable-x86_64.img" time="12:30:13" level=debug msg="Mounting overlayfs" lower="/var/cache/solbuild/unstable-x86_64/python-feedparser/img" target="/var/cache/solbuild/unstable-x86_64/python-feedparser/union" upper="/var/cache/solbuild/unstable-x86_64/python-feedparser/tmp" workdir="/var/cache/solbuild/unstable-x86_64/python-feedparser/work" time="12:30:13" level=debug msg="Bringing up virtual filesystems" time="12:30:13" level=debug msg="Creating VFS directory" dir="/var/cache/solbuild/unstable-x86_64/python-feedparser/union/dev/pts" time="12:30:13" level=debug msg="Creating VFS directory" dir="/var/cache/solbuild/unstable-x86_64/python-feedparser/union/dev/shm" time="12:30:13" level=debug msg="Mounting vfs" vfs="/dev" time="12:30:13" level=debug msg="Mounting vfs" vfs="/dev/pts" time="12:30:13" level=debug msg="Mounting vfs" vfs="/proc" time="12:30:13" level=debug msg="Mounting vfs" vfs="/sys" time="12:30:13" level=debug msg="Mounting vfs" vfs="/dev/shm" time="12:30:13" level=debug msg="Creating target directory" dir="/var/cache/solbuild/unstable-x86_64/python-feedparser/union/home/build/work" time="12:30:13" level=debug msg="Copying source asset" source="/home/builder/BUILDDIR/CLONE/python-feedparser/package.yml" target="/var/cache/solbuild/unstable-x86_64/python-feedparser/union/home/build/work/package.yml" time="12:30:13" level=debug msg="Creating target directory" dir="/var/cache/solbuild/unstable-x86_64/python-feedparser/union/home/build/work/files" time="12:30:13" level=debug msg="Copying source asset" source="/home/builder/BUILDDIR/CLONE/python-feedparser/files/0001-No-more-2to3-supported-in-setuptools.patch" target="/var/cache/solbuild/unstable-x86_64/python-feedparser/union/home/build/work/files/0001-No-more-2to3-supported-in-setuptools.patch" time="12:30:13" level=debug msg="Copying source asset" source="/home/builder/BUILDDIR/CLONE/python-feedparser/files/don-t-always-expect-base64.decodestring-to-exist.patch" target="/var/cache/solbuild/unstable-x86_64/python-feedparser/union/home/build/work/files/don-t-always-expect-base64.decodestring-to-exist.patch" time="12:30:13" level=debug msg="Validating sources" time="12:30:13" level=debug msg="Downloading source" uri="https://pypi.python.org/packages/source/f/feedparser/feedparser-5.2.1.tar.gz" feedparser-5.2.1.tar.gz 0 B / ? feedparser-5.2.1.tar.gz 122 B / 122 B 3.20 KiB/s feedparser-5.2.1.tar.gz 0 B / ? feedparser-5.2.1.tar.gz 280 B / 280 B 2.74 KiB/s feedparser-5.2.1.tar.gz 0 B / ? feedparser-5.2.1.tar.gz 9.08 KiB / 247.03 KiB 40.71 KiB/s feedparser-5.2.1.tar.gz 15.17 KiB / 247.03 KiB 67.87 KiB/s feedparser-5.2.1.tar.gz 24.54 KiB / 247.03 KiB 109.53 KiB/s feedparser-5.2.1.tar.gz 33.84 KiB / 247.03 KiB 150.42 KiB/s feedparser-5.2.1.tar.gz 39.20 KiB / 247.03 KiB 173.55 KiB/s feedparser-5.2.1.tar.gz 49.84 KiB / 247.03 KiB 215.73 KiB/s feedparser-5.2.1.tar.gz 63.17 KiB / 247.03 KiB 272.87 KiB/s feedparser-5.2.1.tar.gz 79.17 KiB / 247.03 KiB 339.65 KiB/s feedparser-5.2.1.tar.gz 95.17 KiB / 247.03 KiB 406.69 KiB/s feedparser-5.2.1.tar.gz 111.17 KiB / 247.03 KiB 464.44 KiB/s feedparser-5.2.1.tar.gz 127.17 KiB / 247.03 KiB 530.07 KiB/s feedparser-5.2.1.tar.gz 143.17 KiB / 247.03 KiB 595.99 KiB/s feedparser-5.2.1.tar.gz 159.17 KiB / 247.03 KiB 660.12 KiB/s feedparser-5.2.1.tar.gz 175.16 KiB / 247.03 KiB 725.22 KiB/s feedparser-5.2.1.tar.gz 207.14 KiB / 247.03 KiB 854.51 KiB/s feedparser-5.2.1.tar.gz 223.13 KiB / 247.03 KiB 919.42 KiB/s feedparser-5.2.1.tar.gz 239.12 KiB / 247.03 KiB 982.08 KiB/s feedparser-5.2.1.tar.gz 247.03 KiB / 247.03 KiB 999.22 KiB/s feedparser-5.2.1.tar.gz 247.03 KiB / 247.03 KiB 999.06 KiB/s 0s time="12:30:13" level=debug msg="Copying host asset" file="/etc/resolv.conf" time="12:30:13" level=debug msg="Copying host asset" file="/etc/eopkg/eopkg.conf" time="12:30:13" level=debug msg="Starting D-BUS" time="12:30:13" level=debug msg="Discovering repos in rootfs" time="12:30:13" level=debug msg="Upgrading system base" Updating repositories Updating repository: Solus eopkg-index.xml.xz.sha1sum (40.0 B) 0% 0.00 --/- [--:--:--] eopkg-index.xml.xz.sha1sum (40.0 B)100% 0.00 --/- [--:--:--] [complete] eopkg-index.xml.xz (3.1 MB) 0% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 0% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 0% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 0% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 0% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 1% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 1% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 1% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 1% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 2% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 2% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 2% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 2% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 3% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 3% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 3% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 3% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 4% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 4% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 4% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 4% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 5% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 5% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 5% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 5% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 6% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 6% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 6% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 6% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 7% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 7% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 7% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 7% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 8% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 8% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 8% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 8% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 9% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 9% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 9% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 9% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 10% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 10% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 10% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 10% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 11% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 11% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 11% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 11% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 12% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 12% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 12% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 12% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 13% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 13% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 13% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 13% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 14% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 14% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 14% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 14% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 15% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 15% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 15% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 15% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 16% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 16% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 16% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 16% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 17% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 17% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 17% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 17% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 18% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 18% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 18% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 18% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 19% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 19% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 19% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 19% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 20% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 20% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 20% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 20% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 21% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 21% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 21% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 21% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 22% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 22% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 22% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 22% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 23% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 23% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 23% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 23% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 24% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 24% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 24% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 24% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 25% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 25% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 25% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 25% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 26% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 26% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 26% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 26% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 27% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 27% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 27% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 27% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 28% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 28% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 28% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 28% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 29% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 29% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 29% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 29% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 30% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 30% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 30% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 30% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 31% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 31% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 31% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 31% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 32% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 32% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 32% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 32% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 33% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 33% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 33% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 33% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 34% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 34% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 34% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 34% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 35% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 35% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 35% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 35% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 36% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 36% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 36% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 36% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 37% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 37% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 37% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 37% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 38% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 38% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 38% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 38% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 38% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 39% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 39% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 39% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 39% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 40% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 40% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 40% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 40% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 41% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 41% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 41% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 41% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 42% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 42% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 42% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 42% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 43% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 43% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 43% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 43% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 44% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 44% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 44% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 44% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 45% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 45% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 45% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 45% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 46% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 46% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 46% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 46% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 47% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 47% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 47% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 47% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 48% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 48% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 48% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 48% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 49% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 49% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 49% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 49% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 50% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 50% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 50% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 50% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 51% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 51% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 51% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 51% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 52% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 52% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 52% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 52% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 53% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 53% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 53% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 53% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 54% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 54% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 54% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 54% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 55% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 55% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 55% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 55% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 56% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 56% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 56% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 56% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 57% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 57% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 57% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 57% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 58% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 58% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 58% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 58% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 59% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 59% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 59% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 59% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 60% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 60% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 60% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 60% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 61% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 61% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 61% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 61% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 62% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 62% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 62% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 62% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 63% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 63% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 63% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 63% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 64% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 64% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 64% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 64% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 65% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 65% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 65% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 65% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 66% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 66% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 66% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 66% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 67% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 67% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 67% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 67% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 68% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 68% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 68% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 68% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 69% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 69% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 69% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 69% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 70% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 70% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 70% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 70% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 71% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 71% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 71% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 71% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 72% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 72% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 72% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 72% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 73% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 73% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 73% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 73% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 74% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 74% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 74% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 74% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 75% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 75% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 75% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 75% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 76% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 76% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 76% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 76% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 77% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 77% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 77% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 77% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 77% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 78% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 78% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 78% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 78% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 79% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 79% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 79% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 79% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 80% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 80% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 80% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 80% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 81% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 81% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 81% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 81% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 82% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 82% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 82% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 82% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 83% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 83% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 83% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 83% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 84% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 84% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 84% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 84% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 85% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 85% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 85% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 85% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 86% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 86% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 86% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 86% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 87% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 87% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 87% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 87% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 88% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 88% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 88% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 88% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 89% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 89% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 89% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 89% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 90% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 90% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 90% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 90% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 91% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 91% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 91% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 91% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 92% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 92% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 92% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 92% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 93% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 93% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 93% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 93% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 94% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 94% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 94% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 94% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 95% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 95% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 95% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 95% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 96% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 96% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 96% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 96% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 97% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 97% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 97% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 97% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 98% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 98% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 98% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 98% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 99% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 99% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 99% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB) 99% 0.00 --/- [--:--:--] eopkg-index.xml.xz (3.1 MB)100% 0.00 --/- [--:--:--] [complete] Package database updated. Warning: Safety switch forces the upgrade of following packages: libgcrypt libxml2 The following packages will be upgraded: libgcrypt libgcrypt-devel libtool libtool-devel libxml2 libxml2-devel Total size of package(s): 1.56 MB Downloading 1 / 6 Package libxml2 found in repository Solus libxml2-30-31-1-x86_64.delta.eopkg [cached] Downloading 2 / 6 Package libgcrypt found in repository Solus libgcrypt-1.10.1-25-1-x86_64.eopkg [cached] Downloading 3 / 6 Package libtool found in repository Solus libtool-2.4.7-10-1-x86_64.eopkg [cached] Downloading 4 / 6 Package libtool-devel found in repository Solus libtool-devel-9-10-1-x86_64.delta.eopkg [cached] Downloading 5 / 6 Package libxml2-devel found in repository Solus libxml2-devel-30-31-1-x86_64.delta.eopkg [cached] Downloading 6 / 6 Package libgcrypt-devel found in repository Solus libgcrypt-devel-1.10.1-25-1-x86_64.eopkg [cached] Installing 1 / 6 libxml2-30-31-1-x86_64.delta.eopkg [cached] Installing libxml2, version 2.9.14, release 31 Upgrading to new upstream version Extracting the files of libxml2 Upgraded libxml2 Installing 2 / 6 libgcrypt-1.10.1-25-1-x86_64.eopkg [cached] Installing libgcrypt, version 1.10.1, release 25 Upgrading to new upstream version Extracting the files of libgcrypt Upgraded libgcrypt Installing 3 / 6 libtool-2.4.7-10-1-x86_64.eopkg [cached] Installing libtool, version 2.4.7, release 10 Upgrading to new upstream version Extracting the files of libtool Upgraded libtool Installing 4 / 6 libtool-devel-9-10-1-x86_64.delta.eopkg [cached] Installing libtool-devel, version 2.4.7, release 10 Upgrading to new upstream version Extracting the files of libtool-devel Upgraded libtool-devel Installing 5 / 6 libxml2-devel-30-31-1-x86_64.delta.eopkg [cached] Installing libxml2-devel, version 2.9.14, release 31 Upgrading to new upstream version Extracting the files of libxml2-devel Upgraded libxml2-devel Installing 6 / 6 libgcrypt-devel-1.10.1-25-1-x86_64.eopkg [cached] Installing libgcrypt-devel, version 1.10.1, release 25 Upgrading to new upstream version Extracting the files of libgcrypt-devel Upgraded libgcrypt-devel Warning: The following package(s) are already installed and are not going to be installed again: iproute2 No packages to install. time="12:30:24" level=debug msg="Asserting system.devel component installation" Warning: The following package(s) are already installed and are not going to be installed again: abi-wizard autoconf automake bash-completion-devel binutils bison catbox cmake dbus-devel diffstat diffutils expat-devel fakeroot file-devel flex flex-devel g++ gcc gfortran glibc-devel gmp-devel gobject-introspection-devel intltool libarchive-bin libffi-devel libgpg-error-devel libgudev-devel libtool-devel libxml2-devel linux-headers m4 make meson mpc-devel mpfr-devel nano nanorc nasm ncurses-devel openssl-11-devel openssl-devel pam-devel patch pkg-config polkit-devel python-devel quilt readline-devel systemd-devel texinfo util-linux-devel ypkg zlib-devel No packages to install. time="12:30:24" level=debug msg="Writing packager file" time="12:30:24" level=debug msg="Installing build dependencies" buildFile="/home/build/work/package.yml" [BuildDep] Checking build-deps for python-feedparser-5.2.1-10 [BuildDep] All build deps satisfied time="12:30:25" level=debug msg="Stopping D-BUS" time="12:30:25" level=debug msg="Dropping container networking" time="12:30:25" level=debug msg="Configuring container networking" time="12:30:25" level=debug msg="Exposing source to container" target="/var/cache/solbuild/unstable-x86_64/python-feedparser/union/home/build/YPKG/sources/feedparser-5.2.1.tar.gz" time="12:30:25" level=debug msg="Exposing ccache to build" dir="/var/cache/solbuild/unstable-x86_64/python-feedparser/union/home/build/.ccache" time="12:30:25" level=debug msg="Copying host asset" file="/etc/resolv.conf" time="12:30:25" level=debug msg="Copying host asset" file="/etc/eopkg/eopkg.conf" time="12:30:25" level=info msg="Now starting build of package" package=python-feedparser + cd /home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + export 'CFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -Wformat -Wformat-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + CFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -Wformat -Wformat-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export 'CXXFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + CXXFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export 'LDFLAGS=-Wl,--copy-dt-needed-entries -Wl,-O1 -Wl,-z,relro -Wl,-z,now -Wl,-z,max-page-size=0x1000 -Wl,-Bsymbolic-functions -Wl,--sort-common' + LDFLAGS='-Wl,--copy-dt-needed-entries -Wl,-O1 -Wl,-z,relro -Wl,-z,now -Wl,-z,max-page-size=0x1000 -Wl,-Bsymbolic-functions -Wl,--sort-common' + export 'FFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + FFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export 'FCFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + FCFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export PATH=/usr/bin:/bin:/usr/sbin:/sbin + PATH=/usr/bin:/bin:/usr/sbin:/sbin + export workdir=/home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + workdir=/home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + export package=python-feedparser + package=python-feedparser + export release=10 + release=10 + export version=5.2.1 + version=5.2.1 + export sources=/home/build/YPKG/sources + sources=/home/build/YPKG/sources + export pkgfiles=/home/build/work/files + pkgfiles=/home/build/work/files + export installdir=/home/build/YPKG/root/python-feedparser/install + installdir=/home/build/YPKG/root/python-feedparser/install + export PKG_ROOT_DIR=/home/build/YPKG/root/python-feedparser + PKG_ROOT_DIR=/home/build/YPKG/root/python-feedparser + export PKG_BUILD_DIR=/home/build/YPKG/root/python-feedparser/build + PKG_BUILD_DIR=/home/build/YPKG/root/python-feedparser/build + export LT_SYS_LIBRARY_PATH=/usr/lib64 + LT_SYS_LIBRARY_PATH=/usr/lib64 + export CC=x86_64-solus-linux-gcc + CC=x86_64-solus-linux-gcc + export CXX=x86_64-solus-linux-g++ + CXX=x86_64-solus-linux-g++ + export LD_AS_NEEDED=1 + LD_AS_NEEDED=1 + export TERM=dumb + TERM=dumb + export SOURCE_DATA_EPOCH=1652286212 + SOURCE_DATA_EPOCH=1652286212 + unset DISPLAY SUDO_USER SUDO_GID SUDO_UID SUDO_COMMAND CDPATH + patch -t -E --no-backup-if-mismatch -f -p1 patching file feedparser/feedparser.py + patch -t -E --no-backup-if-mismatch -f -p1 patching file setup.py + cd /home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + export 'CFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -Wformat -Wformat-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + CFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -Wformat -Wformat-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export 'CXXFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + CXXFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export 'LDFLAGS=-Wl,--copy-dt-needed-entries -Wl,-O1 -Wl,-z,relro -Wl,-z,now -Wl,-z,max-page-size=0x1000 -Wl,-Bsymbolic-functions -Wl,--sort-common' + LDFLAGS='-Wl,--copy-dt-needed-entries -Wl,-O1 -Wl,-z,relro -Wl,-z,now -Wl,-z,max-page-size=0x1000 -Wl,-Bsymbolic-functions -Wl,--sort-common' + export 'FFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + FFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export 'FCFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + FCFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export PATH=/usr/bin:/bin:/usr/sbin:/sbin + PATH=/usr/bin:/bin:/usr/sbin:/sbin + export workdir=/home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + workdir=/home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + export package=python-feedparser + package=python-feedparser + export release=10 + release=10 + export version=5.2.1 + version=5.2.1 + export sources=/home/build/YPKG/sources + sources=/home/build/YPKG/sources + export pkgfiles=/home/build/work/files + pkgfiles=/home/build/work/files + export installdir=/home/build/YPKG/root/python-feedparser/install + installdir=/home/build/YPKG/root/python-feedparser/install + export PKG_ROOT_DIR=/home/build/YPKG/root/python-feedparser + PKG_ROOT_DIR=/home/build/YPKG/root/python-feedparser + export PKG_BUILD_DIR=/home/build/YPKG/root/python-feedparser/build + PKG_BUILD_DIR=/home/build/YPKG/root/python-feedparser/build + export LT_SYS_LIBRARY_PATH=/usr/lib64 + LT_SYS_LIBRARY_PATH=/usr/lib64 + export CC=x86_64-solus-linux-gcc + CC=x86_64-solus-linux-gcc + export CXX=x86_64-solus-linux-g++ + CXX=x86_64-solus-linux-g++ + export LD_AS_NEEDED=1 + LD_AS_NEEDED=1 + export TERM=dumb + TERM=dumb + export SOURCE_DATA_EPOCH=1652286212 + SOURCE_DATA_EPOCH=1652286212 + unset DISPLAY SUDO_USER SUDO_GID SUDO_UID SUDO_COMMAND CDPATH + 2to3-3.10 -wn feedparser/feedparser.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored feedparser/feedparser.py --- feedparser/feedparser.py (original) +++ feedparser/feedparser.py (refactored) @@ -142,20 +142,20 @@ import struct import time import types -import urllib -import urllib2 -import urlparse +import urllib.request, urllib.parse, urllib.error +import urllib.request, urllib.error, urllib.parse +import urllib.parse import warnings -from htmlentitydefs import name2codepoint, codepoint2name, entitydefs +from html.entities import name2codepoint, codepoint2name, entitydefs try: from io import BytesIO as _StringIO except ImportError: try: - from cStringIO import StringIO as _StringIO + from io import StringIO as _StringIO except ImportError: - from StringIO import StringIO as _StringIO + from io import StringIO as _StringIO # ---------- optional modules (feedparser will work without these, but with reduced functionality) ---------- @@ -273,22 +273,22 @@ class NonXMLContentType(ThingsNobodyCaresAboutButMe): pass class UndeclaredNamespace(Exception): pass -SUPPORTED_VERSIONS = {'': u'unknown', - 'rss090': u'RSS 0.90', - 'rss091n': u'RSS 0.91 (Netscape)', - 'rss091u': u'RSS 0.91 (Userland)', - 'rss092': u'RSS 0.92', - 'rss093': u'RSS 0.93', - 'rss094': u'RSS 0.94', - 'rss20': u'RSS 2.0', - 'rss10': u'RSS 1.0', - 'rss': u'RSS (unknown version)', - 'atom01': u'Atom 0.1', - 'atom02': u'Atom 0.2', - 'atom03': u'Atom 0.3', - 'atom10': u'Atom 1.0', - 'atom': u'Atom (unknown version)', - 'cdf': u'CDF', +SUPPORTED_VERSIONS = {'': 'unknown', + 'rss090': 'RSS 0.90', + 'rss091n': 'RSS 0.91 (Netscape)', + 'rss091u': 'RSS 0.91 (Userland)', + 'rss092': 'RSS 0.92', + 'rss093': 'RSS 0.93', + 'rss094': 'RSS 0.94', + 'rss20': 'RSS 2.0', + 'rss10': 'RSS 1.0', + 'rss': 'RSS (unknown version)', + 'atom01': 'Atom 0.1', + 'atom02': 'Atom 0.2', + 'atom03': 'Atom 0.3', + 'atom10': 'Atom 1.0', + 'atom': 'Atom (unknown version)', + 'cdf': 'CDF', } class FeedParserDict(dict): @@ -316,13 +316,13 @@ try: return dict.__getitem__(self, 'tags')[0]['term'] except IndexError: - raise KeyError, "object doesn't have key 'category'" + raise KeyError("object doesn't have key 'category'") elif key == 'enclosures': - norel = lambda link: FeedParserDict([(name,value) for (name,value) in link.items() if name!='rel']) - return [norel(link) for link in dict.__getitem__(self, 'links') if link['rel']==u'enclosure'] + norel = lambda link: FeedParserDict([(name,value) for (name,value) in list(link.items()) if name!='rel']) + return [norel(link) for link in dict.__getitem__(self, 'links') if link['rel']=='enclosure'] elif key == 'license': for link in dict.__getitem__(self, 'links'): - if link['rel']==u'license' and 'href' in link: + if link['rel']=='license' and 'href' in link: return link['href'] elif key == 'updated': # Temporarily help developers out by keeping the old @@ -400,51 +400,51 @@ try: return self.__getitem__(key) except KeyError: - raise AttributeError, "object has no attribute '%s'" % key + raise AttributeError("object has no attribute '%s'" % key) def __hash__(self): return id(self) _cp1252 = { - 128: unichr(8364), # euro sign - 130: unichr(8218), # single low-9 quotation mark - 131: unichr( 402), # latin small letter f with hook - 132: unichr(8222), # double low-9 quotation mark - 133: unichr(8230), # horizontal ellipsis - 134: unichr(8224), # dagger - 135: unichr(8225), # double dagger - 136: unichr( 710), # modifier letter circumflex accent - 137: unichr(8240), # per mille sign - 138: unichr( 352), # latin capital letter s with caron - 139: unichr(8249), # single left-pointing angle quotation mark - 140: unichr( 338), # latin capital ligature oe - 142: unichr( 381), # latin capital letter z with caron - 145: unichr(8216), # left single quotation mark - 146: unichr(8217), # right single quotation mark - 147: unichr(8220), # left double quotation mark - 148: unichr(8221), # right double quotation mark - 149: unichr(8226), # bullet - 150: unichr(8211), # en dash - 151: unichr(8212), # em dash - 152: unichr( 732), # small tilde - 153: unichr(8482), # trade mark sign - 154: unichr( 353), # latin small letter s with caron - 155: unichr(8250), # single right-pointing angle quotation mark - 156: unichr( 339), # latin small ligature oe - 158: unichr( 382), # latin small letter z with caron - 159: unichr( 376), # latin capital letter y with diaeresis + 128: chr(8364), # euro sign + 130: chr(8218), # single low-9 quotation mark + 131: chr( 402), # latin small letter f with hook + 132: chr(8222), # double low-9 quotation mark + 133: chr(8230), # horizontal ellipsis + 134: chr(8224), # dagger + 135: chr(8225), # double dagger + 136: chr( 710), # modifier letter circumflex accent + 137: chr(8240), # per mille sign + 138: chr( 352), # latin capital letter s with caron + 139: chr(8249), # single left-pointing angle quotation mark + 140: chr( 338), # latin capital ligature oe + 142: chr( 381), # latin capital letter z with caron + 145: chr(8216), # left single quotation mark + 146: chr(8217), # right single quotation mark + 147: chr(8220), # left double quotation mark + 148: chr(8221), # right double quotation mark + 149: chr(8226), # bullet + 150: chr(8211), # en dash + 151: chr(8212), # em dash + 152: chr( 732), # small tilde + 153: chr(8482), # trade mark sign + 154: chr( 353), # latin small letter s with caron + 155: chr(8250), # single right-pointing angle quotation mark + 156: chr( 339), # latin small ligature oe + 158: chr( 382), # latin small letter z with caron + 159: chr( 376), # latin capital letter y with diaeresis } _urifixer = re.compile('^([A-Za-z][A-Za-z0-9+-.]*://)(/*)(.*?)') def _urljoin(base, uri): uri = _urifixer.sub(r'\1\3', uri) - if not isinstance(uri, unicode): + if not isinstance(uri, str): uri = uri.decode('utf-8', 'ignore') try: - uri = urlparse.urljoin(base, uri) + uri = urllib.parse.urljoin(base, uri) except ValueError: - uri = u'' - if not isinstance(uri, unicode): + uri = '' + if not isinstance(uri, str): return uri.decode('utf-8', 'ignore') return uri @@ -522,16 +522,16 @@ can_be_relative_uri = set(['link', 'id', 'wfw_comment', 'wfw_commentrss', 'docs', 'url', 'href', 'comments', 'icon', 'logo']) can_contain_relative_uris = set(['content', 'title', 'summary', 'info', 'tagline', 'subtitle', 'copyright', 'rights', 'description']) can_contain_dangerous_markup = set(['content', 'title', 'summary', 'info', 'tagline', 'subtitle', 'copyright', 'rights', 'description']) - html_types = [u'text/html', u'application/xhtml+xml'] - - def __init__(self, baseuri=None, baselang=None, encoding=u'utf-8'): + html_types = ['text/html', 'application/xhtml+xml'] + + def __init__(self, baseuri=None, baselang=None, encoding='utf-8'): if not self._matchnamespaces: - for k, v in self.namespaces.items(): + for k, v in list(self.namespaces.items()): self._matchnamespaces[k.lower()] = v self.feeddata = FeedParserDict() # feed-level data self.encoding = encoding # character encoding self.entries = [] # list of entry-level data - self.version = u'' # feed type/version, see SUPPORTED_VERSIONS + self.version = '' # feed type/version, see SUPPORTED_VERSIONS self.namespacesInUse = {} # dictionary of namespaces defined by the feed # the following are used internally to track state; @@ -556,7 +556,7 @@ self.elementstack = [] self.basestack = [] self.langstack = [] - self.baseuri = baseuri or u'' + self.baseuri = baseuri or '' self.lang = baselang or None self.svgOK = 0 self.title_depth = -1 @@ -586,7 +586,7 @@ # strict xml parsers do -- account for this difference if isinstance(self, _LooseFeedParser): v = v.replace('&', '&') - if not isinstance(v, unicode): + if not isinstance(v, str): v = v.decode('utf-8') return (k, v) @@ -595,12 +595,12 @@ self.depth += 1 # normalize attrs - attrs = map(self._normalize_attributes, attrs) + attrs = list(map(self._normalize_attributes, attrs)) # track xml:base and xml:lang attrsD = dict(attrs) baseuri = attrsD.get('xml:base', attrsD.get('base')) or self.baseuri - if not isinstance(baseuri, unicode): + if not isinstance(baseuri, str): baseuri = baseuri.decode(self.encoding, 'ignore') # ensure that self.baseuri is always an absolute URI that # uses a whitelisted URI scheme (e.g. not `javscript:`) @@ -630,13 +630,13 @@ self.trackNamespace(None, uri) # track inline content - if self.incontent and not self.contentparams.get('type', u'xml').endswith(u'xml'): + if self.incontent and not self.contentparams.get('type', 'xml').endswith('xml'): if tag in ('xhtml:div', 'div'): return # typepad does this 10/2007 # element declared itself as escaped markup, but it isn't really - self.contentparams['type'] = u'application/xhtml+xml' - if self.incontent and self.contentparams.get('type') == u'application/xhtml+xml': - if tag.find(':') <> -1: + self.contentparams['type'] = 'application/xhtml+xml' + if self.incontent and self.contentparams.get('type') == 'application/xhtml+xml': + if tag.find(':') != -1: prefix, tag = tag.split(':', 1) namespace = self.namespacesInUse.get(prefix, '') if tag=='math' and namespace=='http://www.w3.org/1998/Math/MathML': @@ -648,7 +648,7 @@ return self.handle_data('<%s%s>' % (tag, self.strattrs(attrs)), escape=0) # match namespaces - if tag.find(':') <> -1: + if tag.find(':') != -1: prefix, suffix = tag.split(':', 1) else: prefix, suffix = '', tag @@ -680,7 +680,7 @@ def unknown_endtag(self, tag): # match namespaces - if tag.find(':') <> -1: + if tag.find(':') != -1: prefix, suffix = tag.split(':', 1) else: prefix, suffix = '', tag @@ -701,12 +701,12 @@ self.pop(prefix + suffix) # track inline content - if self.incontent and not self.contentparams.get('type', u'xml').endswith(u'xml'): + if self.incontent and not self.contentparams.get('type', 'xml').endswith('xml'): # element declared itself as escaped markup, but it isn't really if tag in ('xhtml:div', 'div'): return # typepad does this 10/2007 - self.contentparams['type'] = u'application/xhtml+xml' - if self.incontent and self.contentparams.get('type') == u'application/xhtml+xml': + self.contentparams['type'] = 'application/xhtml+xml' + if self.incontent and self.contentparams.get('type') == 'application/xhtml+xml': tag = tag.split(':')[-1] self.handle_data('' % tag, escape=0) @@ -734,7 +734,7 @@ c = int(ref[1:], 16) else: c = int(ref) - text = unichr(c).encode('utf-8') + text = chr(c).encode('utf-8') self.elementstack[-1][2].append(text) def handle_entityref(self, ref): @@ -753,7 +753,7 @@ except KeyError: text = '&%s;' % ref else: - text = unichr(name2codepoint[ref]).encode('utf-8') + text = chr(name2codepoint[ref]).encode('utf-8') self.elementstack[-1][2].append(text) def handle_data(self, text, escape=1): @@ -761,7 +761,7 @@ # not containing any character or entity references if not self.elementstack: return - if escape and self.contentparams.get('type') == u'application/xhtml+xml': + if escape and self.contentparams.get('type') == 'application/xhtml+xml': text = _xmlescape(text) self.elementstack[-1][2].append(text) @@ -797,25 +797,25 @@ def mapContentType(self, contentType): contentType = contentType.lower() if contentType == 'text' or contentType == 'plain': - contentType = u'text/plain' + contentType = 'text/plain' elif contentType == 'html': - contentType = u'text/html' + contentType = 'text/html' elif contentType == 'xhtml': - contentType = u'application/xhtml+xml' + contentType = 'application/xhtml+xml' return contentType def trackNamespace(self, prefix, uri): loweruri = uri.lower() if not self.version: if (prefix, loweruri) == (None, 'http://my.netscape.com/rdf/simple/0.9/'): - self.version = u'rss090' + self.version = 'rss090' elif loweruri == 'http://purl.org/rss/1.0/': - self.version = u'rss10' + self.version = 'rss10' elif loweruri == 'http://www.w3.org/2005/atom': - self.version = u'atom10' - if loweruri.find(u'backend.userland.com/rss') <> -1: + self.version = 'atom10' + if loweruri.find('backend.userland.com/rss') != -1: # match any backend.userland.com namespace - uri = u'http://backend.userland.com/rss' + uri = 'http://backend.userland.com/rss' loweruri = uri if loweruri in self._matchnamespaces: self.namespacemap[prefix] = self._matchnamespaces[loweruri] @@ -824,7 +824,7 @@ self.namespacesInUse[prefix or ''] = uri def resolveURI(self, uri): - return _urljoin(self.baseuri or u'', uri) + return _urljoin(self.baseuri or '', uri) def decodeEntities(self, element, data): return data @@ -843,7 +843,7 @@ element, expectingText, pieces = self.elementstack.pop() - if self.version == u'atom10' and self.contentparams.get('type', u'text') == u'application/xhtml+xml': + if self.version == 'atom10' and self.contentparams.get('type', 'text') == 'application/xhtml+xml': # remove enclosing child element, but only if it is a
and # only if all the remaining content is nested underneath it. # This means that the divs would be retained in the following: @@ -866,10 +866,10 @@ # Ensure each piece is a str for Python 3 for (i, v) in enumerate(pieces): - if not isinstance(v, unicode): + if not isinstance(v, str): pieces[i] = v.decode('utf-8') - output = u''.join(pieces) + output = ''.join(pieces) if stripWhitespace: output = output.strip() if not expectingText: @@ -900,9 +900,9 @@ # some feed formats require consumers to guess # whether the content is html or plain text - if not self.version.startswith(u'atom') and self.contentparams.get('type') == u'text/plain': + if not self.version.startswith('atom') and self.contentparams.get('type') == 'text/plain': if self.lookslikehtml(output): - self.contentparams['type'] = u'text/html' + self.contentparams['type'] = 'text/html' # remove temporary cruft from contentparams try: @@ -914,30 +914,30 @@ except KeyError: pass - is_htmlish = self.mapContentType(self.contentparams.get('type', u'text/html')) in self.html_types + is_htmlish = self.mapContentType(self.contentparams.get('type', 'text/html')) in self.html_types # resolve relative URIs within embedded markup if is_htmlish and RESOLVE_RELATIVE_URIS: if element in self.can_contain_relative_uris: - output = _resolveRelativeURIs(output, self.baseuri, self.encoding, self.contentparams.get('type', u'text/html')) + output = _resolveRelativeURIs(output, self.baseuri, self.encoding, self.contentparams.get('type', 'text/html')) # sanitize embedded markup if is_htmlish and SANITIZE_HTML: if element in self.can_contain_dangerous_markup: - output = _sanitizeHTML(output, self.encoding, self.contentparams.get('type', u'text/html')) - - if self.encoding and not isinstance(output, unicode): + output = _sanitizeHTML(output, self.encoding, self.contentparams.get('type', 'text/html')) + + if self.encoding and not isinstance(output, str): output = output.decode(self.encoding, 'ignore') # address common error where people take data that is already # utf-8, presume that it is iso-8859-1, and re-encode it. - if self.encoding in (u'utf-8', u'utf-8_INVALID_PYTHON_3') and isinstance(output, unicode): + if self.encoding in ('utf-8', 'utf-8_INVALID_PYTHON_3') and isinstance(output, str): try: output = output.encode('iso-8859-1').decode('utf-8') except (UnicodeEncodeError, UnicodeDecodeError): pass # map win-1252 extensions to the proper code points - if isinstance(output, unicode): + if isinstance(output, str): output = output.translate(_cp1252) # categories/tags/keywords/whatever are handled in _end_category or _end_tags or _end_itunes_keywords @@ -1019,19 +1019,18 @@ return # all tags must be in a restricted subset of valid HTML tags - if filter(lambda t: t.lower() not in _HTMLSanitizer.acceptable_elements, - re.findall(r' -1: + if colonpos != -1: prefix = name[:colonpos] suffix = name[colonpos+1:] prefix = self.namespacemap.get(prefix, prefix) @@ -1044,11 +1043,11 @@ def _isBase64(self, attrsD, contentparams): if attrsD.get('mode', '') == 'base64': return 1 - if self.contentparams['type'].startswith(u'text/'): + if self.contentparams['type'].startswith('text/'): return 0 - if self.contentparams['type'].endswith(u'+xml'): + if self.contentparams['type'].endswith('+xml'): return 0 - if self.contentparams['type'].endswith(u'/xml'): + if self.contentparams['type'].endswith('/xml'): return 0 return 1 @@ -1074,22 +1073,22 @@ context.setdefault(key, value) def _start_rss(self, attrsD): - versionmap = {'0.91': u'rss091u', - '0.92': u'rss092', - '0.93': u'rss093', - '0.94': u'rss094'} + versionmap = {'0.91': 'rss091u', + '0.92': 'rss092', + '0.93': 'rss093', + '0.94': 'rss094'} #If we're here then this is an RSS feed. #If we don't have a version or have a version that starts with something #other than RSS then there's been a mistake. Correct it. - if not self.version or not self.version.startswith(u'rss'): + if not self.version or not self.version.startswith('rss'): attr_version = attrsD.get('version', '') version = versionmap.get(attr_version) if version: self.version = version elif attr_version.startswith('2.'): - self.version = u'rss20' + self.version = 'rss20' else: - self.version = u'rss' + self.version = 'rss' def _start_channel(self, attrsD): self.infeed = 1 @@ -1107,16 +1106,16 @@ def _start_feed(self, attrsD): self.infeed = 1 - versionmap = {'0.1': u'atom01', - '0.2': u'atom02', - '0.3': u'atom03'} + versionmap = {'0.1': 'atom01', + '0.2': 'atom02', + '0.3': 'atom03'} if not self.version: attr_version = attrsD.get('version') version = versionmap.get(attr_version) if version: self.version = version else: - self.version = u'atom' + self.version = 'atom' def _end_channel(self): self.infeed = 0 @@ -1303,7 +1302,7 @@ name = detail.get('name') email = detail.get('email') if name and email: - context[key] = u'%s (%s)' % (name, email) + context[key] = '%s (%s)' % (name, email) elif name: context[key] = name elif email: @@ -1312,18 +1311,18 @@ author, email = context.get(key), None if not author: return - emailmatch = re.search(ur'''(([a-zA-Z0-9\_\-\.\+]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?))(\?subject=\S+)?''', author) + emailmatch = re.search(r'''(([a-zA-Z0-9\_\-\.\+]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?))(\?subject=\S+)?''', author) if emailmatch: email = emailmatch.group(0) # probably a better way to do the following, but it passes all the tests - author = author.replace(email, u'') - author = author.replace(u'()', u'') - author = author.replace(u'<>', u'') - author = author.replace(u'<>', u'') + author = author.replace(email, '') + author = author.replace('()', '') + author = author.replace('<>', '') + author = author.replace('<>', '') author = author.strip() - if author and (author[0] == u'('): + if author and (author[0] == '('): author = author[1:] - if author and (author[-1] == u')'): + if author and (author[-1] == ')'): author = author[:-1] author = author.strip() if author or email: @@ -1334,7 +1333,7 @@ detail['email'] = email def _start_subtitle(self, attrsD): - self.pushContent('subtitle', attrsD, u'text/plain', 1) + self.pushContent('subtitle', attrsD, 'text/plain', 1) _start_tagline = _start_subtitle _start_itunes_subtitle = _start_subtitle @@ -1344,7 +1343,7 @@ _end_itunes_subtitle = _end_subtitle def _start_rights(self, attrsD): - self.pushContent('rights', attrsD, u'text/plain', 1) + self.pushContent('rights', attrsD, 'text/plain', 1) _start_dc_rights = _start_rights _start_copyright = _start_rights @@ -1573,7 +1572,7 @@ context = self._getContext() value = self._getAttribute(attrsD, 'rdf:resource') attrsD = FeedParserDict() - attrsD['rel'] = u'license' + attrsD['rel'] = 'license' if value: attrsD['href']=value context.setdefault('links', []).append(attrsD) @@ -1586,7 +1585,7 @@ value = self.pop('license') context = self._getContext() attrsD = FeedParserDict() - attrsD['rel'] = u'license' + attrsD['rel'] = 'license' if value: attrsD['href'] = value context.setdefault('links', []).append(attrsD) @@ -1622,13 +1621,13 @@ _start_keywords = _start_category def _start_media_category(self, attrsD): - attrsD.setdefault('scheme', u'http://search.yahoo.com/mrss/category_schema') + attrsD.setdefault('scheme', 'http://search.yahoo.com/mrss/category_schema') self._start_category(attrsD) def _end_itunes_keywords(self): for term in self.pop('itunes_keywords').split(','): if term.strip(): - self._addTag(term.strip(), u'http://www.itunes.com/', None) + self._addTag(term.strip(), 'http://www.itunes.com/', None) def _end_media_keywords(self): for term in self.pop('media_keywords').split(','): @@ -1636,7 +1635,7 @@ self._addTag(term.strip(), None, None) def _start_itunes_category(self, attrsD): - self._addTag(attrsD.get('text'), u'http://www.itunes.com/', None) + self._addTag(attrsD.get('text'), 'http://www.itunes.com/', None) self.push('category', 1) def _end_category(self): @@ -1658,11 +1657,11 @@ self._getContext()['cloud'] = FeedParserDict(attrsD) def _start_link(self, attrsD): - attrsD.setdefault('rel', u'alternate') - if attrsD['rel'] == u'self': - attrsD.setdefault('type', u'application/atom+xml') + attrsD.setdefault('rel', 'alternate') + if attrsD['rel'] == 'self': + attrsD.setdefault('type', 'application/atom+xml') else: - attrsD.setdefault('type', u'text/html') + attrsD.setdefault('type', 'text/html') context = self._getContext() attrsD = self._itsAnHrefDamnIt(attrsD) if 'href' in attrsD: @@ -1673,7 +1672,7 @@ context['links'].append(FeedParserDict(attrsD)) if 'href' in attrsD: expectingText = 0 - if (attrsD.get('rel') == u'alternate') and (self.mapContentType(attrsD.get('type')) in self.html_types): + if (attrsD.get('rel') == 'alternate') and (self.mapContentType(attrsD.get('type')) in self.html_types): context['link'] = attrsD['href'] else: self.push('link', expectingText) @@ -1697,8 +1696,8 @@ def _start_title(self, attrsD): if self.svgOK: - return self.unknown_starttag('title', attrsD.items()) - self.pushContent('title', attrsD, u'text/plain', self.infeed or self.inentry or self.insource) + return self.unknown_starttag('title', list(attrsD.items())) + self.pushContent('title', attrsD, 'text/plain', self.infeed or self.inentry or self.insource) _start_dc_title = _start_title _start_media_title = _start_title @@ -1722,12 +1721,12 @@ self._summaryKey = 'content' self._start_content(attrsD) else: - self.pushContent('description', attrsD, u'text/html', self.infeed or self.inentry or self.insource) + self.pushContent('description', attrsD, 'text/html', self.infeed or self.inentry or self.insource) _start_dc_description = _start_description _start_media_description = _start_description def _start_abstract(self, attrsD): - self.pushContent('description', attrsD, u'text/plain', self.infeed or self.inentry or self.insource) + self.pushContent('description', attrsD, 'text/plain', self.infeed or self.inentry or self.insource) def _end_description(self): if self._summaryKey == 'content': @@ -1740,7 +1739,7 @@ _end_media_description = _end_description def _start_info(self, attrsD): - self.pushContent('info', attrsD, u'text/plain', 1) + self.pushContent('info', attrsD, 'text/plain', 1) _start_feedburner_browserfriendly = _start_info def _end_info(self): @@ -1783,7 +1782,7 @@ self._start_content(attrsD) else: self._summaryKey = 'summary' - self.pushContent(self._summaryKey, attrsD, u'text/plain', 1) + self.pushContent(self._summaryKey, attrsD, 'text/plain', 1) _start_itunes_summary = _start_summary def _end_summary(self): @@ -1797,13 +1796,13 @@ def _start_enclosure(self, attrsD): attrsD = self._itsAnHrefDamnIt(attrsD) context = self._getContext() - attrsD['rel'] = u'enclosure' + attrsD['rel'] = 'enclosure' context.setdefault('links', []).append(FeedParserDict(attrsD)) def _start_source(self, attrsD): if 'url' in attrsD: # This means that we're processing a source element from an RSS 2.0 feed - self.sourcedata['href'] = attrsD[u'url'] + self.sourcedata['href'] = attrsD['url'] self.push('source', 1) self.insource = 1 self.title_depth = -1 @@ -1817,22 +1816,22 @@ self.sourcedata.clear() def _start_content(self, attrsD): - self.pushContent('content', attrsD, u'text/plain', 1) + self.pushContent('content', attrsD, 'text/plain', 1) src = attrsD.get('src') if src: self.contentparams['src'] = src self.push('content', 1) def _start_body(self, attrsD): - self.pushContent('content', attrsD, u'application/xhtml+xml', 1) + self.pushContent('content', attrsD, 'application/xhtml+xml', 1) _start_xhtml_body = _start_body def _start_content_encoded(self, attrsD): - self.pushContent('content', attrsD, u'text/html', 1) + self.pushContent('content', attrsD, 'text/html', 1) _start_fullitem = _start_content_encoded def _end_content(self): - copyToSummary = self.mapContentType(self.contentparams.get('type')) in ([u'text/plain'] + self.html_types) + copyToSummary = self.mapContentType(self.contentparams.get('type')) in (['text/plain'] + self.html_types) value = self.popContent('content') if copyToSummary: self._save('summary', value) @@ -1989,9 +1988,9 @@ def startElementNS(self, name, qname, attrs): namespace, localname = name lowernamespace = str(namespace or '').lower() - if lowernamespace.find(u'backend.userland.com/rss') <> -1: + if lowernamespace.find('backend.userland.com/rss') != -1: # match any backend.userland.com namespace - namespace = u'http://backend.userland.com/rss' + namespace = 'http://backend.userland.com/rss' lowernamespace = namespace if qname and qname.find(':') > 0: givenprefix = qname.split(':')[0] @@ -1999,7 +1998,7 @@ givenprefix = None prefix = self._matchnamespaces.get(lowernamespace, givenprefix) if givenprefix and (prefix == None or (prefix == '' and lowernamespace == '')) and givenprefix not in self.namespacesInUse: - raise UndeclaredNamespace, "'%s' is not associated with a namespace" % givenprefix + raise UndeclaredNamespace("'%s' is not associated with a namespace" % givenprefix) localname = str(localname).lower() # qname implementation is horribly broken in Python 2.1 (it @@ -2018,12 +2017,12 @@ if prefix: localname = prefix.lower() + ':' + localname elif namespace and not qname: #Expat - for name,value in self.namespacesInUse.items(): + for name,value in list(self.namespacesInUse.items()): if name and value == namespace: localname = name + ':' + localname break - for (namespace, attrlocalname), attrvalue in attrs.items(): + for (namespace, attrlocalname), attrvalue in list(attrs.items()): lowernamespace = (namespace or '').lower() prefix = self._matchnamespaces.get(lowernamespace, '') if prefix: @@ -2032,7 +2031,7 @@ for qname in attrs.getQNames(): attrsD[str(qname).lower()] = attrs.getValueByQName(qname) localname = str(localname).lower() - self.unknown_starttag(localname, attrsD.items()) + self.unknown_starttag(localname, list(attrsD.items())) def characters(self, text): self.handle_data(text) @@ -2048,7 +2047,7 @@ if prefix: localname = prefix + ':' + localname elif namespace and not qname: #Expat - for name,value in self.namespacesInUse.items(): + for name,value in list(self.namespacesInUse.items()): if name and value == namespace: localname = name + ':' + localname break @@ -2098,11 +2097,11 @@ # they're declared above, not as they're declared in sgmllib. def goahead(self, i): pass - goahead.func_code = sgmllib.SGMLParser.goahead.func_code + goahead.__code__ = sgmllib.SGMLParser.goahead.__code__ def __parse_starttag(self, i): pass - __parse_starttag.func_code = sgmllib.SGMLParser.parse_starttag.func_code + __parse_starttag.__code__ = sgmllib.SGMLParser.parse_starttag.__code__ def parse_starttag(self,i): j = self.__parse_starttag(i) @@ -2120,9 +2119,9 @@ bytes if bytes is str: raise NameError - self.encoding = self.encoding + u'_INVALID_PYTHON_3' + self.encoding = self.encoding + '_INVALID_PYTHON_3' except NameError: - if self.encoding and isinstance(data, unicode): + if self.encoding and isinstance(data, str): data = data.encode(self.encoding) sgmllib.SGMLParser.feed(self, data) sgmllib.SGMLParser.close(self) @@ -2131,7 +2130,7 @@ if not attrs: return attrs # utility method to be called by descendants - attrs = dict([(k.lower(), v) for k, v in attrs]).items() + attrs = list(dict([(k.lower(), v) for k, v in attrs]).items()) attrs = [(k, k in ('rel', 'type') and v.lower() or v) for k, v in attrs] attrs.sort() return attrs @@ -2147,14 +2146,14 @@ value=value.replace('>','>').replace('<','<').replace('"','"') value = self.bare_ampersand.sub("&", value) # thanks to Kevin Marks for this breathtaking hack to deal with (valid) high-bit attribute values in UTF-8 feeds - if not isinstance(value, unicode): + if not isinstance(value, str): value = value.decode(self.encoding, 'ignore') try: # Currently, in Python 3 the key is already a str, and cannot be decoded again - uattrs.append((unicode(key, self.encoding), value)) + uattrs.append((str(key, self.encoding), value)) except TypeError: uattrs.append((key, value)) - strattrs = u''.join([u' %s="%s"' % (key, value) for key, value in uattrs]) + strattrs = ''.join([' %s="%s"' % (key, value) for key, value in uattrs]) if self.encoding: try: strattrs = strattrs.encode(self.encoding) @@ -2272,7 +2271,7 @@ data = data.replace('"', '"') data = data.replace(''', ''') data = data.replace(''', ''') - if not self.contentparams.get('type', u'xml').endswith(u'xml'): + if not self.contentparams.get('type', 'xml').endswith('xml'): data = data.replace('<', '<') data = data.replace('>', '>') data = data.replace('&', '&') @@ -2339,20 +2338,20 @@ def _makeSafeAbsoluteURI(base, rel=None): # bail if ACCEPTABLE_URI_SCHEMES is empty if not ACCEPTABLE_URI_SCHEMES: - return _urljoin(base, rel or u'') + return _urljoin(base, rel or '') if not base: - return rel or u'' + return rel or '' if not rel: try: - scheme = urlparse.urlparse(base)[0] + scheme = urllib.parse.urlparse(base)[0] except ValueError: - return u'' + return '' if not scheme or scheme in ACCEPTABLE_URI_SCHEMES: return base - return u'' + return '' uri = _urljoin(base, rel) if uri.strip().split(':', 1)[0] not in ACCEPTABLE_URI_SCHEMES: - return u'' + return '' return uri class _HTMLSanitizer(_BaseHTMLProcessor): @@ -2662,7 +2661,7 @@ # declare xlink namespace, if needed if self.mathmlOK or self.svgOK: - if filter(lambda (n,v): n.startswith('xlink:'),attrs): + if [n_v for n_v in attrs if n_v[0].startswith('xlink:')]: if not ('xmlns:xlink','http://www.w3.org/1999/xlink') in attrs: attrs.append(('xmlns:xlink','http://www.w3.org/1999/xlink')) @@ -2671,7 +2670,7 @@ if key in acceptable_attributes: key=keymap.get(key,key) # make sure the uri uses an acceptable uri scheme - if key == u'href': + if key == 'href': value = _makeSafeAbsoluteURI(value) clean_attrs.append((key,value)) elif key=='style': @@ -2757,7 +2756,7 @@ data = data.strip().replace('\r\n', '\n') return data -class _FeedURLHandler(urllib2.HTTPDigestAuthHandler, urllib2.HTTPRedirectHandler, urllib2.HTTPDefaultErrorHandler): +class _FeedURLHandler(urllib.request.HTTPDigestAuthHandler, urllib.request.HTTPRedirectHandler, urllib.request.HTTPDefaultErrorHandler): def http_error_default(self, req, fp, code, msg, headers): # The default implementation just raises HTTPError. # Forget that. @@ -2765,7 +2764,7 @@ return fp def http_error_301(self, req, fp, code, msg, hdrs): - result = urllib2.HTTPRedirectHandler.http_error_301(self, req, fp, + result = urllib.request.HTTPRedirectHandler.http_error_301(self, req, fp, code, msg, hdrs) result.status = code result.newurl = result.geturl() @@ -2788,7 +2787,7 @@ # header the server sent back (for the realm) and retry # the request with the appropriate digest auth headers instead. # This evil genius hack has been brought to you by Aaron Swartz. - host = urlparse.urlparse(req.get_full_url())[1] + host = urllib.parse.urlparse(req.get_full_url())[1] if base64 is None or 'Authorization' not in req.headers \ or 'WWW-Authenticate' not in headers: return self.http_error_default(req, fp, code, msg, headers) @@ -2837,8 +2836,8 @@ if hasattr(url_file_stream_or_string, 'read'): return url_file_stream_or_string - if isinstance(url_file_stream_or_string, basestring) \ - and urlparse.urlparse(url_file_stream_or_string)[0] in ('http', 'https', 'ftp', 'file', 'feed'): + if isinstance(url_file_stream_or_string, str) \ + and urllib.parse.urlparse(url_file_stream_or_string)[0] in ('http', 'https', 'ftp', 'file', 'feed'): # Deal with the feed URI scheme if url_file_stream_or_string.startswith('feed:http'): url_file_stream_or_string = url_file_stream_or_string[5:] @@ -2849,21 +2848,21 @@ # Test for inline user:password credentials for HTTP basic auth auth = None if base64 and not url_file_stream_or_string.startswith('ftp:'): - urltype, rest = urllib.splittype(url_file_stream_or_string) - realhost, rest = urllib.splithost(rest) + urltype, rest = urllib.parse.splittype(url_file_stream_or_string) + realhost, rest = urllib.parse.splithost(rest) if realhost: - user_passwd, realhost = urllib.splituser(realhost) + user_passwd, realhost = urllib.parse.splituser(realhost) if user_passwd: url_file_stream_or_string = '%s://%s%s' % (urltype, realhost, rest) auth = base64.standard_b64encode(user_passwd).strip() # iri support - if isinstance(url_file_stream_or_string, unicode): + if isinstance(url_file_stream_or_string, str): url_file_stream_or_string = _convert_to_idn(url_file_stream_or_string) # try to open with urllib2 (to use optional headers) request = _build_urllib2_request(url_file_stream_or_string, agent, etag, modified, referrer, auth, request_headers) - opener = urllib2.build_opener(*tuple(handlers + [_FeedURLHandler()])) + opener = urllib.request.build_opener(*tuple(handlers + [_FeedURLHandler()])) opener.addheaders = [] # RMK - must clear so we only send our custom User-Agent try: return opener.open(request) @@ -2884,7 +2883,7 @@ pass # treat url_file_stream_or_string as string - if isinstance(url_file_stream_or_string, unicode): + if isinstance(url_file_stream_or_string, str): return _StringIO(url_file_stream_or_string.encode('utf-8')) return _StringIO(url_file_stream_or_string) @@ -2893,14 +2892,14 @@ # this function should only be called with a unicode string # strategy: if the host cannot be encoded in ascii, then # it'll be necessary to encode it in idn form - parts = list(urlparse.urlsplit(url)) + parts = list(urllib.parse.urlsplit(url)) try: parts[1].encode('ascii') except UnicodeEncodeError: # the url needs to be converted to idn notation host = parts[1].rsplit(':', 1) newhost = [] - port = u'' + port = '' if len(host) == 2: port = host.pop() for h in host[0].split('.'): @@ -2908,16 +2907,16 @@ parts[1] = '.'.join(newhost) if port: parts[1] += ':' + port - return urlparse.urlunsplit(parts) + return urllib.parse.urlunsplit(parts) else: return url def _build_urllib2_request(url, agent, etag, modified, referrer, auth, request_headers): - request = urllib2.Request(url) + request = urllib.request.Request(url) request.add_header('User-Agent', agent) if etag: request.add_header('If-None-Match', etag) - if isinstance(modified, basestring): + if isinstance(modified, str): modified = _parse_date(modified) elif isinstance(modified, datetime.datetime): modified = modified.utctimetuple() @@ -2945,7 +2944,7 @@ request.add_header('Accept', ACCEPT_HEADER) # use this for whatever -- cookies, special headers, etc # [('Cookie','Something'),('x-special-header','Another Value')] - for header_name, header_value in request_headers.items(): + for header_name, header_value in list(request_headers.items()): request.add_header(header_name, header_value) request.add_header('A-IM', 'feed') # RFC 3229 support return request @@ -3084,17 +3083,17 @@ registerDateHandler(_parse_date_iso8601) # 8-bit date handling routines written by ytrewq1. -_korean_year = u'\ub144' # b3e2 in euc-kr -_korean_month = u'\uc6d4' # bff9 in euc-kr -_korean_day = u'\uc77c' # c0cf in euc-kr -_korean_am = u'\uc624\uc804' # bfc0 c0fc in euc-kr -_korean_pm = u'\uc624\ud6c4' # bfc0 c8c4 in euc-kr +_korean_year = '\ub144' # b3e2 in euc-kr +_korean_month = '\uc6d4' # bff9 in euc-kr +_korean_day = '\uc77c' # c0cf in euc-kr +_korean_am = '\uc624\uc804' # bfc0 c0fc in euc-kr +_korean_pm = '\uc624\ud6c4' # bfc0 c8c4 in euc-kr _korean_onblog_date_re = \ re.compile('(\d{4})%s\s+(\d{2})%s\s+(\d{2})%s\s+(\d{2}):(\d{2}):(\d{2})' % \ (_korean_year, _korean_month, _korean_day)) _korean_nate_date_re = \ - re.compile(u'(\d{4})-(\d{2})-(\d{2})\s+(%s|%s)\s+(\d{,2}):(\d{,2}):(\d{,2})' % \ + re.compile('(\d{4})-(\d{2})-(\d{2})\s+(%s|%s)\s+(\d{,2}):(\d{,2}):(\d{,2})' % \ (_korean_am, _korean_pm)) def _parse_date_onblog(dateString): '''Parse a string according to the OnBlog 8-bit date format''' @@ -3130,40 +3129,40 @@ # Unicode strings for Greek date strings _greek_months = \ { \ - u'\u0399\u03b1\u03bd': u'Jan', # c9e1ed in iso-8859-7 - u'\u03a6\u03b5\u03b2': u'Feb', # d6e5e2 in iso-8859-7 - u'\u039c\u03ac\u03ce': u'Mar', # ccdcfe in iso-8859-7 - u'\u039c\u03b1\u03ce': u'Mar', # cce1fe in iso-8859-7 - u'\u0391\u03c0\u03c1': u'Apr', # c1f0f1 in iso-8859-7 - u'\u039c\u03ac\u03b9': u'May', # ccdce9 in iso-8859-7 - u'\u039c\u03b1\u03ca': u'May', # cce1fa in iso-8859-7 - u'\u039c\u03b1\u03b9': u'May', # cce1e9 in iso-8859-7 - u'\u0399\u03bf\u03cd\u03bd': u'Jun', # c9effded in iso-8859-7 - u'\u0399\u03bf\u03bd': u'Jun', # c9efed in iso-8859-7 - u'\u0399\u03bf\u03cd\u03bb': u'Jul', # c9effdeb in iso-8859-7 - u'\u0399\u03bf\u03bb': u'Jul', # c9f9eb in iso-8859-7 - u'\u0391\u03cd\u03b3': u'Aug', # c1fde3 in iso-8859-7 - u'\u0391\u03c5\u03b3': u'Aug', # c1f5e3 in iso-8859-7 - u'\u03a3\u03b5\u03c0': u'Sep', # d3e5f0 in iso-8859-7 - u'\u039f\u03ba\u03c4': u'Oct', # cfeaf4 in iso-8859-7 - u'\u039d\u03bf\u03ad': u'Nov', # cdefdd in iso-8859-7 - u'\u039d\u03bf\u03b5': u'Nov', # cdefe5 in iso-8859-7 - u'\u0394\u03b5\u03ba': u'Dec', # c4e5ea in iso-8859-7 + '\u0399\u03b1\u03bd': 'Jan', # c9e1ed in iso-8859-7 + '\u03a6\u03b5\u03b2': 'Feb', # d6e5e2 in iso-8859-7 + '\u039c\u03ac\u03ce': 'Mar', # ccdcfe in iso-8859-7 + '\u039c\u03b1\u03ce': 'Mar', # cce1fe in iso-8859-7 + '\u0391\u03c0\u03c1': 'Apr', # c1f0f1 in iso-8859-7 + '\u039c\u03ac\u03b9': 'May', # ccdce9 in iso-8859-7 + '\u039c\u03b1\u03ca': 'May', # cce1fa in iso-8859-7 + '\u039c\u03b1\u03b9': 'May', # cce1e9 in iso-8859-7 + '\u0399\u03bf\u03cd\u03bd': 'Jun', # c9effded in iso-8859-7 + '\u0399\u03bf\u03bd': 'Jun', # c9efed in iso-8859-7 + '\u0399\u03bf\u03cd\u03bb': 'Jul', # c9effdeb in iso-8859-7 + '\u0399\u03bf\u03bb': 'Jul', # c9f9eb in iso-8859-7 + '\u0391\u03cd\u03b3': 'Aug', # c1fde3 in iso-8859-7 + '\u0391\u03c5\u03b3': 'Aug', # c1f5e3 in iso-8859-7 + '\u03a3\u03b5\u03c0': 'Sep', # d3e5f0 in iso-8859-7 + '\u039f\u03ba\u03c4': 'Oct', # cfeaf4 in iso-8859-7 + '\u039d\u03bf\u03ad': 'Nov', # cdefdd in iso-8859-7 + '\u039d\u03bf\u03b5': 'Nov', # cdefe5 in iso-8859-7 + '\u0394\u03b5\u03ba': 'Dec', # c4e5ea in iso-8859-7 } _greek_wdays = \ { \ - u'\u039a\u03c5\u03c1': u'Sun', # caf5f1 in iso-8859-7 - u'\u0394\u03b5\u03c5': u'Mon', # c4e5f5 in iso-8859-7 - u'\u03a4\u03c1\u03b9': u'Tue', # d4f1e9 in iso-8859-7 - u'\u03a4\u03b5\u03c4': u'Wed', # d4e5f4 in iso-8859-7 - u'\u03a0\u03b5\u03bc': u'Thu', # d0e5ec in iso-8859-7 - u'\u03a0\u03b1\u03c1': u'Fri', # d0e1f1 in iso-8859-7 - u'\u03a3\u03b1\u03b2': u'Sat', # d3e1e2 in iso-8859-7 + '\u039a\u03c5\u03c1': 'Sun', # caf5f1 in iso-8859-7 + '\u0394\u03b5\u03c5': 'Mon', # c4e5f5 in iso-8859-7 + '\u03a4\u03c1\u03b9': 'Tue', # d4f1e9 in iso-8859-7 + '\u03a4\u03b5\u03c4': 'Wed', # d4e5f4 in iso-8859-7 + '\u03a0\u03b5\u03bc': 'Thu', # d0e5ec in iso-8859-7 + '\u03a0\u03b1\u03c1': 'Fri', # d0e1f1 in iso-8859-7 + '\u03a3\u03b1\u03b2': 'Sat', # d3e1e2 in iso-8859-7 } _greek_date_format_re = \ - re.compile(u'([^,]+),\s+(\d{2})\s+([^\s]+)\s+(\d{4})\s+(\d{2}):(\d{2}):(\d{2})\s+([^\s]+)') + re.compile('([^,]+),\s+(\d{2})\s+([^\s]+)\s+(\d{4})\s+(\d{2}):(\d{2}):(\d{2})\s+([^\s]+)') def _parse_date_greek(dateString): '''Parse a string according to a Greek 8-bit date format.''' @@ -3182,22 +3181,22 @@ # Unicode strings for Hungarian date strings _hungarian_months = \ { \ - u'janu\u00e1r': u'01', # e1 in iso-8859-2 - u'febru\u00e1ri': u'02', # e1 in iso-8859-2 - u'm\u00e1rcius': u'03', # e1 in iso-8859-2 - u'\u00e1prilis': u'04', # e1 in iso-8859-2 - u'm\u00e1ujus': u'05', # e1 in iso-8859-2 - u'j\u00fanius': u'06', # fa in iso-8859-2 - u'j\u00falius': u'07', # fa in iso-8859-2 - u'augusztus': u'08', - u'szeptember': u'09', - u'okt\u00f3ber': u'10', # f3 in iso-8859-2 - u'november': u'11', - u'december': u'12', + 'janu\u00e1r': '01', # e1 in iso-8859-2 + 'febru\u00e1ri': '02', # e1 in iso-8859-2 + 'm\u00e1rcius': '03', # e1 in iso-8859-2 + '\u00e1prilis': '04', # e1 in iso-8859-2 + 'm\u00e1ujus': '05', # e1 in iso-8859-2 + 'j\u00fanius': '06', # fa in iso-8859-2 + 'j\u00falius': '07', # fa in iso-8859-2 + 'augusztus': '08', + 'szeptember': '09', + 'okt\u00f3ber': '10', # f3 in iso-8859-2 + 'november': '11', + 'december': '12', } _hungarian_date_format_re = \ - re.compile(u'(\d{4})-([^-]+)-(\d{,2})T(\d{,2}):(\d{2})((\+|-)(\d{,2}:\d{2}))') + re.compile('(\d{4})-([^-]+)-(\d{,2})T(\d{,2}):(\d{2})((\+|-)(\d{,2}:\d{2}))') def _parse_date_hungarian(dateString): '''Parse a string according to a Hungarian 8-bit date format.''' @@ -3360,7 +3359,7 @@ timeparts = parts[3].split(':') timeparts = timeparts + ([0] * (3 - len(timeparts))) try: - (hour, minute, second) = map(int, timeparts) + (hour, minute, second) = list(map(int, timeparts)) except ValueError: return None tzhour = 0 @@ -3527,9 +3526,9 @@ # you should definitely install it if you can. # http://cjkpython.i18n.org/ - bom_encoding = u'' - xml_encoding = u'' - rfc3023_encoding = u'' + bom_encoding = '' + xml_encoding = '' + rfc3023_encoding = '' # Look at the first few bytes of the document to guess what # its encoding may be. We only need to decode enough of the @@ -3539,31 +3538,31 @@ # http://www.w3.org/TR/REC-xml/#sec-guessing-no-ext-info # Check for BOMs first. if data[:4] == codecs.BOM_UTF32_BE: - bom_encoding = u'utf-32be' + bom_encoding = 'utf-32be' data = data[4:] elif data[:4] == codecs.BOM_UTF32_LE: - bom_encoding = u'utf-32le' + bom_encoding = 'utf-32le' data = data[4:] elif data[:2] == codecs.BOM_UTF16_BE and data[2:4] != ZERO_BYTES: - bom_encoding = u'utf-16be' + bom_encoding = 'utf-16be' data = data[2:] elif data[:2] == codecs.BOM_UTF16_LE and data[2:4] != ZERO_BYTES: - bom_encoding = u'utf-16le' + bom_encoding = 'utf-16le' data = data[2:] elif data[:3] == codecs.BOM_UTF8: - bom_encoding = u'utf-8' + bom_encoding = 'utf-8' data = data[3:] # Check for the characters '\n build/lib + popd ~/YPKG/root/python-feedparser/build ~/YPKG/root/python-feedparser/build/feedparser-5.2.1 + popd ~/YPKG/root/python-feedparser/build/feedparser-5.2.1 + cd /home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + export 'CFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -Wformat -Wformat-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + CFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -Wformat -Wformat-security -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export 'CXXFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + CXXFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export 'LDFLAGS=-Wl,--copy-dt-needed-entries -Wl,-O1 -Wl,-z,relro -Wl,-z,now -Wl,-z,max-page-size=0x1000 -Wl,-Bsymbolic-functions -Wl,--sort-common' + LDFLAGS='-Wl,--copy-dt-needed-entries -Wl,-O1 -Wl,-z,relro -Wl,-z,now -Wl,-z,max-page-size=0x1000 -Wl,-Bsymbolic-functions -Wl,--sort-common' + export 'FFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + FFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export 'FCFLAGS=-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + FCFLAGS='-mtune=generic -march=x86-64 -g2 -O2 -pipe -fPIC -D_FORTIFY_SOURCE=2 -fstack-protector-strong --param=ssp-buffer-size=32 -fasynchronous-unwind-tables -ftree-vectorize -feliminate-unused-debug-types -fno-plt -Wall -Wno-error -Wp,-D_REENTRANT' + export PATH=/usr/bin:/bin:/usr/sbin:/sbin + PATH=/usr/bin:/bin:/usr/sbin:/sbin + export workdir=/home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + workdir=/home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + export package=python-feedparser + package=python-feedparser + export release=10 + release=10 + export version=5.2.1 + version=5.2.1 + export sources=/home/build/YPKG/sources + sources=/home/build/YPKG/sources + export pkgfiles=/home/build/work/files + pkgfiles=/home/build/work/files + export installdir=/home/build/YPKG/root/python-feedparser/install + installdir=/home/build/YPKG/root/python-feedparser/install + export PKG_ROOT_DIR=/home/build/YPKG/root/python-feedparser + PKG_ROOT_DIR=/home/build/YPKG/root/python-feedparser + export PKG_BUILD_DIR=/home/build/YPKG/root/python-feedparser/build + PKG_BUILD_DIR=/home/build/YPKG/root/python-feedparser/build + export LT_SYS_LIBRARY_PATH=/usr/lib64 + LT_SYS_LIBRARY_PATH=/usr/lib64 + export CC=x86_64-solus-linux-gcc + CC=x86_64-solus-linux-gcc + export CXX=x86_64-solus-linux-g++ + CXX=x86_64-solus-linux-g++ + export LD_AS_NEEDED=1 + LD_AS_NEEDED=1 + export TERM=dumb + TERM=dumb + export SOURCE_DATA_EPOCH=1652286212 + SOURCE_DATA_EPOCH=1652286212 + unset DISPLAY SUDO_USER SUDO_GID SUDO_UID SUDO_COMMAND CDPATH + python3_install + [[ -e /home/build/YPKG/root/python-feedparser/build/.workdir ]] ++ cat /home/build/YPKG/root/python-feedparser/build/.workdir + cd /home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 ++ basename /home/build/YPKG/root/python-feedparser/build/feedparser-5.2.1 + instdir=feedparser-5.2.1 + pushd .. ~/YPKG/root/python-feedparser/build ~/YPKG/root/python-feedparser/build/feedparser-5.2.1 + [[ ! -d py3build ]] + pushd py3build ~/YPKG/root/python-feedparser/build/py3build ~/YPKG/root/python-feedparser/build ~/YPKG/root/python-feedparser/build/feedparser-5.2.1 + [[ -f setup.py ]] + python3 setup.py install --root=/home/build/YPKG/root/python-feedparser/install running install running build running build_py running install_lib creating /home/build/YPKG/root/python-feedparser/install creating /home/build/YPKG/root/python-feedparser/install/usr creating /home/build/YPKG/root/python-feedparser/install/usr/lib creating /home/build/YPKG/root/python-feedparser/install/usr/lib/python3.10 creating /home/build/YPKG/root/python-feedparser/install/usr/lib/python3.10/site-packages copying build/lib/feedparser.py -> /home/build/YPKG/root/python-feedparser/install/usr/lib/python3.10/site-packages byte-compiling /home/build/YPKG/root/python-feedparser/install/usr/lib/python3.10/site-packages/feedparser.py to feedparser.cpython-310.pyc running install_egg_info running egg_info writing feedparser/feedparser.egg-info/PKG-INFO writing dependency_links to feedparser/feedparser.egg-info/dependency_links.txt writing top-level names to feedparser/feedparser.egg-info/top_level.txt reading manifest file 'feedparser/feedparser.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' writing manifest file 'feedparser/feedparser.egg-info/SOURCES.txt' Copying feedparser/feedparser.egg-info to /home/build/YPKG/root/python-feedparser/install/usr/lib/python3.10/site-packages/feedparser-5.2.1-py3.10.egg-info running install_scripts + popd ~/YPKG/root/python-feedparser/build ~/YPKG/root/python-feedparser/build/feedparser-5.2.1 + popd ~/YPKG/root/python-feedparser/build/feedparser-5.2.1 [Info] Building python-feedparser-5.2.1 [Build] Building native package [Source] Extracting source [Build] Running step: setup [Build] setup successful [Build] Running step: build [Build] build successful [Build] Running step: install [Build] install successful [Examine] Examining packages [Package] Creating /home/build/work/python-feedparser-5.2.1-10-1-x86_64.eopkg ... [Package] Building complete time="12:30:38" level=debug msg="Collecting files" numFiles=3 time="12:30:38" level=debug msg="Collecting build artifact" file="python-feedparser-5.2.1-10-1-x86_64.eopkg" time="12:30:38" level=debug msg="Setting file ownership for current user" file="python-feedparser-5.2.1-10-1-x86_64.eopkg" gid=1004 uid=1003 time="12:30:38" level=debug msg="Collecting build artifact" file=python-feedparser-5.2.1-10.tram time="12:30:38" level=debug msg="Setting file ownership for current user" file=python-feedparser-5.2.1-10.tram gid=1004 uid=1003 time="12:30:38" level=debug msg="Collecting build artifact" file="pspec_x86_64.xml" time="12:30:38" level=debug msg="Setting file ownership for current user" file="pspec_x86_64.xml" gid=1004 uid=1003 time="12:30:38" level=debug msg="Acquiring global lock" time="12:30:38" level=debug msg="Cleaning up" time="12:30:38" level=debug msg="Requesting unmount of all remaining mountpoints" time="12:30:38" level=info msg="Building succeeded"