It is a shame to see Perl tbz2 package is two and an half times bigger
than Python one, yet we use Perl almost only for autotools on embedded
Gentoo. I did some research on the Web about reducing Perl size.
I found out at least three distributions shipping a binary package
named "perl-base": Debian (I check the testing branch, as stable is
synonym for outdated), Mandr* (looked at their RPM spec on CVS) and
Connectiva (before Mandr*soft bought, checked from their 5.8.3-62256cl
SRPM), extracted the associated file list for each, adapted them,
merged them and replaced hard-coded with variables. The resulting file
looks like a snippet from a shell script, that should play well with
the current ebuild. I did not produce a modified ebuild yet. Whether I
or someone else prepared a testing ebuild is not important. I want to
test if the selected subset of files is good enough for autotools.
For highly embedded environments, there is also the possibility to
ship miniperl, the tiny Perl used by the Perl build system itself. I
found this in the Perl spec file from Connectiva, after make install:
# Now we can use the miniperl
install -m 755 miniperl %{buildroot}%{_bindir}/miniperl
Translated to: cd ${S};dobin miniperl
prefix=/usr
bindir=${prefix}/bin
mandir=${prefix}/share/man
perlroot="${prefix}/lib/perl5"
# myarch and mythreading are defined inside src_configure()
fullarch="${myarch}${mythreading}"
MINIMAL_PERL_INSTALL="
${bindir}/perl
${bindir}/perl5
${bindir}/perl${PV}
${mandir}/man1/perl.1*
${perlroot}/${PV}/attributes.pm
${perlroot}/${PV}/AutoLoader.pm
${perlroot}/${PV}/autouse.pm
${perlroot}/${PV}/base.pm
${perlroot}/${PV}/bigint.pm
${perlroot}/${PV}/bignum.pm
${perlroot}/${PV}/bigrat.pm
${perlroot}/${PV}/blib.pm
${perlroot}/${PV}/bytes_heavy.pl
${perlroot}/${PV}/bytes.pm
${perlroot}/${PV}/Carp/Heavy.pm
${perlroot}/${PV}/Carp.pm
${perlroot}/${PV}/charnames.pm
${perlroot}/${PV}/constant.pm
${perlroot}/${PV}/diagnostics.pm
${perlroot}/${PV}/DirHandle.pm
${perlroot}/${PV}/Exporter/Heavy.pm
${perlroot}/${PV}/Exporter.pm
${perlroot}/${PV}/fields.pm
${perlroot}/${PV}/File/Basename.pm
${perlroot}/${PV}/File/Find.pm
${perlroot}/${PV}/FileHandle.pm
${perlroot}/${PV}/File/Path.pm
${perlroot}/${PV}/File/Spec.pm
${perlroot}/${PV}/File/Spec/Unix.pm
${perlroot}/${PV}/filetest.pm
${perlroot}/${PV}/${fullarch}/asm/unistd.ph
${perlroot}/${PV}/${fullarch}/attrs.pm
${perlroot}/${PV}/${fullarch}/auto/attrs
${perlroot}/${PV}/${fullarch}/auto/Cwd
${perlroot}/${PV}/${fullarch}/auto/Cwd/Cwd.so
${perlroot}/${PV}/${fullarch}/auto/Data/Dumper
${perlroot}/${PV}/${fullarch}/auto/Data/Dumper/Dumper.so
${perlroot}/${PV}/${fullarch}/auto/DynaLoader
${perlroot}/${PV}/${fullarch}/auto/DynaLoader/dl_findfile.al
${perlroot}/${PV}/${fullarch}/auto/Fcntl
${perlroot}/${PV}/${fullarch}/auto/File/Glob
${perlroot}/${PV}/${fullarch}/auto/File/Glob/Glob.so
${perlroot}/${PV}/${fullarch}/auto/IO
${perlroot}/${PV}/${fullarch}/auto/IO/IO.so
${perlroot}/${PV}/${fullarch}/auto/POSIX/autosplit.ix
${perlroot}/${PV}/${fullarch}/auto/POSIX/load_imports.al
${perlroot}/${PV}/${fullarch}/auto/POSIX/POSIX.bs
${perlroot}/${PV}/${fullarch}/auto/POSIX/POSIX.so
${perlroot}/${PV}/${fullarch}/auto/POSIX/tmpfile.al
${perlroot}/${PV}/${fullarch}/auto/re
${perlroot}/${PV}/${fullarch}/auto/re/re.so
${perlroot}/${PV}/${fullarch}/auto/Socket
${perlroot}/${PV}/${fullarch}/auto/Socket/Socket.so
${perlroot}/${PV}/${fullarch}/auto/Storable/autosplit.ix
${perlroot}/${PV}/${fullarch}/auto/Storable/_retrieve.al
${perlroot}/${PV}/${fullarch}/auto/Storable/retrieve.al
${perlroot}/${PV}/${fullarch}/auto/Storable/Storable.so
${perlroot}/${PV}/${fullarch}/auto/Storable/_store.al
${perlroot}/${PV}/${fullarch}/auto/Storable/store.al
${perlroot}/${PV}/${fullarch}/auto/threads
${perlroot}/${PV}/${fullarch}/B/Deparse.pm
${perlroot}/${PV}/${fullarch}/bits/syscall.ph
${perlroot}/${PV}/${fullarch}/B.pm
${perlroot}/${PV}/${fullarch}/Config.pm
${perlroot}/${PV}/${fullarch}/CORE/libperl.so
${perlroot}/${PV}/${fullarch}/Cwd.pm
${perlroot}/${PV}/${fullarch}/Data/Dumper.pm
${perlroot}/${PV}/${fullarch}/DynaLoader.pm
${perlroot}/${PV}/${fullarch}/encoding.pm
${perlroot}/${PV}/${fullarch}/Errno.pm
${perlroot}/${PV}/${fullarch}/Fcntl.pm
${perlroot}/${PV}/${fullarch}/File/Glob.pm
${perlroot}/${PV}/${fullarch}/_h2ph_pre.ph
${perlroot}/${PV}/${fullarch}/IO/File.pm
${perlroot}/${PV}/${fullarch}/IO/Handle.pm
${perlroot}/${PV}/${fullarch}/IO/Pipe.pm
${perlroot}/${PV}/${fullarch}/IO.pm
${perlroot}/${PV}/${fullarch}/IO/Seekable.pm
${perlroot}/${PV}/${fullarch}/IO/Select.pm
${perlroot}/${PV}/${fullarch}/IO/Socket.pm
${perlroot}/${PV}/${fullarch}/lib.pm
${perlroot}/${PV}/${fullarch}/NDBM_File.pm
${perlroot}/${PV}/${fullarch}/ops.pm
${perlroot}/${PV}/${fullarch}/POSIX.pm
${perlroot}/${PV}/${fullarch}/re.pm
${perlroot}/${PV}/${fullarch}/Socket.pm
${perlroot}/${PV}/${fullarch}/Storable.pm
${perlroot}/${PV}/${fullarch}/syscall.ph
${perlroot}/${PV}/${fullarch}/sys/syscall.ph
${perlroot}/${PV}/${fullarch}/threads
${perlroot}/${PV}/${fullarch}/threads.pm
${perlroot}/${PV}/${fullarch}/XSLoader.pm
${perlroot}/${PV}/Getopt/Long.pm
${perlroot}/${PV}/Getopt/Std.pm
${perlroot}/${PV}/if.pm
${perlroot}/${PV}/integer.pm
${perlroot}/${PV}/IO/Socket/INET.pm
${perlroot}/${PV}/IO/Socket/UNIX.pm
${perlroot}/${PV}/IPC/Open2.pm
${perlroot}/${PV}/IPC/Open3.pm
${perlroot}/${PV}/less.pm
${perlroot}/${PV}/List/Util.pm
${perlroot}/${PV}/locale.pm
${perlroot}/${PV}/open.pm
${perlroot}/${PV}/overload.pm
${perlroot}/${PV}/PerlIO.pm
${perlroot}/${PV}/Scalar/Util.pm
${perlroot}/${PV}/SelectSaver.pm
${perlroot}/${PV}/sigtrap.pm
${perlroot}/${PV}/sort.pm
${perlroot}/${PV}/strict.pm
${perlroot}/${PV}/subs.pm
${perlroot}/${PV}/Symbol.pm
${perlroot}/${PV}/Text/ParseWords.pm
${perlroot}/${PV}/Text/Tabs.pm
${perlroot}/${PV}/Text/Wrap.pm
${perlroot}/${PV}/Time/Local.pm
${perlroot}/${PV}/unicore/Canonical.pl
${perlroot}/${PV}/unicore/Exact.pl
${perlroot}/${PV}/unicore/lib/gc_sc/Digit.pl
${perlroot}/${PV}/unicore/lib/gc_sc/Word.pl
${perlroot}/${PV}/unicore/PVA.pl
${perlroot}/${PV}/unicore/To/Fold.pl
${perlroot}/${PV}/unicore/To/Lower.pl
${perlroot}/${PV}/unicore/To/Upper.pl
${perlroot}/${PV}/utf8_heavy.pl
${perlroot}/${PV}/utf8.pm
${perlroot}/${PV}/vars.pm
${perlroot}/${PV}/vmsish.pm
${perlroot}/${PV}/warnings
${perlroot}/${PV}/warnings.pm
${perlroot}/${PV}/warnings/register.pm"
if use ia64; then
MINIMAL_PERL_INSTALL="${MINIMAL_PERL_INSTALL}
${perlroot}/${PV}/${fullarch}/asm/break.ph"
elif use amd64; then
MINIMAL_PERL_INSTALL="${MINIMAL_PERL_INSTALL}
${perlroot}/${PV}/${fullarch}/asm-i386/unistd.ph"
${perlroot}/${PV}/${fullarch}/asm-x86_64/unistd.ph"
fi