Received: by mail.netbsd.org (Postfix, from userid 605) id 6797D84D54; Thu, 12 Sep 2019 18:23:02 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id E51FA84D35 for ; Thu, 12 Sep 2019 18:23:01 +0000 (UTC) X-Virus-Scanned: amavisd-new at netbsd.org Received: from mail.netbsd.org ([IPv6:::1]) by localhost (mail.netbsd.org [IPv6:::1]) (amavisd-new, port 10025) with ESMTP id UBlGHvUjbXWe for ; Thu, 12 Sep 2019 18:23:01 +0000 (UTC) Received: from cvs.NetBSD.org (ivanova.netbsd.org [199.233.217.197]) by mail.netbsd.org (Postfix) with ESMTP id EB6F384C6C for ; Thu, 12 Sep 2019 18:23:00 +0000 (UTC) Received: by cvs.NetBSD.org (Postfix, from userid 500) id E3954FBF4; Thu, 12 Sep 2019 18:23:00 +0000 (UTC) Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_1568312580275970" MIME-Version: 1.0 Date: Thu, 12 Sep 2019 18:23:00 +0000 From: "Roland Illig" Subject: CVS commit: pkgsrc/pkgtools/url2pkg To: pkgsrc-changes@NetBSD.org Reply-To: rillig@netbsd.org X-Mailer: log_accum Message-Id: <20190912182300.E3954FBF4@cvs.NetBSD.org> Sender: pkgsrc-changes-owner@NetBSD.org List-Id: pkgsrc-changes.NetBSD.org Precedence: bulk List-Unsubscribe: This is a multi-part message in MIME format. --_----------=_1568312580275970 Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Module Name: pkgsrc Committed By: rillig Date: Thu Sep 12 18:23:00 UTC 2019 Modified Files: pkgsrc/pkgtools/url2pkg: Makefile PLIST pkgsrc/pkgtools/url2pkg/files: MakeMaker.pm url2pkg.pl url2pkg.t Added Files: pkgsrc/pkgtools/url2pkg/files: Build.pm Log Message: pkgtools/url2pkg: update to 2.36 Changes since 2.35: * Added support for Module::Build Perl modules. To generate a diff of this commit: cvs rdiff -u -r1.99 -r1.100 pkgsrc/pkgtools/url2pkg/Makefile cvs rdiff -u -r1.4 -r1.5 pkgsrc/pkgtools/url2pkg/PLIST cvs rdiff -u -r0 -r1.1 pkgsrc/pkgtools/url2pkg/files/Build.pm cvs rdiff -u -r1.10 -r1.11 pkgsrc/pkgtools/url2pkg/files/MakeMaker.pm cvs rdiff -u -r1.69 -r1.70 pkgsrc/pkgtools/url2pkg/files/url2pkg.pl cvs rdiff -u -r1.9 -r1.10 pkgsrc/pkgtools/url2pkg/files/url2pkg.t Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. --_----------=_1568312580275970 Content-Disposition: inline Content-Length: 10870 Content-Transfer-Encoding: binary Content-Type: text/x-diff; charset=us-ascii Modified files: Index: pkgsrc/pkgtools/url2pkg/Makefile diff -u pkgsrc/pkgtools/url2pkg/Makefile:1.99 pkgsrc/pkgtools/url2pkg/Makefile:1.100 --- pkgsrc/pkgtools/url2pkg/Makefile:1.99 Thu Sep 12 05:49:03 2019 +++ pkgsrc/pkgtools/url2pkg/Makefile Thu Sep 12 18:23:00 2019 @@ -1,6 +1,6 @@ -# $NetBSD: Makefile,v 1.99 2019/09/12 05:49:03 rillig Exp $ +# $NetBSD: Makefile,v 1.100 2019/09/12 18:23:00 rillig Exp $ -PKGNAME= url2pkg-2.35 +PKGNAME= url2pkg-2.36 CATEGORIES= pkgtools MAINTAINER= rillig@NetBSD.org @@ -34,6 +34,7 @@ SUBST_SED.up+= -e 's,@PKGSRCDIR@,${BATC do-install: ${INSTALL_SCRIPT} ${WRKSRC}/url2pkg.pl ${DESTDIR}${PREFIX}/bin/url2pkg ${INSTALL_MAN} ${FILESDIR}/url2pkg.8 ${DESTDIR}${PREFIX}/${PKGMANDIR}/man8 + ${INSTALL_DATA} ${WRKSRC}/Build.pm ${DESTDIR}${PREFIX}/lib/url2pkg/Module/ ${INSTALL_DATA} ${WRKSRC}/MakeMaker.pm ${DESTDIR}${PREFIX}/lib/url2pkg/ExtUtils/ ${INSTALL_DATA} ${WRKSRC}/setuptools.py ${DESTDIR}${PREFIX}/lib/url2pkg/ Index: pkgsrc/pkgtools/url2pkg/PLIST diff -u pkgsrc/pkgtools/url2pkg/PLIST:1.4 pkgsrc/pkgtools/url2pkg/PLIST:1.5 --- pkgsrc/pkgtools/url2pkg/PLIST:1.4 Sun Aug 18 11:26:33 2019 +++ pkgsrc/pkgtools/url2pkg/PLIST Thu Sep 12 18:23:00 2019 @@ -1,5 +1,6 @@ -@comment $NetBSD: PLIST,v 1.4 2019/08/18 11:26:33 rillig Exp $ +@comment $NetBSD: PLIST,v 1.5 2019/09/12 18:23:00 rillig Exp $ bin/url2pkg lib/url2pkg/ExtUtils/MakeMaker.pm +lib/url2pkg/Module/Build.pm lib/url2pkg/setuptools.py man/man8/url2pkg.8 Index: pkgsrc/pkgtools/url2pkg/files/MakeMaker.pm diff -u pkgsrc/pkgtools/url2pkg/files/MakeMaker.pm:1.10 pkgsrc/pkgtools/url2pkg/files/MakeMaker.pm:1.11 --- pkgsrc/pkgtools/url2pkg/files/MakeMaker.pm:1.10 Wed Sep 11 05:25:55 2019 +++ pkgsrc/pkgtools/url2pkg/files/MakeMaker.pm Thu Sep 12 18:23:00 2019 @@ -1,6 +1,6 @@ # -*-perl-*- -# Copyright (c) 2010 The NetBSD Foundation, Inc. +# Copyright (c) 2010, 2019 The NetBSD Foundation, Inc. # All rights reserved. # # This code is derived from software contributed to The NetBSD Foundation @@ -37,7 +37,7 @@ package ExtUtils::MakeMaker; require 5.013002; use strict; -use warnings; +use warnings FATAL => 'all'; my $url2pkg_pkgsrcdir = '@PKGSRCDIR@'; Index: pkgsrc/pkgtools/url2pkg/files/url2pkg.pl diff -u pkgsrc/pkgtools/url2pkg/files/url2pkg.pl:1.69 pkgsrc/pkgtools/url2pkg/files/url2pkg.pl:1.70 --- pkgsrc/pkgtools/url2pkg/files/url2pkg.pl:1.69 Thu Sep 12 05:56:59 2019 +++ pkgsrc/pkgtools/url2pkg/files/url2pkg.pl Thu Sep 12 18:23:00 2019 @@ -1,5 +1,5 @@ #! @PERL5@ -# $NetBSD: url2pkg.pl,v 1.69 2019/09/12 05:56:59 rillig Exp $ +# $NetBSD: url2pkg.pl,v 1.70 2019/09/12 18:23:00 rillig Exp $ # # Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -134,10 +134,10 @@ sub lines_set($$$) { my $i = 0; foreach my $line (@$lines) { - if ($line =~ qr"^\Q$varname\E(\+?=)([ \t]+)([^#\\]*?)(\s*)(#.*|)$") { + if ($line =~ qr"^#?\Q$varname\E(\+?=)([ \t]+)([^#\\]*?)(\s*)(#.*|)$") { my ($op, $indent, $old_value, $space_after_value, $comment) = ($1, $2, $3, $4, $5); - $lines->[$i] = "$varname$op$indent$new_value$space_after_value$comment"; + $lines->[$i] = "$varname$op$indent$new_value"; return true; } $i++; @@ -208,7 +208,7 @@ sub lines_remove_if($$$) { sub lines_index($$) { my ($lines, $re) = @_; - foreach my $i (0..$#$lines) { + foreach my $i (0 .. $#$lines) { return $i if $lines->[$i] =~ $re; } return -1; @@ -275,11 +275,14 @@ our @build_vars; # the Makefile, thereby forming the fifth paragraph. our @extra_vars; +# variables from the initial Makefile whose values are replaced +our %update_vars; + # these are inserted below the second paragraph in the Makefile. our @todos; # the package name is $pkgname_prefix${DISTNAME$pkgname_transform}. -our $pkgname_prefix = ""; # example: ${PYPKGPREFIX}- +our $pkgname_prefix = ""; # example: ${PYPKGPREFIX}- our $pkgname_transform = ""; # example: :S,-v,-, our $regenerate_distinfo = false; @@ -326,9 +329,15 @@ sub read_dependencies($$$) { while (defined (my $line = )) { chomp($line); - next unless $line =~ qr"^(\w+)\t([^\s:>]+)(>[^\s:]+|)(?::(\.\./\.\./\S+))?$"; - push(@dep_lines, [$1, $2, $3 || ">=0", $4 || ""]); + if ($line =~ qr"^(\w+)\t([^\s:>]+)(>[^\s:]+|)(?::(\.\./\.\./\S+))?$") { + push(@dep_lines, [ $1, $2, $3 || ">=0", $4 || "" ]); + } elsif ($line =~ qr"^var\t(\S+)\t(.+)$") { + $main::update_vars{$1} = $2; + } else { + printf STDERR "url2pkg: unknown dependency line: %s\n", $line; + } } + close(DEPS) or die; foreach my $dep_line (@dep_lines) { @@ -401,9 +410,7 @@ sub adjust_libtool() { # devel/p5-Algorithm-CheckDigits sub adjust_perl_module_Build_PL() { - # TODO: Implement this similarly to the Makefile.PL mock below. - - push(@todos, "Look for the dependencies in Build.PL."); + read_dependencies("cd '$abs_wrksrc' && perl -I$libdir -I. Build.PL", {}, ""); push(@build_vars, var("PERL5_MODULE_TYPE", "=", "Module::Build")); } @@ -448,7 +455,7 @@ sub adjust_python_module() { my $cmd = "cd '$abs_wrksrc' && $pythonbin setup.py build"; my $env = { "PYTHONDONTWRITEBYTECODE" => "x", - "PYTHONPATH" => $libdir + "PYTHONPATH" => $libdir }; read_dependencies($cmd, $env, "py-"); @@ -709,8 +716,7 @@ sub adjust_lines_python_module($$) { } } -sub adjust_package_from_extracted_distfiles($) -{ +sub adjust_package_from_extracted_distfiles($) { my ($url) = @_; chomp($abs_wrkdir = `$make show-var VARNAME=WRKDIR`); @@ -758,8 +764,6 @@ sub adjust_package_from_extracted_distfi print("url2pkg> Adjusting the Makefile\n"); - my $seen_marker = false; - my @prev_lines = read_lines("Makefile"); my $marker_index = lines_index(\@prev_lines, qr"^# url2pkg-marker"); if ($marker_index == -1) { @@ -801,6 +805,10 @@ sub adjust_package_from_extracted_distfi adjust_lines_python_module(\@lines, $url); + foreach my $varname (keys %update_vars) { + lines_set(\@lines, $varname, $update_vars{$varname}); + } + write_lines("Makefile", @lines); if ($regenerate_distinfo) { Index: pkgsrc/pkgtools/url2pkg/files/url2pkg.t diff -u pkgsrc/pkgtools/url2pkg/files/url2pkg.t:1.9 pkgsrc/pkgtools/url2pkg/files/url2pkg.t:1.10 --- pkgsrc/pkgtools/url2pkg/files/url2pkg.t:1.9 Thu Sep 12 05:45:34 2019 +++ pkgsrc/pkgtools/url2pkg/files/url2pkg.t Thu Sep 12 18:23:00 2019 @@ -1,5 +1,5 @@ # -*- perl -*- -# $NetBSD: url2pkg.t,v 1.9 2019/09/12 05:45:34 rillig Exp $ +# $NetBSD: url2pkg.t,v 1.10 2019/09/12 18:23:00 rillig Exp $ require "url2pkg.pl"; @@ -83,6 +83,22 @@ sub test_lines_append__value_without_com is_deeply($lines, ["VARNAME+=\tvalue appended"]); } +sub test_lines_set__previously_with_comment() { + my $lines = ["LICENSE=\t# TODO: see mk/license.mk"]; + + lines_set($lines, "LICENSE", "\${PERL5_LICENSE}"); + + is_deeply($lines, ["LICENSE=\t\${PERL5_LICENSE}"]); +} + +sub test_lines_set__not_found() { + my $lines = ["OLD_VAR=\told value # old comment"]; + + lines_set($lines, "NEW_VAR", "new value"); + + is_deeply($lines, ["OLD_VAR=\told value # old comment"]); +} + sub test_lines_index() { my $lines = ["1", "2", "345"]; @@ -243,6 +259,7 @@ sub set_up_test() { @main::includes = (); @main::build_vars = (); @main::extra_vars = (); + %main::update_vars = (); @main::todos = (); $main::pkgname_prefix = ""; Added files: Index: pkgsrc/pkgtools/url2pkg/files/Build.pm diff -u /dev/null pkgsrc/pkgtools/url2pkg/files/Build.pm:1.1 --- /dev/null Thu Sep 12 18:23:00 2019 +++ pkgsrc/pkgtools/url2pkg/files/Build.pm Thu Sep 12 18:23:00 2019 @@ -0,0 +1,89 @@ +# -*-perl-*- + +# Copyright (c) 2019 The NetBSD Foundation, Inc. +# All rights reserved. +# +# This code is derived from software contributed to The NetBSD Foundation +# by Roland Illig. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# This is a drop-in replacement for the Module::Build Perl module. Instead +# of generating a Makefile, it extracts the dependency information for +# other Perl modules. It is used to simplify the generation of pkgsrc +# packages for Perl modules. + +package Module::Build; + +use strict; +use warnings FATAL => 'all'; + +our $VERSION = 0.4224; # from Perl-5.30 + +sub url2pkg_write_dependencies($$$) { + my ($self, $varname, $key) = @_; + return unless defined $self->{$key}; + + my $deps = $self->{$key}; + foreach my $item (keys %$deps) { + my $pkgbase = "p5-$item" =~ s/::/-/gr; + printf("%s\t%s>=%s\n", $varname, $pkgbase, $deps->{$item}); + } +} + +sub url2pkg_write_var($$$) { + my ($self, $varname, $value) = @_; + return unless defined($value) && $value ne ""; + printf("var\t%s\t%s\n", $varname, $value); +} + +sub VERSION($$) { + my ($class, $min_version) = @_; + return $min_version <= $VERSION; +} + +sub new(%) { + my ($class, %args) = @_; + my $self = \%args; + bless($self, $class); + return $self; +} + +sub create_build_script($) { + my ($self) = @_; + + $self->url2pkg_write_dependencies("BUILD_DEPENDS", "configure_requires"); + $self->url2pkg_write_dependencies("BUILD_DEPENDS", "build_requires"); + $self->url2pkg_write_dependencies("DEPENDS", "requires"); + $self->url2pkg_write_dependencies("TEST_DEPENDS", "test_requires"); + $self->url2pkg_write_dependencies("#RECOMMENDS", "recommends"); + + $self->url2pkg_write_var("COMMENT", $self->{"dist_abstract"}); + my $license = $self->{"license"} || ""; + if ($license eq "perxl") { + $self->url2pkg_write_var("LICENSE", "\${PERL5_LICENSE}"); + } elsif ($license ne "") { + $self->url2pkg_write_var("#LICENSE", "# TODO: $license (from Build.PL)") + } +} + +1; --_----------=_1568312580275970--