On Fri, Jun 27, 2014 at 03:41:57PM +0300, Peter Pentchev wrote: > On Thu, Jun 26, 2014 at 03:20:28PM +0300, Peter Pentchev wrote: > > Hi Dominique, > > I sent an e-mail to Dominique Dumont directly, but it's better to have > this discussion on a public list, so here goes :) Uhm. And... of course, it would help if I included the patch. > > First of all, thanks a lot for all the great work you've been doing on > > Config-Model, the pkg-perl project, and Debian in general! > > > > What do you think about the attached patch that adds support for the > > build profile annotations in the debian/control file? There are two > > parts of this, as described in the specification - > > https://wiki.debian.org/BuildProfileSpec - a <profile.*> addition to > > Build-Depends and Build-Depends-Indep and a Build-Profiles header for > > the binary package stanzas. The test included in the patch is an actual > > control file for a package converted to build profiles as part of my > > work on this year's "Bootstrappable Debian" GSoC project, as you may see > > in #751922; that's why I've CC'd Wookey and Johannes, my mentors on this > > project, who also have some interest in the adoption of the build > > profiles framework and the adaptations made to all the tools that parse > > the source control and the binary changes file to support the new > > fields. > > > > Right now the patch does not try to check that the <profile.*> > > restrictions may only be present in B-D and B-D-I, and not in any other > > places that Dpkg::Dependency is used (Build-Conflicts for the source > > package, Depends and friends for the binary ones). If you wish, I'll > > try to implement that, too. On the other hand, if you like the patch > > as-is, I could commit it to the pkg-perl repo as the start of my > > long-overdue pkg-perl comeback :) > > > > Thanks again, and keep up the great work! G'luck, Peter -- Peter Pentchev roam@ringlet.net roam@FreeBSD.org p.penchev@storpool.com PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint 2EE7 A7A5 17FC 124C F115 C354 651E EFB0 2527 DF13
From c7ef378cc7159d19de954cbb1ba698480d71d201 Mon Sep 17 00:00:00 2001 From: Peter Pentchev <roam@ringlet.net> Date: Thu, 26 Jun 2014 13:11:55 +0300 Subject: [PATCH] Source B-D: <profile.*>, binary Build-Profiles. Add support for the build profile debian/control annotations as described at https://wiki.debian.org/BuildProfileSpec --- lib/Config/Model/Dpkg/Dependency.pm | 8 ++++- lib/Config/Model/models/Dpkg/Control/Binary.pl | 7 ++++ .../dpkg-control-examples/build-profiles | 37 ++++++++++++++++++++++ t/model_tests.d/dpkg-control-test-conf.pl | 8 +++++ 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 t/model_tests.d/dpkg-control-examples/build-profiles diff --git a/lib/Config/Model/Dpkg/Dependency.pm b/lib/Config/Model/Dpkg/Dependency.pm index ca3bc27..04a0d1f 100644 --- a/lib/Config/Model/Dpkg/Dependency.pm +++ b/lib/Config/Model/Dpkg/Dependency.pm @@ -171,7 +171,7 @@ depend: pkg_dep | variable # For the allowed stuff after ${foo}, see #702792 variable: /\${[\w:\-]+}[\w\.\-~+]*/ -pkg_dep: pkg_name dep_version(?) arch_restriction(?) { +pkg_dep: pkg_name dep_version(?) arch_restriction(?) profile_restriction(?) { my $dv = $item[2] ; my $ar = $item[3] ; my @ret = ( $item{pkg_name} ) ; @@ -181,6 +181,12 @@ pkg_dep: pkg_name dep_version(?) arch_restriction(?) { $return = \@ret ; ; } +profile_restriction: '<' profile(s) '>' + +profile: not(?) 'profile.' profile_name + +profile_name: /[a-z][a-z0-9-]*/ + arch_restriction: '[' osarch(s) ']' { my $mismatch = 0; diff --git a/lib/Config/Model/models/Dpkg/Control/Binary.pl b/lib/Config/Model/models/Dpkg/Control/Binary.pl index aced01a..d8d3cd1 100644 --- a/lib/Config/Model/models/Dpkg/Control/Binary.pl +++ b/lib/Config/Model/models/Dpkg/Control/Binary.pl @@ -301,6 +301,13 @@ supported by the library', } ] } + }, + 'Build-Profiles', + { + 'description' => 'A space-separated list of optionally negated profile names', + 'type' => 'leaf', + 'value_type' => 'uniline', + 'match' => '[!]?[a-z][a-z0-9-]*(\s+[!]?[a-z][a-z0-9-]*)*' } ], 'license' => 'LGPL2', diff --git a/t/model_tests.d/dpkg-control-examples/build-profiles b/t/model_tests.d/dpkg-control-examples/build-profiles new file mode 100644 index 0000000..1b43b5d --- /dev/null +++ b/t/model_tests.d/dpkg-control-examples/build-profiles @@ -0,0 +1,37 @@ +Source: pkg-config +Section: devel +Priority: optional +Maintainer: Tollef Fog Heen <tfheen@debian.org> +Build-Depends: debhelper (>= 9.20140227), dpkg-dev (>= 1.17.2), dh-autoreconf, + libglib2.0-dev <!profile.stage1> +Homepage: http://pkg-config.freedesktop.org +Standards-Version: 3.8.4 + +Package: pkg-config +Architecture: any +Build-Profiles: !stage1 +Multi-Arch: foreign +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: manage compile and link flags for libraries + pkg-config is a system for managing library compile and link flags that + works with automake and autoconf. + . + Increasingly libraries ship with ".pc" files that allow querying of the + compiler and linker flags needed to use them through the pkg-config(1) + program. + +Package: pkg-config-stage1 +Architecture: any +Build-Profiles: stage1 +Multi-Arch: foreign +Depends: ${shlibs:Depends}, ${misc:Depends} +Provides: pkg-config +Description: manage compile and link flags for libraries (bootstrap) + pkg-config is a system for managing library compile and link flags that + works with automake and autoconf. + . + Increasingly libraries ship with ".pc" files that allow querying of the + compiler and linker flags needed to use them through the pkg-config(1) + program. + . + This is an intermediate package to be used for bootstrap builds. diff --git a/t/model_tests.d/dpkg-control-test-conf.pl b/t/model_tests.d/dpkg-control-test-conf.pl index 6f5f519..3e54054 100644 --- a/t/model_tests.d/dpkg-control-test-conf.pl +++ b/t/model_tests.d/dpkg-control-test-conf.pl @@ -177,6 +177,14 @@ providing the following file: 'source Section' => 'gnu-r', 'binary:gnu-r-view Section' => 'gnu-r', ] + }, + { + name => 'build-profiles', + load_warnings => [ qr/standards version/ ], + check => { + 'binary:pkg-config Build-Profiles' => '!stage1', + 'binary:pkg-config-stage1 Build-Profiles' => 'stage1', + }, } ); -- 2.0.0
Attachment:
signature.asc
Description: Digital signature