Skip to content

Commit

Permalink
Added perl-92
Browse files Browse the repository at this point in the history
  • Loading branch information
st3fan committed Nov 8, 2013
1 parent a5957b2 commit 020a239
Show file tree
Hide file tree
Showing 83 changed files with 3,605 additions and 0 deletions.
219 changes: 219 additions & 0 deletions perl-92/5.12/GNUmakefile
@@ -0,0 +1,219 @@
##---------------------------------------------------------------------
# GNUmakefile for perl
# Call Makefile to do the work, but for the install case, unpack the
# tarball to create the project source directory
##---------------------------------------------------------------------
PROJECT = perl
VERSION = 5.12.5
COMPATVERSIONS =
MODSUFFIX = -mod
#TARVERSION :=

PWD = $(shell pwd)
ifndef DSTROOT
ifdef DESTDIR
export DSTROOT = $(shell mkdir -p '$(DESTDIR)' && echo '$(DESTDIR)')
else
export DSTROOT = /
endif
endif
ifndef OBJROOT
export OBJROOT = $(shell mkdir -p '$(PWD)/OBJROOT' && echo '$(PWD)/OBJROOT')
endif
ifndef SRCROOT
export SRCROOT = $(PWD)
endif
ifndef SYMROOT
export SYMROOT = $(shell mkdir -p '$(PWD)/SYMROOT' && echo '$(PWD)/SYMROOT')
endif
ifndef RC_ARCHS
export RC_ARCHS = $(shell arch)
export RC_$(RC_ARCHS) = YES
endif
ifndef RC_CFLAGS
export RC_CFLAGS = $(foreach A,$(RC_ARCHS),-arch $(A)) $(RC_NONARCH_CFLAGS)
endif
ifndef RC_NONARCH_CFLAGS
export RC_NONARCH_CFLAGS = -pipe
endif
ifndef RC_ProjectName
export RC_ProjectName = $(PROJECT)
endif
export ENV_PERL := /System/Library/Perl
export ENV_PERL_ARCHNAME := darwin-thread-multi-2level
export ENV_PERL_BASE_VERSION := $(basename $(VERSION))
export ENV_PERL_VERSION := $(VERSION)

FIX = fix
ifdef TARVERSION
PROJVERS = $(PROJECT)-$(TARVERSION)
else
PROJVERS = $(PROJECT)-$(VERSION)
endif
ifeq ($(MAKECMDGOALS),custominstallsrc)
TARBALLPATTERN := $(PROJVERS).tar.*
RETARBALL = $(subst .tar.,$(MODSUFFIX).tar.,$(TARBALL))
else
TARBALLPATTERN := $(PROJVERS)$(MODSUFFIX).tar.*
endif
TARBALL := $(shell cd '$(SRCROOT)' && ls $(TARBALLPATTERN))
ifeq "$(suffix $(TARBALL))" ".bz2"
TARARGS := xojf
ifeq ($(MAKECMDGOALS),custominstallsrc)
RETARARGS := cjf
endif
else
TARARGS := xozf
ifeq ($(MAKECMDGOALS),custominstallsrc)
RETARARGS := czf
endif
endif

ARCHLIB = $(ENV_PERL)/$(ENV_PERL_BASE_VERSION)/$(ENV_PERL_ARCHNAME)
EXTRAS = $(ENV_PERL)/Extras
EXTRASARCH = $(EXTRASLIB)/$(ENV_PERL_ARCHNAME)
EXTRASLIB = $(EXTRAS)/$(ENV_PERL_BASE_VERSION)
LIBRARYPERL = /Library/Perl/$(ENV_PERL_BASE_VERSION)
APPENDFILE = AppendToPath
PREPENDFILE = PrependToPath
NONLP = No_Network_Library_Perl
PRIVLIB = $(ENV_PERL)/$(ENV_PERL_BASE_VERSION)

UPDATES := /Library/Perl/Updates
UPDATESARCH := $(UPDATES)/$(ENV_PERL_VERSION)/$(ENV_PERL_ARCHNAME)
UPDATESLIB := $(UPDATES)/$(ENV_PERL_VERSION)

no_target: $(OBJROOT)/$(PROJECT) build

build:
$(MAKE) -C '$(OBJROOT)' -f Makefile SRCROOT='$(OBJROOT)' \
OBJROOT='$(OBJROOT)/$(PROJECT)' DSTROOT='$(DSTROOT)' \
SYMROOT='$(SYMROOT)' RC_ARCHS='$(RC_ARCHS)' \
PREPENDFILE='$(PREPENDFILE)' APPENDFILE='$(APPENDFILE)' \
NONLP='$(NONLP)' \
EXTRASLIB='$(EXTRASLIB)' EXTRASARCH='$(EXTRASARCH)' \
UPDATESLIB='$(UPDATESLIB)' UPDATESARCH='$(UPDATESARCH)' \
DESTDIR=$(DSTROOT)

OSV = /usr/local/OpenSourceVersions
OSL = /usr/local/OpenSourceLicenses

install: $(OBJROOT)/$(PROJECT) installperl installperlupdates installstrip fixupperl installopensource

installopensource:
install -d $(DSTROOT)$(OSV)
install -m 0644 $(SRCROOT)/$(PROJECT).plist $(DSTROOT)$(OSV)
install -d $(DSTROOT)$(OSL)
install -m 0644 $(OBJROOT)/$(PROJECT)/Artistic $(DSTROOT)$(OSL)/perl.txt

ifneq "$(RC_XBS)" "YES"
MOREARGS += GnuNoBuild=YES
endif
ifneq "$(shell id -u)" "0"
MOREARGS += GnuNoChown=YES
endif
installperl:
$(MAKE) -C '$(OBJROOT)' -f Makefile install SRCROOT='$(OBJROOT)' \
OBJROOT='$(OBJROOT)/$(PROJECT)' DSTROOT='$(DSTROOT)' \
SYMROOT='$(SYMROOT)' RC_ARCHS='$(RC_ARCHS)' \
PREPENDFILE='$(PREPENDFILE)' APPENDFILE='$(APPENDFILE)' \
NONLP='$(NONLP)' \
EXTRASLIB='$(EXTRASLIB)' EXTRASARCH='$(EXTRASARCH)' \
UPDATESLIB='$(UPDATESLIB)' UPDATESARCH='$(UPDATESARCH)' \
DESTDIR=$(DSTROOT) $(MOREARGS)
sed -e 's/@ARCHFLAGS@/$(ARCHFLAGS)/g' \
-e 's,@ARCHLIB@,$(ARCHLIB),g' \
-e 's,@EXTRASARCH@,$(EXTRASARCH),g' \
-e 's,@EXTRASLIB@,$(EXTRASLIB),g' \
-e 's,@PRIVLIB@,$(PRIVLIB),g' \
-e 's,@UPDATESARCH@,$(UPDATESARCH),g' \
-e 's,@UPDATESLIB@,$(UPDATESLIB),g' \
'$(SRCROOT)/fix/Config_heavy.pl.ex' \
| ex - '$(OBJROOT)/$(PROJECT)/lib/Config_heavy.pl'
sed -e 's/@ARCHFLAGS@/$(ARCHFLAGS)/g' \
-e 's,@ARCHLIB@,$(ARCHLIB),g' \
-e 's,@EXTRASARCH@,$(EXTRASARCH),g' \
-e 's,@EXTRASLIB@,$(EXTRASLIB),g' \
-e 's,@PRIVLIB@,$(PRIVLIB),g' \
-e 's,@UPDATESARCH@,$(UPDATESARCH),g' \
-e 's,@UPDATESLIB@,$(UPDATESLIB),g' \
'$(SRCROOT)/fix/Config_heavy.pl.ex' \
| ex - '$(DSTROOT)/$(ENV_PERL)/$(ENV_PERL_BASE_VERSION)/$(ENV_PERL_ARCHNAME)/Config_heavy.pl'
install -d '$(DSTROOT)$(ENV_UPDATESLIB)'
cp $(UPDATES_README) $(DSTROOT)$(ENV_UPDATESLIB)/ReadMe.txt

installperlupdates:
DYLD_LIBRARY_PATH='$(DSTROOT)$(ARCHLIB)/CORE' \
PATH='$(DSTROOT)/usr/bin:$(PATH)' PERL5LIB='$(DSTROOT)$(PRIVLIB)' \
$(MAKE) -C '$(OBJROOT)/updates' install \
OBJROOT='$(OBJROOT)/updates' DSTROOT='$(DSTROOT)' \
SYMROOT='$(SYMROOT)' RC_ARCHS='$(RC_ARCHS)'

DSYMUTIL := $(shell xcrun -find dsymutil)
installstrip:
@set -x && \
cd $(DSTROOT) && \
find . -type f | xargs file | fgrep 'Mach-O' | grep -v '):[ ]' | sed -e 's/: .*//' -e 's,^\./,,' > $(SYMROOT)/strip.list && \
cpio -pdmv $(SYMROOT) < $(SYMROOT)/strip.list && \
strip -x `cat $(SYMROOT)/strip.list`
@set -x && \
cd $(SYMROOT) && \
for i in `cat strip.list`; do \
$(DSYMUTIL) $$i || exit 1; \
done

fixupperl:
install -d '$(DSTROOT)$(LIBRARYPERL)'
echo '$(EXTRASLIB)' > '$(DSTROOT)$(LIBRARYPERL)/$(APPENDFILE)'
@set -x && for i in $(COMPATVERSIONS); do \
echo /Library/Perl/$$i >> '$(DSTROOT)$(LIBRARYPERL)/$(APPENDFILE)'; \
done
touch '$(DSTROOT)$(LIBRARYPERL)/$(NONLP)'

##---------------------------------------------------------------------
# 6476113: doio.c.ed and perlio.c.ed are used to fix this bug, which should
# hopefully be fixed in a future version of perl.
##---------------------------------------------------------------------
$(OBJROOT)/$(PROJECT):
@set -x && \
cd '$(OBJROOT)' && \
gnutar $(TARARGS) '$(TARBALL)' && \
rm -rf $(PROJECT) && \
mv $(PROJVERS) $(PROJECT) && \
cat hints.append >> $(PROJECT)/hints/darwin.sh && \
ed - $(PROJECT)/cpan/CPAN/lib/CPAN/HandleConfig.pm < fix/lib_CPAN_HandleConfig.pm.ed && \
ed - $(PROJECT)/cpan/DB_File/config.in < fix/cpan_DB_File_config.in.ed && \
ed - $(PROJECT)/dist/Pod-Perldoc/lib/Pod/Perldoc.pm < fix/lib_Pod_Perldoc.pm.ed && \
ed - $(PROJECT)/dist/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm < fix/lib_Pod_Perldoc_ToMan.pm.ed && \
ed - $(PROJECT)/doio.c < fix/doio.c.ed && \
ed - $(PROJECT)/ext/DynaLoader/dl_dlopen.xs < fix/dl_dlopen.xs.ed && \
ed - $(PROJECT)/handy.h < fix/handy.h.ed && \
ed - $(PROJECT)/hints/darwin.sh < fix/darwin.sh.ed && \
ed - $(PROJECT)/hints/darwin.sh < fix/darwin42.sh.ed && \
ed - $(PROJECT)/patchlevel.h < fix/patchlevel.h.ed && \
ed - $(PROJECT)/perl.c < fix/perl.c.ed && \
ed - $(PROJECT)/perlio.c < fix/perlio.c.ed && \
sed -e 's/@VERSION@/$(VERSION)/g' \
-e 's/@VERSION_DEFAULT@/$(ENV_PERL_BASE_VERSION)/g' \
-e 's/@VERSION_ALT@/$(ENV_VERSION_ALT)/g' \
fix/README.macosx.ed | ed - $(PROJECT)/README.macosx
patch -d '$(OBJROOT)/$(PROJECT)' -i '$(OBJROOT)/fix/CVE-2013-1667-rehash-5.12.5.patch' -p1 -F0

ifneq "$(RC_XBS)" "YES"
clean:
rm -rf $(OBJROOT) $(SYMROOT)
endif

##---------------------------------------------------------------------
# perly.h is generated with a GPL3+special-exception license. So we unpack
# the tarball, run "perl regen_perly.pl" to regenerate perly.h (with
# GPL2+special-exception license from bison 2.3), and repack.
##---------------------------------------------------------------------
custominstallsrc:
gnutar $(TARARGS) '$(TARBALL)'
(cd $(PROJVERS) && perl regen_perly.pl)
gnutar $(RETARARGS) '$(RETARBALL)' $(PROJVERS)
rm -rf $(PROJVERS) '$(TARBALL)'

.DEFAULT:
@$(MAKE) -f Makefile $@
64 changes: 64 additions & 0 deletions perl-92/5.12/Makefile
@@ -0,0 +1,64 @@
##--------------------------------------------------------------------------
# Makefile for perl
##--------------------------------------------------------------------------
# Wilfredo Sanchez | wsanchez@apple.com
# I wish they'd just use autoconf. This is hairy.
# Modified by Edward Moy <emoy@apple.com>
##--------------------------------------------------------------------------

# Project info
Project = perl
UserType = Developer
ToolType = Commands
##--------------------------------------------------------------------------
# env_no_rc_trace is a shell script that removes RC_TRACE_ARCHIVES and
# RC_TRACE_DYLIBS from the environment before exec-ing the argument.
# This is necessary because otherwise B&I logging messages will get into
# the cppsymbols value in Config.pm and break h2ph (3093501).
##--------------------------------------------------------------------------
Configure = '$(TOPSRCROOT)/env_no_rc_trace' '$(BuildDirectory)'/Configure
Extra_Environment = HTMLDIR='$(Install_HTML)' AR='$(TOPSRCROOT)/fix/ar.sh'
Extra_Install_Flags = HTMLDIR='$(RC_Install_HTML)' HTMLROOT='$(Install_HTML)'
GnuAfterInstall = zap-sitedirs make-extra-links
ifeq "$(RC_XBS)" "YES"
GnuNoBuild = YES
endif

# It's a GNU Source project
# Well, not really but we can make it work.
include $(MAKEFILEPATH)/CoreOS/ReleaseControl/GNUSource.make

# Override compiler setting from GNUSource.make to use those set in GNUmakefile
override CC = $(MY_CC)

Install_Target = install
CC_Optimize =
Configure_Flags = -ds -e -Dprefix='$(Install_Prefix)' -Dccflags='$(CFLAGS)' -Dldflags='$(LDFLAGS)' -Dman3ext=3pm -Duseithreads -Duseshrplib -Dinc_version_list=none -Dcc=$(MY_CC)

##---------------------------------------------------------------------
# Patch config.h, Makefile and others just after running configure
##---------------------------------------------------------------------
ConfigStamp2 = $(ConfigStamp)2

configure:: $(ConfigStamp2)

$(ConfigStamp2): $(ConfigStamp)
$(_v) sed -e 's/@PREPENDFILE@/$(PREPENDFILE)/g' \
-e 's/@APPENDFILE@/$(APPENDFILE)/g' \
-e 's/@NONLP@/$(NONLP)/g' \
-e 's,@UPDATESLIB@,$(UPDATESLIB),g' \
-e 's/@VERSION@/$(ENV_PERL_BASE_VERSION)/g' \
'$(SRCROOT)/fix/config.h.ed' \
| ed - '${BuildDirectory}/config.h'
$(_v) ed - '${BuildDirectory}/Makefile' < '$(SRCROOT)/fix/Makefile.ed'
$(_v) ed - '${BuildDirectory}/GNUmakefile' < '$(SRCROOT)/fix/Makefile.ed'
$(_v) ed - '${BuildDirectory}/cflags' < '$(SRCROOT)/fix/cflags.ed'
$(_v) sed 's/@VERSION@/$(ENV_PERL_BASE_VERSION)/g' $(SRCROOT)/fix/perlmain.c.ed | ed - ${BuildDirectory}/perlmain.c
$(_v) $(TOUCH) $(ConfigStamp2)

zap-sitedirs:
$(_v) $(RMDIR) '$(DSTROOT)$(NSLOCALDIR)$(NSLIBRARYSUBDIR)'

make-extra-links:
$(_v) $(LN) '$(DSTROOT)/usr/share/man/man1/perl.1' '$(DSTROOT)/usr/share/man/man1/perl$(ENV_PERL_BASE_VERSION).1'
$(_v) $(LN) '$(DSTROOT)/usr/share/man/man1/perl.1' '$(DSTROOT)/usr/share/man/man1/perl$(ENV_PERL_VERSION).1'

0 comments on commit 020a239

Please sign in to comment.