pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/pkgtools/url2pkg/files pkgtools/url2pkg: add abstracti...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/25826f10b421
branches:  trunk
changeset: 338071:25826f10b421
user:      rillig <rillig%pkgsrc.org@localhost>
date:      Sun Aug 18 06:41:16 2019 +0000

description:
pkgtools/url2pkg: add abstraction for variable assignments

diffstat:

 pkgtools/url2pkg/files/url2pkg.pl |  93 ++++++++++++++++++++------------------
 1 files changed, 50 insertions(+), 43 deletions(-)

diffs (244 lines):

diff -r 108e9f44cc18 -r 25826f10b421 pkgtools/url2pkg/files/url2pkg.pl
--- a/pkgtools/url2pkg/files/url2pkg.pl Sun Aug 18 06:23:41 2019 +0000
+++ b/pkgtools/url2pkg/files/url2pkg.pl Sun Aug 18 06:41:16 2019 +0000
@@ -1,5 +1,5 @@
 #! @PERL@
-# $NetBSD: url2pkg.pl,v 1.50 2019/08/18 06:23:19 maya Exp $
+# $NetBSD: url2pkg.pl,v 1.51 2019/08/18 06:41:16 rillig Exp $
 #
 
 # Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -65,6 +65,12 @@
        return $ENV{"PKGMAINTAINER"} || $ENV{"REPLYTO"} || "INSERT_YOUR_MAIL_ADDRESS_HERE";
 }
 
+sub var($$$) {
+       my ($name, $op, $value) = @_;
+
+       return [$name, $op, $value];
+}
+
 sub add_section($$) {
        my ($lines, $vars) = @_;
 
@@ -72,17 +78,17 @@
 
        my $width = 0;
        foreach my $var (@{$vars}) {
-               my ($name, $value) = @$var;
+               my ($name, $op, $value) = @$var;
                next if $value eq "";
-               my $len = (length("$name= ") + 7) & -8;
+               my $len = (length("$name$op\t") + 7) & -8;
                $width = ($len > $width) ? $len : $width;
        }
 
        foreach my $var (@{$vars}) {
-               my ($name, $value) = @$var;
+               my ($name, $op, $value) = @$var;
                next if $value eq "";
-               my $tabs = "\t" x (($width - length("$name=") + 7) / 8);
-               push(@$lines, "$name=$tabs$value");
+               my $tabs = "\t" x (($width - length("$name$op") + 7) / 8);
+               push(@$lines, "$name$op$tabs$value");
        }
        push(@$lines, "");
 }
@@ -108,23 +114,24 @@
 #
 # @depends
 # @build_depends
-#      the dependencies of the package, in the form "package>=version".
+#      the dependencies of the package, in the form
+#      "package>=version:../../category/package".
 # @includes
 #      a list of pathnames relative to the package path.
 #      All these files will be included at the bottom of the Makefile.
 # @build_vars
-#      a list of [varname, value] items that contain variables that
-#      will be defined in the fourth paragraph of the package Makefile,
-#      where the build configuration takes place.
+#      a list of variable assignments that will make up the fourth
+#      paragraph of the package Makefile, where the build configuration
+#      takes place.
 # @extra_vars
 #      similar to the @build_vars, but separated by an empty line in
-#      the Makefile, therefore forming the fifth paragraph.
-# @todo
+#      the Makefile, thereby forming the fifth paragraph.
+# @todos
 #      these are inserted below the second paragraph in the Makefile.
 
 my ($distname, $abs_wrkdir, $abs_wrksrc);
 my (@wrksrc_files, @wrksrc_dirs);
-my (@depends, @build_depends, @includes, @build_vars, @extra_vars, @todo);
+my (@depends, @build_depends, @includes, @build_vars, @extra_vars, @todos);
 my ($pkgname);
 
 #
@@ -144,14 +151,14 @@
        close(CONF);
 
        my $varname = ($gnu_configure ? "GNU_CONFIGURE" : "HAS_CONFIGURE");
-       push(@build_vars, [$varname, "yes"]);
+       push(@build_vars, var($varname, "=", "yes"));
 }
 
 sub magic_cmake() {
        open(CONF, "<", "${abs_wrksrc}/CMakeLists.txt") or return;
        close(CONF);
 
-       push(@build_vars, ["USE_CMAKE", "yes"]);
+       push(@build_vars, var("USE_CMAKE", "=", "yes"));
 }
 
 sub magic_meson() {
@@ -166,7 +173,7 @@
        if (@gconf2_files) {
                foreach my $f (@gconf2_files) {
                        if ($f =~ qr"(.*schemas)") {
-                               push(@extra_vars, ["GCONF_SCHEMAS+", $1]);
+                               push(@extra_vars, var("GCONF_SCHEMAS", "+=", $1));
                        }
                }
                push(@includes, "../../devel/GConf/schemas.mk");
@@ -175,7 +182,7 @@
 
 sub magic_libtool() {
        if (-f "${abs_wrksrc}/ltconfig" || -f "${abs_wrksrc}/ltmain.sh") {
-               push(@build_vars, ["USE_LIBTOOL", "yes"]);
+               push(@build_vars, var("USE_LIBTOOL", "=", "yes"));
        }
        if (-d "${abs_wrksrc}/libltdl") {
                push(@includes, "../../devel/libltdl/convenience.mk");
@@ -187,9 +194,9 @@
 
                # It's a Module::Build module. Dependencies cannot yet be
                # extracted automatically.
-               push(@todo, "Look for the dependencies in Build.PL.");
+               push(@todos, "Look for the dependencies in Build.PL.");
 
-               push(@build_vars, ["PERL5_MODULE_TYPE", "Module::Build"]);
+               push(@build_vars, var("PERL5_MODULE_TYPE", "=", "Module::Build"));
 
        } elsif (-f "${abs_wrksrc}/Makefile.PL") {
 
@@ -214,7 +221,7 @@
        my $packlist = $distname;
        $packlist =~ s/-[0-9].*//;
        $packlist =~ s/-/\//g;
-       push(@build_vars, ["PERL5_PACKLIST", "auto/${packlist}/.packlist"]);
+       push(@build_vars, var("PERL5_PACKLIST", "=", "auto/${packlist}/.packlist"));
        push(@includes, "../../lang/perl5/module.mk");
        $pkgname = "p5-\${DISTNAME}";
 }
@@ -225,7 +232,7 @@
        while (defined(my $line = <CONF>)) {
                # "checksum cargo-package-name cargo-package-version
                if ($line =~ m/("checksum)\s(\S+)\s(\S+)/) {
-                       push(@build_vars, ["CARGO_CRATE_DEPENDS", "$2-$3"]);
+                       push(@build_vars, var("CARGO_CRATE_DEPENDS", "=", "$2-$3"));
                }
        }
        close(CONF);
@@ -237,16 +244,16 @@
 sub magic_pkg_config() {
        my @pkg_config_files = grep { /\.pc\.in$/ && ! /-uninstalled\.pc\.in$/ } @wrksrc_files;
        if (@pkg_config_files) {
-               push(@build_vars, ["USE_TOOLS+", "pkg-config"]);
+               push(@build_vars, var("USE_TOOLS", "+=", "pkg-config"));
        }
        foreach my $f (@pkg_config_files) {
-               push(@extra_vars, ["PKGCONFIG_OVERRIDE+", $f]);
+               push(@extra_vars, var("PKGCONFIG_OVERRIDE", "+=", $f));
        }
 }
 
 sub magic_po() {
        if (grep(/\.g?mo$/, @wrksrc_files)) {
-               push(@build_vars, ["USE_PKGLOCALEDIR", "yes"]);
+               push(@build_vars, var("USE_PKGLOCALEDIR", "=", "yes"));
        }
 }
 
@@ -262,7 +269,7 @@
                $use_languages = "# none";
        }
        if ($use_languages ne "c") {
-               push(@build_vars, ["USE_LANGUAGES", $use_languages]);
+               push(@build_vars, var("USE_LANGUAGES", "=", $use_languages));
        }
 }
 
@@ -387,20 +394,20 @@
        push(@lines, "");
 
        add_section(\@lines, [
-               ["GITHUB_PROJECT", $github_project],
-               ["DISTNAME", $distname],
-               ["CATEGORIES", $categories],
-               ["MASTER_SITES", $master_sites],
-               ["GITHUB_RELEASE", $github_release],
-               ["EXTRACT_SUFX", $extract_sufx],
-               ["DIST_SUBDIR", $dist_subdir],
+               var("GITHUB_PROJECT", "=", $github_project),
+               var("DISTNAME", "=", $distname),
+               var("CATEGORIES", "=", $categories),
+               var("MASTER_SITES", "=", $master_sites),
+               var("GITHUB_RELEASE", "=", $github_release),
+               var("EXTRACT_SUFX", "=", $extract_sufx),
+               var("DIST_SUBDIR", "=", $dist_subdir),
        ]);
 
        add_section(\@lines, [
-               ["MAINTAINER", get_maintainer()],
-               ["HOMEPAGE", $homepage],
-               ["COMMENT", "TODO: Short description of the package"],
-               ["#LICENSE", "# TODO: (see mk/license.mk)"],
+               var("MAINTAINER", "=", get_maintainer()),
+               var("HOMEPAGE", "=", $homepage),
+               var("COMMENT", "=", "TODO: Short description of the package"),
+               var("#LICENSE", "=", "# TODO: (see mk/license.mk)"),
        ]);
 
        push(@lines, "# url2pkg-marker (please do not remove this line.)");
@@ -458,12 +465,12 @@
        closedir(WRKDIR);
        if (@files == 1) {
                if ($files[0] ne $distname) {
-                       push(@build_vars, ["WRKSRC", "\${WRKDIR}/$files[0]"]);
+                       push(@build_vars, var("WRKSRC", "=", "\${WRKDIR}/$files[0]"));
                }
                $abs_wrksrc = "${abs_wrkdir}/$files[0]";
        } else {
-               push(@build_vars, ["WRKSRC", "\${WRKDIR}" .
-                   ((@files > 1) ? " # More than one possibility -- please check manually." : "")]);
+               push(@build_vars, var("WRKSRC", "=", "\${WRKDIR}" .
+                   ((@files > 1) ? " # More than one possibility -- please check manually." : "")));
                $abs_wrksrc = $abs_wrkdir;
        }
 
@@ -502,8 +509,8 @@
                }
        }
 
-       if (@todo) {
-               foreach my $todo (@todo) {
+       if (@todos) {
+               foreach my $todo (@todos) {
                        push(@lines, "# TODO: $todo");
                }
                push(@lines, "");
@@ -511,10 +518,10 @@
 
        my @depend_vars;
        foreach my $dep (@build_depends) {
-               push(@depend_vars, ["BUILD_DEPENDS+", $dep]);
+               push(@depend_vars, var("BUILD_DEPENDS", "+=", $dep));
        }
        foreach my $dep (@depends) {
-               push(@depend_vars, ["DEPENDS+", $dep]);
+               push(@depend_vars, var("DEPENDS", "+=", $dep));
        }
        add_section(\@lines, \@depend_vars);
 



Home | Main Index | Thread Index | Old Index