From 4cd6295e93b37b5ccf1cd64782117a628d65be5b Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Wed, 10 Apr 2013 16:39:19 +0000 Subject: detect systemd at runtime and try not to fail if it's not found, this makes possible to support systems with both systemd and openrc installed (Portage version: 2.2.0_alpha166/cvs/Linux x86_64, signed Manifest commit with key ADC916E5) --- net-print/cups/ChangeLog | 10 +- net-print/cups/cups-1.6.2-r1.ebuild | 293 --------------- net-print/cups/cups-1.6.2-r2.ebuild | 292 +++++++++++++++ net-print/cups/cups-9999.ebuild | 9 +- .../cups/files/cups-1.5.0-systemd-socket-2.patch | 400 +++++++++++++++++++++ 5 files changed, 705 insertions(+), 299 deletions(-) delete mode 100644 net-print/cups/cups-1.6.2-r1.ebuild create mode 100644 net-print/cups/cups-1.6.2-r2.ebuild create mode 100644 net-print/cups/files/cups-1.5.0-systemd-socket-2.patch (limited to 'net-print') diff --git a/net-print/cups/ChangeLog b/net-print/cups/ChangeLog index 6a17dce55d6a..9fae62a32b35 100644 --- a/net-print/cups/ChangeLog +++ b/net-print/cups/ChangeLog @@ -1,6 +1,14 @@ # ChangeLog for net-print/cups # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-print/cups/ChangeLog,v 1.529 2013/04/01 22:51:09 dilfridge Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-print/cups/ChangeLog,v 1.530 2013/04/10 16:39:19 lxnay Exp $ + +*cups-1.6.2-r2 (10 Apr 2013) + + 10 Apr 2013; Fabio Erculiani + +files/cups-1.5.0-systemd-socket-2.patch, -cups-1.6.2-r1.ebuild, + +cups-1.6.2-r2.ebuild, cups-9999.ebuild: + detect systemd at runtime and try not to fail if it's not found, this makes + possible to support systems with both systemd and openrc installed 01 Apr 2013; Andreas K. Huettel -cups-1.6.1.ebuild, -cups-1.6.2.ebuild: diff --git a/net-print/cups/cups-1.6.2-r1.ebuild b/net-print/cups/cups-1.6.2-r1.ebuild deleted file mode 100644 index edd99a2ec78c..000000000000 --- a/net-print/cups/cups-1.6.2-r1.ebuild +++ /dev/null @@ -1,293 +0,0 @@ -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-print/cups/cups-1.6.2-r1.ebuild,v 1.2 2013/04/01 22:49:57 dilfridge Exp $ - -EAPI=5 - -PYTHON_DEPEND="python? 2:2.5" - -inherit autotools base fdo-mime gnome2-utils flag-o-matic linux-info multilib pam python user versionator java-pkg-opt-2 systemd - -MY_P=${P/_beta/b} -MY_PV=${PV/_beta/b} - -if [[ "${PV}" != "9999" ]]; then - SRC_URI="mirror://easysw/${PN}/${MY_PV}/${MY_P}-source.tar.bz2" - KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd" -else - inherit subversion - ESVN_REPO_URI="http://svn.easysw.com/public/cups/trunk" - KEYWORDS="" -fi - -DESCRIPTION="The Common Unix Printing System" -HOMEPAGE="http://www.cups.org/" - -LICENSE="GPL-2" -SLOT="0" -IUSE="acl dbus debug +filters gnutls java kerberos pam - python selinux +ssl static-libs systemd +threads usb X xinetd zeroconf" - -LANGS="ca es fr ja ru" -for X in ${LANGS} ; do - IUSE="${IUSE} +linguas_${X}" -done - -RDEPEND=" - app-text/libpaper - acl? ( - kernel_linux? ( - sys-apps/acl - sys-apps/attr - ) - ) - dbus? ( sys-apps/dbus ) - java? ( >=virtual/jre-1.6 ) - kerberos? ( virtual/krb5 ) - pam? ( virtual/pam ) - selinux? ( sec-policy/selinux-cups ) - ssl? ( - gnutls? ( - dev-libs/libgcrypt - net-libs/gnutls - ) - !gnutls? ( >=dev-libs/openssl-0.9.8g ) - ) - systemd? ( sys-apps/systemd ) - usb? ( virtual/libusb:0 ) - X? ( x11-misc/xdg-utils ) - xinetd? ( sys-apps/xinetd ) - zeroconf? ( net-dns/avahi ) -" - -DEPEND="${RDEPEND} - virtual/pkgconfig -" - -PDEPEND=" - app-text/ghostscript-gpl[cups] - app-text/poppler[utils] - >=net-print/cups-filters-1.0.30 - filters? ( net-print/foomatic-filters ) -" - -REQUIRED_USE="gnutls? ( ssl )" - -# upstream includes an interactive test which is a nono for gentoo -RESTRICT="test" - -S="${WORKDIR}/${MY_P}" - -PATCHES=( - "${FILESDIR}/${PN}-1.6.0-dont-compress-manpages.patch" - "${FILESDIR}/${PN}-1.6.0-fix-install-perms.patch" - "${FILESDIR}/${PN}-1.4.4-nostrip.patch" - "${FILESDIR}/${PN}-1.5.0-systemd-socket.patch" # systemd support - "${FILESDIR}/${PN}-1.6.2-statedir.patch" -) - -pkg_setup() { - enewgroup lp - enewuser lp -1 -1 -1 lp - enewgroup lpadmin 106 - - # python 3 is no-go - if use python; then - python_set_active_version 2 - python_pkg_setup - fi - - if use kernel_linux; then - linux-info_pkg_setup - if ! linux_config_exists; then - ewarn "Can't check the linux kernel configuration." - ewarn "You might have some incompatible options enabled." - else - # recheck that we don't have usblp to collide with libusb - if use usb; then - if linux_chkconfig_present USB_PRINTER; then - eerror "Your usb printers will be managed via libusb. In this case, " - eerror "${P} requires the USB_PRINTER support disabled." - eerror "Please disable it:" - eerror " CONFIG_USB_PRINTER=n" - eerror "in /usr/src/linux/.config or" - eerror " Device Drivers --->" - eerror " USB support --->" - eerror " [ ] USB Printer support" - eerror "Alternatively, just disable the usb useflag for cups (your printer will still work)." - fi - else - #here we should warn user that he should enable it so he can print - if ! linux_chkconfig_present USB_PRINTER; then - ewarn "If you plan to use USB printers you should enable the USB_PRINTER" - ewarn "support in your kernel." - ewarn "Please enable it:" - ewarn " CONFIG_USB_PRINTER=y" - ewarn "in /usr/src/linux/.config or" - ewarn " Device Drivers --->" - ewarn " USB support --->" - ewarn " [*] USB Printer support" - ewarn "Alternatively, enable the usb useflag for cups and use the libusb code." - fi - fi - fi - fi -} - -src_prepare() { - base_src_prepare - AT_M4DIR=config-scripts eaclocal - eautoconf -} - -src_configure() { - export DSOFLAGS="${LDFLAGS}" - - einfo LANGS=\"${LANGS}\" - einfo LINGUAS=\"${LINGUAS}\" - - local myconf - if use ssl ; then - myconf+=" - $(use_enable gnutls) - $(use_enable !gnutls openssl) - " - else - myconf+=" - --disable-gnutls - --disable-openssl - " - fi - - econf \ - --libdir=/usr/$(get_libdir) \ - --localstatedir=/var \ - --with-cups-user=lp \ - --with-cups-group=lp \ - --with-docdir=/usr/share/cups/html \ - --with-languages="${LINGUAS}" \ - --with-system-groups=lpadmin \ - $(use_enable acl) \ - $(use_enable zeroconf avahi) \ - $(use_enable dbus) \ - $(use_enable debug) \ - $(use_enable debug debug-guards) \ - $(use_enable kerberos gssapi) \ - $(use_enable pam) \ - $(use_enable static-libs static) \ - $(use_enable threads) \ - $(use_enable usb libusb) \ - --disable-dnssd \ - $(use_with java) \ - --without-perl \ - --without-php \ - $(use_with python) \ - $(use_with xinetd xinetd /etc/xinetd.d) \ - --enable-libpaper \ - $(use_with systemd systemdsystemunitdir "$(systemd_get_unitdir)") \ - ${myconf} - - # install in /usr/libexec always, instead of using /usr/lib/cups, as that - # makes more sense when facing multilib support. - sed -i -e 's:SERVERBIN.*:SERVERBIN = "$(BUILDROOT)"/usr/libexec/cups:' Makedefs || die - sed -i -e 's:#define CUPS_SERVERBIN.*:#define CUPS_SERVERBIN "/usr/libexec/cups":' config.h || die - sed -i -e 's:cups_serverbin=.*:cups_serverbin=/usr/libexec/cups:' cups-config || die -} - -src_install() { - # Fix install-sh, posix sh does not have 'function'. - sed 's#function gzipcp#gzipcp()#g' -i "${S}/install-sh" - - emake BUILDROOT="${D}" install - dodoc {CHANGES,CREDITS,README}.txt - - # move the default config file to docs - dodoc "${ED}"/etc/cups/cupsd.conf.default - rm -f "${ED}"/etc/cups/cupsd.conf.default - - # clean out cups init scripts - rm -rf "${ED}"/etc/{init.d/cups,rc*,pam.d/cups} - - # install our init script - local neededservices - use zeroconf && neededservices+=" avahi-daemon" - use dbus && neededservices+=" dbus" - [[ -n ${neededservices} ]] && neededservices="need${neededservices}" - cp "${FILESDIR}"/cupsd.init.d-r1 "${T}"/cupsd || die - sed -i \ - -e "s/@neededservices@/$neededservices/" \ - "${T}"/cupsd || die - doinitd "${T}"/cupsd - - # install our pam script - pamd_mimic_system cups auth account - - if use xinetd ; then - # correct path - sed -i \ - -e "s:server = .*:server = /usr/libexec/cups/daemon/cups-lpd:" \ - "${ED}"/etc/xinetd.d/cups-lpd || die - # it is safer to disable this by default, bug #137130 - grep -w 'disable' "${ED}"/etc/xinetd.d/cups-lpd || \ - { sed -i -e "s:}:\tdisable = yes\n}:" "${ED}"/etc/xinetd.d/cups-lpd || die ; } - # write permission for file owner (root), bug #296221 - fperms u+w /etc/xinetd.d/cups-lpd || die "fperms failed" - else - rm -rf "${ED}"/etc/xinetd.d - fi - - keepdir /usr/libexec/cups/driver /usr/share/cups/{model,profiles} \ - /var/cache/cups /var/cache/cups/rss /var/log/cups \ - /var/spool/cups/tmp - - keepdir /etc/cups/{interfaces,ppd,ssl} - - use X || rm -r "${ED}"/usr/share/applications - - # create /etc/cups/client.conf, bug #196967 and #266678 - echo "ServerName /run/cups/cups.sock" >> "${ED}"/etc/cups/client.conf - - # the following files are now provided by cups-filters: - rm -r "${ED}"/usr/share/cups/banners || die - rm -r "${ED}"/usr/share/cups/data/testprint || die -} - -pkg_preinst() { - gnome2_icon_savelist -} - -pkg_postinst() { - # Update desktop file database and gtk icon cache (bug 370059) - gnome2_icon_cache_update - fdo-mime_desktop_database_update - - # not slotted - at most one value - if ! [[ "${REPLACING_VERSIONS}" ]]; then - echo - elog "For information about installing a printer and general cups setup" - elog "take a look at: http://www.gentoo.org/doc/en/printing-howto.xml" - echo - fi - - if [[ "${REPLACING_VERSIONS}" ]] && [[ "${REPLACING_VERSIONS}" < "1.6" ]]; then - echo - elog "CUPS-1.6 no longer supports automatic remote printers or implicit classes" - elog "via the CUPS, LDAP, or SLP protocols, i.e. \"network browsing\"." - elog "You will have to find printers using zeroconf/avahi instead, enter" - elog "the location manually, or run cups-browsed from net-print/cups-filters" - elog "which re-adds that functionality as a separate daemon." - echo - elif [[ "${REPLACING_VERSIONS}" ]] && [[ "${REPLACING_VERSIONS}" < "1.6.2" ]]; then - echo - elog "Starting with net-print/cups-filters-1.0.30, that package provides" - elog "a daemon cups-browsed which implements printer discovery via the" - elog "Cups-1.5 protocol. Not much tested so far though." - echo - fi -} - -pkg_postrm() { - # Update desktop file database and gtk icon cache (bug 370059) - gnome2_icon_cache_update - fdo-mime_desktop_database_update -} diff --git a/net-print/cups/cups-1.6.2-r2.ebuild b/net-print/cups/cups-1.6.2-r2.ebuild new file mode 100644 index 000000000000..c9daaf21c99b --- /dev/null +++ b/net-print/cups/cups-1.6.2-r2.ebuild @@ -0,0 +1,292 @@ +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-print/cups/cups-1.6.2-r2.ebuild,v 1.1 2013/04/10 16:39:19 lxnay Exp $ + +EAPI=5 + +PYTHON_DEPEND="python? 2:2.5" + +inherit autotools base fdo-mime gnome2-utils flag-o-matic linux-info multilib pam python user versionator java-pkg-opt-2 systemd + +MY_P=${P/_beta/b} +MY_PV=${PV/_beta/b} + +if [[ "${PV}" != "9999" ]]; then + SRC_URI="mirror://easysw/${PN}/${MY_PV}/${MY_P}-source.tar.bz2" + KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd" +else + inherit subversion + ESVN_REPO_URI="http://svn.easysw.com/public/cups/trunk" + KEYWORDS="" +fi + +DESCRIPTION="The Common Unix Printing System" +HOMEPAGE="http://www.cups.org/" + +LICENSE="GPL-2" +SLOT="0" +IUSE="acl dbus debug +filters gnutls java kerberos pam + python selinux +ssl static-libs +threads usb X xinetd zeroconf" + +LANGS="ca es fr ja ru" +for X in ${LANGS} ; do + IUSE="${IUSE} +linguas_${X}" +done + +RDEPEND=" + app-text/libpaper + acl? ( + kernel_linux? ( + sys-apps/acl + sys-apps/attr + ) + ) + dbus? ( sys-apps/dbus ) + java? ( >=virtual/jre-1.6 ) + kerberos? ( virtual/krb5 ) + pam? ( virtual/pam ) + selinux? ( sec-policy/selinux-cups ) + ssl? ( + gnutls? ( + dev-libs/libgcrypt + net-libs/gnutls + ) + !gnutls? ( >=dev-libs/openssl-0.9.8g ) + ) + usb? ( virtual/libusb:0 ) + X? ( x11-misc/xdg-utils ) + xinetd? ( sys-apps/xinetd ) + zeroconf? ( net-dns/avahi ) +" + +DEPEND="${RDEPEND} + virtual/pkgconfig +" + +PDEPEND=" + app-text/ghostscript-gpl[cups] + app-text/poppler[utils] + >=net-print/cups-filters-1.0.30 + filters? ( net-print/foomatic-filters ) +" + +REQUIRED_USE="gnutls? ( ssl )" + +# upstream includes an interactive test which is a nono for gentoo +RESTRICT="test" + +S="${WORKDIR}/${MY_P}" + +PATCHES=( + "${FILESDIR}/${PN}-1.6.0-dont-compress-manpages.patch" + "${FILESDIR}/${PN}-1.6.0-fix-install-perms.patch" + "${FILESDIR}/${PN}-1.4.4-nostrip.patch" + "${FILESDIR}/${PN}-1.5.0-systemd-socket-2.patch" # systemd support + "${FILESDIR}/${PN}-1.6.2-statedir.patch" +) + +pkg_setup() { + enewgroup lp + enewuser lp -1 -1 -1 lp + enewgroup lpadmin 106 + + # python 3 is no-go + if use python; then + python_set_active_version 2 + python_pkg_setup + fi + + if use kernel_linux; then + linux-info_pkg_setup + if ! linux_config_exists; then + ewarn "Can't check the linux kernel configuration." + ewarn "You might have some incompatible options enabled." + else + # recheck that we don't have usblp to collide with libusb + if use usb; then + if linux_chkconfig_present USB_PRINTER; then + eerror "Your usb printers will be managed via libusb. In this case, " + eerror "${P} requires the USB_PRINTER support disabled." + eerror "Please disable it:" + eerror " CONFIG_USB_PRINTER=n" + eerror "in /usr/src/linux/.config or" + eerror " Device Drivers --->" + eerror " USB support --->" + eerror " [ ] USB Printer support" + eerror "Alternatively, just disable the usb useflag for cups (your printer will still work)." + fi + else + #here we should warn user that he should enable it so he can print + if ! linux_chkconfig_present USB_PRINTER; then + ewarn "If you plan to use USB printers you should enable the USB_PRINTER" + ewarn "support in your kernel." + ewarn "Please enable it:" + ewarn " CONFIG_USB_PRINTER=y" + ewarn "in /usr/src/linux/.config or" + ewarn " Device Drivers --->" + ewarn " USB support --->" + ewarn " [*] USB Printer support" + ewarn "Alternatively, enable the usb useflag for cups and use the libusb code." + fi + fi + fi + fi +} + +src_prepare() { + base_src_prepare + AT_M4DIR=config-scripts eaclocal + eautoconf +} + +src_configure() { + export DSOFLAGS="${LDFLAGS}" + + einfo LANGS=\"${LANGS}\" + einfo LINGUAS=\"${LINGUAS}\" + + local myconf + if use ssl ; then + myconf+=" + $(use_enable gnutls) + $(use_enable !gnutls openssl) + " + else + myconf+=" + --disable-gnutls + --disable-openssl + " + fi + + econf \ + --libdir=/usr/$(get_libdir) \ + --localstatedir=/var \ + --with-cups-user=lp \ + --with-cups-group=lp \ + --with-docdir=/usr/share/cups/html \ + --with-languages="${LINGUAS}" \ + --with-system-groups=lpadmin \ + $(use_enable acl) \ + $(use_enable zeroconf avahi) \ + $(use_enable dbus) \ + $(use_enable debug) \ + $(use_enable debug debug-guards) \ + $(use_enable kerberos gssapi) \ + $(use_enable pam) \ + $(use_enable static-libs static) \ + $(use_enable threads) \ + $(use_enable usb libusb) \ + --disable-dnssd \ + $(use_with java) \ + --without-perl \ + --without-php \ + $(use_with python) \ + $(use_with xinetd xinetd /etc/xinetd.d) \ + --enable-libpaper \ + --with-systemdsystemunitdir="$(systemd_get_unitdir)" \ + ${myconf} + + # install in /usr/libexec always, instead of using /usr/lib/cups, as that + # makes more sense when facing multilib support. + sed -i -e 's:SERVERBIN.*:SERVERBIN = "$(BUILDROOT)"/usr/libexec/cups:' Makedefs || die + sed -i -e 's:#define CUPS_SERVERBIN.*:#define CUPS_SERVERBIN "/usr/libexec/cups":' config.h || die + sed -i -e 's:cups_serverbin=.*:cups_serverbin=/usr/libexec/cups:' cups-config || die +} + +src_install() { + # Fix install-sh, posix sh does not have 'function'. + sed 's#function gzipcp#gzipcp()#g' -i "${S}/install-sh" + + emake BUILDROOT="${D}" install + dodoc {CHANGES,CREDITS,README}.txt + + # move the default config file to docs + dodoc "${ED}"/etc/cups/cupsd.conf.default + rm -f "${ED}"/etc/cups/cupsd.conf.default + + # clean out cups init scripts + rm -rf "${ED}"/etc/{init.d/cups,rc*,pam.d/cups} + + # install our init script + local neededservices + use zeroconf && neededservices+=" avahi-daemon" + use dbus && neededservices+=" dbus" + [[ -n ${neededservices} ]] && neededservices="need${neededservices}" + cp "${FILESDIR}"/cupsd.init.d-r1 "${T}"/cupsd || die + sed -i \ + -e "s/@neededservices@/$neededservices/" \ + "${T}"/cupsd || die + doinitd "${T}"/cupsd + + # install our pam script + pamd_mimic_system cups auth account + + if use xinetd ; then + # correct path + sed -i \ + -e "s:server = .*:server = /usr/libexec/cups/daemon/cups-lpd:" \ + "${ED}"/etc/xinetd.d/cups-lpd || die + # it is safer to disable this by default, bug #137130 + grep -w 'disable' "${ED}"/etc/xinetd.d/cups-lpd || \ + { sed -i -e "s:}:\tdisable = yes\n}:" "${ED}"/etc/xinetd.d/cups-lpd || die ; } + # write permission for file owner (root), bug #296221 + fperms u+w /etc/xinetd.d/cups-lpd || die "fperms failed" + else + rm -rf "${ED}"/etc/xinetd.d + fi + + keepdir /usr/libexec/cups/driver /usr/share/cups/{model,profiles} \ + /var/cache/cups /var/cache/cups/rss /var/log/cups \ + /var/spool/cups/tmp + + keepdir /etc/cups/{interfaces,ppd,ssl} + + use X || rm -r "${ED}"/usr/share/applications + + # create /etc/cups/client.conf, bug #196967 and #266678 + echo "ServerName /run/cups/cups.sock" >> "${ED}"/etc/cups/client.conf + + # the following files are now provided by cups-filters: + rm -r "${ED}"/usr/share/cups/banners || die + rm -r "${ED}"/usr/share/cups/data/testprint || die +} + +pkg_preinst() { + gnome2_icon_savelist +} + +pkg_postinst() { + # Update desktop file database and gtk icon cache (bug 370059) + gnome2_icon_cache_update + fdo-mime_desktop_database_update + + # not slotted - at most one value + if ! [[ "${REPLACING_VERSIONS}" ]]; then + echo + elog "For information about installing a printer and general cups setup" + elog "take a look at: http://www.gentoo.org/doc/en/printing-howto.xml" + echo + fi + + if [[ "${REPLACING_VERSIONS}" ]] && [[ "${REPLACING_VERSIONS}" < "1.6" ]]; then + echo + elog "CUPS-1.6 no longer supports automatic remote printers or implicit classes" + elog "via the CUPS, LDAP, or SLP protocols, i.e. \"network browsing\"." + elog "You will have to find printers using zeroconf/avahi instead, enter" + elog "the location manually, or run cups-browsed from net-print/cups-filters" + elog "which re-adds that functionality as a separate daemon." + echo + elif [[ "${REPLACING_VERSIONS}" ]] && [[ "${REPLACING_VERSIONS}" < "1.6.2" ]]; then + echo + elog "Starting with net-print/cups-filters-1.0.30, that package provides" + elog "a daemon cups-browsed which implements printer discovery via the" + elog "Cups-1.5 protocol. Not much tested so far though." + echo + fi +} + +pkg_postrm() { + # Update desktop file database and gtk icon cache (bug 370059) + gnome2_icon_cache_update + fdo-mime_desktop_database_update +} diff --git a/net-print/cups/cups-9999.ebuild b/net-print/cups/cups-9999.ebuild index 0a2eb4202ef7..10630017144f 100644 --- a/net-print/cups/cups-9999.ebuild +++ b/net-print/cups/cups-9999.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/net-print/cups/cups-9999.ebuild,v 1.28 2013/04/01 22:49:57 dilfridge Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-print/cups/cups-9999.ebuild,v 1.29 2013/04/10 16:39:19 lxnay Exp $ EAPI=5 @@ -26,7 +26,7 @@ HOMEPAGE="http://www.cups.org/" LICENSE="GPL-2" SLOT="0" IUSE="acl dbus debug +filters gnutls java kerberos pam - python selinux +ssl static-libs systemd +threads usb X xinetd zeroconf" + python selinux +ssl static-libs +threads usb X xinetd zeroconf" LANGS="ca es fr ja ru" for X in ${LANGS} ; do @@ -53,7 +53,6 @@ RDEPEND=" ) !gnutls? ( >=dev-libs/openssl-0.9.8g ) ) - systemd? ( sys-apps/systemd ) usb? ( virtual/libusb:0 ) X? ( x11-misc/xdg-utils ) xinetd? ( sys-apps/xinetd ) @@ -82,7 +81,7 @@ PATCHES=( "${FILESDIR}/${PN}-1.6.0-dont-compress-manpages.patch" "${FILESDIR}/${PN}-1.6.0-fix-install-perms.patch" "${FILESDIR}/${PN}-1.4.4-nostrip.patch" - "${FILESDIR}/${PN}-1.5.0-systemd-socket.patch" # systemd support + "${FILESDIR}/${PN}-1.5.0-systemd-socket-2.patch" # systemd support "${FILESDIR}/${PN}-1.6.2-statedir.patch" ) @@ -184,7 +183,7 @@ src_configure() { $(use_with python) \ $(use_with xinetd xinetd /etc/xinetd.d) \ --enable-libpaper \ - $(use_with systemd systemdsystemunitdir "$(systemd_get_unitdir)") \ + --with-systemdsystemunitdir="$(systemd_get_unitdir)" \ ${myconf} # install in /usr/libexec always, instead of using /usr/lib/cups, as that diff --git a/net-print/cups/files/cups-1.5.0-systemd-socket-2.patch b/net-print/cups/files/cups-1.5.0-systemd-socket-2.patch new file mode 100644 index 000000000000..d24489f0a0d5 --- /dev/null +++ b/net-print/cups/files/cups-1.5.0-systemd-socket-2.patch @@ -0,0 +1,400 @@ +diff -up cups-1.5.0/config.h.in.systemd-socket cups-1.5.0/config.h.in +--- cups-1.5.0/config.h.in.systemd-socket 2011-10-18 15:32:40.741672460 +0100 ++++ cups-1.5.0/config.h.in 2011-10-18 15:32:40.843670530 +0100 +@@ -503,6 +503,13 @@ + + + /* ++ * Do we have systemd support? ++ */ ++ ++#undef HAVE_SYSTEMD ++ ++ ++/* + * Various scripting languages... + */ + +diff -up cups-1.5.0/config-scripts/cups-systemd.m4.systemd-socket cups-1.5.0/config-scripts/cups-systemd.m4 +--- cups-1.5.0/config-scripts/cups-systemd.m4.systemd-socket 2011-10-18 15:32:40.844670511 +0100 ++++ cups-1.5.0/config-scripts/cups-systemd.m4 2011-10-18 15:33:16.861989058 +0100 +@@ -0,0 +1,36 @@ ++dnl ++dnl "$Id: cups-1.5.0-systemd-socket-2.patch,v 1.1 2013/04/10 16:39:19 lxnay Exp $" ++dnl ++dnl systemd stuff for CUPS. ++ ++dnl Find whether systemd is available ++ ++SDLIBS="" ++AC_ARG_WITH([systemdsystemunitdir], ++ AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), ++ [], [with_systemdsystemunitdir=$($PKGCONFIG --variable=systemdsystemunitdir systemd)]) ++if test "x$with_systemdsystemunitdir" != xno; then ++ AC_MSG_CHECKING(for libsystemd-daemon) ++ if $PKGCONFIG --exists libsystemd-daemon; then ++ AC_MSG_RESULT(yes) ++ SDCFLAGS=`$PKGCONFIG --cflags libsystemd-daemon` ++ SDLIBS=`$PKGCONFIG --libs libsystemd-daemon` ++ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir]) ++ AC_DEFINE(HAVE_SYSTEMD) ++ else ++ AC_MSG_RESULT(no) ++ fi ++fi ++ ++if test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ; then ++ SYSTEMD_UNITS="cups.service cups.socket cups.path" ++else ++ SYSTEMD_UNITS="" ++fi ++ ++AC_SUBST(SYSTEMD_UNITS) ++AC_SUBST(SDLIBS) ++ ++dnl ++dnl "$Id: cups-1.5.0-systemd-socket-2.patch,v 1.1 2013/04/10 16:39:19 lxnay Exp $" ++dnl +diff -up cups-1.5.0/configure.in.systemd-socket cups-1.5.0/configure.in +--- cups-1.5.0/configure.in.systemd-socket 2010-11-20 01:03:46.000000000 +0000 ++++ cups-1.5.0/configure.in 2011-10-18 15:32:40.844670511 +0100 +@@ -37,6 +37,7 @@ sinclude(config-scripts/cups-pam.m4) + sinclude(config-scripts/cups-largefile.m4) + sinclude(config-scripts/cups-dnssd.m4) + sinclude(config-scripts/cups-launchd.m4) ++sinclude(config-scripts/cups-systemd.m4) + sinclude(config-scripts/cups-defaults.m4) + sinclude(config-scripts/cups-pdf.m4) + sinclude(config-scripts/cups-scripting.m4) +@@ -71,6 +72,9 @@ AC_OUTPUT(Makedefs + conf/snmp.conf + cups-config + data/testprint ++ data/cups.service ++ data/cups.socket ++ data/cups.path + desktop/cups.desktop + doc/help/ref-cupsd-conf.html + doc/help/standard.html +diff -up cups-1.5.0/cups/usersys.c.systemd-socket cups-1.5.0/cups/usersys.c +--- cups-1.5.0/cups/usersys.c.systemd-socket 2011-10-18 15:32:40.645674277 +0100 ++++ cups-1.5.0/cups/usersys.c 2011-10-18 15:32:40.845670492 +0100 +@@ -770,7 +770,7 @@ cups_read_client_conf( + struct stat sockinfo; /* Domain socket information */ + + if (!stat(CUPS_DEFAULT_DOMAINSOCKET, &sockinfo) && +- (sockinfo.st_mode & S_IRWXO) == S_IRWXO) ++ (sockinfo.st_mode & (S_IROTH | S_IWOTH)) == (S_IROTH | S_IWOTH)) + cups_server = CUPS_DEFAULT_DOMAINSOCKET; + else + #endif /* CUPS_DEFAULT_DOMAINSOCKET */ +diff -up cups-1.5.0/data/cups.path.in.systemd-socket cups-1.5.0/data/cups.path.in +--- cups-1.5.0/data/cups.path.in.systemd-socket 2011-10-18 15:32:40.846670473 +0100 ++++ cups-1.5.0/data/cups.path.in 2011-10-18 15:32:40.846670473 +0100 +@@ -0,0 +1,8 @@ ++[Unit] ++Description=CUPS Printer Service Spool ++ ++[Path] ++PathExistsGlob=@CUPS_REQUESTS@/d* ++ ++[Install] ++WantedBy=multi-user.target +diff -up cups-1.5.0/data/cups.service.in.systemd-socket cups-1.5.0/data/cups.service.in +--- cups-1.5.0/data/cups.service.in.systemd-socket 2011-10-18 15:32:40.846670473 +0100 ++++ cups-1.5.0/data/cups.service.in 2011-10-18 15:32:40.846670473 +0100 +@@ -0,0 +1,9 @@ ++[Unit] ++Description=CUPS Printing Service ++ ++[Service] ++ExecStart=@sbindir@/cupsd -f ++ ++[Install] ++Also=cups.socket cups.path ++WantedBy=printer.target +diff -up cups-1.5.0/data/cups.socket.in.systemd-socket cups-1.5.0/data/cups.socket.in +--- cups-1.5.0/data/cups.socket.in.systemd-socket 2011-10-18 15:32:40.847670454 +0100 ++++ cups-1.5.0/data/cups.socket.in 2011-10-18 15:32:40.847670454 +0100 +@@ -0,0 +1,10 @@ ++[Unit] ++Description=CUPS Printing Service Sockets ++ ++[Socket] ++ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@ ++ListenStream=631 ++BindIPv6Only=ipv6-only ++ ++[Install] ++WantedBy=sockets.target +diff -up cups-1.5.0/data/Makefile.systemd-socket cups-1.5.0/data/Makefile +--- cups-1.5.0/data/Makefile.systemd-socket 2011-05-12 06:21:56.000000000 +0100 ++++ cups-1.5.0/data/Makefile 2011-10-18 15:32:40.847670454 +0100 +@@ -112,6 +112,12 @@ install-data: + $(INSTALL_DATA) $$file $(DATADIR)/ppdc; \ + done + $(INSTALL_DIR) -m 755 $(DATADIR)/profiles ++ if test "x$(SYSTEMD_UNITS)" != "x" ; then \ ++ $(INSTALL_DIR) -m 755 $(SYSTEMDUNITDIR); \ ++ for file in $(SYSTEMD_UNITS); do \ ++ $(INSTALL_DATA) $$file $(SYSTEMDUNITDIR); \ ++ done; \ ++ fi + + + # +@@ -159,6 +165,9 @@ uninstall: + -$(RMDIR) $(DATADIR)/charsets + -$(RMDIR) $(DATADIR)/banners + -$(RMDIR) $(DATADIR) ++ for file in $(SYSTEMD_UNITS); do \ ++ $(RM) $(SYSTEMDUNITDIR)/$$file; \ ++ done + + + # +diff -up cups-1.5.0/Makedefs.in.systemd-socket cups-1.5.0/Makedefs.in +--- cups-1.5.0/Makedefs.in.systemd-socket 2011-10-18 15:32:40.719672876 +0100 ++++ cups-1.5.0/Makedefs.in 2011-10-18 15:32:40.848670435 +0100 +@@ -143,6 +143,7 @@ CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@ + CXXLIBS = @CXXLIBS@ + DBUS_NOTIFIER = @DBUS_NOTIFIER@ + DBUS_NOTIFIERLIBS = @DBUS_NOTIFIERLIBS@ ++SYSTEMD_UNITS = @SYSTEMD_UNITS@ + DNSSD_BACKEND = @DNSSD_BACKEND@ + DSOFLAGS = -L../cups @DSOFLAGS@ + DSOLIBS = @DSOLIBS@ $(COMMONLIBS) +@@ -151,6 +152,7 @@ FONTS = @FONTS@ + IMGLIBS = @IMGLIBS@ + IMGFILTERS = @IMGFILTERS@ + LAUNCHDLIBS = @LAUNCHDLIBS@ ++SDLIBS = @SDLIBS@ + LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \ + -L../scheduler @LDARCHFLAGS@ \ + @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM) +@@ -267,6 +269,7 @@ PAMFILE = @PAMFILE@ + + DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@ + DBUSDIR = @DBUSDIR@ ++SYSTEMDUNITDIR = $(BUILDROOT)@systemdsystemunitdir@ + + + # +diff -up cups-1.5.0/scheduler/client.h.systemd-socket cups-1.5.0/scheduler/client.h +--- cups-1.5.0/scheduler/client.h.systemd-socket 2011-03-25 21:25:38.000000000 +0000 ++++ cups-1.5.0/scheduler/client.h 2011-10-18 15:32:40.848670435 +0100 +@@ -75,6 +75,9 @@ typedef struct + int fd; /* File descriptor for this server */ + http_addr_t address; /* Bind address of socket */ + http_encryption_t encryption; /* To encrypt or not to encrypt... */ ++#ifdef HAVE_SYSTEMD ++ int is_systemd; /* Is this a systemd socket? */ ++#endif /* HAVE_SYSTEMD */ + } cupsd_listener_t; + + +diff -up cups-1.5.0/scheduler/listen.c.systemd-socket cups-1.5.0/scheduler/listen.c +--- cups-1.5.0/scheduler/listen.c.systemd-socket 2011-04-16 00:38:13.000000000 +0100 ++++ cups-1.5.0/scheduler/listen.c 2011-10-18 15:32:40.849670416 +0100 +@@ -401,7 +401,11 @@ cupsdStopListening(void) + lis; + lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) + { +- if (lis->fd != -1) ++ if (lis->fd != -1 ++#ifdef HAVE_SYSTEMD ++ && !lis->is_systemd ++#endif /* HAVE_SYSTEMD */ ++ ) + { + #ifdef WIN32 + closesocket(lis->fd); +diff -up cups-1.5.0/scheduler/main.c.systemd-socket cups-1.5.0/scheduler/main.c +--- cups-1.5.0/scheduler/main.c.systemd-socket 2011-10-18 15:32:40.802671306 +0100 ++++ cups-1.5.0/scheduler/main.c 2011-10-18 15:32:40.851670379 +0100 +@@ -26,6 +26,8 @@ + * launchd_checkin() - Check-in with launchd and collect the listening + * fds. + * launchd_checkout() - Update the launchd KeepAlive file as needed. ++ * systemd_checkin() - Check-in with systemd and collect the ++ * listening fds. + * parent_handler() - Catch USR1/CHLD signals... + * process_children() - Process all dead children... + * select_timeout() - Calculate the select timeout value. +@@ -62,6 +64,10 @@ + # endif /* !LAUNCH_JOBKEY_SERVICEIPC */ + #endif /* HAVE_LAUNCH_H */ + ++#ifdef HAVE_SYSTEMD ++#include ++#endif /* HAVE_SYSTEMD */ ++ + #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) + # include + #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */ +@@ -83,6 +89,9 @@ + static void launchd_checkin(void); + static void launchd_checkout(void); + #endif /* HAVE_LAUNCHD */ ++#ifdef HAVE_SYSTEMD ++static int systemd_checkin(void); ++#endif /* HAVE_SYSTEMD */ + static void parent_handler(int sig); + static void process_children(void); + static void sigchld_handler(int sig); +@@ -571,6 +580,14 @@ main(int argc, /* I - Number of comm + } + #endif /* HAVE_LAUNCHD */ + ++#ifdef HAVE_SYSTEMD ++ /* ++ * If we were started by systemd get the listen sockets file descriptors... ++ */ ++ if (systemd_checkin() < 0) ++ exit(EXIT_FAILURE); ++#endif /* HAVE_SYSTEMD */ ++ + /* + * Startup the server... + */ +@@ -781,6 +798,16 @@ main(int argc, /* I - Number of comm + } + #endif /* HAVE_LAUNCHD */ + ++#ifdef HAVE_SYSTEMD ++ /* ++ * If we were started by systemd get the listen sockets file ++ * descriptors... ++ */ ++ ++ if (systemd_checkin() < 0) ++ exit(EXIT_FAILURE); ++#endif /* HAVE_SYSTEMD */ ++ + /* + * Startup the server... + */ +@@ -1542,6 +1569,102 @@ launchd_checkout(void) + } + #endif /* HAVE_LAUNCHD */ + ++#ifdef HAVE_SYSTEMD ++static int ++systemd_checkin(void) ++{ ++ int n, fd; ++ ++ n = sd_listen_fds(0); ++ if (n < 0) ++ { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Failed to acquire sockets " ++ "from systemd - %s -- skipping systemd activation", ++ strerror(-n)); ++ return (1); ++ } ++ ++ if (n == 0) ++ return (0); ++ ++ for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd ++) ++ { ++ http_addr_t addr; ++ socklen_t addrlen = sizeof (addr); ++ int r; ++ cupsd_listener_t *lis; ++ char s[256]; ++ ++ r = sd_is_socket(fd, AF_UNSPEC, SOCK_STREAM, 1); ++ if (r < 0) { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Unable to verify socket type - %s", ++ strerror(-r)); ++ continue; ++ } ++ ++ if (!r) { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Socket not of the right type"); ++ continue; ++ } ++ ++ if (getsockname(fd, (struct sockaddr*) &addr, &addrlen)) ++ { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Unable to get local address - %s", ++ strerror(errno)); ++ continue; ++ } ++ ++ /* ++ * Try to match the systemd socket address to one of the listeners... ++ */ ++ ++ for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners); ++ lis; ++ lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) ++ if (httpAddrEqual(&lis->address, &addr)) ++ break; ++ ++ if (lis) ++ { ++ cupsdLogMessage(CUPSD_LOG_DEBUG, ++ "systemd_checkin: Matched existing listener %s with fd %d...", ++ httpAddrString(&(lis->address), s, sizeof(s)), fd); ++ } ++ else ++ { ++ cupsdLogMessage(CUPSD_LOG_DEBUG, ++ "systemd_checkin: Adding new listener %s with fd %d...", ++ httpAddrString(&addr, s, sizeof(s)), fd); ++ ++ if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL) ++ { ++ cupsdLogMessage(CUPSD_LOG_ERROR, ++ "systemd_checkin: Unable to allocate listener - " ++ "%s.", strerror(errno)); ++ return (-ENOMEM); ++ } ++ ++ cupsArrayAdd(Listeners, lis); ++ ++ memcpy(&lis->address, &addr, sizeof(lis->address)); ++ } ++ ++ lis->fd = fd; ++ lis->is_systemd = 1; ++ ++# ifdef HAVE_SSL ++ if (_httpAddrPort(&(lis->address)) == 443) ++ lis->encryption = HTTP_ENCRYPT_ALWAYS; ++# endif /* HAVE_SSL */ ++ } ++ ++ return (0); ++} ++#endif /* HAVE_SYSTEMD */ + + /* + * 'parent_handler()' - Catch USR1/CHLD signals... +diff -up cups-1.5.0/scheduler/Makefile.systemd-socket cups-1.5.0/scheduler/Makefile +--- cups-1.5.0/scheduler/Makefile.systemd-socket 2011-10-18 15:32:40.817671022 +0100 ++++ cups-1.5.0/scheduler/Makefile 2011-10-18 15:32:40.852670360 +0100 +@@ -382,7 +382,7 @@ cupsd: $(CUPSDOBJS) $(LIBCUPSMIME) ../cu + $(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) -L. -lcupsmime \ + $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \ + $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBS) \ +- $(LIBGSSAPI) $(LIBWRAP) ++ $(LIBGSSAPI) $(LIBWRAP) $(SDLIBS) + + cupsd-static: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC) + echo Linking $@... +@@ -390,7 +390,7 @@ cupsd-static: $(CUPSDOBJS) libcupsmime.a + $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \ + ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \ + $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBGSSAPI) \ +- $(LIBWRAP) ++ $(LIBWRAP) $(SDLIBS) + + + # -- cgit v1.2.3-65-gdbad