Skip to content

Build failure -- conflict between libcups ppd.h and libppd ppd.h? #49

@Prototyped

Description

@Prototyped

I'm attempting to build an OCI container of ghostscript-printer-app using podman/buildah and am stuck at trying to build libppd.

I have:

  • installed libcups2-dev from Debian bookworm, which includes CUPS 2.4.2 devel files (including cups-config).
  • using this, checked out and installed libcupsfilters 2.0.0 from the GitHub repo.
  • attempted to build libppd 2.0.0 from the GitHub repo:

What have I done wrong? I've largely been following the snap definition for the build, except that I've picked Debian bookworm's prebuilt libcups2-dev and ghostscript packages rather than rebuilding them myself.

$ podman build --platform=linux/arm/v7 -t gurdasani.com/ghostscript-printer-application/ghostscript-printer-application-splix:latest .
[1/4] STEP 1/2: FROM docker.io/library/debian:12-slim AS base_build
[1/4] STEP 2/2: RUN set -eux;     DEBIAN_FRONTEND=noninteractive;     export DEBIAN_FRONTEND;     apt -y update;     apt -y install apt-transport-https ca-certificates;     echo 'deb-src https://cdn-aws.deb.debian.org/debian stable main contrib non-free' > /etc/apt/sources.list.d/stable-sources.list;     apt -y update;     apt -y install build-essential g++ sed quilt
--> Using cache 61d1779678e34149d0fa66f37bb0a31e8f28ef44937673cdfac28a2c9a35add9
--> 61d1779678e
[3/4] STEP 1/2: FROM 61d1779678e34149d0fa66f37bb0a31e8f28ef44937673cdfac28a2c9a35add9 AS libcupsfilters_build
[3/4] STEP 2/2: RUN set -eux;     DEBIAN_FRONTEND=noninteractive;     export DEBIAN_FRONTEND;     apt -y update;     apt -y install git autoconf automake autopoint libtool autotools-dev         pkg-config gettext g++ sharutils liblcms2-dev libpoppler-cpp-dev         libpng-dev libjpeg-dev libtiff5-dev zlib1g-dev libfontconfig1-dev         libdbus-1-dev libexif-dev ghostscript fonts-dejavu-core libcups2-dev         libqpdf-dev;     mkdir -p /root/libcupsfilters-build;     cd /root/libcupsfilters-build;     git clone https://github.com/OpenPrinting/libcupsfilters --depth 1 -b 2.0.0;     cd libcupsfilters;     ./autogen.sh;     ./configure --prefix=/usr         --disable-avahi         --disable-mutool;     make -j$(nproc);     mkdir -p /root/libcupsfilters;     make install DESTDIR=/root/libcupsfilters;     cd /root;     rm -rf /root/libcupsfilters-build /var/lib/apt/lists/* /var/cache/apt/archives/*
--> Using cache b7b942c0e6d5e7046bba9cf6a37ac64eb69df93e7be29cd89bfa7de6c25fbf15
--> b7b942c0e6d
[4/4] STEP 1/3: FROM 61d1779678e34149d0fa66f37bb0a31e8f28ef44937673cdfac28a2c9a35add9 AS libppd_build
[4/4] STEP 2/3: COPY --from=libcupsfilters_build /root/libcupsfilters/. /
--> Using cache 164965bef8f16bd5efb335d4984604b62f6dbc571d862791ef35ef2fa2a320aa
--> 164965bef8f
[4/4] STEP 3/3: RUN set -eux;     DEBIAN_FRONTEND=noninteractive;     export DEBIAN_FRONTEND;     apt -y update;     apt -y install git autoconf automake autopoint libtool autotools-dev         pkg-config g++ sharutils poppler-utils ghostscript libcups2-dev         libqpdf-dev;     mkdir -p /root/libppd-build;     cd /root/libppd-build;     git clone https://github.com/OpenPrinting/libppd --depth 1 -b 2.0.0;     cd libppd;     ./autogen.sh;     ./configure --prefix=/usr         --disable-mutool         --disable-pdftocairo         --disable-acroread         --enable-ppdc-utils;     make -j$(nproc);     make install DESTDIR=/root/libppd;     rm -rf /root/libppd-build /var/lib/apt/lists/* /var/cache/apt/archives/*
+ DEBIAN_FRONTEND=noninteractive
+ export DEBIAN_FRONTEND
+ apt -y update

[... snip ...]

+ apt -y install git autoconf automake autopoint libtool autotools-dev pkg-config g++ sharutils poppler-utils ghostscript libcups2-dev libqpdf-dev

[... snip ...]

The following NEW packages will be installed:
  autoconf automake autopoint autotools-dev dbus dbus-bin dbus-daemon
  dbus-session-bus-common dbus-system-bus-common file fonts-droid-fallback
  fonts-noto-mono fonts-urw-base35 ghostscript git git-man libapparmor1
  libavahi-client3 libavahi-common-data libavahi-common3 libcairo2 libcbor0.8
  libcups2 libcups2-dev libcupsfilters-dev libcupsfilters1 libcupsimage2
  libcupsimage2-dev libcurl3-gnutls libdbus-1-3 libdeflate-dev libedit2
  liberror-perl libexif12 libfido2-1 libfontenc1 libgs-common libgs10
  libgs10-common libice6 libidn12 libijs-0.35 libjbig-dev libjbig2dec0
  libjpeg-dev libjpeg62-turbo-dev liblcms2-2 liblerc-dev libltdl-dev libltdl7
  liblzma-dev libmagic-mgc libmagic1 libnspr4 libnss3 libopenjp2-7
  libpaper-utils libpaper1 libpixman-1-0 libpkgconf3 libpng-dev libpng-tools
  libpoppler126 libqpdf-dev libqpdf29 libsm6 libtiff-dev libtiffxx6 libtool
  libwebp-dev libwebpdemux2 libwebpmux3 libxcb-render0 libxcb-shm0 libxext6
  libxmuu1 libxrender1 libxt6 libzstd-dev m4 openssh-client pkg-config pkgconf
  pkgconf-bin poppler-data poppler-utils sharutils ucf x11-common xauth
  xfonts-encodings xfonts-utils zlib1g-dev
0 upgraded, 93 newly installed, 0 to remove and 0 not upgraded.

[... snip ...]

+ mkdir -p /root/libppd-build
+ cd /root/libppd-build
+ git clone https://github.com/OpenPrinting/libppd --depth 1 -b 2.0.0
Cloning into 'libppd'...
Note: switching to '62666f01b167bdf5975b08fbab5c2f34d9277db3'.

[... snip ...]

+ cd libppd
+ ./autogen.sh

[... snip ...]

+ ./configure --prefix=/usr --disable-mutool --disable-pdftocairo --disable-acroread --enable-ppdc-utils

[... snip ...]

checking for cups-config... /usr/bin/cups-config
checking for libcupsfilters... yes

[... snip ...]

configure: creating ./config.status
config.status: creating libppd.pc
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing po-directories commands
configure:
==============================================================================
Environment settings:
        CFLAGS:                                    -g -O2 -Wall -std=gnu11 -D_GNU_SOURCE
        CXXFLAGS:                                  -g -O2 -Wall  -D_GNU_SOURCE
        LDFLAGS:
Build configuration:
        cups-config:     system
        ghostscript:     yes
        gs-path:         system
        gs ps2write:     yes
        mutool:          no
        mutool-path:
        pdftocairo:      no
        pdftocairo-path:
        acroread:        no
        acroread-path:
        pdftops:         HYBRID
        Poppler's pdftops: yes
        pdftops-path:    system
        testppdfile:     no
        ppdc utilities:  yes
        genstrings:      no
        werror:          no
==============================================================================

+ nproc
+ make -j4
make  all-recursive
make[1]: Entering directory '/root/libppd-build/libppd'
make[2]: Entering directory '/root/libppd-build/libppd'
  CXX      ppd/ppdc.o
  CC       ppd/libppd_la-ppd-attr.lo
  CC       ppd/libppd_la-ppd.lo
  CC       ppd/libppd_la-ppd-cache.lo
In file included from ppd/ppd-cache.c:18:
ppd/ppd.h:102:14: error: redeclaration of 'enum ppd_ui_e'
  102 | typedef enum ppd_ui_e                   // **** UI Types ****
      |              ^~~~~~~~
In file included from ppd/ppd-attr.c:16:
ppd/ppd.h:102:14: error: redeclaration of 'enum ppd_ui_e'
  102 | typedef enum ppd_ui_e                   // **** UI Types ****
      |              ^~~~~~~~
In file included from ppd/ppd.c:20:
ppd/ppd.h:102:14: error: redeclaration of 'enum ppd_ui_e'
  102 | typedef enum ppd_ui_e                   // **** UI Types ****
      |              ^~~~~~~~
In file included from /usr/include/cupsfilters/driver.h:28,
                 from ppd/ppd.h:27:
/usr/include/cups/ppd.h:73:14: note: originally defined here
   73 | typedef enum ppd_ui_e                   /**** UI Types @deprecated@ ****/
      |              ^~~~~~~~
ppd/ppd.h:104:3: error: redeclaration of enumerator 'PPD_UI_BOOLEAN'
  104 |   PPD_UI_BOOLEAN,                       // True or False option
      |   ^~~~~~~~~~~~~~
/usr/include/cups/ppd.h:75:3: note: previous definition of 'PPD_UI_BOOLEAN' with type 'enum ppd_ui_e'
   75 |   PPD_UI_BOOLEAN,                       /* True or False option */
      |   ^~~~~~~~~~~~~~
In file included from /usr/include/cupsfilters/driver.h:28,
                 from ppd/ppd.h:27:
/usr/include/cups/ppd.h:73:14: note: originally defined here
   73 | typedef enum ppd_ui_e                   /**** UI Types @deprecated@ ****/
      |              ^~~~~~~~
ppd/ppd.h:105:3: error: redeclaration of enumerator 'PPD_UI_PICKONE'
  105 |   PPD_UI_PICKONE,                       // Pick one from a list
      |   ^~~~~~~~~~~~~~
/usr/include/cups/ppd.h:76:3: note: previous definition of 'PPD_UI_PICKONE' with type 'enum ppd_ui_e'
   76 |   PPD_UI_PICKONE,                       /* Pick one from a list */
      |   ^~~~~~~~~~~~~~
ppd/ppd.h:104:3: error: redeclaration of enumerator 'PPD_UI_BOOLEAN'
  104 |   PPD_UI_BOOLEAN,                       // True or False option
      |   ^~~~~~~~~~~~~~
ppd/ppd.h:106:3: error: redeclaration of enumerator 'PPD_UI_PICKMANY'
  106 |   PPD_UI_PICKMANY                       // Pick zero or more from a list
      |   ^~~~~~~~~~~~~~~
/usr/include/cups/ppd.h:77:3: note: previous definition of 'PPD_UI_PICKMANY' with type 'enum ppd_ui_e'
   77 |   PPD_UI_PICKMANY                       /* Pick zero or more from a list */
      |   ^~~~~~~~~~~~~~~
/usr/include/cups/ppd.h:75:3: note: previous definition of 'PPD_UI_BOOLEAN' with type 'enum ppd_ui_e'
   75 |   PPD_UI_BOOLEAN,                       /* True or False option */
      |   ^~~~~~~~~~~~~~

[... and loads more ...]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions