On Wed, 2020-10-14 at 15:41 +0200, Pierre Labastie via blfs-dev wrote:
> On Tue, 2020-10-13 at 13:42 -0500, Bruce Dubbs via blfs-dev wrote:
> > On 10/13/20 11:11 AM, Bruce Dubbs wrote:
> > > 
> > > They seem to be using system JBIG2DEC, JPEGXR, and GUMBO which we
> > > do not 
> > > have.  The package certainly doesn't document user.make.  I see
> > > it
> > > now 
> > > for the first time.  The options -DJBIG_NO_MEMENTO -DTOFU
> > > -DTOFU_CJK are 
> > > mysterious but appear to have soemthing to do with noto fonts.
> > > 
> > > I can use that to do some tests, but I don't think it builds a
> > > shared 
> > > library.  Maybe we don't need a library though.
> > > 
> > > I'll do some more with this tomorrow, thanks.
> > > 
> > > -------------
> > > 
> > > I was able to build mupdf with:
> > > 
> > > 
> > >      cat > user.make << EOF
> > > USE_SYSTEM_FREETYPE := yes
> > > USE_SYSTEM_HARFBUZZ := yes
> > > USE_SYSTEM_JBIG2DEC := no
> > > USE_SYSTEM_JPEGXR := no # not used without HAVE_JPEGXR
> > > USE_SYSTEM_LCMS2 := no # need lcms2-art fork
> > > USE_SYSTEM_LIBJPEG := yes
> > > USE_SYSTEM_MUJS := no # build needs source anyways
> > > USE_SYSTEM_OPENJPEG := yes
> > > USE_SYSTEM_ZLIB := yes
> > > USE_SYSTEM_GLUT := no # need freeglut2-art fork
> > > USE_SYSTEM_CURL := yes
> > > USE_SYSTEM_GUMBO := no
> > > EOF
> > > 
> > > export XCFLAGS=-fPIC &&
> > > 
> > > make $BFLAGS build=release &&
> > > make prefix=/usr install
> > > 
> > > With the above I get:
> > > 
> > > $ ll -h install/usr/lib
> > > total 50M
> > > -rw-r--r-- 1 bdubbs bdubbs  48M Oct 13 00:02 libmupdf.a
> > > -rw-r--r-- 1 bdubbs bdubbs 2.2M Oct 13 00:02 libmupdf-third.a
> > > 
> > > $ ll -h install/usr/bin
> > > total 172M
> > > -rwxr-xr-x 1 bdubbs bdubbs 35M Oct 13 00:02 mupdf-gl
> > > -rwxr-xr-x 1 bdubbs bdubbs 35M Oct 13 00:02 mupdf-x11
> > > -rwxr-xr-x 1 bdubbs bdubbs 35M Oct 13 00:02 mupdf-x11-curl
> > > -rwxr-xr-x 1 bdubbs bdubbs 35M Oct 13 00:02 muraster
> > > -rwxr-xr-x 1 bdubbs bdubbs 35M Oct 13 00:02 mutool
> > > 
> > > If I add 'shared=yes to the 'make install' line, the build time
> > > goes 
> > > from about 0.1 SBU to 0.7 SBU (at -j22) and the sizes are:
> > > 
> > > $ ll -h install/usr/lib
> > > total 46M
> > > -rw-r--r-- 1 bdubbs bdubbs 46M Oct 13 10:58 libmupdf.so
> > > 
> > > $ ll -h install/usr/bin
> > > total 836K
> > > -rwxr-xr-x 1 bdubbs bdubbs 364K Oct 13 10:58 mupdf-gl
> > > -rwxr-xr-x 1 bdubbs bdubbs  72K Oct 13 10:58 mupdf-x11
> > > -rwxr-xr-x 1 bdubbs bdubbs  76K Oct 13 10:58 mupdf-x11-curl
> > > -rwxr-xr-x 1 bdubbs bdubbs  35K Oct 13 10:58 muraster
> > > -rwxr-xr-x 1 bdubbs bdubbs 287K Oct 13 10:58 mutool
> > > 
> > > The extra time is used during the 'nmake install'.  Adding
> > > 'shared=yes' 
> > > to both the make and install lines fixes the build time.
> > > 
> > > I think the package is good to go now.  Will commit later today.
> > 
> > Well it wasn't good.  The linking was messed up.  It took a while
> > but 
> > I've got it solved and the package tested.  Will update in a few
> > minutes.
> > 
> >    -- Bruce
> > 
> 
> I've tried the new instructions, and it failed to build because it
> was
> trying to link against the old libraries:
> --------
> /usr/bin/ld: build/shared-release/source/tools/murun.o: undefined
> reference to symbol 'js_newuserdata'
> /usr/bin/ld: /usr/lib/libmupdf-third.so: error adding symbols: DSO
> missing from command line
> collect2: error: ld returned 1 exit status
> make: *** [Makefile:247: build/shared-release/mutool] Error 1
> make: *** Waiting for unfinished jobs....
> /usr/bin/ld: build/shared-release/source/tools/muraster.o: undefined
> reference to symbol 'mu_unlock_mutex'
> /usr/bin/ld: /usr/lib/libmupdf-threads.so: error adding symbols: DSO
> missing from command line
> collect2: error: ld returned 1 exit status
> make: *** [Makefile:253: build/shared-release/muraster] Error 1
> --------
> Removing previously installed libraries (and adding verbose=yes), I
> get
> another error:
> -----------
> mkdir -p build/shared-release/ ; cc -Wl,--gc-sections -Wl,-s -o
> build/shared-release/mutool build/shared-
> release/source/tools/mutool.o
> build/shared-release/source/tools/muconvert.o build/shared-
> release/source/tools/mudraw.o build/shared-
> release/source/tools/murun.o 
> build/shared-release/source/tools/mutrace.o build/shared-
> release/source/tools/cmapdump.o build/shared-
> release/source/tools/pdfclean.o build/shared-
> release/source/tools/pdfcreate.o build/shared-
> release/source/tools/pdfextract.o build/shared-
> release/source/tools/pdfinfo.o build/shared-
> release/source/tools/pdfmerge.o build/shared-
> release/source/tools/pdfpages.o build/shared-
> release/source/tools/pdfposter.o build/shared-
> release/source/tools/pdfshow.o build/shared-
> release/source/tools/pdfsign.o  -lm -lfreetype -lharfbuzz -ljpeg -lz
> -lopenjp2 -lpthread -lcrypto -lmupdf
> /usr/bin/ld: cannot find -lmupdf
> collect2: error: ld returned 1 exit status
> make: *** [Makefile:247: build/shared-release/mutool] Error 1
> -----------
> After changing "-lmudpf' in the sed to "-lmudpf -L$(OUT)", it could
> build at -j1. But I got a race condition at -j4, so that I had to
> change again the sed to remove the "s/.(MUPDF_LIB)//" line.
> 
> Will commit.
> 

Err no: that does not work... We have to remove $(MUPF_LIB) from the
prerequisites, because the link command contains $^, which would
include the path of the shared library... But then, the build ordering
may become wrong. The solution is to use an "order-only" prerequisite:
remove $(MUPDF_LIB) from the prerequisite line, but add it at the end
with a "pipe"`|' char before it. Will try s/\(.(MUPDF_LIB)\)\(.*\)$/\2
| \1/...

Now, will commit
Pierre

-- 
http://lists.linuxfromscratch.org/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to