From 217df81789cae251aa7d6ec0dbd3f5c2a0803a71 Mon Sep 17 00:00:00 2001 From: ayhanyalcinsoy Date: Fri, 19 Jun 2015 13:37:40 +0300 Subject: [PATCH] moved into main repo for pisi 2.0 --- hardware/component.xml | 3 + hardware/misc/component.xml | 3 + hardware/misc/libmtdev/actions.py | 23 + hardware/misc/libmtdev/pspec.xml | 75 ++ hardware/misc/libmtdev/translations.xml | 13 + hardware/printer/component.xml | 3 + hardware/printer/cups/actions.py | 98 ++ hardware/printer/cups/comar/package.py | 22 + hardware/printer/cups/comar/service.py | 50 + .../files/archlinux/cups-1.6.2-statedir.patch | 12 + .../archlinux/cups-no-export-ssllibs.patch | 12 + .../cups/files/archlinux/cups-no-gcrypt.patch | 11 + .../files/archlinux/cups-no-gzip-man.patch | 18 + hardware/printer/cups/files/cups.logrotate | 5 + ...tically-configured-ipp-shared-queues.patch | 31 + .../files/fedora/cups-avahi-address.patch | 95 ++ .../cups/files/fedora/cups-enum-all.patch | 17 + .../fedora/cups-final-content-type.patch | 17 + .../cups/files/fedora/cups-res_init.patch | 26 + .../printer/cups/files/fedora/textonly.ppd | 47 + .../gentoo/cups-1.6.0-fix-install-perms.patch | 25 + .../gentoo/cups-2.0.1-fix-compilation.patch | 25 + .../cups-2.0.1-fix-linkage-to-gnutls.patch | 24 + ...s-2.0.1-rename-systemd-service-files.patch | 73 ++ .../cups/files/pisilinux/cups-run.patch | 48 + .../printer/cups/files/pisilinux/lib64.patch | 37 + .../cups/files/pisilinux/nostrip.patch | 26 + .../cups/files/pisilinux/statedir.patch | 22 + .../files/pld-linux/cups-avahi-address.patch | 95 ++ .../pld-linux/cups-avahi-no-threaded.patch | 1021 +++++++++++++++++ hardware/printer/cups/files/tmpfiles.conf | 2 + hardware/printer/cups/pspec.xml | 244 ++++ hardware/printer/cups/translations.xml | 22 + hardware/sound/alsa-lib/actions.py | 36 + hardware/sound/alsa-lib/pspec.xml | 116 ++ hardware/sound/alsa-lib/translations.xml | 18 + hardware/sound/component.xml | 3 + 37 files changed, 2418 insertions(+) create mode 100644 hardware/component.xml create mode 100644 hardware/misc/component.xml create mode 100644 hardware/misc/libmtdev/actions.py create mode 100644 hardware/misc/libmtdev/pspec.xml create mode 100644 hardware/misc/libmtdev/translations.xml create mode 100644 hardware/printer/component.xml create mode 100644 hardware/printer/cups/actions.py create mode 100644 hardware/printer/cups/comar/package.py create mode 100644 hardware/printer/cups/comar/service.py create mode 100644 hardware/printer/cups/files/archlinux/cups-1.6.2-statedir.patch create mode 100644 hardware/printer/cups/files/archlinux/cups-no-export-ssllibs.patch create mode 100644 hardware/printer/cups/files/archlinux/cups-no-gcrypt.patch create mode 100644 hardware/printer/cups/files/archlinux/cups-no-gzip-man.patch create mode 100644 hardware/printer/cups/files/cups.logrotate create mode 100644 hardware/printer/cups/files/debian/get-ppd-file-for-statically-configured-ipp-shared-queues.patch create mode 100644 hardware/printer/cups/files/fedora/cups-avahi-address.patch create mode 100644 hardware/printer/cups/files/fedora/cups-enum-all.patch create mode 100644 hardware/printer/cups/files/fedora/cups-final-content-type.patch create mode 100644 hardware/printer/cups/files/fedora/cups-res_init.patch create mode 100644 hardware/printer/cups/files/fedora/textonly.ppd create mode 100644 hardware/printer/cups/files/gentoo/cups-1.6.0-fix-install-perms.patch create mode 100644 hardware/printer/cups/files/gentoo/cups-2.0.1-fix-compilation.patch create mode 100644 hardware/printer/cups/files/gentoo/cups-2.0.1-fix-linkage-to-gnutls.patch create mode 100644 hardware/printer/cups/files/gentoo/cups-2.0.1-rename-systemd-service-files.patch create mode 100644 hardware/printer/cups/files/pisilinux/cups-run.patch create mode 100644 hardware/printer/cups/files/pisilinux/lib64.patch create mode 100644 hardware/printer/cups/files/pisilinux/nostrip.patch create mode 100644 hardware/printer/cups/files/pisilinux/statedir.patch create mode 100644 hardware/printer/cups/files/pld-linux/cups-avahi-address.patch create mode 100644 hardware/printer/cups/files/pld-linux/cups-avahi-no-threaded.patch create mode 100644 hardware/printer/cups/files/tmpfiles.conf create mode 100644 hardware/printer/cups/pspec.xml create mode 100644 hardware/printer/cups/translations.xml create mode 100644 hardware/sound/alsa-lib/actions.py create mode 100644 hardware/sound/alsa-lib/pspec.xml create mode 100644 hardware/sound/alsa-lib/translations.xml create mode 100644 hardware/sound/component.xml diff --git a/hardware/component.xml b/hardware/component.xml new file mode 100644 index 0000000000..3d5a2b3c2e --- /dev/null +++ b/hardware/component.xml @@ -0,0 +1,3 @@ + + hardware + diff --git a/hardware/misc/component.xml b/hardware/misc/component.xml new file mode 100644 index 0000000000..79c4d92674 --- /dev/null +++ b/hardware/misc/component.xml @@ -0,0 +1,3 @@ + + hardware.misc + diff --git a/hardware/misc/libmtdev/actions.py b/hardware/misc/libmtdev/actions.py new file mode 100644 index 0000000000..02b1401a95 --- /dev/null +++ b/hardware/misc/libmtdev/actions.py @@ -0,0 +1,23 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get + +WorkDir = "mtdev-%s" % get.srcVERSION() + +def setup(): + autotools.autoreconf('-vfi') + autotools.configure("--disable-static") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + pisitools.dodoc("ChangeLog", "COPYING", "README") diff --git a/hardware/misc/libmtdev/pspec.xml b/hardware/misc/libmtdev/pspec.xml new file mode 100644 index 0000000000..85f68c1e03 --- /dev/null +++ b/hardware/misc/libmtdev/pspec.xml @@ -0,0 +1,75 @@ + + + + + libmtdev + http://bitmath.org/code/mtdev + + PisiLinux Community + admins@pisilinux.org + + MIT + library + Multitouch Protocol Translation Library + The libmtdev is a stand-alone library which transforms all variants of kernel MT events to the slotted type B protocol. + http://bitmath.org/code/mtdev/mtdev-1.1.5.tar.gz + + + + libmtdev + + /usr/bin + /usr/lib + /usr/share/doc + + + + + libmtdev-devel + Development files of libmtdev + + libmtdev + + + /usr/include + /usr/lib/pkgconfig + + + + + libmtdev-32bit + emul32 + 32-bit shared libraries for libmtdev + emul32 + + libmtdev + + + /usr/lib32 + + + + + + 2014-05-16 + 1.1.5 + Version bump. + Kamil Atlı + suvarice@gmail.com + + + 2014-03-09 + 1.1.3 + Rebuild. + Kamil Atlı + suvarice@gmail.com + + + 2012-10-03 + 1.1.3 + First release + PisiLinux Community + admins@pisilinux.org + + + diff --git a/hardware/misc/libmtdev/translations.xml b/hardware/misc/libmtdev/translations.xml new file mode 100644 index 0000000000..44798c7e42 --- /dev/null +++ b/hardware/misc/libmtdev/translations.xml @@ -0,0 +1,13 @@ + + + + libmtdev + Çoklu Dokunmatik Protokol Dönüşüm Kütüphanesi + Libmtdev kütüphanesi, kernel MT olaylarının tüm çeşitlerini slotlu B tipi protokole dönüştürür. + + + + libmtdev-devel + Libmtdev için geliştirme dosyaları + + diff --git a/hardware/printer/component.xml b/hardware/printer/component.xml new file mode 100644 index 0000000000..42941e1597 --- /dev/null +++ b/hardware/printer/component.xml @@ -0,0 +1,3 @@ + + hardware.printer + diff --git a/hardware/printer/cups/actions.py b/hardware/printer/cups/actions.py new file mode 100644 index 0000000000..1655420abc --- /dev/null +++ b/hardware/printer/cups/actions.py @@ -0,0 +1,98 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import get +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import shelltools + +def setup(): + #pisitools.flags.add("-fstack-protector-all", "-DLDAP_DEPRECATED=1") + pisitools.dosed("config-scripts/cups-sharedlibs.m4", "( -shared )", " -Wl,--as-needed\\1") + + # For --enable-avahi + autotools.aclocal("-I config-scripts") + autotools.autoconf("-I config-scripts") + + options = '--with-cups-user=lp \ + --with-cups-group=lp \ + --with-system-groups=lpadmin \ + --with-docdir=/usr/share/cups/html \ + --with-dbusdir=/etc/dbus-1 \ + --with-optim="%s" \ + --with-php=/usr/bin/php-cgi \ + --with-cupsd-file-perm=0755 \ + --with-log-file-perm=0600 \ + --without-java \ + --enable-acl \ + --enable-ssl=yes \ + --enable-libpaper \ + --enable-libusb=yes \ + --enable-debug \ + --enable-avahi \ + --enable-gssapi \ + --enable-dbus \ + --enable-pam=yes \ + --enable-relro \ + --enable-dnssd \ + --enable-browsing \ + --enable-threads \ + --enable-raw-printing \ + --disable-gnutls \ + --disable-launchd \ + --without-rcdir \ + --libdir=/usr/lib \ + --without-perl \ + --with-logdir=/var/log/cups \ + KRB5CONFIG=/usr/bin/krb5-config \ + --localstatedir=/var \ + --with-rundir=/run/cups \ + --with-xinetd=/etc/xinetd.d \ + ' % get.CFLAGS() + + if get.buildTYPE() == "emul32": + options += ' \ + --enable-libusb=no \ + --disable-avahi \ + --disable-dnssd \ + --disable-gssapi \ + --disable-dbus \ + --bindir=/usr/bin32 \ + --sbindir=/usr/sbin32 \ + --libdir=/usr/lib32' + + autotools.configure(options) + +def build(): + autotools.make() + +#def check(): + #autotools.make("check") + +def install(): + if get.buildTYPE() == "emul32": + # SERVERBIN is hardcoded to /usr/lib/cups, thus it overwrites 64 bit libraries + autotools.rawInstall("BUILDROOT=%s SERVERBIN=%s/usr/serverbin32 install-libs" % (get.installDIR(), get.installDIR())) + pisitools.domove("/usr/bin32/cups-config", "/usr/bin", "cups-config-32bit") + pisitools.removeDir("/usr/bin32") + pisitools.removeDir("/usr/sbin32") + pisitools.removeDir("/usr/serverbin32") + + # remove files now part of cups-filters + pisitools.remove("/usr/share/cups/data/testprint") + pisitools.removeDir("/usr/share/cups/banners") + pisitools.dodir("/usr/share/cups/banners") + return + + autotools.rawInstall("BUILDROOT=%s install-headers install-libs install-data install-exec" % get.installDIR()) + shelltools.chmod("%s/run/cups/certs" % get.installDIR(), 0755) + + pisitools.dodir("/usr/share/cups/profiles") + + # Serial backend needs to run as root + #shelltools.chmod("%s/usr/lib/cups/backend/serial" % get.installDIR(), 0700) + + pisitools.dodoc("CHANGES.txt", "CREDITS.txt", "LICENSE.txt", "README.txt") diff --git a/hardware/printer/cups/comar/package.py b/hardware/printer/cups/comar/package.py new file mode 100644 index 0000000000..730d2b67da --- /dev/null +++ b/hardware/printer/cups/comar/package.py @@ -0,0 +1,22 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import os +import re + +ownerships = { + "/run/cups" : "root:lp", + "/var/log/cups" : "root:lp", + } + +CUPSD_CONFIG_FILE = "/etc/cups/cupsd.conf" + +def postInstall(fromVersion, fromRelease, toVersion, toRelease): + for directory,owners in ownerships.items(): + if os.path.exists(directory): + os.system("chown %s %s" % (owners, directory)) + + # Replace possible pnpadmin leftover from cupsd.conf + if os.path.exists(CUPSD_CONFIG_FILE): + cupsd = open(CUPSD_CONFIG_FILE, "r").read() + open(CUPSD_CONFIG_FILE, "w").write(re.sub("pnpadmin", "lpadmin", cupsd)) diff --git a/hardware/printer/cups/comar/service.py b/hardware/printer/cups/comar/service.py new file mode 100644 index 0000000000..cc3baf190b --- /dev/null +++ b/hardware/printer/cups/comar/service.py @@ -0,0 +1,50 @@ +from comar.service import * +import os + +serviceType = "server" +serviceDefault = "on" +serviceDesc = _({"en": "CUPS Printer Server", + "tr": "CUPS Yazıcı Sunucusu"}) +serviceConf = "cups" + +PIDFILE = "/run/cups/cupsd.pid" + +@synchronized +def start(): + # FIXME: After avahi before hal + startDependencies("avahi") + + # Load ppdev and lp drivers if wanted + if config.get("LOAD_LP_MODULE") == "yes": + os.system("/sbin/modprobe -q lp") + os.system("/sbin/modprobe -q ppdev") + + startService(command="/usr/sbin/cupsd", + donotify=True) + os.system("pidof -o %PPID /usr/sbin/cupsd > " + PIDFILE) + + # Tell udevd to replay printer events + # One for low-level usb + os.system("udevadm trigger --subsystem-match=usb \ + --attr-match=bInterfaceClass=07 \ + --attr-match=bInterfaceSubClass=01 \ + --action=add") + # One for usblp backend + os.system("udevadm trigger --subsystem-match=usb \ + --property-match=DEVNAME=\"/dev/usb/lp*\" \ + --action=add") + + +@synchronized +def reload(): + if os.path.exists(PIDFILE): + # 1 is SIGHUP + os.kill(int(open(PIDFILE, "r").read().strip()), 1) + +@synchronized +def stop(): + stopService(pidfile=PIDFILE, donotify=True) + if os.path.isfile(PIDFILE): os.unlink(PIDFILE) + +def status(): + return isServiceRunning(pidfile=PIDFILE) diff --git a/hardware/printer/cups/files/archlinux/cups-1.6.2-statedir.patch b/hardware/printer/cups/files/archlinux/cups-1.6.2-statedir.patch new file mode 100644 index 0000000000..8b16549815 --- /dev/null +++ b/hardware/printer/cups/files/archlinux/cups-1.6.2-statedir.patch @@ -0,0 +1,12 @@ +diff -ruN cups-1.6.2.orig/config-scripts/cups-directories.m4 cups-1.6.2/config-scripts/cups-directories.m4 +--- cups-1.6.2.orig/config-scripts/cups-directories.m4 2012-10-01 03:55:23.000000000 +0200 ++++ cups-1.6.2/config-scripts/cups-directories.m4 2013-04-02 00:11:41.000000000 +0200 +@@ -420,7 +420,7 @@ + ;; + *) + # All others +- CUPS_STATEDIR="$localstatedir/run/cups" ++ CUPS_STATEDIR="/run/cups" + ;; + esac]) + AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR") diff --git a/hardware/printer/cups/files/archlinux/cups-no-export-ssllibs.patch b/hardware/printer/cups/files/archlinux/cups-no-export-ssllibs.patch new file mode 100644 index 0000000000..e227bd1823 --- /dev/null +++ b/hardware/printer/cups/files/archlinux/cups-no-export-ssllibs.patch @@ -0,0 +1,12 @@ +diff -up cups-1.5b1/config-scripts/cups-ssl.m4.no-export-ssllibs cups-1.5b1/config-scripts/cups-ssl.m4 +--- cups-1.6.2/config-scripts/cups-ssl.m4.no-export-ssllibs 2011-05-11 02:52:08.000000000 +0200 ++++ cups-1.6.2/config-scripts/cups-ssl.m4 2011-05-23 17:47:27.000000000 +0200 +@@ -180,7 +180,7 @@ + AC_SUBST(SSLFLAGS) + AC_SUBST(SSLLIBS) + +-EXPORT_SSLLIBS="$SSLLIBS" ++EXPORT_SSLLIBS="" + AC_SUBST(EXPORT_SSLLIBS) + + dnl diff --git a/hardware/printer/cups/files/archlinux/cups-no-gcrypt.patch b/hardware/printer/cups/files/archlinux/cups-no-gcrypt.patch new file mode 100644 index 0000000000..481b1a7264 --- /dev/null +++ b/hardware/printer/cups/files/archlinux/cups-no-gcrypt.patch @@ -0,0 +1,11 @@ +diff -up cups-2.0rc1/config-scripts/cups-ssl.m4.no-gcry cups-2.0rc1/config-scripts/cups-ssl.m4 +--- cups-2.0rc1/config-scripts/cups-ssl.m4.no-gcry 2014-09-12 15:41:23.324760213 +0200 ++++ cups-2.0rc1/config-scripts/cups-ssl.m4 2014-09-12 15:43:13.124203363 +0200 +@@ -60,7 +60,6 @@ if test x$enable_ssl != xno; then + dnl Then look for GNU TLS... + if test $have_ssl = 0 -a "x$enable_gnutls" != "xno" -a "x$PKGCONFIG" != x; then + AC_PATH_TOOL(LIBGNUTLSCONFIG,libgnutls-config) +- AC_PATH_TOOL(LIBGCRYPTCONFIG,libgcrypt-config) + if $PKGCONFIG --exists gnutls; then + have_ssl=1 + SSLLIBS=`$PKGCONFIG --libs gnutls` diff --git a/hardware/printer/cups/files/archlinux/cups-no-gzip-man.patch b/hardware/printer/cups/files/archlinux/cups-no-gzip-man.patch new file mode 100644 index 0000000000..69899b9cb7 --- /dev/null +++ b/hardware/printer/cups/files/archlinux/cups-no-gzip-man.patch @@ -0,0 +1,18 @@ +diff -up cups-1.5b1/config-scripts/cups-manpages.m4.no-gzip-man cups-1.5b1/config-scripts/cups-manpages.m4 +--- cups-1.5b1/config-scripts/cups-manpages.m4.no-gzip-man 2011-05-12 07:21:56.000000000 +0200 ++++ cups-1.5b1/config-scripts/cups-manpages.m4 2011-05-23 17:25:50.000000000 +0200 +@@ -69,10 +69,10 @@ case "$uname" in + ;; + 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/hardware/printer/cups/files/cups.logrotate b/hardware/printer/cups/files/cups.logrotate new file mode 100644 index 0000000000..773c70fd2a --- /dev/null +++ b/hardware/printer/cups/files/cups.logrotate @@ -0,0 +1,5 @@ +/var/log/cups/*_log { + missingok + notifempty + sharedscripts +} diff --git a/hardware/printer/cups/files/debian/get-ppd-file-for-statically-configured-ipp-shared-queues.patch b/hardware/printer/cups/files/debian/get-ppd-file-for-statically-configured-ipp-shared-queues.patch new file mode 100644 index 0000000000..ed132d7503 --- /dev/null +++ b/hardware/printer/cups/files/debian/get-ppd-file-for-statically-configured-ipp-shared-queues.patch @@ -0,0 +1,31 @@ +Description: Applications could not get the PPD file for + statically-configured IPP-shared print queues +Author: Till Kamppeter +Bug-Upstream: http://cups.org/str.php?L4178 +Last-Updated: 2012-09-19 + +--- a/cups/util.c ++++ b/cups/util.c +@@ -1731,6 +1731,22 @@ + + return (1); + } ++ else if (device_uri && ++ (!strncmp(device_uri, "ipp:", 4) != NULL || ++ !strncmp(device_uri, "ipps:", 5) != NULL)) ++ { ++ /* ++ * Statically-configured IPP shared printer. ++ */ ++ ++ httpSeparateURI(HTTP_URI_CODING_ALL, ++ device_uri, ++ scheme, sizeof(scheme), username, sizeof(username), ++ host, hostsize, port, resource, resourcesize); ++ ippDelete(response); ++ ++ return (1); ++ } + else if ((attr = ippFindAttribute(response, "member-uris", + IPP_TAG_URI)) != NULL) + { diff --git a/hardware/printer/cups/files/fedora/cups-avahi-address.patch b/hardware/printer/cups/files/fedora/cups-avahi-address.patch new file mode 100644 index 0000000000..308ee89335 --- /dev/null +++ b/hardware/printer/cups/files/fedora/cups-avahi-address.patch @@ -0,0 +1,95 @@ +diff -up cups-1.6.2/cups/http-support.c.avahi-address cups-1.6.2/cups/http-support.c +--- cups-1.6.2/cups/http-support.c.avahi-address 2013-03-11 18:44:36.000000000 +0000 ++++ cups-1.6.2/cups/http-support.c 2013-06-28 13:42:15.834715511 +0100 +@@ -2121,7 +2121,7 @@ http_resolve_cb( + const char *type, /* I - Registration type */ + const char *domain, /* I - Domain (unused) */ + const char *hostTarget, /* I - Hostname */ +- const AvahiAddress *address, /* I - Address (unused) */ ++ const AvahiAddress *address, /* I - Address */ + uint16_t port, /* I - Port number */ + AvahiStringList *txt, /* I - TXT record */ + AvahiLookupResultFlags flags, /* I - Lookup flags (unused) */ +@@ -2248,41 +2248,59 @@ http_resolve_cb( + * getting the IP address of the .local name and then do reverse-lookups... + */ + +- http_addrlist_t *addrlist, /* List of addresses */ +- *addr; /* Current address */ ++ http_addr_t addr; ++ size_t addrlen; ++ int error; + + DEBUG_printf(("8http_resolve_cb: Looking up \"%s\".", hostTarget)); + +- snprintf(fqdn, sizeof(fqdn), "%d", ntohs(port)); +- if ((addrlist = httpAddrGetList(hostTarget, AF_UNSPEC, fqdn)) != NULL) ++ switch (address->proto) + { +- for (addr = addrlist; addr; addr = addr->next) ++ case AVAHI_PROTO_INET: ++ addr.ipv4.sin_family = AF_INET; ++ addrlen = sizeof (addr.ipv4.sin_addr); ++ memcpy (&addr.ipv4.sin_addr, &address->data, addrlen); ++ break; ++ case AVAHI_PROTO_INET6: ++ addr.ipv6.sin6_family = AF_INET6; ++ addrlen = sizeof (addr.ipv6.sin6_addr); ++ memcpy (&addr.ipv6.sin6_addr, &address->data, addrlen); ++ break; ++ default: ++ DEBUG_printf(("8http_resolve_cb: unknown address family %d", ++ address->proto)); ++ addrlen = 0; ++ } ++ ++ if (addrlen > 0) { ++ error = getnameinfo(&addr.addr, httpAddrLength (&addr), ++ fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD); ++ ++ if (!error) + { +- int error = getnameinfo(&(addr->addr.addr), +- httpAddrLength(&(addr->addr)), +- fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD); ++ DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn)); + +- if (!error) ++ if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn || ++ _cups_strcasecmp(hostptr, ".local")) + { +- DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn)); +- +- if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn || +- _cups_strcasecmp(hostptr, ".local")) +- { +- hostTarget = fqdn; +- break; +- } ++ hostTarget = fqdn; + } ++ } else { ++ avahi_address_snprint (fqdn, sizeof (fqdn), address); ++ hostTarget = fqdn; + #ifdef DEBUG +- else +- DEBUG_printf(("8http_resolve_cb: \"%s\" did not resolve: %d", +- httpAddrString(&(addr->addr), fqdn, sizeof(fqdn)), +- error)); ++ DEBUG_printf(("8http_resolve_cb: \"%s\" did not resolve: %d", ++ fqdn, error)); + #endif /* DEBUG */ + } +- +- httpAddrFreeList(addrlist); + } ++ } else { ++ /* ++ * Use the IP address that responded... ++ */ ++ ++ avahi_address_snprint (fqdn, sizeof (fqdn), address); ++ hostTarget = fqdn; + } + + /* diff --git a/hardware/printer/cups/files/fedora/cups-enum-all.patch b/hardware/printer/cups/files/fedora/cups-enum-all.patch new file mode 100644 index 0000000000..0ac39835ea --- /dev/null +++ b/hardware/printer/cups/files/fedora/cups-enum-all.patch @@ -0,0 +1,17 @@ +diff -up cups-1.6.2/cups/dest.c.enum-all cups-1.6.2/cups/dest.c +--- cups-1.6.2/cups/dest.c.enum-all 2013-06-04 10:58:36.169786250 +0100 ++++ cups-1.6.2/cups/dest.c 2013-06-04 10:59:02.147900811 +0100 +@@ -2724,9 +2724,12 @@ cups_dnssd_browse_cb( + break; + + case AVAHI_BROWSER_REMOVE: +- case AVAHI_BROWSER_ALL_FOR_NOW: + case AVAHI_BROWSER_CACHE_EXHAUSTED: + break; ++ ++ case AVAHI_BROWSER_ALL_FOR_NOW: ++ avahi_simple_poll_quit(data->simple_poll); ++ break; + } + } + diff --git a/hardware/printer/cups/files/fedora/cups-final-content-type.patch b/hardware/printer/cups/files/fedora/cups-final-content-type.patch new file mode 100644 index 0000000000..7076e2b475 --- /dev/null +++ b/hardware/printer/cups/files/fedora/cups-final-content-type.patch @@ -0,0 +1,17 @@ +diff -up cups-1.6.4/scheduler/job.c.final-content-type cups-1.6.4/scheduler/job.c +--- cups-1.6.4/scheduler/job.c.final-content-type 2013-09-27 16:58:13.934775402 +0100 ++++ cups-1.6.4/scheduler/job.c 2013-09-27 17:00:57.716549576 +0100 +@@ -692,12 +692,7 @@ cupsdContinueJob(cupsd_job_t *job) /* I + + if (!job->printer->remote) + { +- for (filter = (mime_filter_t *)cupsArrayLast(filters); +- filter && filter->dst; +- filter = (mime_filter_t *)cupsArrayPrev(filters)) +- if (strcmp(filter->dst->super, "printer") || +- strcmp(filter->dst->type, job->printer->name)) +- break; ++ filter = (mime_filter_t *)cupsArrayLast(filters); + + if (filter && filter->dst) + { diff --git a/hardware/printer/cups/files/fedora/cups-res_init.patch b/hardware/printer/cups/files/fedora/cups-res_init.patch new file mode 100644 index 0000000000..3866521d77 --- /dev/null +++ b/hardware/printer/cups/files/fedora/cups-res_init.patch @@ -0,0 +1,26 @@ +diff -up cups-1.7b1/cups/http-addr.c.res_init cups-1.7b1/cups/http-addr.c +--- cups-1.7b1/cups/http-addr.c.res_init 2013-03-20 19:14:10.000000000 +0100 ++++ cups-1.7b1/cups/http-addr.c 2013-04-19 12:01:36.927512159 +0200 +@@ -319,7 +319,8 @@ httpAddrLookup( + + if (error) + { +- if (error == EAI_FAIL) ++ if (error == EAI_FAIL || error == EAI_AGAIN || error == EAI_NODATA || ++ error == EAI_NONAME) + cg->need_res_init = 1; + + return (httpAddrString(addr, name, namelen)); +diff -up cups-1.7b1/cups/http-addrlist.c.res_init cups-1.7b1/cups/http-addrlist.c +--- cups-1.7b1/cups/http-addrlist.c.res_init 2013-04-19 12:01:36.930512119 +0200 ++++ cups-1.7b1/cups/http-addrlist.c 2013-04-19 12:03:13.769229554 +0200 +@@ -581,7 +581,8 @@ httpAddrGetList(const char *hostname, /* + } + else + { +- if (error == EAI_FAIL) ++ if (error == EAI_FAIL || error == EAI_AGAIN || error == EAI_NODATA || ++ error == EAI_NONAME) + cg->need_res_init = 1; + + _cupsSetError(IPP_STATUS_ERROR_INTERNAL, gai_strerror(error), 0); diff --git a/hardware/printer/cups/files/fedora/textonly.ppd b/hardware/printer/cups/files/fedora/textonly.ppd new file mode 100644 index 0000000000..89060bc51e --- /dev/null +++ b/hardware/printer/cups/files/fedora/textonly.ppd @@ -0,0 +1,47 @@ +*PPD-Adobe: "4.3" +*% +*% Text-only printer definition +*% +*FormatVersion: "4.3" +*FileVersion: "1.1" +*LanguageVersion: English +*LanguageEncoding: ISOLatin1 +*PCFileName: "TEXTONLY.PPD" +*Manufacturer: "Generic" +*Product: "(Generic)" +*cupsVersion: 1.0 +*cupsManualCopies: True +*cupsModelNumber: 2 +*cupsFilter: "text/plain 0 textonly" +*ModelName: "Generic text-only printer" +*ShortNickName: "Generic text-only printer" +*NickName: "Generic text-only printer" +*PSVersion: "(2017.000) 0" +*LanguageLevel: "2" +*ColorDevice: False +*DefaultColorSpace: Gray +*FileSystem: False +*Throughput: "8" +*LandscapeOrientation: Plus90 +*VariablePaperSize: False +*TTRasterizer: Type42 +*DefaultImageableArea: Letter +*ImageableArea Letter/US Letter: "18 36 594 756" +*DefaultPaperDimension: Letter +*PaperDimension Letter/Letter: "612 792" +*OpenUI *PageSize/Media Size: PickOne +*OrderDependency: 10 AnySetup *PageSize +*DefaultPageSize: Letter +*PageSize Letter/Letter: "<>setpagedevice" +*CloseUI: *PageSize +*OpenUI *PageRegion: PickOne +*OrderDependency: 10 AnySetup *PageRegion +*DefaultPageRegion: Letter +*PageRegion Letter/Letter: "<>setpagedevice" +*CloseUI: *PageRegion + +*OpenUI *SendFF: Boolean +*DefaultSendFF: False +*SendFF True/True: "" +*SendFF False/False: "" +*CloseUI: *SendFF diff --git a/hardware/printer/cups/files/gentoo/cups-1.6.0-fix-install-perms.patch b/hardware/printer/cups/files/gentoo/cups-1.6.0-fix-install-perms.patch new file mode 100644 index 0000000000..2d7a77c44f --- /dev/null +++ b/hardware/printer/cups/files/gentoo/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/hardware/printer/cups/files/gentoo/cups-2.0.1-fix-compilation.patch b/hardware/printer/cups/files/gentoo/cups-2.0.1-fix-compilation.patch new file mode 100644 index 0000000000..c805978221 --- /dev/null +++ b/hardware/printer/cups/files/gentoo/cups-2.0.1-fix-compilation.patch @@ -0,0 +1,25 @@ +From 7bb9184b40bea3c4b9f46362642e5d40053a3ae1 Mon Sep 17 00:00:00 2001 +From: Matthias Maier +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/hardware/printer/cups/files/gentoo/cups-2.0.1-fix-linkage-to-gnutls.patch b/hardware/printer/cups/files/gentoo/cups-2.0.1-fix-linkage-to-gnutls.patch new file mode 100644 index 0000000000..9714a742d7 --- /dev/null +++ b/hardware/printer/cups/files/gentoo/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/hardware/printer/cups/files/gentoo/cups-2.0.1-rename-systemd-service-files.patch b/hardware/printer/cups/files/gentoo/cups-2.0.1-rename-systemd-service-files.patch new file mode 100644 index 0000000000..825d0de2e6 --- /dev/null +++ b/hardware/printer/cups/files/gentoo/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 +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/hardware/printer/cups/files/pisilinux/cups-run.patch b/hardware/printer/cups/files/pisilinux/cups-run.patch new file mode 100644 index 0000000000..dbe6dd3416 --- /dev/null +++ b/hardware/printer/cups/files/pisilinux/cups-run.patch @@ -0,0 +1,48 @@ +diff -Nuar cups-1.6.1.orig/config.h.in cups-1.6.1/config.h.in +--- cups-1.6.1.orig/config.h.in 2012-07-16 21:21:43.000000000 +0300 ++++ cups-1.6.1/config.h.in 2013-03-13 18:46:13.805434622 +0200 +@@ -127,7 +127,7 @@ + #define CUPS_SBINDIR "/usr/sbin" + #define CUPS_SERVERBIN "/usr/lib/cups" + #define CUPS_SERVERROOT "/etc/cups" +-#define CUPS_STATEDIR "/var/run/cups" ++#define CUPS_STATEDIR "/run/cups" + + + /* +diff -Nuar cups-1.6.1.orig/doc/help/security.html cups-1.6.1/doc/help/security.html +--- cups-1.6.1.orig/doc/help/security.html 2011-04-29 00:20:12.000000000 +0300 ++++ cups-1.6.1/doc/help/security.html 2013-03-13 18:45:47.222433880 +0200 +@@ -53,7 +53,7 @@ +
  • Local certificate authentication passes 128-bit + "certificates" that identify an authenticated user. + Certificates are created on-the-fly from random data and +- stored in files under /var/run/cups/certs. ++ stored in files under /run/cups/certs. + They have restricted read permissions: root + + system-group(s) for the root certificate, and lp + lp + for CGI certificates. +diff -Nuar cups-1.6.1.orig/scheduler/org.cups.cupsd.plist cups-1.6.1/scheduler/org.cups.cupsd.plist +--- cups-1.6.1.orig/scheduler/org.cups.cupsd.plist 2011-04-20 21:15:44.000000000 +0300 ++++ cups-1.6.1/scheduler/org.cups.cupsd.plist 2013-03-13 18:44:26.286431623 +0200 +@@ -54,7 +54,7 @@ + SockPathMode + 49663 + SockPathName +- /private/var/run/cupsd ++ /run/cupsd + + + +diff -Nuar cups-1.6.1.orig/xcode/config.h cups-1.6.1/xcode/config.h +--- cups-1.6.1.orig/xcode/config.h 2012-07-16 21:21:43.000000000 +0300 ++++ cups-1.6.1/xcode/config.h 2013-03-13 18:43:13.618429596 +0200 +@@ -100,7 +100,7 @@ + * Do we have domain socket support, and if so what is the default one? + */ + +-#define CUPS_DEFAULT_DOMAINSOCKET "/private/var/run/cupsd" ++#define CUPS_DEFAULT_DOMAINSOCKET "/run/cupsd" + + + /* diff --git a/hardware/printer/cups/files/pisilinux/lib64.patch b/hardware/printer/cups/files/pisilinux/lib64.patch new file mode 100644 index 0000000000..bc7b4bae6f --- /dev/null +++ b/hardware/printer/cups/files/pisilinux/lib64.patch @@ -0,0 +1,37 @@ +--- cups-config.in~ 2014-01-18 13:56:12.423297761 +0100 ++++ cups-config.in 2014-01-18 13:56:59.459964275 +0100 +@@ -50,7 +50,7 @@ else + CFLAGS="$CFLAGS -I$includedir" + fi + +- if test $libdir != /usr/lib -a $libdir != /usr/lib32 -a $libdir != /usr/lib64; then ++ if test $libdir != /usr/lib -a $libdir != /usr/lib32 -a $libdir != /usr/lib; then + LDFLAGS="$LDFLAGS -L$libdir" + fi + fi +--- config-scripts/cups-directories.m4~ 2014-01-18 13:56:23.529964393 +0100 ++++ config-scripts/cups-directories.m4 2014-01-18 13:57:40.706630807 +0100 +@@ -103,8 +103,8 @@ dnl Fix "libdir" variable... + if test "$libdir" = "\${exec_prefix}/lib"; then + case "$uname" in + Linux*) +- if test -d /usr/lib64 -a ! -d /usr/lib64/fakeroot; then +- libdir="$exec_prefix/lib64" ++ if test -d /usr/lib -a ! -d /usr/lib/fakeroot; then ++ libdir="$exec_prefix/lib" + fi + ;; + HP-UX*) +--- configure~ 2014-01-18 13:56:32.346631030 +0100 ++++ configure 2014-01-18 13:57:12.076630898 +0100 +@@ -5893,8 +5893,8 @@ fi + if test "$libdir" = "\${exec_prefix}/lib"; then + case "$uname" in + Linux*) +- if test -d /usr/lib64 -a ! -d /usr/lib64/fakeroot; then +- libdir="$exec_prefix/lib64" ++ if test -d /usr/lib -a ! -d /usr/lib/fakeroot; then ++ libdir="$exec_prefix/lib" + fi + ;; + HP-UX*) diff --git a/hardware/printer/cups/files/pisilinux/nostrip.patch b/hardware/printer/cups/files/pisilinux/nostrip.patch new file mode 100644 index 0000000000..ab38c25d7e --- /dev/null +++ b/hardware/printer/cups/files/pisilinux/nostrip.patch @@ -0,0 +1,26 @@ +Index: cups-1.4.4/config-scripts/cups-compiler.m4 +=================================================================== +--- cups-1.4.4.orig/config-scripts/cups-compiler.m4 ++++ cups-1.4.4/config-scripts/cups-compiler.m4 +@@ -30,7 +30,7 @@ dnl For debugging, keep symbols, otherwi + 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 +Index: cups-1.4.4/configure +=================================================================== +--- cups-1.4.4.orig/configure ++++ cups-1.4.4/configure +@@ -10978,7 +10978,7 @@ fi + if test x$enable_debug = xyes; then + OPTIM="-g" + else +- INSTALL_STRIP="-s" ++ INSTALL_STRIP="" + fi + + if test x$enable_debug_printfs = xyes; then diff --git a/hardware/printer/cups/files/pisilinux/statedir.patch b/hardware/printer/cups/files/pisilinux/statedir.patch new file mode 100644 index 0000000000..d20057e74c --- /dev/null +++ b/hardware/printer/cups/files/pisilinux/statedir.patch @@ -0,0 +1,22 @@ +--- config-scripts/cups-network.m4~ 2014-01-18 14:05:51.353295869 +0100 ++++ config-scripts/cups-network.m4 2014-01-18 14:07:25.179962227 +0100 +@@ -45,7 +45,7 @@ if test x$enable_domainsocket != xno -a + case "$uname" in + Darwin*) + # Darwin and MaxOS X do their own thing... +- CUPS_DEFAULT_DOMAINSOCKET="$localstatedir/run/cupsd" ++ CUPS_DEFAULT_DOMAINSOCKET="/run/cupsd" + ;; + *) + # All others use FHS standard... +--- config-scripts/cups-directories.m4~ 2014-01-18 14:05:59.609962507 +0100 ++++ config-scripts/cups-directories.m4 2014-01-18 14:07:13.516628933 +0100 +@@ -420,7 +420,7 @@ AC_ARG_WITH(rundir, [ --with-rundir + ;; + *) + # All others +- CUPS_STATEDIR="$localstatedir/run/cups" ++ CUPS_STATEDIR="/run/cups" + ;; + esac]) + AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR") diff --git a/hardware/printer/cups/files/pld-linux/cups-avahi-address.patch b/hardware/printer/cups/files/pld-linux/cups-avahi-address.patch new file mode 100644 index 0000000000..1b40df957c --- /dev/null +++ b/hardware/printer/cups/files/pld-linux/cups-avahi-address.patch @@ -0,0 +1,95 @@ +diff -up cups-2.0rc1/cups/http-support.c.avahi-address cups-2.0rc1/cups/http-support.c +--- cups-2.0rc1/cups/http-support.c.avahi-address 2014-08-28 17:37:22.000000000 +0200 ++++ cups-2.0rc1/cups/http-support.c 2014-09-12 15:31:45.062950696 +0200 +@@ -2342,7 +2342,7 @@ http_resolve_cb( + const char *type, /* I - Registration type */ + const char *domain, /* I - Domain (unused) */ + const char *hostTarget, /* I - Hostname */ +- const AvahiAddress *address, /* I - Address (unused) */ ++ const AvahiAddress *address, /* I - Address */ + uint16_t port, /* I - Port number */ + AvahiStringList *txt, /* I - TXT record */ + AvahiLookupResultFlags flags, /* I - Lookup flags (unused) */ +@@ -2495,39 +2495,62 @@ http_resolve_cb( + * getting the IP address of the .local name and then do reverse-lookups... + */ + +- http_addrlist_t *addrlist, /* List of addresses */ +- *addr; /* Current address */ ++ http_addr_t addr; ++ size_t addrlen; ++ int error; + + DEBUG_printf(("8http_resolve_cb: Looking up \"%s\".", hostTarget)); + +- snprintf(fqdn, sizeof(fqdn), "%d", ntohs(port)); +- if ((addrlist = httpAddrGetList(hostTarget, AF_UNSPEC, fqdn)) != NULL) ++ switch (address->proto) + { +- for (addr = addrlist; addr; addr = addr->next) ++ case AVAHI_PROTO_INET: ++ addr.ipv4.sin_family = AF_INET; ++ addrlen = sizeof (addr.ipv4.sin_addr); ++ memcpy (&addr.ipv4.sin_addr, &address->data, addrlen); ++ break; ++ case AVAHI_PROTO_INET6: ++ addr.ipv6.sin6_family = AF_INET6; ++ addrlen = sizeof (addr.ipv6.sin6_addr); ++ memcpy (&addr.ipv6.sin6_addr, &address->data, addrlen); ++ break; ++ default: ++ DEBUG_printf(("8http_resolve_cb: unknown address family %d", ++ address->proto)); ++ addrlen = 0; ++ } ++ ++ if (addrlen > 0) { ++ error = getnameinfo(&addr.addr, httpAddrLength (&addr), ++ fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD); ++ ++ if (!error) + { +- int error = getnameinfo(&(addr->addr.addr), (socklen_t)httpAddrLength(&(addr->addr)), fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD); ++ DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn)); + +- if (!error) +- { +- DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn)); ++ if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn || ++ _cups_strcasecmp(hostptr, ".local")) + +- if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn || +- _cups_strcasecmp(hostptr, ".local")) +- { +- hostTarget = fqdn; +- break; +- } ++ { ++ hostTarget = fqdn; + } ++ } else { ++ avahi_address_snprint (fqdn, sizeof (fqdn), address); ++ hostTarget = fqdn; ++ + #ifdef DEBUG +- else +- DEBUG_printf(("8http_resolve_cb: \"%s\" did not resolve: %d", +- httpAddrString(&(addr->addr), fqdn, sizeof(fqdn)), +- error)); ++ DEBUG_printf(("8http_resolve_cb: \"%s\" did not resolve: %d", ++ fqdn, error)); + #endif /* DEBUG */ + } + +- httpAddrFreeList(addrlist); + } ++ } else { ++ /* ++ * Use the IP address that responded... ++ */ ++ ++ avahi_address_snprint (fqdn, sizeof (fqdn), address); ++ hostTarget = fqdn; + } + + /* diff --git a/hardware/printer/cups/files/pld-linux/cups-avahi-no-threaded.patch b/hardware/printer/cups/files/pld-linux/cups-avahi-no-threaded.patch new file mode 100644 index 0000000000..9dd6cc4171 --- /dev/null +++ b/hardware/printer/cups/files/pld-linux/cups-avahi-no-threaded.patch @@ -0,0 +1,1021 @@ +diff -up cups-2.0rc1/scheduler/avahi.c.avahi-no-threaded cups-2.0rc1/scheduler/avahi.c +--- cups-2.0rc1/scheduler/avahi.c.avahi-no-threaded 2014-09-12 15:45:28.772280006 +0200 ++++ cups-2.0rc1/scheduler/avahi.c 2014-09-12 15:45:28.772280006 +0200 +@@ -0,0 +1,441 @@ ++/* ++ * "$Id$" ++ * ++ * Avahi poll implementation for the CUPS scheduler. ++ * ++ * Copyright (C) 2010, 2011 Red Hat, Inc. ++ * Authors: ++ * Tim Waugh ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ++ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, ++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED ++ * OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ * Contents: ++ * ++ * watch_read_cb - Read callback for file descriptor ++ * watch_write_cb - Write callback for file descriptor ++ * watched_fd_add_select() - Call cupsdAddSelect() as needed ++ * watch_new() - Create a new file descriptor watch ++ * watch_free() - Free a file descriptor watch ++ * watch_update() - Update watched events for a file descriptor ++ * watch_get_events() - Get events that happened for a file descriptor ++ * timeout_cb() - Run a timed Avahi callback ++ * timeout_new() - Set a wakeup time ++ * timeout_update() - Update the expiration time for a timeout ++ * timeout_free() - Free a timeout ++ * compare_watched_fds() - Compare watched file descriptors for array sorting ++ * avahi_cups_poll_new() - Create a new Avahi main loop object for CUPS ++ * avahi_cups_poll_free() - Free an Avahi main loop object for CUPS ++ * avahi_cups_poll_get() - Get the abstract poll API structure ++ */ ++ ++#include ++ ++#ifdef HAVE_AVAHI /* Applies to entire file... */ ++ ++/* ++ * Include necessary headers... ++ */ ++ ++#include "cupsd.h" ++ ++#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) ++# include ++#endif /* HAVE_MALLOC_H && HAVE_MALLINFO */ ++ ++#ifdef HAVE_AVAHI ++# include ++#endif /* HAVE_AVAHI */ ++ ++ ++typedef struct ++{ ++ AvahiCupsPoll *cups_poll; ++ ++ int fd; ++ AvahiWatchEvent occurred; ++ cups_array_t *watches; ++} cupsd_watched_fd_t; ++ ++struct AvahiWatch ++{ ++ cupsd_watched_fd_t *watched_fd; ++ ++ AvahiWatchEvent events; ++ AvahiWatchCallback callback; ++ void *userdata; ++}; ++ ++struct AvahiTimeout ++{ ++ AvahiCupsPoll *cups_poll; ++ AvahiTimeoutCallback callback; ++ void *userdata; ++ cupsd_timeout_t *cupsd_timeout; ++}; ++ ++/* ++ * Local functions... ++ */ ++ ++static AvahiWatch * watch_new(const AvahiPoll *api, ++ int fd, ++ AvahiWatchEvent events, ++ AvahiWatchCallback callback, ++ void *userdata); ++static void watch_free(AvahiWatch *watch); ++static void watch_update(AvahiWatch *watch, ++ AvahiWatchEvent events); ++static AvahiWatchEvent watch_get_events(AvahiWatch *watch); ++ ++ ++/* ++ * 'watch_read_cb' - Read callback for file descriptor ++ */ ++ ++static void ++watch_read_cb (void *userdata) ++{ ++ AvahiWatch *watch; ++ cupsd_watched_fd_t *watched_fd = userdata; ++ watched_fd->occurred |= AVAHI_WATCH_IN; ++ for (watch = (AvahiWatch *)cupsArrayFirst(watched_fd->watches); ++ watch; ++ watch = (AvahiWatch *)cupsArrayNext(watched_fd->watches)) ++ { ++ if (watch->events & watched_fd->occurred) ++ { ++ (watch->callback) (watch, watched_fd->fd, ++ AVAHI_WATCH_IN, watch->userdata); ++ watched_fd->occurred &= ~AVAHI_WATCH_IN; ++ break; ++ } ++ } ++} ++ ++ ++/* ++ * 'watch_write_cb' - Write callback for file descriptor ++ */ ++ ++static void ++watch_write_cb (void *userdata) ++{ ++ AvahiWatch *watch; ++ cupsd_watched_fd_t *watched_fd = userdata; ++ watched_fd->occurred |= AVAHI_WATCH_OUT; ++ for (watch = (AvahiWatch *)cupsArrayFirst(watched_fd->watches); ++ watch; ++ watch = (AvahiWatch *)cupsArrayNext(watched_fd->watches)) ++ { ++ if (watch->events & watched_fd->occurred) ++ { ++ (watch->callback) (watch, watched_fd->fd, ++ AVAHI_WATCH_OUT, watch->userdata); ++ watched_fd->occurred &= ~AVAHI_WATCH_OUT; ++ break; ++ } ++ } ++} ++ ++ ++/* ++ * 'watched_fd_add_select' - Call cupsdAddSelect() as needed ++ */ ++ ++static int /* O - Watches? */ ++watched_fd_add_select (cupsd_watched_fd_t *watched_fd) ++{ ++ AvahiWatch *watch; ++ cupsd_selfunc_t read_cb = NULL, write_cb = NULL; ++ int any_watches = 0; ++ ++ for (watch = (AvahiWatch *)cupsArrayFirst(watched_fd->watches); ++ watch; ++ watch = (AvahiWatch *)cupsArrayNext(watched_fd->watches)) ++ { ++ any_watches = 1; ++ if (watch->events & (AVAHI_WATCH_IN | ++ AVAHI_WATCH_ERR | ++ AVAHI_WATCH_HUP)) ++ { ++ read_cb = (cupsd_selfunc_t)watch_read_cb; ++ if (write_cb != NULL) ++ break; ++ } ++ ++ if (watch->events & AVAHI_WATCH_OUT) ++ { ++ write_cb = (cupsd_selfunc_t)watch_write_cb; ++ if (read_cb != NULL) ++ break; ++ } ++ } ++ ++ if (read_cb || write_cb) ++ cupsdAddSelect (watched_fd->fd, read_cb, write_cb, watched_fd); ++ else ++ cupsdRemoveSelect (watched_fd->fd); ++ ++ return (any_watches); ++} ++ ++/* ++ * 'watch_new' - Create a new file descriptor watch ++ */ ++ ++static AvahiWatch * ++watch_new (const AvahiPoll *api, ++ int fd, ++ AvahiWatchEvent events, ++ AvahiWatchCallback callback, ++ void *userdata) ++{ ++ cupsd_watched_fd_t key, *watched_fd; ++ AvahiCupsPoll *cups_poll = api->userdata; ++ AvahiWatch *watch = malloc(sizeof(AvahiWatch)); ++ if (watch == NULL) ++ return (NULL); ++ ++ watch->events = events; ++ watch->callback = callback; ++ watch->userdata = userdata; ++ ++ key.fd = fd; ++ watched_fd = cupsArrayFind (cups_poll->watched_fds, &key); ++ if (watched_fd == NULL) ++ { ++ watched_fd = malloc(sizeof(cupsd_watched_fd_t)); ++ if (watched_fd == NULL) ++ { ++ free (watch); ++ return (NULL); ++ } ++ ++ watched_fd->fd = fd; ++ watched_fd->occurred = 0; ++ watched_fd->cups_poll = cups_poll; ++ watched_fd->watches = cupsArrayNew (NULL, NULL); ++ cupsArrayAdd (cups_poll->watched_fds, watched_fd); ++ } ++ ++ watch->watched_fd = watched_fd; ++ cupsArrayAdd(watched_fd->watches, watch); ++ watched_fd_add_select (watched_fd); ++ return (watch); ++} ++ ++ ++/* ++ * 'watch_free' - Free a file descriptor watch ++ */ ++ ++static void ++watch_free (AvahiWatch *watch) ++{ ++ cupsd_watched_fd_t *watched_fd = watch->watched_fd; ++ AvahiCupsPoll *cups_poll = watched_fd->cups_poll; ++ ++ cupsArrayRemove (watched_fd->watches, watch); ++ free (watch); ++ ++ if (!watched_fd_add_select (watched_fd)) ++ { ++ /* No more watches */ ++ cupsArrayRemove (cups_poll->watched_fds, watched_fd); ++ free (watched_fd); ++ } ++} ++ ++ ++/* ++ * 'watch_update' - Update watched events for a file descriptor ++ */ ++ ++static void ++watch_update (AvahiWatch *watch, ++ AvahiWatchEvent events) ++{ ++ watch->events = events; ++ watched_fd_add_select (watch->watched_fd); ++} ++ ++ ++/* ++ * 'watch_get_events' - Get events that happened for a file descriptor ++ */ ++ ++static AvahiWatchEvent ++watch_get_events (AvahiWatch *watch) ++{ ++ return (watch->watched_fd->occurred); ++} ++ ++ ++/* ++ * 'timeout_cb()' - Run a timed Avahi callback ++ */ ++ ++static void ++timeout_cb (cupsd_timeout_t *cupsd_timeout, void *userdata) ++{ ++ AvahiTimeout *timeout = userdata; ++ (timeout->callback) (timeout, timeout->userdata); ++} ++ ++ ++/* ++ * 'timeout_new' - Set a wakeup time ++ */ ++ ++static AvahiTimeout * ++timeout_new (const AvahiPoll *api, ++ const struct timeval *tv, ++ AvahiTimeoutCallback callback, ++ void *userdata) ++{ ++ AvahiTimeout *timeout; ++ AvahiCupsPoll *cups_poll = api->userdata; ++ ++ timeout = malloc(sizeof(AvahiTimeout)); ++ if (timeout == NULL) ++ return (NULL); ++ ++ timeout->cups_poll = cups_poll; ++ timeout->callback = callback; ++ timeout->userdata = userdata; ++ timeout->cupsd_timeout = cupsdAddTimeout (tv, ++ (cupsd_timeoutfunc_t)timeout_cb, ++ timeout); ++ cupsArrayAdd (cups_poll->timeouts, timeout); ++ return (timeout); ++} ++ ++ ++/* ++ * 'timeout_update' - Update the expiration time for a timeout ++ */ ++ ++static void ++timeout_update (AvahiTimeout *timeout, ++ const struct timeval *tv) ++{ ++ cupsdUpdateTimeout (timeout->cupsd_timeout, tv); ++} ++ ++ ++/* ++ * ' timeout_free' - Free a timeout ++ */ ++ ++static void ++timeout_free (AvahiTimeout *timeout) ++{ ++ cupsArrayRemove (timeout->cups_poll->timeouts, timeout); ++ cupsdRemoveTimeout (timeout->cupsd_timeout); ++ free (timeout); ++} ++ ++ ++/* ++ * 'compare_watched_fds' - Compare watched file descriptors for array sorting ++ */ ++static int ++compare_watched_fds(cupsd_watched_fd_t *p0, ++ cupsd_watched_fd_t *p1) ++{ ++ /* ++ * Compare by fd (no two elements have the same fd) ++ */ ++ ++ if (p0->fd == p1->fd) ++ return 0; ++ ++ return (p0->fd < p1->fd ? -1 : 1); ++} ++ ++ ++/* ++ * 'avahi_cups_poll_new' - Create a new Avahi main loop object for CUPS ++ */ ++ ++AvahiCupsPoll * ++avahi_cups_poll_new (void) ++{ ++ AvahiCupsPoll *cups_poll = malloc(sizeof(AvahiCupsPoll)); ++ if (cups_poll == NULL) ++ return (NULL); ++ ++ cups_poll->watched_fds = cupsArrayNew ((cups_array_func_t)compare_watched_fds, ++ NULL); ++ cups_poll->timeouts = cupsArrayNew (NULL, NULL); ++ ++ cups_poll->api.userdata = cups_poll; ++ cups_poll->api.watch_new = watch_new; ++ cups_poll->api.watch_free = watch_free; ++ cups_poll->api.watch_update = watch_update; ++ cups_poll->api.watch_get_events = watch_get_events; ++ ++ cups_poll->api.timeout_new = timeout_new; ++ cups_poll->api.timeout_update = timeout_update; ++ cups_poll->api.timeout_free = timeout_free; ++ ++ return (cups_poll); ++} ++ ++ ++/* ++ * 'avahi_cups_poll_free' - Free an Avahi main loop object for CUPS ++ */ ++void ++avahi_cups_poll_free (AvahiCupsPoll *cups_poll) ++{ ++ cupsd_watched_fd_t *watched_fd; ++ ++ for (watched_fd = (cupsd_watched_fd_t*)cupsArrayFirst(cups_poll->watched_fds); ++ watched_fd; ++ watched_fd = (cupsd_watched_fd_t*)cupsArrayNext(cups_poll->watched_fds)) ++ cupsArrayClear (watched_fd->watches); ++ ++ cupsArrayClear (cups_poll->watched_fds); ++ cupsArrayClear (cups_poll->timeouts); ++} ++ ++ ++/* ++ * 'avahi_cups_poll_get' - Get the abstract poll API structure ++ */ ++ ++const AvahiPoll * ++avahi_cups_poll_get (AvahiCupsPoll *cups_poll) ++{ ++ return (&cups_poll->api); ++} ++ ++ ++#endif /* HAVE_AVAHI ... from top of file */ ++ ++/* ++ * End of "$Id$". ++ */ +diff -up cups-2.0rc1/scheduler/avahi.h.avahi-no-threaded cups-2.0rc1/scheduler/avahi.h +--- cups-2.0rc1/scheduler/avahi.h.avahi-no-threaded 2014-09-12 15:45:28.772280006 +0200 ++++ cups-2.0rc1/scheduler/avahi.h 2014-09-12 15:45:28.772280006 +0200 +@@ -0,0 +1,69 @@ ++/* ++ * "$Id$" ++ * ++ * Avahi poll implementation for the CUPS scheduler. ++ * ++ * Copyright (C) 2010, 2011 Red Hat, Inc. ++ * Authors: ++ * Tim Waugh ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ++ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, ++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED ++ * OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#include ++ ++#ifdef HAVE_AVAHI ++# include ++# include ++#endif /* HAVE_AVAHI */ ++ ++#ifdef HAVE_AUTHORIZATION_H ++# include ++#endif /* HAVE_AUTHORIZATION_H */ ++ ++ ++#ifdef HAVE_AVAHI ++typedef struct ++{ ++ AvahiPoll api; ++ cups_array_t *watched_fds; ++ cups_array_t *timeouts; ++} AvahiCupsPoll; ++#endif /* HAVE_AVAHI */ ++ ++/* ++ * Prototypes... ++ */ ++ ++#ifdef HAVE_AVAHI ++extern AvahiCupsPoll * avahi_cups_poll_new(void); ++extern void avahi_cups_poll_free(AvahiCupsPoll *cups_poll); ++extern const AvahiPoll *avahi_cups_poll_get(AvahiCupsPoll *cups_poll); ++#endif /* HAVE_AVAHI */ ++ ++ ++/* ++ * End of "$Id$". ++ */ +diff -up cups-2.0rc1/scheduler/cupsd.h.avahi-no-threaded cups-2.0rc1/scheduler/cupsd.h +--- cups-2.0rc1/scheduler/cupsd.h.avahi-no-threaded 2014-03-21 17:42:53.000000000 +0100 ++++ cups-2.0rc1/scheduler/cupsd.h 2014-09-12 15:47:02.886945551 +0200 +@@ -119,6 +119,7 @@ extern const char *cups_hstrerror(int); + #include "colorman.h" + #include "conf.h" + #include "banners.h" ++#include "avahi.h" + #include "dirsvc.h" + #include "network.h" + #include "subscriptions.h" +@@ -139,6 +140,15 @@ extern const char *cups_hstrerror(int); + + typedef void (*cupsd_selfunc_t)(void *data); + ++#ifdef HAVE_AVAHI ++/* ++ * Timeout callback function type... ++ */ ++ ++typedef struct _cupsd_timeout_s cupsd_timeout_t; ++typedef void (*cupsd_timeoutfunc_t)(cupsd_timeout_t *timeout, void *data); ++#endif /* HAVE_AVAHI */ ++ + + /* + * Globals... +@@ -163,6 +173,10 @@ VAR int OnDemand VALUE(0); + /* Launched on demand */ + #endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */ + ++#ifdef HAVE_AVAHI ++VAR cups_array_t *Timeouts; /* Timed callbacks for main loop */ ++#endif /* HAVE_AVAHI */ ++ + + /* + * Prototypes... +@@ -226,6 +240,17 @@ extern void cupsdStopSelect(void); + extern void cupsdStartServer(void); + extern void cupsdStopServer(void); + ++#ifdef HAVE_AVAHI ++extern void cupsdInitTimeouts(void); ++extern cupsd_timeout_t *cupsdAddTimeout (const struct timeval *tv, ++ cupsd_timeoutfunc_t cb, ++ void *data); ++extern cupsd_timeout_t *cupsdNextTimeout (long *delay); ++extern void cupsdRunTimeout (cupsd_timeout_t *timeout); ++extern void cupsdUpdateTimeout (cupsd_timeout_t *timeout, ++ const struct timeval *tv); ++extern void cupsdRemoveTimeout (cupsd_timeout_t *timeout); ++#endif /* HAVE_AVAHI */ + + /* + * End of "$Id: cupsd.h 11717 2014-03-21 16:42:53Z msweet $". +diff -up cups-2.0rc1/scheduler/dirsvc.c.avahi-no-threaded cups-2.0rc1/scheduler/dirsvc.c +--- cups-2.0rc1/scheduler/dirsvc.c.avahi-no-threaded 2014-05-09 22:57:11.000000000 +0200 ++++ cups-2.0rc1/scheduler/dirsvc.c 2014-09-12 15:45:28.773279992 +0200 +@@ -195,7 +195,7 @@ cupsdStartBrowsing(void) + cupsdUpdateDNSSDName(); + + # else /* HAVE_AVAHI */ +- if ((DNSSDMaster = avahi_threaded_poll_new()) == NULL) ++ if ((DNSSDMaster = avahi_cups_poll_new()) == NULL) + { + cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to create DNS-SD thread."); + +@@ -206,7 +206,7 @@ cupsdStartBrowsing(void) + { + int error; /* Error code, if any */ + +- DNSSDClient = avahi_client_new(avahi_threaded_poll_get(DNSSDMaster), AVAHI_CLIENT_NO_FAIL, dnssdClientCallback, NULL, &error); ++ DNSSDClient = avahi_client_new(avahi_cups_poll_get(DNSSDMaster), AVAHI_CLIENT_NO_FAIL, dnssdClientCallback, NULL, &error); + + if (DNSSDClient == NULL) + { +@@ -217,11 +217,9 @@ cupsdStartBrowsing(void) + if (FatalErrors & CUPSD_FATAL_BROWSE) + cupsdEndProcess(getpid(), 0); + +- avahi_threaded_poll_free(DNSSDMaster); ++ avahi_cups_poll_free(DNSSDMaster); + DNSSDMaster = NULL; + } +- else +- avahi_threaded_poll_start(DNSSDMaster); + } + # endif /* HAVE_DNSSD */ + } +@@ -608,7 +606,7 @@ dnssdClientCallback( + * Renew Avahi client... + */ + +- DNSSDClient = avahi_client_new(avahi_threaded_poll_get(DNSSDMaster), AVAHI_CLIENT_NO_FAIL, dnssdClientCallback, NULL, &error); ++ DNSSDClient = avahi_client_new(avahi_cups_poll_get(DNSSDMaster), AVAHI_CLIENT_NO_FAIL, dnssdClientCallback, NULL, &error); + + if (!DNSSDClient) + { +@@ -672,13 +670,7 @@ dnssdDeregisterInstance( + DNSServiceRefDeallocate(*srv); + + # else /* HAVE_AVAHI */ +- if (!from_callback) +- avahi_threaded_poll_lock(DNSSDMaster); +- + avahi_entry_group_free(*srv); +- +- if (!from_callback) +- avahi_threaded_poll_unlock(DNSSDMaster); + # endif /* HAVE_DNSSD */ + + *srv = NULL; +@@ -999,16 +991,10 @@ dnssdRegisterInstance( + (void)commit; + + # else /* HAVE_AVAHI */ +- if (!from_callback) +- avahi_threaded_poll_lock(DNSSDMaster); +- + if (!*srv) + *srv = avahi_entry_group_new(DNSSDClient, dnssdRegisterCallback, NULL); + if (!*srv) + { +- if (!from_callback) +- avahi_threaded_poll_unlock(DNSSDMaster); +- + cupsdLogMessage(CUPSD_LOG_WARN, "DNS-SD registration of \"%s\" failed: %s", + name, dnssdErrorString(avahi_client_errno(DNSSDClient))); + return (0); +@@ -1123,9 +1109,6 @@ dnssdRegisterInstance( + cupsdLogMessage(CUPSD_LOG_DEBUG, "DNS-SD commit of \"%s\" failed.", + name); + } +- +- if (!from_callback) +- avahi_threaded_poll_unlock(DNSSDMaster); + # endif /* HAVE_DNSSD */ + + if (error) +@@ -1296,12 +1279,10 @@ dnssdStop(void) + DNSSDMaster = NULL; + + # else /* HAVE_AVAHI */ +- avahi_threaded_poll_stop(DNSSDMaster); +- + avahi_client_free(DNSSDClient); + DNSSDClient = NULL; + +- avahi_threaded_poll_free(DNSSDMaster); ++ avahi_cups_poll_free(DNSSDMaster); + DNSSDMaster = NULL; + # endif /* HAVE_DNSSD */ + +diff -up cups-2.0rc1/scheduler/dirsvc.h.avahi-no-threaded cups-2.0rc1/scheduler/dirsvc.h +--- cups-2.0rc1/scheduler/dirsvc.h.avahi-no-threaded 2013-05-29 13:51:34.000000000 +0200 ++++ cups-2.0rc1/scheduler/dirsvc.h 2014-09-12 15:45:28.773279992 +0200 +@@ -51,7 +51,7 @@ VAR cups_array_t *DNSSDPrinters VALUE(NU + VAR DNSServiceRef DNSSDMaster VALUE(NULL); + /* Master DNS-SD service reference */ + # else /* HAVE_AVAHI */ +-VAR AvahiThreadedPoll *DNSSDMaster VALUE(NULL); ++VAR AvahiCupsPoll *DNSSDMaster VALUE(NULL); + /* Master polling interface for Avahi */ + VAR AvahiClient *DNSSDClient VALUE(NULL); + /* Client information */ +diff -up cups-2.0rc1/scheduler/main.c.avahi-no-threaded cups-2.0rc1/scheduler/main.c +--- cups-2.0rc1/scheduler/main.c.avahi-no-threaded 2014-09-12 15:45:28.736280516 +0200 ++++ cups-2.0rc1/scheduler/main.c 2014-09-12 15:47:43.433370643 +0200 +@@ -127,6 +127,10 @@ main(int argc, /* I - Number of comm + int service_idle_exit; + /* Idle exit on select timeout? */ + #endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */ ++#ifdef HAVE_AVAHI ++ cupsd_timeout_t *tmo; /* Next scheduled timed callback */ ++ long tmo_delay; /* Time before it must be called */ ++#endif /* HAVE_AVAHI */ + + + #ifdef HAVE_GETEUID +@@ -569,6 +573,14 @@ main(int argc, /* I - Number of comm + + httpInitialize(); + ++#ifdef HAVE_AVAHI ++ /* ++ * Initialize timed callback structures. ++ */ ++ ++ cupsdInitTimeouts(); ++#endif /* HAVE_AVAHI */ ++ + cupsdStartServer(); + + /* +@@ -871,6 +883,16 @@ main(int argc, /* I - Number of comm + } + #endif /* __APPLE__ */ + ++#ifdef HAVE_AVAHI ++ /* ++ * If a timed callback is due, run it. ++ */ ++ ++ tmo = cupsdNextTimeout (&tmo_delay); ++ if (tmo && tmo_delay == 0) ++ cupsdRunTimeout (tmo); ++#endif /* HAVE_AVAHI */ ++ + #ifndef __APPLE__ + /* + * Update the network interfaces once a minute... +@@ -1562,6 +1584,10 @@ select_timeout(int fds) /* I - Number + cupsd_job_t *job; /* Job information */ + cupsd_subscription_t *sub; /* Subscription information */ + const char *why; /* Debugging aid */ ++#ifdef HAVE_AVAHI ++ cupsd_timeout_t *tmo; /* Timed callback */ ++ long tmo_delay; /* Seconds before calling it */ ++#endif /* HAVE_AVAHI */ + + + cupsdLogMessage(CUPSD_LOG_DEBUG2, "select_timeout: JobHistoryUpdate=%ld", +@@ -1607,6 +1633,19 @@ select_timeout(int fds) /* I - Number + } + #endif /* __APPLE__ */ + ++#ifdef HAVE_AVAHI ++ /* ++ * See if there are any scheduled timed callbacks to run. ++ */ ++ ++ if ((tmo = cupsdNextTimeout(&tmo_delay)) != NULL && ++ (now + tmo_delay) < timeout) ++ { ++ timeout = tmo_delay; ++ why = "run a timed callback"; ++ } ++#endif /* HAVE_AVAHI */ ++ + /* + * Check whether we are accepting new connections... + */ +diff -up cups-2.0rc1/scheduler/Makefile.avahi-no-threaded cups-2.0rc1/scheduler/Makefile +--- cups-2.0rc1/scheduler/Makefile.avahi-no-threaded 2014-08-29 13:27:18.000000000 +0200 ++++ cups-2.0rc1/scheduler/Makefile 2014-09-12 15:48:35.367634265 +0200 +@@ -17,6 +17,7 @@ include ../Makedefs + + CUPSDOBJS = \ + auth.o \ ++ avahi.o \ + banners.o \ + cert.o \ + classes.o \ +@@ -40,7 +41,8 @@ CUPSDOBJS = \ + server.o \ + statbuf.o \ + subscriptions.o \ +- sysman.o ++ sysman.o \ ++ timeout.o + LIBOBJS = \ + filter.o \ + mime.o \ +diff -up cups-2.0rc1/scheduler/timeout.c.avahi-no-threaded cups-2.0rc1/scheduler/timeout.c +--- cups-2.0rc1/scheduler/timeout.c.avahi-no-threaded 2014-09-12 15:45:28.775279963 +0200 ++++ cups-2.0rc1/scheduler/timeout.c 2014-09-12 15:45:28.775279963 +0200 +@@ -0,0 +1,235 @@ ++/* ++ * "$Id$" ++ * ++ * Timeout functions for the Common UNIX Printing System (CUPS). ++ * ++ * Copyright (C) 2010, 2011 Red Hat, Inc. ++ * Authors: ++ * Tim Waugh ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * ++ * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * ++ * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS ++ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE ++ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, ++ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ++ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ++ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED ++ * OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ * Contents: ++ * ++ * cupsdInitTimeouts() - Initialise timeout structure. ++ * cupsdAddTimeout() - Add a timed callback. ++ * cupsdNextTimeout() - Find the next enabled timed callback. ++ * cupsdUpdateTimeout() - Adjust the time of a timed callback or disable it. ++ * cupsdRemoveTimeout() - Discard a timed callback. ++ * compare_timeouts() - Compare timed callbacks for array sorting. ++ */ ++ ++#include ++ ++#ifdef HAVE_AVAHI /* Applies to entire file... */ ++ ++/* ++ * Include necessary headers... ++ */ ++ ++#include "cupsd.h" ++ ++#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) ++# include ++#endif /* HAVE_MALLOC_H && HAVE_MALLINFO */ ++ ++#ifdef HAVE_AVAHI ++# include ++#endif /* HAVE_AVAHI */ ++ ++ ++struct _cupsd_timeout_s ++{ ++ struct timeval when; ++ int enabled; ++ cupsd_timeoutfunc_t callback; ++ void *data; ++}; ++ ++/* ++ * Local functions... ++ */ ++ ++/* ++ * 'compare_timeouts()' - Compare timed callbacks for array sorting. ++ */ ++ ++static int ++compare_addrs (void *p0, void *p1) ++{ ++ if (p0 == p1) ++ return (0); ++ if (p0 < p1) ++ return (-1); ++ return (1); ++} ++ ++static int ++compare_timeouts (cupsd_timeout_t *p0, cupsd_timeout_t *p1) ++{ ++ int addrsdiff = compare_addrs (p0, p1); ++ int tvdiff; ++ ++ if (addrsdiff == 0) ++ return (0); ++ ++ if (!p0->enabled || !p1->enabled) ++ { ++ if (!p0->enabled && !p1->enabled) ++ return (addrsdiff); ++ ++ return (p0->enabled ? -1 : 1); ++ } ++ ++ tvdiff = avahi_timeval_compare (&p0->when, &p1->when); ++ if (tvdiff != 0) ++ return (tvdiff); ++ ++ return (addrsdiff); ++} ++ ++ ++/* ++ * 'cupsdInitTimeouts()' - Initialise timeout structures. ++ */ ++ ++void ++cupsdInitTimeouts(void) ++{ ++ Timeouts = cupsArrayNew ((cups_array_func_t)compare_timeouts, NULL); ++} ++ ++ ++/* ++ * 'cupsdAddTimeout()' - Add a timed callback. ++ */ ++ ++cupsd_timeout_t * /* O - Timeout handle */ ++cupsdAddTimeout(const struct timeval *tv, /* I - Absolute time */ ++ cupsd_timeoutfunc_t cb, /* I - Callback function */ ++ void *data) /* I - User data */ ++{ ++ cupsd_timeout_t *timeout; ++ ++ timeout = malloc (sizeof(cupsd_timeout_t)); ++ if (timeout != NULL) ++ { ++ timeout->enabled = (tv != NULL); ++ if (tv) ++ { ++ timeout->when.tv_sec = tv->tv_sec; ++ timeout->when.tv_usec = tv->tv_usec; ++ } ++ ++ timeout->callback = cb; ++ timeout->data = data; ++ cupsArrayAdd (Timeouts, timeout); ++ } ++ ++ return timeout; ++} ++ ++ ++/* ++ * 'cupsdNextTimeout()' - Find the next enabled timed callback. ++ */ ++ ++cupsd_timeout_t * /* O - Next enabled timeout or NULL */ ++cupsdNextTimeout(long *delay) /* O - Seconds before scheduled */ ++{ ++ cupsd_timeout_t *first = cupsArrayFirst (Timeouts); ++ struct timeval curtime; ++ ++ if (first && !first->enabled) ++ first = NULL; ++ ++ if (first && delay) ++ { ++ gettimeofday (&curtime, NULL); ++ if (avahi_timeval_compare (&curtime, &first->when) > 0) ++ { ++ *delay = 0; ++ } else { ++ *delay = 1 + first->when.tv_sec - curtime.tv_sec; ++ if (first->when.tv_usec < curtime.tv_usec) ++ (*delay)--; ++ } ++ } ++ ++ return (first); ++} ++ ++ ++/* ++ * 'cupsdRunTimeout()' - Run a timed callback. ++ */ ++ ++void ++cupsdRunTimeout(cupsd_timeout_t *timeout) /* I - Timeout */ ++{ ++ if (!timeout) ++ return; ++ timeout->enabled = 0; ++ if (!timeout->callback) ++ return; ++ timeout->callback (timeout, timeout->data); ++} ++ ++/* ++ * 'cupsdUpdateTimeout()' - Adjust the time of a timed callback or disable it. ++ */ ++ ++void ++cupsdUpdateTimeout(cupsd_timeout_t *timeout, /* I - Timeout */ ++ const struct timeval *tv) /* I - Absolute time or NULL */ ++{ ++ cupsArrayRemove (Timeouts, timeout); ++ timeout->enabled = (tv != NULL); ++ if (tv) ++ { ++ timeout->when.tv_sec = tv->tv_sec; ++ timeout->when.tv_usec = tv->tv_usec; ++ } ++ cupsArrayAdd (Timeouts, timeout); ++} ++ ++ ++/* ++ * 'cupsdRemoveTimeout()' - Discard a timed callback. ++ */ ++ ++void ++cupsdRemoveTimeout(cupsd_timeout_t *timeout) /* I - Timeout */ ++{ ++ cupsArrayRemove (Timeouts, timeout); ++ free (timeout); ++} ++ ++ ++#endif /* HAVE_AVAHI ... from top of file */ ++ ++/* ++ * End of "$Id$". ++ */ diff --git a/hardware/printer/cups/files/tmpfiles.conf b/hardware/printer/cups/files/tmpfiles.conf new file mode 100644 index 0000000000..c9291d84c2 --- /dev/null +++ b/hardware/printer/cups/files/tmpfiles.conf @@ -0,0 +1,2 @@ +d /run/cups 0755 root lp +d /run/cups/certs 0755 lp lpadmin diff --git a/hardware/printer/cups/pspec.xml b/hardware/printer/cups/pspec.xml new file mode 100644 index 0000000000..c1e11be0c2 --- /dev/null +++ b/hardware/printer/cups/pspec.xml @@ -0,0 +1,244 @@ + + + + + cups + http://www.cups.org/ + + Pisi Linux Admins + admins@pisilinux.org + + GPLv2 + service + Common Unix Printing System + cups provides a portable printing layer for *nix-based operating systems. + http://www.cups.org/software/2.0.3/cups-2.0.3-source.tar.bz2 + + + acl-devel + pam-devel + dbus-devel + zlib-devel + libusb-devel + libgcc + avahi-devel + cups-filters + mit-kerberos + libpaper-devel + + + + archlinux/cups-no-export-ssllibs.patch + archlinux/cups-no-gzip-man.patch + archlinux/cups-1.6.2-statedir.patch + archlinux/cups-no-gcrypt.patch + + + + + + fedora/cups-enum-all.patch + fedora/cups-final-content-type.patch + fedora/cups-res_init.patch + + + gentoo/cups-1.6.0-fix-install-perms.patch + gentoo/cups-2.0.1-rename-systemd-service-files.patch + + + + pisilinux/lib64.patch + pisilinux/nostrip.patch + pisilinux/cups-run.patch + + + pld-linux/cups-avahi-address.patch + + + + + + + cups + + acl + pam + dbus + zlib + libusb + libgcc + libpaper + avahi-libs + mit-kerberos + + + /etc/cups/*conf + /usr/lib/tmpfiles.d/cups.conf + /usr/lib + /usr/sbin + /usr/bin + /var/cache/cups/rss + /var/spool/cups/tmp + /run/cups/certs + /var/log/cups + /etc + /lib/udev/rules.d + /lib/systemd/system + /usr/share/cups + /usr/share/icons + /usr/share/applications + /usr/share/doc + /usr/share/man + /usr/share/locale + + + tmpfiles.conf + + + cups.logrotate + + + fedora/textonly.ppd + + + System.Service + System.Package + + + + + cups-devel + Development files for cups + + cups + + + /usr/include + /usr/bin/cups-config + + + + + cups-32bit + emul32 + 32-bit shared libraries for cups + emul32 + + glibc-32bit + zlib-32bit + openssl-32bit + + + glibc-32bit + zlib-32bit + openssl-32bit + cups + + + /usr/bin/cups-config-32bit + /usr/lib32 + + + + + + 2015-06-10 + 2.0.3 + Version bump. + Ertuğrul Erata + ertugrulerata@gmail.com + + + 2014-02-05 + 2.0.1 + Version bump. + Vedat Demir + vedat@pisilinux.org + + + 2014-09-25 + 1.7.5 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-20 + 1.7.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-30 + 1.7.1 + Fix comar service. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-18 + 1.7.1 + Add tmpfiles.conf. Rebuild. + Marcin Bojara + marcin@pisilinux.org + + + 2014-01-17 + 1.7.1 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-11-1 + 1.7.0 + Version bump. + Kamil Atlı + suvarice@gmail.com + + + 2013-10-14 + 1.6.4 + Version bump. + Yusuf Aydemir + yusuf.aydemir@pisilinux.org + + + 2013-07-13 + 1.6.3 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-05-19 + 1.6.1 + Lib64 path correction. + Ertan Güven + ertan@pisilinux.org + + + 2013-03-13 + 1.6.1 + Version bump + Ertan Güven + ertan@pisilinux.org + + + 2012-10-18 + 1.5.4 + Fixed + Osman Erkan + osman.erkan@pisilinux.org + + + 2012-10-18 + 1.5.4 + First release + Erdinç Gültekin + admins@pisilinux.org + + + diff --git a/hardware/printer/cups/translations.xml b/hardware/printer/cups/translations.xml new file mode 100644 index 0000000000..dded592445 --- /dev/null +++ b/hardware/printer/cups/translations.xml @@ -0,0 +1,22 @@ + + + + cups + Unix Ortak Yazdırma Sistemi + + + + cups-php + PHP için CUPS programlama kitaplığı + + + + cups-devel + cups için geliştirme dosyaları + + + + cups-32bit + cups için 32-bit paylaşımlı kitaplıklar + + diff --git a/hardware/sound/alsa-lib/actions.py b/hardware/sound/alsa-lib/actions.py new file mode 100644 index 0000000000..f960849d80 --- /dev/null +++ b/hardware/sound/alsa-lib/actions.py @@ -0,0 +1,36 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# Licensed under the GNU General Public License, version 3. +# See the file http://www.gnu.org/licenses/gpl.txt + +from pisi.actionsapi import autotools +from pisi.actionsapi import pisitools +from pisi.actionsapi import get +from pisi.actionsapi import shelltools + +def setup(): + options = "--disable-aload" + + if get.buildTYPE() == "emul32": + options += " --disable-python" + shelltools.export("CFLAGS", "%s -m32" % get.CFLAGS()) + + autotools.autoreconf("-fi") + + autotools.configure(options) + pisitools.dosed("libtool", " -shared ", " -Wl,--as-needed -shared ") + + # rpath fix + pisitools.dosed("libtool", "^hardcode_libdir_flag_spec=.*", "hardcode_libdir_flag_spec=\"\"") + pisitools.dosed("libtool", "^runpath_var=LD_RUN_PATH", "runpath_var=DIE_RPATH_DIE") + +def build(): + autotools.make() + +def install(): + autotools.rawInstall("DESTDIR=%s" % get.installDIR()) + + if get.buildTYPE() == "emul32": return + + pisitools.dodoc("ChangeLog", "TODO", "COPYING", "doc/*.txt") diff --git a/hardware/sound/alsa-lib/pspec.xml b/hardware/sound/alsa-lib/pspec.xml new file mode 100644 index 0000000000..28610c93fa --- /dev/null +++ b/hardware/sound/alsa-lib/pspec.xml @@ -0,0 +1,116 @@ + + + + + alsa-lib + http://www.alsa-project.org/ + + PisiLinux Community + admins@pisilinux.org + + GPLv2 + library + app:console + The Advanced Linux Sound Architecture (ALSA) library + alsa-lib provides ALSA runtime libraries to simplify application programming and provide higher level functionality as well as support for the older OSS API, providing binary compatibility for most OSS programs. + ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.29.tar.bz2 + + + + alsa-lib + + /usr/lib + /usr/bin + /usr/share/doc + /usr/share/alsa + + + + + alsa-lib-devel + Development files for alsa-lib + + alsa-lib + + + /usr/lib/pkgconfig + /usr/lib32/pkgconfig + /usr/include/sys + /usr/include/alsa + /usr/share/aclocal + /usr/share/man/man3 + + + + + alsa-lib-32bit + emul32 + 32-bit shared libraries for alsa-lib + emul32 + + alsa-lib + + + /usr/lib32 + + + + + + 2015-03-04 + 1.0.29 + Version bump. + Hakan Yıldız + hknyldz93@gmail.com + + + 2014-08-19 + 1.0.28 + Rebuild version 28. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-08-19 + 1.0.28 + Version bump. + Serdar Soytetir + kaptan@pisilinux.org + + + 2014-05-26 + 1.0.27.2 + Release bump. + Alihan Öztürk + alihan@pisilinux.org + + + 2014-03-05 + 1.0.27.2 + Rebuild for buildhost + PisiLinux Community + admins@pisilinux.org + + + 2013-08-22 + 1.0.27.2 + Release bump. + Marcin Bojara + marcin@pisilinux.org + + + 2013-07-27 + 1.0.27.2 + Version bump. + Marcin Bojara + marcin@pisilinux.org + + + 2012-10-13 + 1.0.26.20121013 + First release + Erdinç Gültekin + admins@pisilinux.org + + + diff --git a/hardware/sound/alsa-lib/translations.xml b/hardware/sound/alsa-lib/translations.xml new file mode 100644 index 0000000000..9122b1fb89 --- /dev/null +++ b/hardware/sound/alsa-lib/translations.xml @@ -0,0 +1,18 @@ + + + + alsa-lib + Gelişmiş Linux Ses Mimarisi kütüphanesi + alsa-lib, ses aygıtlarına erişim sağlayarak kolayca uygulama yazılmasını sağlayan bir kütüphanedir. + + + + alsa-lib-devel + alsa-lib için geliştirme dosyaları + + + + alsa-lib-32bit + alsa-lib için 32-bit paylaşımlı kitaplıklar + + diff --git a/hardware/sound/component.xml b/hardware/sound/component.xml new file mode 100644 index 0000000000..e15449bfb7 --- /dev/null +++ b/hardware/sound/component.xml @@ -0,0 +1,3 @@ + + hardware.sound +