From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCH v3 5/7] cups: new package: Common Unix Printing System
Date: Fri, 27 Oct 2017 19:54:09 +0200 [thread overview]
Message-ID: <20171027175409.ye4dulke4sepsanq@pengutronix.de> (raw)
In-Reply-To: <20171025205751.27273-5-r.hieber@pengutronix.de>
On Wed, Oct 25, 2017 at 10:57:49PM +0200, Roland Hieber wrote:
> If using systemd, CUPS can be started via socket activation or directly,
> in any case it is run as user daemon, group lp. The default spool and
> cache locations were moved to /tmp/cups so we don't need to set up a
> tmpfs for /var/spool/cups and /var/cache/cups.
>
> sysvinit script is installed from upstream, but untested.
>
> Some config files are only created by cupsd on the first start and not
> at install time, so we supply reasonable defaults in projectroot/ in
> order to use $(call install_alternative...) on them.
>
> Signed-off-by: Roland Hieber <r.hieber@pengutronix.de>
> ---
>
> Notes:
> changes in v2 -> v3:
> - version bump 2.2.4 -> 2.2.5
> - fix SPDX license identifiers
> - $(PKGDIR)/$(CUPS) -> $(CUPS_PKGDIR)
> - with CROSS_AUTOCONF_USR, --exec-prefix and --libdir is not needed
> - always build multithreaded, remove kconfig option
> - remove debugging options, can easily be enabled by creating a local
> rules/cups-debug.make
> - fix install_copy for /etc/cups/ssl (missing permissions)
>
> ...llow-explicit-disabling-of-Java-PHP-Perl-.patch | 92 ++++++++
> ...-remove-leftover-check-for-empty-CUPS_PHP.patch | 29 +++
> ...e-make-interpreter-detection-more-verbose.patch | 88 ++++++++
> patches/cups-2.2.4/autogen.sh | 7 +
> patches/cups-2.2.4/series | 6 +
> projectroot/etc/cups/classes.conf | 1 +
> projectroot/etc/cups/client.conf | 2 +
> projectroot/etc/cups/cups-files.conf | 22 ++
> projectroot/etc/cups/mailto.conf | 1 +
> projectroot/etc/cups/ppd/.createdirectory | 0
> projectroot/etc/cups/printers.conf | 1 +
> projectroot/etc/cups/ssl/.createdirectory | 0
> projectroot/etc/printcap | 3 +
> projectroot/usr/lib/systemd/system/cups.service | 15 ++
> projectroot/usr/lib/systemd/system/cups.socket | 14 ++
> projectroot/usr/lib/tmpfiles.d/cups.conf | 6 +
> rules/cups-bbinit.in | 8 +
> rules/cups.in | 113 ++++++++++
> rules/cups.make | 238 +++++++++++++++++++++
> 19 files changed, 646 insertions(+)
> create mode 100644 patches/cups-2.2.4/0001-configure-allow-explicit-disabling-of-Java-PHP-Perl-.patch
> create mode 100644 patches/cups-2.2.4/0002-configure-remove-leftover-check-for-empty-CUPS_PHP.patch
> create mode 100644 patches/cups-2.2.4/0003-configure-make-interpreter-detection-more-verbose.patch
> create mode 100755 patches/cups-2.2.4/autogen.sh
> create mode 100644 patches/cups-2.2.4/series
> create mode 100644 projectroot/etc/cups/classes.conf
> create mode 100644 projectroot/etc/cups/client.conf
> create mode 100644 projectroot/etc/cups/cups-files.conf
> create mode 100644 projectroot/etc/cups/mailto.conf
> create mode 100644 projectroot/etc/cups/ppd/.createdirectory
> create mode 100644 projectroot/etc/cups/printers.conf
> create mode 100644 projectroot/etc/cups/ssl/.createdirectory
> create mode 100644 projectroot/etc/printcap
> create mode 100644 projectroot/usr/lib/systemd/system/cups.service
> create mode 100644 projectroot/usr/lib/systemd/system/cups.socket
> create mode 100644 projectroot/usr/lib/tmpfiles.d/cups.conf
> create mode 100644 rules/cups-bbinit.in
> create mode 100644 rules/cups.in
> create mode 100644 rules/cups.make
>
> diff --git a/patches/cups-2.2.4/0001-configure-allow-explicit-disabling-of-Java-PHP-Perl-.patch b/patches/cups-2.2.4/0001-configure-allow-explicit-disabling-of-Java-PHP-Perl-.patch
> new file mode 100644
> index 000000000..f110f5aaa
> --- /dev/null
> +++ b/patches/cups-2.2.4/0001-configure-allow-explicit-disabling-of-Java-PHP-Perl-.patch
> @@ -0,0 +1,92 @@
> +From: Roland Hieber <r.hieber@pengutronix.de>
> +Date: Mon, 25 Sep 2017 15:00:16 +0200
> +Subject: [PATCH] configure: allow explicit disabling of Java/PHP/Perl/Python
> + support
> +
> +Currently, when configure is called with --with-java or --with-java=,
> +auto-detection is performed. When called with --without-java, HAVE_JAVA
> +is still being defined. This is unfortunate when cross-compiling for
> +embedded systems, we would end up with Java on the host being
> +auto-detected (which is not what we have on the target), or with a wrong
> +HAVE_JAVA define. We need a way to explicitely disable scripting support
> +for all supported languages.
> +
> +Forwarded: https://github.com/apple/cups/pull/5122
> +Signed-off-by: Roland Hieber <r.hieber@pengutronix.de>
> +---
> + config-scripts/cups-scripting.m4 | 24 ++++++++++++++++--------
> + 1 file changed, 16 insertions(+), 8 deletions(-)
> +
> +diff --git a/config-scripts/cups-scripting.m4 b/config-scripts/cups-scripting.m4
> +index bff3e9a0505c..137c3be72cb0 100644
> +--- a/config-scripts/cups-scripting.m4
> ++++ b/config-scripts/cups-scripting.m4
> +@@ -14,11 +14,13 @@ dnl
> + dnl Do we have Java?
> + AC_ARG_WITH(java, [ --with-java set Java interpreter for web interfaces ],
> + CUPS_JAVA="$withval",
> +- CUPS_JAVA="")
> ++ CUPS_JAVA="auto")
> +
> +-if test "x$CUPS_JAVA" = x; then
> ++if test "x$CUPS_JAVA" = xauto; then
> + AC_PATH_PROG(JAVA,java)
> + CUPS_JAVA="$JAVA"
> ++elif test "x$CUPS_JAVA" = xno; then
> ++ CUPS_JAVA=""
> + fi
> +
> + AC_DEFINE_UNQUOTED(CUPS_JAVA, "$CUPS_JAVA")
> +@@ -30,11 +32,13 @@ fi
> + dnl Do we have Perl?
> + AC_ARG_WITH(perl, [ --with-perl set Perl interpreter for web interfaces ],
> + CUPS_PERL="$withval",
> +- CUPS_PERL="")
> ++ CUPS_PERL="auto")
> +
> +-if test "x$CUPS_PERL" = x; then
> ++if test "x$CUPS_PERL" = xauto; then
> + AC_PATH_PROG(PERL,perl)
> + CUPS_PERL="$PERL"
> ++elif test "x$CUPS_PERL" = xno; then
> ++ CUPS_PERL=""
> + fi
> +
> + AC_DEFINE_UNQUOTED(CUPS_PERL, "$CUPS_PERL")
> +@@ -46,9 +50,9 @@ fi
> + dnl Do we have PHP?
> + AC_ARG_WITH(php, [ --with-php set PHP interpreter for web interfaces ],
> + CUPS_PHP="$withval",
> +- CUPS_PHP="")
> ++ CUPS_PHP="auto")
> +
> +-if test "x$CUPS_PHP" = x; then
> ++if test "x$CUPS_PHP" = xauto; then
> + AC_PATH_PROG(PHPCGI,php-cgi)
> + if test "x$PHPCGI" = x; then
> + AC_PATH_PROG(PHP,php)
> +@@ -56,6 +60,8 @@ if test "x$CUPS_PHP" = x; then
> + else
> + CUPS_PHP="$PHPCGI"
> + fi
> ++elif test "x$CUPS_PHP" = xno; then
> ++ CUPS_PHP=""
> + fi
> +
> + AC_DEFINE_UNQUOTED(CUPS_PHP, "$CUPS_PHP")
> +@@ -69,11 +75,13 @@ fi
> + dnl Do we have Python?
> + AC_ARG_WITH(python, [ --with-python set Python interpreter for web interfaces ],
> + CUPS_PYTHON="$withval",
> +- CUPS_PYTHON="")
> ++ CUPS_PYTHON="auto")
> +
> +-if test "x$CUPS_PYTHON" = x; then
> ++if test "x$CUPS_PYTHON" = xauto; then
> + AC_PATH_PROG(PYTHON,python)
> + CUPS_PYTHON="$PYTHON"
> ++elif test "x$CUPS_PYTHON" = xno; then
> ++ CUPS_PYTHON=""
> + fi
> +
> + AC_DEFINE_UNQUOTED(CUPS_PYTHON, "$CUPS_PYTHON")
> diff --git a/patches/cups-2.2.4/0002-configure-remove-leftover-check-for-empty-CUPS_PHP.patch b/patches/cups-2.2.4/0002-configure-remove-leftover-check-for-empty-CUPS_PHP.patch
> new file mode 100644
> index 000000000..b0b59a78f
> --- /dev/null
> +++ b/patches/cups-2.2.4/0002-configure-remove-leftover-check-for-empty-CUPS_PHP.patch
> @@ -0,0 +1,29 @@
> +From: Roland Hieber <r.hieber@pengutronix.de>
> +Date: Mon, 25 Sep 2017 17:04:49 +0200
> +Subject: [PATCH] configure: remove leftover check for empty CUPS_PHP
> +
> +After the respective AC_DEFINE_UNQUOTED(CUPS_PHP) call, assigning
> +anything to CUPS_PHP is a no-op. Remove it so the surrounding test looks
> +like the other tests in the file.
> +
> +Forwarded: https://github.com/apple/cups/pull/5122
> +Signed-off-by: Roland Hieber <r.hieber@pengutronix.de>
> +---
> + config-scripts/cups-scripting.m4 | 4 +---
> + 1 file changed, 1 insertion(+), 3 deletions(-)
> +
> +diff --git a/config-scripts/cups-scripting.m4 b/config-scripts/cups-scripting.m4
> +index 137c3be72cb0..f73d5310a3ae 100644
> +--- a/config-scripts/cups-scripting.m4
> ++++ b/config-scripts/cups-scripting.m4
> +@@ -66,9 +66,7 @@ fi
> +
> + AC_DEFINE_UNQUOTED(CUPS_PHP, "$CUPS_PHP")
> +
> +-if test "x$CUPS_PHP" = x; then
> +- CUPS_PHP="no"
> +-else
> ++if test "x$CUPS_PHP" != x; then
> + AC_DEFINE(HAVE_PHP)
> + fi
> +
> diff --git a/patches/cups-2.2.4/0003-configure-make-interpreter-detection-more-verbose.patch b/patches/cups-2.2.4/0003-configure-make-interpreter-detection-more-verbose.patch
> new file mode 100644
> index 000000000..a1bfc3ade
> --- /dev/null
> +++ b/patches/cups-2.2.4/0003-configure-make-interpreter-detection-more-verbose.patch
> @@ -0,0 +1,88 @@
> +From: Roland Hieber <r.hieber@pengutronix.de>
> +Date: Mon, 25 Sep 2017 16:17:03 +0200
> +Subject: [PATCH] configure: make interpreter detection more verbose
> +
> +Forwarded: https://github.com/apple/cups/pull/5122
> +Signed-off-by: Roland Hieber <r.hieber@pengutronix.de>
> +---
> + config-scripts/cups-scripting.m4 | 16 ++++++++++++++++
> + 1 file changed, 16 insertions(+)
> +
> +diff --git a/config-scripts/cups-scripting.m4 b/config-scripts/cups-scripting.m4
> +index f73d5310a3ae..4b1b6a80c5ac 100644
> +--- a/config-scripts/cups-scripting.m4
> ++++ b/config-scripts/cups-scripting.m4
> +@@ -16,6 +16,7 @@ AC_ARG_WITH(java, [ --with-java set Java interpreter for web interf
> + CUPS_JAVA="$withval",
> + CUPS_JAVA="auto")
> +
> ++AC_MSG_CHECKING([for Java interpreter])
> + if test "x$CUPS_JAVA" = xauto; then
> + AC_PATH_PROG(JAVA,java)
> + CUPS_JAVA="$JAVA"
> +@@ -26,7 +27,10 @@ fi
> + AC_DEFINE_UNQUOTED(CUPS_JAVA, "$CUPS_JAVA")
> +
> + if test "x$CUPS_JAVA" != x; then
> ++ AC_MSG_RESULT([$CUPS_JAVA])
> + AC_DEFINE(HAVE_JAVA)
> ++else
> ++ AC_MSG_RESULT([none])
> + fi
> +
> + dnl Do we have Perl?
> +@@ -34,6 +38,7 @@ AC_ARG_WITH(perl, [ --with-perl set Perl interpreter for web interf
> + CUPS_PERL="$withval",
> + CUPS_PERL="auto")
> +
> ++AC_MSG_CHECKING([for Perl interpreter])
> + if test "x$CUPS_PERL" = xauto; then
> + AC_PATH_PROG(PERL,perl)
> + CUPS_PERL="$PERL"
> +@@ -44,7 +49,10 @@ fi
> + AC_DEFINE_UNQUOTED(CUPS_PERL, "$CUPS_PERL")
> +
> + if test "x$CUPS_PERL" != x; then
> ++ AC_MSG_RESULT([$CUPS_PERL])
> + AC_DEFINE(HAVE_PERL)
> ++else
> ++ AC_MSG_RESULT([none])
> + fi
> +
> + dnl Do we have PHP?
> +@@ -52,6 +60,7 @@ AC_ARG_WITH(php, [ --with-php set PHP interpreter for web interfac
> + CUPS_PHP="$withval",
> + CUPS_PHP="auto")
> +
> ++AC_MSG_CHECKING([for PHP interpreter])
> + if test "x$CUPS_PHP" = xauto; then
> + AC_PATH_PROG(PHPCGI,php-cgi)
> + if test "x$PHPCGI" = x; then
> +@@ -67,7 +76,10 @@ fi
> + AC_DEFINE_UNQUOTED(CUPS_PHP, "$CUPS_PHP")
> +
> + if test "x$CUPS_PHP" != x; then
> ++ AC_MSG_RESULT([$CUPS_PHP])
> + AC_DEFINE(HAVE_PHP)
> ++else
> ++ AC_MSG_RESULT([none])
> + fi
> +
> + dnl Do we have Python?
> +@@ -75,6 +87,7 @@ AC_ARG_WITH(python, [ --with-python set Python interpreter for web in
> + CUPS_PYTHON="$withval",
> + CUPS_PYTHON="auto")
> +
> ++AC_MSG_CHECKING([for Python interpreter])
> + if test "x$CUPS_PYTHON" = xauto; then
> + AC_PATH_PROG(PYTHON,python)
> + CUPS_PYTHON="$PYTHON"
> +@@ -85,5 +98,8 @@ fi
> + AC_DEFINE_UNQUOTED(CUPS_PYTHON, "$CUPS_PYTHON")
> +
> + if test "x$CUPS_PYTHON" != x; then
> ++ AC_MSG_RESULT([$CUPS_PYTHON])
> + AC_DEFINE(HAVE_PYTHON)
> ++else
> ++ AC_MSG_RESULT([none])
> + fi
> diff --git a/patches/cups-2.2.4/autogen.sh b/patches/cups-2.2.4/autogen.sh
> new file mode 100755
> index 000000000..1c70286be
> --- /dev/null
> +++ b/patches/cups-2.2.4/autogen.sh
> @@ -0,0 +1,7 @@
> +#!/bin/bash
> +autoconf \
> + --force \
> + --warnings=cross \
> + --warnings=syntax \
> + --warnings=obsolete \
> + --warnings=unsupported
> diff --git a/patches/cups-2.2.4/series b/patches/cups-2.2.4/series
> new file mode 100644
> index 000000000..8ed7533f1
> --- /dev/null
> +++ b/patches/cups-2.2.4/series
> @@ -0,0 +1,6 @@
> +# generated by git-ptx-patches
> +#tag:base --start-number 1
> +0001-configure-allow-explicit-disabling-of-Java-PHP-Perl-.patch
> +0002-configure-remove-leftover-check-for-empty-CUPS_PHP.patch
> +0003-configure-make-interpreter-detection-more-verbose.patch
> +# c7ecb5f5cc92f09bc09802d57507070b - git-ptx-patches magic
> diff --git a/projectroot/etc/cups/classes.conf b/projectroot/etc/cups/classes.conf
> new file mode 100644
> index 000000000..dea737751
> --- /dev/null
> +++ b/projectroot/etc/cups/classes.conf
> @@ -0,0 +1 @@
> +# classes.conf - class configuration file for cups
> diff --git a/projectroot/etc/cups/client.conf b/projectroot/etc/cups/client.conf
> new file mode 100644
> index 000000000..f8f0b6832
> --- /dev/null
> +++ b/projectroot/etc/cups/client.conf
> @@ -0,0 +1,2 @@
> +# CUPS client configuration
> +ServerName localhost
> diff --git a/projectroot/etc/cups/cups-files.conf b/projectroot/etc/cups/cups-files.conf
> new file mode 100644
> index 000000000..2cc2d5a5b
> --- /dev/null
> +++ b/projectroot/etc/cups/cups-files.conf
> @@ -0,0 +1,22 @@
> +# File/directory/user/group configuration file for the CUPS scheduler.
> +User daemon
> +Group lp
> +SystemGroup root
> +
> +AccessLog /var/log/cups/access_log
> +ErrorLog /var/log/cups/error_log
> +PageLog /var/log/cups/page_log
> +
> +CacheDir /tmp/cups/cache
> +DataDir /usr/share/cups
> +DocumentRoot /usr/share/doc/cups
> +RequestRoot /tmp/cups/spool
> +ServerBin /usr/lib/cups
> +ServerRoot /etc/cups
> +StateDir /var/run/cups
> +
> +Printcap /etc/printcap
> +PrintcapFormat bsd
> +
> +# SSL/TLS keychain for the scheduler...
> +#ServerKeychain ssl
> diff --git a/projectroot/etc/cups/mailto.conf b/projectroot/etc/cups/mailto.conf
> new file mode 100644
> index 000000000..4502adaee
> --- /dev/null
> +++ b/projectroot/etc/cups/mailto.conf
> @@ -0,0 +1 @@
> +# mailto.conf - configuration file for cups email notifier
> diff --git a/projectroot/etc/cups/ppd/.createdirectory b/projectroot/etc/cups/ppd/.createdirectory
> new file mode 100644
> index 000000000..e69de29bb
> diff --git a/projectroot/etc/cups/printers.conf b/projectroot/etc/cups/printers.conf
> new file mode 100644
> index 000000000..bf9879904
> --- /dev/null
> +++ b/projectroot/etc/cups/printers.conf
> @@ -0,0 +1 @@
> +# printers.conf - printer configuration file for cups
> diff --git a/projectroot/etc/cups/ssl/.createdirectory b/projectroot/etc/cups/ssl/.createdirectory
> new file mode 100644
> index 000000000..e69de29bb
> diff --git a/projectroot/etc/printcap b/projectroot/etc/printcap
> new file mode 100644
> index 000000000..e74f358e1
> --- /dev/null
> +++ b/projectroot/etc/printcap
> @@ -0,0 +1,3 @@
> +# This file was automatically generated by cupsd(8) from the
> +# /etc/cups/printers.conf file. All changes to this file
> +# will be lost.
> diff --git a/projectroot/usr/lib/systemd/system/cups.service b/projectroot/usr/lib/systemd/system/cups.service
> new file mode 100644
> index 000000000..ff94f69d2
> --- /dev/null
> +++ b/projectroot/usr/lib/systemd/system/cups.service
> @@ -0,0 +1,15 @@
> +[Unit]
> +Description=CUPS Scheduler service
> +Documentation=man:cupsd(8)
> +Requires=systemd-tmpfiles-setup.service
> +Requires=cups.socket
> +
> +[Service]
> +User=daemon
> +Group=lp
> +ExecStart=/usr/sbin/cupsd -l -c /etc/cups/cupsd.conf -s /etc/cups/cups-files.conf
> +Type=simple
> +
> +[Install]
> +Also=cups.socket
> +WantedBy=printer.target
> diff --git a/projectroot/usr/lib/systemd/system/cups.socket b/projectroot/usr/lib/systemd/system/cups.socket
> new file mode 100644
> index 000000000..de9f43b6b
> --- /dev/null
> +++ b/projectroot/usr/lib/systemd/system/cups.socket
> @@ -0,0 +1,14 @@
> +[Unit]
> +Description=CUPS Scheduler socket
> +PartOf=cups.service
> +
> +[Socket]
> +ListenStream=/run/cups.sock
> +ListenStream=[::1]:631
> +ListenStream=127.0.0.1:631
> +BindIPv6Only=No
> +SocketUser=daemon
> +SocketGroup=lp
> +
> +[Install]
> +WantedBy=sockets.target
> diff --git a/projectroot/usr/lib/tmpfiles.d/cups.conf b/projectroot/usr/lib/tmpfiles.d/cups.conf
> new file mode 100644
> index 000000000..c000cf255
> --- /dev/null
> +++ b/projectroot/usr/lib/tmpfiles.d/cups.conf
> @@ -0,0 +1,6 @@
> +#Type Path Mode UID GID Age Argument
> +d /var/log/cups 750 daemon lp -
> +d /tmp/cups/cache/ 750 daemon lp -
> +d /tmp/cups/spool/ 750 daemon lp -
> +d /tmp/cups/spool/tmp/ 750 daemon lp -
> +d /var/run/cups 750 daemon lp -
> diff --git a/rules/cups-bbinit.in b/rules/cups-bbinit.in
> new file mode 100644
> index 000000000..86b6f649a
> --- /dev/null
> +++ b/rules/cups-bbinit.in
> @@ -0,0 +1,8 @@
> +## SECTION=initmethod_bbinit
> +
> +config CUPS_BBINIT_LINK
> + string "cups"
> + depends on CUPS_STARTSCRIPT
> + default "S90cups"
> +
> +# vim: ft=kconfig ts=8 noet tw=80
> diff --git a/rules/cups.in b/rules/cups.in
> new file mode 100644
> index 000000000..13b7142d6
> --- /dev/null
> +++ b/rules/cups.in
> @@ -0,0 +1,113 @@
> +## SECTION=applications
> +
> +menuconfig CUPS
> + tristate
> + prompt "cups "
> +
> + select ROOTFS_VAR_LOG
> + select ROOTFS_VAR_RUN
> + select LIBC_M
> + select LIBC_CRYPT
> + select ZLIB
> +
> + select LIBC_PTHREAD if CUPS_THREADING
> + select SYSTEMD if CUPS_SYSTEMD_UNIT
> + select LIBPAPER if CUPS_LIBPAPER
> + select LIBUSB if CUPS_LIBUSB
> + select DBUS if CUPS_DBUS
> + select GNUTLS if CUPS_SSL
> + select AVAHI if CUPS_AVAHI
> + select AVAHI_LIBAVAHI_CLIENT if CUPS_AVAHI
> + select ORACLE_JAVA7_JRE if CUPS_JAVA
This is not good. ORACLE_JAVA7_JRE is the x86-only binary packages.
Just add a comment to the help text, that some java is needed.
> + select PERL if CUPS_PERL
> + select PHP5 if CUPS_PHP
> + select PYTHON if CUPS_PYTHON
Is python2 the only option or could python3 be used as well?
Also, for all of these: There is no build-time dependency, right? So this
should be 'if CUPS_??? && RUNTIME'.
> +
> + help
> + CUPS is the standards-based, open source printing system. It uses the
> + Internet Printing Protocol (IPP) to support printing to local and
> + network printers.
> +
> +if CUPS
> +
> +comment "--- CUPS Features ---"
> +
> +config CUPS_WEBINTERFACE
> + bool "enable web interface"
> + help
> + Enable CUPS printer management via HTTP(S). Only required for hosts
> + which should act as a printing server.
> +
> + If you overwrite the config files for CUPS, be sure to have
> + "WebInterface Yes" in your projectroot/etc/cups/cupsd.conf.
> +
> +config CUPS_SYSTEMD_UNIT
> + bool "install systemd unit file"
> + default y
> + depends on INITMETHOD_SYSTEMD
> + help
> + Installs a systemd service file so that CUPS can be started as a
> + systemd service.
> +
> +config CUPS_STARTSCRIPT
> + bool "install init.d script"
> + depends on INITMETHOD_BBINIT
> + help
> + Install /etc/init.d/cups
> +
> +config CUPS_TEST_TOOLS
> + bool "install cupstest* tools"
> + default n
> + help
> + Install cupstestdsc and cupstestppd on the target.
> +
> +comment "--- External Libraries ---"
> +
> +config CUPS_LIBPAPER
> + bool "libpaper support"
> + help
> + Build with support for libpaper's collection of paper sizes
> +
> +config CUPS_LIBUSB
> + bool "libusb support"
> + help
> + Build with libusb support. This is needed for the usb backend in order
> + to use USB printers.
> +
> +config CUPS_DBUS
> + bool "DBus support"
> + help
> + Builds CUPS with support for sending event notifications over DBUS
> +
> +config CUPS_SSL
> + bool "enable TLS support"
> + help
> + Enables SSL support over IPP and HTTP, also for the web interface.
> +
> +config CUPS_AVAHI
> + bool "enable Avahi support"
> + help
> + Enables support for discovery of network printers over Avahi/zeroconf.
> +
if CUPS_WEBINTERFACE
is simpler.
Michael
> +config CUPS_JAVA
> + bool "enable Java support for web interface"
> + depends on CUPS_WEBINTERFACE
> +
> +config CUPS_PERL
> + bool "enable Perl support for web interface"
> + depends on CUPS_WEBINTERFACE
> +
> +config CUPS_PHP
> + bool "enable PHP support for web interface"
> + depends on CUPS_WEBINTERFACE
> +
> +if CUPS_PHP && !PHP5_SAPI_CLI && !PHP5_SAPI_CGI
> + comment "Please also select PHP5_SAPI_CLI or PHP5_SAPI_CGI!"
> +endif
> +
> +config CUPS_PYTHON
> + bool "enable Python support for web interface"
> + depends on CUPS_WEBINTERFACE
> +
> +endif
> +# vim: ft=kconfig ts=8 noet tw=80
> diff --git a/rules/cups.make b/rules/cups.make
> new file mode 100644
> index 000000000..023e93ea3
> --- /dev/null
> +++ b/rules/cups.make
> @@ -0,0 +1,238 @@
> +# -*-makefile-*-
> +#
> +# Copyright (C) 2017 by Roland Hieber <r.hieber@pengutronix.de>
> +#
> +# See CREDITS for details about who has contributed to this project.
> +#
> +# For further information about the PTXdist project and license conditions
> +# see the README file.
> +#
> +
> +#
> +# We provide this package
> +#
> +PACKAGES-$(PTXCONF_CUPS) += cups
> +
> +#
> +# Paths and names
> +#
> +CUPS_VERSION := 2.2.5
> +CUPS := cups-$(CUPS_VERSION)
> +CUPS_MD5 := 76294dff74c3baf3fdf7c626cd48b873
> +CUPS_SUFFIX := tar.gz
> +CUPS_URL := https://github.com/apple/cups/releases/download/v$(CUPS_VERSION)/$(CUPS)-source.$(CUPS_SUFFIX)
> +CUPS_SOURCE := $(SRCDIR)/$(CUPS)-source.$(CUPS_SUFFIX)
> +CUPS_DIR := $(BUILDDIR)/cups-$(CUPS_VERSION)
> +CUPS_LICENSE := LGPL-2.0 AND GPL-2.0
> +
> +# ----------------------------------------------------------------------------
> +# Prepare
> +# ----------------------------------------------------------------------------
> +
> +CUPS_CONF_ENV := \
> + $(CROSS_ENV) \
> + DSTROOT=$(CUPS_PKGDIR)
> +
> +#
> +# autoconf
> +#
> +# The --with-* options are only used to specify strings, --without-* does
> +# mostly nothing. So we're omitting them here.
> +#
> +# --enable-mallinfo is currently broken, see
> +# https://github.com/apple/cups/issues/5051
> +#
> +# libtool support is unsupported upstream. Don't enable it, it will break
> +# things, until https://github.com/apple/cups/pull/5062 is merged.
> +#
> +# --disable-dnssd only refers to Apple's mDNSResponder, not Avahi.
> +#
> +# Java, PHP, Perl and Python support for the webinterface is only a runtime
> +# option, there are no real bindings for it except calling the interpreters.
> +#
> +CUPS_CONF_TOOL := autoconf
> +CUPS_CONF_OPT := \
> + $(CROSS_AUTOCONF_USR) \
> + --disable-static \
> + --disable-mallinfo \
> + --$(call ptx/endis,PTXCONF_CUPS_LIBPAPER)-libpaper \
> + --$(call ptx/endis,PTXCONF_CUPS_LIBUSB)-libusb \
> + --disable-tcp-wrappers \
> + --disable-acl \
> + --$(call ptx/endis,PTXCONF_CUPS_DBUS)-dbus \
> + --enable-shared \
> + --disable-libtool-unsupported \
> + --disable-debug \
> + --disable-debug-guards \
> + --disable-debug-printfs \
> + --disable-unit-tests \
> + --$(call ptx/endis,PTXCONF_TARGET_HARDEN_RELRO)-relro \
> + --disable-gssapi \
> + --enable-threads \
> + --$(call ptx/endis,PTXCONF_CUPS_SSL)-ssl \
> + --disable-cdsassl \
> + --$(call ptx/endis,PTXCONF_CUPS_SSL)-gnutls \
> + --disable-pam \
> + $(GLOBAL_LARGE_FILE_OPTION) \
> + --$(call ptx/endis,PTXCONF_CUPS_AVAHI)-avahi \
> + --disable-dnssd \
> + --disable-launchd \
> + --$(call ptx/endis,PTXCONF_CUPS_SYSTEMD_UNIT)-systemd \
> + --disable-upstart
> +
> +# Default config file settings (probably overwritten via projectroot anyways...)
> +CUPS_CONF_OPT += \
> + --disable-page-logging \
> + --disable-browsing \
> + --disable-default-shared \
> + --disable-raw-printing \
> + --$(call ptx/endis,PTXCONF_CUPS_WEBINTERFACE)-webif \
> + --with-components=all \
> + --with-cachedir=/var/cache \
> + --with-logdir=/var/log \
> + --with-rundir=/run \
> + --with-rcdir=/etc \
> + --with-languages=none \
> + --with-cups-user=daemon \
> + --with-cups-group=lp
> +
> +# scripting integrations
> +CUPS_PHP_PATH := \
> + $(if PTXCONF_PHP5_SAPI_CLI,/usr/bin/php5, \
> + $(if PTXCONF_PHP5_SAPI_CGI,/usr/bin/php-cgi))
> +
> +CUPS_CONF_OPT += \
> + $(call ptx/ifdef,PTXCONF_CUPS_JAVA,--with-java=/usr/bin/java,--without-java) \
> + $(call ptx/ifdef,PTXCONF_CUPS_PERL,--with-perl=/usr/bin/perl,--without-perl) \
> + $(call ptx/ifdef,PTXCONF_CUPS_PHP,--with-php=$(CUPS_PHP_PATH),--without-php) \
> + $(call ptx/ifdef,PTXCONF_CUPS_PYTHON,--with-python=/usr/bin/python,--without-python)
> +
> +# ----------------------------------------------------------------------------
> +# Compile & Install
> +# ----------------------------------------------------------------------------
> +
> +CUPS_MAKE_ENV := \
> + DSTROOT=$(CUPS_PKGDIR)
> +
> +# ----------------------------------------------------------------------------
> +# Target-Install
> +# ----------------------------------------------------------------------------
> +
> +# CUPS drops many files into its PKGDIR, but instead of patching the build
> +# system, be explicitly picky about what to install.
> +
> +$(STATEDIR)/cups.targetinstall:
> + @$(call targetinfo)
> +
> + @$(call install_init, cups)
> + @$(call install_fixup, cups,PRIORITY,optional)
> + @$(call install_fixup, cups,SECTION,base)
> + @$(call install_fixup, cups,AUTHOR,"Roland Hieber <r.hieber@pengutronix.de>")
> + @$(call install_fixup, cups,DESCRIPTION,missing)
> +
> +# ----- config files, install as daemon:lp
> + @$(call install_copy, cups, daemon, lp, 750, /etc/cups)
> + @$(call install_alternative, cups, daemon, lp, 0640, /etc/cups/cups-files.conf)
> + @$(call install_alternative, cups, daemon, lp, 0640, /etc/cups/cupsd.conf)
> + @$(call install_alternative, cups, daemon, lp, 0600, /etc/cups/classes.conf)
> + @$(call install_alternative, cups, daemon, lp, 0600, /etc/cups/client.conf)
> + @$(call install_alternative, cups, daemon, lp, 0640, /etc/cups/mailto.conf)
> + @$(call install_copy, cups, daemon, lp, 0750, /etc/cups/ppd/)
> + @$(call install_alternative_tree, cups, daemon, lp, /etc/cups/ppd/)
> + @$(call install_alternative, cups, daemon, lp, 0600, /etc/cups/printers.conf)
> + @$(call install_alternative, cups, daemon, lp, 0640, /etc/cups/snmp.conf)
> + @$(call install_alternative, cups, daemon, lp, 0640, /etc/printcap)
> + @$(call install_alternative, cups, root, root, 0644, /usr/share/cups/mime/mime.convs)
> + @$(call install_alternative, cups, root, root, 0644, /usr/share/cups/mime/mime.types)
> +
> +ifdef PTXCONF_CUPS_SSL
> + @$(call install_copy, cups, daemon, lp, 0750, /etc/cups/ssl/)
> + @$(call install_alternative_tree, cups, daemon, lp, /etc/cups/ssl/)
> +endif
> +
> +ifdef PTXCONF_CUPS_DBUS
> + @$(call install_alternative, cups, root, root, 0644, /etc/dbus-1/system.d/cups.conf)
> +endif
> +
> +# ----- libraries
> + @$(call install_lib, cups, root, root, 0755, libcups)
> + @$(call install_lib, cups, root, root, 0755, libcupsimage)
> + @$(call install_lib, cups, root, root, 0755, libcupsmime)
> + @$(call install_lib, cups, root, root, 0755, libcupsppdc)
> +
> +# ----- user and system binaries, with the correct access rights
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/cancel)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/cups-config)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/ipptool)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/lp)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/lpoptions)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/lpq)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/lpr)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/lprm)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/lpstat)
> +
> + @$(call install_copy, cups, root, root, 0755, -, /usr/sbin/cupsaccept)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/sbin/cupsaddsmb)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/sbin/cupsctl)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/sbin/cupsd)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/sbin/cupsfilter)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/sbin/lpadmin)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/sbin/lpc)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/sbin/lpinfo)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/sbin/lpmove)
> +
> + @$(call install_link, cups, cupsaccept, /usr/sbin/accept)
> + @$(call install_link, cups, cupsaccept, /usr/sbin/cupsdisable)
> + @$(call install_link, cups, cupsaccept, /usr/sbin/cupsenable)
> + @$(call install_link, cups, cupsaccept, /usr/sbin/cupsreject)
> + @$(call install_link, cups, cupsaccept, /usr/sbin/reject)
> +
> +ifdef PTXCONF_CUPS_TEST_TOOLS
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/cupstestdsc)
> + @$(call install_copy, cups, root, root, 0755, -, /usr/bin/cupstestppd)
> +endif
> +
> +# ----- backends, filters, cgi-bin (if enabled), etc.
> + @$(call install_tree, cups, root, root, -, /usr/lib/cups/backend)
> + @$(call install_tree, cups, root, root, -, /usr/lib/cups/daemon)
> + @$(call install_tree, cups, root, root, -, /usr/lib/cups/filter)
> + @$(call install_tree, cups, root, root, -, /usr/lib/cups/monitor)
> + @$(call install_tree, cups, root, root, -, /usr/lib/cups/notifier)
> +
> +ifdef PTXCONF_CUPS_LIBUSB
> + @$(call install_alternative, cups, root, root, 0644, \
> + /usr/share/cups/usb/org.cups.usb-quirks)
> +endif
> +
> +ifdef PTXCONF_CUPS_WEBINTERFACE
> + @$(call install_lib, cups, root, root, 0755, libcupscgi)
> + @$(call install_tree, cups, root, root, -, /usr/lib/cups/cgi-bin)
> + @$(call install_tree, cups, root, root, -, /usr/share/cups/templates)
> + @$(call install_tree, cups, root, root, -, /usr/share/doc/cups)
> +endif
> +
> +# ----- startup files
> +ifdef PTXCONF_CUPS_SYSTEMD_UNIT
> + @$(call install_alternative, cups, root, root, 0644, \
> + /usr/lib/tmpfiles.d/cups.conf)
> + @$(call install_alternative, cups, root, root, 0644, \
> + /usr/lib/systemd/system/cups.service)
> + @$(call install_alternative, cups, root, root, 0644, \
> + /usr/lib/systemd/system/cups.socket)
> + @$(call install_link, cups, ../cups.service, \
> + /usr/lib/systemd/system/printer.target.wants/cups.service)
> + @$(call install_link, cups, ../cups.socket, \
> + /usr/lib/systemd/system/sockets.target.wants/cups.socket)
> +endif
> +
> +ifdef PTXCONF_CUPS_STARTSCRIPT
> + @$(call install_alternative, cups, root, root, 0755, /etc/init.d/cups)
> + @$(call install_link, cups, ../init.d/cups, \
> + /etc/rc.d/$(PTXCONF_CUPS_BBINIT_LINK))
> +endif
> +
> + @$(call install_finish, cups)
> +
> + @$(call touch)
> +
> +# vim: ft=make ts=8 tw=80
> --
> 2.11.0
>
>
> _______________________________________________
> ptxdist mailing list
> ptxdist@pengutronix.de
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
next prev parent reply other threads:[~2017-10-27 17:54 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-25 20:57 [ptxdist] [PATCH v3 1/7] libpaper: new package: system-wide papersize configuration Roland Hieber
2017-10-25 20:57 ` [ptxdist] [PATCH v3 2/7] qpdf: new package: PDF inspection library and tools Roland Hieber
2017-10-25 20:57 ` [ptxdist] [PATCH v3 3/7] poppler-data: new package: optional encoding data for poppler Roland Hieber
2017-10-25 20:57 ` [ptxdist] [PATCH v3 4/7] poppler: version bump 0.18.0 -> 0.59.0 Roland Hieber
2017-10-25 21:15 ` Roland Hieber
2017-10-28 9:46 ` Michael Olbrich
2017-10-25 20:57 ` [ptxdist] [PATCH v3 5/7] cups: new package: Common Unix Printing System Roland Hieber
2017-10-27 17:54 ` Michael Olbrich [this message]
2017-10-31 22:31 ` Roland Hieber
2017-11-01 10:45 ` Michael Olbrich
2017-10-28 9:54 ` Michael Olbrich
2017-10-31 21:17 ` Roland Hieber
2017-10-25 20:57 ` [ptxdist] [PATCH v3 6/7] host-cups: new package: CUPS host tools Roland Hieber
2017-10-28 9:57 ` Michael Olbrich
2017-10-25 20:57 ` [ptxdist] [PATCH v3 7/7] cups-filters: new package: additional filters and backends for CUPS Roland Hieber
2017-11-01 10:51 ` [ptxdist] [PATCH v3 1/7] libpaper: new package: system-wide papersize configuration Michael Olbrich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171027175409.ye4dulke4sepsanq@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--cc=ptxdist@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox