After upgrading from Perl 5.8 to 5.12, WML no longer works. The following problem occurs when running it, e.g. executing a file with a #!/usr/bin/wml header: $ ./file.wml Can't locate File/PathConvert.pm in @INC (@INC contains: /usr/lib64/wml/perl/lib/x86_64-linux /usr/lib64/wml/perl/lib /home/clange/lib/perl/lib64/perl5/site_perl/5.8.8/x86_64-linux /home/clange/lib/perl/lib64/perl5/site_perl/5.8.8 /home/clange/svn/kwarc.info/stex/trunk/bin /usr/local/lib64/perl5/site_perl/5.8.8/x86_64-linux /usr/local/lib64/perl5/site_perl/5.8.8 /usr/lib64/perl5/vendor_perl/5.8.8 /usr/lib64/perl/lib /usr/lib64/perl/lib/x86_64-linux /etc/perl /usr/lib64/perl5/site_perl/5.12.2/x86_64-linux /usr/lib64/perl5/site_perl/5.12.2 /usr/lib64/perl5/vendor_perl/5.12.2/x86_64-linux /usr/lib64/perl5/vendor_perl/5.12.2 /usr/lib64/perl5/5.12.2/x86_64-linux /usr/lib64/perl5/5.12.2 /usr/lib64/perl5/site_perl /usr/lib64/perl5/vendor_perl /usr/local/lib/site_perl .) at /usr/bin/wml line 52. BEGIN failed--compilation aborted at /usr/bin/wml line 52. (Please ignore the 5.8.8 components in the path, this is because I haven't rebooted since the Perl 5.12 upgrade.) Reproducible: Always Steps to Reproduce: 1. have the given packages installed 2. run WML Expected Results: Not sure whether any result should be _expected_ at all. IIUC the problem is that File/PathConvert is no longer maintained. WML has a bundled version, which the ebuild doesn't install. I tried to install it myself (simply extracted it from the WML tarball), but apparently it doesn't work with Perl 5.12: object version 2.30 does not match $::VERSION %_ at /usr/lib64/perl5/5.12.2/x86_64-linux/DynaLoader.pm line 223. Compilation failed in require at /usr/bin/wml line 54. BEGIN failed--compilation aborted at /usr/bin/wml line 54. I don't know how to interpret this error message, but I guess it's related to incompatible Perl versions. Unfortunately, upstream is no longer maintaining WML. Therefore, maybe, the ebuild should get a !>=dev-lang/perl-5.12 block, and eventually be removed :-(
Note: I didn't test with the (stable) previous version wml-2.0.11-r3, but I assume it would rather be worse than better.
(In reply to comment #1) > Note: I didn't test with the (stable) previous version wml-2.0.11-r3, but I > assume it would rather be worse than better. This one does not even compile. Here is the Perl-related output: ===> wml_backend/p3_eperl (all) make[2]: Entering directory `/var/tmp/paludis/dev-lang-wml-2.0.11-r3/work/wml-2.0.11/wml_backend/p3_eperl' x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_main.c /usr/bin/perl eperl_perl5_sm.pl >eperl_perl5_sm.h x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_parse.c x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_pp.c x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_sys.c x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_http.c x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_getopt.c eperl_main.c: In function 'give_readme': eperl_main.c:153: warning: format not a string literal and no format arguments eperl_main.c: In function 'give_license': eperl_main.c:158: warning: format not a string literal and no format arguments eperl_main.c: In function 'give_img_logo': eperl_main.c:166: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result eperl_main.c: In function 'give_img_powered': eperl_main.c:174: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result eperl_main.c: In function 'main': eperl_main.c:870: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result eperl_main.c:968: warning: ignoring return value of 'getcwd', declared with attribute warn_unused_result eperl_main.c:974: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result eperl_main.c:982: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result eperl_main.c:1002: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result eperl_main.c:1012: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result eperl_main.c:1112: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result eperl_main.c:1118: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result eperl_main.c:1123: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_debug.c x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_config.c x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_version.c x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_readme.c eperl_http.c: In function 'HTTP_openURLasFP': eperl_http.c:327: warning: ignoring return value of 'write', declared with attribute warn_unused_result eperl_sys.c: In function 'abspath': eperl_sys.c:438: warning: ignoring return value of 'getcwd', declared with attribute warn_unused_result eperl_sys.c:441: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result eperl_sys.c:442: warning: ignoring return value of 'getcwd', declared with attribute warn_unused_result eperl_sys.c:444: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_license.c x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_logo.c x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_powered.c set -e; \ V=`./etc/shtool version -lc -d long eperl_version.c`; \ pod2man --section=1 \ --center="Ralf S. Engelschall" \ --release="EN" \ eperl.pod |\ sed -e "s|\@V\@|$V|g" -e "s|\@prefix\@|/usr|" >eperl.1 x86_64-pc-linux-gnu-gcc -march=nocona -O2 -pipe -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -I. -c eperl_perl5.c Error: * In program cave perform install --hooks --managed-output --output-exclusivity with-others =dev-lang/wml-2.0.11-r3:0::gentoo --destination installed --replacing =dev-lang/wml-2.0.11-r3:0::installed --x-of-y 1 of 1: * When installing 'dev-lang/wml-2.0.11-r3:0::gentoo' replacing { 'dev-lang/wml-2.0.11-r3:0::installed' }: * When running an ebuild command on 'dev-lang/wml-2.0.11-r3:0::gentoo': * Install failed for 'dev-lang/wml-2.0.11-r3:0::gentoo' (paludis::ActionFailedError) x86_64-pc-linux-gnu-gcc -Wl,-E -Wl,-O1 -Wl,--as-needed -fstack-protector -L/usr/lib64/perl5/5.12.2/x86_64-linux/CORE -o eperl eperl_main.o eperl_perl5.o eperl_parse.o eperl_pp.o eperl_sys.o eperl_http.o eperl_getopt.o eperl_debug.o eperl_config.o eperl_version.o eperl_readme.o eperl_license.o eperl_logo.o eperl_powered.o /usr/lib64/perl5/5.12.2/x86_64-linux/auto/DynaLoader/DynaLoader.a -lperl -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc -lgdbm_compat make[2]: Leaving directory `/var/tmp/paludis/dev-lang-wml-2.0.11-r3/work/wml-2.0.11/wml_backend/p3_eperl' make[1]: Leaving directory `/var/tmp/paludis/dev-lang-wml-2.0.11-r3/work/wml-2.0.11/wml_backend' eperl_perl5.c: In function 'Perl5_Run': eperl_perl5.c:215: warning: format not a string literal and no format arguments eperl_perl5.c:242: warning: ignoring return value of 'getcwd', declared with attribute warn_unused_result eperl_perl5.c:249: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result x86_64-pc-linux-gnu-gcc: /usr/lib64/perl5/5.12.2/x86_64-linux/auto/DynaLoader/DynaLoader.a: No such file or directory make[2]: *** [eperl] Error 1 make[1]: *** [all] Error 1 make: *** [all] Error 1 /usr/libexec/paludis/utils/emake: emake returned error 2 !!! ERROR in dev-lang/wml-2.0.11-r3::gentoo: !!! In src_compile at line 4375 !!! emake failed !!! Call stack: !!! * src_compile (/var/tmp/paludis/dev-lang-wml-2.0.11-r3/temp/loadsaveenv:4375) !!! * ebuild_f_compile (/usr/libexec/paludis/0/src_compile.bash:51) !!! * ebuild_main (/usr/libexec/paludis/ebuild.bash:647) !!! * main (/usr/libexec/paludis/ebuild.bash:675) diefunc: making ebuild PID 15704 exit with error die trap: exiting with error. Failed install to / for dev-lang/wml-2.0.11-r3:0::gentoo replacing 2.0.11-r3:0::installed
I had a quick look and it seems that the problem is that the wml_common parts are no longer getting installed: ===> wml_common/filepathconvert (install) make[2]: Entering directory `/var/tmp/portage/dev-lang/wml-2.0.11-r6/work/wml-2.0.11/wml_common/filepathconvert' chmod: missing operand after `755' Try `chmod --help' for more information. make[2]: *** [/.exists] Error 1 make[2]: Leaving directory `/var/tmp/portage/dev-lang/wml-2.0.11-r6/work/wml-2.0.11/wml_common/filepathconvert' <=== wml_common/filepathconvert The make system doesn't abort on this error so it's not immediately obvious that this is the issue. Unfortunately I couldn't easily reproduce this or determine a fix for it. To be honest, and given the amount of patching we already do, I think that masking and then removing dev-lang/wml is probably the best thing to do. If people want to contribute patches then I'm happy to keep it around, but I won't invest my time. Bonus points for fixing the reported QA issues with wml :-/
# Hans de Graaff <graaff@gentoo.org> (6 Dec 2010) # No longer builds with perl 5.12. Various open bugs and QA issues. # Not maintained upstream since 2006. # Masked for removal on 2011-02-06 dev-lang/wml