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.
This commit is contained in:
Niklas Holm
2018-03-30 08:11:08 +02:00
committed by Алексей
parent 0256601597
commit ebdf1bf1b3
12 changed files with 1218 additions and 371 deletions

View File

@@ -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)
{

View File

@@ -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

View File

@@ -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

View File

@@ -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;
+ }

View File

@@ -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];

View File

@@ -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

View File

@@ -1,105 +1,394 @@
# Maintainer: Alexey Pavlov <Alexpux@gmail.com>
# Contributor: Renato Silva <br.renatosilva@gmail.com>
# Contributor: Niklas Holm <jadedcyborg@gmail.com>
_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:

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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:

View File

@@ -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:

View File

@@ -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: