Problem building an LSB package which includes its own copy of the CUPS library

Printer-friendly version

Posted to the lsb-discuss mailing list by: Till Kamppeter
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...

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@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@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 \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
------------------------------------------------------------------------

Problem building an LSB package which includes its own copy of t
Submitted by Wichmann Mats D on Wed, 07/16/2008 - 14:30.

Till Kamppeter wrote:

> and the compilation command line contains my extended CFLAGS and
> LDFLAGS:
>
>
------------------------------------------------------------------------
> till@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@till-laptop:~/rpm/BUILD/hplip-2.8.6$
>
------------------------------------------------------------------------

> Is there a simple trick to get this working?

Till, can you add your static library to LIBS for configure instead
of to LDFLAGS?

This is sort of an odd case, it's certainly a "bug" but I'm not
clear on a clean way to fix it, since the "obvious" fix of putting
user-supplied paths in front of the LSB "system" path in the
lsbcc arguments is almost certain to blow up a number of other things.

Problem building an LSB package which includes its own copy of t
Submitted by LSB List on Thu, 07/17/2008 - 11:30.

Posted to the lsb-discuss mailing list by: Till Kamppeter


Wichmann, Mats D wrote:
>> Is there a simple trick to get this working?
>
> Till, can you add your static library to LIBS for configure instead
> of to LDFLAGS?
>

Thank you, this WAS the simple trick. Now it works perfectly.

Till

Problem building an LSB package which includes its own copy of t
Submitted by Wichmann Mats D on Mon, 07/14/2008 - 20:30.

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@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@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 \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
>
------------------------------------------------------------------------

Problem building an LSB package which includes its own copy of t
Submitted by LSB List on Mon, 07/14/2008 - 20:30.

Posted to the lsb-discuss mailing list by: Till Kamppeter
Then I get

------------------------------------------------------------------------
till@till-laptop:~/rpm/BUILD/hplip-2.8.6$ LSBCC_DEBUG=0x40
/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
Adding -fno-stack-protector to args
Adding -Wl,--hash-style=sysv to args
000: cc
001: -o
002: conftest
003: -I
004: /opt/lsb/include
005: /home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/libcups.a
006: conftest.c
007: -nodefaultlibs
008: -L
009: /opt/lsb/lib64
010: -L
011: /home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/
012: -lcups
013: -lpthread
014: -lcrypt
015: -lz
016: -lpthread
017: -lpthread_nonshared
018: -Wl,--dynamic-linker=/lib64/ld-lsb-x86-64.so.3
019: -fno-stack-protector
020: -L
021: /usr/lib/gcc/x86_64-linux-gnu/4.2.3
022: -L/lib64
023: -L/usr/lib64
024: -Wl,--hash-style=sysv
025: -lgcc
026: -lm
027: -lc
028: -lc_nonshared
029: -lgcc
/tmp/ccW1oby8.o: In function `main':
conftest.c:(.text+0xa): undefined reference to `cupsDoFileRequest'
collect2: ld returned 1 exit status
till@till-laptop:~/rpm/BUILD/hplip-2.8.6$
------------------------------------------------------------------------

I do not have a man page for lsbcc ("man lsbcc" does not find it). Which
package do I need to install in addtion?

Till

Wichmann, Mats D wrote:
> 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@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@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 \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
>>
> ------------------------------------------------------------------------

Problem building an LSB package which includes its own copy of t
Submitted by Wichmann Mats D on Mon, 07/14/2008 - 20:45.

Till Kamppeter wrote:
> Then I get

Hmmm, not quite what I thought. Trying a bigger snip:

> 005: /home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/libcups.a
> 006: conftest.c
> 007: -nodefaultlibs
> 008: -L
> 009: /opt/lsb/lib64
> 010: -L
> 011: /home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/
> 012: -lcups

I suspect this issue is caused by libcups.a being *before*
conftest.c, if the references to cups are in conftest,
which they would be for a configure test, there's
nothing to satisfy out of libcups.a at the time it's seen,
then the reference is seen in conftest, which gets
satisfied against of /opt/lsb/lib64/libcups.so.

I *think*.

Maybe someone is wiser than I on this?

Problem building an LSB package which includes its own copy of t
Submitted by LSB List on Mon, 07/14/2008 - 20:45.

Posted to the lsb-discuss mailing list by: Till Kamppeter
Wichmann, Mats D wrote:
> Till Kamppeter wrote:
>> Then I get
>
> Hmmm, not quite what I thought. Trying a bigger snip:
>
>> 005: /home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/libcups.a
>> 006: conftest.c
>> 007: -nodefaultlibs
>> 008: -L
>> 009: /opt/lsb/lib64
>> 010: -L
>> 011: /home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/
>> 012: -lcups
>
> I suspect this issue is caused by libcups.a being *before*
> conftest.c, if the references to cups are in conftest,
> which they would be for a configure test, there's
> nothing to satisfy out of libcups.a at the time it's seen,
> then the reference is seen in conftest, which gets
> satisfied against of /opt/lsb/lib64/libcups.so.
>
> I *think*.
>
> Maybe someone is wiser than I on this?
>
>
>

The command line works when I put conftest.c before libcups.a, but this
is not a solution, as the configure macro puts conftest.c always to the
end of the command line and CFLAGS and LDFLAGS before.

Till

Problem building an LSB package which includes its own copy of t
Submitted by Jeff Licquia on Mon, 07/14/2008 - 22:30.

Till Kamppeter wrote:
> The command line works when I put conftest.c before libcups.a, but this
> is not a solution, as the configure macro puts conftest.c always to the
> end of the command line and CFLAGS and LDFLAGS before.

Taking a slightly different tack (and building on an IRC discussion):

We don't include the symbol in question because it's too new, which
implies that the test is incorporating a dependency (CUPS >= 1.2) that
may or may not be real.

If the package otherwise builds fine with CUPS 1.1, then the test is
wrong, and should be fixed, probably by checking for a different symbol.

If the package really needs CUPS 1.2, then good luck making it
LSB-compliant. :-) But even here, I'd say the test would do better by
checking for the version of CUPS some other way. Use of cups-config
comes to mind.

Problem building an LSB package which includes its own copy of t
Submitted by LSB List on Tue, 07/15/2008 - 06:45.

Posted to the lsb-discuss mailing list by: Till Kamppeter
Jeff Licquia wrote:
> Till Kamppeter wrote:
>> The command line works when I put conftest.c before libcups.a, but
>> this is not a solution, as the configure macro puts conftest.c always
>> to the end of the command line and CFLAGS and LDFLAGS before.
>
> Taking a slightly different tack (and building on an IRC discussion):
>
> We don't include the symbol in question because it's too new, which
> implies that the test is incorporating a dependency (CUPS >= 1.2) that
> may or may not be real.
>
> If the package otherwise builds fine with CUPS 1.1, then the test is
> wrong, and should be fixed, probably by checking for a different symbol.
>
> If the package really needs CUPS 1.2, then good luck making it
> LSB-compliant. :-) But even here, I'd say the test would do better by
> checking for the version of CUPS some other way. Use of cups-config
> comes to mind.
>

I have already told in my initial posting that I am building the package
with its own copy of the CUPS library (statically linked), as I know
that cupsDoFileRequest() is an interface which is not in the convenience
API. I do this already successfully with Gutenprint (downloadable via
the "gutenprint" and "gutenprint52" driver entries on OpenPrinting).

Till

Problem building an LSB package which includes its own copy of t
Submitted by Jeff Licquia on Tue, 07/15/2008 - 16:00.

Till Kamppeter wrote:
> Jeff Licquia wrote:
>> If the package really needs CUPS 1.2, then good luck making it
>> LSB-compliant. :-) But even here, I'd say the test would do better by
>> checking for the version of CUPS some other way. Use of cups-config
>> comes to mind.
>
> I have already told in my initial posting that I am building the package
> with its own copy of the CUPS library (statically linked), as I know
> that cupsDoFileRequest() is an interface which is not in the convenience
> API. I do this already successfully with Gutenprint (downloadable via
> the "gutenprint" and "gutenprint52" driver entries on OpenPrinting).

OK. But the problem here isn't in the code itself, but in the configure
test, right? That test probably needs to be changed.

Problem building an LSB package which includes its own copy of t
Submitted by Wichmann Mats D on Tue, 07/15/2008 - 18:15.

Jeff Licquia wrote:
> Till Kamppeter wrote:
>> Jeff Licquia wrote:
>>> If the package really needs CUPS 1.2, then good luck making it
>>> LSB-compliant. :-) But even here, I'd say the test would do better
>>> by checking for the version of CUPS some other way. Use of
>>> cups-config comes to mind.
>>
>> I have already told in my initial posting that I am building the
>> package with its own copy of the CUPS library (statically linked),
>> as I know that cupsDoFileRequest() is an interface which is not in
>> the convenience API. I do this already successfully with Gutenprint
>> (downloadable via the "gutenprint" and "gutenprint52" driver entries
>> on OpenPrinting).
>
> OK. But the problem here isn't in the code itself, but in the
> configure test, right? That test probably needs to be changed

The configure test itself is okay as far as it goes; it's
just checking for a normal interface in libcups. The problem
comes in in the way configure constructs the build command
line interacting with how lsbcc constructs its - you get a
sequence that doesn't cause the static libcups to end up
resolving the symbol referenced by the configure test, instead
it's picked up by the LSB shared stub.

Problem building an LSB package which includes its own copy of t
Submitted by Wichmann Mats D on Mon, 07/14/2008 - 20:45.

Till Kamppeter wrote:
> Then I get

so it's pretty clear what's happening here, it finds
the LSB cups before yours. Now to think about how to
make that not happen cleanly...

> 007: -nodefaultlibs
> 008: -L
> 009: /opt/lsb/lib64
> 010: -L
> 011: /home/till/rpm/BUILD/hplip-2.8.6/cups-1.3.7/cups/
> 012: -lcups

Problem building an LSB package which includes its own copy of t
Submitted by LSB List on Mon, 07/14/2008 - 20:30.

Posted to the lsb-discuss mailing list by: Till Kamppeter
Till Kamppeter wrote:
>
> I do not have a man page for lsbcc ("man lsbcc" does not find it). Which
> package do I need to install in addtion?
>

Sorry, found man page. It is not in MANPATH. I had to do

man /opt/lsb/man/man1/lsbcc.1

Till

Problem building an LSB package which includes its own copy of t
Submitted by Wichmann Mats D on Mon, 07/14/2008 - 20:45.

Till Kamppeter wrote:
> Till Kamppeter wrote:
>>
>> I do not have a man page for lsbcc ("man lsbcc" does not find it).
>> Which package do I need to install in addtion?
>>
>
> Sorry, found man page. It is not in MANPATH. I had to do
>
> man /opt/lsb/man/man1/lsbcc.1
>
> Till

right... that's one of those uncomfortable issues, our own
rules suggest we can't go drop into a place the system path
would automatically find it.

Copyright © 2008 Linux Foundation. All rights reserved.
LSB is a trademark of the Linux Foundation. Linux is a registered trademark of Linus Torvalds