staticperl_fmtutil_updmap #32
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: staticperl_fmtutil_updmap | |
on: workflow_dispatch | |
env: | |
URLPERL: https://www.cpan.org/src/5.0/perl-5.35.4.tar.gz | |
MAKEFLAGS: -j2 | |
jobs: | |
staticperl_fmtutil_updmap: | |
runs-on: ubuntu-20.04 | |
container: alpine:3.14 | |
steps: | |
- name: Install Prerequisites | |
run: apk add --update --no-cache libnsl libnsl-dev build-base coreutils cmake git xz wget perl gperf p7zip python3 strace && ln -sf python3 /usr/bin/python | |
- uses: actions/checkout@v2 | |
- name: Build Native Perl | |
run: | | |
export MAKEFLAGS | |
mkdir -p source build/native/perl | |
wget -nc $URLPERL -P source | |
tar -xf source/$(basename $URLPERL) --strip-components=1 --directory=build/native/perl | |
cd build/native/perl | |
sh ./Configure -sde -Dman1dir=none -Dman3dir=none -Dprefix=prefix -Aldflags=-lm -Accflags=-lm -Dstatic_ext="IO Fcntl Cwd Opcode re mro B Socket POSIX attributes Storable Data/Dumper MIME/Base64 Digest/MD5 Digest/SHA Encode Encode/CN Encode/Unicode Encode/TW Encode/JP Encode/KR Encode/Byte Encode/EBCDIC Encode/Symbol threads threads/shared Sys/Syslog Sys/Hostname Time/HiRes Time/Piece Unicode/Normalize Unicode/Collate Compress/Raw/Zlib Compress/Raw/Bzip2 PerlIO/scalar PerlIO/encoding PerlIO/via PerlIO/mmap Devel/Peek IPC/SysV File/Glob File/DosGlob Hash/Util Hash/Util/FieldHash Filter/Util/Call" -Dusedevel -Dlibs="-lpthread -ldl -lm -lutil -lc" | |
make miniperl generate_uudmap | |
make perl | |
make install | |
rm -rf prefix/man prefix/lib/*/pod/ || true | |
find prefix/lib -name '*.pod' -delete | |
find prefix -type f | |
find -name '*.a' | |
find prefix -name '*.so' | |
find prefix -name config.h | |
cd ../../.. | |
ld -r -b binary -o fmtutil.o fmtutil.pl | |
ld -r -b binary -o updmap.o updmap.pl | |
gcc -o staticperl_fmtutil_updmap staticperl_fmtutil_updmap.c fmtutil.o updmap.o -I$PWD/build/native/perl -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -Ibuild/native/perl/prefix/lib/perl5/5.35.4/x86_64-linux/CORE -Wl,-E -fstack-protector-strong -fwrapv -fno-strict-aliasing -L/usr/local/lib build/native/perl/prefix/lib/perl5/5.35.4/x86_64-linux/auto/Fcntl/Fcntl.a build/native/perl/prefix/lib/perl5/5.35.4/x86_64-linux/auto/IO/IO.a build/native/perl/prefix/lib/perl5/5.35.4/x86_64-linux/CORE/libperl.a -lpthread -ldl -lm -lutil -lc -lm | |
ldd ./staticperl_fmtutil_updmap || true | |
./staticperl_fmtutil_updmap updmap.pl --help || true | |
- name: Test Native Perl | |
run: | | |
git clone https://github.com/busytex/busyfs | |
mv build/native/perl/prefix busyfs/dist-native | |
find busyfs/dist-native -name '*.a' | |
find busyfs/dist-native -name '*.so' | |
cd busyfs | |
python packfs.py -i dist-native -o packfs.h | |
cc -shared -fPIC packfs.c -o packfs.so -ldl @packfs.h.txt | |
cd .. | |
#strace -ff -e trace=file,read,write,close perl -e 'use Cwd;' | |
#cc -shared -fPIC log_file_access_dynamic.c -o log_file_access_dynamic.so -ldl | |
#LD_PRELOAD=$PWD/log_file_access_dynamic.so perl -e 'use Cwd;' #./staticperl_fmtutil_updmap fmtutil.pl --help | |
#LD_PRELOAD=$PWD/busyfs/packfs.so strace -ff -e trace=file,read,write,close perl -e 'open (FILE, "dist-native/lib/perl5/5.35.4/x86_64-linux/Cwd.pm"); print <FILE>;' | |
#LD_PRELOAD=$PWD/busyfs/packfs.so perl -e 'open (FILE, "dist-native/lib/perl5/5.35.4/x86_64-linux/Cwd.pm"); print <FILE>;' | |
#LD_PRELOAD=$PWD/busyfs/packfs.so PERLLIB=dist-native/lib/perl5/5.35.4:dist-native/lib/perl5/5.35.4/x86_64-linux strace -ff -e trace=file,read,write,close -perl -e 'use Cwd;' | |
export PERL_DL_DEBUG=1 | |
LD_PRELOAD=$PWD/busyfs/packfs.so perl -e 'use Cwd;' | |
strace -ff -e trace=file,read,write,close perl -e 'use Cwd;' | |
#echo FAIL | |
#LD_PRELOAD=$PWD/busyfs/packfs.so PERLLIB=dist-native/lib/perl5/5.35.4:dist-native/lib/perl5/5.35.4/x86_64-linux perl -e 'use Cwd;' |