perl5: Compare inode numbers as string. Bump revision.
PR pkg/55997
Internal stat() function for perl stores inode number as string, if it
cannot be represented by host's integer. However, unfortunately, some
components compare them as integer.
Therefore, if 64-bit integers are not supported, files cannot be handled,
whose inode number is larger than UINT32_MAX.
Usually, inode numbers on real filesystems are well below UINT32_MAX. But,
inode numbers larger than UINT32_MAX are assigned for tmpfs on LP64 kernels.
This results in build failures for perl on COMPAT_NETBSD32 if working
directory is tmpfs, and perl-64bitint and friends are not specified.
Now, inode numbers are compared as string, which works just fine even if
64-bit integers are not supported.
Cherry-picked from upstream. See https://github.com/Perl/perl5/pull/18788
and related pull-requests for more details.
2021-05-29 15:04:21 +02:00
|
|
|
# $NetBSD: Makefile,v 1.271 2021/05/29 13:04:21 rin Exp $
|
2009-06-11 12:35:07 +02:00
|
|
|
|
perl5: Compare inode numbers as string. Bump revision.
PR pkg/55997
Internal stat() function for perl stores inode number as string, if it
cannot be represented by host's integer. However, unfortunately, some
components compare them as integer.
Therefore, if 64-bit integers are not supported, files cannot be handled,
whose inode number is larger than UINT32_MAX.
Usually, inode numbers on real filesystems are well below UINT32_MAX. But,
inode numbers larger than UINT32_MAX are assigned for tmpfs on LP64 kernels.
This results in build failures for perl on COMPAT_NETBSD32 if working
directory is tmpfs, and perl-64bitint and friends are not specified.
Now, inode numbers are compared as string, which works just fine even if
64-bit integers are not supported.
Cherry-picked from upstream. See https://github.com/Perl/perl5/pull/18788
and related pull-requests for more details.
2021-05-29 15:04:21 +02:00
|
|
|
PKGREVISION= 2
|
2009-06-11 12:35:07 +02:00
|
|
|
.include "license.mk"
|
2010-08-27 07:27:37 +02:00
|
|
|
.include "Makefile.common"
|
2001-06-07 06:25:31 +02:00
|
|
|
|
2005-06-24 08:43:43 +02:00
|
|
|
COMMENT= Practical Extraction and Report Language
|
1997-10-06 16:51:03 +02:00
|
|
|
|
2013-11-22 13:03:34 +01:00
|
|
|
CONFLICTS+= perl-base-[0-9]* perl-thread-[0-9]*
|
2010-08-27 07:27:37 +02:00
|
|
|
|
2020-09-04 16:07:51 +02:00
|
|
|
# when updating perl, you can remove packages that are included
|
|
|
|
# in perl core, see
|
|
|
|
# corelist -diff ${PREV_PKGVERSION} ${PKGVERSION}
|
2013-11-22 13:03:34 +01:00
|
|
|
|
|
|
|
SUPERSEDES+= p5-Tie-File<=0.99
|
2020-09-01 15:53:34 +02:00
|
|
|
SUPERSEDES+= p5-Time-HiRes-[0-9]*
|
|
|
|
SUPERSEDES+= p5-DB_File-[0-9]*
|
2013-11-22 13:03:34 +01:00
|
|
|
SUPERSEDES+= p5-Memoize<=1.03
|
|
|
|
SUPERSEDES+= p5-I18N-LangTags<=0.39
|
|
|
|
SUPERSEDES+= p5-Locale-Maketext<=1.23
|
2014-05-30 11:48:52 +02:00
|
|
|
SUPERSEDES+= p5-experimental<=0.007
|
2002-12-23 17:10:45 +01:00
|
|
|
|
2014-03-13 12:08:49 +01:00
|
|
|
# XXX: requires that gcc use an external perl to avoid circular dependencies
|
|
|
|
USE_GCC_RUNTIME= yes
|
2016-01-27 12:22:22 +01:00
|
|
|
USE_LANGUAGES= c c99
|
2014-03-13 12:08:49 +01:00
|
|
|
|
Update lang/perl5 to 5.8.7. Changes from version 5.8.6 include updates
for many "core" modules, UTF-8 and Unicode bugfixes, and ithreads
bugfixes.
The major changes are in the pkgsrc infrastructure to handle Perl and
Perl modules. All pkgsrc-installed Perl modules are now installed in
"vendor" directories, and the perl interpreter has been modifed to
search for libraries in the following order: site, vendor, perl. The
Perl library is stored in a directory that is named for the Perl ABI
version associated with the Perl release, so any updates of Perl to
newer versions can be done "in-place" as long as Perl ABI version
remains the same. All Perl scripts and man pages are stored in
locations that won't conflict between site, vendor, and perl modules,
and a new utility perllink(1) now manages symlinks to those scripts
and man pages under the usual ${LOCALBASE}/bin and ${LOCALBASE}/man/man1.
PERL5_SITEPREFIX may be set to the prefix where local, site-specific
modules will be installed, e.g. PERL5_SITEPREFIX=/usr/local. Note
that modules installed here are completely unmanaged by pkgsrc.
Update the buildlink and tool dependencies on perl to require perl>=5.8.7
to reflect the new locations for Perl modules and the Perl shared
library.
2005-08-06 08:18:44 +02:00
|
|
|
.include "../../mk/bsd.prefs.mk"
|
|
|
|
|
|
|
|
# Determine the Perl API version from the patchlevel.h file from the
|
|
|
|
# source distribution.
|
|
|
|
#
|
2006-04-09 08:34:32 +02:00
|
|
|
PERL5_API_VERS= ${PERL5_API_VERS_cmd:sh}
|
|
|
|
PERL5_API_VERS_cmd= \
|
2006-01-15 08:40:30 +01:00
|
|
|
if ${TEST} -f ${WRKSRC}/patchlevel.h; then \
|
|
|
|
${AWK} '/\#define[ ]*PERL_API_REVISION/ { R = $$3 }\
|
|
|
|
/\#define[ ]*PERL_API_VERSION/ { r = "."$$3 } \
|
|
|
|
/\#define[ ]*PERL_API_SUBVERSION/ { s = "."$$3 } \
|
|
|
|
END { printf "%s%s%s\n", R, r, s }' \
|
|
|
|
${WRKSRC}/patchlevel.h; \
|
|
|
|
else \
|
|
|
|
${ECHO} "unknown"; \
|
|
|
|
fi
|
Update lang/perl5 to 5.8.7. Changes from version 5.8.6 include updates
for many "core" modules, UTF-8 and Unicode bugfixes, and ithreads
bugfixes.
The major changes are in the pkgsrc infrastructure to handle Perl and
Perl modules. All pkgsrc-installed Perl modules are now installed in
"vendor" directories, and the perl interpreter has been modifed to
search for libraries in the following order: site, vendor, perl. The
Perl library is stored in a directory that is named for the Perl ABI
version associated with the Perl release, so any updates of Perl to
newer versions can be done "in-place" as long as Perl ABI version
remains the same. All Perl scripts and man pages are stored in
locations that won't conflict between site, vendor, and perl modules,
and a new utility perllink(1) now manages symlinks to those scripts
and man pages under the usual ${LOCALBASE}/bin and ${LOCALBASE}/man/man1.
PERL5_SITEPREFIX may be set to the prefix where local, site-specific
modules will be installed, e.g. PERL5_SITEPREFIX=/usr/local. Note
that modules installed here are completely unmanaged by pkgsrc.
Update the buildlink and tool dependencies on perl to require perl>=5.8.7
to reflect the new locations for Perl modules and the Perl shared
library.
2005-08-06 08:18:44 +02:00
|
|
|
|
2010-08-27 07:27:37 +02:00
|
|
|
.include "dirs.mk"
|
2004-01-05 23:15:14 +01:00
|
|
|
|
2005-06-24 08:43:43 +02:00
|
|
|
.include "../../mk/compiler.mk"
|
2004-01-08 19:03:04 +01:00
|
|
|
|
|
|
|
HAS_CONFIGURE= yes
|
2001-09-05 19:13:40 +02:00
|
|
|
CONFIGURE_SCRIPT= ./Configure
|
|
|
|
CONFIGURE_ARGS+= -sde
|
2017-07-07 07:54:24 +02:00
|
|
|
CONFIGURE_ARGS+= -Dldflags=${LDFLAGS:Q}
|
2005-06-24 08:43:43 +02:00
|
|
|
MAKE_ENV+= LC_ALL="C"
|
2020-08-30 15:36:01 +02:00
|
|
|
LDFLAGS.QNX+= -lm
|
2000-08-30 21:46:47 +02:00
|
|
|
|
2014-07-05 07:10:48 +02:00
|
|
|
.if ${OPSYS} == "SunOS"
|
|
|
|
USE_TOOLS+= bash
|
|
|
|
CONFIG_SHELL= ${TOOLS_PATH.bash}
|
|
|
|
.endif
|
|
|
|
|
2005-06-24 08:43:43 +02:00
|
|
|
TEST_TARGET= test
|
2004-01-06 18:17:53 +01:00
|
|
|
|
2010-08-19 22:47:09 +02:00
|
|
|
# Policy.sh generation
|
|
|
|
# (see comments in files/Policy.sh)
|
2019-11-03 20:03:56 +01:00
|
|
|
SUBST_CLASSES+= policysh
|
2010-08-19 22:47:09 +02:00
|
|
|
SUBST_STAGE.policysh= pre-configure
|
|
|
|
SUBST_FILES.policysh= Policy.sh
|
|
|
|
SUBST_VARS.policysh+= MACHINE_ARCH
|
|
|
|
SUBST_VARS.policysh+= LOWER_OPSYS
|
2012-11-07 03:46:19 +01:00
|
|
|
SUBST_VARS.policysh+= OBJECT_FMT
|
2010-08-19 22:47:09 +02:00
|
|
|
SUBST_VARS.policysh+= CC
|
|
|
|
SUBST_VARS.policysh+= CFLAGS
|
2012-11-07 04:58:00 +01:00
|
|
|
SUBST_VARS.policysh+= LDFLAGS
|
2012-11-07 03:46:19 +01:00
|
|
|
SUBST_VARS.policysh+= COMPILER_RPATH_FLAG
|
2010-08-19 22:47:09 +02:00
|
|
|
SUBST_VARS.policysh+= PERL5_PREFIX
|
|
|
|
SUBST_VARS.policysh+= PERL5_SITEPREFIX
|
|
|
|
SUBST_VARS.policysh+= PERL5_VENDORPREFIX
|
|
|
|
SUBST_VARS.policysh+= PERL5_PERLBASE
|
|
|
|
SUBST_VARS.policysh+= PERL5_SITEBASE
|
2011-05-16 09:59:04 +02:00
|
|
|
SUBST_VARS.policysh+= PERL5_SITEBIN
|
2010-08-19 22:47:09 +02:00
|
|
|
SUBST_VARS.policysh+= PERL5_VENDORBASE
|
|
|
|
SUBST_VARS.policysh+= PERL5_PRIVLIB
|
|
|
|
SUBST_VARS.policysh+= PERL5_SITELIB
|
|
|
|
SUBST_VARS.policysh+= PERL5_VENDORLIB
|
|
|
|
SUBST_VARS.policysh+= PKGMANDIR
|
|
|
|
SUBST_VARS.policysh+= LOCALBASE
|
|
|
|
SUBST_VARS.policysh+= PTHREAD_LDFLAGS
|
2001-09-05 19:13:40 +02:00
|
|
|
|
2013-06-06 16:20:14 +02:00
|
|
|
# Avoid the ${TOOLS_BIN} path getting written to installed files.
|
|
|
|
SUBST_CLASSES+= toolsbin
|
|
|
|
SUBST_STAGE.toolsbin= pre-configure
|
|
|
|
SUBST_FILES.toolsbin= Configure
|
|
|
|
SUBST_VARS.toolsbin= TOOLS_RM
|
|
|
|
|
2021-04-25 18:56:44 +02:00
|
|
|
SUBST_CLASSES+= pwd
|
|
|
|
SUBST_STAGE.pwd= pre-configure
|
|
|
|
SUBST_FILES.pwd= dist/PathTools/Cwd.pm
|
|
|
|
SUBST_SED.pwd+= -e "s,/bin/pwd,${TOOLS_PLATFORM.pwd},g"
|
|
|
|
|
2013-02-28 01:50:44 +01:00
|
|
|
.if ${OPSYS} == "Darwin" || ${OPSYS} == "Cygwin"
|
2005-06-24 08:43:43 +02:00
|
|
|
#
|
Update lang/perl5 to 5.8.7. Changes from version 5.8.6 include updates
for many "core" modules, UTF-8 and Unicode bugfixes, and ithreads
bugfixes.
The major changes are in the pkgsrc infrastructure to handle Perl and
Perl modules. All pkgsrc-installed Perl modules are now installed in
"vendor" directories, and the perl interpreter has been modifed to
search for libraries in the following order: site, vendor, perl. The
Perl library is stored in a directory that is named for the Perl ABI
version associated with the Perl release, so any updates of Perl to
newer versions can be done "in-place" as long as Perl ABI version
remains the same. All Perl scripts and man pages are stored in
locations that won't conflict between site, vendor, and perl modules,
and a new utility perllink(1) now manages symlinks to those scripts
and man pages under the usual ${LOCALBASE}/bin and ${LOCALBASE}/man/man1.
PERL5_SITEPREFIX may be set to the prefix where local, site-specific
modules will be installed, e.g. PERL5_SITEPREFIX=/usr/local. Note
that modules installed here are completely unmanaged by pkgsrc.
Update the buildlink and tool dependencies on perl to require perl>=5.8.7
to reflect the new locations for Perl modules and the Perl shared
library.
2005-08-06 08:18:44 +02:00
|
|
|
# The Perl build attempts to work around case-insensitivity problems on
|
2005-06-24 08:43:43 +02:00
|
|
|
# HFS filesystems by using GNUmakefiles, so we need to use GNU make.
|
|
|
|
#
|
|
|
|
USE_TOOLS+= gmake
|
2013-02-28 01:50:44 +01:00
|
|
|
MAKE_FILE= GNUmakefile
|
2004-05-05 05:14:33 +02:00
|
|
|
.endif
|
|
|
|
|
2007-11-18 01:42:50 +01:00
|
|
|
#
|
|
|
|
# For the moment disable the building of a shared libperl.dylib on Darwin
|
|
|
|
# => 9.0 as it breaks the build. This should just be considered a temporary
|
|
|
|
# work around until the actual problem can be fixed as this worked for
|
|
|
|
# Darwin < 9.0.
|
|
|
|
#
|
|
|
|
.if empty(MACHINE_PLATFORM:MDarwin-9.*-*)
|
|
|
|
CONFIGURE_ARGS+= -Duseshrplib
|
|
|
|
.endif
|
|
|
|
|
2005-06-24 08:43:43 +02:00
|
|
|
# Perl embeds the full paths to the following tools in several installed
|
|
|
|
# files, so make sure the paths to the ones in ${TOOLS_DIR} aren't used.
|
|
|
|
#
|
2013-06-06 16:20:14 +02:00
|
|
|
USE_TOOLS+= hostname ln rm sed test
|
2010-08-19 22:47:09 +02:00
|
|
|
SUBST_VARS.policysh+= TOOLS_HOSTNAME_CMD
|
|
|
|
SUBST_VARS.policysh+= TOOLS_LN
|
2020-08-31 20:00:37 +02:00
|
|
|
TOOLS_ALIASES.sed= ${TOOLS_SED:T}
|
2010-08-19 22:47:09 +02:00
|
|
|
SUBST_VARS.policysh+= TOOLS_SED
|
|
|
|
SUBST_VARS.policysh+= TOOLS_SH
|
|
|
|
SUBST_VARS.policysh+= TOOLS_TEST
|
|
|
|
SUBST_VARS.policysh+= FALSE
|
2005-06-24 08:43:43 +02:00
|
|
|
|
2001-09-05 19:13:40 +02:00
|
|
|
# Nail down the needed libraries for each platform here to avoid hidden
|
2001-09-17 20:11:36 +02:00
|
|
|
# dependencies. If this isn't defined, then use the perl defaults for the
|
|
|
|
# particular operating system.
|
2001-09-05 19:13:40 +02:00
|
|
|
#
|
2015-06-05 14:22:28 +02:00
|
|
|
LIBSWANTED.Bitrig= m crypt
|
2013-02-28 05:33:57 +01:00
|
|
|
LIBSWANTED.Cygwin= m crypt dl
|
2005-06-24 08:43:43 +02:00
|
|
|
LIBSWANTED.Darwin= m c
|
2005-08-22 19:40:20 +02:00
|
|
|
LIBSWANTED.DragonFly= m crypt
|
2003-05-27 23:57:25 +02:00
|
|
|
LIBSWANTED.FreeBSD= m crypt
|
2013-07-26 12:59:53 +02:00
|
|
|
LIBSWANTED.GNUkFreeBSD= m crypt dl nsl
|
2014-06-07 14:08:47 +02:00
|
|
|
LIBSWANTED.Haiku= network
|
2010-08-19 22:47:09 +02:00
|
|
|
LIBSWANTED.HPUX= cl pthread $$libswanted # see Perl's README.hpux
|
2003-09-13 19:05:08 +02:00
|
|
|
LIBSWANTED.IRIX= m crypt
|
2005-06-24 08:43:43 +02:00
|
|
|
LIBSWANTED.Interix= m dl
|
2007-12-22 22:03:31 +01:00
|
|
|
LIBSWANTED.Linux= m crypt dl nsl
|
2018-10-29 15:25:25 +01:00
|
|
|
LIBSWANTED.Minix= m crypt c
|
2011-01-23 20:07:24 +01:00
|
|
|
LIBSWANTED.MirBSD= m crypt
|
2001-09-05 19:13:40 +02:00
|
|
|
LIBSWANTED.NetBSD= m crypt
|
2005-03-24 03:33:08 +01:00
|
|
|
LIBSWANTED.OpenBSD= m crypt
|
2001-10-21 08:56:30 +02:00
|
|
|
LIBSWANTED.SunOS= m crypt dl socket nsl
|
2010-08-19 22:47:09 +02:00
|
|
|
LIBSWANTED.AIX= m crypt dl socket nsl bind c
|
2014-03-14 23:41:10 +01:00
|
|
|
LIBSWANTED.SCO_SV= m crypt socket
|
2005-06-24 08:43:43 +02:00
|
|
|
LIBSWANTED= ${LIBSWANTED.${OPSYS}}
|
2010-08-19 22:47:09 +02:00
|
|
|
SUBST_VARS.policysh+= LIBSWANTED
|
2001-09-05 19:13:40 +02:00
|
|
|
|
2001-09-12 20:58:57 +02:00
|
|
|
# Nail down the directories in which the system libraries may be found.
|
|
|
|
# If this isn't defined, then use the perl defaults for the particular
|
|
|
|
# operating system.
|
2001-09-05 19:13:40 +02:00
|
|
|
#
|
2015-06-05 14:22:28 +02:00
|
|
|
SYSLIBPATH.Bitrig= /usr/lib
|
2013-02-28 05:33:57 +01:00
|
|
|
SYSLIBPATH.Cygwin= /usr/lib
|
2005-06-24 08:43:43 +02:00
|
|
|
SYSLIBPATH.Darwin= /usr/lib
|
2005-08-22 19:40:20 +02:00
|
|
|
SYSLIBPATH.DragonFly= /usr/lib
|
2005-06-24 08:43:43 +02:00
|
|
|
SYSLIBPATH.FreeBSD= /usr/lib
|
|
|
|
SYSLIBPATH.Interix= /usr/lib
|
2018-10-29 15:25:25 +01:00
|
|
|
SYSLIBPATH.Minix= /usr/lib
|
2011-01-23 20:07:24 +01:00
|
|
|
SYSLIBPATH.MirBSD= /usr/lib
|
2001-09-05 19:13:40 +02:00
|
|
|
SYSLIBPATH.NetBSD= /usr/lib
|
2005-03-24 03:33:08 +01:00
|
|
|
SYSLIBPATH.OpenBSD= /usr/lib
|
2001-09-17 20:04:42 +02:00
|
|
|
SYSLIBPATH.SunOS= /usr/lib
|
2008-12-20 14:08:00 +01:00
|
|
|
SYSLIBPATH.AIX= /usr/lib
|
2014-03-14 23:41:10 +01:00
|
|
|
SYSLIBPATH.SCO_SV= /usr/lib
|
2014-06-07 14:07:43 +02:00
|
|
|
SYSLIBPATH= ${SYSLIBPATH.${OPSYS}:U${COMPILER_LIB_DIRS}}
|
2010-08-19 22:47:09 +02:00
|
|
|
SUBST_VARS.policysh+= SYSLIBPATH
|
2001-10-01 09:05:10 +02:00
|
|
|
|
2005-06-24 08:43:43 +02:00
|
|
|
.include "../../mk/dlopen.buildlink3.mk"
|
2012-11-02 22:22:10 +01:00
|
|
|
.include "options.mk"
|
2001-09-05 19:13:40 +02:00
|
|
|
|
perl: updated to 5.30.0
what is new for perl v5.30.0
Core Enhancements
Limited variable length lookbehind in regular expression pattern matching is now experimentally supported
Using a lookbehind assertion (like "(?<=foo?)" or "(?<!ba{1,9}r)" previously would generate an error and
refuse to compile. Now it compiles (if the maximum lookbehind is at most 255 characters), but raises a
warning in the new "experimental::vlb" warnings category. This is to caution you that the precise behavior
is subject to change based on feedback from use in the field.
See "(?<=pattern)" in perlre and "(?<!pattern)" in perlre.
The upper limit "n" specifiable in a regular expression quantifier of the form "{m,n}" has been doubled to 65534
The meaning of an unbounded upper quantifier "{m,}" remains unchanged. It matches 2**31 - 1 times on most
platforms, and more on ones where a C language short variable is more than 4 bytes long.
Unicode 12.1 is supported
Because of a change in Unicode release cycles, Perl jumps from Unicode 10.0 in Perl 5.28 to Unicode 12.1 in
Perl 5.30.
For details on the Unicode changes, see <https://www.unicode.org/versions/Unicode11.0.0/> for 11.0;
<https://www.unicode.org/versions/Unicode12.0.0/> for 12.0; and
<https://www.unicode.org/versions/Unicode12.1.0/> for 12.1. (Unicode 12.1 differs from 12.0 only in the
addition of a single character, that for the new Japanese era name.)
The Word_Break property, as in past Perl releases, remains tailored to behave more in line with expectations
of Perl users. This means that sequential runs of horizontal white space characters are not broken apart,
but kept as a single run. Unicode 11 changed from past versions to be more in line with Perl, but it left
several white space characters as causing breaks: TAB, NO BREAK SPACE, and FIGURE SPACE (U+2007). We have
decided to continue to use the previous Perl tailoring with regards to these.
Wildcards in Unicode property value specifications are now partially supported
You can now do something like this in a regular expression pattern
qr! \p{nv= /(?x) \A [0-5] \z / }!
which matches all Unicode code points whose numeric value is between 0 and 5 inclusive. So, it could match
the Thai or Bengali digits whose numeric values are 0, 1, 2, 3, 4, or 5.
This marks another step in implementing the regular expression features the Unicode Consortium suggests.
Most properties are supported, with the remainder planned for 5.32. Details are in "Wildcards in Property
Values" in perlunicode.
qr'\N{name}' is now supported
Previously it was an error to evaluate a named character "\N{...}" within a single quoted regular expression
pattern (whose evaluation is deferred from the normal place). This restriction is now removed.
Turkic UTF-8 locales are now seamlessly supported
Turkic languages have different casing rules than other languages for the characters "i" and "I". The
uppercase of "i" is LATIN CAPITAL LETTER I WITH DOT ABOVE (U+0130); and the lowercase of "I" is LATIN SMALL
LETTER DOTLESS I (U+0131). Unicode furnishes alternate casing rules for use with Turkic languages.
Previously, Perl ignored these, but now, it uses them when it detects that it is operating under a Turkic
UTF-8 locale.
It is now possible to compile perl to always use thread-safe locale operations.
Previously, these calls were only used when the perl was compiled to be multi-threaded. To always enable
them, add
-Accflags='-DUSE_THREAD_SAFE_LOCALE'
to your Configure flags.
Eliminate opASSIGN macro usage from core
This macro is still defined but no longer used in core
"-Drv" now means something on "-DDEBUGGING" builds
Now, adding the verbose flag ("-Dv") to the "-Dr" flag turns on all possible regular expression debugging.
Incompatible Changes
Assigning non-zero to $[ is fatal
Setting $[ to a non-zero value has been deprecated since Perl 5.12 and now throws a fatal error. See
"Assigning non-zero to $[ is fatal" in perldeprecation.
Delimiters must now be graphemes
See "Use of unassigned code point or non-standalone grapheme for a delimiter." in perldeprecation
Some formerly deprecated uses of an unescaped left brace "{" in regular expression patterns are now illegal
But to avoid breaking code unnecessarily, most instances that issued a deprecation warning, remain legal and
now have a non-deprecation warning raised. See "Unescaped left braces in regular expressions" in
perldeprecation.
Previously deprecated sysread()/syswrite() on :utf8 handles is now fatal
Calling sysread(), syswrite(), send() or recv() on a ":utf8" handle, whether applied explicitly or
implicitly, is now fatal. This was deprecated in perl 5.24.
There were two problems with calling these functions on ":utf8" handles:
o All four functions only paid attention to the ":utf8" flag. Other layers were completely ignored, so a
handle with ":encoding(UTF-16LE)" layer would be treated as UTF-8. Other layers, such as compression
are completely ignored with or without the ":utf8" flag.
o sysread() and recv() would read from the handle, skipping any validation by the layers, and do no
validation of their own. This could lead to invalidly encoded perl scalars.
my() in false conditional prohibited
Declarations such as "my $x if 0" are no longer permitted.
Fatalize $* and $#
These special variables, long deprecated, now throw exceptions when used.
Fatalize unqualified use of dump()
The "dump()" function, long discouraged, may no longer be used unless it is fully qualified, i.e.,
"CORE::dump()".
Remove File::Glob::glob()
The "File::Glob::glob()" function, long deprecated, has been removed and now throws an exception which
advises use of "File::Glob::bsd_glob()" instead.
"pack()" no longer can return malformed UTF-8
It croaks if it would otherwise return a UTF-8 string that contains malformed UTF-8. This protects against
potential security threats. This is considered a bug fix as well.
Any set of digits in the Common script are legal in a script run of another script
There are several sets of digits in the Common script. "[0-9]" is the most familiar. But there are also
"[\x{FF10}-\x{FF19}]" (FULLWIDTH DIGIT ZERO - FULLWIDTH DIGIT NINE), and several sets for use in
mathematical notation, such as the MATHEMATICAL DOUBLE-STRUCK DIGITs. Any of these sets should be able to
appear in script runs of, say, Greek. But the design of 5.30 overlooked all but the ASCII digits "[0-9]",
so the design was flawed. This has been fixed, so is both a bug fix and an incompatibility.
All digits in a run still have to come from the same set of ten digits.
JSON::PP enables allow_nonref by default
As JSON::XS 4.0 changed its policy and enabled allow_nonref by default, JSON::PP also enabled allow_nonref
by default.
Deprecations
In XS code, use of various macros dealing with UTF-8.
This deprecation was scheduled to become fatal in 5.30, but has been delayed to 5.32 due to problems that
showed up with some CPAN modules. For details of what's affected, see perldeprecation.
Performance Enhancements
o Translating from UTF-8 into the code point it represents now is done via a deterministic finite
automaton, speeding it up. As a typical example, "ord("\x7fff")" now requires 12% fewer instructions
than before. The performance of checking that a sequence of bytes is valid UTF-8 is similarly improved,
again by using a DFA.
o Eliminate recursion from finalize_op().
o A handful of small optimizations related to character folding and character classes in regular
expressions.
o Optimization of "IV" to "UV" conversions.
o Speed up of the integer stringification algorithm by processing two digits at a time instead of one.
o Improvements based on LGTM analysis and recommendation.
o Code optimizations in regcomp.c, regcomp.h, regexec.c.
o Regular expression pattern matching of things like "qr/[^a]/" is significantly sped up, where a is any
ASCII character. Other classes can get this speed up, but which ones is complicated and depends on the
underlying bit patterns of those characters, so differs between ASCII and EBCDIC platforms, but all case
pairs, like "qr/[Gg]/" are included, as is "[^01]".
2019-08-11 12:14:17 +02:00
|
|
|
.if ${MACHINE_PLATFORM} == "MirBSD"
|
2011-01-30 22:31:42 +01:00
|
|
|
SUBST_CLASSES+= mirbsd-paths
|
|
|
|
SUBST_STAGE.mirbsd-paths= pre-configure
|
|
|
|
SUBST_FILES.mirbsd-paths= hints/mirbsd.sh
|
|
|
|
SUBST_SED.mirbsd-paths= -e 's,/usr/mpkg,${PREFIX},g'
|
|
|
|
SUBST_MESSAGE.mirbsd-paths= Do not use non-pkgsrc paths on MirBSD.
|
|
|
|
.endif
|
|
|
|
|
2008-10-10 23:58:43 +02:00
|
|
|
# Replace our perl as the interpreter
|
2013-05-31 12:55:15 +02:00
|
|
|
REPLACE_PERL+= cpan/Config-Perl-V/V.pm
|
|
|
|
REPLACE_PERL+= cpan/Getopt-Long/lib/Getopt/Long.pm
|
2014-11-22 04:01:52 +01:00
|
|
|
REPLACE_PERL+= cpan/version/lib/version.pm
|
2012-10-20 12:41:46 +02:00
|
|
|
REPLACE_PERL+= dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp
|
2014-11-22 04:04:31 +01:00
|
|
|
REPLACE_PERL+= ext/ExtUtils-Miniperl/lib/ExtUtils/Miniperl.pm
|
2013-05-31 12:55:15 +02:00
|
|
|
REPLACE_PERL+= ext/File-DosGlob/lib/File/DosGlob.pm
|
|
|
|
REPLACE_PERL+= lib/unicore/mktables
|
2008-10-10 23:58:43 +02:00
|
|
|
|
2019-11-24 02:08:21 +01:00
|
|
|
.if ${PKGSRC_COMPILER:Mxlc}
|
2008-12-21 15:02:59 +01:00
|
|
|
SUBST_CLASSES+= cpprun
|
|
|
|
SUBST_STAGE.cpprun= pre-install
|
|
|
|
SUBST_FILES.cpprun= lib/Config_heavy.pl
|
2010-08-19 22:47:09 +02:00
|
|
|
. if !empty(PKG_OPTIONS:Mthreads)
|
2008-12-27 16:49:31 +01:00
|
|
|
SUBST_SED.cpprun= -e "s/cpprun=''/cpprun='cc_r -E'/"
|
2010-08-19 22:47:09 +02:00
|
|
|
. else
|
2008-12-27 16:49:31 +01:00
|
|
|
SUBST_SED.cpprun= -e "s/cpprun=''/cpprun='cc -E'/"
|
2010-08-19 22:47:09 +02:00
|
|
|
. endif
|
2008-12-21 15:02:59 +01:00
|
|
|
.endif
|
|
|
|
|
Update lang/perl5 to 5.8.7. Changes from version 5.8.6 include updates
for many "core" modules, UTF-8 and Unicode bugfixes, and ithreads
bugfixes.
The major changes are in the pkgsrc infrastructure to handle Perl and
Perl modules. All pkgsrc-installed Perl modules are now installed in
"vendor" directories, and the perl interpreter has been modifed to
search for libraries in the following order: site, vendor, perl. The
Perl library is stored in a directory that is named for the Perl ABI
version associated with the Perl release, so any updates of Perl to
newer versions can be done "in-place" as long as Perl ABI version
remains the same. All Perl scripts and man pages are stored in
locations that won't conflict between site, vendor, and perl modules,
and a new utility perllink(1) now manages symlinks to those scripts
and man pages under the usual ${LOCALBASE}/bin and ${LOCALBASE}/man/man1.
PERL5_SITEPREFIX may be set to the prefix where local, site-specific
modules will be installed, e.g. PERL5_SITEPREFIX=/usr/local. Note
that modules installed here are completely unmanaged by pkgsrc.
Update the buildlink and tool dependencies on perl to require perl>=5.8.7
to reflect the new locations for Perl modules and the Perl shared
library.
2005-08-06 08:18:44 +02:00
|
|
|
# Some platforms may want the directory mode not to be 0755. This
|
|
|
|
# is, unfortunately, hardcoded in quite a few places in Perl, so
|
|
|
|
# let's substitute what pkgsrc says instead.
|
|
|
|
#
|
|
|
|
SUBST_CLASSES+= dirmode
|
2018-07-04 15:40:07 +02:00
|
|
|
SUBST_STAGE.dirmode= pre-configure
|
2020-03-17 04:45:55 +01:00
|
|
|
SUBST_FILES.dirmode= install_lib.pl
|
Update lang/perl5 to 5.8.7. Changes from version 5.8.6 include updates
for many "core" modules, UTF-8 and Unicode bugfixes, and ithreads
bugfixes.
The major changes are in the pkgsrc infrastructure to handle Perl and
Perl modules. All pkgsrc-installed Perl modules are now installed in
"vendor" directories, and the perl interpreter has been modifed to
search for libraries in the following order: site, vendor, perl. The
Perl library is stored in a directory that is named for the Perl ABI
version associated with the Perl release, so any updates of Perl to
newer versions can be done "in-place" as long as Perl ABI version
remains the same. All Perl scripts and man pages are stored in
locations that won't conflict between site, vendor, and perl modules,
and a new utility perllink(1) now manages symlinks to those scripts
and man pages under the usual ${LOCALBASE}/bin and ${LOCALBASE}/man/man1.
PERL5_SITEPREFIX may be set to the prefix where local, site-specific
modules will be installed, e.g. PERL5_SITEPREFIX=/usr/local. Note
that modules installed here are completely unmanaged by pkgsrc.
Update the buildlink and tool dependencies on perl to require perl>=5.8.7
to reflect the new locations for Perl modules and the Perl shared
library.
2005-08-06 08:18:44 +02:00
|
|
|
SUBST_SED.dirmode= -e "s/755/${PKGDIRMODE}/g;/umask(/d"
|
|
|
|
|
2010-08-19 22:47:09 +02:00
|
|
|
post-extract:
|
perl: updated to 5.30.0
what is new for perl v5.30.0
Core Enhancements
Limited variable length lookbehind in regular expression pattern matching is now experimentally supported
Using a lookbehind assertion (like "(?<=foo?)" or "(?<!ba{1,9}r)" previously would generate an error and
refuse to compile. Now it compiles (if the maximum lookbehind is at most 255 characters), but raises a
warning in the new "experimental::vlb" warnings category. This is to caution you that the precise behavior
is subject to change based on feedback from use in the field.
See "(?<=pattern)" in perlre and "(?<!pattern)" in perlre.
The upper limit "n" specifiable in a regular expression quantifier of the form "{m,n}" has been doubled to 65534
The meaning of an unbounded upper quantifier "{m,}" remains unchanged. It matches 2**31 - 1 times on most
platforms, and more on ones where a C language short variable is more than 4 bytes long.
Unicode 12.1 is supported
Because of a change in Unicode release cycles, Perl jumps from Unicode 10.0 in Perl 5.28 to Unicode 12.1 in
Perl 5.30.
For details on the Unicode changes, see <https://www.unicode.org/versions/Unicode11.0.0/> for 11.0;
<https://www.unicode.org/versions/Unicode12.0.0/> for 12.0; and
<https://www.unicode.org/versions/Unicode12.1.0/> for 12.1. (Unicode 12.1 differs from 12.0 only in the
addition of a single character, that for the new Japanese era name.)
The Word_Break property, as in past Perl releases, remains tailored to behave more in line with expectations
of Perl users. This means that sequential runs of horizontal white space characters are not broken apart,
but kept as a single run. Unicode 11 changed from past versions to be more in line with Perl, but it left
several white space characters as causing breaks: TAB, NO BREAK SPACE, and FIGURE SPACE (U+2007). We have
decided to continue to use the previous Perl tailoring with regards to these.
Wildcards in Unicode property value specifications are now partially supported
You can now do something like this in a regular expression pattern
qr! \p{nv= /(?x) \A [0-5] \z / }!
which matches all Unicode code points whose numeric value is between 0 and 5 inclusive. So, it could match
the Thai or Bengali digits whose numeric values are 0, 1, 2, 3, 4, or 5.
This marks another step in implementing the regular expression features the Unicode Consortium suggests.
Most properties are supported, with the remainder planned for 5.32. Details are in "Wildcards in Property
Values" in perlunicode.
qr'\N{name}' is now supported
Previously it was an error to evaluate a named character "\N{...}" within a single quoted regular expression
pattern (whose evaluation is deferred from the normal place). This restriction is now removed.
Turkic UTF-8 locales are now seamlessly supported
Turkic languages have different casing rules than other languages for the characters "i" and "I". The
uppercase of "i" is LATIN CAPITAL LETTER I WITH DOT ABOVE (U+0130); and the lowercase of "I" is LATIN SMALL
LETTER DOTLESS I (U+0131). Unicode furnishes alternate casing rules for use with Turkic languages.
Previously, Perl ignored these, but now, it uses them when it detects that it is operating under a Turkic
UTF-8 locale.
It is now possible to compile perl to always use thread-safe locale operations.
Previously, these calls were only used when the perl was compiled to be multi-threaded. To always enable
them, add
-Accflags='-DUSE_THREAD_SAFE_LOCALE'
to your Configure flags.
Eliminate opASSIGN macro usage from core
This macro is still defined but no longer used in core
"-Drv" now means something on "-DDEBUGGING" builds
Now, adding the verbose flag ("-Dv") to the "-Dr" flag turns on all possible regular expression debugging.
Incompatible Changes
Assigning non-zero to $[ is fatal
Setting $[ to a non-zero value has been deprecated since Perl 5.12 and now throws a fatal error. See
"Assigning non-zero to $[ is fatal" in perldeprecation.
Delimiters must now be graphemes
See "Use of unassigned code point or non-standalone grapheme for a delimiter." in perldeprecation
Some formerly deprecated uses of an unescaped left brace "{" in regular expression patterns are now illegal
But to avoid breaking code unnecessarily, most instances that issued a deprecation warning, remain legal and
now have a non-deprecation warning raised. See "Unescaped left braces in regular expressions" in
perldeprecation.
Previously deprecated sysread()/syswrite() on :utf8 handles is now fatal
Calling sysread(), syswrite(), send() or recv() on a ":utf8" handle, whether applied explicitly or
implicitly, is now fatal. This was deprecated in perl 5.24.
There were two problems with calling these functions on ":utf8" handles:
o All four functions only paid attention to the ":utf8" flag. Other layers were completely ignored, so a
handle with ":encoding(UTF-16LE)" layer would be treated as UTF-8. Other layers, such as compression
are completely ignored with or without the ":utf8" flag.
o sysread() and recv() would read from the handle, skipping any validation by the layers, and do no
validation of their own. This could lead to invalidly encoded perl scalars.
my() in false conditional prohibited
Declarations such as "my $x if 0" are no longer permitted.
Fatalize $* and $#
These special variables, long deprecated, now throw exceptions when used.
Fatalize unqualified use of dump()
The "dump()" function, long discouraged, may no longer be used unless it is fully qualified, i.e.,
"CORE::dump()".
Remove File::Glob::glob()
The "File::Glob::glob()" function, long deprecated, has been removed and now throws an exception which
advises use of "File::Glob::bsd_glob()" instead.
"pack()" no longer can return malformed UTF-8
It croaks if it would otherwise return a UTF-8 string that contains malformed UTF-8. This protects against
potential security threats. This is considered a bug fix as well.
Any set of digits in the Common script are legal in a script run of another script
There are several sets of digits in the Common script. "[0-9]" is the most familiar. But there are also
"[\x{FF10}-\x{FF19}]" (FULLWIDTH DIGIT ZERO - FULLWIDTH DIGIT NINE), and several sets for use in
mathematical notation, such as the MATHEMATICAL DOUBLE-STRUCK DIGITs. Any of these sets should be able to
appear in script runs of, say, Greek. But the design of 5.30 overlooked all but the ASCII digits "[0-9]",
so the design was flawed. This has been fixed, so is both a bug fix and an incompatibility.
All digits in a run still have to come from the same set of ten digits.
JSON::PP enables allow_nonref by default
As JSON::XS 4.0 changed its policy and enabled allow_nonref by default, JSON::PP also enabled allow_nonref
by default.
Deprecations
In XS code, use of various macros dealing with UTF-8.
This deprecation was scheduled to become fatal in 5.30, but has been delayed to 5.32 due to problems that
showed up with some CPAN modules. For details of what's affected, see perldeprecation.
Performance Enhancements
o Translating from UTF-8 into the code point it represents now is done via a deterministic finite
automaton, speeding it up. As a typical example, "ord("\x7fff")" now requires 12% fewer instructions
than before. The performance of checking that a sequence of bytes is valid UTF-8 is similarly improved,
again by using a DFA.
o Eliminate recursion from finalize_op().
o A handful of small optimizations related to character folding and character classes in regular
expressions.
o Optimization of "IV" to "UV" conversions.
o Speed up of the integer stringification algorithm by processing two digits at a time instead of one.
o Improvements based on LGTM analysis and recommendation.
o Code optimizations in regcomp.c, regcomp.h, regexec.c.
o Regular expression pattern matching of things like "qr/[^a]/" is significantly sped up, where a is any
ASCII character. Other classes can get this speed up, but which ones is complicated and depends on the
underlying bit patterns of those characters, so differs between ASCII and EBCDIC platforms, but all case
pairs, like "qr/[Gg]/" are included, as is "[^01]".
2019-08-11 12:14:17 +02:00
|
|
|
${CP} ${FILESDIR}/Policy.sh ${WRKSRC}/Policy.sh
|
2001-09-05 19:13:40 +02:00
|
|
|
|
2010-09-23 23:47:48 +02:00
|
|
|
pre-configure:
|
2019-05-05 09:58:38 +02:00
|
|
|
${FIND} ${WRKSRC} -name "*.orig" -type f -exec rm -f {} \;
|
2010-09-23 23:47:48 +02:00
|
|
|
|
2006-04-09 08:34:32 +02:00
|
|
|
post-build:
|
|
|
|
${SED} -e "s,@PERL5@,"${PERL5:Q}",g" \
|
|
|
|
-e "s,@SH@,"${SH:Q}",g" \
|
2012-10-03 21:59:47 +02:00
|
|
|
-e "s,@PKGMANDIR@,"${PKGMANDIR}",g" \
|
2006-04-09 08:34:32 +02:00
|
|
|
${FILESDIR}/perllink.in > ${WRKDIR}/perllink.sh
|
|
|
|
|
|
|
|
INSTALLATION_DIRS= bin ${PKGMANDIR}/man1
|
2006-11-03 08:09:45 +01:00
|
|
|
PERL5_PACKLIST_DIR_cmd= . ${WRKSRC}/config.sh; echo $$installarchlib
|
2005-10-19 06:40:23 +02:00
|
|
|
PERL5_PACKLIST_DIR= ${PERL5_PACKLIST_DIR_cmd:sh}
|
|
|
|
PERL5_PACKLIST= .packlist
|
2006-11-03 11:48:05 +01:00
|
|
|
PERL5_PACKLIST_DESTDIR= no
|
2005-10-19 06:40:23 +02:00
|
|
|
FILES_SUBST+= PERL5_COMMENT=\#
|
|
|
|
FILES_SUBST+= PERL5_PACKLIST=
|
Update lang/perl5 to 5.8.7. Changes from version 5.8.6 include updates
for many "core" modules, UTF-8 and Unicode bugfixes, and ithreads
bugfixes.
The major changes are in the pkgsrc infrastructure to handle Perl and
Perl modules. All pkgsrc-installed Perl modules are now installed in
"vendor" directories, and the perl interpreter has been modifed to
search for libraries in the following order: site, vendor, perl. The
Perl library is stored in a directory that is named for the Perl ABI
version associated with the Perl release, so any updates of Perl to
newer versions can be done "in-place" as long as Perl ABI version
remains the same. All Perl scripts and man pages are stored in
locations that won't conflict between site, vendor, and perl modules,
and a new utility perllink(1) now manages symlinks to those scripts
and man pages under the usual ${LOCALBASE}/bin and ${LOCALBASE}/man/man1.
PERL5_SITEPREFIX may be set to the prefix where local, site-specific
modules will be installed, e.g. PERL5_SITEPREFIX=/usr/local. Note
that modules installed here are completely unmanaged by pkgsrc.
Update the buildlink and tool dependencies on perl to require perl>=5.8.7
to reflect the new locations for Perl modules and the Perl shared
library.
2005-08-06 08:18:44 +02:00
|
|
|
|
2020-08-31 20:00:37 +02:00
|
|
|
.PHONY: perl5-post-install
|
2005-10-19 06:40:23 +02:00
|
|
|
post-install: perl5-post-install
|
|
|
|
perl5-post-install:
|
2010-08-19 22:47:09 +02:00
|
|
|
${RUN}if ${TEST} -x ${DESTDIR}${PREFIX}/bin/a2p; then \
|
2006-11-03 08:09:45 +01:00
|
|
|
strip ${DESTDIR}${PREFIX}/bin/a2p; \
|
2004-01-05 23:15:14 +01:00
|
|
|
fi
|
2012-11-02 09:18:50 +01:00
|
|
|
${INSTALL_SCRIPT} ${WRKDIR}/perllink.sh \
|
|
|
|
${DESTDIR}${PERL5_PERLBASE}/bin/perllink
|
|
|
|
${INSTALL_MAN} ${FILESDIR}/perllink.1 \
|
|
|
|
${DESTDIR}${PERL5_PERLBASE}/${PKGMANDIR}/man1/perllink.1
|
|
|
|
${RM} -f ${DESTDIR}${PREFIX}/bin/perllink \
|
|
|
|
${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/perllink.1
|
|
|
|
${LN} -s ${PERL5_PERLBASE}/bin/perllink \
|
|
|
|
${DESTDIR}${PREFIX}/bin/perllink
|
|
|
|
${LN} -s ${PERL5_PERLBASE}/${PKGMANDIR}/man1/perllink.1 \
|
|
|
|
${DESTDIR}${PREFIX}/${PKGMANDIR}/man1/perllink.1
|
2010-08-21 05:12:46 +02:00
|
|
|
.if ${OPSYS} == "Haiku"
|
|
|
|
${CHMOD} a+x ${DESTDIR}${PREFIX}/bin/perl
|
|
|
|
.endif
|
2005-06-24 08:43:43 +02:00
|
|
|
|
2005-10-19 06:40:23 +02:00
|
|
|
.include "packlist.mk"
|
1998-04-15 12:38:15 +02:00
|
|
|
.include "../../mk/bsd.pkg.mk"
|