public inbox for cygwin-apps-cvs@sourceware.org
help / color / mirror / Atom feed
* [cygport - the Cygwin packaging tool] branch master, updated. 0.36.0
@ 2023-01-22 12:58 Jon Turney
  0 siblings, 0 replies; only message in thread
From: Jon Turney @ 2023-01-22 12:58 UTC (permalink / raw)
  To: cygwin-apps-cvs




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=a24d555b79fc8ebcdd088e8240220074469fb334

commit a24d555b79fc8ebcdd088e8240220074469fb334
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sun Jan 22 12:51:44 2023 +0000

    Bump version to 0.36.0

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=add50e560255ae9f6bf6c7cdd1733093c5970e35

commit add50e560255ae9f6bf6c7cdd1733093c5970e35
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat Jan 21 20:27:16 2023 +0000

    Clarify error message suggesting AUTOCONF_VERSION

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=d476afc893ece9bf82982aa4d89cbf75e078dc06

commit d476afc893ece9bf82982aa4d89cbf75e078dc06
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Jan 20 14:05:01 2023 +0000

    doc: Update VERSION and RELEASE constraints to align with reality
    
    Also, point to 'policy document' :)

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=54ea9f57e412b20c1c8d00f3e87b8d28a2b55074

commit 54ea9f57e412b20c1c8d00f3e87b8d28a2b55074
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat Jan 14 15:13:00 2023 +0000

    Update copyrights to 2023

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=d4c9c0acf5dc1c5269e06f7d4d668b337c695f87

commit d4c9c0acf5dc1c5269e06f7d4d668b337c695f87
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat Jan 14 15:21:12 2023 +0000

    Update tests for python2 EOL
    
    * autotools/mate-menus: Disable the python2 bindings
    
    The bindings in this version aren't compatible with python3.  Later
    versions, which are python3 compatible, use introspection-based, rather
    than static bindings (so there's nothing to package), so just disable
    building the python2 bindings, for the moment.
    
    * download/svn: Drop making a python 2.7 wheel
    
    * python/distutils: BeautifulSoup 3.x doesn't support python3, so
    upgrade to bs4
    
    (not sure what to do when distutils goes away, and this becomes another
    test of wheel, but still needs a test for the moment)
    
    * python/pygtk: Drop test
    
    Drop this, snce pygtk is python2 (and gtk+2.0) only, there's nothing
    left to test.
    
    * python/wheel: Drop making a python 2.7 wheel
    
    * waf/all: Update version of lv2
    
    Update to version of lv2 which still uses waf, but a waf which is
    compatible with python3
    
    * Don't install python2 test prerequisites in CI.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=c2317c686f70d185578e54eb8c99ffb7e09ec406

commit c2317c686f70d185578e54eb8c99ffb7e09ec406
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat Jan 14 13:19:10 2023 +0000

    Make PYTHON_WHEEL_VERSIONS containing "2" or "2.x" an error

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=1b873dc3bd9c2e88fa63d885b6e58bccbd90c55f

commit 1b873dc3bd9c2e88fa63d885b6e58bccbd90c55f
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat Jan 14 12:58:45 2023 +0000

    Make 'inherit python2{,-disutils,-wheel}' an error
    
    Make 'inherit python2{,-disutils,-wheel}' an error, as suggeested in
    739c181aea1d ("Updates to tests for further rusting of python2").
    
    Also warn about using deprecated python2 compatibility classes python
    and pygtk.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=1a9e7dfe2274a08c623d1188ed85f6382aaee7f6

commit 1a9e7dfe2274a08c623d1188ed85f6382aaee7f6
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sun Jan 15 11:49:19 2023 +0000

    Fix python/wheel test and restore in CI
    
    Prerequisites were accidentally dropped from CI in dc2317888958
    ("python-wheel: Update for python 3.9")

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=79d15f350662d87000c32e01fc0eb0a59a10dc30

commit 79d15f350662d87000c32e01fc0eb0a59a10dc30
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat Jan 14 12:32:12 2023 +0000

    pkg_info: Use absolute path to cygpath
    
    This avoids using the just built cygpath from ${D}/bin in the PATH, when
    building the cygwin package (which can sometimes fail due to "multiple
    cygwin DLLs" issues).

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=1ba3ceb91652d8c18b4e1fcee8f75258690d98c6

commit 1ba3ceb91652d8c18b4e1fcee8f75258690d98c6
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Jan 9 14:36:06 2023 +0000

    pkg: doc: Drop mention of empty obsoletion packages
    
    We stopped generating these in 62f43d09.
    
    Also mention that PN_debuginfo_OBSOLETES can be used.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=3eed47f65cbb302dbe411870a43b1c41dac8351c

commit 3eed47f65cbb302dbe411870a43b1c41dac8351c
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Jan 9 14:36:57 2023 +0000

    python{,2,3}-distutils: Warn that distutils is deprecated
    
    distutils was deprecated in python 3.10 and removal is planned for python
    3.12.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=82ede2abc687afbb012680d89ace8c042fb082ba

commit 82ede2abc687afbb012680d89ace8c042fb082ba
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sat Dec 31 17:11:44 2022 +0000

    pkg_upload: doc: Update (now redirected) URLs in uploading documentation

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=c7e396d473b87fb1a0157b37be346a5b1b57e348

commit c7e396d473b87fb1a0157b37be346a5b1b57e348
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Dec 30 16:32:22 2022 +0000

    Ensure example cygports in documentation contain LICENSE and HOMEPAGE
    
    perl, php, python.org and R cygclasses already set HOMEPAGE, and should
    possibly set LICENSE using upstream metadata.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=69e0fc67c8d1808510961e93805adc5591f5d36c

commit 69e0fc67c8d1808510961e93805adc5591f5d36c
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Dec 19 17:49:07 2022 +0000

    Add a test of CYGWIN_FILES functionality
    
    This is based on the xinit cygport, simplified so it just exercises
    README, shell profile scripts and postinstall/preinstall scripts.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=0b0066f3e778f760ca36a4454fe52eb603f9cf9d

commit 0b0066f3e778f760ca36a4454fe52eb603f9cf9d
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Dec 19 13:35:59 2022 +0000

    Provide an alternative mechanism to get files into $C
    
    Creating these files from a .cygwin.patch file works fine when building
    from an existing source package, it's less great for creating a source
    package from a VCS checkout.
    
    Provide a semi-useful default of including a Cygwin-specific README, if
    present.
    
    Extend gpg signing to include a manifest of the files listed here, since
    we would have signed the .cygwin.patch itself, if present.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=74321ee1e5cb5501c04c95a2a5631824892c216d

commit 74321ee1e5cb5501c04c95a2a5631824892c216d
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Dec 19 13:28:56 2022 +0000

    Document actions taken on files in $C
    
    Also note that .hint files in $C are obsolete, since we now have better
    ways supplying them, by automatic generation.
    
    I thought about declaring PKG.list files obsolete as well, but they
    perhaps still have a real use when "the contents of a package are too
    many or complicated to easily describe" in PKG_CONTENTS?

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=395827cec3b26114d2a7c10ddc92218e15f405d4

commit 395827cec3b26114d2a7c10ddc92218e15f405d4
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Dec 19 16:04:18 2022 +0000

    Add a test which runs 'cygport vars'

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=278cd196c214f864e44a3514fd2c2890e8df9b6c

commit 278cd196c214f864e44a3514fd2c2890e8df9b6c
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Fri Dec 16 17:45:21 2022 +0000

    Ignore errors in nested source-ing of cygport
    
    This avoids immediately terminating on calling the 'exit' built-in after
    any error in the source-ing (e.g. raised by free code in an inherited
    cygclass), which causes a silent exit now we that suppress stderr from
    that nested source-ing.
    
    We do this by writing "( stuff-which-may-exit ) || true".
    
    You might think that the extra subshell is not needed.  I certainly did,
    (because the rules for the 'errexit' mode (which the subshell inherits)
    are that non-final commands in || lists don't cause an exit if they
    fail).  I was baffled for a long time as to why it's needed until I
    realized that the 'exit' built-in causes the shell to exit, even when
    it succeeds.
    
    The '|| true' ensures that the substitution does not have a non-zero
    exit status, which is an error in the top-level shell.
    
    Fixes: aa665473aa7d ("Send informational messages to stderr")

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=9b9742293d2ede6d99ddae6031a39a8a7cb1655a

commit 9b9742293d2ede6d99ddae6031a39a8a7cb1655a
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Dec 19 17:00:38 2022 +0000

    Add a test of arch-invariant SRC_URI and PATCH_URI logic

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=2eb7c0ebafe55a1db017b7243010be5e40e4db05

commit 2eb7c0ebafe55a1db017b7243010be5e40e4db05
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Wed Dec 14 21:06:40 2022 +0000

    Try harder to preserve upstream timestamps in source package
    
    As suggested in [1], try harder to preserve timestamp information from
    the original files.
    
    This tries harder to retain remote timestamp of downloaded upstream
    files, and preserve timestamp of those, and of patch and cygport files
    when copying to the staging directory for the src archive.
    
    [1] https://cygwin.com/pipermail/cygwin-apps/2020-August/040407.html

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=79fff482c35a700f1348bb774fd446545a345a29

commit 79fff482c35a700f1348bb774fd446545a345a29
Author: Achim Gratz <Stromeko@Stromeko.DE>
Date:   Thu May 13 19:09:27 2021 +0200

    bin/cygport.in: make system-wide defaults overrideable by user defaults
    
    Make system-wide defaults overrideable by user defaults, and document
    the precedence of defaults files.

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=1db9bbe37f01a614b3df154f29abd7ae32b41db6

commit 1db9bbe37f01a614b3df154f29abd7ae32b41db6
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Tue Dec 13 14:25:35 2022 +0000

    pkg: don't put local user:group info into package archives
    
    Don't leak local user and group into the package archives we make. (This
    information is ignored by setup, in any case)
    
    Pick Guest:None to be the owner of all files in the archive, just in
    case we ever need to mark some as owned by Administrator:Administrators
    in future.
    
    Based on https://cygwin.com/pipermail/cygwin/2020-August/245738.html

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=59af06d5ad09d9305803499dafbde3003b33703c

commit 59af06d5ad09d9305803499dafbde3003b33703c
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon May 6 17:43:27 2019 +0100

    pkg: Allow package compression to be specified
    
    Do not hard-code package compression type to xz. Allow compression to be
    specified with the (optional) TAR_COMPRESSION_EXT variable.
    
    This allows packages to be compressed with ZStandard.


Diff:
---
 .github/workflows/cygwin.yml                       |  12 +-
 NEWS                                               |  10 +
 README                                             |   2 +-
 bin/cygport.in                                     |  21 +-
 cygclass/aspell-dict.cygclass                      |   2 +
 cygclass/autotools.cygclass                        |   6 +-
 cygclass/font.cygclass                             |   1 +
 cygclass/httpd.cygclass                            |   2 +
 cygclass/multilib.cygclass                         |   1 +
 cygclass/pygtk.cygclass                            |   2 +
 cygclass/python-distutils.cygclass                 |   3 +
 cygclass/python-wheel.cygclass                     |  15 +-
 cygclass/python.cygclass                           |   2 +
 cygclass/python2-distutils.cygclass                |   3 +
 cygclass/python2-wheel.cygclass                    |   3 +
 cygclass/python2.cygclass                          |   2 +
 cygclass/python3-distutils.cygclass                |   2 +
 cygclass/python3-wheel.cygclass                    |   1 +
 cygport.spec                                       |   2 +-
 data/cygport.conf                                  |  16 +-
 data/sample.cygport                                |   2 +-
 lib/pkg_info.cygpart                               |   4 +-
 lib/pkg_pkg.cygpart                                | 130 +++++++++---
 lib/pkg_upload.cygpart                             |  10 +-
 lib/src_fetch.cygpart                              |   6 +-
 lib/src_postinst.cygpart                           |  26 +++
 lib/src_prep.cygpart                               |  37 +++-
 lib/syntax.cygpart                                 |  20 +-
 meson.build                                        |   2 +-
 testsuite/R/cran/vars                              |   3 +
 testsuite/aspell/dict/vars                         |   3 +
 testsuite/autotools/c/vars                         |   3 +
 testsuite/autotools/gnome/vars                     |   3 +
 testsuite/autotools/gtkmm/vars                     |   3 +
 testsuite/autotools/kde3/vars                      |   3 +
 .../python2-matemenu-1.18.0-1.hint                 |   8 -
 testsuite/autotools/mate/mate-menus.cygport        |  10 +-
 testsuite/autotools/mate/mate-menus.list           |   2 -
 testsuite/autotools/mate/vars                      |   3 +
 testsuite/autotools/meson.build                    |   2 +-
 testsuite/autotools/xfce/vars                      |   3 +
 testsuite/basic/info/vars                          |   3 +
 testsuite/cmake/c/vars                             |   3 +
 testsuite/cmake/kde4/vars                          |   3 +
 testsuite/cmake/kf5/vars                           |   3 +
 testsuite/cmake/qt4/vars                           |   3 +
 testsuite/cmake/qt5/vars                           |   3 +
 testsuite/cross/cmake/vars                         |   3 +
 testsuite/cross/make/vars                          |   3 +
 testsuite/cross/qt5/vars                           |   3 +
 testsuite/docbook/sgml/vars                        |   3 +
 testsuite/docbook/xml/vars                         |   3 +
 testsuite/download/R/vars                          |   3 +
 testsuite/download/bzr/vars                        |   3 +
 testsuite/download/cvs/vars                        |   3 +
 testsuite/download/git/vars                        |   3 +
 testsuite/download/gnome.org/vars                  |   3 +
 testsuite/download/hg/vars                         |   3 +
 testsuite/download/mate/vars                       |   3 +
 testsuite/download/mtn/vars                        |   3 +
 testsuite/download/perl/vars                       |   3 +
 testsuite/download/python.org/vars                 |   3 +
 .../python27-clang/python27-clang-9.0.1-1.hint     |   9 -
 testsuite/download/svn/python-clang.cygport        |   2 +-
 testsuite/download/svn/python-clang.list           |  17 --
 testsuite/download/svn/vars                        |   3 +
 testsuite/download/x.org/vars                      |   3 +
 testsuite/files/meson.build                        |   1 +
 testsuite/files/xinit/README                       |   1 +
 .../dist/xinit/xinit-1.4.2-2-src.hint              |  10 +
 .../dist/xinit/xinit-1.4.2-2.hint                  |   7 +
 .../xinit-debuginfo/xinit-debuginfo-1.4.2-2.hint}  |   6 +-
 testsuite/files/xinit/postinstall.sh               |   3 +
 testsuite/files/xinit/preremove.sh                 |   3 +
 testsuite/files/xinit/profile.d.csh                |   4 +
 testsuite/files/xinit/profile.d.fish               |   4 +
 testsuite/files/xinit/profile.d.sh                 |   1 +
 testsuite/files/xinit/startxdmcp.bat               | 102 ++++++++++
 testsuite/files/xinit/startxwin                    | 226 +++++++++++++++++++++
 testsuite/files/xinit/startxwin.1                  | 213 +++++++++++++++++++
 testsuite/files/xinit/vars                         |   3 +
 testsuite/files/xinit/xinit.cygport                |  44 ++++
 testsuite/files/xinit/xinit.list                   |   9 +
 testsuite/font/install/vars                        |   3 +
 testsuite/font/sfd2ttf/vars                        |   3 +
 testsuite/hints/multiple/vars                      |   3 +
 testsuite/hints/single/vars                        |   3 +
 testsuite/httpd/apxs/vars                          |   3 +
 testsuite/logic/arch_patch/arch_patch.cygport      |  12 ++
 testsuite/logic/arch_src/arch_src.cygport          |  12 ++
 testsuite/logic/meson.build                        |   9 +
 testsuite/lua/all/vars                             |   4 +
 testsuite/meson.build                              |   6 +-
 testsuite/meson/c/vars                             |   3 +
 testsuite/meson/gnome/vars                         |   3 +
 testsuite/ocaml/dune/vars                          |   4 +
 testsuite/ocaml/findlib/vars                       |   3 +
 testsuite/perl/ExtUtils-MakeMaker/vars             |   3 +
 testsuite/perl/Module-Build/vars                   |   3 +
 testsuite/php/pear/vars                            |   3 +
 testsuite/php/pecl/vars                            |   3 +
 .../python3-beautifulsoup-4.11.1-1-src.hint}       |   2 +-
 .../python3-beautifulsoup-4.11.1-1.hint}           |   3 +-
 .../python/distutils/python-beautifulsoup.cygport  |  18 +-
 .../python/distutils/python-beautifulsoup.list     | 114 ++++++++++-
 testsuite/python/distutils/vars                    |   3 +
 testsuite/python/meson.build                       |  10 +-
 .../python-pynotify-0.1.1-5-src.hint               |   7 -
 .../python-pynotify/python-pynotify-0.1.1-5.hint   |   5 -
 .../pygtk/notify-python-0.1.1-libnotify-0.7.patch  |  37 ----
 testsuite/python/pygtk/python-pynotify.cygport     |  18 --
 testsuite/python/pygtk/python-pynotify.list        |  10 -
 .../python-six-wheel-1.10.0-1.hint                 |   2 +-
 .../python27-six/python27-six-1.10.0-1.hint        |  10 -
 .../python37-six/python37-six-1.10.0-1.hint        |   2 +-
 .../python38-six/python38-six-1.10.0-1.hint        |   2 +-
 testsuite/python/wheel/python-six.cygport          |   2 +-
 testsuite/python/wheel/python-six.list             |  14 --
 testsuite/python/wheel/vars                        |   3 +
 testsuite/qmake/qt3/vars                           |   3 +
 testsuite/qmake/qt4/vars                           |   3 +
 testsuite/qmake/qt5/vars                           |   3 +
 testsuite/ruby/gem/vars                            |   3 +
 testsuite/texlive/collection/vars                  |   3 +
 testsuite/vars                                     |  35 ++++
 testsuite/waf/all/1.12.0-cygwin-shlib.patch        |  66 ------
 .../dist/lv2/lv2-1.18.4-1-src.hint}                |   0
 .../dist/lv2/lv2-1.18.4-1.hint}                    |   0
 .../dist/lv2/lv2-devel/lv2-devel-1.18.4-1.hint}    |   2 +-
 testsuite/waf/all/lv2.cygport                      |   9 +-
 testsuite/waf/all/lv2.list                         |  90 +++++---
 testsuite/waf/all/vars                             |   3 +
 testsuite/waf/all/waf-python2.patch                |  16 --
 testsuite/waf/meson.build                          |   2 +-
 134 files changed, 1333 insertions(+), 375 deletions(-)

diff --git a/.github/workflows/cygwin.yml b/.github/workflows/cygwin.yml
index 9ed59f58..ec1d405b 100644
--- a/.github/workflows/cygwin.yml
+++ b/.github/workflows/cygwin.yml
@@ -95,11 +95,11 @@ jobs:
         perl,^
         perl-Module-Build,^
         php-PEAR,^
-        python-gtk2.0-devel,^
-        python2-devel,^
-        python27-pip,^
-        python27-setuptools,^
+        python38-devel,^
         python27-wheel,^
+        python37-pip,^
+        python37-setuptools,^
+        python37-wheel,^
         python38-pip,^
         python38-setuptools,^
         python38-wheel,^
@@ -120,7 +120,9 @@ jobs:
     - name: Fixup Cygwin installation
       run: |
         bash --login
-        bash -c '/usr/sbin/alternatives --set python /usr/bin/python3.8 ; /usr/sbin/alternatives --set python3 /usr/bin/python3.8'
+        bash -c '/usr/sbin/alternatives --set python /usr/bin/python3.8'
+        bash -c '/usr/sbin/alternatives --set python3 /usr/bin/python3.8'
+        bash -c '/usr/sbin/alternatives --set python3-config /usr/bin/python3.8-config'
         bash -c 'sed -i s#/usr/bin/python\$#/usr/bin/python3.9# /usr/bin/pip3.9'
         bash -c 'sed -i s@#!/bin/python\$@#!/bin/python2@ /usr/bin/bzr'
         bash -c 'git config --system --add safe.directory /cygdrive/d/a/cygport/cygport'
diff --git a/NEWS b/NEWS
index 15bd6abb..9a27e545 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,13 @@
+0.36.0:
+	* Allow package compression to be specified with TAR_COMPRESSION_EXT
+	* Add CYGWIN_FILES to place files in $C, as an alternative to creating
+           them with a ${PF}.cygwin.patch file
+	* python{,2,3}-distutils: Warn that distutils is deprecated
+	* python2{,-disutils,-wheel}: Stop with an error because python2 is
+           sunset
+	* python-wheel: Stop with an error if PYTHON_WHEEL_VERSIONS contains "2"
+           or "2.x"
+
 0.35.5:
 	* Default to x86_64-pc-cygwin target on Linux.
 	* 'inform' messages are now sent to stderr
diff --git a/README b/README
index c8218e45..fd16df6b 100644
--- a/README
+++ b/README
@@ -185,7 +185,7 @@ included in CYGWIN-PATCHES.
     
 Custom postinstall and preremove commands may be included in the
 CYGWIN-PATCHES directory as postinstall.sh and preremove.sh; these
-scripts should be written as stubs, without the sh-bang header.
+scripts should be written as stubs, without the shebang header.
 
 
 5. REQUIREMENTS
diff --git a/bin/cygport.in b/bin/cygport.in
index 446734fa..46647573 100755
--- a/bin/cygport.in
+++ b/bin/cygport.in
@@ -57,7 +57,7 @@ source ${_privlibdir}/syntax.cygpart
 #  The Cygport Reference Manual documents cygport, a utility for creating and
 #  building software packages for the Cygwin platform.
 #
-#  |html Copyright &#169; 2006-2020 Cygport authors
+#  |html Copyright &#169; 2006-2023 Cygport authors
 #
 #  Permission is granted to copy, distribute and/or modify this manual
 #  under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -263,16 +263,16 @@ fi
 declare    MAKEOPTS="${_nproc:--j $(($(nproc 2>/dev/null) + 1))} "
 
 # load configuration
-for conf in "${HOME}/.config/cygport.conf" \
-	    "${HOME}/.cygport/cygport.conf" \
-	    "${HOME}/.cygport.conf" \
-	    "${HOME}/.cygportrc" \
-	    "${_privsysconfdir}/cygport.conf"
+for conf in \
+	"${_privsysconfdir}/cygport.conf" \
+	"${HOME}/.config/cygport.conf" \
+	"${HOME}/.cygport/cygport.conf" \
+	"${HOME}/.cygport.conf" \
+	"${HOME}/.cygportrc"
 do
 	if [ -e "${conf}" ]
 	then
 		source "${conf}" || error "could not read ${conf}"
-		break;
 	fi
 done
 unset conf;
@@ -431,7 +431,10 @@ do
     n=0
     while (( n < ${#ARCHES[*]} ))
     do
-        read -r < <(declare ARCH=${ARCHES[$n]}; declare ARCH_${ARCH}=1; source ${top}/${cygportfile} 2>/dev/null; eval echo "\$${VAR}")
+        # the '\n' at the end ensures that if the source-ing fails, the process
+        # substitution still outputs something, so read has some input and
+        # doesn't fail on seeing an end-of-file
+        read -r < <( (declare ARCH=${ARCHES[$n]}; declare ARCH_${ARCH}=1; source ${top}/${cygportfile} 2>/dev/null ; eval echo "\$${VAR}}" ) || echo "\n" )
         VALUE[$n]=${REPLY}
         if (( n > 0 ))
         then
@@ -447,7 +450,7 @@ unset n VALUE ARCHES VAR
 
 # probe if the cygport sets ARCH - if it does, set ARCHES to that value,
 # otherwise set it to the default value "all".
-PROBE_ARCH=$(unset ARCH; source ${top}/${cygportfile} 2>/dev/null; echo "${ARCH}")
+PROBE_ARCH=$( (unset ARCH; source ${top}/${cygportfile} 2>/dev/null ; echo "${ARCH}") || true )
 if [ -z "${PROBE_ARCH}" ]
 then
 	declare -r ARCHES="all"
diff --git a/cygclass/aspell-dict.cygclass b/cygclass/aspell-dict.cygclass
index 565c44b6..22dd97b1 100644
--- a/cygclass/aspell-dict.cygclass
+++ b/cygclass/aspell-dict.cygclass
@@ -47,6 +47,8 @@
 #    to eventually replace Ispell. It can either be used as a library or as an
 #    independent spell checker.
 #    This package provides English dictionaries for Aspell."
+#    HOMEPAGE="http://aspell.net/"
+#    LICENSE="MIT and BSD"
 #
 #  REQUIRES
 #  aspell
diff --git a/cygclass/autotools.cygclass b/cygclass/autotools.cygclass
index c83dd001..6f5ead2d 100644
--- a/cygclass/autotools.cygclass
+++ b/cygclass/autotools.cygclass
@@ -42,6 +42,7 @@
 #    containing a match to a specified pattern. By default, grep prints the
 #    matching lines."
 #    HOMEPAGE="https://www.gnu.org/software/grep/"
+#    LICENSE="GPL-2.0-or-later"
 #    SRC_URI="mirror://gnu/grep/grep-${VERSION}.tar.xz"
 #
 #  If the only customization needed is to add configure flags, use CYGCONF_ARGS:
@@ -57,6 +58,7 @@
 #    column number, auto-indentation, feature toggles, internationalization support,
 #    and filename tab completion."
 #    HOMEPAGE="https://www.nano-editor.org/"
+#    LICENSE="GPL-3.0-or-later"
 #    SRC_URI="https://www.nano-editor.org/dist/v${VERSION%.*}/nano-${VERSION}.tar.gz"
 #    PATCH_URI="2.2.4-wchar.patch"
 #    
@@ -74,6 +76,8 @@
 #    SUMMARY="Double-array digital search tree library"
 #    DESCRIPTION="This is an implementation of double-array structure for
 #    representing trie, as proposed by Junichi Aoe."
+#    HOMEPAGE="https://linux.thai.net/~thep/datrie/datrie.html"
+#    LICENSE="LGPL"
 #    
 #    PKG_NAMES="${NAME}1 ${NAME}-devel ${NAME}-doc"
 #    # see PKG_CONTENTS
@@ -671,7 +675,7 @@ cygconf() {
 	confver_min=${confver##*.}
 	if [ -z $confver_maj ]
 	then
-		error "could not detect autoconf version; perhaps set AUTOCONF_VERSION?";
+		error "could not determine the autoconf version used to generate ./configure; perhaps set AUTOCONF_VERSION?";
 	fi
 	if [ $confver_maj -ne 2 ]
 	then
diff --git a/cygclass/font.cygclass b/cygclass/font.cygclass
index 545b8be6..20bbfa54 100644
--- a/cygclass/font.cygclass
+++ b/cygclass/font.cygclass
@@ -38,6 +38,7 @@
 #    Humanist sans serif, and was developed for on-screen reading; in particular,
 #    reading web pages on a mobile phone."
 #    HOMEPAGE="https://gitlab.gnome.org/GNOME/cantarell-fonts/"
+#    LICENSE="OFL"
 #    
 #    src_compile() { :; }
 #    
diff --git a/cygclass/httpd.cygclass b/cygclass/httpd.cygclass
index e210ec6e..125d1f6e 100644
--- a/cygclass/httpd.cygclass
+++ b/cygclass/httpd.cygclass
@@ -48,6 +48,7 @@
 #    delivered by the proxy module (mod_proxy) for viruses using the Clamav
 #    virus scanning engine."
 #    HOMEPAGE="http://software.othello.ch/mod_clamav/"
+#    LICENSE="GPL-2.0-only"
 #    SRC_URI="http://software.othello.ch/mod_clamav/mod_clamav-${VERSION}.tar.gz"
 #    SRC_DIR="mod_clamav-${VERSION}"
 #    PATCH_URI="0.22-cygwin-layout.patch"
@@ -78,6 +79,7 @@
 #    city that a web request originated from.  It uses the GeoIP library and
 #    database to perform the lookup."
 #    HOMEPAGE="https://dev.maxmind.com/geoip/legacy/mod_geoip2/"
+#    LICENSE="Apache-1.1"
 #    SRC_URI="https://github.com/maxmind/geoip-api-mod_geoip2/archive/v${VERSION}.tar.gz"
 #    SRC_DIR="geoip-api-mod_geoip2-${VERSION}"
 #    
diff --git a/cygclass/multilib.cygclass b/cygclass/multilib.cygclass
index a9fbc85f..7ce36e73 100644
--- a/cygclass/multilib.cygclass
+++ b/cygclass/multilib.cygclass
@@ -53,6 +53,7 @@
 #  CATEGORY="Devel"
 #  SUMMARY="zlib for Linux x86-64/x32 toolchain"
 #  HOMEPAGE="https://www.zlib.net/"
+#  LICENSE="Zlib"
 #  SRC_URI="mirror://sourceforge/libpng/zlib-${VERSION}.tar.gz"
 #  SRC_DIR="zlib-${VERSION}"
 #  
diff --git a/cygclass/pygtk.cygclass b/cygclass/pygtk.cygclass
index b1412880..8bc38a8e 100644
--- a/cygclass/pygtk.cygclass
+++ b/cygclass/pygtk.cygclass
@@ -40,6 +40,8 @@
 #  gnome.org.cygclass (unless mate.cygclass has been inherit()ed), python.cygclass
 #****
 
+warning "pygtk.cygclass: pygtk bindings are limited to got gtk+2 and python2 and considered obsolete."
+
 case ${PN#python-} in
 	${PN})
 		# for packages which provide pygtk bindings together with the C lib.
diff --git a/cygclass/python-distutils.cygclass b/cygclass/python-distutils.cygclass
index 177bb88d..14d4ae65 100644
--- a/cygclass/python-distutils.cygclass
+++ b/cygclass/python-distutils.cygclass
@@ -27,6 +27,9 @@
 #  INHERITS
 #  python2-distutils.cygclass, python.cygclass
 #****
+
+warning "python-distutils.cygclass: deprecated compatibility wrapper for the python2-distutils cygclass"
+
 inherit python2-distutils python
 
 #****iC* python-distutils.cygclass/python_distutils_compile
diff --git a/cygclass/python-wheel.cygclass b/cygclass/python-wheel.cygclass
index 064fec2a..1ef23826 100644
--- a/cygclass/python-wheel.cygclass
+++ b/cygclass/python-wheel.cygclass
@@ -57,7 +57,7 @@ inherit python.org
 
 #****v* python-wheel.cygclass/PYTHON_WHEEL_VERSIONS
 #  SYNOPSIS
-#  PYTHON_WHEEL_VERSIONS="2.7:3.5" # e.g. added to stdlib in 3.6
+#  PYTHON_WHEEL_VERSIONS="3.5:3.6" # e.g. added to stdlib in 3.7
 #  inherit python-wheel
 #  DESCRIPTION
 #  A colon-seperated list of version(s) for which this module should be built.
@@ -71,11 +71,8 @@ inherit python.org
 #  If undefined, "default" is assumed.
 #  NOTES
 #  * Python 2.7 is no longer supported upstream, and all code should be moving
-#    to Python 3.y.  While the 2.7 packages will remain for now, they should
-#    only be used when absolutely needed.  Therefore, 2.7 has been dropped from
-#    the all/default/future sets.  If you still need to provide your module for
-#    2.7 -- and 2.7 is still supported by the module -- then set a value of
-#    e.g. PYTHON_WHEEL_VERSIONS="2:default".
+#    to Python 3.y.  A 2.x version appearing in PYTHON_WHEEL_VERSIONS is now an
+#    error.
 #  * It is not generally expected for wheel packages to be built with "all".
 #    This option is primarily intended for the most basic modules used to
 #    build, install, and run other modules (e.g. setuptools, wheel, pip, and
@@ -107,6 +104,12 @@ unset _tmp_wheel_v
 
 for ver in ${PYTHON_WHEEL_VERSIONS//:/ }
 do
+	case "${ver}" in
+	2.*)
+		error "${ver} in PYTHON_WHEEL_VERSIONS"
+		;;
+	esac
+
 	check_prog_req pip${ver} python${ver//.}-pip
 done
 
diff --git a/cygclass/python.cygclass b/cygclass/python.cygclass
index 6f3c1ca2..7502fa0e 100644
--- a/cygclass/python.cygclass
+++ b/cygclass/python.cygclass
@@ -30,6 +30,8 @@
 #  python2.cygclass
 #****
 
+warning "python.cygclass: deprecated compatibility wrapper for the python2 cygclass"
+
 inherit python2
 
 #****id* python.cygclass/PYTHON
diff --git a/cygclass/python2-distutils.cygclass b/cygclass/python2-distutils.cygclass
index 20468a3c..c20f6834 100644
--- a/cygclass/python2-distutils.cygclass
+++ b/cygclass/python2-distutils.cygclass
@@ -21,6 +21,9 @@
 #
 ################################################################################
 
+warning "python2-distutils.cygclass: python distutils is deprecated. Please migrate to the python-wheel cygclass."
+error "python2-distutils.cyclass: python2 was sunsetted on 1 January, 2020.  Please use python3 instead."
+
 #****h* Cygclasses/python2-distutils.cygclass
 #  DESCRIPTION
 #  Distutils is the most common method for building and installing Python
diff --git a/cygclass/python2-wheel.cygclass b/cygclass/python2-wheel.cygclass
index 26670fcc..8d3e32e9 100644
--- a/cygclass/python2-wheel.cygclass
+++ b/cygclass/python2-wheel.cygclass
@@ -50,6 +50,9 @@
 #  REQUIRES
 #  python2, python2-pip
 #****
+
+error "python2-wheel.cyclass: python2 was sunsetted on 1 January, 2020.  Please use python3 instead."
+
 inherit python2
 PYTHON_WHEEL_VERSIONS=${PYTHON2_VERSION}
 inherit python-wheel
diff --git a/cygclass/python2.cygclass b/cygclass/python2.cygclass
index 84aa4b93..0052689f 100644
--- a/cygclass/python2.cygclass
+++ b/cygclass/python2.cygclass
@@ -43,6 +43,8 @@
 #  python2
 #****
 
+error "python2.cyclass: python2 was sunsetted on 1 January, 2020.  Please use python3 instead."
+
 # cross-compiling is not (yet?) supported
 __cross_compiling_error
 
diff --git a/cygclass/python3-distutils.cygclass b/cygclass/python3-distutils.cygclass
index 114f5757..b74390fc 100644
--- a/cygclass/python3-distutils.cygclass
+++ b/cygclass/python3-distutils.cygclass
@@ -21,6 +21,8 @@
 #
 ################################################################################
 
+warning "python3-distutils.cygclass: python distutils is deprecated. Please migrate to the python-wheel cygclass."
+
 #****h* Cygclasses/python3-distutils.cygclass
 #  DESCRIPTION
 #  Distutils is the most common method for building and installing Python
diff --git a/cygclass/python3-wheel.cygclass b/cygclass/python3-wheel.cygclass
index e20e777c..72c3f169 100644
--- a/cygclass/python3-wheel.cygclass
+++ b/cygclass/python3-wheel.cygclass
@@ -43,6 +43,7 @@
 #    DESCRIPTION="git-review is a tool that helps submitting git branches to
 #    Gerrit for review."
 #    HOMEPAGE="https://opendev.org/opendev/git-review"
+#    LICENSE="Apache-2.0"
 #    SRC_URI="https://tarballs.opendev.org/openstack/git-review/${NAME}-${VERSION}.tar.gz"
 #    
 #    ARCH=noarch
diff --git a/cygport.spec b/cygport.spec
index 58b8672d..b596f241 100644
--- a/cygport.spec
+++ b/cygport.spec
@@ -1,7 +1,7 @@
 %define debug_package %{nil}
 
 Name:           cygport
-Version:        0.35.5
+Version:        0.36.0
 Release:        1%{?dist}
 Summary:        Cygwin package building tool
 
diff --git a/data/cygport.conf b/data/cygport.conf
index 478b1a33..34ccd291 100644
--- a/data/cygport.conf
+++ b/data/cygport.conf
@@ -12,10 +12,18 @@
 
 #****** Configuration/cygport.conf
 #  DESCRIPTION
-#  The cygport.conf file can be used by users to customize certain aspects
-#  of cygport's behaviour.  Users who wish to customize their settings should
-#  copy the default /etc/cygport.conf file to $HOME/.cygport.conf and edit the
-#  latter.
+#  The cygport.conf file can be used by users to customize certain aspects of
+#  cygport's behaviour.  Users who wish to customize their settings should copy
+#  the respective settings from /etc/cygport.conf file to $HOME/.cygport.conf
+#  and edit the latter.
+#
+#  Settings in /etc/cygport.conf are read first and can be changed via
+#  user-defined settings in $HOME/.config/cygport.conf,
+#  $HOME/.cygport/cygport.conf, $HOME/.cygport.conf, $HOME/.cygportrc in that
+#  order.  The last one is for backwards compatibility with older versions of
+#  cygport, usually just one of these user-defined configuration files should
+#  exist.
+
 #****
 
 #****v* Configuration/DISTDIR
diff --git a/data/sample.cygport b/data/sample.cygport
index 3422e8e7..d26e2f8d 100644
--- a/data/sample.cygport
+++ b/data/sample.cygport
@@ -1,7 +1,7 @@
 inherit meson
 
 NAME="cygport"
-VERSION=0.35.5
+VERSION=0.36.0
 RELEASE=1
 CATEGORY="Devel"
 SUMMARY="Cygwin source packaging tool"
diff --git a/lib/pkg_info.cygpart b/lib/pkg_info.cygpart
index c399cc5f..b9022d73 100644
--- a/lib/pkg_info.cygpart
+++ b/lib/pkg_info.cygpart
@@ -137,9 +137,9 @@ __list_deps() {
 	export PATH+="${D}$(__host_prefix)/bin:${os_path}";
 
 	# only on Cygwin: assure Windows\System32 is present for w32api DLLs
-	if check_prog cygpath
+	if check_prog /bin/cygpath
 	then
-		PATH+=":$(cygpath -S)"
+		PATH+=":$(/bin/cygpath -S)"
 	fi
 
 	if (cross_compiling || [ "${CHOST}" != "${CTARGET}" ]) && ! __target_is_embedded && check_target_tool gcc
diff --git a/lib/pkg_pkg.cygpart b/lib/pkg_pkg.cygpart
index 6f02f7e9..65dd145d 100644
--- a/lib/pkg_pkg.cygpart
+++ b/lib/pkg_pkg.cygpart
@@ -32,6 +32,42 @@
 #  section.
 #****
 
+#****v* Packaging/TAR_COMPRESSION_EXT
+#  SYNOPSIS
+#  TAR_COMPRESSION_EXT="zstd"
+#  DESCRIPTION
+#  The compression to be used for package tar archives, default xz.
+#  DEFINITION
+TAR_COMPRESSION_EXT="${TAR_COMPRESSION_EXT:-xz}"
+#****
+
+__tar() {
+	local TAR_COMPRESSION_OPT;
+
+	# We could use --auto-compress, but this also constrains the extension
+	# to the currently valid set. We could probe if tar supports the
+	# compression and/or use an external compressor.
+	case ${TAR_COMPRESSION_EXT} in
+		bz2)
+			TAR_COMPRESSION_OPT="-j"
+			;;
+		gz)
+			TAR_COMPRESSION_OPT="-z"
+			warning "gzip compression for packages is considered obsolete"
+			;;
+		xz)
+			TAR_COMPRESSION_OPT="-J"
+			;;
+		zst)
+			TAR_COMPRESSION_OPT="--zstd"
+			;;
+		*)
+			error "tar option for TAR_COMPRESSION_EXT='${TAR_COMPRESSION_EXT}' unknown"
+			;;
+	esac
+	tar ${TAR_COMPRESSION_OPT} --owner=Guest:501 --group=None:513 -cvf "$@"
+}
+
 __pkg_binpkg() {
 	local -i n=0;
 	local pkg_contents;
@@ -62,9 +98,11 @@ __pkg_binpkg() {
 #  PKG_NAMES="foo libfoo1 libfoo-devel libfoo-doc"
 #  PKG_HINTS="setup runtime devel doc"
 #  DESCRIPTION
-#  A list of unsuffixed .hint files which should be used for each given
+#  A list of unsuffixed .hint files in $C, which should be used for each given
 #  binary package in PKG_NAMES.
 #  NOTES
+#  * This variable is obsolete, and allowing cygport to automatically generate
+#    hints should be used in new packages.
 #  * If PN is not included in PKG_NAMES, a file named $PN.hint or setup.hint
 #    is still required for the source package, but should not be listed in
 #    PKG_HINTS.
@@ -95,8 +133,7 @@ __pkg_binpkg() {
 #    form of an array.  This form should be considered deprecated in favour
 #    of explicitly-named variables as described above.
 #  * If the contents of a package are too many or complicated to easily
-#    describe in this form, a PN.list file can be used instead and placed
-#    in C before the packaging stage.
+#    describe in this form, a PKG.list file in $C can be used instead.
 #****
 
 	pkg_list=(${PKG_LISTS:-${PKG_NAMES}});
@@ -136,7 +173,7 @@ __pkg_binpkg() {
 		*-[0-9]*) error "Package ${pkg_name[${n}]}: Use underscore instead of hyphen when followed by digit" ;;
 		esac
 
-		__step "${pkg_name[${n}]}-${PVR}.tar.xz";
+		__step "${pkg_name[${n}]}-${PVR}.tar.${TAR_COMPRESSION_EXT}";
 
 		pkg_contents_var=${pkg_name[${n}]//[-+\.]/_}_CONTENTS;
 		pkg_docs_var=${pkg_name[${n}]//[-+\.]/_}_DOCS;
@@ -170,7 +207,7 @@ __pkg_binpkg() {
 		if defined pkg_contents
 		then
 			mkdir -p ${distdir}/${PN}/${distsubdir};
-			tar Jcvf ${distdir}/${PN}/${distsubdir}/${pkg_name[${n}]}-${PVR}.tar.xz \
+			__tar ${distdir}/${PN}/${distsubdir}/${pkg_name[${n}]}-${PVR}.tar.${TAR_COMPRESSION_EXT} \
 				--exclude=usr/lib/debug --exclude=usr/src \
 				--exclude=${autoloaddir} \
 				${pkg_contents} \
@@ -179,7 +216,8 @@ __pkg_binpkg() {
 		else
 			inform "Creating empty package"
 			mkdir -p ${distdir}/${PN}/${distsubdir};
-			tar -Jcf ${distdir}/${PN}/${distsubdir}/${pkg_name[${n}]}-${PVR}.tar.xz --files-from /dev/null \
+			__tar ${distdir}/${PN}/${distsubdir}/${pkg_name[${n}]}-${PVR}.tar.${TAR_COMPRESSION_EXT} \
+				--files-from /dev/null \
 				|| error "Empty package creation failed"
 			> ${T}/.${pkg_name[${n}]}.lst
 		fi
@@ -192,9 +230,9 @@ __pkg_binpkg() {
 		[ -d ${autoloaddir} ] || autoloaddir=
 		local dbg_contents_var=${PN//[-+\.]/_}_debuginfo_CONTENTS;
 
-		__step "${PN}-debuginfo-${PVR}.tar.xz";
+		__step "${PN}-debuginfo-${PVR}.tar.${TAR_COMPRESSION_EXT}";
 		mkdir -p ${distdir}/${PN}/${PN}-debuginfo;
-		tar Jcvf ${distdir}/${PN}/${PN}-debuginfo/${PN}-debuginfo-${PVR}.tar.xz \
+		__tar ${distdir}/${PN}/${PN}-debuginfo/${PN}-debuginfo-${PVR}.tar.${TAR_COMPRESSION_EXT} \
 			usr/*/debug/ ${autoloaddir} ${!dbg_contents_var} \
 			| tee ${T}/.${PN}-debuginfo.lst \
 			|| error "Debuginfo package creation failed: ${PN}-debuginfo"
@@ -223,7 +261,7 @@ __pkg_pkgcheck() {
 		n+=1
 	done
 
-	if ! defined _CYGPORT_RESTRICT_debuginfo_ && [ -f ${distdir}/${PN}/${PN}-debuginfo/${PN}-debuginfo-${PVR}.tar.xz ]
+	if ! defined _CYGPORT_RESTRICT_debuginfo_ && [ -f ${distdir}/${PN}/${PN}-debuginfo/${PN}-debuginfo-${PVR}.tar.${TAR_COMPRESSION_EXT} ]
 	then
 		grep -Ev "/$" ${T}/.${PN}-debuginfo.lst >> ${tmp1}
 	fi
@@ -280,6 +318,7 @@ __pkg_diff() {
 	local diff_excludes_x;
 	local difflevel;
 	local exclude;
+	local optional_patchfiles;
 
 	default_excludes="CYGWIN-PATCHES aclocal.m4~ aclocal.m4t autom4te.cache
 		config.cache config.guess config.log config.status config.sub
@@ -423,20 +462,30 @@ __pkg_diff() {
 			;;
 	esac
 
-	# diff exits >0 when targets differ, hence catch exception with true
 	if [ "${SRC_DIR}" = "." ]
 	then
-		diff -urN -x '*~' \
-			${origsrcdir##*/}/CYGWIN-PATCHES ${srcdir##*/}/CYGWIN-PATCHES \
-			> ${patchdir}/${cygwin_patchfile} || true;
 		difflevel=1;
 	else
-		diff -urN -x '*~' \
-			${origsrcdir##*/}/${SRC_DIR}/CYGWIN-PATCHES ${srcdir##*/}/${SRC_DIR}/CYGWIN-PATCHES \
-			> ${patchdir}/${cygwin_patchfile} || true;
+
 		difflevel=2;
 	fi
 
+	if [ -z "${CYGWIN_FILES}" ]
+	then
+		# diff exits >0 when targets differ, hence catch exception with true
+		if [ "${SRC_DIR}" = "." ]
+		then
+			diff -urN -x '*~' \
+				${origsrcdir##*/}/CYGWIN-PATCHES ${srcdir##*/}/CYGWIN-PATCHES \
+				> ${patchdir}/${cygwin_patchfile} || true;
+		else
+			diff -urN -x '*~' \
+				${origsrcdir##*/}/${SRC_DIR}/CYGWIN-PATCHES ${srcdir##*/}/${SRC_DIR}/CYGWIN-PATCHES \
+				> ${patchdir}/${cygwin_patchfile} || true;
+		fi
+		optional_patchfiles=${patchdir}/${cygwin_patchfile}
+	fi
+
 	if defined _CYGPORT_RESTRICT_diff_
 	then
 		rm -f ${patchdir}/${src_patchfile};
@@ -447,9 +496,9 @@ __pkg_diff() {
 			> ${patchdir}/${src_patchfile} || true;
 	fi
 
-	sed -b -e '/^diff -u/d' -i ${patchdir}/${cygwin_patchfile} ${patchdir}/${src_patchfile};
+	sed -b -e '/^diff -u/d' -i ${optional_patchfiles} ${patchdir}/${src_patchfile};
 
-	diffstat -p${difflevel} ${patchdir}/${cygwin_patchfile} ${patchdir}/${src_patchfile};
+	diffstat -p${difflevel} ${optional_patchfiles} ${patchdir}/${src_patchfile};
 }
 
 __gpg_sign() {
@@ -464,6 +513,7 @@ __squeeze_whitespace() {
 }
 
 __pkg_srcpkg() {
+	local cygwin_file;
 	local src;
 	local pkg_tag=${1};
 
@@ -480,17 +530,22 @@ __pkg_srcpkg() {
 
 	if [ -s ${patchdir}/${cygwin_patchfile} ]
 	then
-		cp ${patchdir}/${cygwin_patchfile} ${spkgdir};
+		cp --preserve=timestamps ${patchdir}/${cygwin_patchfile} ${spkgdir};
 	fi
 
 	if [ -s ${patchdir}/${src_patchfile} ]
 	then
-		cp ${patchdir}/${src_patchfile} ${spkgdir};
+		cp --preserve=timestamps ${patchdir}/${src_patchfile} ${spkgdir};
 	fi
 
 	__step "Creating source package";
 
-	cp ${top}/${cygportfile} ${spkgdir};
+	for cygwin_file in ${CYGWIN_FILES}
+	do
+		cp --preserve=timestamps ${C}/${cygwin_file} ${spkgdir}
+	done
+
+	cp --preserve=timestamps ${top}/${cygportfile} ${spkgdir};
 
 	for src in ${_src_orig_pkgs} ${_src_orig_patches}
 	do
@@ -503,7 +558,7 @@ __pkg_srcpkg() {
 		else
 			src=${top}/${src};
 		fi
-		cp ${src} ${spkgdir};
+		cp --preserve=timestamps ${src} ${spkgdir};
 	done
 
 	if __arg_bool SIG
@@ -517,6 +572,12 @@ __pkg_srcpkg() {
 				__gpg_sign ${spkgdir}/${cygwin_patchfile} "CYGWIN PATCH";
 			fi
 
+			if [ -n "${CYGWIN_FILES}" && check_prog sha512sum ]
+			then
+				(cd ${spkgdir} ; sha512sum ${CYGWIN_FILES} >${spkgdir}/sha512.sum)
+				__gpg_sign ${spkgdir}/sha512.sum "CYGWIN FILES MANIFEST";
+			fi
+
 			if [ -f ${spkgdir}/${src_patchfile} ]
 			then
 				__gpg_sign ${spkgdir}/${src_patchfile} "SOURCE PATCH";
@@ -529,7 +590,7 @@ __pkg_srcpkg() {
 	cd ${spkgdir%/*};
 
 	mkdir -p ${distdir}/${PN};
-	tar Jcvf ${distdir}/${PN}/${PF}-src.tar.xz ${spkgdir##*/}/ || error "Source package creation failed"
+	__tar ${distdir}/${PN}/${PF}-src.tar.${TAR_COMPRESSION_EXT} ${spkgdir##*/}/ || error "Source package creation failed"
 	echo;
 
 	# source package hint
@@ -698,9 +759,9 @@ __pkg_dist() {
 #****
 #****v* Packaging/OBSOLETES
 #  DESCRIPTION
-#  A single-line string containing a list of package(s) which this
-#  package replaces.  An empty package will be created for each listed
-#  obsoletion which will cause this package to be installed in its place.
+#  A single-line string containing a list of package(s) which this package
+#  replaces.  This package's metadata will include the listed obsoletions, which
+#  will cause this package to be installed in their place.
 #  NOTE
 #  If there is more than one package in PKG_NAMES, this variable will be
 #  ignored; you must use PKG_OBSOLETES instead.
@@ -709,9 +770,9 @@ __pkg_dist() {
 #****
 #****v* Packaging/PKG_OBSOLETES
 #  DESCRIPTION
-#  A single-line string containing a list of package(s) which this
-#  package replaces.  An empty package will be created for each listed
-#  obsoletion which will cause PKG to be installed in its place.
+#  A single-line string containing a list of package(s) which PKG replaces.
+#  PKG's metadata will include the listed obsoletions, which will cause PKG to
+#  be installed in their place.
 #
 #  Note that the PKG_OBSOLETES name is descriptive rather than literal,
 #  where "PKG" should be substituted with the name of the binary package
@@ -719,6 +780,12 @@ __pkg_dist() {
 #  cannot be used in a shell variable name (namely '+', '-', and '.'),
 #  that character must be substituted with an underscore ('_'), e.g.
 #  libfoo-devel will use libfoo_devel_OBSOLETES.
+#
+#  NOTES
+#  * Additionally, if a debuginfo package is automatically generated, you may
+#  specify a PN_debuginfo_OBSOLETES value, even though PN_debuginfo is not
+#  explicitly listed in PKG_NAMES.
+#
 #****
 #****v* Packaging/PROVIDES
 #  DESCRIPTION
@@ -872,7 +939,7 @@ _EOF
 		n+=1;
 	done
 
-	if ! defined _CYGPORT_RESTRICT_debuginfo_ && [ -f ${distdir}/${PN}/${PN}-debuginfo/${PN}-debuginfo-${PVR}.tar.xz ]
+	if ! defined _CYGPORT_RESTRICT_debuginfo_ && [ -f ${distdir}/${PN}/${PN}-debuginfo/${PN}-debuginfo-${PVR}.tar.${TAR_COMPRESSION_EXT} ]
 	then
 		if [ -f ${C}/${PN}-debuginfo.hint ]
 		then
@@ -905,4 +972,5 @@ _EOF
 }
 
 # protect functions
-readonly -f __pkg_binpkg __pkg_diff __gpg_sign __pkg_srcpkg __pkg_dist
+readonly -f __pkg_binpkg __pkg_diff __gpg_sign __pkg_srcpkg __pkg_dist \
+	 __squeeze_whitespace __tar
diff --git a/lib/pkg_upload.cygpart b/lib/pkg_upload.cygpart
index f4c22ce5..dcae8e2c 100644
--- a/lib/pkg_upload.cygpart
+++ b/lib/pkg_upload.cygpart
@@ -26,13 +26,13 @@
 #  to users you'll need to upload them to the Cygwin package archive.  Before
 #  you can upload packages, you'll need to do the following things:
 #  * Request upload privileges, and provide your ssh public key.  The
-#    |html <a href="https://sourceware.org/cygwin-apps/package-upload.html">Uploading Packages</a>
+#    |html <a href="https://cygwin.com/package-upload.html">Uploading Packages</a>
 #    page tells how to do that, and how to be notified in case of problems with
 #    your uploads.
 #  * After your key is approved, connect once to cygwin.com by
 #    |html <tt>sftp cygwin@cygwin.com</tt>.
 #    Verify that the host key fingerprint for cygwin.com matches one of the ones posted on the
-#    |html <a href="https://sourceware.org/cygwin-apps/package-upload.html">Uploading Packages</a>
+#    |html <a href="https://cygwin.com/packaging/key.html">Providing an SSH key</a>
 #    page. If it does, answer "yes" to continue connecting.  Then exit sftp.
 #    This will store the host key fingerprint in your ~/.known_hosts file.
 #    You have to do this once before uploading, or the upload will fail.
@@ -81,7 +81,7 @@ __pkg_upload() {
 
 	# Check that binary and source package files exist
 
-	pkg_files=("${NAME}/${NAME}-${PVR}-src.tar.xz" "${NAME}/${NAME}-${PVR}-src.hint")
+	pkg_files=("${NAME}/${NAME}-${PVR}-src.tar.${TAR_COMPRESSION_EXT}" "${NAME}/${NAME}-${PVR}-src.hint")
 
 	while (( n < pkg_count ))
 	do
@@ -90,13 +90,13 @@ __pkg_upload() {
 		*)      distsubdir=${pkg_name[${n}]} ;;
 		esac
 
-		pkg_files+=("${NAME}/${distsubdir}/${pkg_name[${n}]}-${PVR}.tar.xz" "${NAME}/${distsubdir}/${pkg_name[${n}]}-${PVR}.hint")
+		pkg_files+=("${NAME}/${distsubdir}/${pkg_name[${n}]}-${PVR}.tar.${TAR_COMPRESSION_EXT}" "${NAME}/${distsubdir}/${pkg_name[${n}]}-${PVR}.hint")
 		n+=1
 	done
 
 	if [ -d ${NAME}/${NAME}-debuginfo ]
 	then
-		pkg_files+=("${NAME}/${NAME}-debuginfo/${NAME}-debuginfo-${PVR}.tar.xz" "${NAME}/${NAME}-debuginfo/${NAME}-debuginfo-${PVR}.hint")
+		pkg_files+=("${NAME}/${NAME}-debuginfo/${NAME}-debuginfo-${PVR}.tar.${TAR_COMPRESSION_EXT}" "${NAME}/${NAME}-debuginfo/${NAME}-debuginfo-${PVR}.hint")
 	fi
 
 	for file in "${pkg_files[@]}"
diff --git a/lib/src_fetch.cygpart b/lib/src_fetch.cygpart
index 67e7bafe..930f5f65 100644
--- a/lib/src_fetch.cygpart
+++ b/lib/src_fetch.cygpart
@@ -64,9 +64,9 @@
 #
 #  NOTE
 #
-#  For historical reasons, patches with basenames of ${PVR}.{cygwin,src}.patch
+#  For historical reasons, patches with basenames of ${PF}.{cygwin,src}.patch
 #  should not be listed in PATCH_URI, as they are treated specially and are
-#  automatically applied, if present.
+#  automatically applied, if present, and generated, if required.
 #
 #  NOTE
 #
@@ -98,7 +98,7 @@ fetch() {
 		fi
 	elif check_prog curl
 	then
-		if curl -k --url ${uri} -o ${urifile}.tmp
+		if curl -R -k --url ${uri} -o ${urifile}.tmp
 		then
 			mv -f ${urifile}.tmp ${urifile}
 		else
diff --git a/lib/src_postinst.cygpart b/lib/src_postinst.cygpart
index b0361b1b..eb33939e 100644
--- a/lib/src_postinst.cygpart
+++ b/lib/src_postinst.cygpart
@@ -420,6 +420,11 @@ _EOF
 #  DESCRIPTION
 #  Standard documentation files in $S will be automatically installed into
 #  $D/usr/share/doc/PN.  Empty files will be skipped.
+#
+#  Any README in $C will be automatically installed into /usr/share/doc/Cygwin/
+#  as $PN.README. Any PKG.README will be automatically installed into
+#  /usr/share/doc/Cygwin/ (where PKG is the name of a binary package).
+#
 #  SEE ALSO
 #  RESTRICT
 #****
@@ -561,6 +566,21 @@ __prepetc() {
 	local -i n;
 	local s;
 
+#****P* Postinstall/Post-install and Pre-remove Scripts
+#  DESCRIPTION
+#  Any postinstall.sh or $PN.postinstall in $C will be automatically appended to
+#  /etc/postinstall/$PN.sh. Any PKG.postinstall in $C will be automatically
+#  appended to /etc/postinstall/$PKG.sh (where PKG is the name of a binary
+#  package).
+#
+#  Likewise, any preremove.sh or $PN.preremove in $C will be automatically
+#  appended to /etc/preremove/$PN.sh. Any PKG.preremove in $C will be
+#  automatically appended to /etc/preremove/$PKG.sh
+#
+#  As they are appended, these scripts should be written as stubs, without the
+#  shebang header.
+#****
+
 	for s in postinstall preremove
 	do
 		if [ -f ${C}/${s}.sh -a -f ${C}/${PN}.${s} ]
@@ -589,6 +609,12 @@ __prepetc() {
 		done
 	done
 
+#****P* Postinstall/Shell Profile Files
+#  DESCRIPTION
+#  Any profile.d.{sh,csh,fish} in $C will be automatically installed into
+#  /etc/profile.d/ as ${PN}.{sh,csh,fish}
+#****
+
 	if [ -f ${C}/profile.d.sh ]
 	then
 		exeinto /etc/profile.d;
diff --git a/lib/src_prep.cygpart b/lib/src_prep.cygpart
index ca487666..da174dd8 100644
--- a/lib/src_prep.cygpart
+++ b/lib/src_prep.cygpart
@@ -1,4 +1,3 @@
-
 ################################################################################
 #
 # src_prep.cygpart - cygport source unpacking and preparation functions
@@ -286,6 +285,7 @@ cygpatch() {
 }
 
 __src_prep() {
+	local cygwin_file;
 	local sigext;
 	local sig_exts="asc sig sign";
 	local src_orig_patch;
@@ -464,6 +464,41 @@ __src_prep() {
 	mkdir -p ${C};
 	ln -sfn ${C} ${workdir}/CYGWIN-PATCHES;
 
+#****v* Preparation/CYGWIN_FILES
+#  DESCRIPTION
+#  A list of files which are to be included in the source package, and installed
+#  into ${C}.
+#  NOTE
+#  Historically, files in $C were created by a patch file named
+#  ${PF}.cygwin.patch, which is automatically applied and generated.  This
+#  variable should not be set if that file is present.
+#
+#  In the absence of a ${PF}.cygwin.patch file, the default value is 'README' if
+#  a file of that name exists, otherwise empty.
+#
+#****
+
+	if [ ! -e ${top}/${cygwin_patchfile} ]
+	then
+		if [ -f ${top}/README ]
+		then
+			CYGWIN_FILES="${CYGWIN_FILES:-README}"
+		fi
+	fi
+
+	if [ -n "${CYGWIN_FILES}" ]
+	then
+		if [ -f ${top}/${cygwin_patchfile} ]
+		then
+			error "Use only the CYGWIN_FILES variable or a ${cygwin_patchfile} patchfile, not both"
+		fi
+
+		for cygwin_file in ${CYGWIN_FILES}
+		do
+			 cp -a ${top}/${cygwin_file} ${C}/
+		done
+	fi
+
 	cd ${S};
 
 	if [ -f ${top}/${cygwin_patchfile} ]
diff --git a/lib/syntax.cygpart b/lib/syntax.cygpart
index 4a400a71..3d215b7d 100644
--- a/lib/syntax.cygpart
+++ b/lib/syntax.cygpart
@@ -312,17 +312,20 @@ __target_is_embedded() {
 #  the upstream name is to append a version "slot" where multiple versions of
 #  a package are completely parallel installable (e.g. gtk1.2 and gtk2.0, both
 #  from gtk+).  In this case, define ORIG_PN to the upstream package name.
+#  NOTE
+#  See https://cygwin.com/packaging-package-files.html#naming for more details
+#  of the policy on package naming and versioning.
 #****
 #****v* Globals/VERSION
 #  DESCRIPTION
-#  The upstream package version number.  PV must begin with a digit 0-9, and
-#  subsequent characters can be a digit, letter, dot, hyphen, or underscore.
+#  The upstream package version number.  VERSION must begin with a digit 0-9, and
+#  subsequent characters can be a digit, letter, dot, plus-sign or underscore.
 #****
 #****v* Globals/RELEASE
 #  DESCRIPTION
 #  The Cygwin package release number, e.g. the "1" in foo-2.3.4-1.  The first
 #  release of a new version is usually 1, and is incremented if subsequent
-#  releases are made of the same version.  PR must be an integer.
+#  releases are made of the same version.
 #****
 #****d* Globals/PN
 #  DESCRIPTION
@@ -360,9 +363,14 @@ __target_is_embedded() {
 #****
 #****d* Globals/C
 #  DESCRIPTION
-#  The CYGWIN-PATCHES directory where Cygwin READMEs, setup.hint files,
-#  custom postinstall scripts, and other Cygwin-specific files are placed
-#  before packaging.
+#  The directory where Cygwin READMEs, custom post-install scripts, shell
+#  profile scripts, PKG.list files, and other Cygwin-specific files are placed.
+#  NOTE
+#  Providing setup.hint or PKG.hint files in this directory (rather than
+#  allowing .hint files to be automatically generated) is an obsolete feature
+#  and should not be used in new packages.
+#
+#  For historical reasons, this directory is named 'CYGWIN-PATCHES'.
 #****
 #****d* Globals/D
 #  DESCRIPTION
diff --git a/meson.build b/meson.build
index ac46272b..dfe5f18c 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
 project('cygport',
-        version: '0.35.5')
+        version: '0.36.0')
 
 bindir = join_paths(get_option('prefix'), get_option('bindir'))
 datadir = join_paths(get_option('prefix'), get_option('datadir'))
diff --git a/testsuite/R/cran/vars b/testsuite/R/cran/vars
new file mode 100644
index 00000000..4e204326
--- /dev/null
+++ b/testsuite/R/cran/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="R autotools "
diff --git a/testsuite/aspell/dict/vars b/testsuite/aspell/dict/vars
new file mode 100644
index 00000000..11ed4d9a
--- /dev/null
+++ b/testsuite/aspell/dict/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="aspell-dict autotools "
diff --git a/testsuite/autotools/c/vars b/testsuite/autotools/c/vars
new file mode 100644
index 00000000..075532a6
--- /dev/null
+++ b/testsuite/autotools/c/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="autotools "
diff --git a/testsuite/autotools/gnome/vars b/testsuite/autotools/gnome/vars
new file mode 100644
index 00000000..ef6feea6
--- /dev/null
+++ b/testsuite/autotools/gnome/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="gnome.org gnome2 autotools "
diff --git a/testsuite/autotools/gtkmm/vars b/testsuite/autotools/gtkmm/vars
new file mode 100644
index 00000000..4a3301e6
--- /dev/null
+++ b/testsuite/autotools/gtkmm/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="gnome.org gtkmm autotools "
diff --git a/testsuite/autotools/kde3/vars b/testsuite/autotools/kde3/vars
new file mode 100644
index 00000000..01f22c0d
--- /dev/null
+++ b/testsuite/autotools/kde3/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="kde.org qt3 kde3 autotools "
diff --git a/testsuite/autotools/mate/hints/mate-menus-1.18.0-1.x86_64/dist/mate-menus/python2-matemenu/python2-matemenu-1.18.0-1.hint b/testsuite/autotools/mate/hints/mate-menus-1.18.0-1.x86_64/dist/mate-menus/python2-matemenu/python2-matemenu-1.18.0-1.hint
deleted file mode 100644
index b14d4a5b..00000000
--- a/testsuite/autotools/mate/hints/mate-menus-1.18.0-1.x86_64/dist/mate-menus/python2-matemenu/python2-matemenu-1.18.0-1.hint
+++ /dev/null
@@ -1,8 +0,0 @@
-category: Python
-requires: cygwin libglib2.0_0 libmate-menu2 python27
-sdesc: "MATE Desktop Menu Specification library (Python bindings)"
-ldesc: "MATE is a fork of the GNOME 2 desktop. It provides an intuitive
-and attractive desktop to Linux users using traditional metaphors."
-obsoletes: python-matemenu
-external-source: mate-menus
-
diff --git a/testsuite/autotools/mate/mate-menus.cygport b/testsuite/autotools/mate/mate-menus.cygport
index 75e03052..d2ea302e 100644
--- a/testsuite/autotools/mate/mate-menus.cygport
+++ b/testsuite/autotools/mate/mate-menus.cygport
@@ -1,4 +1,4 @@
-inherit mate python2
+inherit mate
 
 NAME="mate-menus"
 VERSION=1.18.0
@@ -9,9 +9,9 @@ DESCRIPTION="MATE is a fork of the GNOME 2 desktop. It provides an intuitive
 and attractive desktop to Linux users using traditional metaphors."
 
 PATCH_URI="1.2.0-no-undefined.patch"
-export PYTHON="python2"
+CYGCONF_ARGS="--disable-python"
 
-PKG_NAMES="${NAME} libmate-menu2 libmate-menu-devel girepository-MateMenu2.0 python2-matemenu"
+PKG_NAMES="${NAME} libmate-menu2 libmate-menu-devel girepository-MateMenu2.0"
 mate_menus_CATEGORY="MATE"
 mate_menus_CONTENTS="etc/ usr/share/doc/ usr/share/locale/ usr/share/mate/"
 libmate_menu2_SUMMARY="MATE Desktop Menu Specification library (runtime)"
@@ -21,7 +21,3 @@ libmate_menu_devel_SUMMARY="MATE Desktop Menu Specification library (development
 libmate_menu_devel_CONTENTS="usr/include/ usr/lib/lib* usr/lib/pkgconfig/"
 girepository_MateMenu2_0_SUMMARY="MATE Desktop Menu Specification library (GObject Introspection)"
 girepository_MateMenu2_0_CONTENTS="usr/*/gir*/MateMenu-2.0.*"
-python2_matemenu_CATEGORY="Python"
-python2_matemenu_SUMMARY="MATE Desktop Menu Specification library (Python bindings)"
-python2_matemenu_OBSOLETES="python-matemenu"
-python2_matemenu_CONTENTS="${PYTHON2_SITELIB#/}/matemenu.dll usr/share/mate-menus/examples/"
diff --git a/testsuite/autotools/mate/mate-menus.list b/testsuite/autotools/mate/mate-menus.list
index d9ffb350..3fe35899 100644
--- a/testsuite/autotools/mate/mate-menus.list
+++ b/testsuite/autotools/mate/mate-menus.list
@@ -6,7 +6,6 @@
 /usr/lib/girepository-1.0/MateMenu-2.0.typelib
 /usr/lib/libmate-menu.dll.a
 /usr/lib/pkgconfig/libmate-menu.pc
-/usr/lib/python2.7/site-packages/matemenu.dll
 /usr/share/doc/mate-menus/AUTHORS
 /usr/share/doc/mate-menus/COPYING
 /usr/share/doc/mate-menus/COPYING.LIB
@@ -121,7 +120,6 @@
 /usr/share/locale/zh_CN/LC_MESSAGES/mate-menus.mo
 /usr/share/locale/zh_HK/LC_MESSAGES/mate-menus.mo
 /usr/share/locale/zh_TW/LC_MESSAGES/mate-menus.mo
-/usr/share/mate-menus/examples/mate-menus-ls.py
 /usr/share/mate/desktop-directories/mate-audio-video.directory
 /usr/share/mate/desktop-directories/mate-development.directory
 /usr/share/mate/desktop-directories/mate-education.directory
diff --git a/testsuite/autotools/mate/vars b/testsuite/autotools/mate/vars
new file mode 100644
index 00000000..b5f82994
--- /dev/null
+++ b/testsuite/autotools/mate/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="mate autotools "
diff --git a/testsuite/autotools/meson.build b/testsuite/autotools/meson.build
index 1b20ff42..34ea6cd7 100644
--- a/testsuite/autotools/meson.build
+++ b/testsuite/autotools/meson.build
@@ -24,7 +24,7 @@ endif
 if kde3.found() and libexif.found()
 tests += [['autotools/kde3', 720]]
 endif
-if mate_common.found() and gi.found() and python2.found()
+if mate_common.found() and gi.found()
 tests += [['autotools/mate', 720]]
 endif
 if xdt.found() and xfce4_panel.found()
diff --git a/testsuite/autotools/xfce/vars b/testsuite/autotools/xfce/vars
new file mode 100644
index 00000000..d2e51eaf
--- /dev/null
+++ b/testsuite/autotools/xfce/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="xfce4 autotools "
diff --git a/testsuite/basic/info/vars b/testsuite/basic/info/vars
new file mode 100644
index 00000000..075532a6
--- /dev/null
+++ b/testsuite/basic/info/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="autotools "
diff --git a/testsuite/cmake/c/vars b/testsuite/cmake/c/vars
new file mode 100644
index 00000000..c2de1531
--- /dev/null
+++ b/testsuite/cmake/c/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="ninja cmake autotools "
diff --git a/testsuite/cmake/kde4/vars b/testsuite/cmake/kde4/vars
new file mode 100644
index 00000000..240455f5
--- /dev/null
+++ b/testsuite/cmake/kde4/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="kde.org qt4 ninja cmake kde4 autotools "
diff --git a/testsuite/cmake/kf5/vars b/testsuite/cmake/kf5/vars
new file mode 100644
index 00000000..482bef4f
--- /dev/null
+++ b/testsuite/cmake/kf5/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="kde.org qt5 ninja cmake kf5 autotools "
diff --git a/testsuite/cmake/qt4/vars b/testsuite/cmake/qt4/vars
new file mode 100644
index 00000000..d9d73928
--- /dev/null
+++ b/testsuite/cmake/qt4/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="qt4 ninja cmake qt4-cmake autotools "
diff --git a/testsuite/cmake/qt5/vars b/testsuite/cmake/qt5/vars
new file mode 100644
index 00000000..93d1e596
--- /dev/null
+++ b/testsuite/cmake/qt5/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="ninja cmake qt5 autotools "
diff --git a/testsuite/cross/cmake/vars b/testsuite/cross/cmake/vars
new file mode 100644
index 00000000..891c9a76
--- /dev/null
+++ b/testsuite/cross/cmake/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST="i686-w64-mingw32"
+declare -- INHERITED="ninja cmake cross autotools "
diff --git a/testsuite/cross/make/vars b/testsuite/cross/make/vars
new file mode 100644
index 00000000..92816415
--- /dev/null
+++ b/testsuite/cross/make/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST="i686-w64-mingw32"
+declare -- INHERITED="git cross autotools "
diff --git a/testsuite/cross/qt5/vars b/testsuite/cross/qt5/vars
new file mode 100644
index 00000000..a6cfae09
--- /dev/null
+++ b/testsuite/cross/qt5/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST="i686-w64-mingw32"
+declare -- INHERITED="qt5 qt5-qmake cross autotools "
diff --git a/testsuite/docbook/sgml/vars b/testsuite/docbook/sgml/vars
new file mode 100644
index 00000000..db0ac7a7
--- /dev/null
+++ b/testsuite/docbook/sgml/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="docbook autotools "
diff --git a/testsuite/docbook/xml/vars b/testsuite/docbook/xml/vars
new file mode 100644
index 00000000..db0ac7a7
--- /dev/null
+++ b/testsuite/docbook/xml/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="docbook autotools "
diff --git a/testsuite/download/R/vars b/testsuite/download/R/vars
new file mode 100644
index 00000000..2a36b7a5
--- /dev/null
+++ b/testsuite/download/R/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch autotools "
diff --git a/testsuite/download/bzr/vars b/testsuite/download/bzr/vars
new file mode 100644
index 00000000..af73e71d
--- /dev/null
+++ b/testsuite/download/bzr/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch bzr autotools "
diff --git a/testsuite/download/cvs/vars b/testsuite/download/cvs/vars
new file mode 100644
index 00000000..b034a307
--- /dev/null
+++ b/testsuite/download/cvs/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch cvs autotools "
diff --git a/testsuite/download/git/vars b/testsuite/download/git/vars
new file mode 100644
index 00000000..d68a2c30
--- /dev/null
+++ b/testsuite/download/git/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch git autotools "
diff --git a/testsuite/download/gnome.org/vars b/testsuite/download/gnome.org/vars
new file mode 100644
index 00000000..9fef6133
--- /dev/null
+++ b/testsuite/download/gnome.org/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch gnome.org gnome2 autotools "
diff --git a/testsuite/download/hg/vars b/testsuite/download/hg/vars
new file mode 100644
index 00000000..8bc94eda
--- /dev/null
+++ b/testsuite/download/hg/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch hg autotools "
diff --git a/testsuite/download/mate/vars b/testsuite/download/mate/vars
new file mode 100644
index 00000000..09412d86
--- /dev/null
+++ b/testsuite/download/mate/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch mate autotools "
diff --git a/testsuite/download/mtn/vars b/testsuite/download/mtn/vars
new file mode 100644
index 00000000..efed76b4
--- /dev/null
+++ b/testsuite/download/mtn/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch mtn autotools "
diff --git a/testsuite/download/perl/vars b/testsuite/download/perl/vars
new file mode 100644
index 00000000..2bd4250b
--- /dev/null
+++ b/testsuite/download/perl/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch perl autotools "
diff --git a/testsuite/download/python.org/vars b/testsuite/download/python.org/vars
new file mode 100644
index 00000000..1434fe2b
--- /dev/null
+++ b/testsuite/download/python.org/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch python.org autotools "
diff --git a/testsuite/download/svn/hints/python-clang-9.0.1-1.noarch/dist/python-clang/python27-clang/python27-clang-9.0.1-1.hint b/testsuite/download/svn/hints/python-clang-9.0.1-1.noarch/dist/python-clang/python27-clang/python27-clang-9.0.1-1.hint
deleted file mode 100644
index dd23e2c4..00000000
--- a/testsuite/download/svn/hints/python-clang-9.0.1-1.noarch/dist/python-clang/python27-clang/python27-clang-9.0.1-1.hint
+++ /dev/null
@@ -1,9 +0,0 @@
-category: Python
-requires: python27 libclang9
-sdesc: "Python bindings for Clang-C Source Indexing Library"
-ldesc: "Clang is an LLVM native C/C++/ObjC compiler, which aims to deliver
-amazingly fast compiles, extremely useful error and warning messages and to
-provide a platform for building great source level tools."
-obsoletes: python-clang python2-clang
-external-source: python-clang
-
diff --git a/testsuite/download/svn/python-clang.cygport b/testsuite/download/svn/python-clang.cygport
index aef80a03..612d94ec 100644
--- a/testsuite/download/svn/python-clang.cygport
+++ b/testsuite/download/svn/python-clang.cygport
@@ -1,7 +1,7 @@
 SVN_URI="https://github.com/llvm/llvm-project"
 SVN_BRANCH="tags/llvmorg-${PV}/clang/bindings/python"
 SVN_MODULE="python-clang"
-PYTHON_WHEEL_VERSIONS="2:default"
+PYTHON_WHEEL_VERSIONS="default"
 inherit python-wheel svn
 
 NAME="python-clang"
diff --git a/testsuite/download/svn/python-clang.list b/testsuite/download/svn/python-clang.list
index a3b49623..6aaa655d 100644
--- a/testsuite/download/svn/python-clang.list
+++ b/testsuite/download/svn/python-clang.list
@@ -1,19 +1,3 @@
-/usr/lib/python2.7/site-packages/clang-9.0.1.dist-info/INSTALLER
-/usr/lib/python2.7/site-packages/clang-9.0.1.dist-info/METADATA
-/usr/lib/python2.7/site-packages/clang-9.0.1.dist-info/RECORD
-/usr/lib/python2.7/site-packages/clang-9.0.1.dist-info/REQUESTED
-/usr/lib/python2.7/site-packages/clang-9.0.1.dist-info/WHEEL
-/usr/lib/python2.7/site-packages/clang-9.0.1.dist-info/direct_url.json
-/usr/lib/python2.7/site-packages/clang-9.0.1.dist-info/top_level.txt
-/usr/lib/python2.7/site-packages/clang/__init__.py
-/usr/lib/python2.7/site-packages/clang/__init__.pyc
-/usr/lib/python2.7/site-packages/clang/__init__.pyo
-/usr/lib/python2.7/site-packages/clang/cindex.py
-/usr/lib/python2.7/site-packages/clang/cindex.pyc
-/usr/lib/python2.7/site-packages/clang/cindex.pyo
-/usr/lib/python2.7/site-packages/clang/enumerations.py
-/usr/lib/python2.7/site-packages/clang/enumerations.pyc
-/usr/lib/python2.7/site-packages/clang/enumerations.pyo
 /usr/lib/python3.8/site-packages/clang-9.0.1.dist-info/INSTALLER
 /usr/lib/python3.8/site-packages/clang-9.0.1.dist-info/METADATA
 /usr/lib/python3.8/site-packages/clang-9.0.1.dist-info/RECORD
@@ -52,6 +36,5 @@
 /usr/lib/python3.9/site-packages/clang/__pycache__/enumerations.cpython-39.pyc
 /usr/lib/python3.9/site-packages/clang/cindex.py
 /usr/lib/python3.9/site-packages/clang/enumerations.py
-/usr/share/doc/python27-clang/README.txt
 /usr/share/doc/python38-clang/README.txt
 /usr/share/doc/python39-clang/README.txt
diff --git a/testsuite/download/svn/vars b/testsuite/download/svn/vars
new file mode 100644
index 00000000..ce08dcba
--- /dev/null
+++ b/testsuite/download/svn/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="svn python.org python-wheel autotools "
diff --git a/testsuite/download/x.org/vars b/testsuite/download/x.org/vars
new file mode 100644
index 00000000..9999628d
--- /dev/null
+++ b/testsuite/download/x.org/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="test-fetch xorg autotools "
diff --git a/testsuite/files/meson.build b/testsuite/files/meson.build
new file mode 100644
index 00000000..00d5b45d
--- /dev/null
+++ b/testsuite/files/meson.build
@@ -0,0 +1 @@
+tests += [['files/xinit', 720]]
diff --git a/testsuite/files/xinit/README b/testsuite/files/xinit/README
new file mode 100644
index 00000000..62d85292
--- /dev/null
+++ b/testsuite/files/xinit/README
@@ -0,0 +1 @@
+An example Cygwin README
diff --git a/testsuite/files/xinit/hints/xinit-1.4.2-2.x86_64/dist/xinit/xinit-1.4.2-2-src.hint b/testsuite/files/xinit/hints/xinit-1.4.2-2.x86_64/dist/xinit/xinit-1.4.2-2-src.hint
new file mode 100644
index 00000000..5f8e4909
--- /dev/null
+++ b/testsuite/files/xinit/hints/xinit-1.4.2-2.x86_64/dist/xinit/xinit-1.4.2-2-src.hint
@@ -0,0 +1,10 @@
+category: X11
+build-depends: cygport 
+sdesc: "X.Org X server launcher"
+ldesc: "This package contains programs used to start the X Window System
+server and a first client program in environments that use multiple window
+systems."
+skip:
+
+homepage: https://www.x.org/
+license: MIT
diff --git a/testsuite/files/xinit/hints/xinit-1.4.2-2.x86_64/dist/xinit/xinit-1.4.2-2.hint b/testsuite/files/xinit/hints/xinit-1.4.2-2.x86_64/dist/xinit/xinit-1.4.2-2.hint
new file mode 100644
index 00000000..d517eb25
--- /dev/null
+++ b/testsuite/files/xinit/hints/xinit-1.4.2-2.x86_64/dist/xinit/xinit-1.4.2-2.hint
@@ -0,0 +1,7 @@
+category: X11
+requires: bash coreutils cygutils adwaita-themes dbus-x11 run sed util-linux setxkbmap xauth xdg-user-dirs xmodmap xrdb xorg-server xterm xwin-xdg-menu
+sdesc: "X.Org X server launcher"
+ldesc: "This package contains programs used to start the X Window System
+server and a first client program in environments that use multiple window
+systems."
+
diff --git a/testsuite/python/pygtk/hints/python-pynotify-0.1.1-5.x86_64/dist/python-pynotify/python-pynotify-debuginfo/python-pynotify-debuginfo-0.1.1-5.hint b/testsuite/files/xinit/hints/xinit-1.4.2-2.x86_64/dist/xinit/xinit-debuginfo/xinit-debuginfo-1.4.2-2.hint
similarity index 50%
rename from testsuite/python/pygtk/hints/python-pynotify-0.1.1-5.x86_64/dist/python-pynotify/python-pynotify-debuginfo/python-pynotify-debuginfo-0.1.1-5.hint
rename to testsuite/files/xinit/hints/xinit-1.4.2-2.x86_64/dist/xinit/xinit-debuginfo/xinit-debuginfo-1.4.2-2.hint
index 2b3e358e..d6e48ffa 100644
--- a/testsuite/python/pygtk/hints/python-pynotify-0.1.1-5.x86_64/dist/python-pynotify/python-pynotify-debuginfo/python-pynotify-debuginfo-0.1.1-5.hint
+++ b/testsuite/files/xinit/hints/xinit-1.4.2-2.x86_64/dist/xinit/xinit-debuginfo/xinit-debuginfo-1.4.2-2.hint
@@ -1,7 +1,7 @@
 category: Debug
 requires: cygwin-debuginfo
-external-source: python-pynotify
-sdesc: "Debug info for python-pynotify"
+external-source: xinit
+sdesc: "Debug info for xinit"
 ldesc: "This package contains files necessary for debugging the
-python-pynotify package with gdb."
+xinit package with gdb."
 
diff --git a/testsuite/files/xinit/postinstall.sh b/testsuite/files/xinit/postinstall.sh
new file mode 100644
index 00000000..a29881f2
--- /dev/null
+++ b/testsuite/files/xinit/postinstall.sh
@@ -0,0 +1,3 @@
+case $(uname -s) in *-WOW*) wow64=" (32-bit)" ;; esac
+/usr/bin/mkdir -p "$(/usr/bin/cygpath $CYGWINFORALL -P)/Cygwin-X${wow64}"
+/usr/bin/mkshortcut $CYGWINFORALL -P -w / -i /usr/bin/xwin-xdg-menu.exe -n "Cygwin-X${wow64}/XWin Server" -a "--quote /usr/bin/bash.exe -l -c \"cd; exec /usr/bin/startxwin\"" /usr/bin/run.exe
diff --git a/testsuite/files/xinit/preremove.sh b/testsuite/files/xinit/preremove.sh
new file mode 100644
index 00000000..6dbb3b78
--- /dev/null
+++ b/testsuite/files/xinit/preremove.sh
@@ -0,0 +1,3 @@
+case $(uname -s) in *-WOW*) wow64=" (32-bit)" ;; esac
+rm -f "$(cygpath $CYGWINFORALL -P)/Cygwin-X${wow64}/XWin Server.lnk"
+rmdir --ignore-fail-on-non-empty "$(cygpath $CYGWINFORALL -P)/Cygwin-X${wow64}"
diff --git a/testsuite/files/xinit/profile.d.csh b/testsuite/files/xinit/profile.d.csh
new file mode 100644
index 00000000..f6acfe6b
--- /dev/null
+++ b/testsuite/files/xinit/profile.d.csh
@@ -0,0 +1,4 @@
+unsetenv XAPPLRESDIR
+unsetenv XCMSDB
+unsetenv XKEYSYMDB
+unsetenv XNLSPATH
diff --git a/testsuite/files/xinit/profile.d.fish b/testsuite/files/xinit/profile.d.fish
new file mode 100644
index 00000000..5d65dbf1
--- /dev/null
+++ b/testsuite/files/xinit/profile.d.fish
@@ -0,0 +1,4 @@
+set -e XAPPLRESDIR
+set -e XCMSDB
+set -e XKEYSYMDB
+set -e XNLSPATH
diff --git a/testsuite/files/xinit/profile.d.sh b/testsuite/files/xinit/profile.d.sh
new file mode 100644
index 00000000..4c677613
--- /dev/null
+++ b/testsuite/files/xinit/profile.d.sh
@@ -0,0 +1 @@
+unset XAPPLRESDIR XCMSDB XKEYSYMDB XNLSPATH
diff --git a/testsuite/files/xinit/startxdmcp.bat b/testsuite/files/xinit/startxdmcp.bat
new file mode 100644
index 00000000..54ef171d
--- /dev/null
+++ b/testsuite/files/xinit/startxdmcp.bat
@@ -0,0 +1,102 @@
+@echo off
+SET DISPLAY=127.0.0.1:0.0
+
+REM
+REM The IP address or hostname of your remote host can be specified as the
+REM first (and only) argument to this script. You may also specify the default
+REM value in the IF statement below.
+REM
+
+SET REMOTE_HOST=%1
+
+IF "%REMOTE_HOST%" == "" SET REMOTE_HOST=10.0.0.1
+
+
+REM 
+REM The path in the CYGWIN_ROOT environment variable assignment assume
+REM that Cygwin is installed in a directory called 'cygwin' in the root
+REM directory of the current drive.  You will only need to modify
+REM CYGWIN_ROOT if you have installed Cygwin in another directory.  For
+REM example, if you installed Cygwin in \foo\bar\baz\cygwin, you will need 
+REM to change \cygwin to \foo\bar\baz\cygwin.
+REM 
+REM This batch file will almost always be run from the same drive (and
+REM directory) as the drive that contains Cygwin/X, therefore you will
+REM not need to add a drive letter to CYGWIN_ROOT.  For example, you do
+REM not need to change \cygwin to c:\cygwin if you are running this
+REM batch file from the C drive.
+REM 
+
+SET CYGWIN_ROOT=\cygwin
+SET RUN=%CYGWIN_ROOT%\bin\run -p /usr/bin
+
+SET PATH=.;%CYGWIN_ROOT%\bin;%PATH%
+
+SET XAPPLRESDIR=
+SET XCMSDB=
+SET XKEYSYMDB=
+SET XNLSPATH=
+
+
+
+REM
+REM Cleanup after last run.
+REM
+
+if not exist %CYGWIN_ROOT%\tmp\.X11-unix\X0 goto CLEANUP-FINISH
+attrib -s %CYGWIN_ROOT%\tmp\.X11-unix\X0
+del %CYGWIN_ROOT%\tmp\.X11-unix\X0
+
+:CLEANUP-FINISH
+if exist %CYGWIN_ROOT%\tmp\.X11-unix rmdir %CYGWIN_ROOT%\tmp\.X11-unix
+
+
+REM
+REM Startup the X Server and attempt to connect to a remote XDM server.
+REM 
+REM The error "Fatal server error: could not open default font 'fixed'" is
+REM caused by using a DOS mode mount for the mount that the Cygwin/X
+REM fonts are accessed through.  See the Cygwin/X FAQ for more 
+REM information:
+REM http://x.cygwin.com/docs/faq/cygwin-x-faq.html#q-error-font-eof
+REM
+
+if "%OS%" == "Windows_NT" goto OS_NT
+
+REM Windows 95/98/Me
+echo startxdmcp.bat - Starting on Windows 95/98/Me
+
+goto STARTUP
+
+:OS_NT
+
+REM Windows NT/2000/XP
+echo startxdmcp.bat - Starting on Windows NT/2000/XP
+
+:STARTUP
+
+
+REM
+REM A few examples of initiating an XDMCP connection are
+REM given below.  The default is to connect to a specified host
+REM with -query.  The second example connects to the first
+REM responding host with -broadcast.  The third example shows
+REM how to connect to the font server of a remote host.
+REM 
+REM See startxwin.bat for a description of the most typical
+REM command-line parameters for XWin.exe.
+REM
+
+REM Connect to a specified machine.
+
+%RUN% XWin -query %REMOTE_HOST% -nodecoration -lesspointer
+
+
+REM Connect to the first XDM machine to respond.
+
+REM %RUN% XWin -broadcast -nodecoration -lesspointer
+
+
+REM Connect to a specified machine and a specified font server.
+
+REM %RUN% XWin -query %REMOTE_HOST% -nodecoration -lesspointer -fp tcp/%REMOTE_HOST%:7100
diff --git a/testsuite/files/xinit/startxwin b/testsuite/files/xinit/startxwin
new file mode 100644
index 00000000..35757dbd
--- /dev/null
+++ b/testsuite/files/xinit/startxwin
@@ -0,0 +1,226 @@
+#!/bin/sh
+
+#
+# This is just a sample implementation of a slightly less primitive
+# interface than xinit. It looks for user .xinitrc and .xserverrc
+# files, then system xinitrc and xserverrc files, else lets xinit choose
+# its default. The system xinitrc should probably do things like check
+# for .Xresources files and merge them in, start up a window manager,
+# and pop a clock and several xterms.
+#
+# Site administrators are STRONGLY urged to write nicer versions.
+#
+
+unset DBUS_SESSION_BUS_ADDRESS
+unset SESSION_MANAGER
+userclientrc=$HOME/.startxwinrc
+sysclientrc=/etc/X11/xinit/startxwinrc
+
+userserverrc=$HOME/.xserverrc
+sysserverrc=/etc/X11/xinit/xserverrc
+defaultclient=xterm
+defaultserver=/usr/bin/XWin
+defaultclientargs=""
+defaultserverargs=""
+defaultdisplay=":0"
+clientargs=""
+serverargs=""
+vtarg=""
+display=""
+enable_xauth=1
+
+
+# Automatically determine an unused $DISPLAY
+d=0
+while true ; do
+    [ -e "/tmp/.X$d-lock" -o -S "/tmp/.X11-unix/X$d" ] || break
+    kill -0 `cat /tmp/.X$d-lock` 2>/dev/null || break
+    d=$(($d + 1))
+done
+defaultdisplay=":$d"
+unset d
+
+whoseargs="client"
+while [ x"$1" != x ]; do
+    case "$1" in
+    # '' required to prevent cpp from treating "/*" as a C comment.
+    /''*|\./''*)
+ if [ "$whoseargs" = "client" ]; then
+     if [ x"$client" = x ] && [ x"$clientargs" = x ]; then
+  client="$1"
+     else
+  clientargs="$clientargs $1"
+     fi
+ else
+     if [ x"$server" = x ] && [ x"$serverargs" = x ]; then
+  server="$1"
+     else
+  serverargs="$serverargs $1"
+     fi
+ fi
+ ;;
+    --)
+ whoseargs="server"
+ ;;
+    *)
+ if [ "$whoseargs" = "client" ]; then
+     clientargs="$clientargs $1"
+ else
+     # display must be the FIRST server argument
+     if [ x"$serverargs" = x ] && \
+   expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then
+  display="$1"
+     else
+  serverargs="$serverargs $1"
+     fi
+ fi
+ ;;
+    esac
+    shift
+done
+
+# process client arguments
+if [ x"$client" = x ]; then
+    client=$defaultclient
+
+    # For compatibility reasons, only use startxwinrc if there were no client command line arguments
+    if [ x"$clientargs" = x ]; then
+        if [ -f "$userclientrc" ] && [ ! -x "$userclientrc" ]; then
+            echo "Skipping $userclientrc; present but not executable"
+        fi
+        if [ -x "$userclientrc" ]; then
+            client=$userclientrc
+        elif [ -f "$sysclientrc" ]; then
+            client=$sysclientrc
+        fi
+    fi
+fi
+
+# if no client arguments, use defaults
+if [ x"$clientargs" = x ]; then
+    clientargs=$defaultclientargs
+fi
+
+# process server arguments
+if [ x"$server" = x ]; then
+    server=$defaultserver
+    # For compatibility reasons, only use xserverrc if there were no server command line arguments
+    if [ x"$serverargs" = x -a x"$display" = x ]; then
+ if [ -f "$userserverrc" ]; then
+     server=$userserverrc
+ elif [ -f "$sysserverrc" ]; then
+     server=$sysserverrc
+ fi
+    fi
+fi
+
+# if no server arguments, use defaults
+if [ x"$serverargs" = x ]; then
+    serverargs=$defaultserverargs
+fi
+serverargs="-multiwindow $serverargs"
+
+# if no vt is specified add vtarg (which may be empty)
+have_vtarg="no"
+for i in $serverargs; do
+    if expr match "$i" '^vt[0-9]\+$' > /dev/null; then
+        have_vtarg="yes"
+    fi
+done
+if [ "$have_vtarg" = "no" ]; then
+    serverargs="$serverargs $vtarg"
+fi
+
+# if no display, use default
+if [ x"$display" = x ]; then
+    display=$defaultdisplay
+fi
+
+if [ x"$enable_xauth" = x1 ] ; then
+    if [ x"$XAUTHORITY" = x ]; then
+        XAUTHORITY=$HOME/.Xauthority
+        export XAUTHORITY
+    fi
+
+    removelist=
+
+    # set up default Xauth info for this machine
+    case `uname` in
+    Linux*)
+        if [ -z "`hostname --version 2>&1 | grep GNU`" ]; then
+            hostname=`hostname -f`
+        else
+            hostname=`hostname`
+        fi
+        ;;
+    *)
+        hostname=`hostname`
+        ;;
+    esac
+
+    authdisplay=${display:-:0}
+
+    mcookie=`/usr/bin/mcookie`
+
+
+
+
+
+
+
+    if test x"$mcookie" = x; then
+        echo "Couldn't create cookie"
+        exit 1
+    fi
+    dummy=0
+
+    # create a file with auth information for the server. ':0' is a dummy.
+    xserverauthfile=$HOME/.serverauth.$$
+    trap "rm -f '$xserverauthfile'" HUP INT QUIT ILL TRAP KILL BUS TERM
+    touch "$xserverauthfile"
+    xauth -q -f "$xserverauthfile" << EOF
+add :$dummy . $mcookie
+EOF
+
+    xserverauthfilequoted=$(echo ${xserverauthfile} | sed "s/'/'\\\\''/g")
+    serverargs=${serverargs}" -auth '"${xserverauthfilequoted}"'"
+
+
+
+
+    # now add the same credentials to the client authority file
+    # if '$displayname' already exists do not overwrite it as another
+    # server man need it. Add them to the '$xserverauthfile' instead.
+    for displayname in $authdisplay $hostname$authdisplay; do
+        authcookie=`xauth list "$displayname" \
+        | sed -n "s/.*$displayname[[:space:]*].*[[:space:]*]//p"` 2>/dev/null;
+        if [ "z${authcookie}" = "z" ] ; then
+            xauth -q << EOF
+add $displayname . $mcookie
+EOF
+        removelist="$displayname $removelist"
+        else
+            dummy=$(($dummy+1));
+            xauth -q -f "$xserverauthfile" << EOF
+add :$dummy . $authcookie
+EOF
+        fi
+    done
+fi
+
+
+eval xinit \"$client\" $clientargs -- \"$server\" $display $serverargs
+
+
+
+retval=$?
+
+if [ x"$enable_xauth" = x1 ] ; then
+    if [ x"$removelist" != x ]; then
+        xauth remove $removelist
+    fi
+    if [ x"$xserverauthfile" != x ]; then
+        rm -f "$xserverauthfile"
+    fi
+fi
+exit $retval
diff --git a/testsuite/files/xinit/startxwin.1 b/testsuite/files/xinit/startxwin.1
new file mode 100644
index 00000000..f51ef47a
--- /dev/null
+++ b/testsuite/files/xinit/startxwin.1
@@ -0,0 +1,213 @@
+.\"
+.\" Copyright 1993, 1998  The Open Group
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this software and its
+.\" documentation for any purpose is hereby granted without fee, provided that
+.\" the above copyright notice appear in all copies and that both that
+.\" copyright notice and this permission notice appear in supporting
+.\" documentation.
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of The Open Group shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from The Open Group.
+.\"
+.\"
+.TH STARTXWIN 1 "xinit 1.3.4" "X Version 11"
+.SH NAME
+startxwin \- initialize an X multiwindow session
+.SH SYNOPSIS
+.B startxwin
+[ [
+.I client
+]
+.I options
+\&\.\|.\|. ] [
+.B \-\^\-
+[
+.I server
+] [
+.I display
+] [
+.I -listen
+]
+.I options
+\&.\|.\|. ]
+.SH DESCRIPTION
+The \fBstartxwin\fP script is a front end to
+.BR xinit (1)
+that provides a
+somewhat nicer user interface for running a single session of the X
+Window System in multiwindow mode.  It is often run with no arguments.
+.PP
+Arguments immediately following the
+.I startxwin
+command are used to start a client in the same manner as
+.BR xinit (1).
+The special argument
+.RB '--'
+marks the end of client arguments and the beginning of server options.
+By default startxwin passes
+.RB '-nolisten\ tcp'
+to the server, the special server option
+.RB '-listen'
+can be used to stop startxwin from doing this.
+It may be convenient to specify server options with startxwin to change on a
+per-session basis the
+default color depth, the server's notion of the number of dots-per-inch the
+display device presents, or take advantage of a different server layout, as
+permitted by the
+.BR XWin (1)
+server and specified in the
+.BR XWinrc (5)
+configuration.  Some examples of specifying server arguments follow; consult
+the manual page for your X server to determine which arguments are legal.
+.RS
+.PP
+startxwin -- -depth 16
+.PP
+startxwin -- -dpi 100
+.RE
+.if ''' .ig
+.PP
+To determine the client to run,
+.B startxwin
+looks for the following files, in order:
+.RS
+.PP
+.I $(HOME)/.startxwinrc
+.PP
+.I /etc/X11/xinit/startxwinrc
+.RE
+.PP
+..
+.if !'x.'x.' .ig
+.PP
+To determine the client to run,
+.B startxwin
+first looks for a file called
+.I .startxwinrc
+in the user's home directory.  If that is not found, it uses
+the file
+.I startxwinrc
+in the
+.I xinit
+library directory.
+..
+If command line client options are given, they override this
+behavior and revert to the
+.BR xinit (1)
+behavior.
+To determine the server to run,
+.B startxwin
+first looks for a file called
+.I .xserverrc
+in the user's home directory.  If that is not found, it uses
+the file
+.I xserverrc
+in the
+.I xinit
+library directory.
+If command line server options are given, they override this
+behavior and revert to the
+.BR xinit (1)
+behavior.  Users rarely need to provide a
+.I .xserverrc
+file.
+See the
+.BR xinit (1)
+manual page for more details on the arguments.
+.PP
+The system-wide
+.I startxwinrc
+and
+.I xserverrc
+files are found in the
+.I /etc/X11/xinit
+directory.
+.PP
+The
+.I .startxwinrc
+is typically a shell script which starts many clients according to the
+user's preference.  When this shell script exits,
+.B startxwin
+kills the server and performs any other session shutdown needed.
+Most of the clients started by
+.I .startxwinrc
+should be run in the background.  The last client should run in the
+foreground; when it exits, the session will exit.  People often choose
+a session manager, window manager, or \fIxterm\fP as the ''magic'' client.
+.SH EXAMPLE
+.PP
+Below is a sample \fI\.startxwinrc\fP that starts several applications and
+leaves the panel running as the ''last'' application.  Assuming that
+the window manager has been configured properly, the user
+then chooses the ''Exit'' menu item to shut down X.
+.sp
+.in +4
+.nf
+xrdb \-load $HOME/.Xresources
+xbiff \-geometry \-430+5 &
+oclock \-geometry 75x75\-0\-0 &
+xload \-geometry \-80\-0 &
+xterm \-geometry +0+60 \-ls &
+xterm \-geometry +0\-100 &
+xconsole \-geometry \-0+0 \-fn 5x7 &
+exec fbpanel -profile multiwindow
+.fi
+.in -4
+.SH "ENVIRONMENT VARIABLES"
+.TP 25
+DISPLAY
+This variable gets set to the name of the display to which clients should
+connect.  Note that this gets
+.IR set ,
+not read.
+.TP 25
+XAUTHORITY
+This variable, if not already defined, gets set to
+.IR $(HOME)/.Xauthority .
+This is to prevent the X server, if not given the
+.I \-auth
+argument, from automatically setting up insecure host-based authentication
+for the local host.  See the
+.BR Xserver (1)
+and
+.IR Xsecurity (7)
+manual pages for more information on X client/server authentication.
+.SH FILES
+.TP 25
+.I $(HOME)/.startxwinrc
+Client to run.  Typically a shell script which runs many programs in
+the background.
+.TP 25
+.I $(HOME)/.xserverrc
+Server to run.  The default is
+.IR X .
+.TP 25
+.I /etc/X11/xinit/startxwinrc
+Client to run if the user has no
+.I .startxwinrc
+file.
+.TP 25
+.I /etc/X11/xinit/xserverrc
+Server to run if the user has no
+.I .xserverrc
+file.
+.SH "SEE ALSO"
+.BR xinit (1),
+.BR X (7),
+.BR Xserver (1),
+.BR XWin (1),
+.BR XWinrc (5)
diff --git a/testsuite/files/xinit/vars b/testsuite/files/xinit/vars
new file mode 100644
index 00000000..075532a6
--- /dev/null
+++ b/testsuite/files/xinit/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="autotools "
diff --git a/testsuite/files/xinit/xinit.cygport b/testsuite/files/xinit/xinit.cygport
new file mode 100644
index 00000000..eb6e2616
--- /dev/null
+++ b/testsuite/files/xinit/xinit.cygport
@@ -0,0 +1,44 @@
+# A simplified version of xinit.cygport to excercize the CYGWIN_FILES feature
+
+NAME="xinit"
+VERSION=1.4.2
+RELEASE=2
+CATEGORY="X11"
+SUMMARY="X.Org X server launcher"
+DESCRIPTION="This package contains programs used to start the X Window System
+server and a first client program in environments that use multiple window
+systems."
+HOMEPAGE="https://www.x.org/"
+LICENSE="MIT"
+
+SRC_DIR="."
+
+SRC_URI="
+	startxdmcp.bat
+	startxwin
+	startxwin.1
+"
+
+CYGWIN_FILES="
+	README
+	postinstall.sh
+	preremove.sh
+	profile.d.csh
+	profile.d.fish
+	profile.d.sh
+"
+
+xinit_REQUIRES="adwaita-themes dbus-x11 run sed util-linux setxkbmap xauth xdg-user-dirs xmodmap xrdb xorg-server xterm xwin-xdg-menu"
+# make sure we do not forget to add postinstall/preremove
+xinit_CONTENTS="etc/postinstall/ etc/preremove/ etc/profile.d/ usr/"
+
+src_compile() {
+	:
+}
+
+src_install() {
+	cd ${S}
+	dobin startxdmcp.bat startxwin
+	unix2dos ${D}/usr/bin/*.bat
+	doman startxwin.1
+}
diff --git a/testsuite/files/xinit/xinit.list b/testsuite/files/xinit/xinit.list
new file mode 100644
index 00000000..bbb50edd
--- /dev/null
+++ b/testsuite/files/xinit/xinit.list
@@ -0,0 +1,9 @@
+/etc/postinstall/xinit.sh
+/etc/preremove/xinit.sh
+/etc/profile.d/xinit.csh
+/etc/profile.d/xinit.fish
+/etc/profile.d/xinit.sh
+/usr/bin/startxdmcp.bat
+/usr/bin/startxwin
+/usr/share/doc/Cygwin/xinit.README
+/usr/share/man/man1/startxwin.1.gz
diff --git a/testsuite/font/install/vars b/testsuite/font/install/vars
new file mode 100644
index 00000000..e53cf498
--- /dev/null
+++ b/testsuite/font/install/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="font autotools "
diff --git a/testsuite/font/sfd2ttf/vars b/testsuite/font/sfd2ttf/vars
new file mode 100644
index 00000000..e53cf498
--- /dev/null
+++ b/testsuite/font/sfd2ttf/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="font autotools "
diff --git a/testsuite/hints/multiple/vars b/testsuite/hints/multiple/vars
new file mode 100644
index 00000000..075532a6
--- /dev/null
+++ b/testsuite/hints/multiple/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="autotools "
diff --git a/testsuite/hints/single/vars b/testsuite/hints/single/vars
new file mode 100644
index 00000000..075532a6
--- /dev/null
+++ b/testsuite/hints/single/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="autotools "
diff --git a/testsuite/httpd/apxs/vars b/testsuite/httpd/apxs/vars
new file mode 100644
index 00000000..8fab1ce1
--- /dev/null
+++ b/testsuite/httpd/apxs/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="httpd autotools "
diff --git a/testsuite/logic/arch_patch/arch_patch.cygport b/testsuite/logic/arch_patch/arch_patch.cygport
new file mode 100644
index 00000000..20207f75
--- /dev/null
+++ b/testsuite/logic/arch_patch/arch_patch.cygport
@@ -0,0 +1,12 @@
+NAME=arch_patch
+VERSION=1
+RELEASE=1
+
+case ${ARCH} in
+  "i686")
+    PATCH_URI="fix-for-x86.patch"
+    ;;
+  "x86_64")
+    PATCH_URI="fix-for-x86_64.patch"
+    ;;
+esac
diff --git a/testsuite/logic/arch_src/arch_src.cygport b/testsuite/logic/arch_src/arch_src.cygport
new file mode 100644
index 00000000..dd9e8ea7
--- /dev/null
+++ b/testsuite/logic/arch_src/arch_src.cygport
@@ -0,0 +1,12 @@
+NAME=arch_src
+VERSION=1
+RELEASE=1
+
+case ${ARCH} in
+  "i686")
+    SRC_URI="https://invalid.com/source-x86.tar.xz"
+    ;;
+  "x86_64")
+    SRC_URI="https://invalid.com/source-x86_64.tar.xz"
+    ;;
+esac
diff --git a/testsuite/logic/meson.build b/testsuite/logic/meson.build
new file mode 100644
index 00000000..2876f378
--- /dev/null
+++ b/testsuite/logic/meson.build
@@ -0,0 +1,9 @@
+test('arch_src', cygport_inplace,
+     args: ['arch_src', 'info'],
+     workdir: meson.current_source_dir() / 'arch_src',
+     should_fail: true)
+
+test('arch_patch', cygport_inplace,
+     args: ['arch_patch', 'info'],
+     workdir: meson.current_source_dir() / 'arch_patch',
+     should_fail: true)
diff --git a/testsuite/lua/all/vars b/testsuite/lua/all/vars
new file mode 100644
index 00000000..1d49e0dc
--- /dev/null
+++ b/testsuite/lua/all/vars
@@ -0,0 +1,4 @@
+declare -r ARCHES="all"
+declare -- BUILD_REQUIRES="  lua  liblua-devel"
+declare -- CROSS_HOST=""
+declare -- INHERITED="lua autotools "
diff --git a/testsuite/meson.build b/testsuite/meson.build
index cd43e41f..2b77594b 100644
--- a/testsuite/meson.build
+++ b/testsuite/meson.build
@@ -10,7 +10,7 @@ subdir('basic')
 test_driver = find_program('test-driver')
 # this is used in several subdirs
 cmake = find_program('cmake', required: false)
-python2 = find_program('python2', required: false)
+python3 = find_program('python3', required: false)
 
 tests = []
 
@@ -22,8 +22,10 @@ subdir('autotools')
 subdir('cmake')
 subdir('cross')
 subdir('docbook')
+subdir('files')
 subdir('font')
 subdir('httpd')
+subdir('logic')
 subdir('lua')
 subdir('meson')
 subdir('ocaml')
@@ -43,3 +45,5 @@ test(t[0], test_driver,
      is_parallel: t.length() > 1 ? false : true,
      timeout: t.length() > 1 ? t[1] : 240)
 endforeach
+
+test('vars', find_program('vars'), env: testenv, timeout: 0)
diff --git a/testsuite/meson/c/vars b/testsuite/meson/c/vars
new file mode 100644
index 00000000..8c86aaef
--- /dev/null
+++ b/testsuite/meson/c/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="git ninja meson autotools "
diff --git a/testsuite/meson/gnome/vars b/testsuite/meson/gnome/vars
new file mode 100644
index 00000000..cab57b42
--- /dev/null
+++ b/testsuite/meson/gnome/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="ninja meson gnome.org autotools "
diff --git a/testsuite/ocaml/dune/vars b/testsuite/ocaml/dune/vars
new file mode 100644
index 00000000..0202dfbc
--- /dev/null
+++ b/testsuite/ocaml/dune/vars
@@ -0,0 +1,4 @@
+declare -r ARCHES="all"
+declare -- BUILD_REQUIRES="ocaml ocaml-dune"
+declare -- CROSS_HOST=""
+declare -- INHERITED="ocaml ocaml-dune autotools "
diff --git a/testsuite/ocaml/findlib/vars b/testsuite/ocaml/findlib/vars
new file mode 100644
index 00000000..77bd9d58
--- /dev/null
+++ b/testsuite/ocaml/findlib/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="ocaml autotools "
diff --git a/testsuite/perl/ExtUtils-MakeMaker/vars b/testsuite/perl/ExtUtils-MakeMaker/vars
new file mode 100644
index 00000000..0aeaf68e
--- /dev/null
+++ b/testsuite/perl/ExtUtils-MakeMaker/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="perl autotools "
diff --git a/testsuite/perl/Module-Build/vars b/testsuite/perl/Module-Build/vars
new file mode 100644
index 00000000..f11c5763
--- /dev/null
+++ b/testsuite/perl/Module-Build/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="perl autotools "
diff --git a/testsuite/php/pear/vars b/testsuite/php/pear/vars
new file mode 100644
index 00000000..27196692
--- /dev/null
+++ b/testsuite/php/pear/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="php autotools "
diff --git a/testsuite/php/pecl/vars b/testsuite/php/pecl/vars
new file mode 100644
index 00000000..629c24e6
--- /dev/null
+++ b/testsuite/php/pecl/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="php autotools "
diff --git a/testsuite/python/distutils/hints/python-beautifulsoup-3.2.1-1.x86_64/dist/python-beautifulsoup/python-beautifulsoup-3.2.1-1-src.hint b/testsuite/python/distutils/hints/python3-beautifulsoup-4.11.1-1.x86_64/dist/python3-beautifulsoup/python3-beautifulsoup-4.11.1-1-src.hint
similarity index 83%
rename from testsuite/python/distutils/hints/python-beautifulsoup-3.2.1-1.x86_64/dist/python-beautifulsoup/python-beautifulsoup-3.2.1-1-src.hint
rename to testsuite/python/distutils/hints/python3-beautifulsoup-4.11.1-1.x86_64/dist/python3-beautifulsoup/python3-beautifulsoup-4.11.1-1-src.hint
index a78b5b82..5d3076c9 100644
--- a/testsuite/python/distutils/hints/python-beautifulsoup-3.2.1-1.x86_64/dist/python-beautifulsoup/python-beautifulsoup-3.2.1-1-src.hint
+++ b/testsuite/python/distutils/hints/python3-beautifulsoup-4.11.1-1.x86_64/dist/python3-beautifulsoup/python3-beautifulsoup-4.11.1-1-src.hint
@@ -6,4 +6,4 @@ turnaround projects like screen-scraping. Beautiful Soup parses anything you
 give it, and does the tree traversal stuff for you."
 skip:
 
-homepage: http://www.crummy.com/software/BeautifulSoup/
+homepage: https://www.crummy.com/software/BeautifulSoup/
diff --git a/testsuite/python/distutils/hints/python-beautifulsoup-3.2.1-1.x86_64/dist/python-beautifulsoup/python2-beautifulsoup/python2-beautifulsoup-3.2.1-1.hint b/testsuite/python/distutils/hints/python3-beautifulsoup-4.11.1-1.x86_64/dist/python3-beautifulsoup/python3-beautifulsoup-4.11.1-1.hint
similarity index 83%
rename from testsuite/python/distutils/hints/python-beautifulsoup-3.2.1-1.x86_64/dist/python-beautifulsoup/python2-beautifulsoup/python2-beautifulsoup-3.2.1-1.hint
rename to testsuite/python/distutils/hints/python3-beautifulsoup-4.11.1-1.x86_64/dist/python3-beautifulsoup/python3-beautifulsoup-4.11.1-1.hint
index f3957d94..73e356b9 100644
--- a/testsuite/python/distutils/hints/python-beautifulsoup-3.2.1-1.x86_64/dist/python-beautifulsoup/python2-beautifulsoup/python2-beautifulsoup-3.2.1-1.hint
+++ b/testsuite/python/distutils/hints/python3-beautifulsoup-4.11.1-1.x86_64/dist/python3-beautifulsoup/python3-beautifulsoup-4.11.1-1.hint
@@ -1,9 +1,8 @@
 category: Python
-requires: python27
+requires: python38
 sdesc: "Python HTML/XML parser"
 ldesc: "Beautiful Soup is a Python HTML/XML parser designed for quick
 turnaround projects like screen-scraping. Beautiful Soup parses anything you
 give it, and does the tree traversal stuff for you."
 obsoletes: python-beautifulsoup
-external-source: python-beautifulsoup
 
diff --git a/testsuite/python/distutils/python-beautifulsoup.cygport b/testsuite/python/distutils/python-beautifulsoup.cygport
index 155d31a8..cf703cd3 100644
--- a/testsuite/python/distutils/python-beautifulsoup.cygport
+++ b/testsuite/python/distutils/python-beautifulsoup.cygport
@@ -1,19 +1,21 @@
-ORIG_PN="BeautifulSoup"
+ORIG_PN="beautifulsoup4"
 inherit distutils
 
-NAME="python-beautifulsoup"
-VERSION=3.2.1
+NAME="python3-beautifulsoup"
+VERSION=4.11.1
 RELEASE=1
 CATEGORY="Python"
 SUMMARY="Python HTML/XML parser"
 DESCRIPTION="Beautiful Soup is a Python HTML/XML parser designed for quick
 turnaround projects like screen-scraping. Beautiful Soup parses anything you
 give it, and does the tree traversal stuff for you."
-HOMEPAGE="http://www.crummy.com/software/BeautifulSoup/"
-SRC_URI="http://www.crummy.com/software/BeautifulSoup/download/3.x/${ORIG_PN}-${PV}.tar.gz"
+HOMEPAGE="https://www.crummy.com/software/BeautifulSoup/"
+SRC_URI="https://www.crummy.com/software/BeautifulSoup/bs4/download/${PV%.*}/${ORIG_PN}-${PV}.tar.gz"
 
-PKG_NAMES="python2-beautifulsoup"
-python2_beautifulsoup_OBSOLETES=${NAME}
-python2_beautifulsoup_CONTENTS="*"
+PKG_NAMES="python3-beautifulsoup"
+python3_beautifulsoup_OBSOLETES="python-beautifulsoup"
+python3_beautifulsoup_CONTENTS="*"
 
 DOCS="PKG-INFO"
+
+export SETUPTOOLS_USE_DISTUTILS=local
diff --git a/testsuite/python/distutils/python-beautifulsoup.list b/testsuite/python/distutils/python-beautifulsoup.list
index 978fb6da..b0922eb7 100644
--- a/testsuite/python/distutils/python-beautifulsoup.list
+++ b/testsuite/python/distutils/python-beautifulsoup.list
@@ -1,8 +1,106 @@
-/usr/lib/python2.7/site-packages/BeautifulSoup-3.2.1-py2.7.egg-info
-/usr/lib/python2.7/site-packages/BeautifulSoup.py
-/usr/lib/python2.7/site-packages/BeautifulSoup.pyc
-/usr/lib/python2.7/site-packages/BeautifulSoup.pyo
-/usr/lib/python2.7/site-packages/BeautifulSoupTests.py
-/usr/lib/python2.7/site-packages/BeautifulSoupTests.pyc
-/usr/lib/python2.7/site-packages/BeautifulSoupTests.pyo
-/usr/share/doc/python-beautifulsoup/PKG-INFO
+/usr/lib/python3.8/site-packages/beautifulsoup4-4.11.1-py3.8.egg-info/PKG-INFO
+/usr/lib/python3.8/site-packages/beautifulsoup4-4.11.1-py3.8.egg-info/SOURCES.txt
+/usr/lib/python3.8/site-packages/beautifulsoup4-4.11.1-py3.8.egg-info/dependency_links.txt
+/usr/lib/python3.8/site-packages/beautifulsoup4-4.11.1-py3.8.egg-info/requires.txt
+/usr/lib/python3.8/site-packages/beautifulsoup4-4.11.1-py3.8.egg-info/top_level.txt
+/usr/lib/python3.8/site-packages/bs4/__init__.py
+/usr/lib/python3.8/site-packages/bs4/__pycache__/__init__.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/__init__.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/__init__.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/dammit.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/dammit.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/dammit.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/diagnose.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/diagnose.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/diagnose.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/element.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/element.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/element.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/formatter.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/formatter.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/__pycache__/formatter.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__init__.py
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/__init__.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/__init__.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/__init__.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/_html5lib.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/_html5lib.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/_html5lib.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/_htmlparser.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/_lxml.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/_lxml.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/__pycache__/_lxml.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/builder/_html5lib.py
+/usr/lib/python3.8/site-packages/bs4/builder/_htmlparser.py
+/usr/lib/python3.8/site-packages/bs4/builder/_lxml.py
+/usr/lib/python3.8/site-packages/bs4/dammit.py
+/usr/lib/python3.8/site-packages/bs4/diagnose.py
+/usr/lib/python3.8/site-packages/bs4/element.py
+/usr/lib/python3.8/site-packages/bs4/formatter.py
+/usr/lib/python3.8/site-packages/bs4/tests/__init__.py
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/__init__.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/__init__.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/__init__.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_builder.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_builder.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_builder.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_builder_registry.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_dammit.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_dammit.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_dammit.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_docs.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_docs.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_docs.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_element.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_element.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_element.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_formatter.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_formatter.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_formatter.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_html5lib.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_htmlparser.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_lxml.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_lxml.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_lxml.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_navigablestring.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_pageelement.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_soup.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_soup.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_soup.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_tag.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_tag.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_tag.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_tree.cpython-38.opt-1.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_tree.cpython-38.opt-2.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/__pycache__/test_tree.cpython-38.pyc
+/usr/lib/python3.8/site-packages/bs4/tests/test_builder.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_builder_registry.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_dammit.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_docs.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_element.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_formatter.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_html5lib.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_htmlparser.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_lxml.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_navigablestring.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_pageelement.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_soup.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_tag.py
+/usr/lib/python3.8/site-packages/bs4/tests/test_tree.py
+/usr/share/doc/python3-beautifulsoup/COPYING.txt
+/usr/share/doc/python3-beautifulsoup/LICENSE
+/usr/share/doc/python3-beautifulsoup/NEWS.txt
+/usr/share/doc/python3-beautifulsoup/PKG-INFO
+/usr/share/doc/python3-beautifulsoup/README.md
diff --git a/testsuite/python/distutils/vars b/testsuite/python/distutils/vars
new file mode 100644
index 00000000..f8f28394
--- /dev/null
+++ b/testsuite/python/distutils/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="python3 python.org python3-distutils distutils autotools "
diff --git a/testsuite/python/meson.build b/testsuite/python/meson.build
index 94a48a80..b30347f4 100644
--- a/testsuite/python/meson.build
+++ b/testsuite/python/meson.build
@@ -1,16 +1,10 @@
-pip27 = find_program('pip2.7', required: false)
 pip37 = find_program('pip3.7', required: false)
 pip38 = find_program('pip3.8', required: false)
-pygtk2 = find_program('pygtk-codegen-2.0', required: false)
 
-if python2.found()
+if python3.found()
 tests += [['python/distutils']]
 endif
 
-if pygtk2.found()
-tests += [['python/pygtk', 480]]
-endif
-
-if pip27.found() and pip37.found() and pip38.found()
+if pip37.found() and pip38.found()
 tests += [['python/wheel']]
 endif
diff --git a/testsuite/python/pygtk/hints/python-pynotify-0.1.1-5.x86_64/dist/python-pynotify/python-pynotify-0.1.1-5-src.hint b/testsuite/python/pygtk/hints/python-pynotify-0.1.1-5.x86_64/dist/python-pynotify/python-pynotify-0.1.1-5-src.hint
deleted file mode 100644
index 3042aae9..00000000
--- a/testsuite/python/pygtk/hints/python-pynotify-0.1.1-5.x86_64/dist/python-pynotify/python-pynotify-0.1.1-5-src.hint
+++ /dev/null
@@ -1,7 +0,0 @@
-category: Python
-build-depends: cygport 
-sdesc: "Python libnotify bindings"
-ldesc: "Python bindings for libnotify (desktop notification library)"
-skip:
-
-homepage: http://www.galago-project.org/
diff --git a/testsuite/python/pygtk/hints/python-pynotify-0.1.1-5.x86_64/dist/python-pynotify/python-pynotify-0.1.1-5.hint b/testsuite/python/pygtk/hints/python-pynotify-0.1.1-5.x86_64/dist/python-pynotify/python-pynotify-0.1.1-5.hint
deleted file mode 100644
index 7606a78b..00000000
--- a/testsuite/python/pygtk/hints/python-pynotify-0.1.1-5.x86_64/dist/python-pynotify/python-pynotify-0.1.1-5.hint
+++ /dev/null
@@ -1,5 +0,0 @@
-category: Python
-requires: cygwin libgdk_pixbuf2.0_0 libglib2.0_0 libnotify4 pkg-config python27 python-gobject python-gtk2.0
-sdesc: "Python libnotify bindings"
-ldesc: "Python bindings for libnotify (desktop notification library)"
-
diff --git a/testsuite/python/pygtk/notify-python-0.1.1-libnotify-0.7.patch b/testsuite/python/pygtk/notify-python-0.1.1-libnotify-0.7.patch
deleted file mode 100644
index ee146cb6..00000000
--- a/testsuite/python/pygtk/notify-python-0.1.1-libnotify-0.7.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-http://pkgs.fedoraproject.org/gitweb/?p=notify-python.git;a=blob_plain;f=libnotify07.patch;hb=HEAD
-
---- src/pynotify.defs
-+++ src/pynotify.defs
-@@ -38,7 +38,6 @@
-     '("const-gchar*" "summary")
-     '("const-gchar*" "message" (null-ok) (default "NULL"))
-     '("const-gchar*" "icon" (null-ok) (default "NULL"))
--    '("GtkWidget*" "attach" (null-ok) (default "NULL"))
-   )
- )
- 
-@@ -53,24 +52,6 @@
-   )
- )
- 
--(define-method attach_to_widget
--  (of-object "NotifyNotification")
--  (c-name "notify_notification_attach_to_widget")
--  (return-type "none")
--  (parameters
--    '("GtkWidget*" "attach")
--  )
--)
--
--(define-method attach_to_status_icon
--  (of-object "NotifyNotification")
--  (c-name "notify_notification_attach_to_status_icon")
--  (return-type "none")
--  (parameters
--    '("GtkStatusIcon*" "attach")
--  )
--)
--
- (define-method show
-   (of-object "NotifyNotification")
-   (c-name "notify_notification_show")
diff --git a/testsuite/python/pygtk/python-pynotify.cygport b/testsuite/python/pygtk/python-pynotify.cygport
deleted file mode 100644
index 70570dcd..00000000
--- a/testsuite/python/pygtk/python-pynotify.cygport
+++ /dev/null
@@ -1,18 +0,0 @@
-ORIG_PN="notify-python"
-inherit pygtk
-
-NAME="python-pynotify"
-VERSION=0.1.1
-RELEASE=5
-CATEGORY="Python"
-SUMMARY="Python libnotify bindings"
-DESCRIPTION="Python bindings for libnotify (desktop notification library)"
-HOMEPAGE="http://www.galago-project.org/"
-SRC_URI="http://www.galago-project.org/files/releases/source/${ORIG_PN}/${ORIG_PN}-${PV}.tar.bz2"
-PATCH_URI="mirror://portage/dev-python/${ORIG_PN}/files/${ORIG_PN}-${PV}-libnotify-0.7.patch"
-
-DISTCLEANFILES="src/pynotify.c"
-
-REQUIRES="python-gobject python-gtk2.0"
-
-CFLAGS+=" -fcommon"
diff --git a/testsuite/python/pygtk/python-pynotify.list b/testsuite/python/pygtk/python-pynotify.list
deleted file mode 100644
index 7c8f460a..00000000
--- a/testsuite/python/pygtk/python-pynotify.list
+++ /dev/null
@@ -1,10 +0,0 @@
-/usr/lib/pkgconfig/notify-python.pc
-/usr/lib/python2.7/site-packages/gtk-2.0/pynotify/__init__.py
-/usr/lib/python2.7/site-packages/gtk-2.0/pynotify/__init__.pyc
-/usr/lib/python2.7/site-packages/gtk-2.0/pynotify/__init__.pyo
-/usr/lib/python2.7/site-packages/gtk-2.0/pynotify/_pynotify.dll
-/usr/share/doc/python-pynotify/AUTHORS
-/usr/share/doc/python-pynotify/COPYING
-/usr/share/doc/python-pynotify/ChangeLog
-/usr/share/doc/python-pynotify/NEWS
-/usr/share/pygtk/2.0/defs/pynotify.defs
diff --git a/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python-six-wheel/python-six-wheel-1.10.0-1.hint b/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python-six-wheel/python-six-wheel-1.10.0-1.hint
index a4534524..d5c2080c 100644
--- a/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python-six-wheel/python-six-wheel-1.10.0-1.hint
+++ b/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python-six-wheel/python-six-wheel-1.10.0-1.hint
@@ -1,5 +1,5 @@
 category: Python
-requires:  
+requires: 
 sdesc: "Python 2 and 3 compatibility library"
 ldesc: "Six is a Python 2 and 3 compatibility library. It provides
 utility functions for smoothing over the differences between the Python
diff --git a/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python27-six/python27-six-1.10.0-1.hint b/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python27-six/python27-six-1.10.0-1.hint
deleted file mode 100644
index 5ed1a3aa..00000000
--- a/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python27-six/python27-six-1.10.0-1.hint
+++ /dev/null
@@ -1,10 +0,0 @@
-category: Python
-requires: python27 
-sdesc: "Python 2 and 3 compatibility library"
-ldesc: "Six is a Python 2 and 3 compatibility library. It provides
-utility functions for smoothing over the differences between the Python
-versions with the goal of writing Python code that is compatible on both
-Python versions."
-obsoletes: python-six python2-six
-external-source: python-six
-
diff --git a/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python37-six/python37-six-1.10.0-1.hint b/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python37-six/python37-six-1.10.0-1.hint
index c2dc0665..84e95786 100644
--- a/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python37-six/python37-six-1.10.0-1.hint
+++ b/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python37-six/python37-six-1.10.0-1.hint
@@ -1,5 +1,5 @@
 category: Python
-requires: python37 
+requires: python37
 sdesc: "Python 2 and 3 compatibility library"
 ldesc: "Six is a Python 2 and 3 compatibility library. It provides
 utility functions for smoothing over the differences between the Python
diff --git a/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python38-six/python38-six-1.10.0-1.hint b/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python38-six/python38-six-1.10.0-1.hint
index e0004136..169c9b91 100644
--- a/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python38-six/python38-six-1.10.0-1.hint
+++ b/testsuite/python/wheel/hints/python-six-1.10.0-1.noarch/dist/python-six/python38-six/python38-six-1.10.0-1.hint
@@ -1,5 +1,5 @@
 category: Python
-requires: python38 
+requires: python38
 sdesc: "Python 2 and 3 compatibility library"
 ldesc: "Six is a Python 2 and 3 compatibility library. It provides
 utility functions for smoothing over the differences between the Python
diff --git a/testsuite/python/wheel/python-six.cygport b/testsuite/python/wheel/python-six.cygport
index 34a6489c..6a04f8bc 100644
--- a/testsuite/python/wheel/python-six.cygport
+++ b/testsuite/python/wheel/python-six.cygport
@@ -1,4 +1,4 @@
-PYTHON_WHEEL_VERSIONS="2.7:3.7:3.8"
+PYTHON_WHEEL_VERSIONS="3.7:3.8"
 inherit python-wheel
 
 NAME="python-six"
diff --git a/testsuite/python/wheel/python-six.list b/testsuite/python/wheel/python-six.list
index 30c417c0..ebb9ed5a 100644
--- a/testsuite/python/wheel/python-six.list
+++ b/testsuite/python/wheel/python-six.list
@@ -1,14 +1,3 @@
-/usr/lib/python2.7/site-packages/six-1.10.0.dist-info/INSTALLER
-/usr/lib/python2.7/site-packages/six-1.10.0.dist-info/LICENSE
-/usr/lib/python2.7/site-packages/six-1.10.0.dist-info/METADATA
-/usr/lib/python2.7/site-packages/six-1.10.0.dist-info/RECORD
-/usr/lib/python2.7/site-packages/six-1.10.0.dist-info/REQUESTED
-/usr/lib/python2.7/site-packages/six-1.10.0.dist-info/WHEEL
-/usr/lib/python2.7/site-packages/six-1.10.0.dist-info/direct_url.json
-/usr/lib/python2.7/site-packages/six-1.10.0.dist-info/top_level.txt
-/usr/lib/python2.7/site-packages/six.py
-/usr/lib/python2.7/site-packages/six.pyc
-/usr/lib/python2.7/site-packages/six.pyo
 /usr/lib/python3.7/site-packages/__pycache__/six.cpython-37.opt-1.pyc
 /usr/lib/python3.7/site-packages/__pycache__/six.cpython-37.opt-2.pyc
 /usr/lib/python3.7/site-packages/__pycache__/six.cpython-37.pyc
@@ -36,9 +25,6 @@
 /usr/share/doc/python-six-wheel/CHANGES
 /usr/share/doc/python-six-wheel/LICENSE
 /usr/share/doc/python-six-wheel/README
-/usr/share/doc/python27-six/CHANGES
-/usr/share/doc/python27-six/LICENSE
-/usr/share/doc/python27-six/README
 /usr/share/doc/python37-six/CHANGES
 /usr/share/doc/python37-six/LICENSE
 /usr/share/doc/python37-six/README
diff --git a/testsuite/python/wheel/vars b/testsuite/python/wheel/vars
new file mode 100644
index 00000000..de82fe0a
--- /dev/null
+++ b/testsuite/python/wheel/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="python.org python-wheel autotools "
diff --git a/testsuite/qmake/qt3/vars b/testsuite/qmake/qt3/vars
new file mode 100644
index 00000000..2f563e7b
--- /dev/null
+++ b/testsuite/qmake/qt3/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="qt3 qt3-qmake autotools "
diff --git a/testsuite/qmake/qt4/vars b/testsuite/qmake/qt4/vars
new file mode 100644
index 00000000..9fdd9fe3
--- /dev/null
+++ b/testsuite/qmake/qt4/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="qt4 qt4-qmake autotools "
diff --git a/testsuite/qmake/qt5/vars b/testsuite/qmake/qt5/vars
new file mode 100644
index 00000000..4944800e
--- /dev/null
+++ b/testsuite/qmake/qt5/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="qt5 qt5-qmake autotools "
diff --git a/testsuite/ruby/gem/vars b/testsuite/ruby/gem/vars
new file mode 100644
index 00000000..af2660b4
--- /dev/null
+++ b/testsuite/ruby/gem/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="ruby rubygem autotools "
diff --git a/testsuite/texlive/collection/vars b/testsuite/texlive/collection/vars
new file mode 100644
index 00000000..2bb359ad
--- /dev/null
+++ b/testsuite/texlive/collection/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="noarch"
+declare -- CROSS_HOST=""
+declare -- INHERITED="texlive autotools "
diff --git a/testsuite/vars b/testsuite/vars
new file mode 100755
index 00000000..344ba560
--- /dev/null
+++ b/testsuite/vars
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -e
+
+cd ${top_srcdir}/testsuite/
+for c in $(find . -name \*.cygport -not -path './logic/*')
+do
+  test=$(dirname ${c})
+  cygport=$(basename ${c})
+
+  test -d ${top_builddir}/testsuite/$test || mkdir -p ${top_builddir}/testsuite/$test
+  cd ${top_builddir}/testsuite/$test
+  cp -f ${top_srcdir}/testsuite/$test/$cygport $cygport
+
+  ${top_builddir}/bin/cygport-inplace $cygport vars ARCHES BUILD_REQUIRES CROSS_HOST INHERITED >vars
+
+  # compare results
+  if [ -a ${top_srcdir}/testsuite/$test/vars ];
+  then
+      diff -u ${top_srcdir}/testsuite/$test/vars vars || test_failed=1
+  else
+      # if CREATE_VARS is set, create the expected vars file for use in future testing
+      if [ -z ${CREATE_VARS+x} ]
+      then
+          echo "can't verify vars as expected vars ${top_srcdir}/testsuite/$test/vars not found." >&2
+          test_failed=1
+      else
+          cp vars ${top_srcdir}/testsuite/$test/vars
+      fi
+    fi
+done
+
+if [ -n "$test_failed" ]
+then
+    exit 1
+fi
diff --git a/testsuite/waf/all/1.12.0-cygwin-shlib.patch b/testsuite/waf/all/1.12.0-cygwin-shlib.patch
deleted file mode 100644
index 19aac8b1..00000000
--- a/testsuite/waf/all/1.12.0-cygwin-shlib.patch
+++ /dev/null
@@ -1,66 +0,0 @@
---- origsrc/lv2-1.12.0/plugins/eg-amp.lv2/wscript	2015-03-02 09:31:54.000000000 -0600
-+++ src/lv2-1.12.0/plugins/eg-amp.lv2/wscript	2015-11-26 02:01:55.756934600 -0600
-@@ -32,7 +32,7 @@ def build(bld):
-     bundle = 'eg-amp.lv2'
- 
-     # Make a pattern for shared objects without the 'lib' prefix
--    module_pat = re.sub('^lib', '', bld.env.cshlib_PATTERN)
-+    module_pat = re.sub('^(lib|cyg)', '', bld.env.cshlib_PATTERN)
-     module_ext = module_pat[module_pat.rfind('.'):]
- 
-     # Build manifest.ttl by substitution (for portable lib extension)
---- origsrc/lv2-1.12.0/plugins/eg-fifths.lv2/wscript	2015-03-02 09:31:54.000000000 -0600
-+++ src/lv2-1.12.0/plugins/eg-fifths.lv2/wscript	2015-11-26 02:02:34.348335100 -0600
-@@ -30,7 +30,7 @@ def build(bld):
-     bundle = 'eg-fifths.lv2'
- 
-     # Make a pattern for shared objects without the 'lib' prefix
--    module_pat = re.sub('^lib', '', bld.env.cshlib_PATTERN)
-+    module_pat = re.sub('^(lib|cyg)', '', bld.env.cshlib_PATTERN)
-     module_ext = module_pat[module_pat.rfind('.'):]
- 
-     # Build manifest.ttl by substitution (for portable lib extension)
---- origsrc/lv2-1.12.0/plugins/eg-metro.lv2/wscript	2015-03-02 09:31:54.000000000 -0600
-+++ src/lv2-1.12.0/plugins/eg-metro.lv2/wscript	2015-11-26 02:01:55.765435700 -0600
-@@ -32,7 +32,7 @@ def build(bld):
-     bundle = 'eg-metro.lv2'
- 
-     # Make a pattern for shared objects without the 'lib' prefix
--    module_pat = re.sub('^lib', '', bld.env.cshlib_PATTERN)
-+    module_pat = re.sub('^(lib|cyg)', '', bld.env.cshlib_PATTERN)
-     module_ext = module_pat[module_pat.rfind('.'):]
- 
-     # Build manifest.ttl by substitution (for portable lib extension)
---- origsrc/lv2-1.12.0/plugins/eg-midigate.lv2/wscript	2015-03-02 09:31:54.000000000 -0600
-+++ src/lv2-1.12.0/plugins/eg-midigate.lv2/wscript	2015-11-26 02:01:55.761435200 -0600
-@@ -30,7 +30,7 @@ def build(bld):
-     bundle = 'eg-midigate.lv2'
- 
-     # Make a pattern for shared objects without the 'lib' prefix
--    module_pat = re.sub('^lib', '', bld.env.cshlib_PATTERN)
-+    module_pat = re.sub('^(lib|cyg)', '', bld.env.cshlib_PATTERN)
-     module_ext = module_pat[module_pat.rfind('.'):]
- 
-     # Build manifest.ttl by substitution (for portable lib extension)
---- origsrc/lv2-1.12.0/plugins/eg-sampler.lv2/wscript	2015-03-02 09:31:54.000000000 -0600
-+++ src/lv2-1.12.0/plugins/eg-sampler.lv2/wscript	2015-11-26 02:01:55.770936400 -0600
-@@ -36,7 +36,7 @@ def build(bld):
-     bundle = 'eg-sampler.lv2'
- 
-     # Make a pattern for shared objects without the 'lib' prefix
--    module_pat = re.sub('^lib', '', bld.env.cshlib_PATTERN)
-+    module_pat = re.sub('^(lib|cyg)', '', bld.env.cshlib_PATTERN)
-     module_ext = module_pat[module_pat.rfind('.'):]
- 
-     # Build manifest.ttl by substitution (for portable lib extension)
---- origsrc/lv2-1.12.0/plugins/eg-scope.lv2/wscript	2015-03-02 09:31:54.000000000 -0600
-+++ src/lv2-1.12.0/plugins/eg-scope.lv2/wscript	2015-11-26 02:02:42.472866800 -0600
-@@ -35,7 +35,7 @@ def build(bld):
-     bundle = 'eg-scope.lv2'
- 
-     # Make a pattern for shared objects without the 'lib' prefix
--    module_pat = re.sub('^lib', '', bld.env.cshlib_PATTERN)
-+    module_pat = re.sub('^(lib|cyg)', '', bld.env.cshlib_PATTERN)
-     module_ext = module_pat[module_pat.rfind('.'):]
- 
-     # Build manifest.ttl by substitution (for portable lib extension)
diff --git a/testsuite/waf/all/hints/lv2-1.12.0-1.x86_64/dist/lv2/lv2-1.12.0-1-src.hint b/testsuite/waf/all/hints/lv2-1.18.4-1.x86_64/dist/lv2/lv2-1.18.4-1-src.hint
similarity index 100%
rename from testsuite/waf/all/hints/lv2-1.12.0-1.x86_64/dist/lv2/lv2-1.12.0-1-src.hint
rename to testsuite/waf/all/hints/lv2-1.18.4-1.x86_64/dist/lv2/lv2-1.18.4-1-src.hint
diff --git a/testsuite/waf/all/hints/lv2-1.12.0-1.x86_64/dist/lv2/lv2-1.12.0-1.hint b/testsuite/waf/all/hints/lv2-1.18.4-1.x86_64/dist/lv2/lv2-1.18.4-1.hint
similarity index 100%
rename from testsuite/waf/all/hints/lv2-1.12.0-1.x86_64/dist/lv2/lv2-1.12.0-1.hint
rename to testsuite/waf/all/hints/lv2-1.18.4-1.x86_64/dist/lv2/lv2-1.18.4-1.hint
diff --git a/testsuite/waf/all/hints/lv2-1.12.0-1.x86_64/dist/lv2/lv2-devel/lv2-devel-1.12.0-1.hint b/testsuite/waf/all/hints/lv2-1.18.4-1.x86_64/dist/lv2/lv2-devel/lv2-devel-1.18.4-1.hint
similarity index 93%
rename from testsuite/waf/all/hints/lv2-1.12.0-1.x86_64/dist/lv2/lv2-devel/lv2-devel-1.12.0-1.hint
rename to testsuite/waf/all/hints/lv2-1.18.4-1.x86_64/dist/lv2/lv2-devel/lv2-devel-1.18.4-1.hint
index 0e21dae3..ebd2efab 100644
--- a/testsuite/waf/all/hints/lv2-1.12.0-1.x86_64/dist/lv2/lv2-devel/lv2-devel-1.12.0-1.hint
+++ b/testsuite/waf/all/hints/lv2-1.18.4-1.x86_64/dist/lv2/lv2-devel/lv2-devel-1.18.4-1.hint
@@ -1,5 +1,5 @@
 category: Audio
-requires: pkg-config python3 lv2
+requires: bash pkg-config python3 lv2
 sdesc: "LV2 audio plugin specification"
 ldesc: "LV2 is a portable plugin standard for audio systems, similar in
 scope to LADSPA, VST, AU, and others. It defines a C API for code and a format
diff --git a/testsuite/waf/all/lv2.cygport b/testsuite/waf/all/lv2.cygport
index 36d86f90..4ceab9ec 100644
--- a/testsuite/waf/all/lv2.cygport
+++ b/testsuite/waf/all/lv2.cygport
@@ -1,7 +1,7 @@
 inherit waf
 
 NAME="lv2"
-VERSION=1.12.0
+VERSION=1.18.4
 RELEASE=1
 CATEGORY="Audio"
 SUMMARY="LV2 audio plugin specification"
@@ -13,17 +13,16 @@ more advanced functionality. This allows the interface to be grown to
 accommodate the needs of real software as they arise."
 HOMEPAGE="http://lv2plug.in/"
 SRC_URI="http://lv2plug.in/spec/lv2-${VERSION}.tar.bz2"
-PATCH_URI="1.12.0-cygwin-shlib.patch waf-python2.patch"
 
 PKG_NAMES="lv2 lv2-devel"
 lv2_OBSOLETES="lv2core"
 lv2_DOCS="COPYING NEWS README.md"
 lv2_CONTENTS="--exclude=eg-*.lv2 --exclude=*.[ch] etc/ usr/lib/lv2/"
 lv2_devel_REQUIRES="lv2"
-lv2_devel_CONTENTS="usr/bin/lv2specgen.py usr/include/lv2* usr/lib/lv2/*/*.[ch]
-	usr/lib/pkgconfig/ usr/share/lv2specgen/"
+lv2_devel_CONTENTS="usr/bin/lv2specgen.py usr/bin/lv2_validate usr/include/lv2*
+        usr/lib/lv2/*/*.[ch] usr/lib/pkgconfig/ usr/share/lv2specgen/"
 
-WAF_CONFIGURE_FLAGS="--no-plugins"
+WAF_CONFIGURE_FLAGS="--no-plugins --lv2dir=/usr/lib/lv2"
 
 src_install() {
 	cd ${B}
diff --git a/testsuite/waf/all/lv2.list b/testsuite/waf/all/lv2.list
index 841d7ab9..1555bd04 100644
--- a/testsuite/waf/all/lv2.list
+++ b/testsuite/waf/all/lv2.list
@@ -1,8 +1,17 @@
 /etc/profile.d/lv2.csh
 /etc/profile.d/lv2.fish
 /etc/profile.d/lv2.sh
+/usr/bin/lv2_validate
 /usr/bin/lv2specgen.py
 /usr/include/lv2.h
+/usr/include/lv2/atom
+/usr/include/lv2/buf-size
+/usr/include/lv2/core
+/usr/include/lv2/data-access
+/usr/include/lv2/dynmanifest
+/usr/include/lv2/event
+/usr/include/lv2/instance-access
+/usr/include/lv2/log
 /usr/include/lv2/lv2plug.in/ns/ext/atom
 /usr/include/lv2/lv2plug.in/ns/ext/buf-size
 /usr/include/lv2/lv2plug.in/ns/ext/data-access
@@ -27,78 +36,100 @@
 /usr/include/lv2/lv2plug.in/ns/extensions/ui
 /usr/include/lv2/lv2plug.in/ns/extensions/units
 /usr/include/lv2/lv2plug.in/ns/lv2core
+/usr/include/lv2/midi
+/usr/include/lv2/morph
+/usr/include/lv2/options
+/usr/include/lv2/parameters
+/usr/include/lv2/patch
+/usr/include/lv2/port-groups
+/usr/include/lv2/port-props
+/usr/include/lv2/presets
+/usr/include/lv2/resize-port
+/usr/include/lv2/state
+/usr/include/lv2/time
+/usr/include/lv2/ui
+/usr/include/lv2/units
+/usr/include/lv2/uri-map
+/usr/include/lv2/urid
+/usr/include/lv2/worker
+/usr/lib/lv2/atom.lv2/atom-test-utils.c
 /usr/lib/lv2/atom.lv2/atom-test.c
 /usr/lib/lv2/atom.lv2/atom.h
+/usr/lib/lv2/atom.lv2/atom.meta.ttl
 /usr/lib/lv2/atom.lv2/atom.ttl
+/usr/lib/lv2/atom.lv2/forge-overflow-test.c
 /usr/lib/lv2/atom.lv2/forge.h
-/usr/lib/lv2/atom.lv2/lv2-atom.doap.ttl
 /usr/lib/lv2/atom.lv2/manifest.ttl
 /usr/lib/lv2/atom.lv2/util.h
 /usr/lib/lv2/buf-size.lv2/buf-size.h
+/usr/lib/lv2/buf-size.lv2/buf-size.meta.ttl
 /usr/lib/lv2/buf-size.lv2/buf-size.ttl
-/usr/lib/lv2/buf-size.lv2/lv2-buf-size.doap.ttl
 /usr/lib/lv2/buf-size.lv2/manifest.ttl
+/usr/lib/lv2/core.lv2/attributes.h
+/usr/lib/lv2/core.lv2/lv2.h
+/usr/lib/lv2/core.lv2/lv2_util.h
+/usr/lib/lv2/core.lv2/lv2core.meta.ttl
+/usr/lib/lv2/core.lv2/lv2core.ttl
+/usr/lib/lv2/core.lv2/manifest.ttl
+/usr/lib/lv2/core.lv2/meta.ttl
+/usr/lib/lv2/core.lv2/people.ttl
 /usr/lib/lv2/data-access.lv2/data-access.h
+/usr/lib/lv2/data-access.lv2/data-access.meta.ttl
 /usr/lib/lv2/data-access.lv2/data-access.ttl
-/usr/lib/lv2/data-access.lv2/lv2-data-access.doap.ttl
 /usr/lib/lv2/data-access.lv2/manifest.ttl
 /usr/lib/lv2/dynmanifest.lv2/dynmanifest.h
+/usr/lib/lv2/dynmanifest.lv2/dynmanifest.meta.ttl
 /usr/lib/lv2/dynmanifest.lv2/dynmanifest.ttl
-/usr/lib/lv2/dynmanifest.lv2/lv2-dynmanifest.doap.ttl
 /usr/lib/lv2/dynmanifest.lv2/manifest.ttl
 /usr/lib/lv2/event.lv2/event-helpers.h
 /usr/lib/lv2/event.lv2/event.h
+/usr/lib/lv2/event.lv2/event.meta.ttl
 /usr/lib/lv2/event.lv2/event.ttl
-/usr/lib/lv2/event.lv2/lv2-event.doap.ttl
 /usr/lib/lv2/event.lv2/manifest.ttl
 /usr/lib/lv2/instance-access.lv2/instance-access.h
+/usr/lib/lv2/instance-access.lv2/instance-access.meta.ttl
 /usr/lib/lv2/instance-access.lv2/instance-access.ttl
-/usr/lib/lv2/instance-access.lv2/lv2-instance-access.doap.ttl
 /usr/lib/lv2/instance-access.lv2/manifest.ttl
 /usr/lib/lv2/log.lv2/log.h
+/usr/lib/lv2/log.lv2/log.meta.ttl
 /usr/lib/lv2/log.lv2/log.ttl
 /usr/lib/lv2/log.lv2/logger.h
-/usr/lib/lv2/log.lv2/lv2-log.doap.ttl
 /usr/lib/lv2/log.lv2/manifest.ttl
-/usr/lib/lv2/lv2core.lv2/lv2.h
-/usr/lib/lv2/lv2core.lv2/lv2core.doap.ttl
-/usr/lib/lv2/lv2core.lv2/lv2core.ttl
-/usr/lib/lv2/lv2core.lv2/manifest.ttl
-/usr/lib/lv2/midi.lv2/lv2-midi.doap.ttl
 /usr/lib/lv2/midi.lv2/manifest.ttl
 /usr/lib/lv2/midi.lv2/midi.h
+/usr/lib/lv2/midi.lv2/midi.meta.ttl
 /usr/lib/lv2/midi.lv2/midi.ttl
-/usr/lib/lv2/morph.lv2/lv2-morph.doap.ttl
 /usr/lib/lv2/morph.lv2/manifest.ttl
 /usr/lib/lv2/morph.lv2/morph.h
+/usr/lib/lv2/morph.lv2/morph.meta.ttl
 /usr/lib/lv2/morph.lv2/morph.ttl
-/usr/lib/lv2/options.lv2/lv2-options.doap.ttl
 /usr/lib/lv2/options.lv2/manifest.ttl
 /usr/lib/lv2/options.lv2/options.h
+/usr/lib/lv2/options.lv2/options.meta.ttl
 /usr/lib/lv2/options.lv2/options.ttl
-/usr/lib/lv2/parameters.lv2/lv2-parameters.doap.ttl
 /usr/lib/lv2/parameters.lv2/manifest.ttl
 /usr/lib/lv2/parameters.lv2/parameters.h
+/usr/lib/lv2/parameters.lv2/parameters.meta.ttl
 /usr/lib/lv2/parameters.lv2/parameters.ttl
-/usr/lib/lv2/patch.lv2/lv2-patch.doap.ttl
 /usr/lib/lv2/patch.lv2/manifest.ttl
 /usr/lib/lv2/patch.lv2/patch.h
+/usr/lib/lv2/patch.lv2/patch.meta.ttl
 /usr/lib/lv2/patch.lv2/patch.ttl
-/usr/lib/lv2/port-groups.lv2/lv2-port-groups.doap.ttl
 /usr/lib/lv2/port-groups.lv2/manifest.ttl
 /usr/lib/lv2/port-groups.lv2/port-groups.h
+/usr/lib/lv2/port-groups.lv2/port-groups.meta.ttl
 /usr/lib/lv2/port-groups.lv2/port-groups.ttl
-/usr/lib/lv2/port-props.lv2/lv2-port-props.doap.ttl
 /usr/lib/lv2/port-props.lv2/manifest.ttl
 /usr/lib/lv2/port-props.lv2/port-props.h
+/usr/lib/lv2/port-props.lv2/port-props.meta.ttl
 /usr/lib/lv2/port-props.lv2/port-props.ttl
-/usr/lib/lv2/presets.lv2/lv2-presets.doap.ttl
 /usr/lib/lv2/presets.lv2/manifest.ttl
 /usr/lib/lv2/presets.lv2/presets.h
+/usr/lib/lv2/presets.lv2/presets.meta.ttl
 /usr/lib/lv2/presets.lv2/presets.ttl
-/usr/lib/lv2/resize-port.lv2/lv2-resize-port.doap.ttl
 /usr/lib/lv2/resize-port.lv2/manifest.ttl
 /usr/lib/lv2/resize-port.lv2/resize-port.h
+/usr/lib/lv2/resize-port.lv2/resize-port.meta.ttl
 /usr/lib/lv2/resize-port.lv2/resize-port.ttl
 /usr/lib/lv2/schemas.lv2/dcs.ttl
 /usr/lib/lv2/schemas.lv2/dct.ttl
@@ -109,36 +140,35 @@
 /usr/lib/lv2/schemas.lv2/rdf.ttl
 /usr/lib/lv2/schemas.lv2/rdfs.ttl
 /usr/lib/lv2/schemas.lv2/xsd.ttl
-/usr/lib/lv2/state.lv2/lv2-state.doap.ttl
 /usr/lib/lv2/state.lv2/manifest.ttl
 /usr/lib/lv2/state.lv2/state.h
+/usr/lib/lv2/state.lv2/state.meta.ttl
 /usr/lib/lv2/state.lv2/state.ttl
-/usr/lib/lv2/time.lv2/lv2-time.doap.ttl
 /usr/lib/lv2/time.lv2/manifest.ttl
 /usr/lib/lv2/time.lv2/time.h
+/usr/lib/lv2/time.lv2/time.meta.ttl
 /usr/lib/lv2/time.lv2/time.ttl
-/usr/lib/lv2/ui.lv2/lv2-ui.doap.ttl
 /usr/lib/lv2/ui.lv2/manifest.ttl
 /usr/lib/lv2/ui.lv2/ui.h
+/usr/lib/lv2/ui.lv2/ui.meta.ttl
 /usr/lib/lv2/ui.lv2/ui.ttl
-/usr/lib/lv2/units.lv2/lv2-units.doap.ttl
 /usr/lib/lv2/units.lv2/manifest.ttl
 /usr/lib/lv2/units.lv2/units.h
+/usr/lib/lv2/units.lv2/units.meta.ttl
 /usr/lib/lv2/units.lv2/units.ttl
-/usr/lib/lv2/uri-map.lv2/lv2-uri-map.doap.ttl
 /usr/lib/lv2/uri-map.lv2/manifest.ttl
 /usr/lib/lv2/uri-map.lv2/uri-map.h
+/usr/lib/lv2/uri-map.lv2/uri-map.meta.ttl
 /usr/lib/lv2/uri-map.lv2/uri-map.ttl
-/usr/lib/lv2/urid.lv2/lv2-urid.doap.ttl
 /usr/lib/lv2/urid.lv2/manifest.ttl
 /usr/lib/lv2/urid.lv2/urid.h
+/usr/lib/lv2/urid.lv2/urid.meta.ttl
 /usr/lib/lv2/urid.lv2/urid.ttl
-/usr/lib/lv2/worker.lv2/lv2-worker.doap.ttl
 /usr/lib/lv2/worker.lv2/manifest.ttl
 /usr/lib/lv2/worker.lv2/worker.h
+/usr/lib/lv2/worker.lv2/worker.meta.ttl
 /usr/lib/lv2/worker.lv2/worker.ttl
 /usr/lib/pkgconfig/lv2.pc
-/usr/lib/pkgconfig/lv2core.pc
 /usr/share/doc/lv2/COPYING
 /usr/share/doc/lv2/NEWS
 /usr/share/doc/lv2/README.md
@@ -154,6 +184,7 @@
 /usr/share/lv2specgen/DTD/xhtml-charent-1.mod
 /usr/share/lv2specgen/DTD/xhtml-csismap-1.mod
 /usr/share/lv2specgen/DTD/xhtml-datatypes-1.mod
+/usr/share/lv2specgen/DTD/xhtml-datatypes-1.mod.1
 /usr/share/lv2specgen/DTD/xhtml-edit-1.mod
 /usr/share/lv2specgen/DTD/xhtml-events-1.mod
 /usr/share/lv2specgen/DTD/xhtml-form-1.mod
@@ -170,10 +201,13 @@
 /usr/share/lv2specgen/DTD/xhtml-link-1.mod
 /usr/share/lv2specgen/DTD/xhtml-list-1.mod
 /usr/share/lv2specgen/DTD/xhtml-meta-1.mod
+/usr/share/lv2specgen/DTD/xhtml-metaAttributes-1.mod
 /usr/share/lv2specgen/DTD/xhtml-object-1.mod
 /usr/share/lv2specgen/DTD/xhtml-param-1.mod
 /usr/share/lv2specgen/DTD/xhtml-pres-1.mod
 /usr/share/lv2specgen/DTD/xhtml-qname-1.mod
+/usr/share/lv2specgen/DTD/xhtml-rdfa-1.dtd
+/usr/share/lv2specgen/DTD/xhtml-rdfa-model-1.mod
 /usr/share/lv2specgen/DTD/xhtml-script-1.mod
 /usr/share/lv2specgen/DTD/xhtml-special.ent
 /usr/share/lv2specgen/DTD/xhtml-ssismap-1.mod
diff --git a/testsuite/waf/all/vars b/testsuite/waf/all/vars
new file mode 100644
index 00000000..35255e6e
--- /dev/null
+++ b/testsuite/waf/all/vars
@@ -0,0 +1,3 @@
+declare -r ARCHES="all"
+declare -- CROSS_HOST=""
+declare -- INHERITED="waf autotools "
diff --git a/testsuite/waf/all/waf-python2.patch b/testsuite/waf/all/waf-python2.patch
deleted file mode 100644
index e7c8e755..00000000
--- a/testsuite/waf/all/waf-python2.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- origsrc/lv2-1.12.0/waf	2015-01-25 21:24:02.000000000 +0000
-+++ src/lv2-1.12.0/waf	2022-03-14 16:41:08.376713600 +0000
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- # encoding: ISO8859-1
- # Thomas Nagy, 2005-2014
- 
---- origsrc/lv2-1.12.0/wscript	2015-04-07 20:02:55.000000000 +0100
-+++ src/lv2-1.12.0/wscript	2022-03-14 16:41:18.847770500 +0000
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python2
- import glob
- import os
- import re
diff --git a/testsuite/waf/meson.build b/testsuite/waf/meson.build
index 498b2f01..59fac88a 100644
--- a/testsuite/waf/meson.build
+++ b/testsuite/waf/meson.build
@@ -1,3 +1,3 @@
-if python2.found()
+if python3.found()
 tests += [['waf/all']]
 endif


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-01-22 12:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-22 12:58 [cygport - the Cygwin packaging tool] branch master, updated. 0.36.0 Jon Turney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).