termux / termux-packages

A package build system for Termux.
https://termux.dev
Other
13.03k stars 2.99k forks source link

pdflatex failure #1486

Closed ExarchD closed 7 years ago

ExarchD commented 7 years ago

Hi, I'm having trouble with pdflatex and lualatex. I think it may be due to poppler, but that's wild guess from what packages updated right before my issues.

I'm getting:

CANNOT LINK EXECUTABLE "pdflatex": cannot locate symbol "_ZN4XRef5fetchEiiP6Objecti" referenced by "/data/data/com.termux/files/usr/opt/texlive/2017/bin/custom/pdftex" ...

Any clues?

SDRausty commented 7 years ago

@ExarchD thank you for posting. Please post more clues to this issue: πŸ‘‰ What is your OS system? πŸ‘‰ What command did you excecute? πŸ‘‰ How can your issues be reproduced? πŸ‘‰ If you have a lot of output, consider posting this output as a link here from a markdown file at your https://pages.github.com site. πŸ‘‰ Any other relevant information that will aid in reproducing your issue, that will hopefully help diagnose and resolve it relatively quickly.

ExarchD commented 7 years ago

armv8l is the arch. I'm using a chromebook plus. The command was `pdflatex'.

SDRausty commented 7 years ago

@Grimler91 I get the same error.

Welcome to Termux! Enjoy this flavor of Linux!

Wiki:            https://wiki.termux.com
Forum:           https://termux.com/community
IRC channel:     #termux on freenode
Gitter chat:     https://gitter.im/termux/termux
Mailing list:    termux+subscribe@groups.io

Search packages:   pkg search <query>
Install a package: pkg install <package>
Upgrade packages:  pkg upgrade
Learn more:        pkg help
$ cd rpg-latex-template/
$ pdflatex example.tex
CANNOT LINK EXECUTABLE: cannot locate symbol "_ZN4XRef5fetchEiiP6Objecti" referenced by "pdflatex"...
page record for 0x7f98070010 was not found (block_size=64)
$ termux-info
Termux version:
<=0.48
Installed Termux apps:
package:com.termux.window  installer=null
package:com.termux  installer=null
Updatable packages:
All packages up to date
System information:
Linux localhost 3.10.84-perf-gcdba782-00725-g9a1b90d #1 SMP PREEMPT Wed Aug 2 13:48:17 CST 2017 aarch64 Android
Termux-packages arch:
aarch64
Android version:
6.0.1
Device manufacturer:
ZTE
Device model:
Z981
Terminated
$

screenshot_20170913-132450

$ apt remove texlive*
.
.
.
$ dpkg -i storage/external-1/debs/texlive_20170524-2_aarch64.deb
.
.
.
$ apt list |grep tex

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

gettext/stable,now 0.19.8-1 aarch64 [installed]
gettext-dev/stable,now 0.19.8-1 aarch64 [installed]
texinfo/stable 6.5 aarch64
texlive/stable,termux 20170524-3 aarch64 [upgradable from: 20170524-2]
texlive-bin/stable 20170524-1 aarch64
texlive-bin-dev/stable 20170524-1 aarch64
$ cd rpg-latex-template/
$ !pdf
pdflatex example.tex
CANNOT LINK EXECUTABLE: cannot locate symbol "_ZN4XRef5fetchEiiP6Objecti" referenced by "pdflatex"...
page record for 0x7fa8562010 was not found (block_size=64)
$

Behaves this way on the previous version tooπŸ€”

Grimler91 commented 7 years ago

Same here. @ExarchD guess about poppler seems likely, I'll test rebuilding and see if it solves it

Grimler91 commented 7 years ago

@sdrausty if you downgrade poppler then it probably works.

texlive-bin doesn't even compile right now, maybe due to the new poppler version. Looks like it won't be as easy to fix it as I hoped.

aarch64-linux-android-clang -DHAVE_CONFIG_H -I. -I/home/builder/.termux-build/texlive-bin/src/texk/web2c -I./w2c  -I/home/builder/.termux-build/texlive-bin/build/texk -I/home/builder/.termux-build/texlive-bin/src/texk -I/home/builder/.termux-build/texlive-bin/src/texk/web2c/w2c -I/home/builder/.termux-build/texlive-bin/src/texk/web2c/luatexdir/unilib -I/data/data/com.termux/files/usr/include  -Oz -c -o luatexdir/unilib/libunilib_a-utype.o `test -f 'luatexdir/unilib/utype.c' || echo '/home/builder/.termux-build/texlive-bin/src/texk/web2c/'`luatexdir/unilib/utype.c
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:89:17: error: no member named 'initNull' in 'Object'
    catalogDict.initNull();
    ~~~~~~~~~~~ ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:90:22: error: too many arguments to function call, expected
      0, have 1
    xref->getCatalog(&catalogDict);
    ~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~
/data/data/com.termux/files/usr/include/poppler/XRef.h:144:3: note: 'getCatalog' declared here
  Object getCatalog();
  ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:95:15: error: no member named 'initNull' in 'Object'
    srcStream.initNull();
    ~~~~~~~~~ ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:97:48: error: cannot initialize a parameter of type 'int'
      with an rvalue of type 'Object *'
        catalogDict.dictLookup("SourceObject", &srcStream);
                                               ^~~~~~~~~~
/data/data/com.termux/files/usr/include/poppler/Object.h:361:55: note: passing argument to parameter 'recursion' here
inline Object Object::dictLookup(const char *key, int recursion)
                                                      ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:103:17: error: no member named 'initNull' in 'Object'
        srcName.initNull();
        ~~~~~~~ ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:104:64: error: cannot initialize a parameter of type 'int'
      with an rvalue of type 'Object *'
        srcStream.getStream()->getDict()->lookup("SourceName", &srcName);
                                                               ^~~~~~~~
/data/data/com.termux/files/usr/include/poppler/Dict.h:77:38: note: passing argument to parameter 'recursion' here
  Object lookup(const char *key, int recursion = 0);
                                     ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:113:37: error: cannot initialize a parameter of type 'int'
      with an rvalue of type 'Object *'
        xref->fetch(objnum, objgen, &srcStream);
                                    ^~~~~~~~~~
/data/data/com.termux/files/usr/include/poppler/XRef.h:147:38: note: passing argument to parameter 'recursion' here
  Object fetch(int num, int gen, int recursion = 0);
                                     ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:162:50: error: cannot initialize a parameter of type 'int'
      with an rvalue of type 'Object *'
                assert(xref->fetch(e->offset, 0, &objStr)->isStream());
                                                 ^~~~~~~
/home/builder/.termux-build/_lib/15.2-aarch64-21-v12/bin/../sysroot/usr/include/assert.h:51:23: note: expanded from macro 'assert'
#  define assert(e) ((e) ? __assert_no_op : __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, #e))
                      ^
/data/data/com.termux/files/usr/include/poppler/XRef.h:147:38: note: passing argument to parameter 'recursion' here
  Object fetch(int num, int gen, int recursion = 0);
                                     ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:163:64: error: cannot initialize a parameter of type 'int'
      with an rvalue of type 'Object *'
                nObjects = objStr.streamGetDict()->lookup("N", &obj1)->getInt();
                                                               ^~~~~
/data/data/com.termux/files/usr/include/poppler/Dict.h:77:38: note: passing argument to parameter 'recursion' here
  Object lookup(const char *key, int recursion = 0);
                                     ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:164:22: error: 'free' is a private member of 'Object'
                obj1.free();
                     ^
/data/data/com.termux/files/usr/include/poppler/Object.h:291:8: note: declared private here
  void free();
       ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:165:65: error: cannot initialize a parameter of type 'int'
      with an rvalue of type 'Object *'
                first = objStr.streamGetDict()->lookup("First", &obj1)->getInt();
                                                                ^~~~~
/data/data/com.termux/files/usr/include/poppler/Dict.h:77:38: note: passing argument to parameter 'recursion' here
  Object lookup(const char *key, int recursion = 0);
                                     ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:166:22: error: 'free' is a private member of 'Object'
                obj1.free();
                     ^
/data/data/com.termux/files/usr/include/poppler/Object.h:291:8: note: declared private here
  void free();
       ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:171:22: error: no member named 'initNull' in 'Object'
                obj1.initNull();
                ~~~~ ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:172:59: error: attempt to use a deleted function
                str = new EmbedStream(objStr.getStream(), &obj1, gTrue, first);
                                                          ^
/data/data/com.termux/files/usr/include/poppler/Object.h:168:24: note: 'Object<Object *>' has been explicitly marked deleted here
  template<typename T> Object(T) = delete;
                       ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:175:29: error: call to deleted member function 'getObj'
                    parser->getObj(&obj1);
                    ~~~~~~~~^~~~~~
/data/data/com.termux/files/usr/include/poppler/Parser.h:58:31: note: candidate function [with T = Object *] has been explicitly deleted
  template<typename T> Object getObj(T) = delete;
                              ^
/data/data/com.termux/files/usr/include/poppler/Parser.h:51:10: note: candidate function
  Object getObj(GBool simpleOnly = gFalse,
         ^
/data/data/com.termux/files/usr/include/poppler/Parser.h:57:10: note: candidate function not viable: no known conversion from 'Object *'
      to 'int' for 1st argument
  Object getObj(int recursion);
         ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:176:29: error: call to deleted member function 'getObj'
                    parser->getObj(&obj2);
                    ~~~~~~~~^~~~~~
/data/data/com.termux/files/usr/include/poppler/Parser.h:58:31: note: candidate function [with T = Object *] has been explicitly deleted
  template<typename T> Object getObj(T) = delete;
                              ^
/data/data/com.termux/files/usr/include/poppler/Parser.h:51:10: note: candidate function
  Object getObj(GBool simpleOnly = gFalse,
         ^
/data/data/com.termux/files/usr/include/poppler/Parser.h:57:10: note: candidate function not viable: no known conversion from 'Object *'
      to 'int' for 1st argument
  Object getObj(int recursion);
         ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:179:26: error: 'free' is a private member of 'Object'
                    obj1.free();
                         ^
/data/data/com.termux/files/usr/include/poppler/Object.h:291:8: note: declared private here
  void free();
       ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:180:26: error: 'free' is a private member of 'Object'
                    obj2.free();
                         ^
/data/data/com.termux/files/usr/include/poppler/Object.h:291:8: note: declared private here
  void free();
       ^
/home/builder/.termux-build/texlive-bin/src/texk/web2c/pdftexdir/pdftosrc.cc:184:24: error: 'free' is a private member of 'Object'
                objStr.free();
                       ^
/data/data/com.termux/files/usr/include/poppler/Object.h:291:8: note: declared private here
  void free();
       ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
Makefile:13126: recipe for target 'pdftexdir/pdftosrc-pdftosrc.o' failed
make[5]: *** [pdftexdir/pdftosrc-pdftosrc.o] Error 1
make[5]: *** Waiting for unfinished jobs....
make[5]: Leaving directory '/home/builder/.termux-build/texlive-bin/build/texk/web2c'
Makefile:13394: recipe for target 'all-recursive' failed
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory '/home/builder/.termux-build/texlive-bin/build/texk/web2c'
Makefile:3820: recipe for target 'all' failed
make[3]: *** [all] Error 2
make[3]: Leaving directory '/home/builder/.termux-build/texlive-bin/build/texk/web2c'
Makefile:906: recipe for target 'recurse' failed
make[2]: *** [recurse] Error 1
make[2]: Leaving directory '/home/builder/.termux-build/texlive-bin/build/texk'
Makefile:486: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/builder/.termux-build/texlive-bin/build/texk'
Makefile:575: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
SDRausty commented 7 years ago

@Grimler91 downgrading poppler solves this as you say; Thank you☺

$ dpkg -i storage/external-1/debs/poppler_0.55.0-2_aarch64.deb
Selecting previously unselected package poppler.
(Reading database ... 89875 files and directories currently installed.)
Preparing to unpack .../poppler_0.55.0-2_aarch64.deb ...
Unpacking poppler (0.55.0-2) ...
Setting up poppler (0.55.0-2) ...
Processing triggers for man (1.14.3) ...
$ apt list |grep popp

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

poppler/stable 0.59.0 aarch64 [upgradable from: 0.55.0-2]
poppler-dev/stable 0.59.0 aarch64
$
moises-santillan commented 7 years ago

@sdrausty Sorry about my ignorance. Where can I get poppler previous version to downgrade it?

SDRausty commented 7 years ago

@moises-santillan I use https://sdrausty.github.io/au/ to update, install and backup my installation files, and fortunately there was an older package laying around in my phone. It's for aarch64, so it will not work on your arm machine.

Afaik old debs go to /dev/null unless you back them up yourself. I am trying to create backup repositories https://wiki.termux.com/wiki/Package_Management#sdrausty.27s_repositories for Termux, but this project has run into a couple of time and resource consuming hurdles; Also, it is still in its' infancy.

moises-santillan commented 7 years ago

Thanks a lot. Too bad I didn't take care of backing up my previous installations. I'll keep that in mind in the future. Thanks for the tip. Meanwhile, I'm afraid I'll have to wait till poppler is fixed.

Sent from Alto

On Wed, Sep 13, 2017 02:45 PM,S D Rausty <notifications@github.com> wrote:

@moises-santillan I use https://sdrausty.github.io/au/ to update and backup my installation files, and fortunately there was an older package laying around in my phone. It's for aarch64, so it will not work on arm. Afaik old debs go to /dev/null unless you back them up yourself.

β€” You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

Grimler91 commented 7 years ago

Poppler has changed the file object.cc and object.h in such a way that pdftosrc.cc need to be patched. Here's a link to the poppler commit that introduced the changes.

Basically all we need to do is patch pdftosrc.cc to use the new API instead of the old one, shouldn't be to hard but my c++ isn't very good so I was unable to make it work tonight.

I'll continue to look at it tomorrow (unless someone else beats me to it). I've built poppler debs of the previous version for all arches if someone needs it, they are available here.

moises-santillan commented 7 years ago

Thank you very much. I hope you succeed fixing the last poppler version. I have downloaded the former version from the link you provided, and texlive is smoothly running.

Get Outlook for Android

On Wed, Sep 13, 2017 at 3:55 PM -0500, "Henrik Grimler" notifications@github.com wrote:

Poppler has changed the file object.cc and object.h in such a way that pdftosrc.cc need to be patched.

Here's a link to the poppler commit that introduced the changes.

Basically all we need to do is patch pdftosrc.cc to use the new API instead of the old one, shouldn't be to hard but my c++ isn't very good so I was unable to make it work tonight.

I'll continue to look at it tomorrow (unless someone else beats me to it).

I've built poppler debs of the previous version for all arches if someone needs it, they are available here.

β€” You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

fornwall commented 7 years ago

Can you check if pdflatex works with the latest version of poppler, version 0.59.0.1?

The package version is 0.59.0.1 to get a higher version number, but the actual poppler version is 0.57.0 - a temporary workaround until we can update to a later poppler version.

ExarchD commented 7 years ago

Everything works ok for me. I tested xelatex and pdflatex on two different projects

moises-santillan commented 7 years ago

It works ok for me too. Thank you!

SDRausty commented 7 years ago

@fornwall thank you for patching this so quickly.