summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /net-print/cups
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'net-print/cups')
-rw-r--r--net-print/cups/Manifest3
-rw-r--r--net-print/cups/cups-2.0.1-r1.ebuild358
-rw-r--r--net-print/cups/cups-2.0.2-r1.ebuild358
-rw-r--r--net-print/cups/cups-2.0.3.ebuild358
-rw-r--r--net-print/cups/cups-9999.ebuild354
-rw-r--r--net-print/cups/files/cups-1.4.4-nostrip.patch14
-rw-r--r--net-print/cups/files/cups-1.6.0-dont-compress-manpages.patch19
-rw-r--r--net-print/cups/files/cups-1.6.0-fix-install-perms.patch25
-rw-r--r--net-print/cups/files/cups-1.7.2-systemd-socket-2.patch391
-rw-r--r--net-print/cups/files/cups-2.0.0-rename-systemd-service-files.patch177
-rw-r--r--net-print/cups/files/cups-2.0.1-fix-compilation.patch25
-rw-r--r--net-print/cups/files/cups-2.0.1-fix-linkage-to-gnutls.patch24
-rw-r--r--net-print/cups/files/cups-2.0.1-rename-systemd-service-files.patch73
-rw-r--r--net-print/cups/files/cups-2.0.1-xinetd-installation-fix.patch9
-rw-r--r--net-print/cups/files/cups-2.0.2-poll-CPU-loop-STR-4605.patch48
-rw-r--r--net-print/cups/files/cups-2.0.2-rename-systemd-service-files.patch46
-rw-r--r--net-print/cups/files/cups-2.0.2-systemd-socket.patch60
-rw-r--r--net-print/cups/files/cupsd.init.d-r126
-rw-r--r--net-print/cups/metadata.xml16
19 files changed, 2384 insertions, 0 deletions
diff --git a/net-print/cups/Manifest b/net-print/cups/Manifest
new file mode 100644
index 000000000000..16d23103fb5f
--- /dev/null
+++ b/net-print/cups/Manifest
@@ -0,0 +1,3 @@
+DIST cups-2.0.1-source.tar.bz2 8738217 SHA256 60f7f2cca69f3b761a029fb314ee4299e3ea0fc02350f06d192cf31d58215525 SHA512 a92e4735f23f45fd16fb47ea729be762001c5b74f785d344bb11d3e87a361aa772ef79ff41106cdc30f45a1396ba419d6e5f77164b9deee27876e9928357f3ce WHIRLPOOL 4f9695bfa759d5bcf611f30c0f071ad352066313f871e2459c005511a4713ad1c58b90bbe3cc233bb72a5b0a51e27b630c0a27d1ddfed80044c0f6dca14e53c8
+DIST cups-2.0.2-source.tar.bz2 8766982 SHA256 858720f76b66fd0441ae2a16f7cabd9554c8c64607e28ffacf16c36c53a3b18b SHA512 6b0ae58983f66ea295aabe7367880931aabbb4390085d31bcdd8d42830c958c23b34bfa8b761bd681e233d9727a7841524076dd9760f5b093a6001676d74bc2e WHIRLPOOL 6a6282c0f72f3c1fdae0652245e7cb69c9f3a8a51d1ec4b1e81ffcf1a6871a67f17fa497f41737b37b7fb8c0fe964abad141ea1dc4c065c70c72dee8b965bf60
+DIST cups-2.0.3-source.tar.bz2 8797220 SHA256 bc3167048690a7379f29a37d9fbd2143cf0ca033b54eedd9333ddfc4ee258881 SHA512 fcc2be8d12cec624423a07706486afd226c9cb29b2ba694d63b8250c16a7d0f39aa51e6c831ca7c978ba5009e98b1daedad4b119a4f3287a88e21e48f0d07e18 WHIRLPOOL d12771b6d941db78854a1b05644a4402fa6a62f8acab1332c7490887e0099463b129684f4dd21b5e9f02e4f8e23bef633a06fca01ad8fa8b34de9298b72ab3ba
diff --git a/net-print/cups/cups-2.0.1-r1.ebuild b/net-print/cups/cups-2.0.1-r1.ebuild
new file mode 100644
index 000000000000..7273dc974c29
--- /dev/null
+++ b/net-print/cups/cups-2.0.1-r1.ebuild
@@ -0,0 +1,358 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit autotools base fdo-mime gnome2-utils flag-o-matic linux-info \
+ multilib multilib-minimal pam python-single-r1 user versionator \
+ java-pkg-opt-2 systemd toolchain-funcs
+
+MY_P=${P/_rc/rc}
+MY_P=${MY_P/_beta/b}
+MY_PV=${PV/_rc/rc}
+MY_PV=${MY_PV/_beta/b}
+
+if [[ ${PV} == *9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="http://www.cups.org/cups.git"
+ if [[ ${PV} != 9999 ]]; then
+ EGIT_BRANCH=branch-${PV/.9999}
+ fi
+ KEYWORDS="alpha amd64 hppa ia64 ppc ppc64 sparc x86"
+else
+ SRC_URI="http://www.cups.org/software/${MY_PV}/${MY_P}-source.tar.bz2"
+ KEYWORDS="ia64"
+fi
+
+DESCRIPTION="The Common Unix Printing System"
+HOMEPAGE="http://www.cups.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="acl dbus debug java kerberos lprng-compat pam
+ python selinux +ssl static-libs systemd +threads usb X xinetd zeroconf"
+
+LANGS="es"
+for X in ${LANGS} ; do
+ IUSE="${IUSE} +linguas_${X}"
+done
+
+CDEPEND="
+ app-text/libpaper
+ acl? (
+ kernel_linux? (
+ sys-apps/acl
+ sys-apps/attr
+ )
+ )
+ dbus? ( >=sys-apps/dbus-1.6.18-r1[${MULTILIB_USEDEP}] )
+ java? ( >=virtual/jre-1.6 )
+ kerberos? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )
+ !lprng-compat? ( !net-print/lprng )
+ pam? ( virtual/pam )
+ python? ( ${PYTHON_DEPS} )
+ ssl? (
+ >=dev-libs/libgcrypt-1.5.3:0[${MULTILIB_USEDEP}]
+ >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}]
+ )
+ systemd? ( sys-apps/systemd )
+ usb? ( virtual/libusb:1 )
+ X? ( x11-misc/xdg-utils )
+ xinetd? ( sys-apps/xinetd )
+ zeroconf? ( >=net-dns/avahi-0.6.31-r2[${MULTILIB_USEDEP}] )
+ abi_x86_32? (
+ !<=app-emulation/emul-linux-x86-baselibs-20140508
+ !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+ )
+"
+
+DEPEND="${CDEPEND}
+ >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+"
+
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-cups )
+"
+
+PDEPEND="
+ app-text/ghostscript-gpl[cups]
+ app-text/poppler[utils]
+ >=net-print/cups-filters-1.0.43
+"
+
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+ usb? ( threads )
+"
+
+# upstream includes an interactive test which is a nono for gentoo
+RESTRICT="test"
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-1.4.4-nostrip.patch"
+ "${FILESDIR}/${PN}-1.6.0-dont-compress-manpages.patch"
+ "${FILESDIR}/${PN}-1.6.0-fix-install-perms.patch"
+ "${FILESDIR}/${P}-rename-systemd-service-files.patch"
+ "${FILESDIR}/${P}-fix-compilation.patch"
+ "${FILESDIR}/${P}-xinetd-installation-fix.patch"
+ "${FILESDIR}/${P}-fix-linkage-to-gnutls.patch"
+)
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/cups-config
+)
+
+pkg_setup() {
+ enewgroup lp
+ enewuser lp -1 -1 -1 lp
+ enewgroup lpadmin 106
+
+ use python && python-single-r1_pkg_setup
+
+ 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
+
+ # Remove ".SILENT" rule for verbose output (bug 524338).
+ sed 's#^.SILENT:##g' -i "${S}"/Makedefs.in || die "sed failed"
+
+ # Fix install-sh, posix sh does not have 'function'.
+ sed 's#function gzipcp#gzipcp()#g' -i "${S}/install-sh"
+
+ AT_M4DIR=config-scripts eaclocal
+ eautoconf
+
+ # custom Makefiles
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ export DSOFLAGS="${LDFLAGS}"
+
+ einfo LANGS=\"${LANGS}\"
+ einfo LINGUAS=\"${LINGUAS}\"
+
+ local myconf=()
+
+ if tc-is-static-only; then
+ myconf+=(
+ --disable-shared
+ )
+ fi
+
+ # explicitly specify compiler wrt bug 524340
+ #
+ # need to override KRB5CONFIG for proper flags
+ # https://www.cups.org/str.php?L4423
+ econf \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ KRB5CONFIG="${EPREFIX}"/usr/bin/${CHOST}-krb5-config \
+ --libdir="${EPREFIX}"/usr/$(get_libdir) \
+ --localstatedir="${EPREFIX}"/var \
+ --with-rundir="${EPREFIX}"/run/cups \
+ --with-cups-user=lp \
+ --with-cups-group=lp \
+ --with-docdir="${EPREFIX}"/usr/share/cups/html \
+ --with-languages="${LINGUAS}" \
+ --with-system-groups=lpadmin \
+ --with-xinetd=/etc/xinetd.d \
+ $(multilib_native_use_enable acl) \
+ $(use_enable dbus) \
+ $(use_enable debug) \
+ $(use_enable debug debug-guards) \
+ $(multilib_native_use_with java) \
+ $(use_enable kerberos gssapi) \
+ $(multilib_native_use_enable pam) \
+ $(multilib_native_use_with python python "${PYTHON}") \
+ $(use_enable static-libs static) \
+ $(use_enable threads) \
+ $(use_enable ssl gnutls) \
+ $(use_enable systemd) \
+ $(multilib_native_use_enable usb libusb) \
+ $(use_enable zeroconf avahi) \
+ --disable-dnssd \
+ --without-perl \
+ --without-php \
+ $(multilib_is_native_abi && echo --enable-libpaper || echo --disable-libpaper) \
+ "${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\)${EPREFIX}/usr/libexec/cups\":" Makedefs || die
+ sed -i -e "s:#define CUPS_SERVERBIN.*:#define CUPS_SERVERBIN \"${EPREFIX}/usr/libexec/cups\":" config.h || die
+ sed -i -e "s:cups_serverbin=.*:cups_serverbin=\"${EPREFIX}/usr/libexec/cups\":" cups-config || die
+}
+
+multilib_src_compile() {
+ if multilib_is_native_abi; then
+ default
+ else
+ emake libs
+ fi
+}
+
+multilib_src_test() {
+ multilib_is_native_abi && default
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi; then
+ emake BUILDROOT="${D}" install
+ else
+ emake BUILDROOT="${D}" install-libs install-headers
+ dobin cups-config
+ fi
+}
+
+multilib_src_install_all() {
+ 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
+ # always configure with --with-xinetd= and clean up later,
+ # bug #525604
+ rm -rf "${ED}"/etc/xinetd.d
+ fi
+
+ keepdir /usr/libexec/cups/driver /usr/share/cups/{model,profiles} \
+ /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 ${EPREFIX}/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
+
+ # the following are created by the init script
+ rm -r "${ED}"/var/cache/cups || die
+ rm -r "${ED}"/run || die
+
+ # for the special case of running lprng and cups together, bug 467226
+ if use lprng-compat ; then
+ rm -fv "${ED}"/usr/bin/{lp*,cancel}
+ rm -fv "${ED}"/usr/sbin/lp*
+ rm -fv "${ED}"/usr/share/man/man1/{lp*,cancel*}
+ rm -fv "${ED}"/usr/share/man/man8/lp*
+ ewarn "Not installing lp... binaries, since the lprng-compat useflag is set."
+ ewarn "Unless you plan to install an exotic server setup, you most likely"
+ ewarn "do not want this. Disable the useflag then and all will be fine."
+ fi
+}
+
+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
+ fi
+
+ if [[ "${REPLACING_VERSIONS}" == "1.6.2-r4" ]]; then
+ ewarn
+ ewarn "You are upgrading from the broken version net-print/cups-1.6.2-r4."
+ ewarn "Please rebuild net-print/cups-filters now to make sure everything is OK."
+ ewarn
+ 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-2.0.2-r1.ebuild b/net-print/cups/cups-2.0.2-r1.ebuild
new file mode 100644
index 000000000000..66c03f1e6684
--- /dev/null
+++ b/net-print/cups/cups-2.0.2-r1.ebuild
@@ -0,0 +1,358 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit autotools base fdo-mime gnome2-utils flag-o-matic linux-info \
+ multilib multilib-minimal pam python-single-r1 user versionator \
+ java-pkg-opt-2 systemd toolchain-funcs
+
+MY_P=${P/_rc/rc}
+MY_P=${MY_P/_beta/b}
+MY_PV=${PV/_rc/rc}
+MY_PV=${MY_PV/_beta/b}
+
+if [[ ${PV} == *9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="http://www.cups.org/cups.git"
+ if [[ ${PV} != 9999 ]]; then
+ EGIT_BRANCH=branch-${PV/.9999}
+ fi
+else
+ SRC_URI="http://www.cups.org/software/${MY_PV}/${MY_P}-source.tar.bz2"
+ KEYWORDS="alpha amd64 arm hppa ~ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~amd64-fbsd ~x86-fbsd ~m68k-mint"
+fi
+
+DESCRIPTION="The Common Unix Printing System"
+HOMEPAGE="http://www.cups.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="acl dbus debug java kerberos lprng-compat pam
+ python selinux +ssl static-libs systemd +threads usb X xinetd zeroconf"
+
+LANGS="ca cs de es fr it ja pt_BR ru"
+for X in ${LANGS} ; do
+ IUSE="${IUSE} +linguas_${X}"
+done
+
+CDEPEND="
+ app-text/libpaper
+ acl? (
+ kernel_linux? (
+ sys-apps/acl
+ sys-apps/attr
+ )
+ )
+ dbus? ( >=sys-apps/dbus-1.6.18-r1[${MULTILIB_USEDEP}] )
+ java? ( >=virtual/jre-1.6 )
+ kerberos? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )
+ !lprng-compat? ( !net-print/lprng )
+ pam? ( virtual/pam )
+ python? ( ${PYTHON_DEPS} )
+ ssl? (
+ >=dev-libs/libgcrypt-1.5.3:0[${MULTILIB_USEDEP}]
+ >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}]
+ )
+ systemd? ( sys-apps/systemd )
+ usb? ( virtual/libusb:1 )
+ X? ( x11-misc/xdg-utils )
+ xinetd? ( sys-apps/xinetd )
+ zeroconf? ( >=net-dns/avahi-0.6.31-r2[${MULTILIB_USEDEP}] )
+ abi_x86_32? (
+ !<=app-emulation/emul-linux-x86-baselibs-20140508
+ !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+ )
+"
+
+DEPEND="${CDEPEND}
+ >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+"
+
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-cups )
+"
+
+PDEPEND="
+ app-text/ghostscript-gpl[cups]
+ app-text/poppler[utils]
+ >=net-print/cups-filters-1.0.43
+"
+
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+ usb? ( threads )
+"
+
+# upstream includes an interactive test which is a nono for gentoo
+RESTRICT="test"
+
+S="${WORKDIR}/${MY_P}"
+
+# systemd-socket.patch from Fedora
+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}-2.0.2-rename-systemd-service-files.patch"
+ "${FILESDIR}/${PN}-2.0.2-systemd-socket.patch"
+ "${FILESDIR}/${PN}-2.0.1-xinetd-installation-fix.patch"
+)
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/cups-config
+)
+
+pkg_setup() {
+ enewgroup lp
+ enewuser lp -1 -1 -1 lp
+ enewgroup lpadmin 106
+
+ use python && python-single-r1_pkg_setup
+
+ 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
+ epatch_user
+
+ # Remove ".SILENT" rule for verbose output (bug 524338).
+ sed 's#^.SILENT:##g' -i "${S}"/Makedefs.in || die "sed failed"
+
+ # Fix install-sh, posix sh does not have 'function'.
+ sed 's#function gzipcp#gzipcp()#g' -i "${S}/install-sh"
+
+ AT_M4DIR=config-scripts eaclocal
+ eautoconf
+
+ # custom Makefiles
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ export DSOFLAGS="${LDFLAGS}"
+
+ einfo LANGS=\"${LANGS}\"
+ einfo LINGUAS=\"${LINGUAS}\"
+
+ local myconf=()
+
+ if tc-is-static-only; then
+ myconf+=(
+ --disable-shared
+ )
+ fi
+
+ # explicitly specify compiler wrt bug 524340
+ #
+ # need to override KRB5CONFIG for proper flags
+ # https://www.cups.org/str.php?L4423
+ econf \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ KRB5CONFIG="${EPREFIX}"/usr/bin/${CHOST}-krb5-config \
+ --libdir="${EPREFIX}"/usr/$(get_libdir) \
+ --localstatedir="${EPREFIX}"/var \
+ --with-rundir="${EPREFIX}"/run/cups \
+ --with-cups-user=lp \
+ --with-cups-group=lp \
+ --with-docdir="${EPREFIX}"/usr/share/cups/html \
+ --with-languages="${LINGUAS}" \
+ --with-system-groups=lpadmin \
+ --with-xinetd=/etc/xinetd.d \
+ $(multilib_native_use_enable acl) \
+ $(use_enable dbus) \
+ $(use_enable debug) \
+ $(use_enable debug debug-guards) \
+ $(multilib_native_use_with java) \
+ $(use_enable kerberos gssapi) \
+ $(multilib_native_use_enable pam) \
+ $(multilib_native_use_with python python "${PYTHON}") \
+ $(use_enable static-libs static) \
+ $(use_enable threads) \
+ $(use_enable ssl gnutls) \
+ $(use_enable systemd) \
+ $(multilib_native_use_enable usb libusb) \
+ $(use_enable zeroconf avahi) \
+ --disable-dnssd \
+ --without-perl \
+ --without-php \
+ $(multilib_is_native_abi && echo --enable-libpaper || echo --disable-libpaper) \
+ "${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\)${EPREFIX}/usr/libexec/cups\":" Makedefs || die
+ sed -i -e "s:#define CUPS_SERVERBIN.*:#define CUPS_SERVERBIN \"${EPREFIX}/usr/libexec/cups\":" config.h || die
+ sed -i -e "s:cups_serverbin=.*:cups_serverbin=\"${EPREFIX}/usr/libexec/cups\":" cups-config || die
+}
+
+multilib_src_compile() {
+ if multilib_is_native_abi; then
+ default
+ else
+ emake libs
+ fi
+}
+
+multilib_src_test() {
+ multilib_is_native_abi && default
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi; then
+ emake BUILDROOT="${D}" install
+ else
+ emake BUILDROOT="${D}" install-libs install-headers
+ dobin cups-config
+ fi
+}
+
+multilib_src_install_all() {
+ 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
+ # always configure with --with-xinetd= and clean up later,
+ # bug #525604
+ rm -rf "${ED}"/etc/xinetd.d
+ fi
+
+ keepdir /usr/libexec/cups/driver /usr/share/cups/{model,profiles} \
+ /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 ${EPREFIX}/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
+
+ # the following are created by the init script
+ rm -r "${ED}"/var/cache/cups || die
+ rm -r "${ED}"/run || die
+
+ # for the special case of running lprng and cups together, bug 467226
+ if use lprng-compat ; then
+ rm -fv "${ED}"/usr/bin/{lp*,cancel}
+ rm -fv "${ED}"/usr/sbin/lp*
+ rm -fv "${ED}"/usr/share/man/man1/{lp*,cancel*}
+ rm -fv "${ED}"/usr/share/man/man8/lp*
+ ewarn "Not installing lp... binaries, since the lprng-compat useflag is set."
+ ewarn "Unless you plan to install an exotic server setup, you most likely"
+ ewarn "do not want this. Disable the useflag then and all will be fine."
+ fi
+}
+
+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: https://wiki.gentoo.org/wiki/Printing"
+ 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
+ fi
+
+ if [[ "${REPLACING_VERSIONS}" == "1.6.2-r4" ]]; then
+ ewarn
+ ewarn "You are upgrading from the broken version net-print/cups-1.6.2-r4."
+ ewarn "Please rebuild net-print/cups-filters now to make sure everything is OK."
+ ewarn
+ 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-2.0.3.ebuild b/net-print/cups/cups-2.0.3.ebuild
new file mode 100644
index 000000000000..70b18a6d15b3
--- /dev/null
+++ b/net-print/cups/cups-2.0.3.ebuild
@@ -0,0 +1,358 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit autotools base fdo-mime gnome2-utils flag-o-matic linux-info \
+ multilib multilib-minimal pam python-single-r1 user versionator \
+ java-pkg-opt-2 systemd toolchain-funcs
+
+MY_P=${P/_rc/rc}
+MY_P=${MY_P/_beta/b}
+MY_PV=${PV/_rc/rc}
+MY_PV=${MY_PV/_beta/b}
+
+if [[ ${PV} == *9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="http://www.cups.org/cups.git"
+ if [[ ${PV} != 9999 ]]; then
+ EGIT_BRANCH=branch-${PV/.9999}
+ fi
+else
+ SRC_URI="http://www.cups.org/software/${MY_PV}/${MY_P}-source.tar.bz2"
+ KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc ~x86 ~amd64-fbsd ~x86-fbsd ~m68k-mint"
+fi
+
+DESCRIPTION="The Common Unix Printing System"
+HOMEPAGE="http://www.cups.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="acl dbus debug java kerberos lprng-compat pam
+ python selinux +ssl static-libs systemd +threads usb X xinetd zeroconf"
+
+LANGS="ca cs de es fr it ja pt_BR ru"
+for X in ${LANGS} ; do
+ IUSE="${IUSE} +linguas_${X}"
+done
+
+CDEPEND="
+ app-text/libpaper
+ acl? (
+ kernel_linux? (
+ sys-apps/acl
+ sys-apps/attr
+ )
+ )
+ dbus? ( >=sys-apps/dbus-1.6.18-r1[${MULTILIB_USEDEP}] )
+ java? ( >=virtual/jre-1.6 )
+ kerberos? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )
+ !lprng-compat? ( !net-print/lprng )
+ pam? ( virtual/pam )
+ python? ( ${PYTHON_DEPS} )
+ ssl? (
+ >=dev-libs/libgcrypt-1.5.3:0[${MULTILIB_USEDEP}]
+ >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}]
+ )
+ systemd? ( sys-apps/systemd )
+ usb? ( virtual/libusb:1 )
+ X? ( x11-misc/xdg-utils )
+ xinetd? ( sys-apps/xinetd )
+ zeroconf? ( >=net-dns/avahi-0.6.31-r2[${MULTILIB_USEDEP}] )
+ abi_x86_32? (
+ !<=app-emulation/emul-linux-x86-baselibs-20140508
+ !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+ )
+"
+
+DEPEND="${CDEPEND}
+ >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+"
+
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-cups )
+"
+
+PDEPEND="
+ app-text/ghostscript-gpl[cups]
+ app-text/poppler[utils]
+ >=net-print/cups-filters-1.0.43
+"
+
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+ usb? ( threads )
+"
+
+# upstream includes an interactive test which is a nono for gentoo
+RESTRICT="test"
+
+S="${WORKDIR}/${MY_P}"
+
+# systemd-socket.patch from Fedora
+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}-2.0.2-rename-systemd-service-files.patch"
+ "${FILESDIR}/${PN}-2.0.2-systemd-socket.patch"
+ "${FILESDIR}/${PN}-2.0.1-xinetd-installation-fix.patch"
+)
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/cups-config
+)
+
+pkg_setup() {
+ enewgroup lp
+ enewuser lp -1 -1 -1 lp
+ enewgroup lpadmin 106
+
+ use python && python-single-r1_pkg_setup
+
+ 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
+ epatch_user
+
+ # Remove ".SILENT" rule for verbose output (bug 524338).
+ sed 's#^.SILENT:##g' -i "${S}"/Makedefs.in || die "sed failed"
+
+ # Fix install-sh, posix sh does not have 'function'.
+ sed 's#function gzipcp#gzipcp()#g' -i "${S}/install-sh"
+
+ AT_M4DIR=config-scripts eaclocal
+ eautoconf
+
+ # custom Makefiles
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ export DSOFLAGS="${LDFLAGS}"
+
+ einfo LANGS=\"${LANGS}\"
+ einfo LINGUAS=\"${LINGUAS}\"
+
+ local myconf=()
+
+ if tc-is-static-only; then
+ myconf+=(
+ --disable-shared
+ )
+ fi
+
+ # explicitly specify compiler wrt bug 524340
+ #
+ # need to override KRB5CONFIG for proper flags
+ # https://www.cups.org/str.php?L4423
+ econf \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ KRB5CONFIG="${EPREFIX}"/usr/bin/${CHOST}-krb5-config \
+ --libdir="${EPREFIX}"/usr/$(get_libdir) \
+ --localstatedir="${EPREFIX}"/var \
+ --with-rundir="${EPREFIX}"/run/cups \
+ --with-cups-user=lp \
+ --with-cups-group=lp \
+ --with-docdir="${EPREFIX}"/usr/share/cups/html \
+ --with-languages="${LINGUAS}" \
+ --with-system-groups=lpadmin \
+ --with-xinetd=/etc/xinetd.d \
+ $(multilib_native_use_enable acl) \
+ $(use_enable dbus) \
+ $(use_enable debug) \
+ $(use_enable debug debug-guards) \
+ $(multilib_native_use_with java) \
+ $(use_enable kerberos gssapi) \
+ $(multilib_native_use_enable pam) \
+ $(multilib_native_use_with python python "${PYTHON}") \
+ $(use_enable static-libs static) \
+ $(use_enable threads) \
+ $(use_enable ssl gnutls) \
+ $(use_enable systemd) \
+ $(multilib_native_use_enable usb libusb) \
+ $(use_enable zeroconf avahi) \
+ --disable-dnssd \
+ --without-perl \
+ --without-php \
+ $(multilib_is_native_abi && echo --enable-libpaper || echo --disable-libpaper) \
+ "${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\)${EPREFIX}/usr/libexec/cups\":" Makedefs || die
+ sed -i -e "s:#define CUPS_SERVERBIN.*:#define CUPS_SERVERBIN \"${EPREFIX}/usr/libexec/cups\":" config.h || die
+ sed -i -e "s:cups_serverbin=.*:cups_serverbin=\"${EPREFIX}/usr/libexec/cups\":" cups-config || die
+}
+
+multilib_src_compile() {
+ if multilib_is_native_abi; then
+ default
+ else
+ emake libs
+ fi
+}
+
+multilib_src_test() {
+ multilib_is_native_abi && default
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi; then
+ emake BUILDROOT="${D}" install
+ else
+ emake BUILDROOT="${D}" install-libs install-headers
+ dobin cups-config
+ fi
+}
+
+multilib_src_install_all() {
+ 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
+ # always configure with --with-xinetd= and clean up later,
+ # bug #525604
+ rm -rf "${ED}"/etc/xinetd.d
+ fi
+
+ keepdir /usr/libexec/cups/driver /usr/share/cups/{model,profiles} \
+ /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 ${EPREFIX}/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
+
+ # the following are created by the init script
+ rm -r "${ED}"/var/cache/cups || die
+ rm -r "${ED}"/run || die
+
+ # for the special case of running lprng and cups together, bug 467226
+ if use lprng-compat ; then
+ rm -fv "${ED}"/usr/bin/{lp*,cancel}
+ rm -fv "${ED}"/usr/sbin/lp*
+ rm -fv "${ED}"/usr/share/man/man1/{lp*,cancel*}
+ rm -fv "${ED}"/usr/share/man/man8/lp*
+ ewarn "Not installing lp... binaries, since the lprng-compat useflag is set."
+ ewarn "Unless you plan to install an exotic server setup, you most likely"
+ ewarn "do not want this. Disable the useflag then and all will be fine."
+ fi
+}
+
+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: https://wiki.gentoo.org/wiki/Printing"
+ 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
+ fi
+
+ if [[ "${REPLACING_VERSIONS}" == "1.6.2-r4" ]]; then
+ ewarn
+ ewarn "You are upgrading from the broken version net-print/cups-1.6.2-r4."
+ ewarn "Please rebuild net-print/cups-filters now to make sure everything is OK."
+ ewarn
+ 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
new file mode 100644
index 000000000000..d722b0ea6ae7
--- /dev/null
+++ b/net-print/cups/cups-9999.ebuild
@@ -0,0 +1,354 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit autotools base fdo-mime gnome2-utils flag-o-matic linux-info \
+ multilib multilib-minimal pam python-single-r1 user versionator \
+ java-pkg-opt-2 systemd toolchain-funcs
+
+MY_P=${P/_rc/rc}
+MY_P=${MY_P/_beta/b}
+MY_PV=${PV/_rc/rc}
+MY_PV=${MY_PV/_beta/b}
+
+if [[ ${PV} == *9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="http://www.cups.org/cups.git"
+ if [[ ${PV} != 9999 ]]; then
+ EGIT_BRANCH=branch-${PV/.9999}
+ fi
+else
+ SRC_URI="http://www.cups.org/software/${MY_PV}/${MY_P}-source.tar.bz2"
+ KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~m68k-mint"
+fi
+
+DESCRIPTION="The Common Unix Printing System"
+HOMEPAGE="http://www.cups.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="acl dbus debug java kerberos lprng-compat pam
+ python selinux +ssl static-libs systemd +threads usb X xinetd zeroconf"
+
+LANGS="ca cs de es fr it ja pt_BR ru"
+for X in ${LANGS} ; do
+ IUSE="${IUSE} +linguas_${X}"
+done
+
+CDEPEND="
+ app-text/libpaper
+ acl? (
+ kernel_linux? (
+ sys-apps/acl
+ sys-apps/attr
+ )
+ )
+ dbus? ( >=sys-apps/dbus-1.6.18-r1[${MULTILIB_USEDEP}] )
+ java? ( >=virtual/jre-1.6 )
+ kerberos? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )
+ !lprng-compat? ( !net-print/lprng )
+ pam? ( virtual/pam )
+ python? ( ${PYTHON_DEPS} )
+ ssl? (
+ >=dev-libs/libgcrypt-1.5.3:0[${MULTILIB_USEDEP}]
+ >=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}]
+ )
+ systemd? ( sys-apps/systemd )
+ usb? ( virtual/libusb:1 )
+ X? ( x11-misc/xdg-utils )
+ xinetd? ( sys-apps/xinetd )
+ zeroconf? ( >=net-dns/avahi-0.6.31-r2[${MULTILIB_USEDEP}] )
+ abi_x86_32? (
+ !<=app-emulation/emul-linux-x86-baselibs-20140508
+ !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+ )
+"
+
+DEPEND="${CDEPEND}
+ >=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+"
+
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-cups )
+"
+
+PDEPEND="
+ app-text/ghostscript-gpl[cups]
+ app-text/poppler[utils]
+ >=net-print/cups-filters-1.0.43
+"
+
+REQUIRED_USE="
+ python? ( ${PYTHON_REQUIRED_USE} )
+ usb? ( threads )
+"
+
+# 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}-2.0.1-rename-systemd-service-files.patch"
+)
+
+MULTILIB_CHOST_TOOLS=(
+ /usr/bin/cups-config
+)
+
+pkg_setup() {
+ enewgroup lp
+ enewuser lp -1 -1 -1 lp
+ enewgroup lpadmin 106
+
+ use python && python-single-r1_pkg_setup
+
+ 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
+
+ # Remove ".SILENT" rule for verbose output (bug 524338).
+ sed 's#^.SILENT:##g' -i "${S}"/Makedefs.in || die "sed failed"
+
+ # Fix install-sh, posix sh does not have 'function'.
+ sed 's#function gzipcp#gzipcp()#g' -i "${S}/install-sh"
+
+ AT_M4DIR=config-scripts eaclocal
+ eautoconf
+
+ # custom Makefiles
+ multilib_copy_sources
+}
+
+multilib_src_configure() {
+ export DSOFLAGS="${LDFLAGS}"
+
+ einfo LANGS=\"${LANGS}\"
+ einfo LINGUAS=\"${LINGUAS}\"
+
+ local myconf=()
+
+ if tc-is-static-only; then
+ myconf+=(
+ --disable-shared
+ )
+ fi
+
+ # explicitly specify compiler wrt bug 524340
+ #
+ # need to override KRB5CONFIG for proper flags
+ # https://www.cups.org/str.php?L4423
+ econf \
+ CC="$(tc-getCC)" \
+ CXX="$(tc-getCXX)" \
+ KRB5CONFIG="${EPREFIX}"/usr/bin/${CHOST}-krb5-config \
+ --libdir="${EPREFIX}"/usr/$(get_libdir) \
+ --localstatedir="${EPREFIX}"/var \
+ --with-rundir="${EPREFIX}"/run/cups \
+ --with-cups-user=lp \
+ --with-cups-group=lp \
+ --with-docdir="${EPREFIX}"/usr/share/cups/html \
+ --with-languages="${LINGUAS}" \
+ --with-system-groups=lpadmin \
+ --with-xinetd=/etc/xinetd.d \
+ $(multilib_native_use_enable acl) \
+ $(use_enable dbus) \
+ $(use_enable debug) \
+ $(use_enable debug debug-guards) \
+ $(multilib_native_use_with java) \
+ $(use_enable kerberos gssapi) \
+ $(multilib_native_use_enable pam) \
+ $(multilib_native_use_with python python "${PYTHON}") \
+ $(use_enable static-libs static) \
+ $(use_enable threads) \
+ $(use_enable ssl gnutls) \
+ $(use_enable systemd) \
+ $(multilib_native_use_enable usb libusb) \
+ $(use_enable zeroconf avahi) \
+ --disable-dnssd \
+ --without-perl \
+ --without-php \
+ $(multilib_is_native_abi && echo --enable-libpaper || echo --disable-libpaper) \
+ "${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\)${EPREFIX}/usr/libexec/cups\":" Makedefs || die
+ sed -i -e "s:#define CUPS_SERVERBIN.*:#define CUPS_SERVERBIN \"${EPREFIX}/usr/libexec/cups\":" config.h || die
+ sed -i -e "s:cups_serverbin=.*:cups_serverbin=\"${EPREFIX}/usr/libexec/cups\":" cups-config || die
+}
+
+multilib_src_compile() {
+ if multilib_is_native_abi; then
+ default
+ else
+ emake libs
+ fi
+}
+
+multilib_src_test() {
+ multilib_is_native_abi && default
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi; then
+ emake BUILDROOT="${D}" install
+ else
+ emake BUILDROOT="${D}" install-libs install-headers
+ dobin cups-config
+ fi
+}
+
+multilib_src_install_all() {
+ 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
+ # always configure with --with-xinetd= and clean up later,
+ # bug #525604
+ rm -rf "${ED}"/etc/xinetd.d
+ fi
+
+ keepdir /usr/libexec/cups/driver /usr/share/cups/{model,profiles} \
+ /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 ${EPREFIX}/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
+
+ # the following are created by the init script
+ rm -r "${ED}"/var/cache/cups || die
+ rm -r "${ED}"/run || die
+
+ # for the special case of running lprng and cups together, bug 467226
+ if use lprng-compat ; then
+ rm -fv "${ED}"/usr/bin/{lp*,cancel}
+ rm -fv "${ED}"/usr/sbin/lp*
+ rm -fv "${ED}"/usr/share/man/man1/{lp*,cancel*}
+ rm -fv "${ED}"/usr/share/man/man8/lp*
+ ewarn "Not installing lp... binaries, since the lprng-compat useflag is set."
+ ewarn "Unless you plan to install an exotic server setup, you most likely"
+ ewarn "do not want this. Disable the useflag then and all will be fine."
+ fi
+}
+
+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: https://wiki.gentoo.org/wiki/Printing"
+ 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
+ fi
+
+ if [[ "${REPLACING_VERSIONS}" == "1.6.2-r4" ]]; then
+ ewarn
+ ewarn "You are upgrading from the broken version net-print/cups-1.6.2-r4."
+ ewarn "Please rebuild net-print/cups-filters now to make sure everything is OK."
+ ewarn
+ 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/files/cups-1.4.4-nostrip.patch b/net-print/cups/files/cups-1.4.4-nostrip.patch
new file mode 100644
index 000000000000..cd2b07042cec
--- /dev/null
+++ b/net-print/cups/files/cups-1.4.4-nostrip.patch
@@ -0,0 +1,14 @@
+# Source: Gentoo
+
+diff -urN cups-1.4.4/config-scripts/cups-compiler.m4 cups-1.4.4.new/config-scripts/cups-compiler.m4
+--- cups-1.4.4/config-scripts/cups-compiler.m4 2009-05-17 02:13:47.000000000 +0200
++++ cups-1.4.4.new/config-scripts/cups-compiler.m4 2010-08-12 19:19:45.937020635 +0200
+@@ -30,7 +30,7 @@
+ if test x$enable_debug = xyes; then
+ OPTIM="-g"
+ else
+- INSTALL_STRIP="-s"
++ INSTALL_STRIP=""
+ fi
+
+ dnl Debug printfs can slow things down, so provide a separate option for that
diff --git a/net-print/cups/files/cups-1.6.0-dont-compress-manpages.patch b/net-print/cups/files/cups-1.6.0-dont-compress-manpages.patch
new file mode 100644
index 000000000000..62db46eea00d
--- /dev/null
+++ b/net-print/cups/files/cups-1.6.0-dont-compress-manpages.patch
@@ -0,0 +1,19 @@
+Index: config-scripts/cups-manpages.m4
+===================================================================
+--- config-scripts/cups-manpages.m4 (Revision 10458)
++++ config-scripts/cups-manpages.m4 (Arbeitskopie)
+@@ -69,10 +69,10 @@
+ ;;
+ Linux* | GNU* | Darwin*)
+ # Linux, GNU Hurd, and OS X
+- MAN1EXT=1.gz
+- MAN5EXT=5.gz
+- MAN7EXT=7.gz
+- MAN8EXT=8.gz
++ MAN1EXT=1
++ MAN5EXT=5
++ MAN7EXT=7
++ MAN8EXT=8
+ MAN8DIR=8
+ ;;
+ *)
diff --git a/net-print/cups/files/cups-1.6.0-fix-install-perms.patch b/net-print/cups/files/cups-1.6.0-fix-install-perms.patch
new file mode 100644
index 000000000000..2d7a77c44f3d
--- /dev/null
+++ b/net-print/cups/files/cups-1.6.0-fix-install-perms.patch
@@ -0,0 +1,25 @@
+Index: Makedefs.in
+===================================================================
+--- Makedefs.in (Revision 10520)
++++ Makedefs.in (Arbeitskopie)
+@@ -40,14 +40,14 @@
+ # Installation programs...
+ #
+
+-INSTALL_BIN = $(LIBTOOL) $(INSTALL) -c -m 555 @INSTALL_STRIP@
+-INSTALL_COMPDATA = $(INSTALL) -c -m 444 @INSTALL_GZIP@
++INSTALL_BIN = $(LIBTOOL) $(INSTALL) -c -m 755 @INSTALL_STRIP@
++INSTALL_COMPDATA = $(INSTALL) -c -m 644 @INSTALL_GZIP@
+ INSTALL_CONFIG = $(INSTALL) -c -m @CUPS_CONFIG_FILE_PERM@
+-INSTALL_DATA = $(INSTALL) -c -m 444
++INSTALL_DATA = $(INSTALL) -c -m 644
+ INSTALL_DIR = $(INSTALL) -d
+-INSTALL_LIB = $(LIBTOOL) $(INSTALL) -c -m 555 @INSTALL_STRIP@
+-INSTALL_MAN = $(INSTALL) -c -m 444
+-INSTALL_SCRIPT = $(INSTALL) -c -m 555
++INSTALL_LIB = $(LIBTOOL) $(INSTALL) -c -m 755 @INSTALL_STRIP@
++INSTALL_MAN = $(INSTALL) -c -m 644
++INSTALL_SCRIPT = $(INSTALL) -c -m 755
+
+ #
+ # Default user, group, and system groups for the scheduler...
diff --git a/net-print/cups/files/cups-1.7.2-systemd-socket-2.patch b/net-print/cups/files/cups-1.7.2-systemd-socket-2.patch
new file mode 100644
index 000000000000..f4e8640bda7e
--- /dev/null
+++ b/net-print/cups/files/cups-1.7.2-systemd-socket-2.patch
@@ -0,0 +1,391 @@
+diff -ruN cups-1.7.2.orig/Makedefs.in cups-1.7.2/Makedefs.in
+--- cups-1.7.2.orig/Makedefs.in 2013-07-17 17:21:18.000000000 +0200
++++ cups-1.7.2/Makedefs.in 2014-04-15 13:24:45.594054459 +0200
+@@ -134,6 +134,7 @@
+ 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)
+@@ -141,6 +142,7 @@
+ IPPFIND_BIN = @IPPFIND_BIN@
+ IPPFIND_MAN = @IPPFIND_MAN@
+ LAUNCHDLIBS = @LAUNCHDLIBS@
++SDLIBS = @SDLIBS@
+ LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \
+ -L../scheduler @LDARCHFLAGS@ \
+ @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM)
+@@ -232,6 +234,7 @@
+
+ DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@
+ DBUSDIR = @DBUSDIR@
++SYSTEMDUNITDIR = $(BUILDROOT)@systemdsystemunitdir@
+
+
+ #
+diff -ruN cups-1.7.2.orig/config-scripts/cups-systemd.m4 cups-1.7.2/config-scripts/cups-systemd.m4
+--- cups-1.7.2.orig/config-scripts/cups-systemd.m4 1970-01-01 01:00:00.000000000 +0100
++++ cups-1.7.2/config-scripts/cups-systemd.m4 2014-04-15 13:24:45.592054459 +0200
+@@ -0,0 +1,36 @@
++dnl
++dnl "$Id$"
++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)
++ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
++ if $PKGCONFIG --exists libsystemd-daemon; then
++ AC_MSG_RESULT(yes)
++ SDCFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
++ SDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
++ 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$"
++dnl
+diff -ruN cups-1.7.2.orig/config.h.in cups-1.7.2/config.h.in
+--- cups-1.7.2.orig/config.h.in 2014-02-27 16:57:59.000000000 +0100
++++ cups-1.7.2/config.h.in 2014-04-15 13:24:45.592054459 +0200
+@@ -451,6 +451,13 @@
+
+
+ /*
++ * Do we have systemd support?
++ */
++
++#undef HAVE_SYSTEMD
++
++
++/*
+ * Various scripting languages...
+ */
+
+diff -ruN cups-1.7.2.orig/configure.in cups-1.7.2/configure.in
+--- cups-1.7.2.orig/configure.in 2013-07-08 23:15:13.000000000 +0200
++++ cups-1.7.2/configure.in 2014-04-15 13:24:45.593054459 +0200
+@@ -33,6 +33,7 @@
+ 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-scripting.m4)
+
+@@ -67,6 +68,9 @@
+ conf/snmp.conf
+ cups-config
+ data/testprint
++ data/cups.service
++ data/cups.socket
++ data/cups.path
+ desktop/cups.desktop
+ doc/help/ref-cups-files-conf.html
+ doc/help/ref-cupsd-conf.html
+diff -ruN cups-1.7.2.orig/cups/usersys.c cups-1.7.2/cups/usersys.c
+--- cups-1.7.2.orig/cups/usersys.c 2014-03-05 22:22:12.000000000 +0100
++++ cups-1.7.2/cups/usersys.c 2014-04-15 13:24:45.593054459 +0200
+@@ -1050,7 +1050,7 @@
+ 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 -ruN cups-1.7.2.orig/data/Makefile cups-1.7.2/data/Makefile
+--- cups-1.7.2.orig/data/Makefile 2013-05-29 13:51:34.000000000 +0200
++++ cups-1.7.2/data/Makefile 2014-04-15 13:24:45.594054459 +0200
+@@ -100,6 +100,12 @@
+ $(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
+
+
+ #
+@@ -143,6 +149,9 @@
+ -$(RMDIR) $(DATADIR)/data
+ -$(RMDIR) $(DATADIR)/banners
+ -$(RMDIR) $(DATADIR)
++ for file in $(SYSTEMD_UNITS); do \
++ $(RM) $(SYSTEMDUNITDIR)/$$file; \
++ done
+
+
+ #
+diff -ruN cups-1.7.2.orig/data/cups.path.in cups-1.7.2/data/cups.path.in
+--- cups-1.7.2.orig/data/cups.path.in 1970-01-01 01:00:00.000000000 +0100
++++ cups-1.7.2/data/cups.path.in 2014-04-15 13:24:45.593054459 +0200
+@@ -0,0 +1,8 @@
++[Unit]
++Description=CUPS Printer Service Spool
++
++[Path]
++PathExistsGlob=@CUPS_REQUESTS@/d*
++
++[Install]
++WantedBy=multi-user.target
+diff -ruN cups-1.7.2.orig/data/cups.service.in cups-1.7.2/data/cups.service.in
+--- cups-1.7.2.orig/data/cups.service.in 1970-01-01 01:00:00.000000000 +0100
++++ cups-1.7.2/data/cups.service.in 2014-04-15 13:24:45.594054459 +0200
+@@ -0,0 +1,9 @@
++[Unit]
++Description=CUPS Printing Service
++
++[Service]
++ExecStart=@sbindir@/cupsd -f
++
++[Install]
++Also=cups.socket cups.path
++WantedBy=printer.target
+diff -ruN cups-1.7.2.orig/data/cups.socket.in cups-1.7.2/data/cups.socket.in
+--- cups-1.7.2.orig/data/cups.socket.in 1970-01-01 01:00:00.000000000 +0100
++++ cups-1.7.2/data/cups.socket.in 2014-04-15 13:24:45.594054459 +0200
+@@ -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 -ruN cups-1.7.2.orig/scheduler/Makefile cups-1.7.2/scheduler/Makefile
+--- cups-1.7.2.orig/scheduler/Makefile 2013-05-29 13:51:34.000000000 +0200
++++ cups-1.7.2/scheduler/Makefile 2014-04-15 13:24:45.595054459 +0200
+@@ -381,7 +381,7 @@
+ $(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 $@...
+@@ -389,7 +389,7 @@
+ $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \
+ ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \
+ $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBGSSAPI) \
+- $(LIBWRAP)
++ $(LIBWRAP) $(SDLIBS)
+
+ tls.o: tls-darwin.c tls-gnutls.c tls-openssl.c
+
+diff -ruN cups-1.7.2.orig/scheduler/client.h cups-1.7.2/scheduler/client.h
+--- cups-1.7.2.orig/scheduler/client.h 2013-08-02 00:23:18.000000000 +0200
++++ cups-1.7.2/scheduler/client.h 2014-04-15 13:24:45.594054459 +0200
+@@ -79,6 +79,9 @@
+ 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 -ruN cups-1.7.2.orig/scheduler/listen.c cups-1.7.2/scheduler/listen.c
+--- cups-1.7.2.orig/scheduler/listen.c 2013-05-29 13:51:34.000000000 +0200
++++ cups-1.7.2/scheduler/listen.c 2014-04-15 13:24:45.594054459 +0200
+@@ -401,7 +401,11 @@
+ 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 -ruN cups-1.7.2.orig/scheduler/main.c cups-1.7.2/scheduler/main.c
+--- cups-1.7.2.orig/scheduler/main.c 2014-03-21 19:18:56.000000000 +0100
++++ cups-1.7.2/scheduler/main.c 2014-04-15 13:24:45.595054459 +0200
+@@ -39,6 +39,10 @@
+ # endif /* !LAUNCH_JOBKEY_SERVICEIPC */
+ #endif /* HAVE_LAUNCH_H */
+
++#ifdef HAVE_SYSTEMD
++#include <systemd/sd-daemon.h>
++#endif /* HAVE_SYSTEMD */
++
+ #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
+ # include <malloc.h>
+ #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */
+@@ -64,6 +68,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);
+@@ -553,6 +560,14 @@
+ }
+ #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...
+ */
+@@ -741,6 +756,16 @@
+ }
+ #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...
+ */
+@@ -1490,6 +1515,102 @@
+ }
+ #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 --git a/net-print/cups/files/cups-2.0.0-rename-systemd-service-files.patch b/net-print/cups/files/cups-2.0.0-rename-systemd-service-files.patch
new file mode 100644
index 000000000000..c93f3228e186
--- /dev/null
+++ b/net-print/cups/files/cups-2.0.0-rename-systemd-service-files.patch
@@ -0,0 +1,177 @@
+From caebb5eb5194b89da1ff08cca8d35ddfe6b293d3 Mon Sep 17 00:00:00 2001
+From: Matthias Maier <tamiko@kyomu.43-1.org>
+Date: Thu, 16 Oct 2014 01:25:23 +0200
+Subject: [PATCH] change systemd service files to gentoo naming scheme
+
+---
+ configure.ac | 6 +++---
+ scheduler/Makefile | 14 +++++++-------
+ scheduler/cups.path.in | 8 ++++++++
+ scheduler/cups.service.in | 10 ++++++++++
+ scheduler/cups.socket.in | 12 ++++++++++++
+ scheduler/org.cups.cupsd.path.in | 8 --------
+ scheduler/org.cups.cupsd.service.in | 10 ----------
+ scheduler/org.cups.cupsd.socket.in | 12 ------------
+ 8 files changed, 40 insertions(+), 40 deletions(-)
+ create mode 100644 scheduler/cups.path.in
+ create mode 100644 scheduler/cups.service.in
+ create mode 100644 scheduler/cups.socket.in
+ delete mode 100644 scheduler/org.cups.cupsd.path.in
+ delete mode 100644 scheduler/org.cups.cupsd.service.in
+ delete mode 100644 scheduler/org.cups.cupsd.socket.in
+
+diff --git a/configure.ac b/configure.ac
+index 21d7f93..cb5db92 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -81,9 +81,9 @@ AC_OUTPUT(Makedefs
+ scheduler/cups.sh
+ scheduler/cups.xml
+ scheduler/org.cups.cups-lpd.plist
+- scheduler/org.cups.cupsd.path
+- scheduler/org.cups.cupsd.service
+- scheduler/org.cups.cupsd.socket
++ scheduler/cups.path
++ scheduler/cups.service
++ scheduler/cups.socket
+ templates/header.tmpl
+ packaging/cups.list
+ $LANGFILES)
+diff --git a/scheduler/Makefile b/scheduler/Makefile
+index c0c54a4..bf1ae32 100644
+--- a/scheduler/Makefile
++++ b/scheduler/Makefile
+@@ -192,7 +192,7 @@ install-data:
+ if test "x$(LAUNCHD_DIR)" != x; then \
+ echo Installing launchd configuration files...; \
+ $(INSTALL_DIR) $(BUILDROOT)$(LAUNCHD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.plist $(BUILDROOT)$(LAUNCHD_DIR); \
++ $(INSTALL_DATA) cups.plist $(BUILDROOT)$(LAUNCHD_DIR); \
+ $(INSTALL_DATA) org.cups.cups-lpd.plist $(BUILDROOT)$(LAUNCHD_DIR); \
+ fi
+ if test "x$(SMFMANIFESTDIR)" != x; then \
+@@ -203,9 +203,9 @@ install-data:
+ if test "x$(SYSTEMD_DIR)" != x; then \
+ echo Installing systemd configuration files...; \
+ $(INSTALL_DIR) $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.path $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.service $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
++ $(INSTALL_DATA) cups.path $(BUILDROOT)$(SYSTEMD_DIR); \
++ $(INSTALL_DATA) cups.service $(BUILDROOT)$(SYSTEMD_DIR); \
++ $(INSTALL_DATA) cups.socket $(BUILDROOT)$(SYSTEMD_DIR); \
+ fi
+ if test "x$(XINETD)" != x; then \
+ echo Installing xinetd configuration file for cups-lpd...; \
+@@ -335,9 +335,9 @@ uninstall:
+ fi
+ if test "x$SYSTEMD_DIR" != x; then \
+ echo Uninstalling systemd files...; \
+- $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.path; \
+- $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.service; \
+- $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cupsd.socket; \
++ $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/cups.path; \
++ $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/cups.service; \
++ $(RM) $(BUILDROOT)$(SYSTEMD_DIR)/cups.socket; \
+ fi
+ if test "x$(SMFMANIFESTDIR)" != x; then \
+ echo Uninstalling SMF manifest file...;\
+diff --git a/scheduler/cups.path.in b/scheduler/cups.path.in
+new file mode 100644
+index 0000000..4281d6a
+--- /dev/null
++++ b/scheduler/cups.path.in
+@@ -0,0 +1,8 @@
++[Unit]
++Description=CUPS Scheduler
++
++[Path]
++PathExistsGlob=@CUPS_CACHEDIR@/d*
++
++[Install]
++WantedBy=multi-user.target
+diff --git a/scheduler/cups.service.in b/scheduler/cups.service.in
+new file mode 100644
+index 0000000..f8912eb
+--- /dev/null
++++ b/scheduler/cups.service.in
+@@ -0,0 +1,10 @@
++[Unit]
++Description=CUPS Scheduler
++
++[Service]
++ExecStart=@sbindir@/cupsd -l
++Type=simple
++
++[Install]
++Also=cups.socket cups.path
++WantedBy=printer.target
+diff --git a/scheduler/cups.socket.in b/scheduler/cups.socket.in
+new file mode 100644
+index 0000000..cd98aa5
+--- /dev/null
++++ b/scheduler/cups.socket.in
+@@ -0,0 +1,12 @@
++[Unit]
++Description=CUPS Scheduler
++
++[Socket]
++ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@
++ListenStream=[::1]:631
++ListenStream=127.0.0.1:631
++BindIPv6Only=ipv6-only
++ReusePort=true
++
++[Install]
++WantedBy=sockets.target
+diff --git a/scheduler/org.cups.cupsd.path.in b/scheduler/org.cups.cupsd.path.in
+deleted file mode 100644
+index 1bccc6f..0000000
+--- a/scheduler/org.cups.cupsd.path.in
++++ /dev/null
+@@ -1,8 +0,0 @@
+-[Unit]
+-Description=CUPS Scheduler
+-
+-[Path]
+-PathExists=@CUPS_CACHEDIR@/org.cups.cupsd
+-
+-[Install]
+-WantedBy=multi-user.target
+diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in
+deleted file mode 100644
+index 4390016..0000000
+--- a/scheduler/org.cups.cupsd.service.in
++++ /dev/null
+@@ -1,10 +0,0 @@
+-[Unit]
+-Description=CUPS Scheduler
+-
+-[Service]
+-ExecStart=@sbindir@/cupsd -l
+-Type=simple
+-
+-[Install]
+-Also=org.cups.cupsd.socket org.cups.cupsd.path
+-WantedBy=printer.target
+diff --git a/scheduler/org.cups.cupsd.socket.in b/scheduler/org.cups.cupsd.socket.in
+deleted file mode 100644
+index cd98aa5..0000000
+--- a/scheduler/org.cups.cupsd.socket.in
++++ /dev/null
+@@ -1,12 +0,0 @@
+-[Unit]
+-Description=CUPS Scheduler
+-
+-[Socket]
+-ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@
+-ListenStream=[::1]:631
+-ListenStream=127.0.0.1:631
+-BindIPv6Only=ipv6-only
+-ReusePort=true
+-
+-[Install]
+-WantedBy=sockets.target
+--
+2.0.4
+
diff --git a/net-print/cups/files/cups-2.0.1-fix-compilation.patch b/net-print/cups/files/cups-2.0.1-fix-compilation.patch
new file mode 100644
index 000000000000..5828b6801306
--- /dev/null
+++ b/net-print/cups/files/cups-2.0.1-fix-compilation.patch
@@ -0,0 +1,25 @@
+From 7bb9184b40bea3c4b9f46362642e5d40053a3ae1 Mon Sep 17 00:00:00 2001
+From: Matthias Maier <tamiko@kyomu.43-1.org>
+Date: Wed, 19 Nov 2014 18:44:33 +0100
+Subject: [PATCH] fix compilation
+
+---
+ test/ippserver.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/ippserver.c b/test/ippserver.c
+index c785e5f..1c64668 100644
+--- a/test/ippserver.c
++++ b/test/ippserver.c
+@@ -421,7 +421,7 @@ static int valid_job_attributes(_ipp_client_t *client);
+
+ # ifdef HAVE_DNSSD
+ static DNSServiceRef DNSSDMaster = NULL;
+-# else /* HAVE_AVAHI */
++# elif defined(HAVE_AVAHI)
+ static AvahiThreadedPoll *DNSSDMaster = NULL;
+ static AvahiClient *DNSSDClient = NULL;
+ # endif /* HAVE_DNSSD */
+--
+2.0.4
+
diff --git a/net-print/cups/files/cups-2.0.1-fix-linkage-to-gnutls.patch b/net-print/cups/files/cups-2.0.1-fix-linkage-to-gnutls.patch
new file mode 100644
index 000000000000..dafb6e14b0e6
--- /dev/null
+++ b/net-print/cups/files/cups-2.0.1-fix-linkage-to-gnutls.patch
@@ -0,0 +1,24 @@
+--- a/cups/usersys.c
++++ b/cups/usersys.c
+@@ -1044,7 +1044,9 @@
+ options = 0;
+ }
+
++#ifdef HAVE_SSL
+ _httpTLSSetOptions(options);
++#endif /* HAVE_SSL */
+ }
+ }
+
+--- a/scheduler/conf.c
++++ b/scheduler/conf.c
+@@ -2975,7 +2975,9 @@
+ }
+ }
+
++#ifdef HAVE_SSL
+ _httpTLSSetOptions(options);
++#endif /* HAVE_SSL */
+ }
+ else if ((!_cups_strcasecmp(line, "Port") || !_cups_strcasecmp(line, "Listen")
+ #ifdef HAVE_SSL
diff --git a/net-print/cups/files/cups-2.0.1-rename-systemd-service-files.patch b/net-print/cups/files/cups-2.0.1-rename-systemd-service-files.patch
new file mode 100644
index 000000000000..c77997d7fec4
--- /dev/null
+++ b/net-print/cups/files/cups-2.0.1-rename-systemd-service-files.patch
@@ -0,0 +1,73 @@
+From 33e0d4c8e450fe69b195422c0880aaa96ca9478d Mon Sep 17 00:00:00 2001
+From: Matthias Maier <tamiko@kyomu.43-1.org>
+Date: Wed, 19 Nov 2014 18:00:06 +0100
+Subject: [PATCH] change systemd service files to gentoo naming scheme
+
+---
+ scheduler/Makefile | 10 +++++-----
+ scheduler/org.cups.cupsd.path.in | 2 +-
+ scheduler/org.cups.cupsd.service.in | 2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/scheduler/Makefile b/scheduler/Makefile
+index 3e0884a..b354420 100644
+--- a/scheduler/Makefile
++++ b/scheduler/Makefile
+@@ -203,11 +203,11 @@ install-data:
+ if test "x$(SYSTEMD_DIR)" != x; then \
+ echo Installing systemd configuration files...; \
+ $(INSTALL_DIR) $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.path $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.service $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cups-lpdAT.service $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cups-lpd@.service; \
+- $(INSTALL_DATA) org.cups.cups-lpd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
++ $(INSTALL_DATA) org.cups.cupsd.path $(BUILDROOT)$(SYSTEMD_DIR)/cups.path; \
++ $(INSTALL_DATA) org.cups.cupsd.service $(BUILDROOT)$(SYSTEMD_DIR)/cups.service; \
++ $(INSTALL_DATA) org.cups.cupsd.socket $(BUILDROOT)$(SYSTEMD_DIR)/cups.socket; \
++ $(INSTALL_DATA) org.cups.cups-lpdAT.service $(BUILDROOT)$(SYSTEMD_DIR)/cups-lpd@.service; \
++ $(INSTALL_DATA) org.cups.cups-lpd.socket $(BUILDROOT)$(SYSTEMD_DIR)/cups-lpd.socket; \
+ elif test "x$(XINETD)" != x; then \
+ echo Installing xinetd configuration file for cups-lpd...; \
+ $(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
+diff --git a/scheduler/org.cups.cupsd.path.in b/scheduler/org.cups.cupsd.path.in
+index 1bccc6f..90c8576 100644
+--- a/scheduler/org.cups.cupsd.path.in
++++ b/scheduler/org.cups.cupsd.path.in
+@@ -2,7 +2,7 @@
+ Description=CUPS Scheduler
+
+ [Path]
+-PathExists=@CUPS_CACHEDIR@/org.cups.cupsd
++PathExists=@CUPS_CACHEDIR@/d*
+
+ [Install]
+ WantedBy=multi-user.target
+diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in
+index 0a27c76..7a04248 100644
+--- a/scheduler/org.cups.cupsd.service.in
++++ b/scheduler/org.cups.cupsd.service.in
+@@ -7,5 +7,5 @@ ExecStart=@sbindir@/cupsd -l
+ Type=simple
+
+ [Install]
+-Also=org.cups.cupsd.socket org.cups.cupsd.path
++Also=cups.socket cups.path
+ WantedBy=printer.target
+diff --git a/scheduler/org.cups.cupsd.socket.in b/scheduler/org.cups.cupsd.socket.in
+--- a/scheduler/org.cups.cupsd.socket.in
++++ a/scheduler/org.cups.cupsd.socket.in
+@@ -3,6 +3,10 @@
+
+ [Socket]
+ ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@
++ListenStream=[::1]:631
++ListenStream=127.0.0.1:631
++BindIPv6Only=ipv6-only
++ReusePort=true
+
+ [Install]
+ WantedBy=sockets.target
+--
+2.0.4
+
diff --git a/net-print/cups/files/cups-2.0.1-xinetd-installation-fix.patch b/net-print/cups/files/cups-2.0.1-xinetd-installation-fix.patch
new file mode 100644
index 000000000000..2e8419e7675a
--- /dev/null
+++ b/net-print/cups/files/cups-2.0.1-xinetd-installation-fix.patch
@@ -0,0 +1,9 @@
+--- a/scheduler/Makefile
++++ a/scheduler/Makefile
+@@ -211,4 +211,5 @@
+- elif test "x$(XINETD)" != x; then \
++ fi
++ if test "x$(XINETD)" != x; then \
+ echo Installing xinetd configuration file for cups-lpd...; \
+ $(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
+ $(INSTALL_DATA) cups-lpd.xinetd $(BUILDROOT)$(XINETD)/cups-lpd; \
diff --git a/net-print/cups/files/cups-2.0.2-poll-CPU-loop-STR-4605.patch b/net-print/cups/files/cups-2.0.2-poll-CPU-loop-STR-4605.patch
new file mode 100644
index 000000000000..86114ea650fb
--- /dev/null
+++ b/net-print/cups/files/cups-2.0.2-poll-CPU-loop-STR-4605.patch
@@ -0,0 +1,48 @@
+http://cups.org/str.php?L4605+P-1+S-2+C0+I0+E0+Q100%25
+https://bugs.gentoo.org/show_bug.cgi?id=549732
+
+commit bb00c43fccb5aa2dec8e03bd9783e1ee267266a7
+Author: msweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
+Date: Wed May 6 18:01:04 2015 +0000
+
+ The scheduler could get caught in a busy loop (STR #4605)
+
+
+
+ git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12613 a1ca3aef-8c08-0410-bb20-df032aa958be
+
+diff --git a/scheduler/client.c b/scheduler/client.c
+index c5a9960..50464a5 100644
+--- a/scheduler/client.c
++++ b/scheduler/client.c
+@@ -585,6 +585,17 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
+ * connection and we need to shut it down...
+ */
+
++ if (!httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1)
++ {
++ /*
++ * Connection closed...
++ */
++
++ cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF.");
++ cupsdCloseClient(con);
++ return;
++ }
++
+ cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP read state %s.",
+ httpStateString(httpGetState(con->http)));
+ cupsdCloseClient(con);
+@@ -1979,12 +1990,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
+
+ if (httpGetState(con->http) == HTTP_STATE_POST_SEND)
+ {
+- /*
+- * Don't listen for activity until we decide to do something with this...
+- */
+-
+- cupsdAddSelect(httpGetFd(con->http), NULL, NULL, con);
+-
+ if (con->file >= 0)
+ {
+ fstat(con->file, &filestats);
diff --git a/net-print/cups/files/cups-2.0.2-rename-systemd-service-files.patch b/net-print/cups/files/cups-2.0.2-rename-systemd-service-files.patch
new file mode 100644
index 000000000000..16f677ba7a37
--- /dev/null
+++ b/net-print/cups/files/cups-2.0.2-rename-systemd-service-files.patch
@@ -0,0 +1,46 @@
+From 33e0d4c8e450fe69b195422c0880aaa96ca9478d Mon Sep 17 00:00:00 2001
+From: Matthias Maier <tamiko@kyomu.43-1.org>
+Date: Wed, 19 Nov 2014 18:00:06 +0100
+Subject: [PATCH] change systemd service files to gentoo naming scheme
+
+---
+ scheduler/Makefile | 10 +++++-----
+ scheduler/org.cups.cupsd.path.in | 2 +-
+ scheduler/org.cups.cupsd.service.in | 2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/scheduler/Makefile b/scheduler/Makefile
+index 3e0884a..b354420 100644
+--- a/scheduler/Makefile
++++ b/scheduler/Makefile
+@@ -203,11 +203,11 @@ install-data:
+ if test "x$(SYSTEMD_DIR)" != x; then \
+ echo Installing systemd configuration files...; \
+ $(INSTALL_DIR) $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.path $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.service $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cupsd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
+- $(INSTALL_DATA) org.cups.cups-lpdAT.service $(BUILDROOT)$(SYSTEMD_DIR)/org.cups.cups-lpd@.service; \
+- $(INSTALL_DATA) org.cups.cups-lpd.socket $(BUILDROOT)$(SYSTEMD_DIR); \
++ $(INSTALL_DATA) org.cups.cupsd.path $(BUILDROOT)$(SYSTEMD_DIR)/cups.path; \
++ $(INSTALL_DATA) org.cups.cupsd.service $(BUILDROOT)$(SYSTEMD_DIR)/cups.service; \
++ $(INSTALL_DATA) org.cups.cupsd.socket $(BUILDROOT)$(SYSTEMD_DIR)/cups.socket; \
++ $(INSTALL_DATA) org.cups.cups-lpdAT.service $(BUILDROOT)$(SYSTEMD_DIR)/cups-lpd@.service; \
++ $(INSTALL_DATA) org.cups.cups-lpd.socket $(BUILDROOT)$(SYSTEMD_DIR)/cups-lpd.socket; \
+ elif test "x$(XINETD)" != x; then \
+ echo Installing xinetd configuration file for cups-lpd...; \
+ $(INSTALL_DIR) -m 755 $(BUILDROOT)$(XINETD); \
+diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in
+index 0a27c76..7a04248 100644
+--- a/scheduler/org.cups.cupsd.service.in
++++ b/scheduler/org.cups.cupsd.service.in
+@@ -7,5 +7,5 @@ ExecStart=@sbindir@/cupsd -l
+ Type=simple
+
+ [Install]
+-Also=org.cups.cupsd.socket org.cups.cupsd.path
++Also=cups.socket cups.path
+ WantedBy=printer.target
+--
+2.0.4
+
diff --git a/net-print/cups/files/cups-2.0.2-systemd-socket.patch b/net-print/cups/files/cups-2.0.2-systemd-socket.patch
new file mode 100644
index 000000000000..6d8d60a07c1c
--- /dev/null
+++ b/net-print/cups/files/cups-2.0.2-systemd-socket.patch
@@ -0,0 +1,60 @@
+diff -up cups-2.0.2/cups/usersys.c.ustTJg cups-2.0.2/cups/usersys.c
+--- cups-2.0.2/cups/usersys.c.ustTJg 2015-02-10 13:40:24.294545077 +0100
++++ cups-2.0.2/cups/usersys.c 2015-02-10 13:46:56.763989233 +0100
+@@ -1017,7 +1017,7 @@ cups_finalize_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_set_server_name(cc, CUPS_DEFAULT_DOMAINSOCKET);
+ else
+ #endif /* CUPS_DEFAULT_DOMAINSOCKET */
+diff -up cups-2.0.2/scheduler/main.c.ustTJg cups-2.0.2/scheduler/main.c
+--- cups-2.0.2/scheduler/main.c.ustTJg 2015-02-10 13:40:24.121547526 +0100
++++ cups-2.0.2/scheduler/main.c 2015-02-10 13:40:24.295545063 +0100
+@@ -658,8 +658,15 @@ main(int argc, /* I - Number of comm
+
+ #if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+ if (OnDemand)
++ {
+ cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started on demand.");
+- else
++# ifdef HAVE_SYSTEMD
++ sd_notifyf(0, "READY=1\n"
++ "STATUS=Scheduler is running...\n"
++ "MAINPID=%lu",
++ (unsigned long) getpid());
++# endif /* HAVE_SYSTEMD */
++ } else
+ #endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+ if (fg)
+ cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started in foreground.");
+diff -up cups-2.0.2/scheduler/org.cups.cupsd.path.in.ustTJg cups-2.0.2/scheduler/org.cups.cupsd.path.in
+--- cups-2.0.2/scheduler/org.cups.cupsd.path.in.ustTJg 2014-03-21 15:50:24.000000000 +0100
++++ cups-2.0.2/scheduler/org.cups.cupsd.path.in 2015-02-10 13:40:24.295545063 +0100
+@@ -2,7 +2,7 @@
+ Description=CUPS Scheduler
+
+ [Path]
+-PathExists=@CUPS_CACHEDIR@/org.cups.cupsd
++PathExistsGlob=@CUPS_REQUESTS@/d*
+
+ [Install]
+ WantedBy=multi-user.target
+diff -up cups-2.0.2/scheduler/org.cups.cupsd.service.in.ustTJg cups-2.0.2/scheduler/org.cups.cupsd.service.in
+--- cups-2.0.2/scheduler/org.cups.cupsd.service.in.ustTJg 2014-10-21 13:55:01.000000000 +0200
++++ cups-2.0.2/scheduler/org.cups.cupsd.service.in 2015-02-10 13:40:24.296545049 +0100
+@@ -1,10 +1,11 @@
+ [Unit]
+ Description=CUPS Scheduler
+ Documentation=man:cupsd(8)
++After=network.target
+
+ [Service]
+ ExecStart=@sbindir@/cupsd -l
+-Type=simple
++Type=notify
+
+ [Install]
+ Also=org.cups.cupsd.socket org.cups.cupsd.path
diff --git a/net-print/cups/files/cupsd.init.d-r1 b/net-print/cups/files/cupsd.init.d-r1
new file mode 100644
index 000000000000..2f2e9e2df192
--- /dev/null
+++ b/net-print/cups/files/cupsd.init.d-r1
@@ -0,0 +1,26 @@
+#!/sbin/runscript
+
+depend() {
+ use net
+ @neededservices@
+ before nfs
+ after logger
+}
+
+start() {
+ ebegin "Starting cupsd"
+
+ checkpath -q -d -m 0775 -o root:lp /var/cache/cups
+ checkpath -q -d -m 0775 -o root:lp /var/cache/cups/rss
+ checkpath -q -d -m 0755 -o root:lp /run/cups
+ checkpath -q -d -m 0511 -o lp:lpadmin /run/cups/certs
+
+ start-stop-daemon --start --quiet --exec /usr/sbin/cupsd
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping cupsd"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/cupsd
+ eend $?
+}
diff --git a/net-print/cups/metadata.xml b/net-print/cups/metadata.xml
new file mode 100644
index 000000000000..bc19bfa0e433
--- /dev/null
+++ b/net-print/cups/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>printing</herd>
+ <use>
+ <flag name='lprng-compat'>
+ Do not install lp... binaries so cups and lprng can coexist.
+ </flag>
+ <flag name='python'>
+ Add support for the Python interpeter in the web server CGIs.
+ </flag>
+ <flag name='java'>
+ Add support for the Java interpeter in the web server CGIs.
+ </flag>
+ </use>
+</pkgmetadata>