From ebdf1bf1b396bdb99e8d177ec187e0421afcd52c Mon Sep 17 00:00:00 2001 From: Niklas Holm Date: Fri, 30 Mar 2018 08:11:08 +0200 Subject: [PATCH] Update perl to v5.26.1 (#3498) * mingw-w64-perl: Fix packaging failure Fixes issue #3397 If $pkgbase is set, $pkgdir gets defaulted to $pkgdirbase/$pkgbase rather than $pkgdirbase/$pkgname during build(). Not a really bug in makepkg because $pkgdir is only officially supported in package() according to the manpage. * mingw-w64-perl: Rewrite recipe - Don't duplicate patch list. - Remove rsync call; it adds a build dependency and unnecessarily copies data that is soon purged anyway. If one wants to keep a local copy and build with --noextract, use a local development tree instead. - Add SRCURI variable to recipe in case one wants to override the source from which to build, for example a local development tree. - Keep old builds until explicitly removed (i.e. with the -C flag). - Use grep and xargs to find and replace all path-patterns rather than using many individual invocations and hardcoded paths (less maintenance). Also saves a list of the modified files for the install script to pick up. - Add check() to run "make test". - Delete unnecessary files before packaging. - Add profile.d entry to build a PATH that doesn't interfere with MSYS's default perl installation based on built configuration. - Install site and vendor dirs based on built configuration. * mingw-w64-perl: Update to v5.26.1 - Rebased patches onto vanilla perl v5.26.1 source tree - Enable parallel build and tests * mingw-w64-perl: Fix runperl Exclude runperl from 003-replace-batch-scripts-with-bare-perl.patch, as it's only useful if converted to a .bat file (RTFM) (issue #3167). * mingw-w64-perl: Switch to GNU make Reasons: - dmake is no longer maintained and not even recommended by the author. - GNU make is faster. - One less test failure. Changes: - Add changes to GNUmakefile to patchset. - Set mingw32-make as default make instead of dmake. * mingw-w64-perl: Unify relocation - Keep relocation code in one place and avoid hardcoded paths. - Don't replace ':' with '|', see https://tools.ietf.org/html/rfc8089#appendix-E.2.2 * mingw-w64-perl: Rename cpan home Rename cpan home dir (~/.cpan) to .cpan-w32/w64 to avoid clash with msys2 perl installation. To avoid multiple patches, replace the directory name at build() with a suitable value depending on CARCH. * mingw-w64-perl: Add provides packaging data * mingw-w64-perl: Seperate core/site/vendor dirs - Put core, site, and vendor scripts and modules as well as site and vendor binaries in seperate directories. Core binaries still goes in $prefix/bin. - Remove patch hunk that sets libpth to INST_LIB. Seems strange. - Add the maintainer script which was written to configure the directories for binaries, scripts, libraries etc. * mingw-w64-perl: Add manpages to package The Windows makefile(s) by default only builds html documentation. With this patch it builds manual pages as well. * mingw-w64-perl: Package docs seperately - Package manpages and html documentation seperately in perl-doc as they are quite large and many users may not want them. - Generate the install scripts for each package from a template, as they are very similiar, instead of duplicating code. --- .../001-fhs-directory-structure.patch | 553 +++++++++++++----- .../002-relocate-html-documentation.patch | 33 +- ...replace-batch-scripts-with-bare-perl.patch | 176 ++++-- .../004-fix-cpan-external-programs.patch | 22 +- mingw-w64-perl/005-rename-cpan-home.patch | 12 + mingw-w64-perl/006-generate-manpages.patch | 64 ++ mingw-w64-perl/PKGBUILD | 437 +++++++++++--- mingw-w64-perl/perl-i686.install | 33 -- mingw-w64-perl/perl-x86_64.install | 33 -- mingw-w64-perl/perlinstall.in | 22 + mingw-w64-perl/perlprofile.in | 32 + mingw-w64-perl/setup_perl_dirs.sh | 172 ++++++ 12 files changed, 1218 insertions(+), 371 deletions(-) create mode 100644 mingw-w64-perl/005-rename-cpan-home.patch create mode 100644 mingw-w64-perl/006-generate-manpages.patch delete mode 100644 mingw-w64-perl/perl-i686.install delete mode 100644 mingw-w64-perl/perl-x86_64.install create mode 100644 mingw-w64-perl/perlinstall.in create mode 100644 mingw-w64-perl/perlprofile.in create mode 100644 mingw-w64-perl/setup_perl_dirs.sh diff --git a/mingw-w64-perl/001-fhs-directory-structure.patch b/mingw-w64-perl/001-fhs-directory-structure.patch index aefc20d78c..89bb79097e 100644 --- a/mingw-w64-perl/001-fhs-directory-structure.patch +++ b/mingw-w64-perl/001-fhs-directory-structure.patch @@ -1,133 +1,277 @@ -diff -aur old/win32/config.gc 001/win32/config.gc ---- old/win32/config.gc 2014-09-14 08:31:07.000000000 -0300 -+++ 001/win32/config.gc 2015-01-05 20:37:05.264648400 -0200 -@@ -23,8 +23,8 @@ +diff --git old/win32/GNUmakefile 001/win32/GNUmakefile +index fa04880..b149168 100644 +--- old/win32/GNUmakefile ++++ 001/win32/GNUmakefile +@@ -47,6 +47,7 @@ endif + # + INST_DRV := c: + INST_TOP := $(INST_DRV)\perl ++INST_DOC := $(INST_TOP) + + # + # Uncomment if you want to build a 32-bit Perl using a 32-bit compiler +@@ -63,7 +64,15 @@ INST_TOP := $(INST_DRV)\perl + # versioned installation can be obtained by setting INST_TOP above to a + # path that includes an arbitrary version string. + # +-#INST_VER := \5.26.1 ++INST_VER := \5.26.1 ++INST_VER_PERL := \perl-5.26.1 ++ ++INST_SITE_VER := $(INST_VER) ++#INST_VEND_VER := $(INST_VER) ++#INST_CORE_VER := $(INST_VER) ++INST_SITE_VER_PERL := $(INST_VER_PERL) ++#INST_VEND_VER_PERL := $(INST_VER_PERL) ++#INST_CORE_VER_PERL := $(INST_VER_PERL) + + # + # Comment this out if you DON'T want your perl installation to have +@@ -511,12 +520,12 @@ CPANDIR = ..\cpan + PODDIR = ..\pod + HTMLDIR = .\html + +-INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin +-INST_BIN = $(INST_SCRIPT)$(INST_ARCH) +-INST_LIB = $(INST_TOP)$(INST_VER)\lib +-INST_ARCHLIB = $(INST_LIB)$(INST_ARCH) ++INST_SCRIPT = $(INST_TOP)\bin\core_perl$(INST_CORE_VER) ++INST_BIN = $(INST_TOP)\bin$(INST_CORE_VER_PERL)$(INST_ARCH) ++INST_LIB = $(INST_TOP)\lib\perl5\core_perl$(INST_CORE_VER) ++INST_ARCHLIB = $(INST_TOP)\lib\perl5\core_perl$(INST_CORE_VER)$(INST_ARCH) + INST_COREDIR = $(INST_ARCHLIB)\CORE +-INST_HTML = $(INST_TOP)$(INST_VER)\html ++INST_HTML = $(INST_DOC)\share\doc\perl5$(INST_CORE_VER) + + # + # Programs to compile, build .lib files and link +@@ -1143,8 +1152,15 @@ DYNALOADER = ..\DynaLoader$(o) + # -- BKS 10-17-1999 + CFG_VARS = \ + "INST_TOP=$(INST_TOP)" \ ++ "INST_DOC=$(INST_DOC)" \ + "INST_VER=$(INST_VER)" \ + "INST_ARCH=$(INST_ARCH)" \ ++ "INST_SITE_VER=$(INST_SITE_VER)" \ ++ "INST_VEND_VER=$(INST_VEND_VER)" \ ++ "INST_CORE_VER=$(INST_CORE_VER)" \ ++ "INST_SITE_VER_PERL=$(INST_SITE_VER_PERL)" \ ++ "INST_VEND_VER_PERL=$(INST_VEND_VER_PERL)" \ ++ "INST_CORE_VER_PERL=$(INST_CORE_VER_PERL)" \ + "archname=$(ARCHNAME)" \ + "cc=$(CC)" \ + "ld=$(LINK32)" \ +@@ -1689,7 +1705,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile + $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q .. + + ..\pod\perltoc.pod: $(PERLEXE) $(PERLDLL) Extensions Extensions_nonxs Extensions_normalize utils +- $(PERLEXE) -f ..\pod\buildtoc -q ++ $(PERLEXE) -I..\lib -Ilib -f ..\pod\buildtoc -q + + # Note that the pod cleanup in this next section is parsed (and regenerated + # by pod/buildtoc so please check that script before making changes here +diff --git old/win32/config.gc 001/win32/config.gc +index 8a50293..1f6b770 100644 +--- old/win32/config.gc ++++ 001/win32/config.gc +@@ -23,8 +23,8 @@ api_subversion='~PERL_API_SUBVERSION~' api_version='~PERL_API_VERSION~' api_versionstring='~PERL_API_REVISION~.~PERL_API_VERSION~.~PERL_API_SUBVERSION~' ar='~ARCHPREFIX~ar' -archlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~' -archlibexp='~INST_TOP~~INST_VER~\lib~INST_ARCH~' -+archlib='~INST_TOP~\lib\perl5~INST_VER~\core_perl~INST_ARCH~' -+archlibexp='~INST_TOP~\lib\perl5~INST_VER~\core_perl~INST_ARCH~' ++archlib='~INST_TOP~\lib\perl5\core_perl~INST_CORE_VER~~INST_ARCH~' ++archlibexp='~INST_TOP~\lib\perl5\core_perl~INST_CORE_VER~~INST_ARCH~' archname64='' archname='MSWin32' archobjs='' -@@ -32,8 +32,8 @@ +@@ -32,8 +32,8 @@ asctime_r_proto='0' awk='awk' baserev='5' bash='' -bin='~INST_TOP~~INST_VER~\bin~INST_ARCH~' -binexp='~INST_TOP~~INST_VER~\bin~INST_ARCH~' -+bin='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~' -+binexp='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~' ++bin='~INST_TOP~\bin~INST_CORE_VER_PERL~~INST_ARCH~' ++binexp='~INST_TOP~\bin~INST_CORE_VER_PERL~~INST_ARCH~' bison='' bootstrap_charset='undef' byacc='byacc' -@@ -515,9 +515,9 @@ +@@ -49,8 +49,8 @@ ccflags_uselargefiles='' + ccname='~cc~' + ccsymbols='' + ccversion='' +-cf_by='nobody' +-cf_email='nobody@no.where.net' ++cf_by=' ' ++cf_email=' ' + cf_time='' + charbits='8' + chgrp='' +@@ -600,10 +600,10 @@ d_uselocale='undef' d_usleep='undef' d_usleepproto='undef' d_ustat='undef' -d_vendorarch='undef' -+d_vendorarch='define' - d_vendorbin='undef' +-d_vendorbin='undef' -d_vendorlib='undef' +-d_vendorscript='undef' ++d_vendorarch='define' ++d_vendorbin='define' +d_vendorlib='define' - d_vendorscript='undef' ++d_vendorscript='define' d_vfork='undef' d_void_closedir='undef' -@@ -719,33 +719,33 @@ + d_voidsig='define' +@@ -707,10 +707,10 @@ h_fcntl='false' + h_sysfile='true' + hint='recommended' + hostcat='ypcat hosts' +-html1dir=' ' +-html1direxp='' +-html3dir=' ' +-html3direxp='' ++html1dir='~INST_DOC~\share\doc\perl5\core_perl~INST_CORE_VER~' ++html1direxp='~INST_DOC~\share\doc\perl5\core_perl~INST_CORE_VER~' ++html3dir='~INST_DOC~\share\doc\perl5\core_perl~INST_CORE_VER~' ++html3direxp='~INST_DOC~\share\doc\perl5\core_perl~INST_CORE_VER~' + i16size='2' + i16type='short' + i32size='4' +@@ -812,41 +812,41 @@ i_varhdr='varargs.h' + i_vfork='undef' + i_xlocale='undef' + ignore_versioned_solibs='' +-inc_version_list='' ++inc_version_list=' ' + inc_version_list_init='0' incpath='' inews='' initialinstalllocation='' -installarchlib='~INST_TOP~~INST_VER~\lib~INST_ARCH~' -installbin='~INST_TOP~~INST_VER~\bin~INST_ARCH~' -+installarchlib='~INST_TOP~\lib\perl5~INST_VER~\core_perl~INST_ARCH~' -+installbin='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~' - installhtml1dir='' - installhtml3dir='' +-installhtml1dir='' +-installhtml3dir='' -installhtmldir='~INST_TOP~~INST_VER~\html' -installhtmlhelpdir='~INST_TOP~~INST_VER~\htmlhelp' -installman1dir='~INST_TOP~~INST_VER~\man\man1' -installman3dir='~INST_TOP~~INST_VER~\man\man3' -+installhtmldir='~INST_TOP~\share\doc\perl5~INST_VER~' -+installhtmlhelpdir='~INST_TOP~\share\doc\perl5~INST_VER~\htmlhelp' -+installman1dir='~INST_TOP~\share\man\man1~INST_VER_PERL~' -+installman3dir='~INST_TOP~\share\man\man3~INST_VER_PERL~' - installprefix='~INST_TOP~~INST_VER~' - installprefixexp='~INST_TOP~~INST_VER~' +-installprefix='~INST_TOP~~INST_VER~' +-installprefixexp='~INST_TOP~~INST_VER~' -installprivlib='~INST_TOP~~INST_VER~\lib' -+installprivlib='~INST_TOP~\lib\perl5~INST_VER~\core_perl' - installscript='~INST_TOP~~INST_VER~\bin' +-installscript='~INST_TOP~~INST_VER~\bin' -installsitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~' -installsitebin='~INST_TOP~~INST_VER~\bin~INST_ARCH~' -+installsitearch='~INST_TOP~\lib\perl5~INST_VER~\site_perl~INST_ARCH~' -+installsitebin='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~' - installsitehtml1dir='' - installsitehtml3dir='' +-installsitehtml1dir='' +-installsitehtml3dir='' -installsitelib='~INST_TOP~\site~INST_VER~\lib' -+installsitelib='~INST_TOP~\lib\perl5~INST_VER~\site_perl' - installsiteman1dir='' - installsiteman3dir='' - installsitescript='' - installstyle='lib' +-installsiteman1dir='' +-installsiteman3dir='' +-installsitescript='' +-installstyle='lib' ++installarchlib='~INST_TOP~\lib\perl5\core_perl~INST_CORE_VER~~INST_ARCH~' ++installbin='~INST_TOP~\bin~INST_CORE_VER_PERL~~INST_ARCH~' ++installhtml1dir='~INST_DOC~\share\doc\perl5\core_perl~INST_CORE_VER~' ++installhtml3dir='~INST_DOC~\share\doc\perl5\core_perl~INST_CORE_VER~' ++installhtmldir='~INST_DOC~\share\doc\perl5~INST_CORE_VER~' ++installhtmlhelpdir='~INST_DOC~\share\doc\perl5~INST_CORE_VER~\htmlhelp' ++installman1dir='~INST_DOC~\share\man\man1' ++installman3dir='~INST_DOC~\share\man\man3' ++installprefix='~INST_TOP~' ++installprefixexp='~INST_TOP~' ++installprivlib='~INST_TOP~\lib\perl5\core_perl~INST_CORE_VER~' ++installscript='~INST_TOP~\bin\core_perl~INST_CORE_VER~' ++installsitearch='~INST_TOP~\lib\perl5\site_perl~INST_SITE_VER~~INST_ARCH~' ++installsitebin='~INST_TOP~\bin\site_perl~INST_SITE_VER~~INST_ARCH~' ++installsitehtml1dir='~INST_DOC~\share\doc\perl5\site_perl~INST_SITE_VER~' ++installsitehtml3dir='~INST_DOC~\share\doc\perl5\site_perl~INST_SITE_VER~' ++installsitelib='~INST_TOP~\lib\perl5\site_perl~INST_SITE_VER~' ++installsiteman1dir='~INST_DOC~\local\man\man1' ++installsiteman3dir='~INST_DOC~\local\man\man3' ++installsitescript='~INST_TOP~\bin\site_perl~INST_SITE_VER~' ++installstyle='lib/perl5' installusrbinperl='undef' -installvendorarch='' -installvendorbin='' -+installvendorarch='~INST_TOP~\lib\perl5~INST_VER~\vendor_perl~INST_ARCH~' -+installvendorbin='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~' - installvendorhtml1dir='' - installvendorhtml3dir='' +-installvendorhtml1dir='' +-installvendorhtml3dir='' -installvendorlib='' -+installvendorlib='~INST_TOP~\lib\perl5~INST_VER~\vendor_perl' - installvendorman1dir='' - installvendorman3dir='' - installvendorscript='' -@@ -765,7 +765,7 @@ - lib_ext='.a' - libc='libmsvcrt.a' - libperl='libperl.a' --libpth='' -+libpth='~INST_TOP~\lib\perl5~INST_VER~\core_perl' - libs='' - libsdirs='' - libsfiles='' -@@ -800,11 +800,11 @@ +-installvendorman1dir='' +-installvendorman3dir='' +-installvendorscript='' ++installvendorarch='~INST_TOP~\lib\perl5\vendor_perl~INST_VEND_VER~~INST_ARCH~' ++installvendorbin='~INST_TOP~\bin\vendor_perl~INST_VEND_VER~~INST_ARCH~' ++installvendorhtml1dir='~INST_DOC~\share\doc\perl5\vendor_perl~INST_VEND_VER~' ++installvendorhtml3dir='~INST_DOC~\share\doc\perl5\vendor_perl~INST_VEND_VER~' ++installvendorlib='~INST_TOP~\lib\perl5\vendor_perl~INST_VEND_VER~' ++installvendorman1dir='~INST_DOC~\share\man\man1' ++installvendorman3dir='~INST_DOC~\share\man\man3' ++installvendorscript='~INST_TOP~\bin\vendor_perl~INST_VEND_VER~' + intsize='4' + issymlink='' + ivdformat='"ld"' +@@ -899,12 +899,12 @@ make_set_make='#' mallocobj='malloc.o' mallocsrc='malloc.c' malloctype='void *' -man1dir='~INST_TOP~~INST_VER~\man\man1' -man1direxp='~INST_TOP~~INST_VER~\man\man1' -+man1dir='~INST_TOP~\share\man\man1~INST_VER_PERL~' -+man1direxp='~INST_TOP~\share\man\man1~INST_VER_PERL~' - man1ext='1' +-man1ext='1' -man3dir='~INST_TOP~~INST_VER~\man\man3' -man3direxp='~INST_TOP~~INST_VER~\man\man3' -+man3dir='~INST_TOP~\share\man\man3~INST_VER_PERL~' -+man3direxp='~INST_TOP~\share\man\man3~INST_VER_PERL~' - man3ext='3' +-man3ext='3' ++man1dir='~INST_DOC~\share\man\man1' ++man1direxp='~INST_DOC~\share\man\man1' ++man1ext='1perl' ++man3dir='~INST_DOC~\share\man\man3' ++man3direxp='~INST_DOC~\share\man\man3' ++man3ext='3perl' mips_type='' mistrustnm='' -@@ -858,7 +858,7 @@ + mkdir='mkdir' +@@ -946,7 +946,7 @@ optimize='-O2' + orderlib='false' + osname='MSWin32' + osvers='4.0' +-otherlibdirs='' ++otherlibdirs=' ' + package='perl5' + pager='more /e' + passcat='' +@@ -956,9 +956,9 @@ perl5='' + perl='perl' + perl_patchlevel='~PERL_PATCHLEVEL~' perl_static_inline='static __inline__' - perladmin='' +-perladmin='' ++perladmin=' ' perllibs='~libs~' -perlpath='~INST_TOP~~INST_VER~\bin~INST_ARCH~\perl.exe' -+perlpath='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~\perl.exe' ++perlpath='~INST_TOP~\bin~INST_CORE_VER_PERL~~INST_ARCH~\perl.exe' pg='' phostname='hostname' pidtype='int' -@@ -867,8 +867,8 @@ +@@ -967,8 +967,8 @@ pmake='' pr='' prefix='~INST_TOP~' prefixexp='~INST_TOP~' -privlib='~INST_TOP~~INST_VER~\lib' -privlibexp='~INST_TOP~~INST_VER~\lib' -+privlib='~INST_TOP~\lib\perl5~INST_VER~\core_perl' -+privlibexp='~INST_TOP~\lib\perl5~INST_VER~\core_perl' ++privlib='~INST_TOP~\lib\perl5\core_perl~INST_CORE_VER~' ++privlibexp='~INST_TOP~\lib\perl5\core_perl~INST_CORE_VER~' procselfexe='' prototype='define' ptrsize='4' -@@ -934,17 +934,17 @@ +@@ -1006,8 +1006,8 @@ sPRIu64='"lu"' + sPRIx64='"lx"' + sSCNfldbl='"Lf"' + sched_yield='' +-scriptdir='~INST_TOP~~INST_VER~\bin' +-scriptdirexp='~INST_TOP~~INST_VER~\bin' ++scriptdir='~INST_TOP~\bin\core_perl~INST_CORE_VER~' ++scriptdirexp='~INST_TOP~\bin\core_perl~INST_CORE_VER~' + sed='sed' + seedfunc='Perl_drand48_init' + selectminbits='32' +@@ -1034,25 +1034,25 @@ sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20 sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0' sig_size='27' signal_t='void' @@ -135,23 +279,53 @@ diff -aur old/win32/config.gc 001/win32/config.gc -sitearchexp='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~' -sitebin='~INST_TOP~\site~INST_VER~\bin~INST_ARCH~' -sitebinexp='~INST_TOP~\site~INST_VER~\bin~INST_ARCH~' -+sitearch='~INST_TOP~\lib\perl5~INST_VER~\site_perl~INST_ARCH~' -+sitearchexp='~INST_TOP~\lib\perl5~INST_VER~\site_perl~INST_ARCH~' -+sitebin='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~' -+sitebinexp='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~' - sitehtml1dir='' - sitehtml1direxp='' - sitehtml3dir='' - sitehtml3direxp='' +-sitehtml1dir='' +-sitehtml1direxp='' +-sitehtml3dir='' +-sitehtml3direxp='' -sitelib='~INST_TOP~\site~INST_VER~\lib' -+sitelib='~INST_TOP~\lib\perl5~INST_VER~\site_perl' - sitelib_stem='' +-sitelib_stem='' -sitelibexp='~INST_TOP~\site~INST_VER~\lib' -+sitelibexp='~INST_TOP~\lib\perl5~INST_VER~\site_perl' - siteman1dir='' - siteman1direxp='' - siteman3dir='' -@@ -1054,17 +1054,17 @@ +-siteman1dir='' +-siteman1direxp='' +-siteman3dir='' +-siteman3direxp='' +-siteprefix='~INST_TOP~\site~INST_VER~' +-siteprefixexp='~INST_TOP~\site~INST_VER~' +-sitescript='' +-sitescriptexp='' ++sitearch='~INST_TOP~\lib\perl5\site_perl~INST_SITE_VER~~INST_ARCH~' ++sitearchexp='~INST_TOP~\lib\perl5\site_perl~INST_SITE_VER~~INST_ARCH~' ++sitebin='~INST_TOP~\bin\site_perl~INST_SITE_VER~~INST_ARCH~' ++sitebinexp='~INST_TOP~\bin\site_perl~INST_SITE_VER~~INST_ARCH~' ++sitehtml1dir='~INST_DOC~\share\doc\perl5\site_perl~INST_SITE_VER~' ++sitehtml1direxp='~INST_DOC~\share\doc\perl5\site_perl~INST_SITE_VER~' ++sitehtml3dir='~INST_DOC~\share\doc\perl5\site_perl~INST_SITE_VER~' ++sitehtml3direxp='~INST_DOC~\share\doc\perl5\site_perl~INST_SITE_VER~' ++sitelib='~INST_TOP~\lib\perl5\site_perl~INST_SITE_VER~' ++sitelib_stem='~INST_TOP~\lib\perl5\site_perl' ++sitelibexp='~INST_TOP~\lib\perl5\site_perl~INST_SITE_VER~' ++siteman1dir='~INST_DOC~\local\man\man1' ++siteman1direxp='~INST_DOC~\local\man\man1' ++siteman3dir='~INST_DOC~\local\man\man3' ++siteman3direxp='~INST_DOC~\local\man\man3' ++siteprefix='~INST_TOP~' ++siteprefixexp='~INST_TOP~' ++sitescript='~INST_TOP~\bin\site_perl~INST_SITE_VER~' ++sitescriptexp='~INST_TOP~\bin\site_perl~INST_SITE_VER~' + sizesize='4' + sizetype='size_t' + sleep='' +@@ -1145,7 +1145,7 @@ useshrplib='true' + usesitecustomize='undef' + usesocks='undef' + usethreads='undef' +-usevendorprefix='undef' ++usevendorprefix='define' + usevfork='false' + usrinc='/usr/include' + uuname='' +@@ -1156,25 +1156,25 @@ uvtype='unsigned long' uvuformat='"lu"' uvxformat='"lx"' vaproto='undef' @@ -159,86 +333,158 @@ diff -aur old/win32/config.gc 001/win32/config.gc -vendorarchexp='' -vendorbin='' -vendorbinexp='' -+vendorarch='~INST_TOP~\lib\perl5~INST_VER~\vendor_perl~INST_ARCH~' -+vendorarchexp='~INST_TOP~\lib\perl5~INST_VER~\vendor_perl~INST_ARCH~' -+vendorbin='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~' -+vendorbinexp='~INST_TOP~\bin~INST_VER_PERL~~INST_ARCH~' - vendorhtml1dir=' ' - vendorhtml1direxp='' - vendorhtml3dir=' ' - vendorhtml3direxp='' +-vendorhtml1dir=' ' +-vendorhtml1direxp='' +-vendorhtml3dir=' ' +-vendorhtml3direxp='' -vendorlib='' -+vendorlib='~INST_TOP~\lib\perl5~INST_VER~\vendor_perl' - vendorlib_stem='' +-vendorlib_stem='' -vendorlibexp='' -+vendorlibexp='~INST_TOP~\lib\perl5~INST_VER~\vendor_perl' - vendorman1dir=' ' - vendorman1direxp='' - vendorman3dir=' ' -diff -aur old/win32/makefile.mk 001/win32/makefile.mk ---- old/win32/makefile.mk 2014-09-14 08:31:07.000000000 -0300 -+++ 001/win32/makefile.mk 2015-01-05 20:37:05.274414000 -0200 -@@ -44,6 +44,7 @@ +-vendorman1dir=' ' +-vendorman1direxp='' +-vendorman3dir=' ' +-vendorman3direxp='' +-vendorprefix='' +-vendorprefixexp='' +-vendorscript='' +-vendorscriptexp='' ++vendorarch='~INST_TOP~\lib\perl5\vendor_perl~INST_VEND_VER~~INST_ARCH~' ++vendorarchexp='~INST_TOP~\lib\perl5\vendor_perl~INST_VEND_VER~~INST_ARCH~' ++vendorbin='~INST_TOP~\bin\vendor_perl~INST_VEND_VER~~INST_ARCH~' ++vendorbinexp='~INST_TOP~\bin\vendor_perl~INST_VEND_VER~~INST_ARCH~' ++vendorhtml1dir='~INST_DOC~\share\doc\perl5\vendor_perl~INST_VEND_VER~' ++vendorhtml1direxp='~INST_DOC~\share\doc\perl5\vendor_perl~INST_VEND_VER~' ++vendorhtml3dir='~INST_DOC~\share\doc\perl5\vendor_perl~INST_VEND_VER~' ++vendorhtml3direxp='~INST_DOC~\share\doc\perl5\vendor_perl~INST_VEND_VER~' ++vendorlib='~INST_TOP~\lib\perl5\vendor_perl~INST_VEND_VER~' ++vendorlib_stem='~INST_TOP~\lib\perl5\vendor_perl' ++vendorlibexp='~INST_TOP~\lib\perl5\vendor_perl~INST_VEND_VER~' ++vendorman1dir='~INST_DOC~\share\man\man1' ++vendorman1direxp='~INST_DOC~\share\man\man1' ++vendorman3dir='~INST_DOC~\share\man\man3' ++vendorman3direxp='~INST_DOC~\share\man\man3' ++vendorprefix='~INST_TOP~' ++vendorprefixexp='~INST_TOP~' ++vendorscript='~INST_TOP~\bin\vendor_perl~INST_VEND_VER~' ++vendorscriptexp='~INST_TOP~\bin\vendor_perl~INST_VEND_VER~' + version='' + version_patchlevel_string='' + versiononly='undef' +diff --git old/win32/makefile.mk 001/win32/makefile.mk +index bbc9efc..a4c9017 100644 +--- old/win32/makefile.mk ++++ 001/win32/makefile.mk +@@ -28,6 +28,7 @@ + # + INST_DRV *= c: + INST_TOP *= $(INST_DRV)\perl ++INST_DOC *= $(INST_TOP) + + # + # Uncomment if you want to build a 32-bit Perl using a 32-bit compiler +@@ -44,7 +45,15 @@ INST_TOP *= $(INST_DRV)\perl + # versioned installation can be obtained by setting INST_TOP above to a # path that includes an arbitrary version string. # - #INST_VER *= \5.22.0 -+#INST_VER_PERL *= \perl-5.22.0 +-#INST_VER *= \5.26.1 ++INST_VER *= \5.26.1 ++INST_VER_PERL *= \perl-5.26.1 ++ ++INST_SITE_VER *= $(INST_VER) ++#INST_VEND_VER *= $(INST_VER) ++#INST_CORE_VER *= $(INST_VER) ++INST_SITE_VER_PERL *= $(INST_VER_PERL) ++#INST_VEND_VER_PERL *= $(INST_VER_PERL) ++#INST_CORE_VER_PERL *= $(INST_VER_PERL) # # Comment this out if you DON'T want your perl installation to have -@@ -403,10 +404,10 @@ - # - INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin - INST_BIN = $(INST_SCRIPT)$(INST_ARCH) +@@ -488,12 +497,12 @@ CPANDIR = ..\cpan + PODDIR = ..\pod + HTMLDIR = .\html + +-INST_SCRIPT = $(INST_TOP)$(INST_VER)\bin +-INST_BIN = $(INST_SCRIPT)$(INST_ARCH) -INST_LIB = $(INST_TOP)$(INST_VER)\lib -+INST_LIB = $(INST_TOP)$(INST_VER)\lib\perl5\core_perl - INST_ARCHLIB = $(INST_LIB)$(INST_ARCH) +-INST_ARCHLIB = $(INST_LIB)$(INST_ARCH) ++INST_SCRIPT = $(INST_TOP)\bin\core_perl$(INST_CORE_VER) ++INST_BIN = $(INST_TOP)\bin$(INST_CORE_VER_PERL)$(INST_ARCH) ++INST_LIB = $(INST_TOP)\lib\perl5\core_perl$(INST_CORE_VER) ++INST_ARCHLIB = $(INST_TOP)\lib\perl5\core_perl$(INST_CORE_VER)$(INST_ARCH) INST_COREDIR = $(INST_ARCHLIB)\CORE -INST_HTML = $(INST_TOP)$(INST_VER)\html -+INST_HTML = $(INST_TOP)$(INST_VER)\share\doc\perl5 ++INST_HTML = $(INST_DOC)\share\doc\perl5$(INST_CORE_VER) # # Programs to compile, build .lib files and link -@@ -951,7 +952,7 @@ - libs=$(LIBFILES:f) ~ \ - incpath=$(CCINCDIR) ~ \ - libperl=$(PERLIMPLIB:f) ~ \ -- libpth=$(CCLIBDIR);$(EXTRALIBDIRS) ~ \ -+ libpth=$(INST_LIB);$(EXTRALIBDIRS) ~ \ - libc=$(LIBC) ~ \ - make=dmake ~ \ - _o=$(o) ~ \ -@@ -1392,12 +1393,12 @@ - copy ..\README.vos ..\pod\perlvos.pod - copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5220delta.pod -- $(PERLEXE) $(PL2BAT) $(UTILS) -+ $(PERLEXE) -I..\lib $(PL2BAT) $(UTILS) - $(MINIPERL) -I..\lib ..\autodoc.pl .. +@@ -1100,8 +1109,15 @@ DYNALOADER = ..\DynaLoader$(o) + # -- BKS 10-17-1999 + CFG_VARS = \ + INST_TOP=$(INST_TOP) ~ \ ++ INST_DOC=$(INST_DOC) ~ \ + INST_VER=$(INST_VER) ~ \ + INST_ARCH=$(INST_ARCH) ~ \ ++ INST_SITE_VER=$(INST_SITE_VER) ~ \ ++ INST_VEND_VER=$(INST_VEND_VER) ~ \ ++ INST_CORE_VER=$(INST_CORE_VER) ~ \ ++ INST_SITE_VER_PERL=$(INST_SITE_VER_PERL) ~ \ ++ INST_VEND_VER_PERL=$(INST_VEND_VER_PERL) ~ \ ++ INST_CORE_VER_PERL=$(INST_CORE_VER_PERL) ~ \ + archname=$(ARCHNAME) ~ \ + cc=$(CC) ~ \ + ld=$(LINK32) ~ \ +@@ -1604,7 +1620,7 @@ utils: $(HAVEMINIPERL) ..\utils\Makefile $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q .. - ..\pod\perltoc.pod: $(PERLEXE) Extensions Extensions_nonxs + ..\pod\perltoc.pod: $(PERLEXE) $(PERLDLL) Extensions Extensions_nonxs Extensions_normalize utils - $(PERLEXE) -f ..\pod\buildtoc -q + $(PERLEXE) -I..\lib -Ilib -f ..\pod\buildtoc -q # Note that the pod cleanup in this next section is parsed (and regenerated # by pod/buildtoc so please check that script before making changes here -diff -aur old/win32/win32.c 001/win32/win32.c ---- old/win32/win32.c 2014-09-14 08:31:07.000000000 -0300 -+++ 001/win32/win32.c 2015-01-05 20:37:05.286132800 -0200 -@@ -373,7 +373,11 @@ - EXTERN_C char * - win32_get_privlib(const char *pl, STRLEN *const len) - { -+#ifdef PERL_IS_MINIPERL - char *stdlib = "lib"; -+#else -+ char *stdlib = "lib/perl5/core_perl"; -+#endif - char buffer[MAX_PATH+1]; - SV *sv = NULL; +diff --git old/win32/win32.c 001/win32/win32.c +index 2e82c53..528da6a 100644 +--- old/win32/win32.c ++++ 001/win32/win32.c +@@ -382,10 +382,36 @@ get_emd_part(SV **prev_pathp, STRLEN *const len, char *trailing_path, ...) + return NULL; + } -@@ -401,7 +405,11 @@ ++#define MSYS_PERL_VENDORLIB "lib/perl5/vendor_perl" ++#define MSYS_SITELIB "lib/perl5/site_perl" ++#define MSYS_PRIVLIB "lib/perl5/core_perl" ++ ++#ifndef PERL_VENDORLIB_NAME ++#ifdef PERL_IS_MINIPERL ++# define PERL_VENDORLIB_NAME "vendor" ++#else ++# define PERL_VENDORLIB_NAME MSYS_PERL_VENDORLIB ++#endif ++#endif ++#ifndef SITELIB_NAME ++#ifdef PERL_IS_MINIPERL ++# define SITELIB_NAME "site" ++#else ++# define SITELIB_NAME MSYS_SITELIB ++#endif ++#endif ++#ifndef PRIVLIB_NAME ++#ifdef PERL_IS_MINIPERL ++# define PRIVLIB_NAME "lib" ++#else ++# define PRIVLIB_NAME MSYS_PRIVLIB ++#endif ++#endif ++ + EXTERN_C char * + win32_get_privlib(WIN32_NO_REGISTRY_M_(const char *pl) STRLEN *const len) + { +- char *stdlib = "lib"; ++ char *stdlib = PRIVLIB_NAME; + SV *sv = NULL; + #ifndef WIN32_NO_REGISTRY + char buffer[MAX_PATH+1]; +@@ -419,7 +445,11 @@ win32_get_xlib(const char *pl, WIN32_NO_REGISTRY_M_(const char *xlib) /* $xlib .= * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/$libname/$]/lib"; */ @@ -249,8 +495,8 @@ diff -aur old/win32/win32.c 001/win32/win32.c +#endif (void)get_emd_part(&sv1, NULL, pathstr, ARCHNAME, "bin", pl, NULL); - /* $HKCU{$xlib} || $HKLM{$xlib} . ---; */ -@@ -409,7 +417,11 @@ + #ifndef WIN32_NO_REGISTRY +@@ -429,7 +459,11 @@ win32_get_xlib(const char *pl, WIN32_NO_REGISTRY_M_(const char *xlib) /* $xlib .= * ";$EMD/" . ((-d $EMD/../../../$]) ? "../../.." : "../.."). "/$libname/lib"; */ @@ -262,23 +508,18 @@ diff -aur old/win32/win32.c 001/win32/win32.c (void)get_emd_part(&sv2, NULL, pathstr, ARCHNAME, "bin", pl, NULL); if (!sv1 && !sv2) -@@ -430,11 +442,19 @@ +@@ -450,13 +484,9 @@ win32_get_xlib(const char *pl, WIN32_NO_REGISTRY_M_(const char *xlib) EXTERN_C char * win32_get_sitelib(const char *pl, STRLEN *const len) { -+#ifdef PERL_IS_MINIPERL - return win32_get_xlib(pl, "sitelib", "site", len); -+#else -+ return win32_get_xlib(pl, "sitelib", "lib/perl5/site_perl", len); -+#endif +- return win32_get_xlib(pl, WIN32_NO_REGISTRY_M_("sitelib") "site", len); ++ return win32_get_xlib(pl, WIN32_NO_REGISTRY_M_("sitelib") SITELIB_NAME, len); } - #ifndef PERL_VENDORLIB_NAME -+#ifdef PERL_IS_MINIPERL - # define PERL_VENDORLIB_NAME "vendor" -+#else -+# define PERL_VENDORLIB_NAME "lib/perl5/vendor_perl" -+#endif - #endif - +-#ifndef PERL_VENDORLIB_NAME +-# define PERL_VENDORLIB_NAME "vendor" +-#endif +- EXTERN_C char * + win32_get_vendorlib(const char *pl, STRLEN *const len) + { diff --git a/mingw-w64-perl/002-relocate-html-documentation.patch b/mingw-w64-perl/002-relocate-html-documentation.patch index 384cffd4b0..21e89e08a5 100644 --- a/mingw-w64-perl/002-relocate-html-documentation.patch +++ b/mingw-w64-perl/002-relocate-html-documentation.patch @@ -1,13 +1,28 @@ -diff -aur 001/win32/makefile.mk 002/win32/makefile.mk ---- 001/win32/makefile.mk 2015-01-05 20:37:05.274414000 -0200 -+++ 002/win32/makefile.mk 2015-01-05 20:37:54.890625000 -0200 -@@ -1349,7 +1349,7 @@ +diff --git 001/win32/GNUmakefile 002/win32/GNUmakefile +index b149168..9c6d629 100644 +--- 001/win32/GNUmakefile ++++ 002/win32/GNUmakefile +@@ -1656,7 +1656,7 @@ endif - doc: $(PERLEXE) ..\pod\perltoc.pod -- $(PERLEXE) ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \ -- --podpath=pod:lib:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\ -+ $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \ -+ --podpath=pod:lib:utils --htmlroot="@PERL_RELOCATE_HTML@/share/doc/perl5" \ + doc: $(PERLEXE) $(PERLDLL) ..\pod\perltoc.pod + $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \ +- --podpath=pod:lib:utils --htmlroot="file://$(subst :,|,$(INST_HTML))"\ ++ --podpath=pod:lib:utils --htmlroot="file://$(INST_HTML)" \ + --recurse + + ..\utils\Makefile: $(CONFIGPM) ..\utils\Makefile.PL +diff --git 001/win32/makefile.mk 002/win32/makefile.mk +index a4c9017..56cf889 100644 +--- 001/win32/makefile.mk ++++ 002/win32/makefile.mk +@@ -1570,8 +1570,8 @@ rebasePE : Extensions $(PERLDLL) Extensions_normalize $(PERLEXE) + + + doc: $(PERLEXE) $(PERLDLL) ..\pod\perltoc.pod +- $(PERLEXE) ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \ +- --podpath=pod:lib:utils --htmlroot="file://$(INST_HTML:s,:,|,)"\ ++ $(PERLEXE) -I..\lib ..\installhtml --podroot=.. --htmldir=$(HTMLDIR) \ ++ --podpath=pod:lib:utils --htmlroot="file://$(INST_HTML)" \ --recurse ..\utils\Makefile: $(CONFIGPM) ..\utils\Makefile.PL diff --git a/mingw-w64-perl/003-replace-batch-scripts-with-bare-perl.patch b/mingw-w64-perl/003-replace-batch-scripts-with-bare-perl.patch index c08f17d3d0..028db5ea46 100644 --- a/mingw-w64-perl/003-replace-batch-scripts-with-bare-perl.patch +++ b/mingw-w64-perl/003-replace-batch-scripts-with-bare-perl.patch @@ -1,56 +1,34 @@ -diff -aur 002/installperl 003/installperl ---- 002/installperl 2015-01-05 20:37:16.838867100 -0200 -+++ 003/installperl 2015-01-05 20:38:45.015625000 -0200 -@@ -19,7 +19,7 @@ - if ($Is_VMS) { eval 'use VMS::Filespec;' } - } +diff --git 002/installperl 003/installperl +index af61203..334310e 100644 +--- 002/installperl ++++ 003/installperl +@@ -27,7 +27,7 @@ BEGIN { + my $SO_MODE = $Is_AmigaOS ? 0777 : 0555; + my $NON_SO_MODE = $Is_AmigaOS ? 0666 : 0444; -my $scr_ext = ($Is_VMS ? '.Com' : $Is_W32 ? '.bat' : ''); +my $scr_ext = ($Is_VMS ? '.Com' : ''); use File::Find; use File::Compare; -diff -aur 002/win32/bin/pl2bat.pl 003/win32/bin/pl2bat.pl ---- 002/win32/bin/pl2bat.pl 2015-01-05 20:37:16.143554600 -0200 -+++ 003/win32/bin/pl2bat.pl 2015-01-05 20:38:45.023437500 -0200 -@@ -1,5 +1,4 @@ -- eval 'exec perl -x -S "$0" ${1+"$@"}' -- if 0; # In case running under some shell -+#!perl -w +diff --git 002/win32/GNUmakefile 003/win32/GNUmakefile +index 9c6d629..5781bc3 100644 +--- 002/win32/GNUmakefile ++++ 003/win32/GNUmakefile +@@ -938,34 +938,7 @@ PERLDEP = $(PERLIMPLIB) + PL2BAT = bin\pl2bat.pl - require 5; - use Getopt::Std; -diff -aur 002/win32/bin/search.pl 003/win32/bin/search.pl ---- 002/win32/bin/search.pl 2015-01-05 20:37:16.129882800 -0200 -+++ 003/win32/bin/search.pl 2015-01-05 20:38:45.046875000 -0200 -@@ -1,4 +1,4 @@ --#!/usr/local/bin/perl -w -+#!perl -w - 'di'; - 'ig00'; - ############################################################################## -diff -aur 002/win32/makefile.mk 003/win32/makefile.mk ---- 002/win32/makefile.mk 2015-01-05 20:37:54.890625000 -0200 -+++ 003/win32/makefile.mk 2015-01-05 21:28:09.955078100 -0200 -@@ -723,40 +723,6 @@ - PERLDEP = perldll.def - - --PL2BAT = bin\pl2bat.pl -- --UTILS = \ + UTILS = \ - ..\utils\h2ph \ - ..\utils\splain \ - ..\utils\perlbug \ - ..\utils\pl2pm \ -- ..\utils\c2ph \ -- ..\utils\pstruct \ - ..\utils\h2xs \ - ..\utils\perldoc \ - ..\utils\perlivp \ - ..\utils\libnetcfg \ - ..\utils\enc2xs \ -- ..\utils\encguess \ +- ..\utils\encguess \ - ..\utils\piconv \ - ..\utils\corelist \ - ..\utils\cpan \ @@ -69,29 +47,117 @@ diff -aur 002/win32/makefile.mk 003/win32/makefile.mk - bin\pl2bat.pl \ - bin\perlglob.pl \ - bin\search.pl -- - .IF "$(CCTYPE)" == "GCC" ++ bin\runperl.pl - CFGSH_TMPL = config.gc -@@ -1393,7 +1356,6 @@ - copy ..\README.vos ..\pod\perlvos.pod - copy ..\README.win32 ..\pod\perlwin32.pod - copy ..\pod\perldelta.pod ..\pod\perl5220delta.pod -- $(PERLEXE) -I..\lib $(PL2BAT) $(UTILS) - $(MINIPERL) -I..\lib ..\autodoc.pl .. - $(MINIPERL) -I..\lib ..\pod\perlmodlib.PL -q .. + ifeq ($(CCTYPE),GCC) -@@ -1530,7 +1492,41 @@ - if exist $(PERLEXESTATIC) $(XCOPY) $(PERLEXESTATIC) $(INST_BIN)\*.* - $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.* - if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.* -- $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.* +@@ -1836,6 +1809,37 @@ installbare : utils ..\pod\perltoc.pod + $(XCOPY) $(GLOBEXE) $(INST_BIN)\$(NULL) + if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\$(NULL) + $(XCOPY) "bin\*.bat" $(INST_SCRIPT)\$(NULL) ++ $(XCOPY) ..\utils\h2ph $(INST_SCRIPT) ++ $(XCOPY) ..\utils\splain $(INST_SCRIPT) ++ $(XCOPY) ..\utils\perlbug $(INST_SCRIPT) ++ $(XCOPY) ..\utils\pl2pm $(INST_SCRIPT) ++ $(XCOPY) ..\utils\h2xs $(INST_SCRIPT) ++ $(XCOPY) ..\utils\perldoc $(INST_SCRIPT) ++ $(XCOPY) ..\utils\perlivp $(INST_SCRIPT) ++ $(XCOPY) ..\utils\libnetcfg $(INST_SCRIPT) ++ $(XCOPY) ..\utils\enc2xs $(INST_SCRIPT) ++ $(XCOPY) ..\utils\encguess $(INST_SCRIPT) ++ $(XCOPY) ..\utils\piconv $(INST_SCRIPT) ++ $(XCOPY) ..\utils\corelist $(INST_SCRIPT) ++ $(XCOPY) ..\utils\cpan $(INST_SCRIPT) ++ $(XCOPY) ..\utils\xsubpp $(INST_SCRIPT) ++ $(XCOPY) ..\utils\pod2html $(INST_SCRIPT) ++ $(XCOPY) ..\utils\prove $(INST_SCRIPT) ++ $(XCOPY) ..\utils\ptar $(INST_SCRIPT) ++ $(XCOPY) ..\utils\ptardiff $(INST_SCRIPT) ++ $(XCOPY) ..\utils\ptargrep $(INST_SCRIPT) ++ $(XCOPY) ..\utils\zipdetails $(INST_SCRIPT) ++ $(XCOPY) ..\utils\shasum $(INST_SCRIPT) ++ $(XCOPY) ..\utils\instmodsh $(INST_SCRIPT) ++ $(XCOPY) ..\utils\json_pp $(INST_SCRIPT) ++ $(XCOPY) bin\exetype.pl $(INST_SCRIPT) ++ $(XCOPY) bin\pl2bat.pl $(INST_SCRIPT) ++ $(XCOPY) bin\perlglob.pl $(INST_SCRIPT) ++ $(XCOPY) bin\search.pl $(INST_SCRIPT) ++ rename $(INST_SCRIPT)\exetype.pl exetype ++ rename $(INST_SCRIPT)\pl2bat.pl pl2bat ++ rename $(INST_SCRIPT)\perlglob.pl perlglob ++ rename $(INST_SCRIPT)\search.pl search + + installhtml : doc + $(RCOPY) $(HTMLDIR)\*.* $(INST_HTML)\$(NULL) +diff --git 002/win32/bin/pl2bat.pl 003/win32/bin/pl2bat.pl +index 443f590..f3e1e55 100644 +--- 002/win32/bin/pl2bat.pl ++++ 003/win32/bin/pl2bat.pl +@@ -1,5 +1,4 @@ +- eval 'exec perl -x -S "$0" ${1+"$@"}' +- if 0; # In case running under some shell ++#!perl -w + + require 5; + use Getopt::Std; +diff --git 002/win32/bin/search.pl 003/win32/bin/search.pl +index cd6e6ad..98cadb8 100644 +--- 002/win32/bin/search.pl ++++ 003/win32/bin/search.pl +@@ -1,4 +1,4 @@ +-#!/usr/local/bin/perl -w ++#!perl -w + 'di'; + 'ig00'; + ############################################################################## +diff --git 002/win32/makefile.mk 003/win32/makefile.mk +index 56cf889..d1911e6 100644 +--- 002/win32/makefile.mk ++++ 003/win32/makefile.mk +@@ -897,34 +897,7 @@ PERLDEP = $(PERLIMPLIB) + PL2BAT = bin\pl2bat.pl + + UTILS = \ +- ..\utils\h2ph \ +- ..\utils\splain \ +- ..\utils\perlbug \ +- ..\utils\pl2pm \ +- ..\utils\h2xs \ +- ..\utils\perldoc \ +- ..\utils\perlivp \ +- ..\utils\libnetcfg \ +- ..\utils\enc2xs \ +- ..\utils\encguess \ +- ..\utils\piconv \ +- ..\utils\corelist \ +- ..\utils\cpan \ +- ..\utils\xsubpp \ +- ..\utils\pod2html \ +- ..\utils\prove \ +- ..\utils\ptar \ +- ..\utils\ptardiff \ +- ..\utils\ptargrep \ +- ..\utils\zipdetails \ +- ..\utils\shasum \ +- ..\utils\instmodsh \ +- ..\utils\json_pp \ +- bin\exetype.pl \ +- bin\runperl.pl \ +- bin\pl2bat.pl \ +- bin\perlglob.pl \ +- bin\search.pl ++ bin\runperl.pl + + .IF "$(CCTYPE)" == "GCC" + +@@ -1752,6 +1725,37 @@ installbare : utils ..\pod\perltoc.pod + $(XCOPY) $(GLOBEXE) $(INST_BIN)\*.* + if exist ..\perl*.pdb $(XCOPY) ..\perl*.pdb $(INST_BIN)\*.* + $(XCOPY) bin\*.bat $(INST_SCRIPT)\*.* + $(XCOPY) ..\utils\h2ph $(INST_SCRIPT) + $(XCOPY) ..\utils\splain $(INST_SCRIPT) + $(XCOPY) ..\utils\perlbug $(INST_SCRIPT) + $(XCOPY) ..\utils\pl2pm $(INST_SCRIPT) -+ $(XCOPY) ..\utils\c2ph $(INST_SCRIPT) -+ $(XCOPY) ..\utils\pstruct $(INST_SCRIPT) + $(XCOPY) ..\utils\h2xs $(INST_SCRIPT) + $(XCOPY) ..\utils\perldoc $(INST_SCRIPT) + $(XCOPY) ..\utils\perlivp $(INST_SCRIPT) @@ -112,12 +178,10 @@ diff -aur 002/win32/makefile.mk 003/win32/makefile.mk + $(XCOPY) ..\utils\instmodsh $(INST_SCRIPT) + $(XCOPY) ..\utils\json_pp $(INST_SCRIPT) + $(XCOPY) bin\exetype.pl $(INST_SCRIPT) -+ $(XCOPY) bin\runperl.pl $(INST_SCRIPT) + $(XCOPY) bin\pl2bat.pl $(INST_SCRIPT) + $(XCOPY) bin\perlglob.pl $(INST_SCRIPT) + $(XCOPY) bin\search.pl $(INST_SCRIPT) + rename $(INST_SCRIPT)\exetype.pl exetype -+ rename $(INST_SCRIPT)\runperl.pl runperl + rename $(INST_SCRIPT)\pl2bat.pl pl2bat + rename $(INST_SCRIPT)\perlglob.pl perlglob + rename $(INST_SCRIPT)\search.pl search diff --git a/mingw-w64-perl/004-fix-cpan-external-programs.patch b/mingw-w64-perl/004-fix-cpan-external-programs.patch index 6aa6267364..f33633532a 100644 --- a/mingw-w64-perl/004-fix-cpan-external-programs.patch +++ b/mingw-w64-perl/004-fix-cpan-external-programs.patch @@ -1,7 +1,8 @@ -diff -aur 003/cpan/CPAN/lib/CPAN/FirstTime.pm 004/cpan/CPAN/lib/CPAN/FirstTime.pm ---- 003/cpan/CPAN/lib/CPAN/FirstTime.pm 2015-01-06 21:07:13.509562500 -0200 -+++ 004/cpan/CPAN/lib/CPAN/FirstTime.pm 2015-01-07 09:17:32.727227100 -0200 -@@ -1470,6 +1470,21 @@ +diff --git 003/cpan/CPAN/lib/CPAN/FirstTime.pm 004/cpan/CPAN/lib/CPAN/FirstTime.pm +index 531c115..39fb1b1 100644 +--- 003/cpan/CPAN/lib/CPAN/FirstTime.pm ++++ 004/cpan/CPAN/lib/CPAN/FirstTime.pm +@@ -1492,6 +1492,22 @@ sub _init_external_progs { next; } @@ -10,12 +11,13 @@ diff -aur 003/cpan/CPAN/lib/CPAN/FirstTime.pm 004/cpan/CPAN/lib/CPAN/FirstTime.p + # programs in the 64-bit shell. + + if ($^O eq 'MSWin32') { -+ if ($progname eq 'make') { -+ # Make doesn't like the cmd.exe-friendly makefiles that are -+ # created when installing modules, so let's stick to dmake. -+ $CPAN::Config->{$progname} = 'dmake'; -+ } else { -+ $CPAN::Config->{$progname} = $progname; ++ $CPAN::Config->{$progname} = $CPAN::Config->{$progname} ++ || $Config::Config{$progname} ++ || $progname; ++ if ($CPAN::Config->{$progname} eq 'make') { ++ # (msys) make doesn't like the cmd.exe-friendly makefiles that are ++ # created when installing modules, so stick to mingw32-make. ++ $CPAN::Config->{$progname} = 'mingw32-make'; + } + next; + } diff --git a/mingw-w64-perl/005-rename-cpan-home.patch b/mingw-w64-perl/005-rename-cpan-home.patch new file mode 100644 index 0000000000..cc01cfb31f --- /dev/null +++ b/mingw-w64-perl/005-rename-cpan-home.patch @@ -0,0 +1,12 @@ +diff --git 004/cpan/CPAN/lib/CPAN/HandleConfig.pm 005/cpan/CPAN/lib/CPAN/HandleConfig.pm +index c72439f..879d87b 100644 +--- 004/cpan/CPAN/lib/CPAN/HandleConfig.pm ++++ 005/cpan/CPAN/lib/CPAN/HandleConfig.pm +@@ -538,6 +538,7 @@ sub cpan_home_dir_candidates { + push @dirs, $ENV{USERPROFILE} if $ENV{USERPROFILE}; + + $CPAN::Config->{load_module_verbosity} = $old_v; ++ # @@CPAN_HOME@@ This is a placeholder so we can reliably search and update $dotcpan + my $dotcpan = $^O eq 'VMS' ? '_cpan' : '.cpan'; + @dirs = map { File::Spec->catdir($_, $dotcpan) } grep { defined } @dirs; + return wantarray ? @dirs : $dirs[0]; diff --git a/mingw-w64-perl/006-generate-manpages.patch b/mingw-w64-perl/006-generate-manpages.patch new file mode 100644 index 0000000000..e203756247 --- /dev/null +++ b/mingw-w64-perl/006-generate-manpages.patch @@ -0,0 +1,64 @@ +diff --git 005/installman 006/installman +index 53117ab..5b85abd 100644 +--- 005/installman ++++ 006/installman +@@ -1,7 +1,9 @@ + #!./perl -w + + BEGIN { +- @INC = qw(lib); ++ chdir '..' if !-d 'lib' and -d '../lib'; ++ @INC = 'lib'; ++ $ENV{PERL5LIB} = 'lib'; + + # This needs to be at BEGIN time, before any use of Config + # install_lib itself loads and imports Config into main:: +@@ -146,7 +148,7 @@ sub pod2man { + next; + } + +- if ($^O eq 'os2' || $^O eq 'amigaos' || $^O eq 'uwin' || $^O eq 'cygwin') { ++ if ($^O eq 'os2' || $^O eq 'amigaos' || $^O eq 'uwin' || $^O eq 'cygwin' || $^O eq 'MSWin32' ) { + $manpage =~ s#::#.#g; + } + my $tmp = "${mandir}/${manpage}.tmp"; +diff --git 005/win32/GNUmakefile 006/win32/GNUmakefile +index 5781bc3..f31dfbe 100644 +--- 005/win32/GNUmakefile ++++ 006/win32/GNUmakefile +@@ -1800,7 +1800,14 @@ distclean: realclean + -if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR) + -del /f ..\t\test_state + +-install : all installbare installhtml ++install : all installbare installhtml installman ++ ++install.bare : all installbare ++ ++install.doc : all installhtml installman ++ ++installman : ..\pod\perltoc.pod ++ $(PERLEXE) ..\installman + + installbare : utils ..\pod\perltoc.pod + $(PERLEXE) ..\installperl +diff --git 005/win32/makefile.mk 006/win32/makefile.mk +index d1911e6..2305272 100644 +--- 005/win32/makefile.mk ++++ 006/win32/makefile.mk +@@ -1716,7 +1716,14 @@ distclean: realclean + -if exist $(HTMLDIR) rmdir /s /q $(HTMLDIR) + -del /f ..\t\test_state + +-install : all installbare installhtml ++install : all installbare installhtml installman ++ ++install.bare : all installbare ++ ++install.doc : all installhtml installman ++ ++installman : ..\pod\perltoc.pod ++ $(PERLEXE) ..\installman + + installbare : utils ..\pod\perltoc.pod + $(PERLEXE) ..\installperl diff --git a/mingw-w64-perl/PKGBUILD b/mingw-w64-perl/PKGBUILD index d108fedc0e..fcea4253b3 100644 --- a/mingw-w64-perl/PKGBUILD +++ b/mingw-w64-perl/PKGBUILD @@ -1,105 +1,394 @@ # Maintainer: Alexey Pavlov # Contributor: Renato Silva +# Contributor: Niklas Holm -_realname=perl +# Order is important, primary package first +declare -rga _realname=(perl perl-doc) url='https://www.perl.org' pkgdesc='A highly capable, feature-rich programming language (mingw-w64)' license=(GPL1+ Artistic1) arch=(any) -pkgver=5.22.0 +# If you are upgrading to a new version, please run setup_perl_dirs.sh on the +# (patched) source tree to update hard-coded path values. If there are any +# changes, update the exisitng patches or add a new one. +pkgver=5.26.1 pkgrel=1 -install="perl-${CARCH}.install" -options=(staticlibs strip '!purge') -pkgbase=mingw-w64-${_realname} -pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" -makedepends=(${MINGW_PACKAGE_PREFIX}-gcc) -depends=(${MINGW_PACKAGE_PREFIX}-gcc-libs - ${MINGW_PACKAGE_PREFIX}-winpthreads - ${MINGW_PACKAGE_PREFIX}-dmake) +options=(staticlibs strip '!purge' emptydirs) +pkgbase="mingw-w64-${_realname}" +pkgname=() +declare -ga _pkgname=() +# Associative array to map current pkgname (in package_x()) to realname +declare -gA _pkgname_ht=() +local _n _p +for _n in "${_realname[@]}"; do + _p="${MINGW_PACKAGE_PREFIX}-${_n}" + _pkgname_ht+=(["${_p}"]="${_n}") + _pkgname+=("${_p}") + pkgname+=("${_p}") +done +readonly _pkgname _pkgname_ht +makedepends=( + ${MINGW_PACKAGE_PREFIX}-gcc +) +depends=( + ${MINGW_PACKAGE_PREFIX}-gcc-libs + ${MINGW_PACKAGE_PREFIX}-winpthreads + ${MINGW_PACKAGE_PREFIX}-make +) +declare -rga _sources=( + perlprofile.in + perlinstall.in +) +if [[ -z "${SRCURI:-}" ]]; then +declare -rga _patches=( + 001-fhs-directory-structure.patch + 002-relocate-html-documentation.patch + 003-replace-batch-scripts-with-bare-perl.patch + 004-fix-cpan-external-programs.patch + 005-rename-cpan-home.patch + 006-generate-manpages.patch +) +source=( + "https://www.cpan.org/src/5.0/${_realname}-${pkgver}.tar.xz" + "${_patches[@]}" + "${_sources[@]}" +) +else +source=( + "${_realname}-${pkgver}::${SRCURI}" + "${_sources[@]}" +) +SKIPCHECKSUMS=1 +fi +## Populated by the patchprov script found at +## https://github.com/Alexpux/MSYS2-packages/blob/master/perl/patchprov +## and edited manually to add package prefix. +provides=("${MINGW_PACKAGE_PREFIX}-perl-archive-tar=2.24" + "${MINGW_PACKAGE_PREFIX}-perl-attribute-handlers=0.99" + "${MINGW_PACKAGE_PREFIX}-perl-autodie=2.29" + "${MINGW_PACKAGE_PREFIX}-perl-autoloader=5.74" + "${MINGW_PACKAGE_PREFIX}-perl-autouse=1.11" + "${MINGW_PACKAGE_PREFIX}-perl-b-debug=1.24" + "${MINGW_PACKAGE_PREFIX}-perl-base=2.26" + "${MINGW_PACKAGE_PREFIX}-perl-bignum=0.47" + "${MINGW_PACKAGE_PREFIX}-perl-carp=1.42" + "${MINGW_PACKAGE_PREFIX}-perl-compress-raw-bzip2=2.074" + "${MINGW_PACKAGE_PREFIX}-perl-compress-raw-zlib=2.074" + "${MINGW_PACKAGE_PREFIX}-perl-config-perl-v=0.28" + "${MINGW_PACKAGE_PREFIX}-perl-constant=1.33" + "${MINGW_PACKAGE_PREFIX}-perl-cpan-meta-requirements=2.140" + "${MINGW_PACKAGE_PREFIX}-perl-cpan-meta-yaml=0.018" + "${MINGW_PACKAGE_PREFIX}-perl-cpan-meta=2.150010" + "${MINGW_PACKAGE_PREFIX}-perl-cpan=2.18" + "${MINGW_PACKAGE_PREFIX}-perl-data-dumper=2.167" + "${MINGW_PACKAGE_PREFIX}-perl-db_file=1.840" + "${MINGW_PACKAGE_PREFIX}-perl-devel-ppport=3.35" + "${MINGW_PACKAGE_PREFIX}-perl-devel-selfstubber=1.06" + "${MINGW_PACKAGE_PREFIX}-perl-digest-md5=2.55" + "${MINGW_PACKAGE_PREFIX}-perl-digest-sha=5.96" + "${MINGW_PACKAGE_PREFIX}-perl-digest=1.17_01" + "${MINGW_PACKAGE_PREFIX}-perl-dumpvalue=1.18" + "${MINGW_PACKAGE_PREFIX}-perl-encode=2.88" + "${MINGW_PACKAGE_PREFIX}-perl-encoding-warnings=0.13" + "${MINGW_PACKAGE_PREFIX}-perl-env=1.04" + "${MINGW_PACKAGE_PREFIX}-perl-experimental=0.016" + "${MINGW_PACKAGE_PREFIX}-perl-exporter=5.72" + "${MINGW_PACKAGE_PREFIX}-perl-extutils-cbuilder=0.280225" + "${MINGW_PACKAGE_PREFIX}-perl-extutils-constant=0.23" + "${MINGW_PACKAGE_PREFIX}-perl-extutils-install=2.04" + "${MINGW_PACKAGE_PREFIX}-perl-extutils-makemaker=7.24" + "${MINGW_PACKAGE_PREFIX}-perl-extutils-manifest=1.70" + "${MINGW_PACKAGE_PREFIX}-perl-extutils-parsexs=3.34" + "${MINGW_PACKAGE_PREFIX}-perl-file-fetch=0.52" + "${MINGW_PACKAGE_PREFIX}-perl-file-path=2.12_01" + "${MINGW_PACKAGE_PREFIX}-perl-file-temp=0.2304" + "${MINGW_PACKAGE_PREFIX}-perl-filter-simple=0.93" + "${MINGW_PACKAGE_PREFIX}-perl-filter-util-call=1.55" + "${MINGW_PACKAGE_PREFIX}-perl-getopt-long=2.49" + "${MINGW_PACKAGE_PREFIX}-perl-http-tiny=0.070" + "${MINGW_PACKAGE_PREFIX}-perl-i18n-collate=1.02" + "${MINGW_PACKAGE_PREFIX}-perl-i18n-langtags=0.42" + "${MINGW_PACKAGE_PREFIX}-perl-if=0.0606" + "${MINGW_PACKAGE_PREFIX}-perl-io-compress=2.074" + "${MINGW_PACKAGE_PREFIX}-perl-io-socket-ip=0.38" + "${MINGW_PACKAGE_PREFIX}-perl-io-zlib=1.10" + "${MINGW_PACKAGE_PREFIX}-perl-io=1.38" + "${MINGW_PACKAGE_PREFIX}-perl-ipc-cmd=0.96" + "${MINGW_PACKAGE_PREFIX}-perl-ipc-sysv=2.07" + "${MINGW_PACKAGE_PREFIX}-perl-json-pp=2.27400_02" + "${MINGW_PACKAGE_PREFIX}-perl-lib=0.64" + "${MINGW_PACKAGE_PREFIX}-perl-libnet=3.10" + "${MINGW_PACKAGE_PREFIX}-perl-locale-codes=3.42" + "${MINGW_PACKAGE_PREFIX}-perl-locale-maketext-simple=0.21_01" + "${MINGW_PACKAGE_PREFIX}-perl-locale-maketext=1.28" + "${MINGW_PACKAGE_PREFIX}-perl-math-bigint-fastcalc=0.5005" + "${MINGW_PACKAGE_PREFIX}-perl-math-bigint=1.999806" + "${MINGW_PACKAGE_PREFIX}-perl-math-bigrat=0.2611" + "${MINGW_PACKAGE_PREFIX}-perl-math-complex=1.5901" + "${MINGW_PACKAGE_PREFIX}-perl-memoize=1.03_01" + "${MINGW_PACKAGE_PREFIX}-perl-mime-base64=3.15" + "${MINGW_PACKAGE_PREFIX}-perl-module-corelist=5.20170922_26" + "${MINGW_PACKAGE_PREFIX}-perl-module-load-conditional=0.68" + "${MINGW_PACKAGE_PREFIX}-perl-module-load=0.32" + "${MINGW_PACKAGE_PREFIX}-perl-module-loaded=0.08" + "${MINGW_PACKAGE_PREFIX}-perl-module-metadata=1.000033" + "${MINGW_PACKAGE_PREFIX}-perl-net-ping=2.55" + "${MINGW_PACKAGE_PREFIX}-perl-params-check=0.38" + "${MINGW_PACKAGE_PREFIX}-perl-parent=0.236" + "${MINGW_PACKAGE_PREFIX}-perl-pathtools=3.67" + "${MINGW_PACKAGE_PREFIX}-perl-perl-ostype=1.010" + "${MINGW_PACKAGE_PREFIX}-perl-perlfaq=5.021011" + "${MINGW_PACKAGE_PREFIX}-perl-perlio-via-quotedprint=0.08" + "${MINGW_PACKAGE_PREFIX}-perl-pod-checker=1.73" + "${MINGW_PACKAGE_PREFIX}-perl-pod-escapes=1.07" + "${MINGW_PACKAGE_PREFIX}-perl-pod-parser=1.63" + "${MINGW_PACKAGE_PREFIX}-perl-pod-perldoc=3.28" + "${MINGW_PACKAGE_PREFIX}-perl-pod-simple=3.35" + "${MINGW_PACKAGE_PREFIX}-perl-pod-usage=1.69" + "${MINGW_PACKAGE_PREFIX}-perl-podlators=5.006" + "${MINGW_PACKAGE_PREFIX}-perl-safe=2.40" + "${MINGW_PACKAGE_PREFIX}-perl-scalar-list-utils=1.46_02" + "${MINGW_PACKAGE_PREFIX}-perl-search-dict=1.07" + "${MINGW_PACKAGE_PREFIX}-perl-selfloader=1.23" + "${MINGW_PACKAGE_PREFIX}-perl-socket=2.020_03" + "${MINGW_PACKAGE_PREFIX}-perl-storable=2.62" + "${MINGW_PACKAGE_PREFIX}-perl-sys-syslog=0.35" + "${MINGW_PACKAGE_PREFIX}-perl-term-ansicolor=4.06" + "${MINGW_PACKAGE_PREFIX}-perl-term-cap=1.17" + "${MINGW_PACKAGE_PREFIX}-perl-term-complete=1.403" + "${MINGW_PACKAGE_PREFIX}-perl-term-readline=1.16" + "${MINGW_PACKAGE_PREFIX}-perl-test-harness=3.38" + "${MINGW_PACKAGE_PREFIX}-perl-test-simple=1.302073" + "${MINGW_PACKAGE_PREFIX}-perl-test=1.30" + "${MINGW_PACKAGE_PREFIX}-perl-text-abbrev=1.02" + "${MINGW_PACKAGE_PREFIX}-perl-text-balanced=2.03" + "${MINGW_PACKAGE_PREFIX}-perl-text-parsewords=3.30" + "${MINGW_PACKAGE_PREFIX}-perl-text-tabs=2013.0523" + "${MINGW_PACKAGE_PREFIX}-perl-thread-queue=3.12" + "${MINGW_PACKAGE_PREFIX}-perl-thread-semaphore=2.13" + "${MINGW_PACKAGE_PREFIX}-perl-threads-shared=1.56" + "${MINGW_PACKAGE_PREFIX}-perl-threads=2.15" + "${MINGW_PACKAGE_PREFIX}-perl-tie-file=1.02" + "${MINGW_PACKAGE_PREFIX}-perl-tie-refhash=1.39" + "${MINGW_PACKAGE_PREFIX}-perl-time-hires=1.9741" + "${MINGW_PACKAGE_PREFIX}-perl-time-local=1.25" + "${MINGW_PACKAGE_PREFIX}-perl-time-piece=1.31" + "${MINGW_PACKAGE_PREFIX}-perl-unicode-collate=1.19" + "${MINGW_PACKAGE_PREFIX}-perl-unicode-normalize=1.25" + "${MINGW_PACKAGE_PREFIX}-perl-version=0.9917" + "${MINGW_PACKAGE_PREFIX}-perl-xsloader=0.27") +## End of patchprov modifications -source=("https://www.cpan.org/src/5.0/perl-${pkgver}.tar.bz2" - 001-fhs-directory-structure.patch - 002-relocate-html-documentation.patch - 003-replace-batch-scripts-with-bare-perl.patch - 004-fix-cpan-external-programs.patch) +## Run updpkgsums to update +sha256sums=('fe8208133e73e47afc3251c08d2c21c5a60160165a8ab8b669c43a420e4ec680' + 'e08491b314a125e8b6aad211eed18e7fde1d2db9a6aea1b4a77d837c3efbc12a' + 'ccfc7c417e109790046e41cd425e09c91214f72e4cea7138ffb69bb8cb9eb313' + '726cabf22ec69923bf2253ff7d8f504b0698054da909a812d1d6716ce4d1320b' + '33bf80656a00e050f25da056eef69781701ecaf2dc4608b0049fefc938decca5' + 'b6055ad4e61133bf819cb50a36bac8a848c8649bcca70e4d0e48da60edd200e5' + '611427bc16f389000c5d030db7351507e36583c8ae9f1a3d20a019ffbe96cdc8' + '54d8a5fc218031ee1354c8780a7af5de64f712ad63abdf029b09d33b664d6b0f' + 'ff2bbc16a26d0583f344a8c88a055a5396c8b0d15e2498169c1ff996ca0d74ae') -sha256sums=('3689fdb519133d039f49e12834764ff4c1de8f8d925dea44a952ca110d0ac9f7' - '03f11be186d8a3cba4a5cc8d30afd2026bcbb30c1537e69bef0facc30af66801' - '5c3988d3b856aedb52eeccc06a403bb3b99698615cc30a7855a728f010a98a1e' - '0ac16aff60cbe657b9465e05402f48700e694d5aeab8fa3cb84065b7c5a1c1f8' - '8e958e32df2bdac25c3e596a4492539e934c85ca06e921ebf2f929b7614dec7b') +declare -rg _build="build-${CARCH}-${_realname}-${pkgver}" prepare() { cd "${srcdir}/${_realname}-${pkgver}" attrib.exe -r //s - patch -p1 -i "${srcdir}"/001-fhs-directory-structure.patch - patch -p1 -i "${srcdir}"/002-relocate-html-documentation.patch - patch -p1 -i "${srcdir}"/003-replace-batch-scripts-with-bare-perl.patch - patch -p1 -i "${srcdir}"/004-fix-cpan-external-programs.patch + local p + for p in "${_patches[@]}"; do + msg2 "Applying %s" "$p" + patch -p1 -i "${srcdir}"/"$p" + done } -_build() { - local win64 - unset SHELL - cd "${srcdir}/build-${CARCH}-${_realname}-${pkgver}/win32" - [[ "$(uname --machine)" = x86_64 && "${CARCH}" = i686 ]] && win64="WIN64=undef" - PATH="${MINGW_PREFIX}/bin:${SYSTEMROOT}/system32:${SYSTEMROOT}:${PATH}" dmake \ - CCHOME="$(cygpath -w "${MINGW_PREFIX}")" INST_TOP="$(cygpath -w "${pkgdir}${MINGW_PREFIX}")" ${win64} ${_target} +_make() { + # Please read README.win32 in the source package. + # Using pkgdirbase here is not supported but required since we need the + # package directory at build time, something which makepkg doesn't consider. + local prefix="$(cygpath -w "${pkgdirbase}/${_pkgname[0]}${MINGW_PREFIX}")" + local docprefix="$(cygpath -w "${pkgdirbase}/${_pkgname[1]}${MINGW_PREFIX}")" + local cchome="$(cygpath -w "${MINGW_PREFIX}")" + local sysroot="$(cygpath -u "${SYSTEMROOT}")" + local -i jobs="${JOBS:-$(nproc)}" + # README.win32 recommends bulding under Windows' default shell (cmd.exe) + # and win32/makefile.mk recommends setting SHELL to it as well + local cmd="$(cygpath -u "${COMSPEC}")" + local cmdline=( + "${cmd}" //C mingw32-make + -j"${jobs}" + TEST_JOBS="${jobs}" + CCTYPE=GCC + CCHOME="${cchome}" + INST_DRV="${prefix:0:2}" + INST_TOP="${prefix}" + INST_DOC="${docprefix}" + SHELL="${COMSPEC}" + PLMAKE=mingw32-make + ) + if [[ "$(uname --machine)" == "x86_64" && "${CARCH}" == "i686" ]]; then + cmdline+=(WIN64=undef) + fi + cd "${srcdir}/${_build}/win32" + msg2 "Running \"%s\"" "${cmdline[*]}$( (($#)) && echo -n " $*")" + # Setting PATH here is not strictly necessary but it might make compilation + # slightly faster to have the mostly used commands early on the PATH and + # avoids interference with other programs on the PATH during tests. + PATH="${sysroot}/system32:${sysroot}:${MINGW_PREFIX}/bin" "${cmdline[@]}" "$@" } build() { - msg2 "Synchronizing build directory" - rsync --recursive --times "${srcdir}/${_realname}-${pkgver}"/* "${srcdir}/build-${CARCH}-${_realname}-${pkgver}" - _build + if [[ -e "${srcdir}/${_build}" ]]; then + local -i i=1 + while [[ -e "${srcdir}/${_build}~${i}" ]]; do ((++i)); done + mv -T "${srcdir}/${_build}" "${srcdir}/${_build}~${i}" + fi + mv -T "${srcdir}/${_realname}-${pkgver}" "${srcdir}/${_build}" + local postfix + [[ "${CARCH}" == "x86_64" ]] && postfix="w64" || postfix="w32" + sed -ri "/@@CPAN_HOME@@/{N;s/([\._])cpan/\1cpan-${postfix}/g;D}" \ + "${srcdir}/${_build}/cpan/CPAN/lib/CPAN/HandleConfig.pm" + _make } -package() { - _target=install _build +check() { + # Some tests will fail, this is expected on Windows. Still, it might be good + # to have this information in the build logs. + _make test || true +} + +eval "package_${_pkgname[0]}() { _package_bare; }" # perl +eval "package_${_pkgname[1]}() { _package_doc; }" # perl-doc + +_package_common() { + install="${pkgname}.install" + cd "${pkgdir}${MINGW_PREFIX}" - mkdir -p lib/perl5/vendor_perl attrib.exe -r //s - # Licenses - install -Dm644 "${srcdir}/${_realname}-${pkgver}/README" share/licenses/${_realname}/README - install -Dm644 "${srcdir}/${_realname}-${pkgver}/Copying" share/licenses/${_realname}/Copying - install -Dm644 "${srcdir}/${_realname}-${pkgver}/Artistic" share/licenses/${_realname}/Artistic + msg2 "Cleaning up" + find -O3 . \( -type f \( \ + -name '.packlist' -o -name 'perllocal.pod' -o -name '*.tmp' \ + -o -name '*.pod' ! -path '*/pods/*' \ + \) -o -type d -empty \) -delete # Path relocation. This is done by replacing hard-coded paths with relocate - # patterns that will be resolved on package installation. The HTML - # documentation is handled with a patch, the rest is handled below. + # patterns that will be resolved on package installation. - local root_pattern - local root_pattern_double - local pkgdir_pattern - local pkgdir_pattern_double - - root_pattern=$(cygpath -w /) - root_pattern="${root_pattern%\\}" - root_pattern="${root_pattern//\\/\\\\}" - root_pattern_double="${root_pattern//\\\\/\\\\\\\\}" - pkgdir_pattern=$(cygpath -w "${pkgdir}") - pkgdir_pattern="${pkgdir_pattern//\\/\\\\}" - pkgdir_pattern_double="${pkgdir_pattern//\\\\/\\\\\\\\}" + local grep_args=() sed_args=() paths=() single= double= html= path= + mapfile -t -d $'\0' paths < <(printf "${pkgdirbase}/%s/\0" "${_pkgname[@]}") + for path in "${paths[@]}" /; do + single="$(cygpath -w "${path}")" + single="${single//\\/\\\\}" # \ -> \\ + double="${single//\\\\/\\\\\\\\}" # \\ -> \\\\ + html="${single//\\\\/\\\/}" # \\ -> \/ + grep_args+=( + -e "${html}" + -e "${double}" + -e "${single}" + ) + sed_args+=( + -e "s/${html}/@PERL_RELOCATE_HTML@\\//g" + -e "s/${double}/@PERL_RELOCATE_DOUBLE@\\\\\\\\/g" + -e "s/${single}/@PERL_RELOCATE@\\\\/g" + ) + done msg2 "Creating relocate patterns for:" - printf " ${root_pattern}\n" - printf " ${root_pattern_double}\n" - printf " ${pkgdir_pattern}\n" - printf " ${pkgdir_pattern_double}\n" - - sed -i "s/${pkgdir_pattern}/@PERL_RELOCATE@/g" lib/perl5/core_perl/.packlist - sed -i "s/${pkgdir_pattern_double}/@PERL_RELOCATE_DOUBLE@/g" lib/perl5/core_perl/CORE/config.h - sed -i "s/${root_pattern}/@PERL_RELOCATE@/g" lib/perl5/core_perl/Config.pm - sed -i "s/${root_pattern_double}/@PERL_RELOCATE_DOUBLE@/g" lib/perl5/core_perl/Config.pm - sed -i "s/${pkgdir_pattern_double}/@PERL_RELOCATE_DOUBLE@/g" lib/perl5/core_perl/Config.pm - sed -i "s/${root_pattern}/@PERL_RELOCATE@/g" lib/perl5/core_perl/Config_heavy.pl - sed -i "s/${root_pattern_double}/@PERL_RELOCATE_DOUBLE@/g" lib/perl5/core_perl/Config_heavy.pl - sed -i "s/${pkgdir_pattern}/@PERL_RELOCATE@/g" lib/perl5/core_perl/Config_heavy.pl - - for script in \ - c2ph corelist cpan enc2xs encguess exetype h2ph h2xs instmodsh json_pp libnetcfg perlbug \ - perldoc perlglob perlivp perlthanks piconv pl2bat pl2pm pod2html pod2man pod2text pod2usage podchecker \ - podselect prove pstruct ptar ptardiff ptargrep runperl search shasum splain xsubpp zipdetails ; do - sed -i "s/${pkgdir_pattern}/@PERL_RELOCATE@/g" bin/${script} + local -i i + for ((i=0; i<${#grep_args[@]}; ++i)); do + if ((i%2 == 1)); then + plain "%b" "${grep_args[i]}" + fi done + + # Attach list of files containing relocate patterns for use in post-install script. + # Update perl-*.install if changing the filename. + local relocate_list="./share/${_pkgname_ht["${pkgname}"]}/.relocate_list" + install -Dvm644 <(grep -rilZ "${grep_args[@]}" . ) "${relocate_list}" + + xargs -0 -a "${relocate_list}" sed -i "${sed_args[@]}" + + install -Dvm644 <(sed \ + -e "s/@PREFIX@/${MINGW_PREFIX//\//\\\/}/g" \ + -e "s/@FILELIST@/${relocate_list//\//\\\/}/g" \ + -e "/@REM@/d" \ + "${srcdir}"/perlinstall.in) \ + "${startdir}/${install}" } + +_package_doc() { + pkgdesc="Perl manpages and html documentation (mingw-64)" + optdepends=("${_pkgname[0]}") + provides=() + _make install.doc + _package_common +} + +_package_bare() { + optdepends=("${_pkgname[1]}") + _make install.bare + _package_common + + msg2 "Post-install configuration" + local config_heavy="$(find . -name Config_heavy.pl -print -quit)" + + ### Perl Settings ### + # Change man page extensions for site and vendor module builds. + sed -i -e '/^man1ext=/ s/=.*/='"'"'1p'"'"'/' \ + -e '/^man3ext=/ s/=.*/='"'"'3pm'"'"'/' \ + "${config_heavy}" + + msg2 "Getting PATH components" + local skip_paths=("${MINGW_PREFIX}/bin") + local path_arr=() + # Parse the configuration for paths that should be added to PATH + # The sorting is a bit hacky... + local p + while IFS='' read -r p; do + p="${p//\\/\/}" + if [[ -n "${p}" \ + && ! "$(printf '%s\n' "${skip_paths[@]}" "${path_arr[@]}")" \ + =~ (^|$'\n')"${p}"($'\n'|$) ]]; then + path_arr+=("${p}") + fi + done < <(\ + sed -nr \ + -e "s/^installsitebin='@PERL_.*?@(.*)'/1\\t\\1/p" \ + -e "s/^installsitescript='@PERL_.*?@(.*)'/2\\t\\1/p" \ + -e "s/^installvendorbin='@PERL_.*?@(.*)'/3\\t\\1/p" \ + -e "s/^installvendorscript='@PERL_.*?@(.*)'/4\\t\\1/p" \ + -e "s/^installbin='@PERL_.*?@(.*)'/5\\t\\1/p" \ + -e "s/^installscript='@PERL_.*?@(.*)'/6\\t\\1/p" \ + "${config_heavy}" \ + | sort -n -k1,1 | cut -f2- | uniq + ) + local path="$(IFS=':'; echo "${path_arr[*]}")" + + msg2 "Adding extra files" + local profile="/etc/profile.d/z-${_realname}-${CARCH}.sh" + install -Dvm644 <(sed \ + -e "/^\s*local\s\+mypath=/ s/=.*/=\"${path//\//\\\/}\"/" \ + -e "s/@PREFIX@/${MINGW_PREFIX//\//\\\/}/g" \ + -e "s/@FILENAME@/${profile//\//\\\/}/g" \ + -e "/@REM@/d" \ + "${srcdir}"/perlprofile.in) \ + "${pkgdir}${profile}" + + # Link perl executable to main bin directory + local perldir="$(dirname "$(find ./bin -name "perl.exe" -print -quit)")" + if [[ "${perldir}" != ./bin ]]; then + ln -vt ./bin/ "${perldir}/perl"{.exe,5*.dll} + fi + + # Add these so we have them on PATH before installing the first package + sed -nr "s/^install(vendor|site)(bin|script|lib|arch|(man|html)[13]dir)='@PERL_.*?@(.*)'/\\4/p" "${config_heavy}" \ + | sort | uniq | while IFS='' read -r p; do p="${pkgdir}${p//\\/\/}"; [[ -e "${p}" ]] || echo "${p}"; done \ + | xargs -r install -dvm755 + + # Licenses + install -Dvm644 -t "share/licenses/${_realname}" "${srcdir}/${_build}/"{README,Copying,Artistic} + +} + +# vim: set ts=4 sw=4 et ai: diff --git a/mingw-w64-perl/perl-i686.install b/mingw-w64-perl/perl-i686.install deleted file mode 100644 index 840de2642d..0000000000 --- a/mingw-w64-perl/perl-i686.install +++ /dev/null @@ -1,33 +0,0 @@ -_relocating() { - printf "%6s" - printf "relocating ${1}\n" -} - -post_install() { - basedir="$(pwd -W)" - basedir="${basedir%/}" - basedir="${basedir//\//\\\\}" - basedir_double="${basedir//\\\\/\\\\\\\\}" - basedir_html="${basedir//\\\\/\\\/}" - - _relocating configuration - sed -i "s/@PERL_RELOCATE@/${basedir}/g" /mingw32/lib/perl5/core_perl/.packlist - sed -i "s/@PERL_RELOCATE@/${basedir}/g" /mingw32/lib/perl5/core_perl/Config_heavy.pl - sed -i "s/@PERL_RELOCATE_DOUBLE@/${basedir_double}/g" /mingw32/lib/perl5/core_perl/Config.pm - sed -i "s/@PERL_RELOCATE_DOUBLE@/${basedir_double}/g" /mingw32/lib/perl5/core_perl/CORE/config.h - - _relocating scripts - for script in c2ph corelist cpan enc2xs encguess exetype h2ph h2xs instmodsh json_pp libnetcfg perlbug \ - perldoc perlglob perlivp perlthanks piconv pl2bat pl2pm pod2html pod2man pod2text pod2usage podchecker podselect \ - prove pstruct ptar ptardiff ptargrep runperl search shasum splain xsubpp zipdetails ; do - sed -i "s/@PERL_RELOCATE@/${basedir}/g" /mingw32/bin/${script} - done - - _relocating documentation - find /mingw32/share/doc/perl5 -type f -name '*.html' -exec \ - sed -i "s/@PERL_RELOCATE_HTML@/file:\\/\\/\\/${basedir_html}\\/mingw32/g" '{}' \; -} - -post_upgrade() { - post_install -} diff --git a/mingw-w64-perl/perl-x86_64.install b/mingw-w64-perl/perl-x86_64.install deleted file mode 100644 index 54f7aea249..0000000000 --- a/mingw-w64-perl/perl-x86_64.install +++ /dev/null @@ -1,33 +0,0 @@ -_relocating() { - printf "%6s" - printf "relocating ${1}\n" -} - -post_install() { - basedir="$(pwd -W)" - basedir="${basedir%/}" - basedir="${basedir//\//\\\\}" - basedir_double="${basedir//\\\\/\\\\\\\\}" - basedir_html="${basedir//\\\\/\\\/}" - - _relocating configuration - sed -i "s/@PERL_RELOCATE@/${basedir}/g" /mingw64/lib/perl5/core_perl/.packlist - sed -i "s/@PERL_RELOCATE@/${basedir}/g" /mingw64/lib/perl5/core_perl/Config_heavy.pl - sed -i "s/@PERL_RELOCATE_DOUBLE@/${basedir_double}/g" /mingw64/lib/perl5/core_perl/Config.pm - sed -i "s/@PERL_RELOCATE_DOUBLE@/${basedir_double}/g" /mingw64/lib/perl5/core_perl/CORE/config.h - - _relocating scripts - for script in c2ph corelist cpan enc2xs encguess exetype h2ph h2xs instmodsh json_pp libnetcfg perlbug \ - perldoc perlglob perlivp perlthanks piconv pl2bat pl2pm pod2html pod2man pod2text pod2usage podchecker podselect \ - prove pstruct ptar ptardiff ptargrep runperl search shasum splain xsubpp zipdetails ; do - sed -i "s/@PERL_RELOCATE@/${basedir}/g" /mingw64/bin/${script} - done - - _relocating documentation - find /mingw64/share/doc/perl5 -type f -name '*.html' -exec \ - sed -i "s/@PERL_RELOCATE_HTML@/file:\\/\\/\\/${basedir_html}\\/mingw64/g" '{}' \; -} - -post_upgrade() { - post_install -} diff --git a/mingw-w64-perl/perlinstall.in b/mingw-w64-perl/perlinstall.in new file mode 100644 index 0000000000..4c4e616e21 --- /dev/null +++ b/mingw-w64-perl/perlinstall.in @@ -0,0 +1,22 @@ +post_install() { + basedir="$(pwd -W)" + basedir="${basedir%/}" + basedir="${basedir//\//\\\\}" + basedir_double="${basedir//\\\\/\\\\\\\\}" + basedir_html="${basedir//\\\\/\\\/}" + + # PREFIX is an absolute path, i.e. /mingw64 @REM@ + cd "@PREFIX@" + printf "%s Replacing perl relocation patterns\n" "->" + # FILELIST (and its contents) is relative to PREFIX @REM@ + xargs -0 -r -a "@FILELIST@" sed -i \ + -e "s/@PERL_RELOCATE_DOUBLE@/${basedir_double}/g" \ + -e "s/@PERL_RELOCATE@/${basedir}/g" \ + -e "s/@PERL_RELOCATE_HTML@/\\/\\/${basedir_html}/g" +} + +post_upgrade() { + post_install +} + +# vim: set ts=4 sw=4 et ai syn=sh: diff --git a/mingw-w64-perl/perlprofile.in b/mingw-w64-perl/perlprofile.in new file mode 100644 index 0000000000..eeb889addb --- /dev/null +++ b/mingw-w64-perl/perlprofile.in @@ -0,0 +1,32 @@ +# This script is meant to be installed in /etc/profile.d and sourced +# *after* any PATH modifications done by MSYS Perl. +# Lines marked @REM@ are removed when generating the actual profile script + +[ "${MSYSTEM_PREFIX}" != "@PREFIX@" ] && return 0 + +if [ "$(echo -n "$PATH" | wc -l)" -gt 0 ]; then + echo "@FILENAME@: ERROR: PATH contains line break, skipping PATH setup" >&2 + return 1 +fi + +modify_path() { + # @REM@ mypath is determined in package() based on the built configuration + local mypath="" + + # Remove MSYS perl modules from PATH to avoid conflicts + local newpath="$(echo "${PATH}" \ + | sed 's/:/\n/g' \ + | grep -v '/usr/bin/.*_perl' \ + | if [ -n "${mypath}" ]; then sed '/^\@PREFIX@\/bin$/a '"${mypath}"; else cat; fi \ + | paste -s -d : - \ + )" + [ -z "${newpath}" ] && return 1 + + PATH="${newpath}" +} + +modify_path + +unset modify_path + +# vim: set ts=4 sw=4 et ai syn=sh: diff --git a/mingw-w64-perl/setup_perl_dirs.sh b/mingw-w64-perl/setup_perl_dirs.sh new file mode 100644 index 0000000000..f9d5e9b716 --- /dev/null +++ b/mingw-w64-perl/setup_perl_dirs.sh @@ -0,0 +1,172 @@ +#!/bin/bash +# +# Helper script to configure directories for binaries, scripts, libraries etc. +# Uses sed to make the necessary changes in the source. Comes with a couple of +# caveats: Compared to posix, the windows-version is a bit crippled in terms of +# flexibility. +# +# 1. Shared and arch-dependant libs must reside in the same directory, because +# of how Windows loads DLL's. +# 2. It's not enough to change config.gc; scripts get their values from this but +# binaries are compiled with hardcoded paths configured in win32/win32.c. +# Because... [reasons]. + +set -o errexit +set -o nounset +set -o errtrace +set -o pipefail + +progpath="$(realpath "$0")" +progdir="${progpath%/*}" +progname="${progpath##*/}" + +usage() { + echo "Usage: ${progname} [path to src tree root]" +} + +if [[ -z "${1:-}" || ! -d "${1}/win32" ]]; then + usage + exit 1 +fi + +srcdir="${1}" + +bin='\\bin' +scr='\\bin' +priv='\\lib\\perl5' # shared libs +arch='\\lib\\perl5' # arch-dependant libs +html='\\share\\doc\\perl5' +core='\\core_perl' +site='\\site_perl' +vend='\\vendor_perl' + +# If one want, for example perl.exe in $PREFIX/bin, set bin_core to "${bin}" +bin_core="${bin}" +bin_site="${bin}${site}" +bin_vend="${bin}${vend}" +scr_core="${scr}${core}" +scr_site="${scr}${site}" +scr_vend="${scr}${vend}" +priv_core="${priv}${core}" +priv_site="${priv}${site}" +priv_vend="${priv}${vend}" +arch_core="${arch}${core}" +arch_site="${arch}${site}" +arch_vend="${arch}${vend}" +html_core="${html}${core}" +html_site="${html}${site}" +html_vend="${html}${vend}" + +declare -i \ + CORE_VER=0 \ + SITE_VER=1 \ + VEND_VER=0 \ + ARCH=0 + +### ### +### No need to change anything below this line ### +### ### + +null='' + +path() { + if (( $3 == 0 )); then + A='~' + B='~' + elif (( $3 == 1 )); then + A='$(' + B=')' + fi + if [[ "${!1}" != *perl* ]]; then + P='_PERL' + else + P='' + fi + printf "%s%s%s%s" \ + "$([[ "${4:-}" == "doc" ]] && printf "${A}INST_DOC${B}" || printf "${A}INST_TOP${B}")" \ + "${!1}" \ + "$(if (( $2 >= 1 )); then + if [[ "$1" == *site ]]; then printf "${A}INST_SITE_VER${P}${B}" + elif [[ "$1" == *vend ]]; then printf "${A}INST_VEND_VER${P}${B}" + else printf "${A}INST_CORE_VER${P}${B}" + fi + fi)" \ + "$( (( $2 >= 2 )) && printf "${A}INST_ARCH${B}")" +} + +sed -i -E \ +-e "/^d_((priv|arch)lib|(site|vendor)(arch|lib|bin|script))=/ s/=.*/='define'/" \ +-e "/^(install|site|vendor)?prefix(exp)?=/ s/=.*/='~INST_TOP~'/" \ +-e "/^libpth=/ s/=.*/=''/" \ +-e "/^installstyle=/ s/=.*/='lib\/perl5'/" \ +-e "/^perlpath=/ s/=.*/='$(path bin_core 2 0)"'\\perl.exe'"'/" \ +-e "/^(install)?script(dir)?(exp)?=/ s/=.*/='$(path scr_core 1 0)'/" \ +-e "/^(install)?bin(exp)?=/ s/=.*/='$(path bin_core 2 0)'/" \ +-e "/^(install)?sitescript(exp)?=/ s/=.*/='$(path scr_site 1 0)'/" \ +-e "/^(install)?sitebin(exp)?=/ s/=.*/='$(path bin_site 2 0)'/" \ +-e "/^(install)?vendorscript(exp)?=/ s/=.*/='$(path scr_vend 1 0)'/" \ +-e "/^(install)?vendorbin(exp)?=/ s/=.*/='$(path bin_vend 2 0)'/" \ +-e "/^(install)?privlib(exp)?=/ s/=.*/='$(path priv_core 1 0)'/" \ +-e "/^(install)?archlib(exp)?=/ s/=.*/='$(path arch_core 2 0)'/" \ +-e "/^(install)?sitelib_stem=/ s/=.*/='$(path priv_site 0 0)'/" \ +-e "/^(install)?sitelib(exp)?=/ s/=.*/='$(path priv_site 1 0)'/" \ +-e "/^(install)?sitearch(exp)?=/ s/=.*/='$(path arch_site 2 0)'/" \ +-e "/^(install)?vendorlib_stem=/ s/=.*/='$(path priv_vend 0 0)'/" \ +-e "/^(install)?vendorlib(exp)?=/ s/=.*/='$(path priv_vend 1 0)'/" \ +-e "/^(install)?vendorarch(exp)?=/ s/=.*/='$(path arch_vend 2 0)'/" \ +-e "/^(install)?htmldir(exp)?=/ s/=.*/='$(path html 1 0 doc)'/" \ +-e "/^(install)?htmlhelpdir(exp)?=/ s/=.*/='$(path html 1 0 doc)"'\\htmlhelp'"'/" \ +-e "/^(install)?html[13]dir(exp)?=/ s/=.*/='$(path html_core 1 0 doc)'/" \ +-e "/^(install)?sitehtml[13]dir(exp)?=/ s/=.*/='$(path html_site 1 0 doc)'/" \ +-e "/^(install)?vendorhtml[13]dir(exp)?=/ s/=.*/='$(path html_vend 1 0 doc)'/" \ +-e "/^(install)?(vendor)?man1dir(exp)?=/ s/=.*/='$(path null 0 0 doc)"'\\share\\man\\man1'"'/" \ +-e "/^(install)?(vendor)?man3dir(exp)?=/ s/=.*/='$(path null 0 0 doc)"'\\share\\man\\man3'"'/" \ +-e "/^(install)?siteman1dir(exp)?=/ s/=.*/='$(path null 0 0 doc)"'\\local\\man\\man1'"'/" \ +-e "/^(install)?siteman3dir(exp)?=/ s/=.*/='$(path null 0 0 doc)"'\\local\\man\\man3'"'/" \ +-e "/^man1ext=/ s/=.*/='1perl'/" \ +-e "/^man3ext=/ s/=.*/='3perl'/" \ +-e "/^usevendorprefix=/ s/=.*/='define'/" \ +-e "/^otherlibdirs=/ s/=.*/=' '/" \ +-e "/^d_perl_otherlibdirs=/ s/=.*/='undef'/" \ +-e "/^inc_version_list=/ s/=.*/=' '/" \ +-e "/^inc_version_list_init=/ s/=.*/='0'/" \ +-e "/^d_inc_version_list=/ s/=.*/='undef'/" \ +-e "/^cf_by=/ s/=.*/=' '/" \ +-e "/^cf_email=/ s/=.*/=' '/" \ +-e "/^perladmin=/ s/=.*/=' '/" \ +"${srcdir}"/win32/config.gc + +# We have no (site|vendor)man(1|3)ext, to get the same effect, change man(1|3)ext after make install + +sed -i -E \ +-e "/^INST_SCRIPT\s+=/ s/=.*/= $(path scr_core 1 1)/" \ +-e "/^INST_BIN\s+=/ s/=.*/= $(path bin_core 2 1)/" \ +-e "/^INST_LIB\s+=/ s/=.*/= $(path priv_core 1 1)/" \ +-e "/^INST_ARCHLIB\s+=/ s/=.*/= $(path arch_core 2 1)/" \ +-e "/^INST_HTML\s+=/ s/=.*/= $(path html 1 1 doc)/" \ +-e "s/^#?(INST_VER\s)/\1/" \ +-e "s/^#?(INST_CORE_VER\s)/$( ((CORE_VER)) || echo -n '#')\1/" \ +-e "s/^#?(INST_SITE_VER\s)/$( ((SITE_VER)) || echo -n '#')\1/" \ +-e "s/^#?(INST_VEND_VER\s)/$( ((VEND_VER)) || echo -n '#')\1/" \ +-e "s/^#?(INST_CORE_VER_PERL\s)/$( ((CORE_VER)) || echo -n '#')\1/" \ +-e "s/^#?(INST_SITE_VER_PERL\s)/$( ((SITE_VER)) || echo -n '#')\1/" \ +-e "s/^#?(INST_VEND_VER_PERL\s)/$( ((VEND_VER)) || echo -n '#')\1/" \ +-e "s/^#?(INST_ARCH\s)/$( ((ARCH)) || echo -n '#')\1/" \ +"${srcdir}"/win32/{GNUmakefile,makefile.mk} + +vendlib="${priv_vend//\\\\/\\\/}" +vendlib="${vendlib#\\\/}" +sitelib="${priv_site//\\\\/\\\/}" +sitelib="${sitelib#\\\/}" +privlib="${priv_core//\\\\/\\\/}" +privlib="${privlib#\\\/}" + +sed -i -E \ +-e "/^#\s*define\s+MSYS_PERL_VENDORLIB/ s/\".*\"/\"${vendlib}\"/" \ +-e "/^#\s*define\s+MSYS_SITELIB/ s/\".*\"/\"${sitelib}\"/" \ +-e "/^#\s*define\s+MSYS_PRIVLIB/ s/\".*\"/\"${privlib}\"/" \ +"${srcdir}"/win32/win32.c + +exit 0 + +# vim: set ts=4 sw=4 et ai: