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'))
[cygport - the Cygwin packaging tool] branch master, updated. 0.37.1
Jon Turney via Cygwin-apps-cvs Sun, 06 Jul 2025 08:48:21 -0700
