Subject: | patchlevel.h modified when no changes are made to perl sources |
I ran into this problem while trying to build perl blead sources using perlbrew.
- https://metacpan.org/pod/distribution/App-perlbrew/bin/perlbrew
- http://perlbrew.pl/
During building perl, perlbrew calls/invokes some functionality from Devel::PatchPerl which in turn modifies patchlevel.h in the top directory of perl blead sources(although no other source files are ever touched). This causes two tests to fail in porting/authors.t and porting/pending-author.t.
Mohammed El-Afifi <mohammed_elafifi@yahoo.com> not found in AUTHORS
porting/authors.t .................................................
Failed 1/991 subtests
Mohammed El-Afifi <mohammed_elafifi@yahoo.com> not found in AUTHORS
porting/pending-author.t ..........................................
Failed 1/1 subtests
The user name and email used are those reflected from my git user.name and user.email configuration attributes. First-time contributors and people who just want to build perl from sources are expected to get these failures as their names won't typically exist in AUTHORS file(in the top-level directory of perl sources).
After a short discussion on #p5p IRC channel, I was led to believe that the problem lies partly in Devel::PatchPerl which modified patchlevel.h without a real need and partly in perlbrew calling Devel::PatchPerl in the first place. I'm going to open an issue for the latter on perlbrew issue tracker. The problem doesn't occur if I build perl blead sources manually as described at http://www.cpan.org/src/README.html.
I may be wrong about my conclusion but I'd like to know if this can be handled in Devel::PatchPerl or if it's solely the caller's responsibility(perlbrew here).
steps to reproduce:
1- Checkout perl blead sources.
git clone git://perl5.git.perl.org/perl.git
2- Make sure perlbrew is installed. In my case I used my linux distro package manager.
sudo dnf install perl-Devel-REPL
3- Prepare perlbrew environment.
perlbrew init
4- Build and install perl from checked-out blead sources.
perlbrew install <path-to-perl-checkout>
5- While waiting for perl build and installation to finish, inspect changes in perl checkout.
chdir <path-to-perl-checkout>
git status
You should see perllevel.h marked as modified. Inspect its changes; it should look like:
diff --git a/patchlevel.h b/patchlevel.h
index dd28c67..d9ce11e 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -137,6 +137,7 @@ static const char * const local_patches[] = {
,"uncommitted-changes"
#endif
PERL_GIT_UNPUSHED_COMMITS /* do not remove this line */
+ ,"Devel::PatchPerl 1.38"
,NULL
};
6- Later when perbrew finishes, it'll display a message about build not successful pointing to a log that can be consulted. Inspecting the log will show the failing tests shown earlier.
information related to the environment:
- Distribution name and version: Devel-PatchPerl-1.38
- Perl version: perl 5, version 23, subversion 5 (v5.23.5 (v5.23.4-92-ge4b57cf*))
- Operating System vendor and version: Linux dhcppc 4.2.3-200.fc22.x86_64 #1 SMP Thu Oct 8 03:23:55 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux