[lsb-discuss] Problem building an LSB package which includes its own copy of the CUPS library
Wichmann, Mats D
mats.d.wichmann at intel.com
Mon Jul 14 13:08:53 PDT 2008
turn on debugging in lsbcc to see what command line it's constructing,
then we should be able to figure out what's happening and how to
combat it.
LSBCC_DEBUG=0x40 should do it, but check "man lsbcc" if it
doesn't do what you expect.
Till Kamppeter wrote:
> Hi,
>
> I am trying to make LSB packages of HPLIP (http://hplip.sf.net/).
> HPLIP uses many libraries which are not part of the LSB. So the
> package has to bring its own copies of these libraries.
>
> It also needs interfaces of the CUPS library which are not included in
> the LSB 3.2. Therefore I am also including a statically linked private
> copy of the CUPS library.
>
> In Gutenprint I am doing this already. See the spec file here:
>
>
http://www.openprinting.org/download/printdriver/SPECS/gutenprint5.2.spe
c
>
> I have tried the same in HPLIP, but HPLIP does a special test for the
> presence of the CUPS library. It is the line
>
> AC_CHECK_LIB([cups], [cupsDoFileRequest], [LIBS="$LIBS"],
> [AC_MSG_ERROR([cannot find libcups support], 9)])
>
> in the congigure.in file. This line is a macro which gets replaced by
> shell code which compiles a little program. The program looks like
> this
>
>
------------------------------------------------------------------------
> char cupsDoFileRequest ();
> int
> main ()
> {
> return cupsDoFileRequest ();
> ;
> return 0;
> }
>
------------------------------------------------------------------------
>
> and the compilation command line contains my extended CFLAGS and
> LDFLAGS:
>
>
------------------------------------------------------------------------
> till at till-laptop:~/rpm/BUILD/hplip-2.8.6$ /opt/lsb/bin/lsbcc -o
> conftest -L/home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/
> /home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/libcups.a -lcups
> -lpthread -lcrypt -lz conftest.c
> /tmp/ccYyAwjV.o: In function `main':
> conftest.c:(.text+0xa): undefined reference to `cupsDoFileRequest'
> collect2: ld returned 1 exit status
> till at till-laptop:~/rpm/BUILD/hplip-2.8.6$
>
------------------------------------------------------------------------
>
> The command gives an error because the compilation did not find a
> function named cupsDoFileRequest in the libraries referenced by the
> command line. I know that the CUPS livrary of the LSB Build
> Environment, /opt/lsb/lib64/libcups.so does not contain this
> function, but "-L/home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/
> /home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/libcups.a" should
> make the compiler using my static CUPS library, and the static CUPS
> library contains this function.
>
> Below you see parts of my spec file, the code to create a static CUPS
> library, and the "./configure" command line for HPLIP.
>
> Is there a simple trick to get this working?
>
> Till
>
>
> This generates the static CUPS library:
>
------------------------------------------------------------------------
> cd cups-*
> # Additions to make the CUPS library build
> # Remove non-LSB function "getpass()"
> perl -p -i -e 's/return\s*\(getpass\(prompt\)\)/NULL/g' cups/usersys.c
> # Add definitions for additional IOCTLs
> perl -p -i -e 's/(\#include\s+\"http-private\.h\")/#define
> _SYS_IOCTL_H\n#include <bits\/ioctls.h>\n$1/' cups/getifaddrs.c
> # Let's look at the compilation command lines of CUPS
> perl -p -i -e "s,^.SILENT:,," Makedefs.in
> %configure --enable-static --disable-shared --disable-dbus
> --without-php \
> --disable-slp --disable-gssapi --disable-ldap --disable-ssl \
> --disable-cdsassl --disable-gnutls --disable-openssl
> --disable-pam \
> --disable-dnssd --disable-launchd
> cd cups
> make
> cd ..
> cd ..
> cupssrc=`ls -d cups*`
> export CFLAGS="-I`pwd`/$cupssrc $CFLAGS"
> export LDFLAGS="-L`pwd`/$cupssrc/cups `pwd`/$cupssrc/cups/libcups.a
> -lpthread -lcrypt -lz -lcupsimage $LDFLAGS"
>
------------------------------------------------------------------------
>
> This is the "./configure" command for HPLIP in my HPLIP spec file:
>
------------------------------------------------------------------------
> %configure \
> --prefix=%{_prefix} \
> --mandir=%{_mandir} \
> --infodir=%{_infodir} \
> --docdir=%{_docdir} \
> --with-docdir=%{_docdir} \
> --disable-foomatic-drv-install \
> --enable-foomatic-rip-hplip-install \
> --with-drvdir=\$${prefix}/share/cups/drv \
> --with-hpppddir=\$${prefix}/share/ppd/hpijs/HP \
> --datadir=\$${prefix}/share \
> --libexecdir=\$${prefix}/lib \
> --localstatedir=/var \
> --sysconfdir=/etc \
> --enable-debug \
> --without-icondir \
> --disable-foomatic-xml-install \
> --enable-foomatic-ppd-install \
> --enable-network-build \
> --enable-pp-build \
> --enable-scan-build \
> --enable-gui-build \
> --enable-fax-build
>
------------------------------------------------------------------------
> _______________________________________________
> lsb-discuss mailing list
> lsb-discuss at lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/lsb-discuss
More information about the lsb-discuss
mailing list