diff options
Diffstat (limited to 'testing')
-rw-r--r-- | testing/cups/PKGBUILD | 35 | ||||
-rw-r--r-- | testing/cups/avahi-missing-in-conditionals.patch | 118 | ||||
-rw-r--r-- | testing/cups/cups-systemd-socket.patch | 135 | ||||
-rw-r--r-- | testing/cups/cups.install | 5 | ||||
-rw-r--r-- | testing/cups/cupsd-conf-remove-obsolete-browse-directives.patch | 12 | ||||
-rw-r--r-- | testing/cups/recognize-remote-cups-queue-via-dnssd-uri.patch | 25 | ||||
-rw-r--r-- | testing/cups/usb-backend-reset-after-job-only-for-specific-devices.patch | 74 | ||||
-rw-r--r-- | testing/libreoffice/PKGBUILD | 17 | ||||
-rw-r--r-- | testing/libreoffice/git_fixes.diff | 743 | ||||
-rw-r--r-- | testing/libreoffice/libreoffice-common.csh | 7 | ||||
-rw-r--r-- | testing/libreoffice/libreoffice-common.sh | 7 | ||||
-rw-r--r-- | testing/openssh/PKGBUILD | 8 | ||||
-rw-r--r-- | testing/openssh/sshd.service | 1 | ||||
-rw-r--r-- | testing/openssh/sshd.socket | 1 | ||||
-rw-r--r-- | testing/xcompmgr/PKGBUILD | 33 | ||||
-rw-r--r-- | testing/xcompmgr/fix_broken_shadows.diff | 28 |
16 files changed, 1162 insertions, 87 deletions
diff --git a/testing/cups/PKGBUILD b/testing/cups/PKGBUILD index d4ba2d8d7..12273883e 100644 --- a/testing/cups/PKGBUILD +++ b/testing/cups/PKGBUILD @@ -1,30 +1,38 @@ -# $Id: PKGBUILD 164245 2012-07-28 09:29:14Z andyrtr $ +# $Id: PKGBUILD 165915 2012-09-03 20:05:26Z heftig $ # Maintainer: Andreas Radke <andyrtr@archlinux.org> pkgbase="cups" pkgname=('libcups' 'cups') pkgver=1.6.1 -pkgrel=1 +pkgrel=6 arch=('i686' 'x86_64') license=('GPL') url="http://www.cups.org/" -makedepends=('libtiff>=4.0.0' 'libpng>=1.5.7' 'acl' 'openslp' 'pam' 'xdg-utils' 'krb5' 'gnutls>=2.8.3' 'cups-filters' 'bc' +makedepends=('libtiff>=4.0.0' 'libpng>=1.5.7' 'acl' 'pam' 'xdg-utils' 'krb5' 'gnutls>=2.8.3' 'cups-filters' 'bc' 'colord' 'xinetd' 'gzip' 'autoconf' 'libusb' 'dbus-core' 'avahi' 'hicolor-icon-theme' 'systemd') source=(ftp://ftp.easysw.com/pub/cups/${pkgver}/cups-${pkgver}-source.tar.bz2 cups-no-export-ssllibs.patch cups-no-gcrypt.patch cups-no-gzip-man.patch cups-systemd-socket.patch - cups cups.logrotate cups.pam) + cups cups.logrotate cups.pam + cupsd-conf-remove-obsolete-browse-directives.patch + avahi-missing-in-conditionals.patch + recognize-remote-cups-queue-via-dnssd-uri.patch + usb-backend-reset-after-job-only-for-specific-devices.patch) #options=('!emptydirs') md5sums=('87ade07e3d1efd03c9c3add949cf9c00' '9b8467a1e51d360096b70e2c3c081e6c' '3733c23e77eb503bd94cc368e02830dc' '90c30380d4c8cd48a908cfdadae1ea24' - 'a81573a429b98e16670d7fea47e528c4' + 'b4868b83f7f2d6ec24a1be76509379f0' '9657daa21760bb0b5fa3d8b51d5e01a1' 'f861b18f4446c43918c8643dcbbd7f6d' - '96f82c38f3f540b53f3e5144900acf17') + '96f82c38f3f540b53f3e5144900acf17' + '6bef262b5081051e88cd2ae94fed1867' + '9c91b1319f4b20dc323986cb4abbe806' + 'dcef8dd5614461166cada8a706eebb49' + '0779ef8ba1d724ebb3b9bf360deba52b') build() { cd ${srcdir}/${pkgbase}-${pkgver} @@ -40,6 +48,16 @@ build() { patch -Np1 -i "${srcdir}/cups-no-gcrypt.patch" # don't zip man pages in make install, let makepkg do that / Fedora patch -Np1 -i ${srcdir}/cups-no-gzip-man.patch + + # upstream bugtracker patches + # http://www.cups.org/str.php?L4157 - fix broken default server config + patch -Np1 -i ${srcdir}/cupsd-conf-remove-obsolete-browse-directives.patch + # http://www.cups.org/str.php?L4156 - In many DNS-SD/Bonjour conditionals Avahi is not considered + patch -Np1 -i ${srcdir}/avahi-missing-in-conditionals.patch + # http://www.cups.org/str.php?L4158 - DNS-SD-based print queues pointing to CUPS server are not considered remote printers with driver on server + patch -Np1 -i ${srcdir}/recognize-remote-cups-queue-via-dnssd-uri.patch + # http://cups.org/str.php?L4155 / https://bugs.archlinux.org/task/30965 + patch -Np0 -i ${srcdir}/usb-backend-reset-after-job-only-for-specific-devices.patch # Rebuild configure script for not zipping man-pages. aclocal -I config-scripts @@ -105,7 +123,7 @@ backup=(etc/cups/cupsd.conf etc/logrotate.d/cups etc/pam.d/cups etc/xinetd.d/cups-lpd) -depends=('acl' 'openslp' 'pam' "libcups>=${pkgver}" 'cups-filters' 'bc' 'colord' 'libusb' 'dbus-core' 'libsystemd' 'hicolor-icon-theme') +depends=('acl' 'pam' "libcups>=${pkgver}" 'cups-filters' 'bc' 'colord' 'libusb' 'dbus-core' 'libsystemd' 'hicolor-icon-theme') optdepends=('xdg-utils: xdg .desktop file support') cd ${srcdir}/${pkgbase}-${pkgver} @@ -150,4 +168,7 @@ optdepends=('xdg-utils: xdg .desktop file support') rm -v ${pkgdir}/usr/share/cups/data/testprint # comment out all conversion rules which use any of the removed filters perl -p -i -e 's:^(.*\s+bannertops\s*)$:#\1:' /usr/share/cups/mime/mime.convs + + # Provide native service for arch-daemons generator + ln -s cups.service "$pkgdir/usr/lib/systemd/system/cupsd.service" } diff --git a/testing/cups/avahi-missing-in-conditionals.patch b/testing/cups/avahi-missing-in-conditionals.patch new file mode 100644 index 000000000..b261f58ae --- /dev/null +++ b/testing/cups/avahi-missing-in-conditionals.patch @@ -0,0 +1,118 @@ +diff -uraN cups/scheduler/client.c cups-new/scheduler/client.c +--- cups/scheduler/client.c 2012-05-25 15:28:49.000000000 +0200 ++++ cups-new/scheduler/client.c 2012-08-04 20:13:17.082220961 +0200 +@@ -4021,7 +4021,7 @@ + !strncmp(host, "[::1]:", 6)); + } + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + /* + * Check if the hostname is something.local (Bonjour); if so, allow it. + */ +@@ -4040,7 +4040,7 @@ + !_cups_strcasecmp(end, ".local.") || + !_cups_strncasecmp(end, ".local.:", 8))) + return (1); +-#endif /* HAVE_DNSSD */ ++#endif /* HAVE_DNSSD || HAVE_AVAHI */ + + /* + * Check if the hostname is an IP address... +@@ -4101,7 +4101,7 @@ + } + } + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + for (a = (cupsd_alias_t *)cupsArrayFirst(DNSSDAlias); + a; + a = (cupsd_alias_t *)cupsArrayNext(DNSSDAlias)) +@@ -4126,7 +4126,7 @@ + return (1); + } + } +-#endif /* HAVE_DNSSD */ ++#endif /* HAVE_DNSSD || HAVE_AVAHI */ + + /* + * Check for interface hostname matches... +diff -uraN cups/scheduler/conf.c cups-new/scheduler/conf.c +--- cups/scheduler/conf.c 2012-05-25 15:28:49.000000000 +0200 ++++ cups-new/scheduler/conf.c 2012-08-04 20:15:49.830978405 +0200 +@@ -89,9 +89,9 @@ + { + { "AccessLog", &AccessLog, CUPSD_VARTYPE_STRING }, + { "AutoPurgeJobs", &JobAutoPurge, CUPSD_VARTYPE_BOOLEAN }, +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + { "BrowseDNSSDSubTypes", &DNSSDSubTypes, CUPSD_VARTYPE_STRING }, +-#endif /* HAVE_DNSSD */ ++#endif /* HAVE_DNSSD || HAVE_AVAHI */ + { "BrowseWebIF", &BrowseWebIF, CUPSD_VARTYPE_BOOLEAN }, + { "Browsing", &Browsing, CUPSD_VARTYPE_BOOLEAN }, + { "CacheDir", &CacheDir, CUPSD_VARTYPE_STRING }, +@@ -735,9 +735,9 @@ + Browsing = CUPS_DEFAULT_BROWSING; + DefaultShared = CUPS_DEFAULT_DEFAULT_SHARED; + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + cupsdSetString(&DNSSDSubTypes, "_cups,_print"); +-#endif /* HAVE_DNSSD */ ++#endif /* HAVE_DNSSD || HAVE_AVAHI */ + + cupsdSetString(&LPDConfigFile, CUPS_DEFAULT_LPD_CONFIG_FILE); + cupsdSetString(&SMBConfigFile, CUPS_DEFAULT_SMB_CONFIG_FILE); +diff -uraN cups/scheduler/ipp.c cups-new/scheduler/ipp.c +--- cups/scheduler/ipp.c 2012-05-25 15:28:49.000000000 +0200 ++++ cups-new/scheduler/ipp.c 2012-08-04 20:13:17.086220978 +0200 +@@ -4813,7 +4813,7 @@ + ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time", + ippTimeToDate(curtime)); + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + if (!ra || cupsArrayFind(ra, "printer-dns-sd-name")) + { + if (printer->reg_name) +@@ -4823,7 +4823,7 @@ + ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_NOVALUE, + "printer-dns-sd-name", 0); + } +-#endif /* HAVE_DNSSD */ ++#endif /* HAVE_DNSSD || HAVE_AVAHI */ + + if (!ra || cupsArrayFind(ra, "printer-error-policy")) + ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME, +diff -uraN cups/scheduler/main.c cups-new/scheduler/main.c +--- cups/scheduler/main.c 2012-05-25 15:28:49.000000000 +0200 ++++ cups-new/scheduler/main.c 2012-08-04 20:13:17.090221001 +0200 +@@ -781,9 +781,9 @@ + * Got an error from select! + */ + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + cupsd_printer_t *p; /* Current printer */ +-#endif /* HAVE_DNSSD */ ++#endif /* HAVE_DNSSD || HAVE_AVAHI */ + + + if (errno == EINTR) /* Just interrupted by a signal */ +@@ -824,13 +824,13 @@ + job->print_pipes[0], job->print_pipes[1], + job->back_pipes[0], job->back_pipes[1]); + +-#ifdef HAVE_DNSSD ++#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + for (p = (cupsd_printer_t *)cupsArrayFirst(Printers); + p; + p = (cupsd_printer_t *)cupsArrayNext(Printers)) + cupsdLogMessage(CUPSD_LOG_EMERG, "printer[%s] reg_name=\"%s\"", p->name, + p->reg_name ? p->reg_name : "(null)"); +-#endif /* HAVE_DNSSD */ ++#endif /* HAVE_DNSSD || HAVE_AVAHI */ + + break; + } diff --git a/testing/cups/cups-systemd-socket.patch b/testing/cups/cups-systemd-socket.patch index f699b9eda..83fabdb4f 100644 --- a/testing/cups/cups-systemd-socket.patch +++ b/testing/cups/cups-systemd-socket.patch @@ -1,7 +1,7 @@ -diff -up cups-1.5.0/config.h.in.systemd-socket cups-1.5.0/config.h.in ---- cups-1.5.0/config.h.in.systemd-socket 2011-10-18 15:32:40.741672460 +0100 -+++ cups-1.5.0/config.h.in 2011-10-18 15:32:40.843670530 +0100 -@@ -503,6 +503,13 @@ +diff -up cups-1.6b1/config.h.in.systemd-socket cups-1.6b1/config.h.in +--- cups-1.6b1/config.h.in.systemd-socket 2012-05-17 00:57:03.000000000 +0200 ++++ cups-1.6b1/config.h.in 2012-05-28 11:16:35.657250584 +0200 +@@ -506,6 +506,13 @@ /* @@ -15,9 +15,9 @@ diff -up cups-1.5.0/config.h.in.systemd-socket cups-1.5.0/config.h.in * Various scripting languages... */ -diff -up cups-1.5.0/config-scripts/cups-systemd.m4.systemd-socket cups-1.5.0/config-scripts/cups-systemd.m4 ---- cups-1.5.0/config-scripts/cups-systemd.m4.systemd-socket 2011-10-18 15:32:40.844670511 +0100 -+++ cups-1.5.0/config-scripts/cups-systemd.m4 2011-10-18 15:33:16.861989058 +0100 +diff -up cups-1.6b1/config-scripts/cups-systemd.m4.systemd-socket cups-1.6b1/config-scripts/cups-systemd.m4 +--- cups-1.6b1/config-scripts/cups-systemd.m4.systemd-socket 2012-05-28 11:16:35.658250577 +0200 ++++ cups-1.6b1/config-scripts/cups-systemd.m4 2012-05-28 11:16:35.658250577 +0200 @@ -0,0 +1,36 @@ +dnl +dnl "$Id$" @@ -55,18 +55,18 @@ diff -up cups-1.5.0/config-scripts/cups-systemd.m4.systemd-socket cups-1.5.0/con +dnl +dnl "$Id$" +dnl -diff -up cups-1.5.0/configure.in.systemd-socket cups-1.5.0/configure.in ---- cups-1.5.0/configure.in.systemd-socket 2010-11-20 01:03:46.000000000 +0000 -+++ cups-1.5.0/configure.in 2011-10-18 15:32:40.844670511 +0100 -@@ -37,6 +37,7 @@ sinclude(config-scripts/cups-pam.m4) +diff -up cups-1.6b1/configure.in.systemd-socket cups-1.6b1/configure.in +--- cups-1.6b1/configure.in.systemd-socket 2012-04-23 19:26:57.000000000 +0200 ++++ cups-1.6b1/configure.in 2012-05-28 11:16:35.658250577 +0200 +@@ -33,6 +33,7 @@ sinclude(config-scripts/cups-pam.m4) sinclude(config-scripts/cups-largefile.m4) sinclude(config-scripts/cups-dnssd.m4) sinclude(config-scripts/cups-launchd.m4) +sinclude(config-scripts/cups-systemd.m4) sinclude(config-scripts/cups-defaults.m4) - sinclude(config-scripts/cups-pdf.m4) sinclude(config-scripts/cups-scripting.m4) -@@ -71,6 +72,9 @@ AC_OUTPUT(Makedefs + +@@ -66,6 +67,9 @@ AC_OUTPUT(Makedefs conf/snmp.conf cups-config data/testprint @@ -76,10 +76,10 @@ diff -up cups-1.5.0/configure.in.systemd-socket cups-1.5.0/configure.in desktop/cups.desktop doc/help/ref-cupsd-conf.html doc/help/standard.html -diff -up cups-1.5.0/cups/usersys.c.systemd-socket cups-1.5.0/cups/usersys.c ---- cups-1.5.0/cups/usersys.c.systemd-socket 2011-10-18 15:32:40.645674277 +0100 -+++ cups-1.5.0/cups/usersys.c 2011-10-18 15:32:40.845670492 +0100 -@@ -770,7 +770,7 @@ cups_read_client_conf( +diff -up cups-1.6b1/cups/usersys.c.systemd-socket cups-1.6b1/cups/usersys.c +--- cups-1.6b1/cups/usersys.c.systemd-socket 2012-04-23 19:26:57.000000000 +0200 ++++ cups-1.6b1/cups/usersys.c 2012-05-28 11:16:35.659250570 +0200 +@@ -975,7 +975,7 @@ cups_read_client_conf( struct stat sockinfo; /* Domain socket information */ if (!stat(CUPS_DEFAULT_DOMAINSOCKET, &sockinfo) && @@ -88,9 +88,9 @@ diff -up cups-1.5.0/cups/usersys.c.systemd-socket cups-1.5.0/cups/usersys.c cups_server = CUPS_DEFAULT_DOMAINSOCKET; else #endif /* CUPS_DEFAULT_DOMAINSOCKET */ -diff -up cups-1.5.0/data/cups.path.in.systemd-socket cups-1.5.0/data/cups.path.in ---- cups-1.5.0/data/cups.path.in.systemd-socket 2011-10-18 15:32:40.846670473 +0100 -+++ cups-1.5.0/data/cups.path.in 2011-10-18 15:32:40.846670473 +0100 +diff -up cups-1.6b1/data/cups.path.in.systemd-socket cups-1.6b1/data/cups.path.in +--- cups-1.6b1/data/cups.path.in.systemd-socket 2012-05-28 11:16:35.659250570 +0200 ++++ cups-1.6b1/data/cups.path.in 2012-05-28 11:16:35.659250570 +0200 @@ -0,0 +1,8 @@ +[Unit] +Description=CUPS Printer Service Spool @@ -100,10 +100,10 @@ diff -up cups-1.5.0/data/cups.path.in.systemd-socket cups-1.5.0/data/cups.path.i + +[Install] +WantedBy=multi-user.target -diff -up cups-1.5.0/data/cups.service.in.systemd-socket cups-1.5.0/data/cups.service.in ---- cups-1.5.0/data/cups.service.in.systemd-socket 2011-10-18 15:32:40.846670473 +0100 -+++ cups-1.5.0/data/cups.service.in 2011-10-18 15:32:40.846670473 +0100 -@@ -0,0 +1,9 @@ +diff -up cups-1.6b1/data/cups.service.in.systemd-socket cups-1.6b1/data/cups.service.in +--- cups-1.6b1/data/cups.service.in.systemd-socket 2012-05-28 11:16:35.659250570 +0200 ++++ cups-1.6b1/data/cups.service.in 2012-05-28 11:16:35.659250570 +0200 +@@ -0,0 +1,10 @@ +[Unit] +Description=CUPS Printing Service + @@ -114,25 +114,22 @@ diff -up cups-1.5.0/data/cups.service.in.systemd-socket cups-1.5.0/data/cups.ser +[Install] +Also=cups.socket cups.path +WantedBy=printer.target -diff -up cups-1.5.0/data/cups.socket.in.systemd-socket cups-1.5.0/data/cups.socket.in ---- cups-1.5.0/data/cups.socket.in.systemd-socket 2011-10-18 15:32:40.847670454 +0100 -+++ cups-1.5.0/data/cups.socket.in 2011-10-18 15:32:40.847670454 +0100 -@@ -0,0 +1,10 @@ +diff -up cups-1.6b1/data/cups.socket.in.systemd-socket cups-1.6b1/data/cups.socket.in +--- cups-1.6b1/data/cups.socket.in.systemd-socket 2012-05-28 11:16:35.660250563 +0200 ++++ cups-1.6b1/data/cups.socket.in 2012-05-28 11:16:35.660250563 +0200 +@@ -0,0 +1,8 @@ +[Unit] +Description=CUPS Printing Service Sockets + +[Socket] +ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@ -+ListenStream=631 -+ListenDatagram=0.0.0.0:631 -+BindIPv6Only=ipv6-only + +[Install] +WantedBy=sockets.target -diff -up cups-1.5.0/data/Makefile.systemd-socket cups-1.5.0/data/Makefile ---- cups-1.5.0/data/Makefile.systemd-socket 2011-05-12 06:21:56.000000000 +0100 -+++ cups-1.5.0/data/Makefile 2011-10-18 15:32:40.847670454 +0100 -@@ -112,6 +112,12 @@ install-data: +diff -up cups-1.6b1/data/Makefile.systemd-socket cups-1.6b1/data/Makefile +--- cups-1.6b1/data/Makefile.systemd-socket 2011-08-27 11:23:01.000000000 +0200 ++++ cups-1.6b1/data/Makefile 2012-05-28 11:16:35.660250563 +0200 +@@ -100,6 +100,12 @@ install-data: $(INSTALL_DATA) $$file $(DATADIR)/ppdc; \ done $(INSTALL_DIR) -m 755 $(DATADIR)/profiles @@ -145,8 +142,8 @@ diff -up cups-1.5.0/data/Makefile.systemd-socket cups-1.5.0/data/Makefile # -@@ -159,6 +165,9 @@ uninstall: - -$(RMDIR) $(DATADIR)/charsets +@@ -143,6 +149,9 @@ uninstall: + -$(RMDIR) $(DATADIR)/data -$(RMDIR) $(DATADIR)/banners -$(RMDIR) $(DATADIR) + for file in $(SYSTEMD_UNITS); do \ @@ -155,10 +152,10 @@ diff -up cups-1.5.0/data/Makefile.systemd-socket cups-1.5.0/data/Makefile # -diff -up cups-1.5.0/Makedefs.in.systemd-socket cups-1.5.0/Makedefs.in ---- cups-1.5.0/Makedefs.in.systemd-socket 2011-10-18 15:32:40.719672876 +0100 -+++ cups-1.5.0/Makedefs.in 2011-10-18 15:32:40.848670435 +0100 -@@ -143,6 +143,7 @@ CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@ +diff -up cups-1.6b1/Makedefs.in.systemd-socket cups-1.6b1/Makedefs.in +--- cups-1.6b1/Makedefs.in.systemd-socket 2012-05-28 11:16:35.648250647 +0200 ++++ cups-1.6b1/Makedefs.in 2012-05-28 11:16:35.660250563 +0200 +@@ -134,11 +134,13 @@ CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@ CXXLIBS = @CXXLIBS@ DBUS_NOTIFIER = @DBUS_NOTIFIER@ DBUS_NOTIFIERLIBS = @DBUS_NOTIFIERLIBS@ @@ -166,15 +163,13 @@ diff -up cups-1.5.0/Makedefs.in.systemd-socket cups-1.5.0/Makedefs.in DNSSD_BACKEND = @DNSSD_BACKEND@ DSOFLAGS = -L../cups @DSOFLAGS@ DSOLIBS = @DSOLIBS@ $(COMMONLIBS) -@@ -151,6 +152,7 @@ FONTS = @FONTS@ - IMGLIBS = @IMGLIBS@ - IMGFILTERS = @IMGFILTERS@ + DNSSDLIBS = @DNSSDLIBS@ LAUNCHDLIBS = @LAUNCHDLIBS@ +SDLIBS = @SDLIBS@ LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \ -L../scheduler @LDARCHFLAGS@ \ @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM) -@@ -267,6 +269,7 @@ PAMFILE = @PAMFILE@ +@@ -229,6 +231,7 @@ PAMFILE = @PAMFILE@ DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@ DBUSDIR = @DBUSDIR@ @@ -182,10 +177,10 @@ diff -up cups-1.5.0/Makedefs.in.systemd-socket cups-1.5.0/Makedefs.in # -diff -up cups-1.5.0/scheduler/client.h.systemd-socket cups-1.5.0/scheduler/client.h ---- cups-1.5.0/scheduler/client.h.systemd-socket 2011-03-25 21:25:38.000000000 +0000 -+++ cups-1.5.0/scheduler/client.h 2011-10-18 15:32:40.848670435 +0100 -@@ -75,6 +75,9 @@ typedef struct +diff -up cups-1.6b1/scheduler/client.h.systemd-socket cups-1.6b1/scheduler/client.h +--- cups-1.6b1/scheduler/client.h.systemd-socket 2012-03-22 21:30:20.000000000 +0100 ++++ cups-1.6b1/scheduler/client.h 2012-05-28 11:16:35.661250556 +0200 +@@ -77,6 +77,9 @@ typedef struct int fd; /* File descriptor for this server */ http_addr_t address; /* Bind address of socket */ http_encryption_t encryption; /* To encrypt or not to encrypt... */ @@ -195,9 +190,9 @@ diff -up cups-1.5.0/scheduler/client.h.systemd-socket cups-1.5.0/scheduler/clien } cupsd_listener_t; -diff -up cups-1.5.0/scheduler/listen.c.systemd-socket cups-1.5.0/scheduler/listen.c ---- cups-1.5.0/scheduler/listen.c.systemd-socket 2011-04-16 00:38:13.000000000 +0100 -+++ cups-1.5.0/scheduler/listen.c 2011-10-18 15:32:40.849670416 +0100 +diff -up cups-1.6b1/scheduler/listen.c.systemd-socket cups-1.6b1/scheduler/listen.c +--- cups-1.6b1/scheduler/listen.c.systemd-socket 2011-04-16 01:38:13.000000000 +0200 ++++ cups-1.6b1/scheduler/listen.c 2012-05-28 11:16:35.661250556 +0200 @@ -401,7 +401,11 @@ cupsdStopListening(void) lis; lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) @@ -211,9 +206,9 @@ diff -up cups-1.5.0/scheduler/listen.c.systemd-socket cups-1.5.0/scheduler/liste { #ifdef WIN32 closesocket(lis->fd); -diff -up cups-1.5.0/scheduler/main.c.systemd-socket cups-1.5.0/scheduler/main.c ---- cups-1.5.0/scheduler/main.c.systemd-socket 2011-10-18 15:32:40.802671306 +0100 -+++ cups-1.5.0/scheduler/main.c 2011-10-18 15:32:40.851670379 +0100 +diff -up cups-1.6b1/scheduler/main.c.systemd-socket cups-1.6b1/scheduler/main.c +--- cups-1.6b1/scheduler/main.c.systemd-socket 2012-05-28 11:16:35.612250897 +0200 ++++ cups-1.6b1/scheduler/main.c 2012-05-28 12:49:32.698375139 +0200 @@ -26,6 +26,8 @@ * launchd_checkin() - Check-in with launchd and collect the listening * fds. @@ -244,7 +239,7 @@ diff -up cups-1.5.0/scheduler/main.c.systemd-socket cups-1.5.0/scheduler/main.c static void parent_handler(int sig); static void process_children(void); static void sigchld_handler(int sig); -@@ -537,6 +546,13 @@ main(int argc, /* I - Number of comm +@@ -528,6 +537,13 @@ main(int argc, /* I - Number of comm } #endif /* HAVE_LAUNCHD */ @@ -258,7 +253,7 @@ diff -up cups-1.5.0/scheduler/main.c.systemd-socket cups-1.5.0/scheduler/main.c /* * Startup the server... */ -@@ -759,6 +775,15 @@ main(int argc, /* I - Number of comm +@@ -738,6 +754,15 @@ main(int argc, /* I - Number of comm } #endif /* HAVE_LAUNCHD */ @@ -274,7 +269,7 @@ diff -up cups-1.5.0/scheduler/main.c.systemd-socket cups-1.5.0/scheduler/main.c /* * Startup the server... */ -@@ -1584,6 +1609,100 @@ launchd_checkout(void) +@@ -1516,6 +1541,102 @@ launchd_checkout(void) } #endif /* HAVE_LAUNCHD */ @@ -306,14 +301,16 @@ diff -up cups-1.5.0/scheduler/main.c.systemd-socket cups-1.5.0/scheduler/main.c + char s[256]; + + r = sd_is_socket(fd, AF_UNSPEC, SOCK_STREAM, 1); -+ if (r < 0) { ++ if (r < 0) ++ { + cupsdLogMessage(CUPSD_LOG_ERROR, + "systemd_checkin: Unable to verify socket type - %s", + strerror(-r)); + continue; + } + -+ if (!r) { ++ if (!r) ++ { + cupsdLogMessage(CUPSD_LOG_ERROR, + "systemd_checkin: Socket not of the right type"); + continue; @@ -327,7 +324,7 @@ diff -up cups-1.5.0/scheduler/main.c.systemd-socket cups-1.5.0/scheduler/main.c + continue; + } + -+ /* ++ /* + * Try to match the systemd socket address to one of the listeners... + */ + @@ -335,7 +332,7 @@ diff -up cups-1.5.0/scheduler/main.c.systemd-socket cups-1.5.0/scheduler/main.c + lis; + lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) + if (httpAddrEqual(&lis->address, &addr)) -+ break; ++ break; + + if (lis) + { @@ -375,10 +372,10 @@ diff -up cups-1.5.0/scheduler/main.c.systemd-socket cups-1.5.0/scheduler/main.c /* * 'parent_handler()' - Catch USR1/CHLD signals... -diff -up cups-1.5.0/scheduler/Makefile.systemd-socket cups-1.5.0/scheduler/Makefile ---- cups-1.5.0/scheduler/Makefile.systemd-socket 2011-10-18 15:32:40.817671022 +0100 -+++ cups-1.5.0/scheduler/Makefile 2011-10-18 15:32:40.852670360 +0100 -@@ -382,7 +382,7 @@ cupsd: $(CUPSDOBJS) $(LIBCUPSMIME) ../cu +diff -up cups-1.6b1/scheduler/Makefile.systemd-socket cups-1.6b1/scheduler/Makefile +--- cups-1.6b1/scheduler/Makefile.systemd-socket 2012-05-21 19:40:22.000000000 +0200 ++++ cups-1.6b1/scheduler/Makefile 2012-05-28 11:16:35.663250542 +0200 +@@ -371,7 +371,7 @@ cupsd: $(CUPSDOBJS) $(LIBCUPSMIME) ../cu $(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) -L. -lcupsmime \ $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \ $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBS) \ @@ -387,12 +384,12 @@ diff -up cups-1.5.0/scheduler/Makefile.systemd-socket cups-1.5.0/scheduler/Makef cupsd-static: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC) echo Linking $@... -@@ -390,7 +390,7 @@ cupsd-static: $(CUPSDOBJS) libcupsmime.a +@@ -379,7 +379,7 @@ cupsd-static: $(CUPSDOBJS) libcupsmime.a $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \ ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \ $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBGSSAPI) \ - $(LIBWRAP) -+ $(LIBWRAP) $(SDLIBS) ++ $(LIBWRAP) $(SDLIBS) + tls.o: tls-darwin.c tls-gnutls.c tls-openssl.c - # diff --git a/testing/cups/cups.install b/testing/cups/cups.install index cea52282e..fc015f951 100644 --- a/testing/cups/cups.install +++ b/testing/cups/cups.install @@ -24,6 +24,11 @@ post_upgrade() { echo "* check your config with cupsd -t" echo " and fix all Browsing related settings" fi + if [ "`vercmp $2 1.6.1-3`" -lt 0 ]; then + # important upgrade notice + echo "> It's now safe to load usblp kernel module." + echo "> There's no more need to blacklist it." + fi } post_remove() { diff --git a/testing/cups/cupsd-conf-remove-obsolete-browse-directives.patch b/testing/cups/cupsd-conf-remove-obsolete-browse-directives.patch new file mode 100644 index 000000000..97636c7f2 --- /dev/null +++ b/testing/cups/cupsd-conf-remove-obsolete-browse-directives.patch @@ -0,0 +1,12 @@ +diff -uraN cups/conf/cupsd.conf.in cups-new/conf/cupsd.conf.in +--- cups/conf/cupsd.conf.in 2012-05-25 15:28:25.000000000 +0200 ++++ cups-new/conf/cupsd.conf.in 2012-08-04 20:56:26.699062177 +0200 +@@ -19,8 +19,6 @@ + + # Show shared printers on the local network. + Browsing On +-BrowseOrder allow,deny +-BrowseAllow all + BrowseLocalProtocols @CUPS_BROWSE_LOCAL_PROTOCOLS@ + + # Default authentication type, when authentication is required... diff --git a/testing/cups/recognize-remote-cups-queue-via-dnssd-uri.patch b/testing/cups/recognize-remote-cups-queue-via-dnssd-uri.patch new file mode 100644 index 000000000..6349bd901 --- /dev/null +++ b/testing/cups/recognize-remote-cups-queue-via-dnssd-uri.patch @@ -0,0 +1,25 @@ +diff -uraN cups/scheduler/printers.c cups-new/scheduler/printers.c +--- cups/scheduler/printers.c 2012-05-25 15:28:49.000000000 +0200 ++++ cups-new/scheduler/printers.c 2012-08-04 20:58:40.475725544 +0200 +@@ -4829,13 +4829,14 @@ + "printer-make-and-model", NULL, + "Local System V Printer"); + } +- else if (!strncmp(p->device_uri, "ipp://", 6) && +- (strstr(p->device_uri, "/printers/") != NULL || +- strstr(p->device_uri, "/classes/") != NULL || +- ((strstr(p->device_uri, "._ipp.") != NULL || +- strstr(p->device_uri, "._ipps.") != NULL) && +- !strcmp(p->device_uri + strlen(p->device_uri) - 5, +- "/cups")))) ++ else if ((!strncmp(p->device_uri, "ipp://", 6) && ++ (strstr(p->device_uri, "/printers/") != NULL || ++ strstr(p->device_uri, "/classes/") != NULL)) || ++ (!strncmp(p->device_uri, "dnssd://", 8) && ++ (strstr(p->device_uri, "._ipp.") != NULL || ++ strstr(p->device_uri, "._ipps.") != NULL) && ++ !strcmp(p->device_uri + strlen(p->device_uri) - 5, ++ "/cups"))) + { + /* + * Tell the client this is really a hard-wired remote printer. diff --git a/testing/cups/usb-backend-reset-after-job-only-for-specific-devices.patch b/testing/cups/usb-backend-reset-after-job-only-for-specific-devices.patch new file mode 100644 index 000000000..dcf91c833 --- /dev/null +++ b/testing/cups/usb-backend-reset-after-job-only-for-specific-devices.patch @@ -0,0 +1,74 @@ +--- backend/usb-libusb.c.orig 2012-07-16 19:10:55.000000000 +0200 ++++ backend/usb-libusb.c 2012-08-06 11:01:58.034150159 +0200 +@@ -70,7 +70,7 @@ + read_endp, /* Read endpoint */ + protocol, /* Protocol: 1 = Uni-di, 2 = Bi-di. */ + usblp_attached, /* "usblp" kernel module attached? */ +- opened_for_job; /* Set to 1 by print_device() */ ++ reset_after_job; /* Set to 1 by print_device() */ + unsigned int quirks; /* Quirks flags */ + struct libusb_device_handle *handle; /* Open handle to device */ + } usb_printer_t; +@@ -122,6 +122,8 @@ + #define USBLP_QUIRK_USB_INIT 0x2 /* needs vendor USB init string */ + #define USBLP_QUIRK_BAD_CLASS 0x4 /* descriptor uses vendor-specific + Class or SubClass */ ++#define USBLP_QUIRK_RESET 0x4000 /* After printing do a reset ++ for clean-up */ + #define USBLP_QUIRK_NO_REATTACH 0x8000 /* After printing we cannot re-attach + the usblp kernel module */ + +@@ -147,9 +149,11 @@ + { 0x04b8, 0x0202, USBLP_QUIRK_BAD_CLASS }, /* Seiko Epson Receipt + Printer M129C */ + { 0x067b, 0x2305, USBLP_QUIRK_BIDIR | +- USBLP_QUIRK_NO_REATTACH }, ++ USBLP_QUIRK_NO_REATTACH | ++ USBLP_QUIRK_RESET }, + /* Prolific Technology, Inc. PL2305 Parallel Port + (USB -> Parallel adapter) */ ++ { 0x04e8, 0x0000, USBLP_QUIRK_RESET }, /* All Samsung devices */ + { 0, 0 } + }; + +@@ -256,7 +260,12 @@ + } + + g.print_fd = print_fd; +- g.printer->opened_for_job = 1; ++ ++ /* ++ * Some devices need a reset after finishing a job, these devices are ++ * marked with the USBLP_QUIRK_RESET quirk. ++ */ ++ g.printer->reset_after_job = (g.printer->quirks & USBLP_QUIRK_RESET ? 1 : 0); + + /* + * If we are printing data from a print driver on stdin, ignore SIGTERM +@@ -772,7 +781,7 @@ + * Reset the device to clean up after the job + */ + +- if (printer->opened_for_job == 1) ++ if (printer->reset_after_job == 1) + { + if ((errcode = libusb_reset_device(printer->handle)) < 0) + fprintf(stderr, +@@ -1288,7 +1297,7 @@ + } + + printer->usblp_attached = 0; +- printer->opened_for_job = 0; ++ printer->reset_after_job = 0; + + if (verbose) + fputs("STATE: +connecting-to-device\n", stderr); +@@ -1586,7 +1595,7 @@ + for (i = 0; quirk_printers[i].vendorId; i++) + { + if (vendor == quirk_printers[i].vendorId && +- product == quirk_printers[i].productId) ++ (product == 0x0000 || product == quirk_printers[i].productId)) + return quirk_printers[i].quirks; + } + return 0; diff --git a/testing/libreoffice/PKGBUILD b/testing/libreoffice/PKGBUILD index 9a7e814e3..2b30c747e 100644 --- a/testing/libreoffice/PKGBUILD +++ b/testing/libreoffice/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 165881 2012-09-02 17:17:47Z andyrtr $ +# $Id: PKGBUILD 165918 2012-09-03 20:33:25Z andyrtr $ # Maintainer: AndyRTR <andyrtr@archlinux.org> pkgbase="libreoffice" @@ -26,7 +26,7 @@ pkgname=('libreoffice-common' 'libreoffice-extension-nlpsolver') # svn up -r 142692 (last one with all extensions built _LOver=3.6.1.2 pkgver=3.6.1 -pkgrel=3 +pkgrel=4 arch=('i686' 'x86_64') license=('LGPL3') url="http://www.libreoffice.org/" @@ -82,6 +82,7 @@ source=(${_mirror}/${pkgbase}-{core,help,translations}-${_LOver}.tar.xz ${_additional_source_url}/ce5a1def34578b75959ac31210f031f6-libcdr-0.0.8.tar.bz2 ${_additional_source_url2}/185d60944ea767075d27247c3162b3bc-unowinreg.dll buildfix.diff + git_fixes.diff libreoffice-common.sh libreoffice-common.csh) noextract=(94e7f271e38c976462558b4278590178-libvisio-0.0.19.tar.bz2 18f577b374d60b3c760a3a3350407632-STLport-4.5.tar.gz @@ -147,8 +148,9 @@ md5sums=('3ddcf145b74daa4361e48dafe97e7d21' 'ce5a1def34578b75959ac31210f031f6' '185d60944ea767075d27247c3162b3bc' '234e91ac65945ce1ab1e3839780e90f7' - 'f0e72d0e1bc93a50a3aa9d31350b156c' - '867c682b45f477f916786e00c45d7ab7') + '2445aca137bdbf0cf7526e91f768a1d0' + 'abcb1b0a7deaffe13ab3d7ca70becb49' + '72790a4103da259a55cadd66db931d00') build() { @@ -170,6 +172,7 @@ build() { # buildfixes & bugfixes patch -Np1 -i ${srcdir}/buildfix.diff + patch -Np1 -i ${srcdir}/git_fixes.diff #use the CFLAGS but remove the LibO overridden ones for i in $CFLAGS; do @@ -383,12 +386,12 @@ package_libreoffice-postgresql-connector() { # for directory in `grep ^%dir ${srcdir}/libreoffice-core-$_LOver/file-lists/postgresql_list.txt`; do # install -dm755 ${pkgdir}/${directory/\%dir/} # done -# # install files into the pkg from fakeinstall dir + # install files into the pkg from fakeinstall dir # for file in `grep -v ^%dir $srcdir/libreoffice-core-$_LOver/file-lists/postgresql_list.txt`; do # dirname=`dirname $file` -# # check if directory has been already been created - some are missing like manpages + # check if directory has been already been created - some are missing like manpages # [ -d ${pkgdir}/$dirname ] || install -dm755 ${pkgdir}/$dirname -# # mv file from fakeinstall to pkgdir + # mv file from fakeinstall to pkgdir # mv ${srcdir}/fakeinstall${file} ${pkgdir}$file # done } diff --git a/testing/libreoffice/git_fixes.diff b/testing/libreoffice/git_fixes.diff new file mode 100644 index 000000000..a4cd891cb --- /dev/null +++ b/testing/libreoffice/git_fixes.diff @@ -0,0 +1,743 @@ +From 427529801dee122250e44d2311b34651db92bbdb Mon Sep 17 00:00:00 2001 +From: Stephan Bergmann <sbergman@redhat.com> +Date: Tue, 21 Aug 2012 16:55:11 +0000 +Subject: Typo + +Change-Id: I41fd1463b6432818ee36e7f90e920a5fd98c7106 +(cherry picked from commit 1316cfe8a72f7c7bc2f5ad7644a2d4c54b77fc8b) + +Signed-off-by: Eike Rathke <erack@redhat.com> +--- +diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx +index d929787..55ebaca 100644 +--- a/desktop/source/app/app.cxx ++++ b/desktop/source/app/app.cxx +@@ -194,7 +194,7 @@ void removeTree(OUString const & url) { + osl::FileBase::RC rc = osl::Directory::remove(url); + SAL_WARN_IF( + rc != osl::FileBase::E_None, "desktop", +- "cannot remove directory " << url << ": " +rc); ++ "cannot remove directory " << url << ": " << +rc); + // at least on Windows XP removing some existing directories fails with + // osl::FileBase::E_ACCESS because they are read-only; but keeping those + // directories around should be harmless once they are empty +-- +cgit v0.9.0.2-2-gbebe +From b4f8acb41165a28b2db47acd3c6b624a4c507c54 Mon Sep 17 00:00:00 2001 +From: Stephan Bergmann <sbergman@redhat.com> +Date: Fri, 24 Aug 2012 14:06:15 +0000 +Subject: Fix removeRdbFiles (caused extension update to fail) + +removeRdbFiles suffered from a confusion that ImplementationInfo.uri denotes the +corresponding component (.so, .jar, etc.), but not the .rdb file. So removing +an .rdb file silently failed to remove the corresponding implementations, so re- +installing a similar enough .rdb (as typically happens during extension update) +would fail due to duplicate implementation names. + +Change-Id: I25d4ff72656c99a3af509eef09e89c18cfd0aabe +Reviewed-on: https://gerrit.libreoffice.org/476 +Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> +Tested-by: Norbert Thiebaud <nthiebaud@gmail.com> +--- +diff --git a/cppuhelper/source/defaultbootstrap.cxx b/cppuhelper/source/defaultbootstrap.cxx +index c3bdba3..7fd1e4a 100644 +--- a/cppuhelper/source/defaultbootstrap.cxx ++++ b/cppuhelper/source/defaultbootstrap.cxx +@@ -130,9 +130,10 @@ struct ImplementationInfo: private boost::noncopyable { + rtl::OUString const & theName, rtl::OUString const & theLoader, + rtl::OUString const & theUri, rtl::OUString const & thePrefix, + css::uno::Reference< css::uno::XComponentContext > const & +- theAlienContext): ++ theAlienContext, ++ rtl::OUString const & theRdbFile): + name(theName), loader(theLoader), uri(theUri), prefix(thePrefix), +- alienContext(theAlienContext) ++ alienContext(theAlienContext), rdbFile(theRdbFile) + {} + + explicit ImplementationInfo(rtl::OUString const & theName): name(theName) {} +@@ -142,6 +143,7 @@ struct ImplementationInfo: private boost::noncopyable { + rtl::OUString const uri; + rtl::OUString const prefix; + css::uno::Reference< css::uno::XComponentContext > const alienContext; ++ rtl::OUString const rdbFile; + std::vector< rtl::OUString > services; + std::vector< rtl::OUString > singletons; + }; +@@ -149,12 +151,12 @@ struct ImplementationInfo: private boost::noncopyable { + struct Implementation: private boost::noncopyable { + Implementation( + rtl::OUString const & name, rtl::OUString const & loader, +- rtl::OUString const & uri, +- rtl::OUString const & prefix = rtl::OUString(), +- css::uno::Reference< css::uno::XComponentContext > const & +- alienContext +- = css::uno::Reference< css::uno::XComponentContext >()): +- info(new ImplementationInfo(name, loader, uri, prefix, alienContext)), ++ rtl::OUString const & uri, rtl::OUString const & prefix, ++ css::uno::Reference< css::uno::XComponentContext > const & alienContext, ++ rtl::OUString const & rdbFile): ++ info( ++ new ImplementationInfo( ++ name, loader, uri, prefix, alienContext, rdbFile)), + loaded(false) + {} + +@@ -466,7 +468,7 @@ void Parser::handleImplementation() { + implementation_.reset( + new Implementation( + attrImplementation_, attrLoader_, attrUri_, attrPrefix_, +- alienContext_)); ++ alienContext_, reader_.getUrl())); + if (!data_->namedImplementations.insert( + NamedImplementations::value_type( + attrImplementation_, implementation_)). +@@ -1502,7 +1504,9 @@ bool ServiceManager::readLegacyRdbFile(rtl::OUString const & uri) { + boost::shared_ptr< Implementation > impl( + new Implementation( + name, readLegacyRdbString(uri, implKey, "UNO/ACTIVATOR"), +- readLegacyRdbString(uri, implKey, "UNO/LOCATION"))); ++ readLegacyRdbString(uri, implKey, "UNO/LOCATION"), ++ rtl::OUString(), ++ css::uno::Reference< css::uno::XComponentContext >(), uri)); + if (!data_.namedImplementations.insert( + NamedImplementations::value_type(name, impl)). + second) +@@ -1744,7 +1748,7 @@ void ServiceManager::removeRdbFiles(std::vector< rtl::OUString > const & uris) { + j != data_.namedImplementations.end();) + { + assert(j->second.get() != 0); +- if (j->second->info->uri == *i) { ++ if (j->second->info->rdbFile == *i) { + clear.push_back(j->second); + //TODO: The below leaves data_ in an inconsistent state upon + // exceptions: +-- +cgit v0.9.0.2-2-gbebe +From 6d261e7aac12a876acb6496085e5329632595d39 Mon Sep 17 00:00:00 2001 +From: Stephan Bergmann <sbergman@redhat.com> +Date: Fri, 24 Aug 2012 14:45:20 +0000 +Subject: fdo#53968 etc.: Fix more "doesn't start after upgrade" problems + +* fdo#53968 revealed that multiple soffice.bin instances can run removeTree in + parallel. Therefore, demoted failures from exceptions to SAL_WARNs. (And + keeping fingers crossed.) + +* a8cdce148c76c93c5d41820610d6e6ac175e03a7 "fdo#53655: Ignore failure to remove + directories (as happens on Windows XP)" was due to a forgotten + osl::Directory::close before calling osl::Directory::remove after all. + +* UserInstallations have been seen in the wild where no extensions were + installed per-user (any longer), but user/uno_packages/cache/registry/ + com.sun.star.comp.deployment.component.PackageRegistryBackend/*.rdb files + contained data nevertheless. To reliably clean out any old junk, + refreshBundledExtensionsDir has been extended to cleanExtensionsCache which in + tandem with an extended Desktop::SynchronizeExtensionRepositories now cleanly + re-installs all bundled, shared, and per-user extensions after a LO upgrade. + +Change-Id: Ic6b5b6c1945d76eb3a65b6cd4512a657b7a835a0 +Reviewed-on: https://gerrit.libreoffice.org/477 +Reviewed-by: Norbert Thiebaud <nthiebaud@gmail.com> +Tested-by: Norbert Thiebaud <nthiebaud@gmail.com> +--- +diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx +index 25b6352..c830b02 100644 +--- a/desktop/inc/app.hxx ++++ b/desktop/inc/app.hxx +@@ -203,6 +203,7 @@ class Desktop : public Application + + sal_Bool m_bMinimized; + sal_Bool m_bInvisible; ++ bool m_bCleanedExtensionCache; + bool m_bServicesRegistered; + sal_uInt16 m_nAppEvents; + BootstrapError m_aBootstrapError; +diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx +index 55ebaca..5fb653b 100644 +--- a/desktop/source/app/app.cxx ++++ b/desktop/source/app/app.cxx +@@ -147,77 +147,81 @@ namespace { + + void removeTree(OUString const & url) { + osl::Directory dir(url); +- switch (dir.open()) { ++ osl::FileBase::RC rc = dir.open(); ++ switch (rc) { + case osl::FileBase::E_None: + break; + case osl::FileBase::E_NOENT: + return; //TODO: SAL_WARN if recursive + default: +- throw css::uno::RuntimeException( +- "cannot open directory " + url, +- css::uno::Reference< css::uno::XInterface >()); ++ SAL_WARN("desktop", "cannot open directory " << url << ": " << +rc); ++ return; + } + for (;;) { + osl::DirectoryItem i; +- osl::FileBase::RC rc = dir.getNextItem(i, SAL_MAX_UINT32); ++ rc = dir.getNextItem(i, SAL_MAX_UINT32); + if (rc == osl::FileBase::E_NOENT) { + break; + } + if (rc != osl::FileBase::E_None) { +- throw css::uno::RuntimeException( +- ("cannot iterate directory " + url + ": " +- + OUString::valueOf(static_cast< sal_Int32 >(rc))), +- css::uno::Reference< css::uno::XInterface >()); ++ SAL_WARN( ++ "desktop","cannot iterate directory " << url << ": " << +rc); ++ break; + } + osl::FileStatus stat( + osl_FileStatus_Mask_Type | osl_FileStatus_Mask_FileName | + osl_FileStatus_Mask_FileURL); + rc = i.getFileStatus(stat); + if (rc != osl::FileBase::E_None) { +- throw css::uno::RuntimeException( +- ("cannot stat in directory " + url + ": " +- + OUString::valueOf(static_cast< sal_Int32 >(rc))), +- css::uno::Reference< css::uno::XInterface >()); ++ SAL_WARN( ++ "desktop", "cannot stat in directory " << url << ": " << +rc); ++ continue; + } + if (stat.getFileType() == osl::FileStatus::Directory) { //TODO: symlinks + removeTree(stat.getFileURL()); + } else { + rc = osl::File::remove(stat.getFileURL()); +- if (rc != osl::FileBase::E_None) { +- throw css::uno::RuntimeException( +- ("cannot remove file " + stat.getFileURL() + ": " +- + OUString::valueOf(static_cast< sal_Int32 >(rc))), +- css::uno::Reference< css::uno::XInterface >()); +- } ++ SAL_WARN_IF( ++ rc != osl::FileBase::E_None, "desktop", ++ "cannot remove file " << stat.getFileURL() << ": " << +rc); + } + } +- osl::FileBase::RC rc = osl::Directory::remove(url); ++ if (dir.isOpen()) { ++ rc = dir.close(); ++ SAL_WARN_IF( ++ rc != osl::FileBase::E_None, "desktop", ++ "cannot close directory " << url << ": " << +rc); ++ } ++ rc = osl::Directory::remove(url); + SAL_WARN_IF( + rc != osl::FileBase::E_None, "desktop", + "cannot remove directory " << url << ": " << +rc); +- // at least on Windows XP removing some existing directories fails with +- // osl::FileBase::E_ACCESS because they are read-only; but keeping those +- // directories around should be harmless once they are empty + } + +-// Remove any existing UserInstallation's user/extensions/bundled cache +-// remaining from old installations. Apparently due to the old +-// share/prereg/bundled mechanism (disabled since +-// 5c47e5f63a79a9e72ec4a100786b1bbf65137ed4 "fdo#51252 Disable copying +-// share/prereg/bundled to avoid startup crashes"), that cache could contain +-// corrupted information (like a UNO component registered twice, which got +-// changed from active to passive registration in one LO version, but the +-// version of the corresponding bundled extension only incremented in a later LO +-// version). At least in theory, this function could be removed again once no +-// UserInstallation can be poisoned by that old share/prereg/bundled mechanism +-// any more. (But then Desktop::SynchronizeExtensionRepositories might need to +-// be revisited, see 2d2b19dea1ab401b1b4971ff5b12b87bb11fd666 "Force +-// ExtensionManager resync when the implementation changes" which effectively +-// got reverted again now. Now, a mismatch between a UserInstallation's +-// user/extensions/bundled and an installation's share/extensions will always be +-// detected here and lead to a removal of user/extensions/bundled, so that +-// Desktop::SynchronizeExtensionRepositories will then definitely resync +-// share/extensions.) ++// Remove any existing UserInstallation's extensions cache data remaining from ++// old installations. This addresses at least two problems: ++// ++// For one, apparently due to the old share/prereg/bundled mechanism (disabled ++// since 5c47e5f63a79a9e72ec4a100786b1bbf65137ed4 "fdo#51252 Disable copying ++// share/prereg/bundled to avoid startup crashes"), the user/extensions/bundled ++// cache could contain corrupted information (like a UNO component registered ++// twice, which got changed from active to passive registration in one LO ++// version, but the version of the corresponding bundled extension only ++// incremented in a later LO version). ++// ++// For another, UserInstallations have been seen in the wild where no extensions ++// were installed per-user (any longer), but user/uno_packages/cache/registry/ ++// com.sun.star.comp.deployment.component.PackageRegistryBackend/*.rdb files ++// contained data nevertheless. ++// ++// When a LO upgrade is detected (i.e., no/ user/extensions/bundled/buildid or ++// one containing an old build ID), then user/extensions/bundled, ++// user/extensions/shared, and user/uno_packages/cache/registry/ ++// com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc are ++// removed. That should prevent any problems starting the service manager due ++// to old junk. Later on in Desktop::SynchronizeExtensionRepositories, the ++// removed cache data is recreated. ++// + // As a special case, if you create a UserInstallation with LO >= 3.6.1, then + // run an old LO <= 3.5.x using share/prereg/bundled on the same + // UserInstallation (so that it partially overwrites user/extensions/bundled, +@@ -230,33 +234,50 @@ void removeTree(OUString const & url) { + // <= 3.5.x messed with user/extensions/bundled in the meantime, then it would + // have rewritten the unorc (dropping the token), and LO >= 3.6.1 can detect + // that. +-void refreshBundledExtensionsDir() { ++// ++// Multiple instances of soffice.bin can execute this code in parallel for a ++// single UserInstallation, as it is called before OfficeIPCThread is set up. ++// Therefore, any errors here only lead to SAL_WARNs. ++// ++// At least in theory, this function could be removed again once no ++// UserInstallation can be poisoned by old junk any more. ++bool cleanExtensionCache() { + OUString buildId( + "${$BRAND_BASE_DIR/program/" SAL_CONFIGFILE("version") ":buildid}"); + rtl::Bootstrap::expandMacros(buildId); //TODO: detect failure +- OUString dir("$BUNDLED_EXTENSIONS_USER"); +- rtl::Bootstrap::expandMacros(dir); //TODO: detect failure +- OUString url(dir + "/buildid"); +- OUString nonPrereg( +- "${$BUNDLED_EXTENSIONS_USER/registry/" +- "com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc:" +- "LIBO_NON_PREREG_BUNDLED_EXTENSIONS}"); +- rtl::Bootstrap::expandMacros(nonPrereg); +- if (nonPrereg == "TRUE") { +- osl::File f(url); +- switch (f.open(osl_File_OpenFlag_Read)) { ++ OUString extDir( ++ "${$BRAND_BASE_DIR/program/" SAL_CONFIGFILE("bootstrap") ++ ":UserInstallation}/user/extensions"); ++ rtl::Bootstrap::expandMacros(extDir); //TODO: detect failure ++ OUString bundledDir = extDir + "/bundled"; ++ OUString buildIdFile(bundledDir + "/buildid"); ++ OUString bundledRcFile( ++ "$BUNDLED_EXTENSIONS_USER/registry/" ++ "com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc"); ++ rtl::Bootstrap::expandMacros(bundledRcFile); //TODO: detect failure ++ rtl::Bootstrap bundledRc(bundledRcFile); ++ OUString nonPrereg; ++ if (bundledRc.getHandle() == 0 ++ || (bundledRc.getFrom("LIBO_NON_PREREG_BUNDLED_EXTENSIONS", nonPrereg) ++ && nonPrereg == "TRUE")) ++ { ++ osl::File f(buildIdFile); ++ osl::FileBase::RC rc = f.open(osl_File_OpenFlag_Read); ++ switch (rc) { + case osl::FileBase::E_None: + { + rtl::ByteSequence s1; +- osl::FileBase::RC rc = f.readLine(s1); +- if (f.close() != osl::FileBase::E_None) { +- SAL_WARN( +- "desktop", "cannot close " + url + " after reading"); +- } ++ rc = f.readLine(s1); ++ osl::FileBase::RC rc2 = f.close(); ++ SAL_WARN_IF( ++ rc2 != osl::FileBase::E_None, "desktop", ++ "cannot close " << buildIdFile << " after reading: " ++ << +rc2); + if (rc != osl::FileBase::E_None) { +- throw css::uno::RuntimeException( +- "cannot read from " + url, +- css::uno::Reference< css::uno::XInterface >()); ++ SAL_WARN( ++ "desktop", ++ "cannot read from " << buildIdFile << ": " << +rc); ++ break; + } + OUString s2( + reinterpret_cast< char const * >(s1.getConstArray()), +@@ -264,53 +285,56 @@ void refreshBundledExtensionsDir() { + // using ISO 8859-1 avoids any and all conversion errors; + // the content should only be a subset of ASCII, anyway + if (s2 == buildId) { +- return; ++ return false; + } + break; + } + case osl::FileBase::E_NOENT: + break; + default: +- throw css::uno::RuntimeException( +- "cannot open " + url + " for reading", +- css::uno::Reference< css::uno::XInterface >()); ++ SAL_WARN( ++ "desktop", ++ "cannot open " << buildIdFile << " for reading: " << +rc); ++ break; + } + } +- removeTree(dir); +- switch (osl::Directory::createPath(dir)) { +- case osl::FileBase::E_None: +- case osl::FileBase::E_EXIST: +- break; +- default: +- throw css::uno::RuntimeException( +- "cannot create path " + dir, +- css::uno::Reference< css::uno::XInterface >()); +- } +- osl::File f(url); +- if (f.open(osl_File_OpenFlag_Write | osl_File_OpenFlag_Create) != +- osl::FileBase::E_None) +- { +- throw css::uno::RuntimeException( +- "cannot open " + url + " for writing", +- css::uno::Reference< css::uno::XInterface >()); ++ removeTree(extDir); ++ OUString userRcFile( ++ "$UNO_USER_PACKAGES_CACHE/registry/" ++ "com.sun.star.comp.deployment.component.PackageRegistryBackend/unorc"); ++ rtl::Bootstrap::expandMacros(userRcFile); //TODO: detect failure ++ osl::FileBase::RC rc = osl::File::remove(userRcFile); ++ SAL_WARN_IF( ++ rc != osl::FileBase::E_None && rc != osl::FileBase::E_NOENT, "desktop", ++ "cannot remove file " << userRcFile << ": " << +rc); ++ rc = osl::Directory::createPath(bundledDir); ++ SAL_WARN_IF( ++ rc != osl::FileBase::E_None && rc != osl::FileBase::E_EXIST, "desktop", ++ "cannot create path " << bundledDir << ": " << +rc); ++ osl::File f(buildIdFile); ++ rc = f.open(osl_File_OpenFlag_Write | osl_File_OpenFlag_Create); ++ if (rc != osl::FileBase::E_None) { ++ SAL_WARN( ++ "desktop", ++ "cannot open " << buildIdFile << " for writing: " << +rc); ++ return true; + } + rtl::OString buf(OUStringToOString(buildId, RTL_TEXTENCODING_UTF8)); + // using UTF-8 avoids almost all conversion errors (and buildid + // containing single surrogate halves should never happen, anyway); the + // content should only be a subset of ASCII, anyway +- sal_uInt64 n; +- if (f.write(buf.getStr(), buf.getLength(), n) != osl::FileBase::E_None +- || n != static_cast< sal_uInt32 >(buf.getLength())) +- { +- throw css::uno::RuntimeException( +- "cannot write to " + url, +- css::uno::Reference< css::uno::XInterface >()); +- } +- if (f.close() != osl::FileBase::E_None) { +- throw css::uno::RuntimeException( +- "cannot close " + url + " after writing", +- css::uno::Reference< css::uno::XInterface >()); +- } ++ sal_uInt64 n = 0; ++ rc = f.write(buf.getStr(), buf.getLength(), n); ++ SAL_WARN_IF( ++ (rc != osl::FileBase::E_None ++ || n != static_cast< sal_uInt32 >(buf.getLength())), ++ "desktop", ++ "cannot write to " << buildIdFile << ": " << +rc << ", " << n); ++ rc = f.close(); ++ SAL_WARN_IF( ++ rc != osl::FileBase::E_None, "desktop", ++ "cannot close " << buildIdFile << " after writing: " << +rc); ++ return true; + } + + } +@@ -538,7 +562,8 @@ rtl::OUString ReplaceStringHookProc( const rtl::OUString& rStr ) + } + + Desktop::Desktop() +-: m_bServicesRegistered( false ) ++: m_bCleanedExtensionCache( false ) ++, m_bServicesRegistered( false ) + , m_aBootstrapError( BE_OK ) + { + RTL_LOGFILE_TRACE( "desktop (cd100003) ::Desktop::Desktop" ); +@@ -553,7 +578,7 @@ void Desktop::Init() + RTL_LOGFILE_CONTEXT( aLog, "desktop (cd100003) ::Desktop::Init" ); + SetBootstrapStatus(BS_OK); + +- refreshBundledExtensionsDir(); ++ m_bCleanedExtensionCache = cleanExtensionCache(); + + // We need to have service factory before going further, but see fdo#37195. + // Doing this will mmap common.rdb, making it not overwritable on windows, +diff --git a/desktop/source/app/check_ext_deps.cxx b/desktop/source/app/check_ext_deps.cxx +index dd01d9b..a6221a9 100644 +--- a/desktop/source/app/check_ext_deps.cxx ++++ b/desktop/source/app/check_ext_deps.cxx +@@ -51,6 +51,7 @@ + #include "com/sun/star/deployment/ExtensionManager.hpp" + #include "com/sun/star/deployment/LicenseException.hpp" + #include "com/sun/star/deployment/ui/LicenseDialog.hpp" ++#include <com/sun/star/task/OfficeRestartManager.hpp> + #include <com/sun/star/task/XJob.hpp> + #include <com/sun/star/task/XJobExecutor.hpp> + #include <com/sun/star/task/XInteractionApprove.hpp> +@@ -77,12 +78,15 @@ class SilentCommandEnv + task::XInteractionHandler, + ucb::XProgressHandler > + { ++ uno::Reference<uno::XComponentContext> mxContext; + Desktop *mpDesktop; + sal_Int32 mnLevel; + sal_Int32 mnProgress; + + public: +- SilentCommandEnv( Desktop* pDesktop ); ++ SilentCommandEnv( ++ uno::Reference<uno::XComponentContext> const & xContext, ++ Desktop* pDesktop ); + virtual ~SilentCommandEnv(); + + // XCommandEnvironment +@@ -105,12 +109,14 @@ public: + }; + + //----------------------------------------------------------------------------- +-SilentCommandEnv::SilentCommandEnv( Desktop* pDesktop ) +-{ +- mpDesktop = pDesktop; +- mnLevel = 0; +- mnProgress = 25; +-} ++SilentCommandEnv::SilentCommandEnv( ++ uno::Reference<uno::XComponentContext> const & xContext, ++ Desktop* pDesktop ): ++ mxContext( xContext ), ++ mpDesktop( pDesktop ), ++ mnLevel( 0 ), ++ mnProgress( 25 ) ++{} + + //----------------------------------------------------------------------------- + SilentCommandEnv::~SilentCommandEnv() +@@ -144,10 +150,9 @@ void SilentCommandEnv::handle( Reference< task::XInteractionRequest> const & xRe + + if ( request >>= licExc ) + { +- uno::Reference< uno::XComponentContext > xContext = comphelper_getProcessComponentContext(); + uno::Reference< ui::dialogs::XExecutableDialog > xDialog( + deployment::ui::LicenseDialog::create( +- xContext, VCLUnoHelper::GetInterface( NULL ), ++ mxContext, VCLUnoHelper::GetInterface( NULL ), + licExc.ExtensionName, licExc.Text ) ); + sal_Int16 res = xDialog->execute(); + if ( res == ui::dialogs::ExecutableDialogResults::CANCEL ) +@@ -416,7 +421,20 @@ sal_Bool Desktop::CheckExtensionDependencies() + void Desktop::SynchronizeExtensionRepositories() + { + RTL_LOGFILE_CONTEXT(aLog,"desktop (jl) ::Desktop::SynchronizeExtensionRepositories"); +- dp_misc::syncRepositories( new SilentCommandEnv( this ) ); ++ uno::Reference< uno::XComponentContext > context( ++ comphelper_getProcessComponentContext()); ++ uno::Reference< ucb::XCommandEnvironment > silent( ++ new SilentCommandEnv(context, this)); ++ if (m_bCleanedExtensionCache) { ++ deployment::ExtensionManager::get(context)->reinstallDeployedExtensions( ++ true, "user", Reference<task::XAbortChannel>(), silent); ++ task::OfficeRestartManager::get(context)->requestRestart( ++ silent->getInteractionHandler()); ++ } else { ++ // reinstallDeployedExtensions above already calls syncRepositories ++ // internally: ++ dp_misc::syncRepositories(m_bCleanedExtensionCache, silent); ++ } + } + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ +diff --git a/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx b/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx +index 29ded17..7795e309 100644 +--- a/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx ++++ b/desktop/source/deployment/gui/dp_gui_extensioncmdqueue.cxx +@@ -1124,7 +1124,7 @@ void ExtensionCmdQueue::acceptLicense( const uno::Reference< deployment::XPackag + + void ExtensionCmdQueue::syncRepositories( const uno::Reference< uno::XComponentContext > &xContext ) + { +- dp_misc::syncRepositories( new ProgressCmdEnv( xContext, NULL, OUSTR("Extension Manager") ) ); ++ dp_misc::syncRepositories( false, new ProgressCmdEnv( xContext, NULL, OUSTR("Extension Manager") ) ); + } + + void ExtensionCmdQueue::stop() +diff --git a/desktop/source/deployment/inc/dp_misc.h b/desktop/source/deployment/inc/dp_misc.h +index 29fd140..06e67aa 100644 +--- a/desktop/source/deployment/inc/dp_misc.h ++++ b/desktop/source/deployment/inc/dp_misc.h +@@ -154,8 +154,10 @@ void TRACE(::rtl::OUString const & sText); + recently added or removed. + */ + DESKTOP_DEPLOYMENTMISC_DLLPUBLIC +-void syncRepositories(::com::sun::star::uno::Reference< +- ::com::sun::star::ucb::XCommandEnvironment> const & xCmdEnv); ++void syncRepositories( ++ bool force, ++ ::com::sun::star::uno::Reference< ++ ::com::sun::star::ucb::XCommandEnvironment> const & xCmdEnv); + + } + +diff --git a/desktop/source/deployment/manager/dp_extensionmanager.cxx b/desktop/source/deployment/manager/dp_extensionmanager.cxx +index 68403f1..b3c21b4 100644 +--- a/desktop/source/deployment/manager/dp_extensionmanager.cxx ++++ b/desktop/source/deployment/manager/dp_extensionmanager.cxx +@@ -1205,9 +1205,10 @@ uno::Sequence< uno::Sequence<Reference<deploy::XPackage> > > + } + } + +-//only to be called from unopkg!!! ++// Only to be called from unopkg or soffice bootstrap (with force=true in the ++// latter case): + void ExtensionManager::reinstallDeployedExtensions( +- OUString const & repository, ++ sal_Bool force, OUString const & repository, + Reference<task::XAbortChannel> const & xAbortChannel, + Reference<ucb::XCommandEnvironment> const & xCmdEnv ) + throw (deploy::DeploymentException, +@@ -1220,10 +1221,11 @@ void ExtensionManager::reinstallDeployedExtensions( + xPackageManager = getPackageManager(repository); + + ::osl::MutexGuard guard(getMutex()); +- xPackageManager->reinstallDeployedPackages(xAbortChannel, xCmdEnv); ++ xPackageManager->reinstallDeployedPackages( ++ force, xAbortChannel, xCmdEnv); + //We must sync here, otherwise we will get exceptions when extensions + //are removed. +- dp_misc::syncRepositories(xCmdEnv); ++ dp_misc::syncRepositories(force, xCmdEnv); + const uno::Sequence< Reference<deploy::XPackage> > extensions( + xPackageManager->getDeployedPackages(xAbortChannel, xCmdEnv)); + +diff --git a/desktop/source/deployment/manager/dp_extensionmanager.hxx b/desktop/source/deployment/manager/dp_extensionmanager.hxx +index 22e2d41..ec1edbc 100644 +--- a/desktop/source/deployment/manager/dp_extensionmanager.hxx ++++ b/desktop/source/deployment/manager/dp_extensionmanager.hxx +@@ -182,7 +182,7 @@ public: + css::uno::RuntimeException); + + virtual void SAL_CALL reinstallDeployedExtensions( +- ::rtl::OUString const & repository, ++ sal_Bool force, ::rtl::OUString const & repository, + css::uno::Reference< css::task::XAbortChannel> const & xAbortChannel, + css::uno::Reference< css::ucb::XCommandEnvironment> const & xCmdEnv ) + throw ( +diff --git a/desktop/source/deployment/manager/dp_manager.cxx b/desktop/source/deployment/manager/dp_manager.cxx +index 8a08320c..8e3d109 100644 +--- a/desktop/source/deployment/manager/dp_manager.cxx ++++ b/desktop/source/deployment/manager/dp_manager.cxx +@@ -1164,14 +1164,14 @@ PackageManagerImpl::getDeployedPackages( + //ToDo: the function must not call registerPackage, do this in + //XExtensionManager.reinstallDeployedExtensions + void PackageManagerImpl::reinstallDeployedPackages( +- Reference<task::XAbortChannel> const & /*xAbortChannel*/, ++ sal_Bool force, Reference<task::XAbortChannel> const & /*xAbortChannel*/, + Reference<XCommandEnvironment> const & xCmdEnv_ ) + throw (deployment::DeploymentException, + CommandFailedException, CommandAbortedException, + lang::IllegalArgumentException, RuntimeException) + { + check(); +- if (office_is_running()) ++ if (!force && office_is_running()) + throw RuntimeException( + OUSTR("You must close any running Office process before " + "reinstalling packages!"), static_cast<OWeakObject *>(this) ); +diff --git a/desktop/source/deployment/manager/dp_manager.h b/desktop/source/deployment/manager/dp_manager.h +index 3b335d7..3c7f8d9 100644 +--- a/desktop/source/deployment/manager/dp_manager.h ++++ b/desktop/source/deployment/manager/dp_manager.h +@@ -236,6 +236,7 @@ public: + css::uno::RuntimeException); + + virtual void SAL_CALL reinstallDeployedPackages( ++ sal_Bool force, + css::uno::Reference<css::task::XAbortChannel> const & xAbortChannel, + css::uno::Reference<css::ucb::XCommandEnvironment> const & xCmdEnv ) + throw (css::deployment::DeploymentException, +diff --git a/desktop/source/deployment/misc/dp_misc.cxx b/desktop/source/deployment/misc/dp_misc.cxx +index b225db6..9ed579f 100644 +--- a/desktop/source/deployment/misc/dp_misc.cxx ++++ b/desktop/source/deployment/misc/dp_misc.cxx +@@ -591,7 +591,7 @@ void TRACE(::rtl::OString const & sText) + } + + void syncRepositories( +- Reference<ucb::XCommandEnvironment> const & xCmdEnv) ++ bool force, Reference<ucb::XCommandEnvironment> const & xCmdEnv) + { + OUString sDisable; + ::rtl::Bootstrap::get( OUSTR( "DISABLE_EXTENSION_SYNCHRONIZATION" ), sDisable, OUString() ); +@@ -602,7 +602,8 @@ void syncRepositories( + //synchronize shared before bundled otherewise there are + //more revoke and registration calls. + sal_Bool bModified = false; +- if (needToSyncRepostitory(OUString(RTL_CONSTASCII_USTRINGPARAM("shared"))) ++ if (force ++ || needToSyncRepostitory(OUString(RTL_CONSTASCII_USTRINGPARAM("shared"))) + || needToSyncRepostitory(OUString(RTL_CONSTASCII_USTRINGPARAM("bundled")))) + { + xExtensionManager = +diff --git a/desktop/source/pkgchk/unopkg/unopkg_app.cxx b/desktop/source/pkgchk/unopkg/unopkg_app.cxx +index 43faed5..ef16ea1 100644 +--- a/desktop/source/pkgchk/unopkg/unopkg_app.cxx ++++ b/desktop/source/pkgchk/unopkg/unopkg_app.cxx +@@ -392,7 +392,7 @@ extern "C" DESKTOP_DLLPUBLIC int unopkg_main() + //synching is done in XExtensionManager.reinstall + if (!subcmd_gui && ! subCommand.equals(OUSTR("reinstall")) + && ! dp_misc::office_is_running()) +- dp_misc::syncRepositories(xCmdEnv); ++ dp_misc::syncRepositories(false, xCmdEnv); + + if ( subcmd_add || subCommand == "remove" ) + { +@@ -436,7 +436,7 @@ extern "C" DESKTOP_DLLPUBLIC int unopkg_main() + RTL_CONSTASCII_STRINGPARAM("reinstall") )) + { + xExtensionManager->reinstallDeployedExtensions( +- repository, Reference<task::XAbortChannel>(), xCmdEnv); ++ false, repository, Reference<task::XAbortChannel>(), xCmdEnv); + } + else if ( subCommand == "list" ) + { +diff --git a/offapi/com/sun/star/deployment/XExtensionManager.idl b/offapi/com/sun/star/deployment/XExtensionManager.idl +index b68ab20..2912e45 100644 +--- a/offapi/com/sun/star/deployment/XExtensionManager.idl ++++ b/offapi/com/sun/star/deployment/XExtensionManager.idl +@@ -260,6 +260,9 @@ interface XExtensionManager + <p> + Please use this in case of suspected cache inconsistencies only. + </p> ++ @param force ++ set to true when called during soffice bootstrap after cleaning ++ old extension cache + @param repositroy + the name of the repository + @param xAbortChannel +@@ -268,6 +271,7 @@ interface XExtensionManager + command environment for error and progress handling + */ + void reinstallDeployedExtensions( ++ [in] boolean force, + [in] string repository, + [in] com::sun::star::task::XAbortChannel xAbortChannel, + [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv ) +diff --git a/offapi/com/sun/star/deployment/XPackageManager.idl b/offapi/com/sun/star/deployment/XPackageManager.idl +index 12e7e0e..39ff04a 100644 +--- a/offapi/com/sun/star/deployment/XPackageManager.idl ++++ b/offapi/com/sun/star/deployment/XPackageManager.idl +@@ -225,12 +225,16 @@ interface XPackageManager + Please use this in case of suspected cache inconsistencies only. + </p> + ++ @param force ++ set to true when called during soffice bootstrap after cleaning ++ old extension cache + @param xAbortChannel + abort channel to asynchronously abort the adding process + @param xCmdEnv + command environment for error and progress handling + */ + void reinstallDeployedPackages( ++ [in] boolean force, + [in] com::sun::star::task::XAbortChannel xAbortChannel, + [in] com::sun::star::ucb::XCommandEnvironment xCmdEnv ) + raises (DeploymentException, +-- +cgit v0.9.0.2-2-gbebe diff --git a/testing/libreoffice/libreoffice-common.csh b/testing/libreoffice/libreoffice-common.csh index af31d4432..5efa39404 100644 --- a/testing/libreoffice/libreoffice-common.csh +++ b/testing/libreoffice/libreoffice-common.csh @@ -1 +1,8 @@ #setenv PYTHONPATH ${PYTHONPATH}:/usr/lib/libreoffice/program + +# to force a certain look'n feel + +#setenv SAL_USE_VCLPLUGIN gen +#setenv SAL_USE_VCLPLUGIN kde4 +#setenv SAL_USE_VCLPLUGIN gtk +#setenv SAL_USE_VCLPLUGIN gtk3 diff --git a/testing/libreoffice/libreoffice-common.sh b/testing/libreoffice/libreoffice-common.sh index ee405b1aa..795867125 100644 --- a/testing/libreoffice/libreoffice-common.sh +++ b/testing/libreoffice/libreoffice-common.sh @@ -1 +1,8 @@ #export PYTHONPATH="$PYTHONPATH:/usr/lib/libreoffice/program" + +# to force a certain look'n feel + +#export SAL_USE_VCLPLUGIN=gen +#export SAL_USE_VCLPLUGIN=kde4 +#export SAL_USE_VCLPLUGIN=gtk +#export SAL_USE_VCLPLUGIN=gtk3 diff --git a/testing/openssh/PKGBUILD b/testing/openssh/PKGBUILD index 1748d58cc..b458cc960 100644 --- a/testing/openssh/PKGBUILD +++ b/testing/openssh/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 165684 2012-08-29 05:14:58Z bisson $ +# $Id: PKGBUILD 165904 2012-09-03 13:01:11Z bisson $ # Maintainer: Gaetan Bisson <bisson@archlinux.org> # Contributor: Aaron Griffin <aaron@archlinux.org> # Contributor: judd <jvinet@zeroflux.org> pkgname=openssh pkgver=6.1p1 -pkgrel=1 +pkgrel=2 pkgdesc='Free version of the SSH connectivity tools' url='http://www.openssh.org/portable.html' license=('custom:BSD') @@ -27,8 +27,8 @@ sha1sums=('751c92c912310c3aa9cadc113e14458f843fc7b3' '954bf1660aa32620c37034320877f4511b767ccb' '6c71de2c2ca9622aa8e863acd94b135555e11125' 'bd6eae36c7ef9efb7147778baad7858b81f2d660' - 'f27617eeb694f4edd474638adf16733d8a793d85' - 'a30fb5fda6d0143345bae47684edaffb8d0a92a7' + '1fd209980ee2fcdd7b219883e8add0f5ca63388a' + 'b7acfce018efc111e7ce80dbe37b932caf7c2d53' 'ec102deb69cad7d14f406289d2fc11fee6eddbdd' '659e3ee95c269014783ff8b318c6f50bf7496fbd' '1488d4ed33cf3037accf4b0e1c7a7e90b6a097c7') diff --git a/testing/openssh/sshd.service b/testing/openssh/sshd.service index 4a5910873..b5c098b73 100644 --- a/testing/openssh/sshd.service +++ b/testing/openssh/sshd.service @@ -1,5 +1,6 @@ [Unit] Description=OpenSSH Daemon +Wants=sshdgenkeys.service After=sshdgenkeys.service [Service] diff --git a/testing/openssh/sshd.socket b/testing/openssh/sshd.socket index 6a67bfe86..1b9403c99 100644 --- a/testing/openssh/sshd.socket +++ b/testing/openssh/sshd.socket @@ -1,5 +1,6 @@ [Unit] Conflicts=sshd.service +Wants=sshdgenkeys.service [Socket] ListenStream=22 diff --git a/testing/xcompmgr/PKGBUILD b/testing/xcompmgr/PKGBUILD new file mode 100644 index 000000000..f9439333a --- /dev/null +++ b/testing/xcompmgr/PKGBUILD @@ -0,0 +1,33 @@ +# $Id: PKGBUILD 165902 2012-09-03 10:37:05Z andyrtr $ +# Maintainer: Jan de Groot <jgc@archlinux.org> +# Contributor: Leslie P. Polzer <leslie.polzer@gmx.net> + +pkgname=xcompmgr +pkgver=1.1.6 +pkgrel=2 +pkgdesc="Composite Window-effects manager for X.org" +arch=('i686' 'x86_64') +url="http://xorg.freedesktop.org/" +license=('custom') +depends=('libxcomposite' 'libxdamage' 'libxrender' 'libxext') +conflicts=('xapps') +replaces=('xapps') +source=(http://xorg.freedesktop.org/releases/individual/app/${pkgname}-${pkgver}.tar.bz2 + fix_broken_shadows.diff) +sha1sums=('a9cf78ea32bac51ff584115381f195566b164fe3' + '435f9f0ad652bdd759f822514bf1559abf119ffe') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + # fix broken shadows in openbox - patch takern from https://bugs.freedesktop.org/show_bug.cgi?id=46285 + patch -Np0 -i ${srcdir}/fix_broken_shadows.diff + ./configure --prefix=/usr + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" +} diff --git a/testing/xcompmgr/fix_broken_shadows.diff b/testing/xcompmgr/fix_broken_shadows.diff new file mode 100644 index 000000000..39b8ac725 --- /dev/null +++ b/testing/xcompmgr/fix_broken_shadows.diff @@ -0,0 +1,28 @@ +--- xcompmgr.c 2011-11-19 01:49:52.000000000 -0600 ++++ xcompmgr.c 2012-08-11 21:58:58.000000000 -0500 +@@ -1028,7 +1028,6 @@ + { + w->borderClip = XFixesCreateRegion (dpy, NULL, 0); + XFixesCopyRegion (dpy, w->borderClip, region); +- XFixesIntersectRegion(dpy, w->borderClip, w->borderClip, w->borderSize); + } + w->prev_trans = t; + t = w; +@@ -1080,6 +1079,8 @@ + if (w->mode == WINDOW_TRANS) + { + int x, y, wid, hei; ++ XFixesIntersectRegion(dpy, w->borderClip, w->borderClip, w->borderSize); ++ XFixesSetPictureClipRegion(dpy, rootBuffer, 0, 0, w->borderClip); + #if HAS_NAME_WINDOW_PIXMAP + x = w->a.x; + y = w->a.y; +@@ -1099,6 +1100,8 @@ + else if (w->mode == WINDOW_ARGB) + { + int x, y, wid, hei; ++ XFixesIntersectRegion(dpy, w->borderClip, w->borderClip, w->borderSize); ++ XFixesSetPictureClipRegion(dpy, rootBuffer, 0, 0, w->borderClip); + #if HAS_NAME_WINDOW_PIXMAP + x = w->a.x; + y = w->a.y; |