#!/bin/bash ## src2pkg script for: perl ## ## src2pkg Copyright 2005-2011 Gilbert Ashley # # For perl-5.10, the perl-lite package is considerably larger -mostly # because of adding the ExtUtils, CPAN and Modules modules # They are needed for building extra add-ons to perl. SOURCE_NAME='perl-5.10.0.tar.bz2' ALT_NAME='perl-lite' VERSION='5.10.0' # ARCH='${ARCH}' # BUILD='1' # PRE_FIX='usr' # Any extra options go here DOCLIST='AUTHORS README Copying' ALLOW_EMPTY_FILES="YES" # PATCHLIST='./Resources/microperl-uconfig.diff' # STD_FLAGS='-O2 -march=${ARCH} -mtune=i686' AUTO_PATCH=NO INCLUDE_MANS=1 # Get the functions and configs . /usr/libexec/src2pkg/FUNCTIONS ; # do_all_processes can substitute these 16 steps: pre_process find_source make_dirs unpack_source fix_source_perms # configure_source # compile_source # fake_install EXTRA_FLAGS='' LIB_PATH="/usr/local/lib${LIBDIRSUFFIX} /usr/lib${LIBDIRSUFFIX} /lib${LIBDIRSUFFIX}" cd $SRC_DIR; if [[ "$ARCH" = "x86_64" ]] ; then # adapted from "Cross Linux From Scratch" # Configure must be told to also use lib64: patch -p1 < $PATCHES_DIR/perl-lite-patches/perl.configure.multilib.patch # "perl -V" should report that libc is in /lib64 sed -i -e '/libc/s#/lib/#/lib64/#' hints/linux.sh # make perl use lib64: echo 'installstyle="lib64/perl5"' >>hints/linux.sh fi if [[ "$QUIET" = "YES" ]] ; then echo -n $BLUE"Running Configure script - "$NORMAL #./Configure $CONFIG_OPTIONS &> /dev/null ./Configure -de \ -Dprefix=/usr \ -Dcccdlflags='-fPIC' \ -Dinstallprefix=/usr \ -Dlibpth="${LIB_PATH}" \ -Doptimize="${STD_FLAGS}" \ -Dusethreads -Duseithreads \ -Dpager='/usr/bin/less -isr' \ -Dinc_version_list='5.8.8 5.8.7 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0' \ -Darchname=${ARCH}-linux &> /dev/null else echo $BLUE"Running Configure script - "$NORMAL #./Configure $CONFIG_OPTIONS ./Configure -de \ -Dprefix=/usr \ -Dcccdlflags='-fPIC' \ -Dinstallprefix=/usr \ -Dlibpth="${LIB_PATH}" \ -Doptimize="${STD_FLAGS}" \ -Dusethreads -Duseithreads \ -Dpager='/usr/bin/less -isr' \ -Dinc_version_list='5.8.8 5.8.7 5.8.6 5.8.5 5.8.4 5.8.3 5.8.2 5.8.1 5.8.0' \ -Darchname=${ARCH}-linux fi if [[ $? -eq 0 ]] ; then echo $GREEN"Done"$NORMAL else echo $RED"FAILED configuration!"$NORMAL exit fi # Kludge for gcc-4.2.4's needlessly changed output: cat makefile | grep -v '\' > foo mv foo makefile cat x2p/makefile | grep -v '\' > foo mv foo x2p/makefile if [[ "$QUIET" = "YES" ]] ; then echo -n $BLUE"Compiling perl - "$NORMAL make &> /dev/null else echo $BLUE"Compiling perl - "$NORMAL make fi if [[ $? -eq 0 ]] ; then echo $GREEN"Done"$NORMAL else echo $RED"FAILED compilation!"$NORMAL exit fi # make the bin dir mkdir -p $PKG_DIR/usr/bin # install the perl binary cp $SRC_DIR/perl $PKG_DIR/usr/bin/perl${VERSION} ( cd $PKG_DIR/usr/bin/ ; ln -sf perl${VERSION} perl ) # make microperl just for fun # You can run very basic perl scripts with just microperl and a few scripts from the main lib dir. # (Linux kernel builds need nothing besides microperl and integer.pm!) #echo $BLUE"Compiling microperl"$NORMAL #make -f Makefile.micro regen_uconfig #make -f Makefile.micro # install a couple of useful utilities cp pod/pod2html pod/pod2man pod/pod2text $PKG_DIR/usr/bin/ cp x2p/a2p x2p/s2p $PKG_DIR/usr/bin/ ( cd $PKG_DIR/usr/bin/ ; ln -sf s2p psed ) if [[ $INCLUDE_MANS ]] ; then # make the man dir mkdir -p $MAN_DIR/man1 # We cheated and copied the man-pages from a full install since the 'installman' helper script # doesn't respect DESTDIR which makes a full compile and install of perl leave all # the uncompresssed man-pages on your system! cp $PATCHES_DIR/perl-lite-patches/perl.1 $PATCHES_DIR/perl-lite-patches/pod2html.1 $PATCHES_DIR/perl-lite-patches/pod2man.1 \ $PATCHES_DIR/perl-lite-patches/pod2text.1 $PATCHES_DIR/perl-lite-patches/a2p.1 \ $PATCHES_DIR/perl-lite-patches/s2p.1 $MAN_DIR/man1/ fi # Add components individually, according to need mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi cp lib/Config.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/Config_heavy.pl $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/Config.pod $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/Errno.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/XSLoader.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/lib.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/re.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/FileHandle.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/AutoLoader.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/SelfLoader.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/SelectSaver.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/Symbol.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/Cwd cp lib/Cwd.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/auto/Cwd/Cwd.so $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/Cwd/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/B cp lib/B.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/B/* $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/B mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/B cp lib/auto/B/B.so $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/B/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Data cp lib/Data/Dumper.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Data/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/Data/Dumper cp lib/auto/Data/Dumper/Dumper.so $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/Data/Dumper mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi cp lib/DynaLoader.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/DynaLoader cp -a lib/auto/DynaLoader/* $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/DynaLoader/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/File cp -a lib/File/* $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/File/ cp -a lib/auto/File/* $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/File/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/IO cp lib/IO.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp -a lib/IO/* $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/IO mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/IO cp -a lib/auto/IO/* $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/IO mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/Fcntl cp lib/Fcntl.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/auto/Fcntl/Fcntl.so $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/Fcntl/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/File/Glob cp lib/auto/File/Glob/Glob.so $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/File/Glob/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/POSIX cp lib/POSIX.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp -a lib/auto/POSIX/* $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/POSIX/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/Socket cp lib/Socket.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/auto/Socket/Socket.so $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/Socket/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Carp cp lib/Carp.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ cp lib/Carp/Heavy.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Carp/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Exporter cp lib/Exporter/Heavy.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Exporter/ cp lib/Exporter.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Getopt cp lib/Getopt/Long.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Getopt/ cp lib/Getopt/Std.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Getopt/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/IPC cp lib/IPC/Cmd.pm $PKG_DIR/usr/lib/perl5/${VERSION}/IPC/ cp lib/IPC/Open2.pm $PKG_DIR/usr/lib/perl5/${VERSION}/IPC/ cp lib/IPC/Open3.pm $PKG_DIR/usr/lib/perl5/${VERSION}/IPC/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/IPC cp lib/IPC/Msg.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/IPC/ cp lib/IPC/Semaphore.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/IPC/ cp lib/IPC/SysV.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/IPC/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/IPC cp lib/auto/IO/IO.so $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/IPC mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/List cp lib/List/Util.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/List/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/List/Util cp lib/auto/List/Util/Util.so $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/auto/List/Util mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Scalar cp lib/Scalar/Util.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Scalar/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Text cp lib/Text/Abbrev.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Text/ cp lib/Text/Balanced.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Text/ cp lib/Text/ParseWords.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Text/ cp lib/Text/Tabs.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Text/ cp lib/Text/Wrap.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Text/ cp lib/attributes.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/base.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/bytes.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/bytes_heavy.pl $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/constant.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/fields.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/integer.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/locale.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/overload.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/strict.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/utf8.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/utf8_heavy.pl $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/vars.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/warnings.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/warnings cp lib/warnings/register.pm $PKG_DIR/usr/lib/perl5/${VERSION}/warnings/ mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Class cp lib/Class/Struct.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Class/ cp lib/Class/ISA.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Class/ # # more additions mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Encode cp lib/Encode/*.e2x lib/Encode/*.pod lib/Encode/*.h $PKG_DIR/usr/lib/perl5/${VERSION}/Encode mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Encode cp lib/Encode/*.pm $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Encode/ cp -a lib/Encode/CN $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Encode/ cp -a lib/Encode/JP $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Encode/ cp -a lib/Encode/KR $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Encode/ cp -a lib/Encode/MIME $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Encode/ cp -a lib/Encode/Unicode $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/Encode/ # for perl-5.10.0 added lib/File/Path.pm above and the following: mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Tie cp lib/Tie/*.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Tie cp -a lib/Tie/Hash $PKG_DIR/usr/lib/perl5/${VERSION}/Tie # Adding ExtUtils, CPAN and Modules adds about 4MB to the package, # but you'll need them if you want to extend perl with more modules, etc mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils/MakeMaker # MakeMaker lets you build extra modules cp lib/ExtUtils/*.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils cp lib/ExtUtils/typemap $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils cp lib/ExtUtils/xsubpp $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils cp lib/ExtUtils/MANIFEST.SKIP $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils cp lib/ExtUtils/*.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils cp -a lib/ExtUtils/CBuilder $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils cp -a lib/ExtUtils/Command $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils cp -a lib/ExtUtils/Constant $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils cp -a lib/ExtUtils/Liblist $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils cp -a lib/ExtUtils/MakeMaker $PKG_DIR/usr/lib/perl5/${VERSION}/ExtUtils # MakeMaker takes a lot of extras -most of these are probably also needed elswhere cp lib/DirHandle.pm $PKG_DIR/usr/lib/perl5/${VERSION} cp lib/Exporter.pm $PKG_DIR/usr/lib/perl5/${VERSION} cp lib/English.pm $PKG_DIR/usr/lib/perl5/${VERSION} mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/CORE cp *.h $PKG_DIR/usr/lib/perl5/${VERSION}/${ARCH}-linux-thread-multi/CORE/ cp lib/AutoSplit.pm $PKG_DIR/usr/lib/perl5/${VERSION} mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Pod cp lib/Pod/*.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Pod cp -a lib/Pod/Simple.pod $PKG_DIR/usr/lib/perl5/${VERSION}/Pod cp -a lib/Pod/Perldoc $PKG_DIR/usr/lib/perl5/${VERSION}/Pod rm -rf $PKG_DIR/usr/lib/perl5/${VERSION}/Pod/Perldoc/t cp -a lib/Pod/Simple $PKG_DIR/usr/lib/perl5/${VERSION}/Pod rm -rf $PKG_DIR/usr/lib/perl5/${VERSION}/Pod/Simple/t cp -a lib/Pod/Text $PKG_DIR/usr/lib/perl5/${VERSION}/Pod cp lib/subs.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/UNIVERSAL.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ # CPAN mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/CPAN cp lib/CPAN.pm $PKG_DIR/usr/lib/perl5/${VERSION}/ cp lib/CPAN/*.pm $PKG_DIR/usr/lib/perl5/${VERSION}/CPAN cp -a lib/CPAN/API $PKG_DIR/usr/lib/perl5/${VERSION}/CPAN cp -a lib/CPAN/Kwalify $PKG_DIR/usr/lib/perl5/${VERSION}/CPAN cp lib/CPAN/bin/cpan $PKG_DIR/usr/bin chmod 755 $PKG_DIR/usr/bin/cpan mkdir -p $MAN_DIR/man3 cp $PATCHES_DIR/perl-lite-patches/CPAN.3 $MAN_DIR/man3 # Module mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Module cp lib/Module/*.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Module cp -a lib/Module/Build $PKG_DIR/usr/lib/perl5/${VERSION}/Module rm -rf $PKG_DIR/usr/lib/perl5/${VERSION}/Module/scripts rm -rf $PKG_DIR/usr/lib/perl5/${VERSION}/Module/t rm -f $PKG_DIR/usr/lib/perl5/${VERSION}/Module/Changes mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Module/Load cp -a lib/Module/Load/Conditional.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Module/Load mkdir -p $PKG_DIR/usr/lib/perl5/${VERSION}/Module/Pluggable cp -a lib/Module/Pluggable/Object.pm $PKG_DIR/usr/lib/perl5/${VERSION}/Module/Pluggable # remove these empty files ( cd $PKG_DIR ; find -name "*.exists" -exec rm -f {} \; ) fix_pkg_perms strip_bins create_docs compress_man_pages make_description make_doinst make_package post_process # src2pkg - Copyright 2005-2007 Gilbert Ashley ## See the documentation for more help and examples. Below are some of # the most common Extras and Options for easy cut-and-paste use. # EXTRA_CONFIGS='' PRE_FIX='' DOCLIST='' # MAKE_COMMAND='' INSTALL_LINE='' # SHELL_INSTALL='YES' CORRECT_PERMS='NO'