From: Yaakov Selkowitz <yselkowitz@cygwin.com>
To: cygwin-apps@cygwin.com
Subject: Re: cygport patches for consideration
Date: Mon, 06 Apr 2020 20:52:02 -0400 [thread overview]
Message-ID: <e2016d868a992869b08791c199fcb6b34386348b.camel@cygwin.com> (raw)
In-Reply-To: <87k12tbw5u.fsf@Rainer.invalid>
[-- Attachment #1: Type: text/plain, Size: 5544 bytes --]
On Sun, 2020-04-05 at 20:54 +0200, Achim Gratz wrote:
> I've prepared a branch on top of current master for your perusal:
>
> https://repo.or.cz/cygport/rpm-style.git/shortlog/refs/heads/to-upstream
>
> As you can see they've been battle-tested by me for quite some time already:
>
> commit 779a7dd2fc834d45fb0f46cded647557ece17d8f (to-upstream)
> Date: Sat Apr 20 20:02:33 2013 +0200
>
> switch submodule gnuconfig to HTTPS protocol
>
> Live more easily with stupid firewalls...
Pushed to master.
> commit fd17952c457b808e360e5ed75ffae8d9571283ad
> Date: Sun Dec 6 13:32:38 2015 +0100
>
> lib/pkg_pkg.cygpart: uniquify requirements after the version has been stripped off
>
> * lib/pkg_pkg.cygpart: Move the "sort -fu" command to after the
> stripping of the version part. Otherwise some dependencies might
> get listed twice (perl_base does this sometimes).
Please no CVS style commit messages, I haven't done that in cygport for
over a decade. Code itself looks okay though.
> commit 40296640fdd0951d72ae0c107f2a46bbf8111ca3
> Date: Wed Oct 3 08:56:42 2012 +0200
>
> support subdirectories in CPAN download URL
>
> * cygclass/perl.cygclass: Allow CPAN_AUTHOR to have an /... suffix.
> This is necessary for some modules that put the distribution files
> in some subdirectory. Only upcase the actual author name (up until
> the first "/") and preserve case for the suffix part. By request of
> Reini Urban, also add a variable CPAN_DIR that alternately, if set,
> will be used to concatenate as ${CPAN_AUTHOR}/${CPAN_DIR} before
> determining the CPAN download URL. Neither variable should have a
> slash ("/") at the beginning or the end.
There is no need for two variables to do the same thing. I like
Reini's idea but let's call it CPAN_SUBDIR instead. What about the
attached patch 0001?
> commit 22b3f22b92c472df80be0fdcfd3854bfd19e16f8
> Date: Sun May 18 17:52:10 2014 +0200
>
> pkg_info.cygport: correct search order for Perl dependencies
>
> * lib/pkg_info.cygpart: Correct search order for Perl dependencies and
> suppress auto-generation of Perl dependencies when NO_PERL_DEPS is
> defined.
>
> Dependency generation for Perl at least is too simplistic and doesn't
> take into account that some modules required or used might actually be
> optional. It tends to generate too long dependency lists that vary
> with the Perl distributions already installed.
>
> For starters, the search order should be the reverse of
> @INC to skip dependencies that are built-in to perl already, but that
> doesn't pick up those modules that are needed with a higher version
> since only the presence of the module is detected. Files in site_perl
> shoud never be searched since these are local installs. Files in
> vendor_perl might be useful to check, however due to the version
> problem it is better to inject the module dpenedencies from the
> cygport file. So skip those searches when NO_PERL_DEPS is defined,
> which it will be for auto-generated cygport files for Perl
> distributions (the information is pulled from CPAN/MetaCPAN).
Let's improve the auto-detection instead. What about the attached
patch 0002?
> commit 2e61b06df6bd5a742f92c25b50d335945e17a34b
> Date: Sat Aug 18 12:43:23 2018 +0200
>
> bin/cygport.in: provide all-test / almostall-test commands on CLI for symmetry with package-test / pkg-test
Nak. almostall is a deprecated alias of all, there is no need for
symmetry here.
> commit 34e6e1f2dcdf45ac4a3f9e70cae1a8290d860cd9
> Date: Fri Nov 3 21:47:54 2017 +0100
>
> Automatically create a test release if the release string starts with a literal "0"
>
> * lib/pkg_pkg.cygpart: Test for a literal "0" as the first character
> in the release string and make a test release if true.
Nak. There is not necessarily any correlation between a -0.* release
and whether it should be test or not.
> commit 7f6fb93eaa9e4afe9e12bd57ebb3e8a4daa135ff
> Date: Sat Apr 8 17:00:34 2017 +0200
>
> Show pkg_tag in chatter
>
> lib/pkg_pkg.cygpart: inform when creating hint files for a test
> release
Pushed a slightly different approach to master. Not sure what the
second part of that patch is supposed to be, however, as there is no
$pkg_testrelease variable in cygport.
> commit 01e199380e32f214c2809d3dcc76f51b61de6d01
> Date: Sat Sep 17 10:07:10 2016 +0200
>
> lib/src_install.cygpart: correct test in make_etc_defaults, possibly show diff
>
> * lib/src_install.cygpart (make_etc_defaults): The preremove script
> only removes plain files when they match the default, so the
> postinstall script must not install files if _anything_ with the
> same name already exists. Change the test from '-f' to '-e'. If
> /usr/bin/diff is installed and the target is a plain file, show the
> diff to the default so the user can decide more easily what to do.
The first part is ok once the commit is reworded. But when would a
user see the output of a postinstall script? What would make more
sense is to have a utility akin to "rpmconf -a" on RPM-based systems
which allows the user to compare existing files with their
/etc/defaults and choose if and how to merge the differences.
--
Yaakov
[-- Attachment #2: 0001-perl-cpan-subdir.patch --]
[-- Type: text/x-patch, Size: 1260 bytes --]
diff --git a/cygclass/perl.cygclass b/cygclass/perl.cygclass
index 54cd97b..c226432 100644
--- a/cygclass/perl.cygclass
+++ b/cygclass/perl.cygclass
@@ -139,6 +139,11 @@ esac
# before inherit()ing perl.cygclass to have any effect. If set, the package
# HOMEPAGE and SRC_URI are set to their usual locations on CPAN.
#****
+#****v* perl.cygclass/CPAN_SUBDIR
+# DESCRIPTION
+# An optional directory component in the CPAN URL. Some packages have an
+# additional subdirectory component, which can be specified with this variable.
+#****
#****v* perl.cygclass/CPAN_VERSION
# DESCRIPTION
# The published version of the Perl module on CPAN. It is sometimes
@@ -190,7 +195,7 @@ HOMEPAGE="https://metacpan.org/release/${ORIG_PN}"
#****
cpan_author_ftp=${CPAN_AUTHOR^^}
cpan_author_ver=${CPAN_VERSION:-${VERSION}}
-SRC_URI="mirror://cpan/authors/id/${cpan_author_ftp:0:1}/${cpan_author_ftp:0:2}/${cpan_author_ftp}/${ORIG_PN}-${cpan_author_ver}.${CPAN_TARBALL_SUFFIX:-tar.gz}"
+SRC_URI="mirror://cpan/authors/id/${cpan_author_ftp:0:1}/${cpan_author_ftp:0:2}/${cpan_author_ftp}${CPAN_SUBDIR+/}${CPAN_SUBDIR}/${ORIG_PN}-${cpan_author_ver}.${CPAN_TARBALL_SUFFIX:-tar.gz}"
SRC_DIR="${ORIG_PN}-${cpan_author_ver}"
unset cpan_author_ftp cpan_author_ver
[-- Attachment #3: 0002-cygport-perl-dep.patch --]
[-- Type: text/x-patch, Size: 1008 bytes --]
diff --git a/lib/pkg_info.cygpart b/lib/pkg_info.cygpart
index 4d6f598..6901571 100644
--- a/lib/pkg_info.cygpart
+++ b/lib/pkg_info.cygpart
@@ -383,14 +383,14 @@ __list_deps() {
if check_prog perl
then
- pldirs=($(perl -e 'print join(" ",@INC)'))
+ pldirs=($(perl -e 'print join(" ",reverse grep !/site_perl/,@INC)'))
pldirs+=" ${DEPS_PATH//:/ }"
for pldep in $(find "${@//^_^/ }" -path 'usr/share/doc/*' -prune \
${deps_prune} \
-o -path 'usr/share/help/*' -prune \
-o \( -name '*.pl' -o -name '*.pm' \) -print \
-o -type f ! -name '*.*' -executable -exec sed -sne '1{/^#!.*perl.*/F}' '{}' + \
- | xargs -r sed -ne "s/^[^#]*use \(base\|parent\) ['\"]*\(qw( *\)*\([A-Z][^-)'\";]*\).*/\3/gp;s/^[^#]*\(use\|require\) ['\"]*\([A-Z][^ '\";]*\).*/\2/gp" \
+ | xargs -r sed -ne "s/^use \(base\|parent\) ['\"]*\(qw( *\)*\([A-Z][^-)'\";]*\).*/\3/gp;s/^\(use\|require\) ['\"]*\([A-Z][^ '\";]*\).*/\2/gp" \
| sort -u)
do
for d in ${pldirs[*]/\//${D}/} ${pldirs[*]}
next prev parent reply other threads:[~2020-04-07 0:52 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-05 18:54 Achim Gratz
2020-04-06 14:46 ` Brian Inglis
2020-04-07 0:52 ` Yaakov Selkowitz [this message]
2020-04-07 16:52 ` Achim Gratz
2020-04-07 17:14 ` Jon Turney
2020-04-07 17:37 ` Yaakov Selkowitz
2020-04-07 18:11 ` Achim Gratz
2020-05-10 8:58 ` Achim Gratz
2020-05-10 20:46 ` Yaakov Selkowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e2016d868a992869b08791c199fcb6b34386348b.camel@cygwin.com \
--to=yselkowitz@cygwin.com \
--cc=cygwin-apps@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).