diff --git a/recipes/perl/perl.patch b/recipes/perl/perl.patch new file mode 100644 index 0000000000000000000000000000000000000000..ab8a934db727001fd943d98cfe5ff2a4e7e943f4 --- /dev/null +++ b/recipes/perl/perl.patch @@ -0,0 +1,183 @@ +diff -ru source/mg.c source-new/mg.c +--- source/mg.c 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/mg.c 2017-08-17 14:40:37.669507085 -0700 +@@ -3034,16 +3034,16 @@ + #ifdef HAS_SETRESUID + PERL_UNUSED_RESULT(setresuid(new_uid, (Uid_t)-1, (Uid_t)-1)); + #else +- if (new_uid == PerlProc_geteuid()) { /* special case $< = $> */ ++// if (new_uid == PerlProc_geteuid()) { /* special case $< = $> */ + #ifdef PERL_DARWIN + /* workaround for Darwin's setuid peculiarity, cf [perl #24122] */ + if (new_uid != 0 && PerlProc_getuid() == 0) + PERL_UNUSED_RESULT(PerlProc_setuid(0)); + #endif +- PERL_UNUSED_RESULT(PerlProc_setuid(new_uid)); +- } else { ++// PERL_UNUSED_RESULT(PerlProc_setuid(new_uid)); ++// } else { + Perl_croak(aTHX_ "setruid() not implemented"); +- } ++// } + #endif + #endif + #endif +@@ -3067,11 +3067,11 @@ + #ifdef HAS_SETRESUID + PERL_UNUSED_RESULT(setresuid((Uid_t)-1, new_euid, (Uid_t)-1)); + #else +- if (new_euid == PerlProc_getuid()) /* special case $> = $< */ +- PERL_UNUSED_RESULT(PerlProc_setuid(new_euid)); +- else { ++// if (new_euid == PerlProc_getuid()) /* special case $> = $< */ ++// PERL_UNUSED_RESULT(PerlProc_setuid(new_euid)); ++// else { + Perl_croak(aTHX_ "seteuid() not implemented"); +- } ++// } + #endif + #endif + #endif +@@ -3095,11 +3095,11 @@ + #ifdef HAS_SETRESGID + PERL_UNUSED_RESULT(setresgid(new_gid, (Gid_t)-1, (Gid_t) -1)); + #else +- if (new_gid == PerlProc_getegid()) /* special case $( = $) */ +- PERL_UNUSED_RESULT(PerlProc_setgid(new_gid)); +- else { ++// if (new_gid == PerlProc_getegid()) /* special case $( = $) */ ++// PERL_UNUSED_RESULT(PerlProc_setgid(new_gid)); ++// else { + Perl_croak(aTHX_ "setrgid() not implemented"); +- } ++// } + #endif + #endif + #endif +@@ -3178,11 +3178,11 @@ + #ifdef HAS_SETRESGID + PERL_UNUSED_RESULT(setresgid((Gid_t)-1, new_egid, (Gid_t)-1)); + #else +- if (new_egid == PerlProc_getgid()) /* special case $) = $( */ +- PERL_UNUSED_RESULT(PerlProc_setgid(new_egid)); +- else { ++// if (new_egid == PerlProc_getgid()) /* special case $) = $( */ ++// PERL_UNUSED_RESULT(PerlProc_setgid(new_egid)); ++// else { + Perl_croak(aTHX_ "setegid() not implemented"); +- } ++// } + #endif + #endif + #endif +diff -ru source/perl.h source-new/perl.h +--- source/perl.h 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/perl.h 2017-08-17 13:14:01.806883580 -0700 +@@ -1061,7 +1061,6 @@ + #ifndef PERL_MICRO + #ifndef memchr + # ifndef HAS_MEMCHR +-# define memchr(s,c,n) ninstr((char*)(s), ((char*)(s)) + n, &(c), &(c) + 1) + # endif + #endif + #endif +diff -ru source/pp_hot.c source-new/pp_hot.c +--- source/pp_hot.c 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/pp_hot.c 2017-08-17 13:16:20.234635700 -0700 +@@ -1583,11 +1583,13 @@ + PL_delaymagic &= ~DM_EUID; + } + # endif /* HAS_SETEUID */ ++#if 0 + if (PL_delaymagic & DM_UID) { + if (PL_delaymagic_uid != PL_delaymagic_euid) + DIE(aTHX_ "No setreuid available"); + PERL_UNUSED_RESULT(PerlProc_setuid(PL_delaymagic_uid)); + } ++#endif + # endif /* HAS_SETREUID */ + #endif /* HAS_SETRESUID */ + +@@ -1619,11 +1621,13 @@ + PL_delaymagic &= ~DM_EGID; + } + # endif /* HAS_SETEGID */ ++#if 0 + if (PL_delaymagic & DM_GID) { + if (PL_delaymagic_gid != PL_delaymagic_egid) + DIE(aTHX_ "No setregid available"); + PERL_UNUSED_RESULT(PerlProc_setgid(PL_delaymagic_gid)); + } ++#endif + # endif /* HAS_SETREGID */ + #endif /* HAS_SETRESGID */ + +diff -ru source/pp_sys.c source-new/pp_sys.c +--- source/pp_sys.c 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/pp_sys.c 2017-08-17 14:57:00.983541027 -0700 +@@ -2413,7 +2413,7 @@ + TAINT_PROPER(PL_op_desc[optype]); + + if (optype == OP_IOCTL) +-#ifdef HAS_IOCTL ++#if 0 + retval = PerlLIO_ioctl(PerlIO_fileno(IoIFP(io)), func, s); + #else + DIE(aTHX_ "ioctl is not implemented"); +@@ -2705,7 +2705,7 @@ + if (!IoIFP(io)) + goto nuts; + +- PUSHi( PerlSock_shutdown(PerlIO_fileno(IoIFP(io)), how) >= 0 ); ++ PUSHi( 0 ); + RETURN; + + nuts: +@@ -2980,7 +2980,7 @@ + sv_setuid(PUSHmortal, PL_statcache.st_uid); + sv_setgid(PUSHmortal, PL_statcache.st_gid); + +-#ifdef USE_STAT_RDEV ++#if 0 + mPUSHi(PL_statcache.st_rdev); + #else + PUSHs(newSVpvs_flags("", SVs_TEMP)); +@@ -4186,7 +4186,7 @@ + + PP(pp_fork) + { +-#ifdef HAS_FORK ++#if 1 + dSP; dTARGET; + Pid_t childpid; + #ifdef HAS_SIGPROCMASK +@@ -4332,7 +4332,7 @@ + TAINT_PROPER("system"); + } + PERL_FLUSHALL_FOR_CHILD; +-#if (defined(HAS_FORK) || defined(__amigaos4__)) && !defined(VMS) && !defined(OS2) || defined(PERL_MICRO) ++#if 1 + { + #ifdef __amigaos4__ + struct UserData userdata; +@@ -5582,7 +5582,7 @@ + + PP(pp_ggrent) + { +-#ifdef HAS_GROUP ++#if 0 + dSP; + const I32 which = PL_op->op_type; + const struct group *grent; +diff -ru source/util.c source-new/util.c +--- source/util.c 2017-06-30 14:03:22.000000000 -0700 ++++ source-new/util.c 2017-08-17 14:47:03.963804576 -0700 +@@ -2842,7 +2842,7 @@ + #endif /* HAS_FORK */ + } + +-#ifndef HAS_DUP2 ++#if 0 + int + dup2(int oldfd, int newfd) + { diff --git a/recipes/perl/recipe.sh b/recipes/perl/recipe.sh new file mode 100644 index 0000000000000000000000000000000000000000..8403b17c48f06bd6844be24c43b0d5159da164f9 --- /dev/null +++ b/recipes/perl/recipe.sh @@ -0,0 +1,44 @@ +VERSION=5.24.2 +TAR=http://www.cpan.org/src/5.0/perl-$VERSION.tar.gz + +unset AR AS CC CXX LD NM OBJCOPY OBJDUMP RANLIB READELF STRIP + +function recipe_version { + echo "$VERSION" + skip=1 +} + +function recipe_update { + echo "skipping update" + skip=1 +} + +function recipe_build { + curl -L -O --time-cond perl-cross-1.1.6.tar.gz https://github.com/arsv/perl-cross/releases/download/1.1.6/perl-cross-1.1.6.tar.gz + tar --strip-components=1 -xvf perl-cross-1.1.6.tar.gz + wget -O cnf/config.sub http://git.savannah.gnu.org/cgit/config.git/plain/config.sub + sysroot="$($HOST-gcc -print-sysroot)" + ./configure --target=${HOST} --prefix='/' --sysroot="$sysroot" --disable-mod=Sys-Syslog,POSIX,Time-HiRes --with-libs='m' + sed -i "s/^#define Netdb_name_t.*/#define Netdb_name_t const char*/" config.h # XXX + sed -i 's/#define Strerror(e).*$/#define Strerror(e) strerror(e)/' config.h # + echo "#define HAS_VPRINTF" >> config.h + make LIBS=-lm + skip=1 +} + +function recipe_test { + echo "skipping test" + skip=1 +} + +function recipe_clean { + make clean + skip=1 +} + +function recipe_stage { + dest="$(realpath $1)" + make DESTDIR="$dest" install + rm -rf "$1/man" + skip=1 +}