* [PATCH] perl: Fix perl-module-* being ignored via COMPLEMENTARY_GLOB
@ 2024-01-22 15:49 William.Lyu
0 siblings, 0 replies; 5+ messages in thread
From: William.Lyu @ 2024-01-22 15:49 UTC (permalink / raw)
To: openembedded-core
From: William Lyu <William.Lyu@windriver.com>
When perl-modules is added via COMPLEMENTARY_GLOB, all perl-module-*
packages recommended by perl-modules are ignored due to the defined
behavior of COMPLEMENTARY_GLOB.
This patch changes the relationship between perl-modules and all of its
perl-module-* from RRECOMMENDS to RDEPENDS. This makes sense as
perl-modules should represent the collection of all optional
perl-module-* packages. After this patch, perl-modules itself is being
RRECOMMENDED instead of the individual perl-module-* packages
perl-modules represents.
Signed-off-by: William Lyu <William.Lyu@windriver.com>
---
meta/recipes-devtools/perl/perl_5.38.2.bb | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/meta/recipes-devtools/perl/perl_5.38.2.bb b/meta/recipes-devtools/perl/perl_5.38.2.bb
index a9d684cfc5..5037816f89 100644
--- a/meta/recipes-devtools/perl/perl_5.38.2.bb
+++ b/meta/recipes-devtools/perl/perl_5.38.2.bb
@@ -306,8 +306,8 @@ ALTERNATIVE_PRIORITY = "40"
ALTERNATIVE:${PN}-doc = "Thread.3"
ALTERNATIVE_LINK_NAME[Thread.3] = "${mandir}/man3/Thread.3"
-# Create a perl-modules package recommending all the other perl
-# packages (actually the non modules packages and not created too)
+# Create a perl-modules package that represents the collection of all the
+# other perl packages (actually the non modules packages and not created too).
ALLOW_EMPTY:${PN}-modules = "1"
PACKAGES += "${PN}-modules "
@@ -322,11 +322,16 @@ python split_perl_packages () {
do_split_packages(d, libdir, r'.*linux/([^\/].*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
do_split_packages(d, libdir, r'(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|.*linux\/)[^\/]).*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
- # perl-modules should recommend every perl module, and only the
+ # perl-modules should runtime-depend on every perl module, and only the
# modules. Don't attempt to use the result of do_split_packages() as some
# modules are manually split (eg. perl-module-unicore).
packages = filter(lambda p: 'perl-module-' in p, d.getVar('PACKAGES').split())
- d.setVar(d.expand("RRECOMMENDS:${PN}-modules"), ' '.join(packages))
+ d.setVar(d.expand("RDEPENDS:${PN}-modules"), ' '.join(packages))
+
+ # As perl-modules depends on all other, potentially non-existent, perl
+ # packages, we allow these packages to be empty to prevent build errors.
+ for pkg in d.getVar(d.expand("RDEPENDS:${PN}-modules")).split():
+ d.setVar(d.expand("ALLOW_EMPTY:" + pkg), "1")
# Read the pre-generated dependency file, and use it to set module dependecies
for line in open(d.expand("${WORKDIR}") + '/perl-rdepends.txt').readlines():
@@ -352,7 +357,8 @@ python() {
d.setVar("PACKAGES_DYNAMIC", "^nativesdk-perl-module-.*")
}
-RDEPENDS:${PN}-misc += "perl perl-modules"
+RDEPENDS:${PN}-misc += "perl"
+RRECOMMENDS:${PN}-misc += "perl-modules"
RDEPENDS:${PN}-pod += "perl"
BBCLASSEXTEND = "native nativesdk"
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] perl: Fix perl-module-* being ignored via COMPLEMENTARY_GLOB
@ 2024-01-24 3:22 William.Lyu
2024-01-24 9:44 ` [OE-core] " Alexander Kanavin
0 siblings, 1 reply; 5+ messages in thread
From: William.Lyu @ 2024-01-24 3:22 UTC (permalink / raw)
To: openembedded-core
From: William Lyu <William.Lyu@windriver.com>
When perl-modules is added via COMPLEMENTARY_GLOB, all perl-module-*
packages recommended by perl-modules are ignored due to the defined
behavior of COMPLEMENTARY_GLOB.
This patch changes the relationship between perl-modules and all of its
perl-module-* from RRECOMMENDS to RDEPENDS. This makes sense as
perl-modules should represent the collection of all optional
perl-module-* packages. After this patch, perl-modules itself is being
RRECOMMENDED instead of the individual perl-module-* packages
perl-modules represents.
Signed-off-by: William Lyu <William.Lyu@windriver.com>
---
meta/recipes-devtools/perl/perl_5.38.2.bb | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/meta/recipes-devtools/perl/perl_5.38.2.bb b/meta/recipes-devtools/perl/perl_5.38.2.bb
index a9d684cfc5..329652a718 100644
--- a/meta/recipes-devtools/perl/perl_5.38.2.bb
+++ b/meta/recipes-devtools/perl/perl_5.38.2.bb
@@ -306,8 +306,8 @@ ALTERNATIVE_PRIORITY = "40"
ALTERNATIVE:${PN}-doc = "Thread.3"
ALTERNATIVE_LINK_NAME[Thread.3] = "${mandir}/man3/Thread.3"
-# Create a perl-modules package recommending all the other perl
-# packages (actually the non modules packages and not created too)
+# Create a perl-modules package that represents the collection of all the
+# other perl packages (actually the non modules packages and not created too).
ALLOW_EMPTY:${PN}-modules = "1"
PACKAGES += "${PN}-modules "
@@ -322,11 +322,15 @@ python split_perl_packages () {
do_split_packages(d, libdir, r'.*linux/([^\/].*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
do_split_packages(d, libdir, r'(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|.*linux\/)[^\/]).*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
- # perl-modules should recommend every perl module, and only the
+ # perl-modules should runtime-depend on every perl module, and only the
# modules. Don't attempt to use the result of do_split_packages() as some
- # modules are manually split (eg. perl-module-unicore).
- packages = filter(lambda p: 'perl-module-' in p, d.getVar('PACKAGES').split())
- d.setVar(d.expand("RRECOMMENDS:${PN}-modules"), ' '.join(packages))
+ # modules are manually split (eg. perl-module-unicore). Also, the split
+ # packages should not include packages defined in RPROVIDES:${PN}. In
+ # addition, "perl-module-config-git" is not a valid package as
+ # Config_git.pl is listed under FILES:${PN}.
+ empty_module_pkgs = d.getVar(d.expand("RPROVIDES:${PN}")).split() + ['perl-module-config-git']
+ packages = filter(lambda p: 'perl-module-' in p and p not in empty_module_pkgs, d.getVar('PACKAGES').split())
+ d.setVar(d.expand("RDEPENDS:${PN}-modules"), ' '.join(packages))
# Read the pre-generated dependency file, and use it to set module dependecies
for line in open(d.expand("${WORKDIR}") + '/perl-rdepends.txt').readlines():
@@ -352,7 +356,8 @@ python() {
d.setVar("PACKAGES_DYNAMIC", "^nativesdk-perl-module-.*")
}
-RDEPENDS:${PN}-misc += "perl perl-modules"
+RDEPENDS:${PN}-misc += "perl"
+RRECOMMENDS:${PN}-misc += "perl-modules"
RDEPENDS:${PN}-pod += "perl"
BBCLASSEXTEND = "native nativesdk"
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [OE-core] [PATCH] perl: Fix perl-module-* being ignored via COMPLEMENTARY_GLOB
2024-01-24 3:22 [PATCH] perl: Fix perl-module-* being ignored via COMPLEMENTARY_GLOB William.Lyu
@ 2024-01-24 9:44 ` Alexander Kanavin
2024-01-24 16:26 ` Lyu, William
0 siblings, 1 reply; 5+ messages in thread
From: Alexander Kanavin @ 2024-01-24 9:44 UTC (permalink / raw)
To: william.lyu; +Cc: openembedded-core
On Wed, 24 Jan 2024 at 04:22, Lyu, William via lists.openembedded.org
<william.lyu=windriver.com@lists.openembedded.org> wrote:
> + # modules are manually split (eg. perl-module-unicore). Also, the split
> + # packages should not include packages defined in RPROVIDES:${PN}. In
> + # addition, "perl-module-config-git" is not a valid package as
> + # Config_git.pl is listed under FILES:${PN}.
> + empty_module_pkgs = d.getVar(d.expand("RPROVIDES:${PN}")).split() + ['perl-module-config-git']
Nearly there - I think it's better to add perl-module-config-git to
RPROVIDES:perl, and avoid special casing here.
Alex
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [OE-core] [PATCH] perl: Fix perl-module-* being ignored via COMPLEMENTARY_GLOB
2024-01-24 9:44 ` [OE-core] " Alexander Kanavin
@ 2024-01-24 16:26 ` Lyu, William
0 siblings, 0 replies; 5+ messages in thread
From: Lyu, William @ 2024-01-24 16:26 UTC (permalink / raw)
To: Alexander Kanavin; +Cc: openembedded-core@lists.openembedded.org
> On Wed, 24 Jan 2024 at 04:22, Lyu, William via lists.openembedded.org
> <william.lyu=windriver.com@lists.openembedded.org> wrote:
>> + # modules are manually split (eg. perl-module-unicore). Also, the split
>> + # packages should not include packages defined in RPROVIDES:${PN}. In
>> + # addition, "perl-module-config-git" is not a valid package as
>> + # Config_git.pl is listed under FILES:${PN}.
>> + empty_module_pkgs = d.getVar(d.expand("RPROVIDES:${PN}")).split() + ['perl-module-config-git']
>
> Nearly there - I think it's better to add perl-module-config-git to
> RPROVIDES:perl, and avoid special casing here.
It makes perfect sense to me now. perl-module-config-git is just like
perl-module-strict. As the file - "${libdir}/perl5/${PV}/strict.pm" -
corresponding to perl-module-strict is already listed under FILES:${PN}, ${PN}
is effectively runtime-providing (RPROVIDES) perl-module-strict. Similarly, we
see that the file - "${libdir}/perl5/${PV}/*/Config_git.pl" - corresponding to
perl-module-config-git is also listed under FILES:${PN}, ${PN} is effectively
runtime-providing (RPROVIDES) perl-module-config-it.
I will submit a new patch.
Thanks!
William
>
> Alex
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH] perl: Fix perl-module-* being ignored via COMPLEMENTARY_GLOB
@ 2024-01-24 16:32 William.Lyu
0 siblings, 0 replies; 5+ messages in thread
From: William.Lyu @ 2024-01-24 16:32 UTC (permalink / raw)
To: openembedded-core
From: William Lyu <William.Lyu@windriver.com>
When perl-modules is added via COMPLEMENTARY_GLOB, all perl-module-*
packages recommended by perl-modules are ignored due to the defined
behavior of COMPLEMENTARY_GLOB.
This patch changes the relationship between perl-modules and all of its
perl-module-* from RRECOMMENDS to RDEPENDS. This makes sense as
perl-modules should represent the collection of all optional
perl-module-* packages. After this patch, perl-modules itself is being
RRECOMMENDED instead of the individual perl-module-* packages
perl-modules represents.
Signed-off-by: William Lyu <William.Lyu@windriver.com>
---
meta/recipes-devtools/perl/perl_5.38.2.bb | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/meta/recipes-devtools/perl/perl_5.38.2.bb b/meta/recipes-devtools/perl/perl_5.38.2.bb
index a9d684cfc5..b6c9cda7ae 100644
--- a/meta/recipes-devtools/perl/perl_5.38.2.bb
+++ b/meta/recipes-devtools/perl/perl_5.38.2.bb
@@ -273,7 +273,7 @@ FILES:${PN} = "${bindir}/perl ${bindir}/perl.real ${bindir}/perl${PV} ${libdir}/
${libdir}/perl5/${PV}/ExtUtils/typemap \
"
RPROVIDES:${PN} += "perl-module-strict perl-module-vars perl-module-config perl-module-warnings \
- perl-module-warnings-register"
+ perl-module-warnings-register perl-module-config-git"
FILES:${PN}-staticdev:append = " ${libdir}/perl5/${PV}/*/CORE/libperl.a"
@@ -306,8 +306,8 @@ ALTERNATIVE_PRIORITY = "40"
ALTERNATIVE:${PN}-doc = "Thread.3"
ALTERNATIVE_LINK_NAME[Thread.3] = "${mandir}/man3/Thread.3"
-# Create a perl-modules package recommending all the other perl
-# packages (actually the non modules packages and not created too)
+# Create a perl-modules package that represents the collection of all the
+# other perl packages (actually the non modules packages and not created too).
ALLOW_EMPTY:${PN}-modules = "1"
PACKAGES += "${PN}-modules "
@@ -322,11 +322,13 @@ python split_perl_packages () {
do_split_packages(d, libdir, r'.*linux/([^\/].*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
do_split_packages(d, libdir, r'(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|.*linux\/)[^\/]).*)\.(pm|pl|e2x)', '${PN}-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
- # perl-modules should recommend every perl module, and only the
+ # perl-modules should runtime-depend on every perl module, and only the
# modules. Don't attempt to use the result of do_split_packages() as some
- # modules are manually split (eg. perl-module-unicore).
- packages = filter(lambda p: 'perl-module-' in p, d.getVar('PACKAGES').split())
- d.setVar(d.expand("RRECOMMENDS:${PN}-modules"), ' '.join(packages))
+ # modules are manually split (eg. perl-module-unicore). Also, the split
+ # packages should not include packages defined in RPROVIDES:${PN}.
+ perl_sub_pkgs = d.getVar(d.expand("RPROVIDES:${PN}")).split()
+ packages = filter(lambda p: 'perl-module-' in p and p not in perl_sub_pkgs, d.getVar('PACKAGES').split())
+ d.setVar(d.expand("RDEPENDS:${PN}-modules"), ' '.join(packages))
# Read the pre-generated dependency file, and use it to set module dependecies
for line in open(d.expand("${WORKDIR}") + '/perl-rdepends.txt').readlines():
@@ -352,7 +354,8 @@ python() {
d.setVar("PACKAGES_DYNAMIC", "^nativesdk-perl-module-.*")
}
-RDEPENDS:${PN}-misc += "perl perl-modules"
+RDEPENDS:${PN}-misc += "perl"
+RRECOMMENDS:${PN}-misc += "perl-modules"
RDEPENDS:${PN}-pod += "perl"
BBCLASSEXTEND = "native nativesdk"
--
2.43.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-01-24 16:32 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-24 3:22 [PATCH] perl: Fix perl-module-* being ignored via COMPLEMENTARY_GLOB William.Lyu
2024-01-24 9:44 ` [OE-core] " Alexander Kanavin
2024-01-24 16:26 ` Lyu, William
-- strict thread matches above, loose matches on Subject: below --
2024-01-24 16:32 William.Lyu
2024-01-22 15:49 William.Lyu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox