Re: [bug #45759] Can't find Texinfo::ModulePath
On 17 August 2015 at 12:57, Gavin Smithwrote: > On 17 August 2015 at 12:48, Patrice Dumas wrote: >> Ok. Here is an updated patch with a new simple test for XSParagraph. >> It doesn't work, it cannot find XSParagraph::new. I tried to show the >> methods, but none showed up... > > The module name is, at the moment, not "XSParagraph", but > "Texinfo::Convert::XSParagraph::XSParagraph". I've been planning on > switching things around so it is accessed as > "Texinfo::Convert::Paragraph"; I haven't done it yet though. Done, so the build system for a standalone module may not work any more.
Re: [bug #45759] Can't find Texinfo::ModulePath
On Sat, Aug 15, 2015 at 04:51:23PM +0200, Patrice Dumas wrote: On Fri, Aug 14, 2015 at 10:12:07PM +, Karl Berry wrote: I'm not sure what the Makefile.PL is doing there; As I understood it, it was for the sake of making a texi2any Perl module that could be uploaded to CPAN and installed in the normal CPAN way. (I don't believe that has actually happened yet, but that was the theory.) But with the XS module, it is probable that it does not work anymore, probably some changes are needed for XS packages. I'll check if it still works without change. I checked and unsurprisingly it didn't work. I tried to build the .xs file from the tp/Makefile.PL, but I did not succeed, and information in internet and in the MakeMaker documentation is scarce and nobody seems to build .xs files from subdirectories. I had a bit more success building recursively XSParagraph after updating the XSParagraph Makefile.PL. Not complete success, though. I then tried to build XSParagraph as a standalone module first, from within tp/Texinfo/Convert/XSParagraph, with the idea that if this works, building it as part of tp/Makefile.PL could be possible. The gnulib files do not build, but I think that they are not mandatory and that we probably cannot rely on gnulib for a standalone module. ldd on the .so file do not show anything suspect. The undefined symbols seem to be either from libc or perl, which I guess are loaded somehow when using xs files. I modified XSParagraph.pm to load the .so file, but it didn't work fully: Running Mkbootstrap for XSParagraph () chmod 644 XSParagraph.bs PERL_DL_NONLAZY=1 /usr/bin/perl -MExtUtils::Command::MM -MTest::Harness -e undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch') t/*.t t/XSParagraph.t .. 1/1 # Failed test 'use XSParagraph;' # at t/XSParagraph.t line 12. # Tried to use 'XSParagraph'. # Error: Invalid version format (non-numeric data) at # /home/dumas/src/texinfo/tp/Texinfo/Convert/XSParagraph/blib/lib/XSParagraph.pm # line 195. # BEGIN failed--compilation aborted at # /home/dumas/src/texinfo/tp/Texinfo/Convert/XSParagraph/blib/lib/XSParagraph.pm # line 215. # Compilation failed in require at t/XSParagraph.t line 12. # BEGIN failed--compilation aborted at t/XSParagraph.t line 12. Perl: here 1 Undefined subroutine XSParagraph::set_state called at t/XSParagraph.t line 23. # Looks like you failed 1 test of 1. # Looks like your test exited with 255 just after 1. t/XSParagraph.t .. Dubious, test returned 255 (wstat 65280, 0xff00) Failed 1/1 subtests I attach the preliminary patch I used to test. To test, I do, starting with the Makefile generated by configure: export TEXINFO_XS=module make clean perl Makefile.PL make make test perl Makefile.PL overrides the Makefile created by configure, which can be redone by ./config.status Is this a possibility to build a standalone module worth more investigation? -- Pat Index: Makefile.PL === --- Makefile.PL (révision 6530) +++ Makefile.PL (copie de travail) @@ -4,17 +4,16 @@ # the contents of the Makefile that is written. WriteMakefile( NAME = 'XSParagraph', -VERSION_FROM = 'lib/XSParagraph.pm', # finds $VERSION +VERSION_FROM = 'XSParagraph.pm', # finds $VERSION PREREQ_PM = {}, # e.g., Module::Name = 1.1 ($] = 5.005 ? ## Add these new keywords supported since 5.005 - (ABSTRACT_FROM = 'lib/XSParagraph.pm', # retrieve abstract from module - AUTHOR = 'A. U. Thor g...@slackware.lan') : ()), + (AUTHOR = 'Gavin Smith gavinsmith0...@gmail.com') : ()), LIBS = [''], # e.g., '-lm' DEFINE= '', # e.g., '-DHAVE_SOMETHING' INC = '-I.', # e.g., '-I. -I/usr/include/other' # Un-comment this if you add C files to link with later: -# OBJECT= '$(O_FILES)', # link all the C files too -'MYEXTLIB' = 'mylib/libxspara.a', +OBJECT= '$(O_FILES)', # link all the C files too +#'MYEXTLIB' = 'mylib/libxspara.a', ); sub MY::postable { Index: XSParagraph.pm === --- XSParagraph.pm (révision 6530) +++ XSParagraph.pm (copie de travail) @@ -105,6 +105,14 @@ goto FALLBACK; } +my $dlname = undef; +if ($TEXINFO_XS eq 'module') { + $dlname = XSParagraph.so; + push @DynaLoader::dl_library_path, ./blib/arch/auto/XSParagraph/; + $TEXINFO_XS = 'debug'; + goto LOAD; +} + my ($libtool_dir, $libtool_archive) = _find_file(XSParagraph.la); if (!$libtool_archive) { _fatal XSParagraph: couldn't find Libtool archive file; @@ -119,7 +127,6 @@ } # Look for the line in XSParagraph.la giving the name of the loadable object. -my $dlname = undef; while (my $line = $fh) { if ($line =~ /^\s*dlname\s*=\s*'([^']+)'\s$/) { $dlname = $1; @@ -135,6 +142,8 @@ push
Re: [bug #45759] Can't find Texinfo::ModulePath
On 17 August 2015 at 11:33, Patrice Dumas pertu...@free.fr wrote: I checked and unsurprisingly it didn't work. I tried to build the .xs file from the tp/Makefile.PL, but I did not succeed, and information in internet and in the MakeMaker documentation is scarce and nobody seems to build .xs files from subdirectories. I had a bit more success building recursively XSParagraph after updating the XSParagraph Makefile.PL. Not complete success, though. I then tried to build XSParagraph as a standalone module first, from within tp/Texinfo/Convert/XSParagraph, with the idea that if this works, building it as part of tp/Makefile.PL could be possible. The gnulib files do not build, but I think that they are not mandatory and that we probably cannot rely on gnulib for a standalone module. ldd on the .so file do not show anything suspect. The undefined symbols seem to be either from libc or perl, which I guess are loaded somehow when using xs files. As far as I remember the gnulib files were used for asprintf on Windows. I don't think anyone ever got it to work, though. I modified XSParagraph.pm to load the .so file, but it didn't work fully: Running Mkbootstrap for XSParagraph () chmod 644 XSParagraph.bs PERL_DL_NONLAZY=1 /usr/bin/perl -MExtUtils::Command::MM -MTest::Harness -e undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch') t/*.t t/XSParagraph.t .. 1/1 # Failed test 'use XSParagraph;' # at t/XSParagraph.t line 12. # Tried to use 'XSParagraph'. # Error: Invalid version format (non-numeric data) at # /home/dumas/src/texinfo/tp/Texinfo/Convert/XSParagraph/blib/lib/XSParagraph.pm # line 195. I think I've seen something like this error before, due to the version being 6.0dev instead of 6.0. # BEGIN failed--compilation aborted at # /home/dumas/src/texinfo/tp/Texinfo/Convert/XSParagraph/blib/lib/XSParagraph.pm # line 215. # Compilation failed in require at t/XSParagraph.t line 12. # BEGIN failed--compilation aborted at t/XSParagraph.t line 12. Perl: here 1 Undefined subroutine XSParagraph::set_state called at t/XSParagraph.t line 23. # Looks like you failed 1 test of 1. # Looks like your test exited with 255 just after 1. t/XSParagraph.t .. Dubious, test returned 255 (wstat 65280, 0xff00) Failed 1/1 subtests We don't need to worry about that test failure - it hasn't been used for a long time, since I was trying to get XS to work in the first place. Is this a possibility to build a standalone module worth more investigation? I'll have a look at the patch you posted. I have to say I don't care if building a standalone XS module works. I only care that it can be used from texi2any, which is difficult enough as it is. I've no interest in maintaining two build systems in parallel: just one of them causes enough problems. A standalone pure Perl module is more plausible.
Re: [bug #45759] Can't find Texinfo::ModulePath
On 17 August 2015 at 11:56, Gavin Smith gavinsmith0...@gmail.com wrote: Is this a possibility to build a standalone module worth more investigation? I'll have a look at the patch you posted. So this: +my $dlname = undef; +if ($TEXINFO_XS eq 'module') { + $dlname = XSParagraph.so; + push @DynaLoader::dl_library_path, ./blib/arch/auto/XSParagraph/; + $TEXINFO_XS = 'debug'; + goto LOAD; +} won't work for looking for an installed module, and also on platforms when the file extension for shared objects isn't .so.
Re: [bug #45759] Can't find Texinfo::ModulePath
On Mon, Aug 17, 2015 at 11:56:51AM +0100, Gavin Smith wrote: On 17 August 2015 at 11:33, Patrice Dumas pertu...@free.fr wrote: I think I've seen something like this error before, due to the version being 6.0dev instead of 6.0. Ok, this was it. We don't need to worry about that test failure - it hasn't been used for a long time, since I was trying to get XS to work in the first place. Ok. Here is an updated patch with a new simple test for XSParagraph. It doesn't work, it cannot find XSParagraph::new. I tried to show the methods, but none showed up... Is this a possibility to build a standalone module worth more investigation? I'll have a look at the patch you posted. I have to say I don't care if building a standalone XS module works. I only care that it can be used from texi2any, which is difficult enough as it is. I've no interest in maintaining two build systems in parallel: just one of them causes enough problems. A standalone pure Perl module is more plausible. Ok. Since there are fallbacks on the pure perl module, I guess this would be best to always fall back on pure perl if in the standalone perl module, and not try to use the XS version in that case. however, if you don't want to maintain the standalone perl module, then maybe it could simply be removed. -- Pat Index: t/XSParagraph.t === --- t/XSParagraph.t (révision 6530) +++ t/XSParagraph.t (copie de travail) @@ -16,13 +16,16 @@ # Insert your test code below, the Test::More module is use()ed here so read # its man page ( perldoc Test::More ) for help writing this test script. -my $paragraph; -$paragraph = {'word' = 'hello world', 'end_sentence' = 0}; +use XSParagraph; -print STDERR Perl: here 1\n; -XSParagraph::set_state ($paragraph); -print STDERR Perl: here 2\n; -XSParagraph::get_state ($paragraph); -print STDERR In Perl: word set is , $paragraph-{'word'}, \n; -print STDERR In Perl: end_sentence is , $paragraph-{'end_sentence'}, \n; +#no strict 'refs'; +#my @methods = grep { defined {$_} } keys %XSParagraph::; +#use strict 'refs'; +#print STDERR METHODS: @methods\n; +my $paragraph = XSParagraph::new(); + +my $text = $paragraph-add_text(Some text.); +$text .= $paragraph-end(); + +print STDERR $text; Index: XSParagraph.pm === --- XSParagraph.pm (révision 6530) +++ XSParagraph.pm (copie de travail) @@ -105,6 +105,14 @@ goto FALLBACK; } +my $dlname = undef; +if ($TEXINFO_XS eq 'module') { + $dlname = XSParagraph.so; + push @DynaLoader::dl_library_path, ./blib/arch/auto/XSParagraph/; + $TEXINFO_XS = 'debug'; + goto LOAD; +} + my ($libtool_dir, $libtool_archive) = _find_file(XSParagraph.la); if (!$libtool_archive) { _fatal XSParagraph: couldn't find Libtool archive file; @@ -119,7 +127,6 @@ } # Look for the line in XSParagraph.la giving the name of the loadable object. -my $dlname = undef; while (my $line = $fh) { if ($line =~ /^\s*dlname\s*=\s*'([^']+)'\s$/) { $dlname = $1; @@ -135,6 +142,8 @@ push @DynaLoader::dl_library_path, $libtool_dir; push @DynaLoader::dl_library_path, $libtool_dir/.libs; +LOAD: + my $dlpath = DynaLoader::dl_findfile($dlname); if (!$dlpath) { _fatal XSParagraph: couldn't find $dlname; Index: Makefile.PL === --- Makefile.PL (révision 6530) +++ Makefile.PL (copie de travail) @@ -4,17 +4,16 @@ # the contents of the Makefile that is written. WriteMakefile( NAME = 'XSParagraph', -VERSION_FROM = 'lib/XSParagraph.pm', # finds $VERSION +VERSION_FROM = 'XSParagraph.pm', # finds $VERSION PREREQ_PM = {}, # e.g., Module::Name = 1.1 ($] = 5.005 ? ## Add these new keywords supported since 5.005 - (ABSTRACT_FROM = 'lib/XSParagraph.pm', # retrieve abstract from module - AUTHOR = 'A. U. Thor g...@slackware.lan') : ()), + (AUTHOR = 'Gavin Smith gavinsmith0...@gmail.com') : ()), LIBS = [''], # e.g., '-lm' DEFINE= '', # e.g., '-DHAVE_SOMETHING' INC = '-I.', # e.g., '-I. -I/usr/include/other' # Un-comment this if you add C files to link with later: -# OBJECT= '$(O_FILES)', # link all the C files too -'MYEXTLIB' = 'mylib/libxspara.a', +OBJECT= '$(O_FILES)', # link all the C files too +#'MYEXTLIB' = 'mylib/libxspara.a', ); sub MY::postable {
Re: [bug #45759] Can't find Texinfo::ModulePath
On 17 August 2015 at 12:48, Patrice Dumas pertu...@free.fr wrote: Ok. Here is an updated patch with a new simple test for XSParagraph. It doesn't work, it cannot find XSParagraph::new. I tried to show the methods, but none showed up... The module name is, at the moment, not XSParagraph, but Texinfo::Convert::XSParagraph::XSParagraph. I've been planning on switching things around so it is accessed as Texinfo::Convert::Paragraph; I haven't done it yet though.
Re: [bug #45759] Can't find Texinfo::ModulePath
On Mon, Aug 17, 2015 at 04:25:25PM +0100, Gavin Smith wrote: On 17 August 2015 at 15:57, Patrice Dumas pertu...@free.fr wrote: Here is a patch that seems to work. It mimicks Dynaloader bootstrap for the searching directories too and I fixed the test to be a working simple test. This allows to build a standalone XSParagraph module, I also attach a shell script testing that. Even if you do not maintain it afterwards, I think that it is better to have something that works for now. If that all works all right, would you write a ChangeLog entry and commit it when you're ready? Thanks. It is done. I also commited the script that prepares the module and added to the distribution this file as well as MANIFEST and Makefile.PL. I also took the opportunity to remove some files from svn. Something that you may not like, I changed the meaning of TEXINFO_XS default to also try perl paths if libtool .la file is not found. I added TEXINFO_XS=stand-alone that does not check for libtool .la file and TEXINFO_XS=libtool that does not try perl paths. This was such that the stand-alone .pm file works without the need to set an environment variable. -- Pat
Re: [bug #45759] Can't find Texinfo::ModulePath
Hello Gavin, My answers below I tried that, and it seems that autogen did not fully worked, as what I got is the following: [...] -| lib/Makefile.am:31: error: Libtool library used but 'LIBTOOL' is undefined -| lib/Makefile.am:31: The usual way to define 'LIBTOOL' is to add 'LT_INIT' -| lib/Makefile.am:31: to 'configure.ac' and run 'aclocal' and 'autoconf' again. -| lib/Makefile.am:31: If 'LT_INIT' is in 'configure.ac', make sure -| lib/Makefile.am:31: its definition is in aclocal's search path. -| autoreconf: failed to run automake: Bad file number FYI, I checked that there is no LT_INIT in the configure.ac, neither AM_PROG_LIBTOOL. I managed to get the same error, it looks like libtoolize isn't being run by autoreconf, even though the manual says that it is. I've added it to the autogen.sh script, so maybe it will work now. Ok, I tried it after an `svn update', and it went further --- I had to install libtool from mingw sourceforge repo --- so both trunk/autogen and trunk/configure completed their job now, but then when I went to tp directory and launched `make', I got the following: -| make[3]: Entering directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' -| /bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I./gnulib/lib -I./gnulib/lib -DPERL_USE_SAFE_PUTENV -DDEBUGGING -DVERSION=\6.0\ -DXS_VERSION=\6.0\ -I/usr/lib/perl5/5.8/msys/CORE -MT XSParagraph_la-XSParagraph.lo -MD -MP -MF .deps/XSParagraph_la-XSParagraph.Tpo -c -o XSParagraph_la-XSParagraph.lo `test -f 'XSParagraph.c' || echo './'`XSParagraph.c -| libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./gnulib/lib -I./gnulib/lib -DPERL_USE_SAFE_PUTENV -DDEBUGGING -DVERSION=\6.0\ -DXS_VERSION=\6.0\ -I/usr/lib/perl5/5.8/msys/CORE -MT XSParagraph_la-XSParagraph.lo -MD -MP -MF .deps/XSParagraph_la-XSParagraph.Tpo -c XSParagraph.c -DDLL_EXPORT -DPIC -o .libs/XSParagraph_la-XSParagraph.o -| In file included from XSParagraph.xs:5:0: error- c:/Nos_Programmes/msys/lib/perl5/5.8/msys/CORE/perl.h:925:27: fatal error: netinet/in.h: No such file or directory -| # include netinet/in.h -|^ -| compilation terminated. error- make[3]: *** [XSParagraph_la-XSParagraph.lo] Error 1 error- make[3]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' error- make[2]: *** [all-recursive] Error 1 error- make[2]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' error- make[1]: *** [all] Error 2 error- make[1]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' error- make: *** [all-recursive] Error 1 I had a look to MinGW and it seems that BSD sockets where never ported to windows API. I am just surprised that texi2any needs sockets... So I will follow your advice and try to compile with the other perl installation (activestate perl), rather than the MSYS perl. I let you know then. VBR, Vincent Belaïche --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. http://www.avast.com
Re: [bug #45759] Can't find Texinfo::ModulePath
Hello Gavin, See https://savannah.gnu.org/bugs/index.php?45759#comment1 VBR, Vincent Belaïche --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. http://www.avast.com
[bug #45759] Can't find Texinfo::ModulePath
Follow-up Comment #1, bug #45759 (project texinfo): Ok, now I tried it with the activestate perl, but it seems that MSYS autotools aren't able to manage it correctly, as I got the following: -| /bin/sh ../libtool --tag=CC --mode=compile c:NOS_PR~1msysMINGW-~1I686-4~1.0-Pmingw32bingcc.exe -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT xsize.lo -MD -MP -MF .deps/xsize.Tpo -c -o xsize.lo xsize.c -| libtool: compile: c:NOS_PR~1msysMINGW-~1I686-4~1.0-Pmingw32bingcc.exe -DHAVE_CONFIG_H -I. -I.. -g -O2 -MT xsize.lo -MD -MP -MF .deps/xsize.Tpo -c xsize.c -DDLL_EXPORT -DPIC -o .libs/xsize.o errror- ../libtool: line 1129: c:NOS_PR~1msysMINGW-~1I686-4~1.0-Pmingw32bingcc.exe: command not found errror- make[5]: *** [xsize.lo] Error 1 errror- make[5]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph/lib' errror- make[4]: *** [all-recursive] Error 1 errror- make[4]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph/lib' errror- make[3]: *** [all] Error 2 errror- make[3]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph/lib' errror- make[2]: *** [all-recursive] Error 1 errror- make[2]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' errror- make[1]: *** [all] Error 2 errror- make[1]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' errror- make: *** [all-recursive] Error 1 So I edited manually tp/Texinfo/Convert/XSParagraph/lib/Makefile and tp/Texinfo/Convert/XSParagraph/Makefile to replace c:NOS_PR~1msysMINGW-~1I686-4~1.0-Pmingw32bingcc.exe by gcc. That made it go a little further, but then I got: -| libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./gnulib/lib -I./gnulib/lib -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DHASATTRIBUTE -DVERSION=6.0 -DXS_VERSION=6.0 -IC:\Programmes\Perl64\lib/CORE -MT XSParagraph_la-xspara.lo -MD -MP -MF .deps/XSParagraph_la-xspara.Tpo -c xspara.c -DDLL_EXPORT -DPIC -o .libs/XSParagraph_la-xspara.o -| In file included from C:ProgrammesPerl64lib/CORE/perl.h:641:0, -| from xspara.c:20: error- xspara.c:146:1: error: expected declaration specifiers or '...' before numeric constant -| iswspace (wint_t wc) -| ^ error- xspara.c:173:1: error: expected declaration specifiers or '...' before numeric constant -| iswupper (wint_t wc) -| ^ error- make[3]: *** [XSParagraph_la-xspara.lo] Error 1 error- make[3]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' error- make[2]: *** [all-recursive] Error 1 error- make[2]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' error- make[1]: *** [all] Error 2 error- make[1]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' error- make: *** [all-recursive] Error 1 So, I gave up, and I configured my wrapper to call tp/texi2any.pl directly from the source directory, by perl interpretation. So it now works as it did before, there was only the ModulePath.pm module missing and ./configure has generated it. Yes, it is a bit slow, but never mind. BTW, I still have this error when texi2any.pl is exectured: Locales dir for document strings not found (c:/Programmes/installation/texinfo-install/trunk/tp/../tp/maintain/../LocaleData LocaleData ../../../tp/LocaleData ../../tp/LocaleData) I already had this before the svn update, maybe this is due to using a non installed version, but running directly from the source directory. Concerning the bug status: I think there is a bug because whether the perl installation can use socket or not, and whether one should install a compiled version or an interpreted version should all be managed by the configure script, without user intervention. Now, I don't know who is to blame: * is that rather an issue of autotools not handling perl module installation correctly ? * and is it within autotools to manage perl module compilation/installation configuration Most perl module use a Makefile.PL rather than autotools to handle platform configuration and tool availability, I don't know even whether tex2any could be distributed on cpan as a standard module if using autotools rather than perl Automaker. ___ Reply to this item at: http://savannah.gnu.org/bugs/?45759 ___ Message posté via/par Savannah http://savannah.gnu.org/
Re: [bug #45759] Can't find Texinfo::ModulePath
On 16 August 2015 at 13:46, Vincent Belaïche invalid.nore...@gnu.org wrote: So I edited manually tp/Texinfo/Convert/XSParagraph/lib/Makefile and tp/Texinfo/Convert/XSParagraph/Makefile to replace c:NOS_PR~1msysMINGW-~1I686-4~1.0-Pmingw32bingcc.exe by gcc. That made it go a little further, but then I got: -| libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./gnulib/lib -I./gnulib/lib -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -DCONSERVATIVE -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DHASATTRIBUTE -DVERSION=6.0 -DXS_VERSION=6.0 -IC:\Programmes\Perl64\lib/CORE -MT XSParagraph_la-xspara.lo -MD -MP -MF .deps/XSParagraph_la-xspara.Tpo -c xspara.c -DDLL_EXPORT -DPIC -o .libs/XSParagraph_la-xspara.o -| In file included from C:ProgrammesPerl64lib/CORE/perl.h:641:0, -| from xspara.c:20: error- xspara.c:146:1: error: expected declaration specifiers or '...' before numeric constant -| iswspace (wint_t wc) -| ^ error- xspara.c:173:1: error: expected declaration specifiers or '...' before numeric constant -| iswupper (wint_t wc) -| ^ error- make[3]: *** [XSParagraph_la-xspara.lo] Error 1 error- make[3]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' error- make[2]: *** [all-recursive] Error 1 error- make[2]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' error- make[1]: *** [all] Error 2 error- make[1]: Leaving directory `/c/Programmes/installation/texinfo-install/trunk/tp/Texinfo/Convert/XSParagraph' error- make: *** [all-recursive] Error 1 I don't even know if you're using the right compiler here, if you are we can worry about this. BTW, I still have this error when texi2any.pl is exectured: Locales dir for document strings not found (c:/Programmes/installation/texinfo-install/trunk/tp/../tp/maintain/../LocaleData LocaleData ../../../tp/LocaleData ../../tp/LocaleData) I already had this before the svn update, maybe this is due to using a non installed version, but running directly from the source directory. I've always had that error message, although when I just tried it it didn't appear. Maybe because you didn't finish building because of the errors? Concerning the bug status: I think there is a bug because whether the perl installation can use socket or not, That's due to a version mismatch of some kind, we don't need to be interested in whatever Perl uses sockets for, we just need to make sure that the right compiler, compiler flags etc. are used for building the extension. Eli had almost exactly the same error as you, reported in this lengthy thread: https://lists.gnu.org/archive/html/texinfo-devel/2015-07/msg00031.html. and whether one should install a compiled version or an interpreted version should all be managed by the configure script, without user intervention. We need the user at least to specify the path to the Perl interpreter to use, if the default one won't work. There could be more automatic checking than there is at the moment but I don't really know how it would work yet.
Re: [bug #45759] Can't find Texinfo::ModulePath
Date: Sun, 16 Aug 2015 15:47:20 +0100 From: Gavin Smith gavinsmith0...@gmail.com Cc: Eli Zaretskii e...@gnu.org, Vincent Belaïche vincen...@users.sourceforge.net On 16 August 2015 at 15:29, Eli Zaretskii invalid.nore...@gnu.org wrote: Follow-up Comment #2, bug #45759 (project texinfo): The problems you are having happen because ActiveState Perl produces file names with backslashes, which MSYS Bash then treats as escape characters. For example, see how this: c:\NOS_PR~1\msys\MINGW-~1\I686-4~1.0-P\mingw32\bin\gcc.exe became this: c:NOS_PR~1msysMINGW-~1I686-4~1.0-Pmingw32bingcc.exe I think we need to double backslashes in the output of perl -V:cc. Or convert them to forward slashes.
[bug #45759] Can't find Texinfo::ModulePath
Update of bug #45759 (project texinfo): Open/Closed:Open = Closed Status:None = Invalid ___ Reply to this item at: http://savannah.gnu.org/bugs/?45759 ___ Message sent via/by Savannah http://savannah.gnu.org/
[bug #45759] Can't find Texinfo::ModulePath
Follow-up Comment #2, bug #45759 (project texinfo): The problems you are having happen because ActiveState Perl produces file names with backslashes, which MSYS Bash then treats as escape characters. For example, see how this: c:\NOS_PR~1\msys\MINGW-~1\I686-4~1.0-P\mingw32\bin\gcc.exe became this: c:NOS_PR~1msysMINGW-~1I686-4~1.0-Pmingw32bingcc.exe ___ Reply to this item at: http://savannah.gnu.org/bugs/?45759 ___ Message sent via/by Savannah http://savannah.gnu.org/
Re: [bug #45759] Can't find Texinfo::ModulePath
On 16 August 2015 at 15:47, Gavin Smith gavinsmith0...@gmail.com wrote: On 16 August 2015 at 15:29, Eli Zaretskii invalid.nore...@gnu.org wrote: Follow-up Comment #2, bug #45759 (project texinfo): The problems you are having happen because ActiveState Perl produces file names with backslashes, which MSYS Bash then treats as escape characters. For example, see how this: c:\NOS_PR~1\msys\MINGW-~1\I686-4~1.0-P\mingw32\bin\gcc.exe became this: c:NOS_PR~1msysMINGW-~1I686-4~1.0-Pmingw32bingcc.exe I think we need to double backslashes in the output of perl -V:cc. I thought that that was Perl code that was output but it may actually be shell code. Like this, for example: Index: tp/Texinfo/Convert/XSParagraph/configure.ac === --- tp/Texinfo/Convert/XSParagraph/configure.ac (revision 6499) +++ tp/Texinfo/Convert/XSParagraph/configure.ac (working copy) @@ -7,17 +7,13 @@ conf_value=`${PERL} -V:$1` echo got $conf_value # This turns a string like cc='cc'; into a string like cc. - # We also turn \ into , \' into ' and \\ into \. There may - # be other \ sequences we want to process as well. This is - # the escape sequence for single-quoted strings in Perl. + # We also double backslashes. conf_value=`echo $conf_value \ | sed -e 's/^@:@^=@:@*= *//' \ -e 's/^'\\''//'\ -e 's/ *; *$//'\ -e 's/'\\''$//'\ --e 's///g' \ --e 's/'\\''/\\'\\''/g' \ --e 's///g' ` +-e 's///g' ` echo got $conf_value }
Re: [bug #45759] Can't find Texinfo::ModulePath
On 16 August 2015 at 15:29, Eli Zaretskii invalid.nore...@gnu.org wrote: Follow-up Comment #2, bug #45759 (project texinfo): The problems you are having happen because ActiveState Perl produces file names with backslashes, which MSYS Bash then treats as escape characters. For example, see how this: c:\NOS_PR~1\msys\MINGW-~1\I686-4~1.0-P\mingw32\bin\gcc.exe became this: c:NOS_PR~1msysMINGW-~1I686-4~1.0-Pmingw32bingcc.exe I think we need to double backslashes in the output of perl -V:cc. I thought that that was Perl code that was output but it may actually be shell code.
Re: [bug #45759] Can't find Texinfo::ModulePath
On 16 August 2015 at 17:10, Eli Zaretskii e...@gnu.org wrote: I think we need to double backslashes in the output of perl -V:cc. Or convert them to forward slashes. I've done this.
Re: [bug #45759] Can't find Texinfo::ModulePath
Hello Gavin, My answers below On 14 August 2015 at 20:03, Vincent Belaïche vincen...@users.sourceforge.net wrote: Can't locate Texinfo/ModulePath.pm in @INC (@INC contains: c:/Nos_Programmes/msys/lib/perl5/site_perl/5.8/../tp /usr/lib/perl5/5.8/msys /usr/lib/perl5/5.8 /usr/lib/perl5/site_perl/5.8/msys [...] I get: bash $perl Makefile.PL Warning: prerequisite Locale::Messages 0 not found. Warning: prerequisite Text::Unidecode 0 not found. Warning: prerequisite Unicode::EastAsianWidth 0 not found. Writing Makefile for Texinfo Writing MYMETA.yml and MYMETA.json However, up until this point I didn't even know there was such a file as Makefile.PL in that directory! When you run make install under the tp/ subdirectory, that is supposed to use a Makefile generated from Makefile.am, not Makefile.PL. This is probably the root of your problems: your svn update updated Makefile.am, but there were no Makefile-updating rules in your current Makefile, so you were still using the old Makefile, generated from Makefile.PL. That also explains why texi2any.pl was installed. Ok, in fact what really happened was that I had a shell script of mine doing all the svn update, autogen, automake, configure, etc..., but this script did not work in the first place because my svn working directory needed svn upgrade. Then I just did it manually without paying attention to my script, and I mistakenly used the Makefile.PL --- but maybe it did not work and the Makefile under the tp directory was something from an older run of automake. I'm not sure what the Makefile.PL is doing there; we should probably delete it (okay Patrice?). Vincent: there've been changes to the top-level configure.ac script as well, so for the best chance of success, I suggest running ./autogen.sh at the top-level, followed by configure and make. I tried that, and it seems that autogen did not fully worked, as what I got is the following: $ ./autogen.sh -| Preparing Texinfo development infrastructure: -| ./tp/maintain/regenerate_file_lists.pl -| (cd tp ./maintain/regenerate_docstr.sh Makefile.docstr) -| (cd tp/tests ../maintain/regenerate_cmd_tests.sh Makefile.onetst . -base 'formatting' -long 'sectioning coverage indices nested_formats contents layout' -tex_html 'tex_html') -| (cd tp/tests/htmlxref ../../maintain/regenerate_cmd_tests.sh Makefile.onetst htmlxref -base .) -| (cd tp/tests/htmlxref-only_mono ../../maintain/regenerate_cmd_tests.sh Makefile.onetst htmlxref-only_mono -base .) -| (cd tp/tests/htmlxref-only_split ../../maintain/regenerate_cmd_tests.sh Makefile.onetst htmlxref-only_split -base .) -| aclocal -I gnulib/m4 autoconf autoheader automake -| (cd tp/Texinfo/Convert/XSParagraph autoreconf --install) -| configure.ac:64: installing './compile' -| configure.ac:67: installing './config.guess' -| configure.ac:67: installing './config.sub' -| configure.ac:2: installing './install-sh' -| configure.ac:2: installing './missing' -| Makefile.am:64: error: Libtool library used but 'LIBTOOL' is undefined -| Makefile.am:64: The usual way to define 'LIBTOOL' is to add 'LT_INIT' -| Makefile.am:64: to 'configure.ac' and run 'aclocal' and 'autoconf' again. -| Makefile.am:64: If 'LT_INIT' is in 'configure.ac', make sure -| Makefile.am:64: its definition is in aclocal's search path. -| Makefile.am: installing './depcomp' -| lib/Makefile.am:31: error: Libtool library used but 'LIBTOOL' is undefined -| lib/Makefile.am:31: The usual way to define 'LIBTOOL' is to add 'LT_INIT' -| lib/Makefile.am:31: to 'configure.ac' and run 'aclocal' and 'autoconf' again. -| lib/Makefile.am:31: If 'LT_INIT' is in 'configure.ac', make sure -| lib/Makefile.am:31: its definition is in aclocal's search path. -| autoreconf: failed to run automake: Bad file number FYI, I checked that there is no LT_INIT in the configure.ac, neither AM_PROG_LIBTOOL. If you get errors relating to an XSParagraph subdirectory, try using a different Perl installation, if you have one, with ./configure PERL=/where/ever/perl. Ok, good to know, I have two perl installations on my machine, the MSYS perl, and the activestate perl. I can use whichever to run texi2any because I did a CPP wrapper to call it, and this wrapper will call the correct perl installation. The Perl installation must be set up to compile extension modules. Running perl -V can provide some clues as to whether this is possible. If this fails, try ./configure --disable-perl-xs; this, however, will lead makeinfo to be considerably slower when outputting an Info file. VBR, Vincent Belaïche, --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. http://www.avast.com
Re: [bug #45759] Can't find Texinfo::ModulePath
I tried that, and it seems that autogen did not fully worked, as what I got is the following: $ ./autogen.sh -| Preparing Texinfo development infrastructure: -| ./tp/maintain/regenerate_file_lists.pl -| (cd tp ./maintain/regenerate_docstr.sh Makefile.docstr) -| (cd tp/tests ../maintain/regenerate_cmd_tests.sh Makefile.onetst . -base 'formatting' -long 'sectioning coverage indices nested_formats contents layout' -tex_html 'tex_html') -| (cd tp/tests/htmlxref ../../maintain/regenerate_cmd_tests.sh Makefile.onetst htmlxref -base .) -| (cd tp/tests/htmlxref-only_mono ../../maintain/regenerate_cmd_tests.sh Makefile.onetst htmlxref-only_mono -base .) -| (cd tp/tests/htmlxref-only_split ../../maintain/regenerate_cmd_tests.sh Makefile.onetst htmlxref-only_split -base .) -| aclocal -I gnulib/m4 autoconf autoheader automake -| (cd tp/Texinfo/Convert/XSParagraph autoreconf --install) -| configure.ac:64: installing './compile' -| configure.ac:67: installing './config.guess' -| configure.ac:67: installing './config.sub' -| configure.ac:2: installing './install-sh' -| configure.ac:2: installing './missing' -| Makefile.am:64: error: Libtool library used but 'LIBTOOL' is undefined -| Makefile.am:64: The usual way to define 'LIBTOOL' is to add 'LT_INIT' -| Makefile.am:64: to 'configure.ac' and run 'aclocal' and 'autoconf' again. -| Makefile.am:64: If 'LT_INIT' is in 'configure.ac', make sure -| Makefile.am:64: its definition is in aclocal's search path. -| Makefile.am: installing './depcomp' -| lib/Makefile.am:31: error: Libtool library used but 'LIBTOOL' is undefined -| lib/Makefile.am:31: The usual way to define 'LIBTOOL' is to add 'LT_INIT' -| lib/Makefile.am:31: to 'configure.ac' and run 'aclocal' and 'autoconf' again. -| lib/Makefile.am:31: If 'LT_INIT' is in 'configure.ac', make sure -| lib/Makefile.am:31: its definition is in aclocal's search path. -| autoreconf: failed to run automake: Bad file number FYI, I checked that there is no LT_INIT in the configure.ac, neither AM_PROG_LIBTOOL. I managed to get the same error, it looks like libtoolize isn't being run by autoreconf, even though the manual says that it is. I've added it to the autogen.sh script, so maybe it will work now.
Re: [bug #45759] Can't find Texinfo::ModulePath
On Fri, Aug 14, 2015 at 10:12:07PM +, Karl Berry wrote: I'm not sure what the Makefile.PL is doing there; As I understood it, it was for the sake of making a texi2any Perl module that could be uploaded to CPAN and installed in the normal CPAN way. (I don't believe that has actually happened yet, but that was the theory.) Indeed, the idea was to be able to have a separate perl module if needed. I wanted it in order to facilitate for instance GNU/Linux distributions packaging in case they would have a strict policy of perl modules in perl directories. The perl standalone module is created by ./maintain/prepare_perl_standalone_module_archive.sh But with the XS module, it is probable that it does not work anymore, probably some changes are needed for XS packages. I'll check if it still works without change. -- Pat
[bug #45759] Can't find Texinfo::ModulePath
URL: http://savannah.gnu.org/bugs/?45759 Summary: Can't find Texinfo::ModulePath Project: texinfo - GNU documentation system Submitted by: vincentb1 Submitted on: ven. 14 août 2015 11:26:28 GMT Category: makeinfo Release: Priority: 5 - Normal Severity: 3 - Normal Item Group: None Privacy: Public Open/Closed: Open Assigned to: None Discussion Lock: Any Status: None ___ Details: I just did an svn update of the texi2any tool because I could not compile texinfo documents with @U{...} macros. Now I get the following error: Can't locate Texinfo/ModulePath.pm in @INC (@INC contains: c:/Nos_Programmes/msys/lib/perl5/site_perl/5.8/../tp /usr/lib/perl5/5.8/msys /usr/lib/perl5/5.8 /usr/lib/perl5/site_perl/5.8/msys /usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/vendor_perl/5.8/msys /usr/lib/perl5/vendor_perl/5.8 /usr/lib/perl5/vendor_perl/5.8 .) at c:/Nos_Programmes/msys/lib/perl5/site_perl/5.8/texi2any.pl line 72 ___ Reply to this item at: http://savannah.gnu.org/bugs/?45759 ___ Message posté via/par Savannah http://savannah.gnu.org/
Re: [bug #45759] Can't find Texinfo::ModulePath
On 14 August 2015 at 20:03, Vincent Belaïche vincen...@users.sourceforge.net wrote: Can't locate Texinfo/ModulePath.pm in @INC (@INC contains: c:/Nos_Programmes/msys/lib/perl5/site_perl/5.8/../tp /usr/lib/perl5/5.8/msys /usr/lib/perl5/5.8 /usr/lib/perl5/site_perl/5.8/msys /usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/vendor_perl/5.8/msys /usr/lib/perl5/vendor_perl/5.8 /usr/lib/perl5/vendor_perl/5.8 .) at texi2any.pl line 72 From this line: c:/Nos_Programmes/msys/lib/perl5/site_perl/5.8/texi2any.pl line 72 it appears that you are running an installed texi2any.pl, which isn't supposed to happen - only texi2any (without the .pl suffix) is supposed to be installed. PS-1: I did a file comparation between the texi2any.pl in the source (aka « trunk/tp » directory, and the one in the installation directory, and they are identical. PS-2: My msys perl installation seems to be incomplete, here is what I get when I run « perl Makefile.PL »: $ /perl/bin/perl ./Makefile.PL error- WARNING: BUILD_REQUIRES is not a known parameter. error- Warning: prerequisite Locale::Messages 0 not found. error- Warning: prerequisite Text::Unidecode 0 not found. error- Warning: prerequisite Unicode::EastAsianWidth 0 not found. -| 'BUILD_REQUIRES' is not a known MakeMaker parameter name. -| Writing Makefile for Texinfo I get: bash $perl Makefile.PL Warning: prerequisite Locale::Messages 0 not found. Warning: prerequisite Text::Unidecode 0 not found. Warning: prerequisite Unicode::EastAsianWidth 0 not found. Writing Makefile for Texinfo Writing MYMETA.yml and MYMETA.json However, up until this point I didn't even know there was such a file as Makefile.PL in that directory! When you run make install under the tp/ subdirectory, that is supposed to use a Makefile generated from Makefile.am, not Makefile.PL. This is probably the root of your problems: your svn update updated Makefile.am, but there were no Makefile-updating rules in your current Makefile, so you were still using the old Makefile, generated from Makefile.PL. That also explains why texi2any.pl was installed. I'm not sure what the Makefile.PL is doing there; we should probably delete it (okay Patrice?). Vincent: there've been changes to the top-level configure.ac script as well, so for the best chance of success, I suggest running ./autogen.sh at the top-level, followed by configure and make. If you get errors relating to an XSParagraph subdirectory, try using a different Perl installation, if you have one, with ./configure PERL=/where/ever/perl. The Perl installation must be set up to compile extension modules. Running perl -V can provide some clues as to whether this is possible. If this fails, try ./configure --disable-perl-xs; this, however, will lead makeinfo to be considerably slower when outputting an Info file.
Re: [bug #45759] Can't find Texinfo::ModulePath
I'm not sure what the Makefile.PL is doing there; As I understood it, it was for the sake of making a texi2any Perl module that could be uploaded to CPAN and installed in the normal CPAN way. (I don't believe that has actually happened yet, but that was the theory.)
Re: [bug #45759] Can't find Texinfo::ModulePath
On 14 August 2015 at 12:26, Vincent Belaïche invalid.nore...@gnu.org wrote: Details: I just did an svn update of the texi2any tool because I could not compile texinfo documents with @U{...} macros. Now I get the following error: Can't locate Texinfo/ModulePath.pm in @INC (@INC contains: c:/Nos_Programmes/msys/lib/perl5/site_perl/5.8/../tp /usr/lib/perl5/5.8/msys /usr/lib/perl5/5.8 /usr/lib/perl5/site_perl/5.8/msys /usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/site_perl/5.8 /usr/lib/perl5/vendor_perl/5.8/msys /usr/lib/perl5/vendor_perl/5.8 /usr/lib/perl5/vendor_perl/5.8 .) at c:/Nos_Programmes/msys/lib/perl5/site_perl/5.8/texi2any.pl line 72 How are you running texi2any? Are you running an installed texi2any, texi2any in the build directory, or texi2any.pl in the source directory? From this line: c:/Nos_Programmes/msys/lib/perl5/site_perl/5.8/texi2any.pl line 72 it appears that you are running an installed texi2any.pl, which isn't supposed to happen - only texi2any (without the .pl suffix) is supposed to be installed. If you are installing texi2any.pl, how are you doing it?