added core/perl

This commit is contained in:
Kevin Mihelich 2019-08-13 13:58:29 +00:00
parent cd81666d23
commit 6f1cf58a4e
10 changed files with 709 additions and 0 deletions

View file

@ -0,0 +1,104 @@
From 83e7ebed7afa79a2f50eca6b6330eae7c3a02d36 Mon Sep 17 00:00:00 2001
From: Tony Cook <tony@develop-help.com>
Date: Wed, 27 Jan 2016 11:52:15 +1100
Subject: remove duplicate environment variables from environ
If we see duplicate environment variables while iterating over
environ[]:
a) make sure we use the same value in %ENV that getenv() returns.
Previously on a duplicate, %ENV would have the last entry for the name
from environ[], but a typical getenv() would return the first entry.
Rather than assuming all getenv() implementations return the first entry
explicitly call getenv() to ensure they agree.
b) remove duplicate entries from environ
Previously if there was a duplicate definition for a name in environ[]
setting that name in %ENV could result in an unsafe value being passed
to a child process, so ensure environ[] has no duplicates.
Patch-Name: fixes/CVE-2016-2381_duplicate_env.diff
---
perl.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 49 insertions(+), 2 deletions(-)
diff --git a/perl.c b/perl.c
index 80a76c2..ed25429 100644
--- a/perl.c
+++ b/perl.c
@@ -4303,23 +4303,70 @@ S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env)
}
if (env) {
char *s, *old_var;
+ STRLEN nlen;
SV *sv;
+ HV *dups = newHV();
+
for (; *env; env++) {
old_var = *env;
if (!(s = strchr(old_var,'=')) || s == old_var)
continue;
+ nlen = s - old_var;
#if defined(MSDOS) && !defined(DJGPP)
*s = '\0';
(void)strupr(old_var);
*s = '=';
#endif
- sv = newSVpv(s+1, 0);
- (void)hv_store(hv, old_var, s - old_var, sv, 0);
+ if (hv_exists(hv, old_var, nlen)) {
+ const char *name = savepvn(old_var, nlen);
+
+ /* make sure we use the same value as getenv(), otherwise code that
+ uses getenv() (like setlocale()) might see a different value to %ENV
+ */
+ sv = newSVpv(PerlEnv_getenv(name), 0);
+
+ /* keep a count of the dups of this name so we can de-dup environ later */
+ if (hv_exists(dups, name, nlen))
+ ++SvIVX(*hv_fetch(dups, name, nlen, 0));
+ else
+ (void)hv_store(dups, name, nlen, newSViv(1), 0);
+
+ Safefree(name);
+ }
+ else {
+ sv = newSVpv(s+1, 0);
+ }
+ (void)hv_store(hv, old_var, nlen, sv, 0);
if (env_is_not_environ)
mg_set(sv);
}
+ if (HvKEYS(dups)) {
+ /* environ has some duplicate definitions, remove them */
+ HE *entry;
+ hv_iterinit(dups);
+ while ((entry = hv_iternext_flags(dups, 0))) {
+ STRLEN nlen;
+ const char *name = HePV(entry, nlen);
+ IV count = SvIV(HeVAL(entry));
+ IV i;
+ SV **valp = hv_fetch(hv, name, nlen, 0);
+
+ assert(valp);
+
+ /* try to remove any duplicate names, depending on the
+ * implementation used in my_setenv() the iteration might
+ * not be necessary, but let's be safe.
+ */
+ for (i = 0; i < count; ++i)
+ my_setenv(name, 0);
+
+ /* and set it back to the value we set $ENV{name} to */
+ my_setenv(name, SvPV_nolen(*valp));
+ }
+ }
+ SvREFCNT_dec_NN(dups);
}
#endif /* USE_ENVIRON_ARRAY */
#endif /* !PERL_MICRO */

237
core/perl/PKGBUILD Normal file
View file

@ -0,0 +1,237 @@
# Maintainer: Florian Pritz <bluewind@xinu.at>
# Contributor: Angel Velasquez <angvp@archlinux.org>
# Contributor: kevin <kevin.archlinux.org>
# Contributor: judd <jvinet.zeroflux.org>
# Contributor: francois <francois.archlinux.org>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - configure ARMv5 with -Dd_u32align
# https://rt.perl.org/Public/Bug/Display.html?id=133803
pkgname=perl
pkgver=5.30.0
_baseversion="${pkgver%.*}"
pkgrel=3.1
pkgdesc="A highly capable, feature-rich programming language"
arch=(x86_64)
license=('GPL' 'PerlArtistic')
url="https://www.perl.org"
groups=('base')
depends=('gdbm>=1.17' 'db' 'glibc')
# NOTE: This array is automatically generated by `./patchprov`.
# If you want to add entries, do so in the next array.
provides=('perl-archive-tar=2.32'
'perl-attribute-handlers=1.01'
'perl-autodie=2.29'
'perl-autoloader=5.74'
'perl-autouse=1.11'
'perl-base=2.27'
'perl-bignum=0.51'
'perl-carp=1.50'
'perl-compress-raw-bzip2=2.084'
'perl-compress-raw-zlib=2.084'
'perl-config-perl-v=0.32'
'perl-constant=1.33'
'perl-cpan-meta-requirements=2.140'
'perl-cpan-meta-yaml=0.018'
'perl-cpan-meta=2.150010'
'perl-cpan=2.22'
'perl-data-dumper=2.174'
'perl-db_file=1.843'
'perl-devel-ppport=3.52'
'perl-devel-selfstubber=1.06'
'perl-digest-md5=2.55'
'perl-digest-sha=6.02'
'perl-digest=1.17_01'
'perl-dumpvalue=1.18'
'perl-encode=3.01'
'perl-encoding-warnings=0.13'
'perl-env=1.04'
'perl-experimental=0.020'
'perl-exporter=5.73'
'perl-extutils-cbuilder=0.280231'
'perl-extutils-constant=0.25'
'perl-extutils-install=2.14'
'perl-extutils-makemaker=7.34'
'perl-extutils-manifest=1.72'
'perl-extutils-parsexs=3.40'
'perl-file-fetch=0.56'
'perl-file-path=2.16'
'perl-file-temp=0.2309'
'perl-filter-simple=0.95'
'perl-filter-util-call=1.59'
'perl-getopt-long=2.5'
'perl-http-tiny=0.076'
'perl-i18n-collate=1.02'
'perl-i18n-langtags=0.43'
'perl-if=0.0608'
'perl-io-compress=2.084'
'perl-io-socket-ip=0.39'
'perl-io-zlib=1.10'
'perl-io=1.40'
'perl-ipc-cmd=1.02'
'perl-ipc-sysv=2.07'
'perl-json-pp=4.02'
'perl-lib=0.65'
'perl-libnet=3.11'
'perl-locale-maketext-simple=0.21_01'
'perl-locale-maketext=1.29'
'perl-math-bigint-fastcalc=0.5008'
'perl-math-bigint=1.999816'
'perl-math-bigrat=0.2614'
'perl-math-complex=1.5901'
'perl-memoize=1.03_01'
'perl-mime-base64=3.15'
'perl-module-corelist=5.20190522'
'perl-module-load-conditional=0.68'
'perl-module-load=0.34'
'perl-module-loaded=0.08'
'perl-module-metadata=1.000036'
'perl-net-ping=2.71'
'perl-params-check=0.38'
'perl-parent=0.237'
'perl-pathtools=3.78'
'perl-perl-ostype=1.010'
'perl-perlfaq=5.20190126'
'perl-perlio-via-quotedprint=0.08'
'perl-pod-checker=1.73'
'perl-pod-escapes=1.07'
'perl-pod-parser=1.63'
'perl-pod-perldoc=3.2801'
'perl-pod-simple=3.35'
'perl-pod-usage=1.69'
'perl-podlators=5.006'
'perl-safe=2.40'
'perl-scalar-list-utils=1.50'
'perl-search-dict=1.07'
'perl-selfloader=1.25'
'perl-socket=2.027'
'perl-storable=3.15'
'perl-sys-syslog=0.35'
'perl-term-ansicolor=4.06'
'perl-term-cap=1.17'
'perl-term-complete=1.403'
'perl-term-readline=1.17'
'perl-test-harness=3.42'
'perl-test-simple=1.302162'
'perl-test=1.31'
'perl-text-abbrev=1.02'
'perl-text-balanced=2.03'
'perl-text-parsewords=3.30'
'perl-text-tabs=2013.0523'
'perl-thread-queue=3.13'
'perl-thread-semaphore=2.13'
'perl-threads-shared=1.60'
'perl-threads=2.22'
'perl-tie-file=1.02'
'perl-tie-refhash=1.39'
'perl-time-hires=1.9760'
'perl-time-local=1.28'
'perl-time-piece=1.33'
'perl-unicode-collate=1.27'
'perl-unicode-normalize=1.26'
'perl-version=0.9924'
'perl-xsloader=0.30')
# Add your own provides here
provides=(${provides[@]})
source=(https://www.cpan.org/src/5.0/perl-${pkgver}.tar.xz
https://rt.perl.org/Public/Ticket/Attachment/1640272/838796/0001-perl-134194-fix-parsing-supplemental-groups-from.patch
perlbin.sh
perlbin.csh
perlbin.fish
detect-old-perl-modules.sh
detect-old-perl-modules.hook)
options=('makeflags' '!purge' 'emptydirs')
sha512sums=('68a295eccd64debd9d6a10f0d5577f872a19ad8c2d702798f6b0f45b8c3af6ab3230768056e2131e9e2e2506d1035b27cfd627c845e32263fe448649c4b98ae9'
'0737f8c40fb5efc024861de52a6a76f537f7d862575e980b2f9c68ebf9a4b5186fba92efb5244ea95f212bcf0ade915ce14c44a33cd7d04d79a08f7bc9dd37b7'
'46724344828e7f86e016f9c8d588bf52b2e764e65e0acc1a38899a530c99bc6e4fd8b46fa0d4bbd685aa2074dd5bcbf9029ac3bb3f2d0ee9adfc4f6c0745f373'
'fc1344a02c741d61af6f6b5967f29cc6f43c2059761522b150261924dd7e1989da5254c03ffa0627accd9af01bc152edd24e84a6b59579acb9ee1900b6ce9383'
'881e2efe05ba818cd7300f126800b56bb0685cb5c9c5fb7e67ef6aaf5abd17d2391a979d5d16d109c5111f4b35504ba83d19b0e6eda4431e8421fcbea19d2f1a'
'bd48af7a6209f2ad51aa1747a7238ecb11607a53f61460d873202bf14b55c3b7dd6f66f4a9f2cac8a24240313789a9a44dbc81b73587de46a6b1866bdfca5e26'
'6b5b2ba606d443da22c6c1a754829abd36f3fdfef1089bcf06c8f9db0217f2c2f02ebc14958ffa7afe618c9a80bd1025e76704f67466c0c3db7d40ef2c0e56b3')
# https://www.cpan.org/src/5.0/perl-$pkgver.tar.xz.sha256.txt
prepare() {
cd ${srcdir}/${pkgname}-${pkgver}
patch -p1 -i "$srcdir/0001-perl-134194-fix-parsing-supplemental-groups-from.patch"
}
build() {
cd ${srcdir}/${pkgname}-${pkgver}
if [ "${CARCH}" = "x86_64" ]; then
# for x86_64
arch_opts="-Dcccdlflags='-fPIC'"
else
# for i686
arch_opts=""
fi
[[ $CARCH == "arm" ]] && CONFIG="-Dd_u32align"
./Configure -des -Dusethreads -Duseshrplib -Doptimize="${CFLAGS}" \
-Dprefix=/usr -Dvendorprefix=/usr \
-Dprivlib=/usr/share/perl5/core_perl \
-Darchlib=/usr/lib/perl5/$_baseversion/core_perl \
-Dsitelib=/usr/share/perl5/site_perl \
-Dsitearch=/usr/lib/perl5/$_baseversion/site_perl \
-Dvendorlib=/usr/share/perl5/vendor_perl \
-Dvendorarch=/usr/lib/perl5/$_baseversion/vendor_perl \
-Dscriptdir=/usr/bin/core_perl \
-Dsitescript=/usr/bin/site_perl \
-Dvendorscript=/usr/bin/vendor_perl \
-Dinc_version_list=none \
-Dman1ext=1perl -Dman3ext=3perl ${arch_opts} \
-Dlddlflags="-shared ${LDFLAGS}" -Dldflags="${LDFLAGS}" $CONFIG
make
}
check() {
cd ${srcdir}/${pkgname}-${pkgver}
TEST_JOBS=$(echo $MAKEFLAGS | sed 's/.*-j\([0-9][0-9]*\).*/\1/') make test_harness
# make test
}
package() {
cd ${srcdir}/${pkgname}-${pkgver}
make DESTDIR="$pkgdir" install
### Perl Settings ###
# Change man page extensions for site and vendor module builds.
# Set no mail address since bug reports should go to the bug tracker
# and not someone's email.
sed -e '/^man1ext=/ s/1perl/1p/' -e '/^man3ext=/ s/3perl/3pm/' \
-e "/^cf_email=/ s/'.*'/''/" \
-e "/^perladmin=/ s/'.*'/''/" \
-i ${pkgdir}/usr/lib/perl5/$_baseversion/core_perl/Config_heavy.pl
### CPAN Settings ###
# Set CPAN default config to use the site directories.
sed -e '/(makepl_arg =>/ s/""/"INSTALLDIRS=site"/' \
-e '/(mbuildpl_arg =>/ s/""/"installdirs=site"/' \
-i ${pkgdir}/usr/share/perl5/core_perl/CPAN/FirstTime.pm
# Profile script to set paths to perl scripts.
install -D -m644 ${srcdir}/perlbin.sh \
${pkgdir}/etc/profile.d/perlbin.sh
# Profile script to set paths to perl scripts on csh. (FS#22441)
install -D -m644 ${srcdir}/perlbin.csh \
${pkgdir}/etc/profile.d/perlbin.csh
# Profile script to set paths to perl scripts on fish. (FS#51191)
install -D -m 755 "$srcdir/perlbin.fish" \
"$pkgdir/usr/share/fish/vendor_conf.d/perlbin.fish"
# Add the dirs so new installs will already have them in PATH once they
# install their first perl programm
install -d -m755 "$pkgdir/usr/bin/vendor_perl"
install -d -m755 "$pkgdir/usr/bin/site_perl"
#(cd ${pkgdir}/usr/bin; mv perl${pkgver} perl)
rm "$pkgdir/usr/bin/perl$pkgver"
install -D -m755 -t "$pkgdir/usr/share/libalpm/scripts" "$srcdir/detect-old-perl-modules.sh"
install -D -m644 -t "$pkgdir/usr/share/libalpm/hooks" "$srcdir/detect-old-perl-modules.hook"
find $pkgdir -name perllocal.pod -delete
find $pkgdir -name .packlist -delete
}

View file

@ -0,0 +1,10 @@
[Trigger]
Operation = Install
Operation = Upgrade
Type = File
Target = usr/lib/perl5/*/
[Action]
Description = Warn about old perl modules
When = PostTransaction
Exec = /usr/share/libalpm/scripts/detect-old-perl-modules.sh

View file

@ -0,0 +1,36 @@
#!/bin/bash
basedir=/usr/lib/perl5
perlver=$(perl -e '$v = $^V->{version}; print $v->[0].".".($v->[1]);')
dir_empty() {
local dir=$1
[[ $(find $dir -maxdepth 0 -empty -exec echo empty \;) = "empty" ]] && return 0 || return 1
}
print_unowned_files() {
local dir=$1
LC_ALL=C find "$dir" -type f -exec pacman -Qqo {} + |& sed -n 's/^error: No package owns \(.*\)$/\1/p'
}
for dir in "$basedir/"*; do
if [[ "${dir##*/}" != "$perlver" ]]; then
if [[ -d "$dir" ]] && ! dir_empty "$dir"; then
pkgcount=$(pacman -Qqo "$dir" | wc -l)
if ((pkgcount > 0)); then
printf "WARNING: '%s' contains data from at least %d packages which will NOT be used by the installed perl interpreter.\n" "$dir" "$pkgcount"
printf " -> Run the following command to get a list of affected packages: pacman -Qqo '%s'\n" "$dir"
fi
unowned_count=$(print_unowned_files "$dir" | wc -l)
if ((unowned_count > 0)); then
printf "WARNING: %d file(s) in %s are not tracked by pacman and need to be rebuilt.\n" "$unowned_count" "$dir"
printf " -> These were most likely installed directly by cpan or a similar tool.\n"
printf " Run the following command to get a list of these files:\n"
printf " LC_ALL=C find \"%s\" -type f -exec pacman -Qqo {} + |& sed -n 's/^error: No package owns \(.*\)$/\\\1/p'\n" "$dir"
fi
fi
fi
done

View file

@ -0,0 +1,15 @@
#!/bin/bash
set -euo pipefail
echo "vim"
pkgfile -rd "^/usr/lib/perl5/" | sed 's#^.*/##' | sort -u
for repo in core extra community multilib; do
ssh dragon.archlinux.org sogrep "$repo" libperl.so
done
# this one is optional
#pkgfile -r '^/usr/share/perl5/' | sed 's#^.*/##' | sort -u

260
core/perl/patchprov Executable file
View file

@ -0,0 +1,260 @@
#!/usr/bin/perl
##
## Name:
## patchprov
##
## Description:
## Patch the provides list in the perl package PKGBUILD. Scan the appropriate
## directories under the perl source tree for directories containing dists
## similar to CPAN dists. Search the files in the distributions for VERSION
## strings, which are perl expressions. Filters these version strings through
## the perl interpreter, then transform the dist. names and versions into
## package names and versions. Finally, we cut out the "provides" array from the
## PKGBUILD and replace it with the newer version.
##
## Usage:
## patchprov [path to perl source tree] [path to PKGBUILD]
##
## Caveats:
## The path code is not platform independent and will only work in POSIX.
##
## Changelog:
## 06/10/14 JD Rewrite from scratch for perl 5.20.0 and ArchLinux.
##
## Authors:
## Justin "juster" Davis <jrcd83@gmail.com>
##
use warnings;
use strict;
sub err
{
print STDERR "patchprov: error: @_\n";
exit 1;
}
## Extract the dist. name from its containing directory.
sub path_dist
{
my($path) = @_;
$path =~ s{^.*/}{};
return $path;
}
## Create a path like $path/lib/Foo/Bar.pm for Foo::Bar.
sub lib_modpath
{
my($path, $modname) = @_;
$modname =~ s{::}{/}g;
return "$path/lib/$modname.pm";
}
## Create a path to a file in the containing directory, named after
## the last segment of the module name, with suffix attached.
sub dumb_modpath
{
my($path, $modname, $suffix) = @_;
$modname =~ s{^.*::}{};
return "$path/$modname$suffix";
}
## Find a source file contained in the directory that we can scrape the
## perl versions string from.
my %distmods = (
'PathTools' => 'Cwd',
'Scalar-List-Utils' => 'List::Util',
'IO-Compress' => 'IO::Compress::Gzip',
);
sub dist_srcpath
{
my($path) = @_;
my $distname = path_dist($path);
my $modname;
if(exists $distmods{$distname}){
$modname = $distmods{$distname};
}else{
$modname = $distname;
$modname =~ s/-/::/g;
}
my @srcpaths = (
lib_modpath($path, $modname),
dumb_modpath($path, $modname, '.pm'),
dumb_modpath($path, $modname, '_pm.PL'),
dumb_modpath($path, '__'.$modname.'__', '.pm'),
"$path/VERSION", # for podlators
);
for my $src (@srcpaths){
return $src if(-f $src);
}
return undef;
}
## Scrape the version string for the module file or Makefile.PL.
sub scrape_verln
{
my($srcpath) = @_;
open my $fh, '<', $srcpath or die "open: $!";
while(my $ln = <$fh>){
if($ln =~ s/^.*VERSION *=>? *//){
close $fh;
return $ln;
}
}
close $fh;
err("failed to find VERSION in $srcpath");
}
## Scrape the version string from the module source file.
sub scrape_modver
{
my($srcpath) = @_;
return scrape_verln($srcpath);
}
## Scrape the version string from the Makefile.PL. (for libnet)
sub scrape_mkplver
{
my($srcpath) = @_;
my $verln = scrape_verln($srcpath);
$verln =~ s/,/;/;
return $verln;
}
## Scrape the version string from a file inside the dist dir.
sub distpath_ver
{
my($distpath) = @_;
my $srcpath = dist_srcpath($distpath);
my $mkplpath = "$distpath/Makefile.PL";
if(defined $srcpath){
return scrape_modver($srcpath);
}elsif(-f $mkplpath){
return scrape_mkplver($mkplpath);
}else{
err("failed to scrape version from $distpath");
}
}
## Search the base path for the dist dirs and extract their respective
## version strings.
sub find_distvers
{
my($basepath) = @_;
opendir my $dh, $basepath or die "opendir: $!";
my @dirs = grep { -d $_ } map { "$basepath/$_" } grep { !/^[.]/ } readdir $dh;
closedir $dh;
my @distvers;
for my $dpath (@dirs){
push @distvers, [ path_dist($dpath), distpath_ver($dpath) ];
}
return @distvers;
}
## Maps an aref of dist name/perl version strings (perl expressions) to
## a package name and version string suitable for a PKGBUILD.
sub pkgspec
{
my($dist, $ver) = @$_;
$dist =~ tr/A-Z/a-z/;
$ver = eval $ver;
return "perl-$dist=$ver";
}
## Searches the perl source dir provided for a list of packages which
## correspond to the core distributions bundled within in.
sub perlcorepkgs
{
my($perlpath) = @_;
my @dirs = ("$perlpath/cpan", "$perlpath/dist");
my @provs;
for my $d (@dirs){
if(!-d $d){
err("$d is not a valid directory");
}
push @provs, map pkgspec, find_distvers($d);
}
return @provs;
}
## Formats the provided lines into a neatly formatted bash array. The first arg
## is the name of the bash variable to assign it to.
sub basharray
{
my $vname = shift;
## Sort entries and surround with quotes.
my @lns = sort map { qq{'$_'} } @_;
$lns[0] = "$vname=($lns[0]";
## Indent lines for OCD geeks.
if(@lns > 1){
my $ind = length($vname) + 2;
splice @lns, 1, @lns-1,
map { (' ' x $ind) . $_ } @lns[1 .. $#lns];
}
$lns[$#lns] .= ')';
return map { "$_\n" } @lns;
}
## Patch the PKGBUILD at the given path with a new provides array, overwriting
## the old one.
sub patchpb
{
my $pbpath = shift;
open my $fh, '<', $pbpath or die "open: $!";
my @lines = <$fh>;
close $fh;
my($i, $j);
for($i = 0; $i < @lines; $i++){
last if($lines[$i] =~ /^provides=/);
}
if($i == @lines){
err("failed to find provides array in PKGBUILD");
}
for($j = $i; $j < @lines; $j++){
last if($lines[$j] =~ /[)]/);
}
if($j == @lines){
err("failed to find end of provides array");
}
splice @lines, $i, $j-$i+1,
basharray('provides', grep { !/win32|next/ } @_);
## Avoid corrupting the existing PKGBUILD in case of a crash, etc.
if(-f "$pbpath.$$"){
err("pbpath.$$ temporary file already exists, please remove it.");
}
open $fh, '>', "$pbpath.$$" or die "open: $!";
print $fh @lines;
close $fh or die "close: $!";
rename "$pbpath.$$", "$pbpath" or die "rename: $!";
return;
}
## Program entrypoint.
sub main
{
if(@_ < 2){
print STDERR "usage: $0 [perl source path] [PKGBUILD path]\n";
exit 2;
}
my($perlpath, $pbpath) = @_;
if(!-f $pbpath){
err("$pbpath is not a valid file.");
}elsif(!-d $perlpath){
err("$perlpath is not a valid directory.");
}else{
patchpb($pbpath, perlcorepkgs($perlpath));
}
exit 0;
}
main(@ARGV);
# EOF

15
core/perl/perlbin.csh Normal file
View file

@ -0,0 +1,15 @@
# Set path to perl scriptdirs if they exist
# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
# Added /usr/bin/*_perl dirs for scripts
# Remove /usr/lib/perl5/*_perl/bin in next release
[ -d /usr/bin/site_perl ] && setenv PATH ${PATH}:/usr/bin/site_perl
[ -d /usr/lib/perl5/site_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/site_perl/bin
[ -d /usr/bin/vendor_perl ] && setenv PATH ${PATH}:/usr/bin/vendor_perl
[ -d /usr/lib/perl5/vendor_perl/bin ] && setenv PATH ${PATH}:/usr/lib/perl5/vendor_perl/bin
[ -d /usr/bin/core_perl ] && setenv PATH ${PATH}:/usr/bin/core_perl
# If you have modules in non-standard directories you can add them here.
#export PERLLIB=dir1:dir2

10
core/perl/perlbin.fish Normal file
View file

@ -0,0 +1,10 @@
# Set path to perl scriptdirs if they exist
# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
if status --is-login
for perldir in /usr/bin/site_perl /usr/bin/vendor_perl /usr/bin/core_perl
if test -d $perldir; and not contains $perldir $PATH
set PATH $PATH $perldir
end
end
end

18
core/perl/perlbin.sh Executable file
View file

@ -0,0 +1,18 @@
# Set path to perl scriptdirs if they exist
# https://wiki.archlinux.org/index.php/Perl_Policy#Binaries_and_scripts
# Added /usr/bin/*_perl dirs for scripts
# Remove /usr/lib/perl5/*_perl/bin in next release
[ -d /usr/bin/site_perl ] && PATH=$PATH:/usr/bin/site_perl
[ -d /usr/lib/perl5/site_perl/bin ] && PATH=$PATH:/usr/lib/perl5/site_perl/bin
[ -d /usr/bin/vendor_perl ] && PATH=$PATH:/usr/bin/vendor_perl
[ -d /usr/lib/perl5/vendor_perl/bin ] && PATH=$PATH:/usr/lib/perl5/vendor_perl/bin
[ -d /usr/bin/core_perl ] && PATH=$PATH:/usr/bin/core_perl
export PATH
# If you have modules in non-standard directories you can add them here.
#export PERLLIB=dir1:dir2

4
core/perl/upgpkg Normal file
View file

@ -0,0 +1,4 @@
upgpkg_build() {
makepkg -o
./patchprov src/perl-$pkgver PKGBUILD
}