Packaging Perl
I'm in the process of getting the next maintenance update for Perl-5.30 ready. I'm trying to prepare for the inevitable major update (that will not be binary compatible, so requires a complete repackaging of all dependencies again) some time later. I was planning to use the newly available PROVIDES in cygport to have the perl_base package provide "perl530" as a synthetic package name. Then I'll arrange to generate all Perl distributions with a REQUIRES for "perl530". Eventually we'll need to come up with a way of generating that info automatically, but I don't think there's any place yet in the installation where the PROVIDES information gets installed, so cygport can not pick up on it currently. What I'm unsure about is what happens when we actually upgrade Perl, which means the new Perl will providse something like "perl532" and we have a bunch of distributions that require the new "perl532" plus a bunch of not-yet-updated packages that require "perl530" instead. The idea is that either the packages needing the old Perl need to get de-installed or the upgrade has to be held off until every package has got an upgrade to the newer Perl. On GNU/Linux zypper would offer at least two solutions to chose from in this case, but setup just picks one of the solutions that libzypp offers and that may not be the one the user favored. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ SD adaptation for Waldorf microQ V2.22R2: http://Synth.Stromeko.net/Downloads.html#WaldorfSDada
[PATCH] cygport: suppress spurious package dependencies
The automatically generated dependencies sometimes have unwanted components. This patch allows to suppress these on a per-package basis, rather than requiring to patch the generated hint files after the fact. >From 009dbf010418afb873a75bdb204d77fdf1f83ac7 Mon Sep 17 00:00:00 2001 From: Achim Gratz Date: Wed, 3 Jun 2020 13:41:18 +0200 Subject: [PATCH] pkg_pkg: allow suppression of spurious package dependencies Allow suppression of spurious automatic package dependencies by introducing a new variable PKG_REQUIRES_SUPPRESS, containing a single-line string of space-separated package list. Any of the packages listed are automatically determined to be a requirement are suppressed so that they do not show up in the generated hint file(s). --- lib/pkg_pkg.cygpart | 14 +++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/pkg_pkg.cygpart b/lib/pkg_pkg.cygpart index 7189f36..9603c1d 100644 --- a/lib/pkg_pkg.cygpart +++ b/lib/pkg_pkg.cygpart @@ -1,3 +1,4 @@ +# -*- mode: sh; sh-shell: bash -*- # # pkg_pkg.cygpart - cygport packaging functions @@ -787,6 +788,7 @@ __pkg_dist() { do pkg_category_var=${pkg_name[${n}]//[-+\.]/_}_CATEGORY; pkg_requires_var=${pkg_name[${n}]//[-+\.]/_}_REQUIRES; + pkg_requires_suppress_var=${pkg_name[${n}]//[-+\.]/_}_REQUIRES_SUPPRESS; pkg_summary_var=${pkg_name[${n}]//[-+\.]/_}_SUMMARY; pkg_description_var=${pkg_name[${n}]//[-+\.]/_}_DESCRIPTION; pkg_message_var=${pkg_name[${n}]//[-+\.]/_}_MESSAGE; @@ -806,6 +808,10 @@ __pkg_dist() { then declare ${pkg_requires_var}="${REQUIRES}" fi + if [ -z "${distsubdir}${!pkg_requires_suppress_var}" -a -n "${REQUIRES_SUPPRESS+yes}" ] + then + declare ${pkg_requires_var}="${REQUIRES_SUPPRESS}" + fi if [ -z "${distsubdir}${!pkg_obsoletes_var}" -a -n "${OBSOLETES+yes}" ] then declare ${pkg_obsoletes_var}="${OBSOLETES}" @@ -827,9 +833,11 @@ __pkg_dist() { then if [ "${CBUILD##*-}" = "cygwin" ] then -pkg_bin_requires=$(__list_deps $(sort -fu ${T}/.${pkg_name[${n}]}.lst | sed -e '\|/$|d;s| |^_^|g') \ - | sed -e "/^${pkg_name[${n}]}-[0-9].*$/d;s/-[0-9].*$//g" \ - | sort -fu | sed -e ':a;N;$!ba;s/\n/ /g' ) + pkg_bin_requires=$( echo ${!pkg_requires_suppress_var} ${!pkg_requires_suppress_var} \ + $(__list_deps $(sort -fu ${T}/.${pkg_name[${n}]}.lst | sed -e '\|/$|d;s| |^_^|g') \ + | sed -e "/^${pkg_name[${n}]}-[0-9].*$/d;s/-[0-9].*$//g" \ + | sort -fu | sed -e ':a;N;$!ba;s/\n/ /g' ) \ + | tr ' ' '\n' | sort | uniq -u | tr '\n' ' ' ) __step "${pkg_name[${n}]} requires: ${pkg_bin_requires} ${!pkg_requires_var}" else pkg_bin_requires= -- 2.26.2 Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Samples for the Waldorf Blofeld: http://Synth.Stromeko.net/Downloads.html#BlofeldSamplesExtra
Request for review: anthy 9100h+0.4 (Re: Update of packages by non-maintainer)
From: Yasuhiro KIMURA Subject: Re: Update of packages by non-maintainer Date: Wed, 03 Jun 2020 14:31:56 +0900 (JST) > So I gave up to use override.hint and decided to change version number > to "9100h+0.4". It works fine with all of cygport, mksetupini and > setup-x86_64. Anyway version number issue has sloved. So I would like to request for review of anthy 9100h+0.4. Changes from 9100h-2 are: * Source is switched to version 0.4 from Debian forked Anthy project. * VERSION is changed to "9100h+0.4" to keep version number from going backword. * Fedora patchset is removed. * Some patches committed to repository of a Debian Anthy after release of 0.4 are adopted. * As for cygwin local patch, 9100h-no-undefined.patch is changed to make it fit to new source tree. Others are removed. * All of src_patch_hook is unnecessary for new sources. So it is removed. * Add "MAKEOPTS=-j1" because parallel make causes build error. anthy.cygport: -- NAME="anthy" VERSION=9100h+0.4 RELEASE=1 CATEGORY="Libs" SUMMARY="Japanese input method" DESCRIPTION="Anthy is a system for Japanese input method. It converts Hiragana text to Kana Kanji mixed text." HOMEPAGE="https://salsa.debian.org/debian/anthy"; SRC_URI="mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_0.4.orig.tar.gz" PATCH_URI=" https://salsa.debian.org/debian/anthy/-/commit/b83129e05cdde8046a5aa0484f63910e9a204555.patch https://salsa.debian.org/debian/anthy/-/commit/e7748e35ab5f68d50690d2ba54341a2d45339ece.patch https://salsa.debian.org/debian/anthy/-/commit/cea40c6a31815b1ec14312265025dea7b6d22fac.patch 9100h-no-undefined.patch " SRC_DIR="${PN}-0.4" PKG_NAMES="${NAME} lib${NAME}0 lib${NAME}-common lib${NAME}-devel emacs-${NAME}" anthy_CATEGORY="Text" anthy_CONTENTS="usr/bin/*.exe usr/share/doc/" libanthy0_REQUIRES="libanthy-common" libanthy0_CONTENTS="usr/bin/cyganthy*.dll" libanthy_common_CONTENTS="etc/ usr/share/anthy/" libanthy_devel_CONTENTS="usr/include/ usr/lib/" emacs_anthy_CATEGORY="Editors" emacs_anthy_CONTENTS="usr/share/emacs/" emacs_anthy_REQUIRES="emacs" CYGPORT_USE_UNSTABLE_API=1 # prevent stack overflow in mkworddic LDFLAGS+=" -Wl,--stack,0x400" # parallel make causes build error MAKEOPTS=-j1 -- 9100h-no-undefined.patch: -- --- origsrc/anthy-0.4/src-main/Makefile.am 2019-07-05 11:37:13.0 +0900 +++ src/anthy-0.4/src-main/Makefile.am 2020-05-23 00:59:04.136024700 +0900 @@ -6,6 +6,6 @@ ../src-ordering/libordering.la \ ../src-worddic/libanthydic.la -lm -libanthy_la_LDFLAGS = -version-info 2:2:1 +libanthy_la_LDFLAGS = -version-info 2:2:1 -no-undefined libanthy_la_SOURCES = main.c context.c main.h --- origsrc/anthy-0.4/src-util/Makefile.am 2019-07-05 11:37:13.0 +0900 +++ src/anthy-0.4/src-util/Makefile.am 2020-05-23 00:59:26.155191100 +0900 @@ -26,5 +26,6 @@ libanthyinput_la_SOURCES = input.c rkconv.c rkhelper.c\ rkconv.h rkmap.h rkhelper.h libanthyinput_la_LIBADD = ../src-main/libanthy.la +libanthyinput_la_LDFLAGS = -no-undefined pkgdata_DATA = typetab dic-tool-usage.txt --- origsrc/anthy-0.4/src-worddic/Makefile.am 2019-07-05 11:37:13.0 +0900 +++ src/anthy-0.4/src-worddic/Makefile.am 2020-05-23 00:59:52.482504900 +0900 @@ -13,5 +13,5 @@ mem_dic.h dic_personality.h libanthydic_la_LIBADD = ../src-diclib/libdiclib.la -libanthydic_la_LDFLAGS = -version-info 2:3:1 +libanthydic_la_LDFLAGS = -version-info 2:3:1 -no-undefined lib_LTLIBRARIES = libanthydic.la -- Best Regards. --- Yasuhiro KIMURA
Re: [PATCH] cygport: suppress spurious package dependencies
On Wed, 2020-06-03 at 13:51 +0200, Achim Gratz wrote: > The automatically generated dependencies sometimes have unwanted > components. This patch allows to suppress these on a per-package basis, > rather than requiring to patch the generated hint files after the fact. What exactly are you trying to "fix" with this? -- Yaakov
[PATCH cygport] mirrors: update mirror_debian
According to DebianGeoMirror page of Debian Wiki (https://wiki.debian.org/DebianGeoMirror), current reccomended Debian mirror archive URL with GeoMirror capability is "http://deb.debian.org/";. So update mirror_debian to use it. --- data/mirrors | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/mirrors b/data/mirrors index b0ef904..486a8f9 100644 --- a/data/mirrors +++ b/data/mirrors @@ -115,12 +115,12 @@ mirror_ctan+=" http://mirror.ctan.org/"; # SYNOPSIS # SRC_URI="mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${PV}.orig.tar.gz" # DEFAULT MIRROR -# http://ftp.debian.org/debian +# http://deb.debian.org/debian # MIRROR LIST -# http://www.debian.org/mirror/list +# https://wiki.debian.org/DebianGeoMirror # # grep '^ http://ftp.debian.org/debian"; +mirror_debian+=" http://deb.debian.org/debian"; #d* Mirrors/mirror_gcc -- 2.26.2
Re: Request for review: anthy 9100h+0.4 (Re: Update of packages by non-maintainer)
On Thu, 2020-06-04 at 01:20 +0900, Yasuhiro KIMURA wrote: > From: Yasuhiro KIMURA > > So I gave up to use override.hint and decided to change version number > > to "9100h+0.4". It works fine with all of cygport, mksetupini and > > setup-x86_64. > > Anyway version number issue has sloved. So I would like to request for > review of anthy 9100h+0.4. Not ready yet; see comments inline. > * As for cygwin local patch, 9100h-no-undefined.patch is changed to > make it fit to new source tree. Others are removed. [snip] > * Add "MAKEOPTS=-j1" because parallel make causes build error. That's the whole purpose of the exeext patch, to fix parallel make. Before you remove patches, you first need to understand what the patch does, why it was needed, and see if it still is or not. If you don't know, then you should be asking rather than just dropping them. > PKG_NAMES="${NAME} lib${NAME}0 lib${NAME}-common lib${NAME}-devel > emacs-${NAME}" [snip] > libanthy0_REQUIRES="libanthy-common" > libanthy0_CONTENTS="usr/bin/cyganthy*.dll" This is wrong; most of the DLLs will be -1.dll, so this needs to be libanthy1 (but see below!!). > 9100h-no-undefined.patch: This looks mostly fine, except: > --- origsrc/anthy-0.4/src-util/Makefile.am 2019-07-05 11:37:13.0 > +0900 > +++ src/anthy-0.4/src-util/Makefile.am 2020-05-23 00:59:26.155191100 +0900 > @@ -26,5 +26,6 @@ > libanthyinput_la_SOURCES = input.c rkconv.c rkhelper.c\ > rkconv.h rkmap.h rkhelper.h > libanthyinput_la_LIBADD = ../src-main/libanthy.la > +libanthyinput_la_LDFLAGS = -no-undefined > > pkgdata_DATA = typetab dic-tool-usage.txt This should probably have -version-info flag as well upstream, otherwise you'll have conflicts with libanthy0 and libanthy1. -- Yaakov Selkowitz Senior Software Engineer - Platform Enablement Red Hat, Inc.
Re: Help needed with gobject-introspection
On 02/06/2020 22:28, Jon Turney wrote: On 02/06/2020 15:31, Ken Brown via Cygwin-apps wrote: On 6/2/2020 10:26 AM, Jon Turney wrote: On 01/06/2020 12:30, Jon Turney wrote: On 01/06/2020 00:58, Ken Brown via Cygwin-apps wrote: I'll see what I can figure out, but as I said, it doesn't look to me like a meson issue. This looks like the problem that my second patch was supposed to fix, so I guess I've messed up somewhere. (gtkdoc-scangobj builds and runs a executable linked with the gio shared library. meson needs to set PATH appropriately so that shared library can be loaded) Hmmm.. I can't reproduce this. Using my meson 0.54.2-2 package, I managed to build glib (from the 2.64.3 tag in the glib repository) configured with -Dgtk_doc=true. Did you run 'ninja install'? The problem doesn't show up until you do that. Sigh, yes, you're right. It gets built during 'all', and succeeds, and then gets built again during 'install', in a slightly different way, which fails. Added another patch to that PR which should fix gtkdoc documentation which is built at install-time. Uploaded a meson 0.54.2-3 test package.
Re: [PATCH] cygport: suppress spurious package dependencies
Yaakov Selkowitz writes: > On Wed, 2020-06-03 at 13:51 +0200, Achim Gratz wrote: >> The automatically generated dependencies sometimes have unwanted >> components. This patch allows to suppress these on a per-package basis, >> rather than requiring to patch the generated hint files after the fact. > > What exactly are you trying to "fix" with this? The same thing as always: perl getting pulled in as a dependency for perl_base, which defeats the whole purpose of having a base package in the first place. Again, the dependency extraction just doesn't quite work for things that have optional dependencies that are used if present and do no harm if not: cygport will always pull them in and makes them a hard requirement. There's an obvious copy&paste bug in the patch, btw. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Waldorf MIDI Implementation & additional documentation: http://Synth.Stromeko.net/Downloads.html#WaldorfDocs
Re: Help needed with gobject-introspection
On 6/3/2020 12:51 PM, Jon Turney wrote: On 02/06/2020 22:28, Jon Turney wrote: On 02/06/2020 15:31, Ken Brown via Cygwin-apps wrote: On 6/2/2020 10:26 AM, Jon Turney wrote: On 01/06/2020 12:30, Jon Turney wrote: On 01/06/2020 00:58, Ken Brown via Cygwin-apps wrote: I'll see what I can figure out, but as I said, it doesn't look to me like a meson issue. This looks like the problem that my second patch was supposed to fix, so I guess I've messed up somewhere. (gtkdoc-scangobj builds and runs a executable linked with the gio shared library. meson needs to set PATH appropriately so that shared library can be loaded) Hmmm.. I can't reproduce this. Using my meson 0.54.2-2 package, I managed to build glib (from the 2.64.3 tag in the glib repository) configured with -Dgtk_doc=true. Did you run 'ninja install'? The problem doesn't show up until you do that. Sigh, yes, you're right. It gets built during 'all', and succeeds, and then gets built again during 'install', in a slightly different way, which fails. Added another patch to that PR which should fix gtkdoc documentation which is built at install-time. Uploaded a meson 0.54.2-3 test package. That fixes it! Thanks. Ken
Re: [PATCH cygport] mirrors: update mirror_debian
On 2020-06-03 10:35, Yasuhiro KIMURA wrote: > According to DebianGeoMirror page of Debian > Wiki (https://wiki.debian.org/DebianGeoMirror), current reccomended > Debian mirror archive URL with GeoMirror capability is > "http://deb.debian.org/";. So update mirror_debian to use it. > --- > data/mirrors | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/data/mirrors b/data/mirrors > index b0ef904..486a8f9 100644 > --- a/data/mirrors > +++ b/data/mirrors > @@ -115,12 +115,12 @@ mirror_ctan+=" http://mirror.ctan.org/"; > # SYNOPSIS > # > SRC_URI="mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${PV}.orig.tar.gz" > # DEFAULT MIRROR > -# http://ftp.debian.org/debian > +# http://deb.debian.org/debian Great - ftp.debian.org no longer responds - and all other http mirror services are deprecated and redirect to deb.debian.org. > # MIRROR LIST > -# http://www.debian.org/mirror/list > +# https://wiki.debian.org/DebianGeoMirror NO - http://www.debian.org/mirror/list is the authoritative page (it says so); whereas https://wiki.debian.org/DebianGeoMirror is a discussion page. > # > # grep '^ -mirror_debian+=" http://ftp.debian.org/debian"; > +mirror_debian+=" http://deb.debian.org/debian"; Great - ftp.debian.org no longer responds and deb.debian.org is canonical. -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. [Data in IEC units and prefixes, physical quantities in SI.]
Re: [PATCH cygport] mirrors: update mirror_debian
Hello Brian. Thank you for feedback. From: Brian Inglis Subject: Re: [PATCH cygport] mirrors: update mirror_debian Date: Wed, 3 Jun 2020 14:02:45 -0600 >> # MIRROR LIST >> -# http://www.debian.org/mirror/list >> +# https://wiki.debian.org/DebianGeoMirror > > NO - http://www.debian.org/mirror/list is the authoritative page (it says so); > whereas https://wiki.debian.org/DebianGeoMirror is a discussion page. OK. Then should I update patch and submit it again? Best Regards. --- Yasuhiro KIMURA
Re: [PATCH cygport] mirrors: update mirror_debian
On Thu, 2020-06-04 at 05:10 +0900, Yasuhiro KIMURA wrote: > Hello Brian. Thank you for feedback. > > From: Brian Inglis > Subject: Re: [PATCH cygport] mirrors: update mirror_debian > Date: Wed, 3 Jun 2020 14:02:45 -0600 > > >> # MIRROR LIST > >> -# http://www.debian.org/mirror/list > >> +# https://wiki.debian.org/DebianGeoMirror > > > > NO - http://www.debian.org/mirror/list is the authoritative page (it says > > so); > > whereas https://wiki.debian.org/DebianGeoMirror is a discussion page. > > OK. Then should I update patch and submit it again? Yes. -- Yaakov
Re: [PATCH cygport] mirrors: update mirror_debian
From: Yaakov Selkowitz Subject: Re: [PATCH cygport] mirrors: update mirror_debian Date: Wed, 03 Jun 2020 21:24:08 -0400 >> OK. Then should I update patch and submit it again? > > Yes. Thank you for reply. Then I'll send revised patch soon. --- Yasuhiro KIMURA
[PATCH cygport (Revised)] mirrors: update mirror_debian
According to Debian worldwide mirror sites page (https://www.debian.org/mirror/list), current reccomended Debian mirror archive URL with GeoMirror capability is "http://deb.debian.org";. So update mirror_debian to use it. And URL of mirror list is chagned to HTTPS. So update it too. --- data/mirrors | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data/mirrors b/data/mirrors index b0ef904..edf7618 100644 --- a/data/mirrors +++ b/data/mirrors @@ -115,12 +115,12 @@ mirror_ctan+=" http://mirror.ctan.org/"; # SYNOPSIS # SRC_URI="mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${PV}.orig.tar.gz" # DEFAULT MIRROR -# http://ftp.debian.org/debian +# http://deb.debian.org/debian # MIRROR LIST -# http://www.debian.org/mirror/list +# https://www.debian.org/mirror/list # # grep '^ http://ftp.debian.org/debian"; +mirror_debian+=" http://deb.debian.org/debian"; #d* Mirrors/mirror_gcc -- 2.27.0
[patch cygport]
"Fixing libtool modules:" will enter in a never ending loop when "_topdir=." is different from "readlink -f ." + '[' /cygdrive/d/cyg_pub/devel/openmpi/v4.0/openmpi-4.0.4-0.2.x86_64 '!=' /pub/devel/openmpi/v4.0/openmpi-4.0.4-0.2.x86_64/inst/usr ']' + dlname=../../../../bin/cygmpi-40.dll ++ readlink -f usr/lib/../../../.. + '[' /cygdrive/d/cyg_pub/devel/openmpi/v4.0 '!=' /pub/devel/openmpi/v4.0/openmpi-4.0.4-0.2.x86_64/inst/usr ']' + dlname=../../../../../bin/cygmpi-40.dll ++ readlink -f usr/lib/../../../../.. and so on .. With the patch the two sides match and loop end as expected: + '[' /cygdrive/d/cyg_pub/devel/openmpi/v4.0/openmpi-4.0.4-0.2.x86_64/inst/usr '!=' /cygdrive/d/cyg_pub/devel/openmpi/v4.0/openmpi-4.0.4-0.2.x86_64/inst/usr ']' + '[' ../bin/cygmpi-40.dll '!=' ../bin/cygmpi-40.dll ']' diff --git a/bin/cygport.in b/bin/cygport.in index 1fe804d..2eeff26 100755 --- a/bin/cygport.in +++ b/bin/cygport.in @@ -397,7 +397,7 @@ if [ "x${_topdir}" = "x${argv[1]}" ] then if [ -f ./${cygportfile} ] then - _topdir=.; + _topdir=$(readlink -f .); else _topdir=/usr/src; fi