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.hie...@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.hie...@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.hie...@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.hie...@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.hie...@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.hie...@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.hie...@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.hie...@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.hie...@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

Reply via email to