Discussion:
CFT: print/pdftk port compiled with Java compiler from gcc 4.5
(too old to reply)
Greg Larkin
2010-04-09 01:54:51 UTC
Permalink
Hi everyone,

I maintain the print/pdftk port, and lately it's been getting harder to
support compiling it with gcj42 from the lang/gcc42 port. If lang/gcc45
is also installed on the machine, then gcj42 uses the wrong binutils and
hilarity ensues.

It's been on my task list to enable gcj45 in the lang/gcc45 port and get
pdftk compiled with it. I have an experimental patchset that does just
that, and I was hoping some folks might test it on various OS versions
and architectures. In the mean time, I'll run through the various
tinderbox builds that I have available.

You can find the patches here:

http://people.freebsd.org/~glarkin/diffs/gcc45%2bgcj.diff
http://people.freebsd.org/~glarkin/diffs/pdftk%2bgcc45.diff

Fetch each patch file into /usr/ports and then run:

patch < gcc45+gcj.diff
patch < pdftk+gcc45.diff
cd print/pdftk && make install clean

If all goes well, you will be left with a working pdftk executable,
successfully compiled with gcj45. If you run into any problems, please
let me know and include the output of "uname -a" and the output from the
make process.

Thank you,
Greg
- --
Greg Larkin

http://www.FreeBSD.org/ - The Power To Serve
http://www.sourcehosting.net/ - Ready. Set. Code.
http://twitter.com/sourcehosting/ - Follow me, follow you
Gerald Pfeifer
2010-04-09 17:26:33 UTC
Permalink
Post by Greg Larkin
I maintain the print/pdftk port, and lately it's been getting harder to
support compiling it with gcj42 from the lang/gcc42 port. If lang/gcc45
is also installed on the machine, then gcj42 uses the wrong binutils and
hilarity ensues.
Thanks for pushing on that front, I believe it's the right thing to do.

As for the lang/gcc42 issue, I have an idea of how to fix that and will
give it try now and share the patch if it works for me.

Gerald
Gerald Pfeifer
2010-04-12 13:19:23 UTC
Permalink
Post by Gerald Pfeifer
As for the lang/gcc42 issue, I have an idea of how to fix that and will
give it try now and share the patch if it works for me.
The patch below passes testing for me, and I consider it The Right
Thing[TM] directionally, too. The two actual changes are the
addition of --with-as=/usr/bin/as and --with-ld=/usr/bin/ld.

I have not committed it yet, but am planning on doing so and
definitely am interested in whether this changes (improves) things
for you.

That said, please do not stop on moving from GCC 4.2 to GCC 4.4 when
it comes to Java, even in case this patch works for you. :-)

Gerald

Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/lang/gcc42/Makefile,v
retrieving revision 1.356
diff -r1.356 Makefile
56,60c56
< CONFIGURE_ARGS+= --disable-nls \
< --with-system-zlib \
< --with-libiconv-prefix=${LOCALBASE} \
< --with-gmp=${LOCALBASE} \
< --program-suffix=${SUFFIX} \
---
Post by Gerald Pfeifer
CONFIGURE_ARGS+=--disable-nls \
63c59,65
< --with-gxx-include-dir=${TARGLIB}/include/c++/
---
Post by Gerald Pfeifer
--program-suffix=${SUFFIX} \
--with-as=/usr/bin/as \
--with-gmp=${LOCALBASE} \
--with-gxx-include-dir=${TARGLIB}/include/c++/ \
--with-ld=/usr/bin/ld \
--with-libiconv-prefix=${LOCALBASE} \
--with-system-zlib
Greg Larkin
2010-04-13 03:25:51 UTC
Permalink
Post by Gerald Pfeifer
Post by Gerald Pfeifer
As for the lang/gcc42 issue, I have an idea of how to fix that and will
give it try now and share the patch if it works for me.
The patch below passes testing for me, and I consider it The Right
Thing[TM] directionally, too. The two actual changes are the
addition of --with-as=/usr/bin/as and --with-ld=/usr/bin/ld.
I have not committed it yet, but am planning on doing so and
definitely am interested in whether this changes (improves) things
for you.
That said, please do not stop on moving from GCC 4.2 to GCC 4.4 when
it comes to Java, even in case this patch works for you. :-)
Gerald
Index: Makefile
===================================================================
RCS file: /home/pcvs/ports/lang/gcc42/Makefile,v
retrieving revision 1.356
diff -r1.356 Makefile
56,60c56
< CONFIGURE_ARGS+= --disable-nls \
< --with-system-zlib \
< --with-libiconv-prefix=${LOCALBASE} \
< --with-gmp=${LOCALBASE} \
< --program-suffix=${SUFFIX} \
---
Post by Gerald Pfeifer
CONFIGURE_ARGS+=--disable-nls \
63c59,65
< --with-gxx-include-dir=${TARGLIB}/include/c++/
---
Post by Gerald Pfeifer
--program-suffix=${SUFFIX} \
--with-as=/usr/bin/as \
--with-gmp=${LOCALBASE} \
--with-gxx-include-dir=${TARGLIB}/include/c++/ \
--with-ld=/usr/bin/ld \
--with-libiconv-prefix=${LOCALBASE} \
--with-system-zlib
Thank you Gerald, I'll give that a try with gcc 4.2 and gcc 4.5
installed. I think we're getting close with gcj 4.5, assuming my fix
for duplicate Java symbols is acceptable.

I need to do some more tinderbox builds and testing and clear up some
other errors reported by users, but maybe I'll be able to send you the
patches for approval next week.

Thank you,
Greg
Tsurutani Naoki
2010-04-10 13:33:48 UTC
Permalink
Post by Greg Larkin
http://people.freebsd.org/~glarkin/diffs/gcc45%2bgcj.diff
http://people.freebsd.org/~glarkin/diffs/pdftk%2bgcc45.diff
patch < gcc45+gcj.diff
patch < pdftk+gcc45.diff
cd print/pdftk && make install clean
If all goes well, you will be left with a working pdftk executable,
successfully compiled with gcj45. If you run into any problems, please
let me know and include the output of "uname -a" and the output from the
make process.
1. FreeBSD/amd64 8-STABLE : building OK, but failed to run.
% uname -a
FreeBSD h116.65.226.10.32118.vlan.kuins.net 8.0-STABLE FreeBSD 8.0-STABLE #22: Sat Feb 13 14:06:06 JST 2010 ***@h116.65.226.10.32118.vlan.kuins.net:/usr/obj/usr/src/sys/POLYMER13 amd64
% pdftk /usr/local/share/doc/OpenEXR/TechnicalIntroduction.pdf output out.pdf owner_pw foopass
/libexec/ld-elf.so.1: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.11 required by /usr/local/bin/pdftk not found

2. FreeBSD/amd64 8-STABLE, with LANG=ja_JP.eucJP : building failure.
gmake -C "/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs/com/lowagie/text";
gmake[2]: Entering directory `/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs/com/lowagie/text'
/usr/local/bin/gcj45 -L/usr/local/lib -O2 -w --encoding=UTF-8 --classpath="/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs" -c Anchor.java -o Anchor.o
/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs/com/lowagie/text/markup/MarkupParser.java:186: error: String literal is not properly closed by a double-quote
if (value.startsWith("〒)
^^^
...
112 problems (112 errors)
gmake[2]: *** [Anchor.o] Error 1
gmake[2]: Leaving directory `/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs/com/lowagie/text'
gmake[1]: *** [itext] Error 2
gmake[1]: Leaving directory `/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs'
gmake: *** [java_libs] Error 2
*** Error code 1
(some messages are translated).

3, 4. FreeBSD/i386 8-STABLE : just the same on amd64.
% uname -a
FreeBSD h120.65.226.10.32118.vlan.kuins.net 8.0-STABLE FreeBSD 8.0-STABLE #22: Sat Feb 13 14:53:25 JST 2010 ***@h120.65.226.10.32118.vlan.kuins.net:/usr/local/work/usr/obj/usr/src/sys/POLYMER i386
% pdftk /usr/local/share/doc/OpenEXR/TechnicalIntroduction.pdf output suzu.128.pdf owner_pw foopass
/libexec/ld-elf.so.1: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.11 required by /usr/local/bin/pdftk not found


---
Tsurutani Naoki
***@scphys.kyoto-u.ac.jp
Greg Larkin
2010-04-13 03:22:44 UTC
Permalink
Post by Tsurutani Naoki
Post by Greg Larkin
http://people.freebsd.org/~glarkin/diffs/gcc45%2bgcj.diff
http://people.freebsd.org/~glarkin/diffs/pdftk%2bgcc45.diff
patch < gcc45+gcj.diff
patch < pdftk+gcc45.diff
cd print/pdftk && make install clean
If all goes well, you will be left with a working pdftk executable,
successfully compiled with gcj45. If you run into any problems, please
let me know and include the output of "uname -a" and the output from the
make process.
1. FreeBSD/amd64 8-STABLE : building OK, but failed to run.
% uname -a
% pdftk /usr/local/share/doc/OpenEXR/TechnicalIntroduction.pdf output out.pdf owner_pw foopass
/libexec/ld-elf.so.1: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.11 required by /usr/local/bin/pdftk not found
Hi Tsurutani,

Can you run the following command for me on your system?

ldconfig -r | grep gcc45

If there's no output from that command, then something went wrong with
the ldconfig stage of the pdftk port installation. Would you mind
rebuilding pdftk and capturing the output of "make install clean" for
me? I should be able to tell if something is going wrong during
installation.

Before you do that, though, please test my theory by doing the following:

ldconfig -v -m /usr/local/lib/gcc45

When that command finishes, try running pdftk again. If it works, then
we know there's something wrong with the ldconfig step, and the output
of the port build/installation will help me troubleshoot it.
Post by Tsurutani Naoki
2. FreeBSD/amd64 8-STABLE, with LANG=ja_JP.eucJP : building failure.
gmake -C "/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs/com/lowagie/text";
gmake[2]: Entering directory `/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs/com/lowagie/text'
/usr/local/bin/gcj45 -L/usr/local/lib -O2 -w --encoding=UTF-8 --classpath="/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs" -c Anchor.java -o Anchor.o
/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs/com/lowagie/text/markup/MarkupParser.java:186: error: String literal is not properly closed by a double-quote
if (value.startsWith("〒)
^^^
...
112 problems (112 errors)
gmake[2]: *** [Anchor.o] Error 1
gmake[2]: Leaving directory `/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs/com/lowagie/text'
gmake[1]: *** [itext] Error 2
gmake[1]: Leaving directory `/usr/local/work/usr/ports/print/pdftk/work/pdftk-1.41/java_libs'
gmake: *** [java_libs] Error 2
*** Error code 1
(some messages are translated).
I'm not sure what's going on here, but I'll have a look at the source
file in question to see if there's a problem with it.
Post by Tsurutani Naoki
3, 4. FreeBSD/i386 8-STABLE : just the same on amd64.
% uname -a
% pdftk /usr/local/share/doc/OpenEXR/TechnicalIntroduction.pdf output suzu.128.pdf owner_pw foopass
/libexec/ld-elf.so.1: /usr/lib/libstdc++.so.6: version GLIBCXX_3.4.11 required by /usr/local/bin/pdftk not found
These errors should be fixed by the same solution as in #1 above.

Thank you,
Greg
Post by Tsurutani Naoki
---
Tsurutani Naoki
Tsurutani Naoki
2010-04-13 04:36:10 UTC
Permalink
Post by Greg Larkin
Can you run the following command for me on your system?
ldconfig -r | grep gcc45
% ldconfig -r | grep gcc45
search directories:
/lib:/usr/lib:/usr/lib/compat:/usr/local/lib:/usr/local/lib/compat/pkg:/usr/site/lib:/usr/loc
al/lib/compat:/usr/local/lib/evolution/2.28:/usr/local/lib/gcc/i386-portbld-
freebsd8.0/3.4.6:/usr/local/lib/gcc44:/usr/local/lib/gcc45:/usr/local/lib/gegl-
0.0:/usr/local/lib/graphviz:/usr/local/lib/mysql:/usr/local/lib/nss:/usr/local/lib/pth:/usr/l
ocal/lib/qt4:/usr/local/lib/wine:/usr/local/lib/zsh
1159:-lstdc++.6 => /usr/local/lib/gcc45/libstdc++.so.6
1160:-lmudflap.0 => /usr/local/lib/gcc45/libmudflap.so.0
1161:-lmudflapth.0 => /usr/local/lib/gcc45/libmudflapth.so.0
1162:-lssp.0 => /usr/local/lib/gcc45/libssp.so.0
1163:-lgcc_s.1 => /usr/local/lib/gcc45/libgcc_s.so.1
1164:-lgfortran.3 => /usr/local/lib/gcc45/libgfortran.so.3
1165:-lffi.4 => /usr/local/lib/gcc45/libffi.so.4
1166:-lgcj.11 => /usr/local/lib/gcc45/libgcj.so.11
1167:-lgij.11 => /usr/local/lib/gcc45/libgij.so.11
1168:-lgcj-tools.11 => /usr/local/lib/gcc45/libgcj-tools.so.11
1169:-lgomp.1 => /usr/local/lib/gcc45/libgomp.so.1

% ldconfig -r | grep libstdc++.so.6
80:-lstdc++.6 => /usr/lib/libstdc++.so.6
848:-lstdc++.6 => /usr/local/lib/compat/pkg/libstdc++.so.6
1146:-lstdc++.6 => /usr/local/lib/gcc/i386-portbld-freebsd8.0/3.4.6/libstdc++.so.6
1148:-lstdc++.6 => /usr/local/lib/gcc44/libstdc++.so.6
1159:-lstdc++.6 => /usr/local/lib/gcc45/libstdc++.so.6

Setting LD_LIBRARY_PATH=/usr/local/lib/gcc45 before running pdftk
can avoid this error.
I am not familiar with rpath, but something is wrong arround it, I think.
gcc can embed some rpath infomation when building pdftk,
or we must add some linker option about rpath in building pdftk.
In any case, pdftk must have runtime dependence on gcc45...


---
鶴谷彫苳殺踉児
***@scphys.kyoto-u.ac.jp

Loading...