Diff:
---
 NEWS                           |  5 +++++
 bin/cygport.in                 |  2 +-
 cygclass/bzr.cygclass          |  4 ++--
 cygclass/cvs.cygclass          |  4 ++--
 cygclass/fossil.cygclass       |  4 ++--
 cygclass/git.cygclass          |  4 ++--
 cygclass/hg.cygclass           |  2 +-
 cygclass/mtn.cygclass          |  4 ++--
 cygclass/ocaml-dune.cygclass   | 14 +++++++++++++-
 cygclass/python-wheel.cygclass | 10 +---------
 cygclass/python.org.cygclass   | 16 ++++++++++++++++
 cygclass/svn.cygclass          |  4 ++--
 cygport.spec                   |  4 ++--
 data/sample.cygport            |  2 +-
 lib/pkg_pkg.cygpart            | 33 ++++++++++++++++++++++++---------
 lib/src_fetch.cygpart          | 13 +++++++++++++
 meson.build                    |  2 +-
 17 files changed, 90 insertions(+), 37 deletions(-)

diff --git a/NEWS b/NEWS
index de15a906..9ce6ab68 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,8 @@
+0.37.1:
+       * python.org: Form PyPI URLs using PEP 625 project name normalization
+       * ocaml-dune: Allow customized arguments to dune install
+       * The archive compressor is configurable for all VCS cygclasses
+       * python-wheel: Always use 'pip wheel'
 0.37.0:
        * Include arch tag in output archive/hint filenames
        * Define CMAKE_SYSTEM_PROCESSOR when cross-compiling with cmake
diff --git a/bin/cygport.in b/bin/cygport.in
index 368c5994..86df5906 100755
--- a/bin/cygport.in
+++ b/bin/cygport.in
@@ -249,7 +249,7 @@ unset _myprog;
 
 if check_prog pbzip2
 then
-       readonly _tar_bz2_flag="-I pbzip2 -"
+       readonly _tar_bz2_flag="-I pbzip2"
 else
        # bzip2 is required, no need to check
        readonly _tar_bz2_flag="-j"
diff --git a/cygclass/bzr.cygclass b/cygclass/bzr.cygclass
index fcaf8b6c..61a66ddd 100644
--- a/cygclass/bzr.cygclass
+++ b/cygclass/bzr.cygclass
@@ -44,7 +44,7 @@
 # is this truly needed?
 BZR_MODULE=${BZR_MODULE:-${ORIG_PN:-${PN}}}
 
-bzr_tarball="${BZR_MODULE}-bzr-${PV}.tar.bz2"
+bzr_tarball="${BZR_MODULE}-bzr-${PV}.tar.${VCS_COMPRESSION_EXT}"
 
 SRC_URI="${bzr_tarball} "
 SRC_DIR="${BZR_MODULE}"
@@ -87,7 +87,7 @@ bzr_fetch() {
        cd ${T}
        verbose bzr branch ${BZR_URI} ${BZR_MODULE} ${bzr_rev}
 
-       tar ${_tar_bz2_flag}cf ${top}/${bzr_tarball} --exclude-vcs ${BZR_MODULE}
+       tar $(__tar_compress_opt ${VCS_COMPRESSION_EXT}) -cf 
${top}/${bzr_tarball} --exclude-vcs ${BZR_MODULE}
 }
 
 readonly -f bzr_fetch
diff --git a/cygclass/cvs.cygclass b/cygclass/cvs.cygclass
index 729d4f1e..17194848 100644
--- a/cygclass/cvs.cygclass
+++ b/cygclass/cvs.cygclass
@@ -44,7 +44,7 @@
 
 CVS_MODULE=${CVS_MODULE:-${ORIG_PN:-${PN}}}
 
-cvs_tarball="${CVS_MODULE//\//-}-${PV}.tar.bz2"
+cvs_tarball="${CVS_MODULE//\//-}-${PV}.tar.${VCS_COMPRESSION_EXT}"
 
 SRC_URI="${cvs_tarball} "
 SRC_DIR=${SRC_DIR:-${CVS_MODULE}}
@@ -101,7 +101,7 @@ cvs_fetch() {
        cd ${T}
        verbose cvs -d ${CVS_URI} checkout ${cvs_branch} ${cvs_date} 
${CVS_MODULE}
 
-       tar ${_tar_bz2_flag}cf ${top}/${cvs_tarball} --exclude-vcs ${SRC_DIR}
+       tar $(__tar_compress_opt ${VCS_COMPRESSION_EXT}) -cf 
${top}/${cvs_tarball} --exclude-vcs ${SRC_DIR}
 }
 
 readonly -f cvs_fetch
diff --git a/cygclass/fossil.cygclass b/cygclass/fossil.cygclass
index 294fc0cb..8dd96a13 100644
--- a/cygclass/fossil.cygclass
+++ b/cygclass/fossil.cygclass
@@ -42,7 +42,7 @@
 # is this truly necessary?
 FOSSIL_MODULE=${FOSSIL_MODULE:-${ORIG_PN:-${PN}}}
 
-fossil_tarball="${FOSSIL_MODULE}-${PV}_fossil.tar.bz2"
+fossil_tarball="${FOSSIL_MODULE}-${PV}_fossil.tar.${VCS_COMPRESSION_EXT}"
 
 SRC_URI="${fossil_tarball} "
 SRC_DIR="${FOSSIL_MODULE}"
@@ -89,7 +89,7 @@ fossil_fetch() {
        popd
 
        # manifest and manifest.uuid may be used in sources (e.g. fossil itself)
-       tar ${_tar_bz2_flag}cf ${top}/${fossil_tarball} --exclude=.fslckout 
--exclude=_FOSSIL_ ${FOSSIL_MODULE}
+       tar $(__tar_compress_opt ${VCS_COMPRESSION_EXT}) -cf 
${top}/${fossil_tarball} --exclude=.fslckout --exclude=_FOSSIL_ ${FOSSIL_MODULE}
 }
 
 readonly -f fossil_fetch
diff --git a/cygclass/git.cygclass b/cygclass/git.cygclass
index 3cb2c0d5..fb0a87a7 100644
--- a/cygclass/git.cygclass
+++ b/cygclass/git.cygclass
@@ -60,7 +60,7 @@ then
        GIT_MODULE=${GIT_MODULE%.git}
 fi
 
-git_tarball="${GIT_MODULE}-${PV}.tar.bz2"
+git_tarball="${GIT_MODULE}-${PV}.tar.${VCS_COMPRESSION_EXT}"
 
 SRC_URI="${git_tarball} "
 SRC_DIR="${GIT_MODULE}${GIT_SUBDIR+/}${GIT_SUBDIR}"
@@ -144,7 +144,7 @@ git_fetch() {
        fi
 
        cd ${T}/
-       tar ${_tar_bz2_flag}cf ${top}/${git_tarball} --exclude-vcs 
${GIT_MODULE}/${GIT_SUBDIR}
+       tar $(__tar_compress_opt ${VCS_COMPRESSION_EXT}) -cf 
${top}/${git_tarball} --exclude-vcs ${GIT_MODULE}/${GIT_SUBDIR}
 }
 
 readonly -f git_fetch
diff --git a/cygclass/hg.cygclass b/cygclass/hg.cygclass
index a7afff2d..aec290b1 100644
--- a/cygclass/hg.cygclass
+++ b/cygclass/hg.cygclass
@@ -80,7 +80,7 @@ hg_fetch() {
 
        verbose hg clone ${hg_rev} ${HG_URI} ${HG_MODULE}
 
-       tar ${_tar_bz2_flag}cf ${top}/${hg_tarball} --exclude-vcs ${HG_MODULE}
+       tar ${_tar_bz2_flag} -cf ${top}/${hg_tarball} --exclude-vcs ${HG_MODULE}
 }
 
 readonly -f hg_fetch
diff --git a/cygclass/mtn.cygclass b/cygclass/mtn.cygclass
index ea448a68..15ff12d3 100644
--- a/cygclass/mtn.cygclass
+++ b/cygclass/mtn.cygclass
@@ -74,7 +74,7 @@ then
        MTN_BRANCH+="${MTN_MODULE}"
 fi
 
-mtn_tarball="${MTN_MODULE}-mtn-${PV}.tar.bz2"
+mtn_tarball="${MTN_MODULE}-mtn-${PV}.tar.${VCS_COMPRESSION_EXT}"
 
 SRC_URI="${mtn_tarball} "
 SRC_DIR="${MTN_MODULE}"
@@ -107,7 +107,7 @@ mtn_fetch() {
        [ -d ${MTN_MODULE} ] && rm -fr ${MTN_MODULE}/
        verbose mtn -d ${MTN_MODULE}.mtn checkout -b ${MTN_BRANCH} ${mtn_rev} 
${MTN_MODULE}
 
-       tar ${_tar_bz2_flag}cf ${top}/${mtn_tarball} --exclude=_MTN 
--exclude=.mtn-ignore ${MTN_MODULE}
+       tar $(__tar_compress_opt ${VCS_COMPRESSION_EXT}) -cf 
${top}/${mtn_tarball} --exclude=_MTN --exclude=.mtn-ignore ${MTN_MODULE}
 }
 
 readonly -f mtn_fetch
diff --git a/cygclass/ocaml-dune.cygclass b/cygclass/ocaml-dune.cygclass
index 3ea2a373..d2941382 100644
--- a/cygclass/ocaml-dune.cygclass
+++ b/cygclass/ocaml-dune.cygclass
@@ -54,15 +54,27 @@ ocaml_dune_compile() {
        dune build --display=verbose --profile=release ${OCAML_DUNE_BUILD_ARGS} 
${@} || error "dune build failed"
 }
 
+#****v* ocaml-dune.cygclass/OCAML_DUNE_INSTALL_ARGS
+#  DESCRIPTION
+#  Arguments, usually install targets, to be passed to "dune install"
+#  by ocaml_dune_install.
+#****
+
 #****I* ocaml-dune.cygclass/ocaml_dune_install
 #  DESCRIPTION
 #  Runs "dune install" with a destdir of $D.
 #****
 ocaml_dune_install() {
        DUNE_BUILD_DIR=${B} \
-       dune install --display=verbose --destdir ${D} || error "dune install 
failed"
+       dune install --display=verbose --destdir ${D} 
${OCAML_DUNE_INSTALL_ARGS} ${@} || error "dune install failed"
 }
 
+#****v* ocaml-dune.cygclass/OCAML_DUNE_TEST_TARGETS
+#  DESCRIPTION
+#  Arguments, usually test targets, to be passed to "dune runtest"
+#  by ocaml_dune_test.
+#****
+
 #****T* ocaml-dune.cygclass/ocaml_dune_test
 #  DESCRIPTION
 #  Runs "dune runtest" with any given test directories.
diff --git a/cygclass/python-wheel.cygclass b/cygclass/python-wheel.cygclass
index 3f274b98..522f4795 100644
--- a/cygclass/python-wheel.cygclass
+++ b/cygclass/python-wheel.cygclass
@@ -170,15 +170,7 @@ python_wheel_compile() {
                [ ! -d build/lib ] || find build/lib -delete
                if [ ! -f dist/*-py2.py3*-none-any.whl -a ! -f 
dist/*py${ver:0:1}-none-any.whl ]
                then
-                       # for the moment, we retain the historical behaviour of
-                       # building projects which have a setup.py using 
setuptools
-                       if [ ! -e setup.py ]
-                       then
-                               pip${ver} wheel --no-deps -w dist . || error 
"pip${ver} wheel failed"
-                       else
-                               # setuptools.launch imports setuptools hooks 
regardles of setup.py
-                               /usr/bin/python${ver} -msetuptools.launch 
setup.py bdist_wheel "${@}" || error "setup.py bdist_wheel failed"
-                       fi
+                       pip${ver} wheel --no-deps -w dist . || error "pip${ver} 
wheel failed"
                fi
        done
 }
diff --git a/cygclass/python.org.cygclass b/cygclass/python.org.cygclass
index 51434ba6..402e76e7 100644
--- a/cygclass/python.org.cygclass
+++ b/cygclass/python.org.cygclass
@@ -40,6 +40,21 @@
 
 PYTHON_ORG_NAME=${ORIG_PN:-${PN}}
 
+#****o* python.org.cygclass/PYPI_NO_NORMALIZE
+#  DESCRIPTION
+#  If set, disable normalization of the Python project name.
+#
+#  By default, the project name is normalized according to PEP 625 rules (which
+#  transforms all uppercase letters to lowercase, and replaces all contiguous
+#  runs of ._- characters with a single underscore).
+#****
+
+if [ ! -v PYPI_NO_NORMALIZE ]
+then
+       PYTHON_ORG_NAME=$(echo "${PYTHON_ORG_NAME}" | tr -s '._-' '_')
+       PYTHON_ORG_NAME=${PYTHON_ORG_NAME,,}
+fi
+
 #****o* python.org.cygclass/HOMEPAGE (python.org)
 #  DESCRIPTION
 #  Default homepage of the Python module on the Python Package Index.
@@ -50,4 +65,5 @@ HOMEPAGE="https://pypi.org/project/${PYTHON_ORG_NAME}";
 #  DESCRIPTION
 #  Download location of the Python module on the Python Package Index.
 #****
+
 
SRC_URI="https://files.pythonhosted.org/packages/source/${PYTHON_ORG_NAME:0:1}/${PYTHON_ORG_NAME}/${PYTHON_ORG_NAME}-${PV}.tar.gz";
diff --git a/cygclass/svn.cygclass b/cygclass/svn.cygclass
index 47f242bf..56e122db 100644
--- a/cygclass/svn.cygclass
+++ b/cygclass/svn.cygclass
@@ -105,7 +105,7 @@ case ${SVN_URI} in
 esac
 
 SVN_MODULE=${SVN_MODULE:-${SVN_URI##*/}}
-svn_tarball="${SVN_MODULE}-${PV}.tar.bz2"
+svn_tarball="${SVN_MODULE}-${PV}.tar.${VCS_COMPRESSION_EXT}"
 
 SRC_URI="${svn_tarball} "
 SRC_DIR="${SVN_MODULE}"
@@ -128,7 +128,7 @@ svn_fetch() {
        cd ${T}
        verbose svn export ${svn_uri} ${svn_rev} ${SVN_MODULE}
 
-       tar ${_tar_bz2_flag}cf ${top}/${svn_tarball} --exclude-vcs ${SVN_MODULE}
+       tar $(__tar_compress_opt ${VCS_COMPRESSION_EXT}) -cf 
${top}/${svn_tarball} --exclude-vcs ${SVN_MODULE}
 }
 
 readonly -f svn_fetch
diff --git a/cygport.spec b/cygport.spec
index bcdc1250..49597364 100644
--- a/cygport.spec
+++ b/cygport.spec
@@ -1,8 +1,8 @@
 %define debug_package %{nil}
 
 Name:           cygport
-Version:        0.37.0
-Release:        2%{?dist}
+Version:        0.37.1
+Release:        1%{?dist}
 Summary:        Cygwin package building tool
 
 License:        GPLv3+
diff --git a/data/sample.cygport b/data/sample.cygport
index 639c4b23..7cc03a1d 100644
--- a/data/sample.cygport
+++ b/data/sample.cygport
@@ -1,7 +1,7 @@
 inherit meson
 
 NAME="cygport"
-VERSION=0.37.0
+VERSION=0.37.1
 RELEASE=1
 CATEGORY="Devel"
 SUMMARY="Cygwin source packaging tool"
diff --git a/lib/pkg_pkg.cygpart b/lib/pkg_pkg.cygpart
index fb0805eb..ccf432a6 100644
--- a/lib/pkg_pkg.cygpart
+++ b/lib/pkg_pkg.cygpart
@@ -41,31 +41,46 @@
 TAR_COMPRESSION_EXT="${TAR_COMPRESSION_EXT:-xz}"
 #****
 
-__tar() {
-       local TAR_COMPRESSION_OPT TAR_SOURCE_DATE_OPTS;
+__tar_compress_opt() {
+       local _COMPRESSION_OPT _COMPRESSION_EXT;
+
+       if [ $# -eq 0 ]; then
+               # Assume .xz as default compression engine
+               _COMPRESSION_EXT="xz"
+       else
+               _COMPRESSION_EXT="$1"
+       fi
 
        # 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
+       case ${_COMPRESSION_EXT} in
                bz2)
-                       TAR_COMPRESSION_OPT="-j"
+                       _COMPRESSION_OPT="${_tar_bz2_flag}"
                        ;;
                gz)
-                       TAR_COMPRESSION_OPT="-z"
+                       _COMPRESSION_OPT="-z"
                        warning "gzip compression for packages is considered 
obsolete"
                        ;;
                xz)
-                       TAR_COMPRESSION_OPT="-J"
+                       _COMPRESSION_OPT="-J"
                        ;;
                zst)
-                       TAR_COMPRESSION_OPT="--zstd"
+                       _COMPRESSION_OPT="--zstd"
                        ;;
                *)
-                       error "tar option for 
TAR_COMPRESSION_EXT='${TAR_COMPRESSION_EXT}' unknown"
+                       error "tar compressor '${_COMPRESSION_EXT}' is unknown"
                        ;;
        esac
 
+       echo -n ${_COMPRESSION_OPT}
+}
+
+__tar() {
+       local TAR_COMPRESSION_OPT TAR_SOURCE_DATE_OPTS;
+
+       TAR_COMPRESSION_OPT=$(__tar_compress_opt ${TAR_COMPRESSION_EXT})
+
        if [ -n "${SOURCE_DATE_EPOCH}" ]
        then
                # Ensure reproducible sort order and last modification times <= 
SOURCE_DATE_EPOCH
@@ -1079,4 +1094,4 @@ __pkg_repro_finish() {
 # protect functions
 readonly -f __pkg_binpkg __pkg_diff __gpg_sign __pkg_srcpkg __pkg_dist \
         __pkg_repro_build __pkg_repro_diff __pkg_repro_finish \
-        __squeeze_whitespace __tar
+        __squeeze_whitespace __tar __tar_compress_opt
diff --git a/lib/src_fetch.cygpart b/lib/src_fetch.cygpart
index 20661ab7..5d784b38 100644
--- a/lib/src_fetch.cygpart
+++ b/lib/src_fetch.cygpart
@@ -205,4 +205,17 @@ __src_fetch() {
        done
 }
 
+#****v* Downloading//VCS_COMPRESSION_EXT
+#  SYNOPSIS
+#  VCS_COMPRESSION_EXT="bz2"
+#  DESCRIPTION
+#  The compression to be used for source tarballs created from a VCS.
+#  Defaults to 'bz2'.
+#  DEFINITION
+VCS_COMPRESSION_EXT="${VCS_COMPRESSION_EXT:-bz2}"
+#  SEE ALSO
+#  bzr.cygclass, cvs.cygclass, fossil.cygclass, git.cygclass, hg.cygclass,
+#  mtn.cygclass, svn.cygclass, Mirrors.
+#****
+
 readonly -f fetch __mirror_fetch __src_fetch
diff --git a/meson.build b/meson.build
index 37a7af71..1adfa397 100644
--- a/meson.build
+++ b/meson.build
@@ -1,5 +1,5 @@
 project('cygport',
-        version: '0.37.0')
+        version: '0.37.1')
 
 bindir = join_paths(get_option('prefix'), get_option('bindir'))
 datadir = join_paths(get_option('prefix'), get_option('datadir'))

Reply via email to