openSUSE Commits
Threads by month
- ----- 2024 -----
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
December 2015
- 1 participants
- 1093 discussions
Hello community,
here is the log from the commit of package xf86-input-libinput for openSUSE:Factory checked in at 2015-12-29 13:00:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xf86-input-libinput (Old)
and /work/SRC/openSUSE:Factory/.xf86-input-libinput.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xf86-input-libinput"
Changes:
--------
--- /work/SRC/openSUSE:Factory/xf86-input-libinput/xf86-input-libinput.changes 2015-12-16 17:45:16.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.xf86-input-libinput.new/xf86-input-libinput.changes 2015-12-29 13:00:15.000000000 +0100
@@ -1,0 +2,16 @@
+Thu Dec 24 12:47:56 UTC 2015 - tobias.johannes.klausmann(a)mni.thm.de
+
+- Update to version 0.16.0:
+ This release fixes a long-standing issue with mixed devices that expose a
+ pointer and a keyboard interface at the same time. X requires a strict
+ separation between pointers and keyboards, these devices were usually
+ initialized as pointers and exhibited some keyboard functionality issues
+ (e.g. XKB layouts didn't get applied correctly). With this release, the xorg
+ libinput driver splits such devices into multiple X devices, one for the
+ keyboard and one for the pointer, routing the events as necessary and thus
+ fixing those issues.
+- Changes to package:
+ + Remove patch U_xf86_input_libinput_mem_leak_fix.patch: included in this
+ release.
+
+-------------------------------------------------------------------
Old:
----
U_xf86_input_libinput_mem_leak_fix.patch
xf86-input-libinput-0.15.0.tar.bz2
xf86-input-libinput-0.15.0.tar.bz2.sig
New:
----
xf86-input-libinput-0.16.0.tar.bz2
xf86-input-libinput-0.16.0.tar.bz2.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xf86-input-libinput.spec ++++++
--- /var/tmp/diff_new_pack.sVdLzm/_old 2015-12-29 13:00:16.000000000 +0100
+++ /var/tmp/diff_new_pack.sVdLzm/_new 2015-12-29 13:00:16.000000000 +0100
@@ -17,7 +17,7 @@
Name: xf86-input-libinput
-Version: 0.15.0
+Version: 0.16.0
Release: 0
Summary: Libinput driver for the Xorg X server
License: MIT
@@ -27,7 +27,6 @@
Source1: http://xorg.freedesktop.org/releases/individual/driver/%{name}-%{version}.t…
Source2: %{name}.keyring
Patch0: n_enable-tapping.patch
-Patch1: U_xf86_input_libinput_mem_leak_fix.patch
BuildRequires: pkg-config
BuildRequires: pkgconfig(inputproto)
BuildRequires: pkgconfig(libinput) >= 1.0.901
@@ -59,7 +58,6 @@
%prep
%setup -q
%patch0 -p1
-%patch1 -p1
%build
%configure
@@ -78,6 +76,7 @@
%defattr(-,root,root)
%doc COPYING*
%dir %{_libdir}/xorg/modules/input
+%dir %{_sysconfdir}/X11/xorg.conf.d
%{_libdir}/xorg/modules/input/libinput_drv.so
%{_datadir}/man/man4/libinput.4%{?ext_man}
%config %{_sysconfdir}/X11/xorg.conf.d/90-libinput.conf
++++++ xf86-input-libinput-0.15.0.tar.bz2 -> xf86-input-libinput-0.16.0.tar.bz2 ++++++
++++ 21172 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-libinput-0.15.0/ChangeLog new/xf86-input-libinput-0.16.0/ChangeLog
--- old/xf86-input-libinput-0.15.0/ChangeLog 2015-10-27 08:17:42.000000000 +0100
+++ new/xf86-input-libinput-0.16.0/ChangeLog 2015-12-23 04:55:18.000000000 +0100
@@ -1,3 +1,245 @@
+commit 0d1851a000c5a80ba9b5787f516d2d72c62ce35e
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Wed Dec 23 13:53:38 2015 +1000
+
+ xf86-input-libinput 0.16.0
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+
+commit ad8483b91387e99282a9b5a8360e8de7eed70257
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Tue Dec 15 13:20:55 2015 +1000
+
+ Drain the fd after opening
+
+ Make sure we don't send any events that may have been enqueued before we
+ initialized ourselves. Specifically, if we're using systemd-logind the fd
+ remains open when we disable/enable the device, allowing events to queue up on
+ the fd. These events are then replayed once the device is re-opened.
+
+ This is not the case when VT-switching, in that case logind closes the fd for
+ us.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ Reviewed-by: Keith Packard <keithp(a)keithp.com>
+
+commit 1f43f3921f6ceebd9a0cb92ef998a930d5fc3a3e
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Wed Nov 11 10:10:58 2015 +1000
+
+ Split mixed pointer/keyboard devices into two separate X devices
+
+ The server struggles with devices that are both, the protocol (especially XI2)
+ requires a fairly strict separation of pointer vs keyboard devices. Though the
+ server has a couple of hacks to route events correctly, mixed
+ devices still experience bugs like [1].
+
+ Instead of advertising the device as a single mixed device, split the device
+ into two X devices, one with only a pointer/touch component, one with only a
+ keyboard component. This ensures that the device is effectively attached to
+ both the VCP and the VCK, something the XI2 protocol doesn't really allow.
+
+ This patch drops the keyboard capability on a mixed device, duplicates the
+ input options and attributes and queues a NewInputDeviceRequest call. The new
+ device only has the keyboard capability but is otherwise unchanged. The
+ wacom driver has used this approach for years.
+
+ The WorkProc is necessary to avoid inconsistent state, the server doesn't
+ handle a NewInputDeviceRequest during PreInit well.
+
+ The approach:
+ During pre-init we create a struct xf86libinput_device with the
+ libinput_device and a unique ID. The child device has that ID added to the
+ options and will look for the other device during its pre-init. The two
+ devices then share the xf86libinput_device struct.
+
+ We only have a single epollfd for all devices and the server calls read_input
+ on the first device in the list with the epollfd as pInfo->fd. That shared
+ struct is used as the userdata on the libinput_device we get back from the
+ event, and each device is in the xorg_list device_list of that shared struct.
+ We loop through those to find the ones with the right capabilities and
+ post the event through that device.
+
+ Since devices can be enabled and disabled independently, the rest of the code
+ makes sure that we only ever add the device to libinput when the first shared
+ device is enabled, and remove it accordingly.
+
+ The server uses pInfo->major/minor to detect if another device is using the
+ same path for a logind-controlled fd. If so, it reuses that device's
+ pInfo->fd and sets the "fd" option to that value. That pInfo->fd is the
+ libinput epollfd though, not the actual device fd.
+
+ This doesn't matter for us, since we manage the fds largely ourselves and the
+ pInfo->fd we use is the epollfd anyway. On unplug however, the udev code
+ triggers a device removal for all devices, including the duplicated ones. When
+ we disable device, we restore the pInfo->fd from the "fd" option so that the
+ server can request logind to close the fd.
+
+ That only works if the "fd" option is correct, otherwise the server asks
+ logind to close the epollfd and everyone is unhappy.
+
+ [1] https://bugs.freedesktop.org/show_bug.cgi?id=49950
+
+ https://bugs.freedesktop.org/show_bug.cgi?id=92896
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ Reviewed-by: Hans de Goede <hdegoede(a)redhat.com>
+
+commit 83dfd31ec8ec2596648c33059fffb93b19691fae
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Fri Nov 20 10:51:38 2015 +1000
+
+ Revert "Split mixed pointer/keyboard devices into two separate X devices"
+
+ When using logind, this causes the server to hang when a split device is
+ unplugged. The reason is mostly in the server, when open the device by
+ requesting the logind fd, the server loops through the device list to check if
+ any other device has the same major/minor (see systemd_logind_take_fd()) and
+ returns the pInfo->fd for that device instead of requesting the fd again from
+ logind.
+
+ For libinput devices, the pInfo->fd is the epollfd, not the actual device, so
+ our second device gets the epollfd assigned. When the devices are removed, we
+ keep the device fd open and release the epollfd through logind.
+
+ This reverts commit c943739a2bfd4c380db0b21bc35b73deb7496c8a.
+
+commit c943739a2bfd4c380db0b21bc35b73deb7496c8a
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Wed Nov 11 10:10:58 2015 +1000
+
+ Split mixed pointer/keyboard devices into two separate X devices
+
+ The server struggles with devices that are both, the protocol (especially XI2)
+ requires a fairly strict separation of pointer vs keyboard devices. Though the
+ server has a couple of hacks to route events correctly, mixed
+ devices still experience bugs like [1].
+
+ Instead of advertising the device as a single mixed device, split the device
+ into two X devices, one with only a pointer/touch component, one with only a
+ keyboard component. This ensures that the device is effectively attached to
+ both the VCP and the VCK, something the XI2 protocol doesn't really allow.
+
+ This patch drops the keyboard capability on a mixed device, duplicates the
+ input options and attributes and queues a NewInputDeviceRequest call. The new
+ device only has the keyboard capability but is otherwise unchanged. The
+ wacom driver has used this approach for years.
+
+ The WorkProc is necessary to avoid inconsistent state, the server doesn't
+ handle a NewInputDeviceRequest during PreInit well.
+
+ The approach:
+ During pre-init we create a struct xf86libinput_device with the
+ libinput_device and a unique ID. The child device has that ID added to the
+ options and will look for the other device during its pre-init. The two
+ devices then share the xf86libinput_device struct.
+
+ We only have a single epollfd for all devices and the server calls read_input
+ on the first device in the list with the epollfd as pInfo->fd. That shared
+ struct is used as the userdata on the libinput_device we get back from the
+ event, and each device is in the xorg_list device_list of that shared struct.
+ We loop through those to find the ones with the right capabilities and
+ post the event through that device.
+
+ Since devices can be enabled and disabled independently, the rest of the code
+ makes sure that we only ever add the device to libinput when the first shared
+ device is enabled, and remove it accordingly.
+
+ [1] https://bugs.freedesktop.org/show_bug.cgi?id=49950
+
+ https://bugs.freedesktop.org/show_bug.cgi?id=92896
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ Reviewed-by: Hans de Goede <hdegoede(a)redhat.com>
+
+commit a72e96538af2c4a94ead48f96e8e59a2a4980a64
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Fri Nov 13 09:39:29 2015 +1000
+
+ Add a helper function for the driver context initialization
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ Reviewed-by: Hans de Goede <hdegoede(a)redhat.com>
+
+commit b1a9bea6079550fa8be4fa0b2e18ea810b0ea68c
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Wed Nov 11 09:12:33 2015 +1000
+
+ Copy the device capabilities to the X driver struct
+
+ And use those copied caps instead of the direct device capability calls.
+
+ No functional changes at this point, this is preparation work for selectively
+ disabling capabilities on a device.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ Reviewed-by: Hans de Goede <hdegoede(a)redhat.com>
+
+commit a6aad69a97c68fa96e0a836e735b1a7f319b92df
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Wed Nov 11 09:02:22 2015 +1000
+
+ Split type_name detection out into a helper function
+
+ No functional changes
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ Reviewed-by: Hans de Goede <hdegoede(a)redhat.com>
+
+commit 6fa5f30129ea770bcc5e50b0785a993a8254a418
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Tue Nov 17 14:59:22 2015 +1000
+
+ Unref the libinput context on pre_init failure
+
+ A device that fails pre_init has a ref to the libinput context but may not
+ have a pInfo->private. For those devices we never call libinput_unref() and
+ the libinput struct never gets freed.
+
+ Thus if at least one device didn't pass pre_init, we never cleaned up after
+ ourselves.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+ Reviewed-by: Hans de Goede <hdegoede(a)redhat.com>
+
+commit c53dde1a503ace84f755a2a8d0022fba48ad89c2
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Fri Nov 13 10:48:02 2015 +1000
+
+ Don't fail DEVICE_CLOSE
+
+ We're not doing anything here, so no reason to fail.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+
+commit d7331f6e34cedde2a1b8159d58aec0f68796f180
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Fri Nov 13 13:01:45 2015 +1000
+
+ Remove unused server_fds list
+
+ Obsolete as of 353c52f2bec03
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+
+commit fb56f6d7a5139445a36b3468ef7dc61d1c127335
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Fri Nov 13 10:02:16 2015 +1000
+
+ Set the device to NULL after unref
+
+ No real effect in the current code, but it adds a bit of safety.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+
+commit c8861d2a2fd9ef875501a05b8c894045ce96ecc6
+Author: Peter Hutterer <peter.hutterer(a)who-t.net>
+Date: Thu Nov 12 10:02:38 2015 +1000
+
+ Plug two memory leaks
+
+ Signed-off-by: Peter Hutterer <peter.hutterer(a)who-t.net>
+
commit 44f4b2ed7075d424e3621f30815e11875b364c27
Author: Peter Hutterer <peter.hutterer(a)who-t.net>
Date: Tue Oct 27 17:08:59 2015 +1000
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-libinput-0.15.0/config.h.in new/xf86-input-libinput-0.16.0/config.h.in
--- old/xf86-input-libinput-0.15.0/config.h.in 2015-10-27 08:09:22.000000000 +0100
+++ new/xf86-input-libinput-0.16.0/config.h.in 2015-12-23 04:54:42.000000000 +0100
@@ -30,8 +30,7 @@
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
#undef LT_OBJDIR
/* Name of package */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-libinput-0.15.0/configure.ac new/xf86-input-libinput-0.16.0/configure.ac
--- old/xf86-input-libinput-0.15.0/configure.ac 2015-10-27 08:08:47.000000000 +0100
+++ new/xf86-input-libinput-0.16.0/configure.ac 2015-12-23 04:52:26.000000000 +0100
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-input-libinput],
- [0.15.0],
+ [0.16.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-input-libinput])
AC_CONFIG_SRCDIR([Makefile.am])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-input-libinput-0.15.0/src/xf86libinput.c new/xf86-input-libinput-0.16.0/src/xf86libinput.c
--- old/xf86-input-libinput-0.15.0/src/xf86libinput.c 2015-10-26 01:02:19.000000000 +0100
+++ new/xf86-input-libinput-0.16.0/src/xf86libinput.c 2015-12-23 04:52:01.000000000 +0100
@@ -66,17 +66,30 @@
*/
#define TOUCH_AXIS_MAX 0xffff
+#define CAP_KEYBOARD 0x1
+#define CAP_POINTER 0x2
+#define CAP_TOUCH 0x4
+
struct xf86libinput_driver {
struct libinput *libinput;
int device_enabled_count;
- struct xorg_list server_fds;
};
static struct xf86libinput_driver driver_context;
+struct xf86libinput_device {
+ int refcount;
+ int enabled_count;
+ uint32_t id;
+ struct libinput_device *device;
+ struct xorg_list device_list;
+ int server_fd;
+};
+
struct xf86libinput {
+ InputInfoPtr pInfo;
char *path;
- struct libinput_device *device;
+ uint32_t capabilities;
struct {
int vdist;
@@ -118,6 +131,9 @@
} options;
struct draglock draglock;
+
+ struct xf86libinput_device *shared_device;
+ struct xorg_list shared_device_link;
};
static inline int
@@ -160,6 +176,141 @@
return button;
}
+static inline InputInfoPtr
+xf86libinput_get_parent(InputInfoPtr pInfo)
+{
+ InputInfoPtr parent;
+ int parent_id;
+
+ parent_id = xf86CheckIntOption(pInfo->options, "_libinput/shared-device", -1);
+ if (parent_id == -1)
+ return NULL;
+
+ nt_list_for_each_entry(parent, xf86FirstLocalDevice(), next) {
+ int id = xf86CheckIntOption(parent->options,
+ "_libinput/shared-device",
+ -1);
+ if (id == parent_id)
+ return parent;
+ }
+
+ return NULL;
+}
+
+static inline struct xf86libinput_device*
+xf86libinput_shared_create(struct libinput_device *device)
+{
+ static uint32_t next_shared_device_id;
+ struct xf86libinput_device *shared_device;
+
+ shared_device = calloc(1, sizeof(*shared_device));
+ if (!shared_device)
+ return NULL;
+
+ shared_device->device = device;
+ shared_device->refcount = 1;
+ shared_device->id = ++next_shared_device_id;
+ xorg_list_init(&shared_device->device_list);
+
+ return shared_device;
+}
+
+static inline struct xf86libinput_device*
+xf86libinput_shared_ref(struct xf86libinput_device *shared_device)
+{
+ shared_device->refcount++;
+
+ return shared_device;
+}
+
+static inline struct xf86libinput_device*
+xf86libinput_shared_unref(struct xf86libinput_device *shared_device)
+{
+ shared_device->refcount--;
+
+ if (shared_device->refcount > 0)
+ return shared_device;
+
+ free(shared_device);
+
+ return NULL;
+}
+
+static inline struct libinput_device *
+xf86libinput_shared_enable(InputInfoPtr pInfo,
+ struct xf86libinput_device *shared_device,
+ const char *path)
+{
+ struct libinput_device *device;
+ struct libinput *libinput = driver_context.libinput;
+
+ /* With systemd-logind the server requests the fd from logind, sets
+ * pInfo->fd and sets the "fd" option to the fd number.
+ *
+ * If we have a second device that uses the same path, the server
+ * checks all pInfo->major/minor for a match and returns the matched
+ * device's pInfo->fd. In this driver, this fd is the epollfd, not
+ * the actual device. This causes troubles when removing the
+ * device.
+ *
+ * What we need to do here is: after enabling the device the first
+ * time extract the real fd and store it in the shared device
+ * struct. The second device replaces the pInfo->options "fd" with
+ * the real fd we're using.
+ *
+ * When the device is unplugged, the server now correctly finds two
+ * devices on the real fd and releases them in order.
+ */
+ shared_device->enabled_count++;
+ if (shared_device->enabled_count > 1) {
+ if (pInfo->flags & XI86_SERVER_FD) {
+ pInfo->options = xf86ReplaceIntOption(pInfo->options,
+ "fd",
+ shared_device->server_fd);
+ }
+
+ return shared_device->device;
+ }
+
+ device = libinput_path_add_device(libinput, path);
+ if (!device)
+ return NULL;
+
+ libinput_device_set_user_data(device, shared_device);
+ shared_device->device = libinput_device_ref(device);
+
+ if (pInfo->flags & XI86_SERVER_FD)
+ shared_device->server_fd = xf86CheckIntOption(pInfo->options,
+ "fd",
+ -1);
+ return device;
+}
+
+static inline void
+xf86libinput_shared_disable(struct xf86libinput_device *shared_device)
+{
+ struct libinput_device *device = shared_device->device;
+
+ shared_device->enabled_count--;
+
+ if (shared_device->enabled_count > 0)
+ return;
+
+ if (!device)
+ return;
+
+ libinput_device_set_user_data(device, NULL);
+ libinput_path_remove_device(device);
+ device = libinput_device_unref(device);
+ shared_device->device = NULL;
+}
+
+static inline bool
+xf86libinput_shared_is_enabled(struct xf86libinput_device *shared_device)
+{
+ return shared_device->enabled_count > 0;
+}
+
static int
LibinputSetProperty(DeviceIntPtr dev, Atom atom, XIPropertyValuePtr val,
BOOL checkonly);
@@ -171,7 +322,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
unsigned int scroll_button;
if (libinput_device_config_send_events_get_modes(device) != LIBINPUT_CONFIG_SEND_EVENTS_ENABLED &&
@@ -312,17 +463,16 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
+ struct xf86libinput_device *shared_device = driver_data->shared_device;
struct libinput *libinput = driver_context.libinput;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device;
- device = libinput_path_add_device(libinput, driver_data->path);
+ device = xf86libinput_shared_enable(pInfo,
+ shared_device,
+ driver_data->path);
if (!device)
return !Success;
- libinput_device_ref(device);
- libinput_device_set_user_data(device, pInfo);
- driver_data->device = device;
-
/* if we use server fds, overwrite the fd with the one from
libinput nonetheless, otherwise the server won't call ReadInput
for our device. This must be swapped back to the real fd in
@@ -347,6 +497,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
+ struct xf86libinput_device *shared_device = driver_data->shared_device;
if (--driver_context.device_enabled_count == 0) {
RemoveEnabledDevice(pInfo->fd);
@@ -360,10 +511,7 @@
dev->public.on = FALSE;
- libinput_device_set_user_data(driver_data->device, NULL);
- libinput_path_remove_device(driver_data->device);
- libinput_device_unref(driver_data->device);
- driver_data->device = NULL;
+ xf86libinput_shared_disable(shared_device);
return Success;
}
@@ -417,6 +565,7 @@
{
DeviceIntPtr dev= pInfo->dev;
struct xf86libinput *driver_data = pInfo->private;
+ struct libinput_device *device = driver_data->shared_device->device;
int min, max, res;
int nbuttons = 7;
int i;
@@ -425,7 +574,7 @@
Atom axislabels[TOUCHPAD_NUM_AXES];
for (i = BTN_JOYSTICK - 1; i >= BTN_SIDE; i--) {
- if (libinput_device_pointer_has_button(driver_data->device, i)) {
+ if (libinput_device_pointer_has_button(device, i)) {
nbuttons += i - BTN_SIDE + 1;
break;
}
@@ -464,6 +613,7 @@
{
DeviceIntPtr dev= pInfo->dev;
struct xf86libinput *driver_data = pInfo->private;
+ struct libinput_device *device = driver_data->shared_device->device;
int min, max, res;
int nbuttons = 7;
int i;
@@ -472,7 +622,7 @@
Atom axislabels[TOUCHPAD_NUM_AXES];
for (i = BTN_BACK; i >= BTN_SIDE; i--) {
- if (libinput_device_pointer_has_button(driver_data->device, i)) {
+ if (libinput_device_pointer_has_button(device, i)) {
nbuttons += i - BTN_SIDE + 1;
break;
}
@@ -524,7 +674,7 @@
enum libinput_led leds = 0;
InputInfoPtr pInfo = device->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *ldevice = driver_data->device;
+ struct libinput_device *ldevice = driver_data->shared_device->device;
while (bits[i].xbit) {
if (ctrl->leds & bits[i].xbit)
@@ -608,29 +758,37 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct xf86libinput_device *shared_device = driver_data->shared_device;
+ struct libinput_device *device = shared_device->device;
+
+ BUG_RETURN_VAL(device == NULL, !Success);
dev->public.on = FALSE;
- if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_KEYBOARD))
+ if (driver_data->capabilities & CAP_KEYBOARD)
xf86libinput_init_keyboard(pInfo);
- if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_POINTER)) {
+ if (driver_data->capabilities & CAP_POINTER) {
if (libinput_device_config_calibration_has_matrix(device) &&
!libinput_device_config_accel_is_available(device))
xf86libinput_init_pointer_absolute(pInfo);
else
xf86libinput_init_pointer(pInfo);
}
- if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_TOUCH))
+ if (driver_data->capabilities & CAP_TOUCH)
xf86libinput_init_touch(pInfo);
LibinputApplyConfig(dev);
LibinputInitProperty(dev);
XIRegisterPropertyHandler(dev, LibinputSetProperty, NULL, NULL);
- /* unref the device now, because we'll get a new ref during
- DEVICE_ON */
- libinput_device_unref(device);
+ /* If we have a device but it's not yet enabled it's the
+ * already-removed device from PreInit. Drop the ref to clean up,
+ * we'll get a new libinput_device during DEVICE_ON when we re-add
+ * it. */
+ if (!xf86libinput_shared_is_enabled(shared_device)) {
+ libinput_device_unref(device);
+ shared_device->device = NULL;
+ }
return 0;
}
@@ -638,6 +796,13 @@
static void
xf86libinput_destroy(DeviceIntPtr dev)
{
+ InputInfoPtr pInfo = dev->public.devicePrivate;
+ struct xf86libinput *driver_data = pInfo->private;
+ struct xf86libinput_device *shared_device = driver_data->shared_device;
+
+ xorg_list_del(&driver_data->shared_device_link);
+
+ xf86libinput_shared_unref(shared_device);
}
static int
@@ -657,6 +822,7 @@
break;
case DEVICE_CLOSE:
xf86libinput_destroy(dev);
+ rc = Success;
break;
}
@@ -671,6 +837,9 @@
ValuatorMask *mask = driver_data->valuators;
double x, y;
+ if ((driver_data->capabilities & CAP_POINTER) == 0)
+ return;
+
x = libinput_event_pointer_get_dx(event);
y = libinput_event_pointer_get_dy(event);
@@ -708,6 +877,9 @@
return;
}
+ if ((driver_data->capabilities & CAP_POINTER) == 0)
+ return;
+
x = libinput_event_pointer_get_absolute_x_transformed(event, TOUCH_AXIS_MAX);
y = libinput_event_pointer_get_absolute_y_transformed(event, TOUCH_AXIS_MAX);
@@ -726,6 +898,9 @@
int button;
int is_press;
+ if ((driver_data->capabilities & CAP_POINTER) == 0)
+ return;
+
button = btn_linux2xorg(libinput_event_pointer_get_button(event));
is_press = (libinput_event_pointer_get_button_state(event) == LIBINPUT_BUTTON_STATE_PRESSED);
@@ -740,9 +915,13 @@
xf86libinput_handle_key(InputInfoPtr pInfo, struct libinput_event_keyboard *event)
{
DeviceIntPtr dev = pInfo->dev;
+ struct xf86libinput *driver_data = pInfo->private;
int is_press;
int key = libinput_event_keyboard_get_key(event);
+ if ((driver_data->capabilities & CAP_KEYBOARD) == 0)
+ return;
+
key += XORG_KEYCODE_OFFSET;
is_press = (libinput_event_keyboard_get_key_state(event) == LIBINPUT_KEY_STATE_PRESSED);
@@ -759,6 +938,9 @@
enum libinput_pointer_axis axis;
enum libinput_pointer_axis_source source;
+ if ((driver_data->capabilities & CAP_POINTER) == 0)
+ return;
+
valuator_mask_zero(mask);
source = libinput_event_pointer_get_axis_source(event);
@@ -817,6 +999,9 @@
static unsigned int next_touchid;
static unsigned int touchids[TOUCH_MAX_SLOTS] = {0};
+ if ((driver_data->capabilities & CAP_TOUCH) == 0)
+ return;
+
slot = libinput_event_touch_get_slot(event);
switch (event_type) {
@@ -847,19 +1032,50 @@
xf86PostTouchEvent(dev, touchids[slot], type, 0, m);
}
+static InputInfoPtr
+xf86libinput_pick_device(struct xf86libinput_device *shared_device,
+ enum libinput_event_type type)
+{
+ struct xf86libinput *driver_data;
+ uint32_t needed_cap;
+
+ if (shared_device == NULL)
+ return NULL;
+
+ switch(type) {
+ case LIBINPUT_EVENT_KEYBOARD_KEY:
+ needed_cap = CAP_KEYBOARD;
+ break;
+ default:
+ needed_cap = ~CAP_KEYBOARD;
+ break;
+ }
+
+ xorg_list_for_each_entry(driver_data,
+ &shared_device->device_list,
+ shared_device_link) {
+ if (driver_data->capabilities & needed_cap)
+ return driver_data->pInfo;
+ }
+
+ return NULL;
+}
+
static void
xf86libinput_handle_event(struct libinput_event *event)
{
struct libinput_device *device;
+ enum libinput_event_type type;
InputInfoPtr pInfo;
+ type = libinput_event_get_type(event);
device = libinput_event_get_device(event);
- pInfo = libinput_device_get_user_data(device);
+ pInfo = xf86libinput_pick_device(libinput_device_get_user_data(device), type);
if (!pInfo || !pInfo->dev->public.on)
return;
- switch (libinput_event_get_type(event)) {
+ switch (type) {
case LIBINPUT_EVENT_NONE:
case LIBINPUT_EVENT_DEVICE_ADDED:
case LIBINPUT_EVENT_DEVICE_REMOVED:
@@ -959,7 +1175,12 @@
}
fd = xf86OpenSerial(pInfo->options);
- return fd < 0 ? -errno : fd;
+ if (fd < 0)
+ return -errno;
+
+ xf86FlushInput(fd);
+
+ return fd;
}
static void
@@ -1122,6 +1343,8 @@
profile = libinput_device_config_accel_get_profile(device);
}
+ free(str);
+
return profile;
}
@@ -1472,21 +1695,131 @@
xf86libinput_parse_buttonmap_option(pInfo,
options->btnmap,
sizeof(options->btnmap));
- if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_POINTER)) {
+ if (driver_data->capabilities & CAP_POINTER) {
xf86libinput_parse_draglock_option(pInfo, driver_data);
options->horiz_scrolling_enabled = xf86libinput_parse_horiz_scroll_option(pInfo);
}
}
+static const char*
+xf86libinput_get_type_name(struct libinput_device *device,
+ struct xf86libinput *driver_data)
+{
+ const char *type_name;
+
+ /* now pick an actual type */
+ if (libinput_device_config_tap_get_finger_count(device) > 0)
+ type_name = XI_TOUCHPAD;
+ else if (driver_data->capabilities & CAP_TOUCH)
+ type_name = XI_TOUCHSCREEN;
+ else if (driver_data->capabilities & CAP_POINTER)
+ type_name = XI_MOUSE;
+ else
+ type_name = XI_KEYBOARD;
+
+ return type_name;
+}
+
+static void
+xf86libinput_init_driver_context(void)
+{
+ if (!driver_context.libinput) {
+ driver_context.libinput = libinput_path_create_context(&interface, &driver_context);
+ libinput_log_set_handler(driver_context.libinput,
+ xf86libinput_log_handler);
+ /* we want all msgs, let the server filter */
+ libinput_log_set_priority(driver_context.libinput,
+ LIBINPUT_LOG_PRIORITY_DEBUG);
+ } else {
+ libinput_ref(driver_context.libinput);
+ }
+}
+
+struct xf86libinput_hotplug_info {
+ InputAttributes *attrs;
+ InputOption *input_options;
+};
+
+static Bool
+xf86libinput_hotplug_device(ClientPtr client, pointer closure)
+{
+ struct xf86libinput_hotplug_info *hotplug = closure;
+ DeviceIntPtr unused;
+
+ NewInputDeviceRequest(hotplug->input_options,
+ hotplug->attrs,
+ &unused);
+
+ input_option_free_list(&hotplug->input_options);
+ FreeInputAttributes(hotplug->attrs);
+ free(hotplug);
+
+ return TRUE;
+}
+
+static void
+xf86libinput_create_keyboard_subdevice(InputInfoPtr pInfo)
+{
+ struct xf86libinput *driver_data = pInfo->private;
+ struct xf86libinput_device *shared_device;
+ struct xf86libinput_hotplug_info *hotplug;
+ InputOption *iopts = NULL;
+ XF86OptionPtr options, o;
+
+ shared_device = driver_data->shared_device;
+ pInfo->options = xf86ReplaceIntOption(pInfo->options,
+ "_libinput/shared-device",
+ shared_device->id);
+
+ options = xf86OptionListDuplicate(pInfo->options);
+ options = xf86ReplaceStrOption(options, "_source", "_driver/libinput");
+ options = xf86ReplaceStrOption(options, "_libinput/caps", "keyboard");
+
+ /* need convert from one option list to the other. woohoo. */
+ o = options;
+ while (o) {
+ iopts = input_option_new(iopts,
+ xf86OptionName(o),
+ xf86OptionValue(o));
+ o = xf86NextOption(o);
+ }
+ xf86OptionListFree(options);
+
+ hotplug = calloc(1, sizeof(*hotplug));
+ if (!hotplug)
+ return;
+
+ hotplug->input_options = iopts;
+ hotplug->attrs = DuplicateInputAttributes(pInfo->attrs);
+
+ xf86IDrvMsg(pInfo, X_INFO, "needs a virtual subdevice\n");
+ QueueWorkProc(xf86libinput_hotplug_device, serverClient, hotplug);
+}
+
+static BOOL
+xf86libinput_is_subdevice(InputInfoPtr pInfo)
+{
+ char *source;
+ BOOL is_subdevice;
+
+ source = xf86SetStrOption(pInfo->options, "_source", "");
+ is_subdevice = strcmp(source, "_driver/libinput") == 0;
+ free(source);
+
+ return is_subdevice;
+}
+
static int
xf86libinput_pre_init(InputDriverPtr drv,
InputInfoPtr pInfo,
int flags)
{
struct xf86libinput *driver_data = NULL;
- struct libinput *libinput = NULL;
+ struct xf86libinput_device *shared_device = NULL;
+ struct libinput *libinput = NULL;
struct libinput_device *device;
char *path = NULL;
+ bool is_subdevice;
pInfo->type_name = 0;
pInfo->device_control = xf86libinput_device_control;
@@ -1506,25 +1839,11 @@
if (!driver_data->valuators_unaccelerated)
goto fail;
- driver_data->scroll.vdist = 15;
- driver_data->scroll.hdist = 15;
-
path = xf86SetStrOption(pInfo->options, "Device", NULL);
if (!path)
goto fail;
- if (!driver_context.libinput) {
- driver_context.libinput = libinput_path_create_context(&interface, &driver_context);
- libinput_log_set_handler(driver_context.libinput,
- xf86libinput_log_handler);
- /* we want all msgs, let the server filter */
- libinput_log_set_priority(driver_context.libinput,
- LIBINPUT_LOG_PRIORITY_DEBUG);
- xorg_list_init(&driver_context.server_fds);
- } else {
- libinput_ref(driver_context.libinput);
- }
-
+ xf86libinput_init_driver_context();
libinput = driver_context.libinput;
if (libinput == NULL) {
@@ -1532,21 +1851,60 @@
goto fail;
}
- device = libinput_path_add_device(libinput, path);
- if (!device) {
- xf86IDrvMsg(pInfo, X_ERROR, "Failed to create a device for %s\n", path);
- goto fail;
- }
+ is_subdevice = xf86libinput_is_subdevice(pInfo);
+ if (!is_subdevice) {
+ device = libinput_path_add_device(libinput, path);
+ if (!device) {
+ xf86IDrvMsg(pInfo, X_ERROR, "Failed to create a device for %s\n", path);
+ goto fail;
+ }
- /* We ref the device but remove it afterwards. The hope is that
- between now and DEVICE_INIT/DEVICE_ON, the device doesn't change.
- */
- libinput_device_ref(device);
- libinput_path_remove_device(device);
+ /* We ref the device above, then remove it. It get's
+ re-added with the same path in DEVICE_ON, we hope
+ it doesn't change until then */
+ libinput_device_ref(device);
+ libinput_path_remove_device(device);
+
+ shared_device = xf86libinput_shared_create(device);
+ if (!shared_device) {
+ libinput_device_unref(device);
+ goto fail;
+ }
+ } else {
+ InputInfoPtr parent;
+ struct xf86libinput *parent_driver_data;
+
+ parent = xf86libinput_get_parent(pInfo);
+ if (!parent) {
+ xf86IDrvMsg(pInfo, X_ERROR, "Failed to find parent device\n");
+ goto fail;
+ }
+ xf86IDrvMsg(pInfo, X_INFO, "is a virtual subdevice\n");
+
+ parent_driver_data = parent->private;
+ shared_device = xf86libinput_shared_ref(parent_driver_data->shared_device);
+ device = shared_device->device;
+ }
pInfo->private = driver_data;
+ driver_data->pInfo = pInfo;
+ driver_data->scroll.vdist = 15;
+ driver_data->scroll.hdist = 15;
driver_data->path = path;
- driver_data->device = device;
+ driver_data->shared_device = shared_device;
+ xorg_list_append(&driver_data->shared_device_link,
+ &shared_device->device_list);
+
+ if (!is_subdevice) {
+ if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_POINTER))
+ driver_data->capabilities |= CAP_POINTER;
+ if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_KEYBOARD))
+ driver_data->capabilities |= CAP_KEYBOARD;
+ if (libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_TOUCH))
+ driver_data->capabilities |= CAP_TOUCH;
+ } else {
+ driver_data->capabilities = CAP_KEYBOARD;
+ }
/* Disable acceleration in the server, libinput does it for us */
pInfo->options = xf86ReplaceIntOption(pInfo->options, "AccelerationProfile", -1);
@@ -1554,17 +1912,16 @@
xf86libinput_parse_options(pInfo, driver_data, device);
- /* now pick an actual type */
- if (libinput_device_config_tap_get_finger_count(device) > 0)
- pInfo->type_name = XI_TOUCHPAD;
- else if (libinput_device_has_capability(device,
- LIBINPUT_DEVICE_CAP_TOUCH))
- pInfo->type_name = XI_TOUCHSCREEN;
- else if (libinput_device_has_capability(device,
- LIBINPUT_DEVICE_CAP_POINTER))
- pInfo->type_name = XI_MOUSE;
- else
- pInfo->type_name = XI_KEYBOARD;
+ /* Device is both keyboard and pointer. Drop the keyboard cap from
+ * this device, create a separate device instead */
+ if (!is_subdevice &&
+ driver_data->capabilities & CAP_KEYBOARD &&
+ driver_data->capabilities & (CAP_POINTER|CAP_TOUCH)) {
+ driver_data->capabilities &= ~CAP_KEYBOARD;
+ xf86libinput_create_keyboard_subdevice(pInfo);
+ }
+
+ pInfo->type_name = xf86libinput_get_type_name(device, driver_data);
return Success;
fail:
@@ -1573,7 +1930,11 @@
if (driver_data->valuators_unaccelerated)
valuator_mask_free(&driver_data->valuators_unaccelerated);
free(path);
+ if (shared_device)
+ xf86libinput_shared_unref(shared_device);
free(driver_data);
+ if (libinput)
+ driver_context.libinput = libinput_unref(libinput);
return BadValue;
}
@@ -1586,6 +1947,7 @@
if (driver_data) {
driver_context.libinput = libinput_unref(driver_context.libinput);
valuator_mask_free(&driver_data->valuators);
+ valuator_mask_free(&driver_data->valuators_unaccelerated);
free(driver_data->path);
free(driver_data);
pInfo->private = NULL;
@@ -1680,7 +2042,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
if (device == NULL) {
BUG_WARN(dev->public.on);
@@ -1702,7 +2064,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
if (val->format != 8 || val->size != 1 || val->type != XA_INTEGER)
@@ -1733,7 +2095,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
if (val->format != 8 || val->size != 1 || val->type != XA_INTEGER)
@@ -1764,7 +2126,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
float* data;
if (val->format != 32 || val->size != 9 || val->type != prop_float)
@@ -1800,7 +2162,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
float* data;
if (val->format != 32 || val->size != 1 || val->type != prop_float)
@@ -1832,7 +2194,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
uint32_t profiles = 0;
@@ -1873,7 +2235,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
if (val->format != 8 || val->size != 1 || val->type != XA_INTEGER)
@@ -1905,7 +2267,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
uint32_t modes = 0;
@@ -1944,7 +2306,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
if (val->format != 8 || val->size != 1 || val->type != XA_INTEGER)
@@ -1977,7 +2339,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
uint32_t modes = 0;
@@ -2020,7 +2382,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
CARD32* data;
if (val->format != 32 || val->size != 1 || val->type != XA_CARDINAL)
@@ -2054,7 +2416,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
uint32_t modes = 0;
@@ -2095,7 +2457,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
if (val->format != 8 || val->size != 1 || val->type != XA_INTEGER)
@@ -2126,7 +2488,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
BOOL* data;
if (val->format != 8 || val->size != 1 || val->type != XA_INTEGER)
@@ -2835,8 +3197,7 @@
size_t sz;
int dl_values[MAX_BUTTONS + 1];
- if (!libinput_device_has_capability(driver_data->device,
- LIBINPUT_DEVICE_CAP_POINTER))
+ if ((driver_data->capabilities & CAP_POINTER) == 0)
return;
switch (draglock_get_mode(&driver_data->draglock)) {
@@ -2876,7 +3237,7 @@
{
InputInfoPtr pInfo = dev->public.devicePrivate;
struct xf86libinput *driver_data = pInfo->private;
- struct libinput_device *device = driver_data->device;
+ struct libinput_device *device = driver_data->shared_device->device;
const char *device_node;
CARD32 product[2];
int rc;
1
0
Hello community,
here is the log from the commit of package docker-compose for openSUSE:Factory checked in at 2015-12-29 13:00:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/docker-compose (Old)
and /work/SRC/openSUSE:Factory/.docker-compose.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "docker-compose"
Changes:
--------
--- /work/SRC/openSUSE:Factory/docker-compose/docker-compose.changes 2015-12-09 22:15:11.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.docker-compose.new/docker-compose.changes 2015-12-29 13:00:14.000000000 +0100
@@ -1,0 +2,16 @@
+Mon Dec 21 16:30:48 UTC 2015 - fcastelli(a)suse.com
+
+- Update to version 1.5.2:
+ * Fixed a bug which broke the use of environment and env_file with extends,
+ and caused environment keys without values to have a None value, instead of
+ a value from the host environment.
+ * Fixed a regression in 1.5.1 that caused a warning about volumes to be
+ raised incorrectly when containers were recreated.
+ * Fixed a bug which prevented building a Dockerfile that used ADD <url>
+ * Fixed a bug with docker-compose restart which prevented it from starting
+ stopped containers.
+ * Fixed handling of SIGTERM and SIGINT to properly stop containers
+ * Add support for using a url as the value of build
+ * Improved the validation of the expose option
+
+-------------------------------------------------------------------
Old:
----
compose-1.5.1.tar.gz
New:
----
_service
compose-1.5.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ docker-compose.spec ++++++
--- /var/tmp/diff_new_pack.sVTwBJ/_old 2015-12-29 13:00:15.000000000 +0100
+++ /var/tmp/diff_new_pack.sVTwBJ/_new 2015-12-29 13:00:15.000000000 +0100
@@ -19,13 +19,13 @@
%define mod_name compose
Name: docker-compose
-Version: 1.5.1
+Version: 1.5.2
Release: 0
Summary: Define and run complex applications using Docker
License: Apache-2.0
Group: System/Management
Url: https://pypi.python.org/pypi/fig
-Source0: %{mod_name}-%{version}.tar.gz
+Source0: %{mod_name}-%{version}.tar.xz
Source1: README.SUSE
Patch0: fix-requirements.patch
Requires: docker
++++++ _service ++++++
<services>
<service name="tar_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">git@github.com:docker/compose.git</param>
<param name="exclude">.git</param>
<param name="filename">compose</param>
<param name="versionformat">1.5.2</param>
<param name="revision">1.5.2</param>
<param name="changesgenerate">enable</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service mode="disabled" name="set_version"/>
</services>
1
0
Hello community,
here is the log from the commit of package gnome-desktop-sharp2 for openSUSE:Factory checked in at 2015-12-29 13:00:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gnome-desktop-sharp2 (Old)
and /work/SRC/openSUSE:Factory/.gnome-desktop-sharp2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gnome-desktop-sharp2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gnome-desktop-sharp2/gnome-desktop-sharp2.changes 2013-03-11 10:08:56.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gnome-desktop-sharp2.new/gnome-desktop-sharp2.changes 2015-12-29 13:00:13.000000000 +0100
@@ -1,0 +2,25 @@
+Mon Dec 28 15:11:44 UTC 2015 - i(a)marguerite.su
+
+- revert the rename of gtksourceview2-sharp, vte016-sharp, wnck-sharp,
+ I did the rename because rpmlint showed errors and recommended
+ those names, but it was wrong.
+- the provides/requires on .so files are actually not useless,
+ but the workaround to prevent those errors.
+- fix typos of Requires to Provides on gnome-desktop-sharp2-devel
+
+-------------------------------------------------------------------
+Sat Dec 26 15:31:46 UTC 2015 - i(a)marguerite.su
+
+- rename gtksourceview2-sharp to libgtksourceview2sharpglue-2
+- rename wnck-sharp to libwncksharpglue-2
+- rename vte016-sharp to libvtesharpglue-2
+- add missing post/postun fields to them to fix tumbleweed builds
+- remove env_options rpm macro, which is not used by opensuse
+- update upstream url: https://github.com/mono/gnome-desktop-sharp
+- remove useless provides/requires on .so files
+- remove non-existent sub-package: gtkhtml314-sharp
+- define _use_internal_dependency_generator to 0, to make
+ custom __find_requires/provides actually work
+- split gnome-desktop-sharp2-devel to contain all the .pc files
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gnome-desktop-sharp2.spec ++++++
--- /var/tmp/diff_new_pack.cIejsn/_old 2015-12-29 13:00:14.000000000 +0100
+++ /var/tmp/diff_new_pack.cIejsn/_new 2015-12-29 13:00:14.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package gnome-desktop-sharp2
#
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,12 +16,19 @@
#
+%define _use_internal_dependency_generator 0
+%define __find_provides env sh -c 'filelist=($(cat)) && { printf "%{s}\\n" "${filelist[@]}" | %{_libexecdir}/rpm/find-provides && printf "%{s}\\n" "${filelist[@]}" | %{_bindir}/mono-find-provides ; } | sort | uniq'
+%define __find_requires env sh -c 'filelist=($(cat)) && { printf "%{s}\\n" "${filelist[@]}" | %{_libexecdir}/rpm/find-requires && printf "%{s}\\n" "${filelist[@]}" | %{_bindir}/mono-find-requires ; } | sort | uniq'
Name: gnome-desktop-sharp2
-%define _name gnome-desktop-sharp
-Url: http://mono-project.com
+Version: 2.26.0
+Release: 0
Summary: Mono bindings for libgnome-desktop
License: LGPL-2.1
Group: System/GUI/GNOME
+Url: https://github.com/mono/gnome-desktop-sharp
+Source: gnome-desktop-sharp-%{version}.tar.bz2
+Patch: gnome-desktop-version-11.3.patch
+BuildRequires: pkg-config
BuildRequires: update-desktop-files
BuildRequires: pkgconfig(gapi-2.0)
BuildRequires: pkgconfig(gnome-desktop-2.0)
@@ -34,38 +41,41 @@
BuildRequires: pkgconfig(mono)
BuildRequires: pkgconfig(monodoc)
BuildRequires: pkgconfig(vte)
-Version: 2.26.0
-Release: 0
-Source: %{_name}-%{version}.tar.bz2
-Patch1: gnome-desktop-version-11.3.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: libgnome-desktop-2-17
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Mono bindings for libgnome-desktop
+%package devel
+Summary: Development files for %{name}
+License: LGPL-2.1
+Group: Development/Languages/Mono
+Requires: %{name} = %{version}
+Requires: gnome-print-sharp = %{version}
+Requires: gtksourceview2-sharp = %{version}
+Requires: rsvg2-sharp = %{version}
+Requires: vte016-sharp = %{version}
+Requires: wnck-sharp = %{version}
+Provides: gnome-print-sharp-devel = %{version}
+Provides: gtksourceview2-sharp-devel = %{version}
+Provides: rsvg2-sharp-devel = %{version}
+Provides: vte016-sharp-devel = %{version}
+Provides: wnck-sharp-devel = %{version}
-
-Authors:
---------
- Mike Kestner <mkestner(a)novell.com
+%description devel
+Development files (.pc) for %{name}.
%package -n gtksourceview2-sharp
Summary: Mono bindings for gtksourceview2
License: LGPL-2.1
Group: System/GUI/GNOME
-Requires: libgtksourceview2sharpglue-2.so
-Provides: libgtksourceview2sharpglue-2.so
+Provides: libgtksourceview2sharpglue-2.so = %{version}
+Requires: libgtksourceview2sharpglue-2.so = %{version}
%description -n gtksourceview2-sharp
Mono bindings for gtksourceview2
-
-
-Authors:
---------
- Mike Kestner <mkestner(a)novell.com>
-
%package -n rsvg2-sharp
Summary: Mono bindings for rsvg
License: LGPL-2.1
@@ -74,43 +84,23 @@
%description -n rsvg2-sharp
This package contains Mono bindings for librsvg.
-
-
-%package -n gtkhtml314-sharp
-Summary: Mono bindings for gtkhtml
-License: LGPL-2.1
-Group: System/GUI/GNOME
-Requires: libgtkhtmlsharpglue-2.so
-Provides: libgtkhtmlsharpglue-2.so
-
-%description -n gtkhtml314-sharp
-This package contains Mono bindings for gtkhtml.
-
-
-
%package -n wnck-sharp
Summary: Mono bindings for wnck
License: LGPL-2.1
Group: System/GUI/GNOME
-Requires: libwncksharpglue-2.so
-Provides: libwncksharpglue-2.so
Requires: libwnck-1-22
+Provides: libwncksharpglue-2.so = %{version}
+Requires: libwncksharpglue-2.so = %{version}
%description -n wnck-sharp
Mono bindings for wnck
-
-
-Authors:
---------
- Mike Kestner <mkestner(a)novell.com>
-
%package -n vte016-sharp
Summary: Mono bindings for vte
License: GPL-2.0 and LGPL-2.1
Group: System/GUI/GNOME
-Requires: libvtesharpglue-2.so
-Provides: libvtesharpglue-2.so
+Provides: libvtesharpglue-2.so = %{version}
+Requires: libvtesharpglue-2.so = %{version}
%description -n vte016-sharp
This package contains Mono bindings for vte.
@@ -123,85 +113,86 @@
%description -n gnome-print-sharp
Mono bindings for gnome-print
-
-
-Authors:
---------
- Mike Kestner <mkestner(a)novell.com
-
-
%prep
-%setup -q -n %{_name}-%{version}
-%patch1
+%setup -q -n gnome-desktop-sharp-%{version}
+%patch
%build
-%{?env_options}
# FIXME: windowmanager.c:*: warning: dereferencing type-punned pointer will break strict-aliasing rules
-export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
+export CFLAGS="%{optflags} -fno-strict-aliasing"
%configure\
--libexecdir=%{_prefix}/lib\
--enable-debug
-make
+make %{?_smp_mflags}
%install
-%{?env_options}
-make install DESTDIR=%buildroot
-rm $RPM_BUILD_ROOT%{_libdir}/*.*a
+make DESTDIR=%{buildroot} install %{?_smp_mflags}
+find %{buildroot} -name "*.*a" -delete
+
+%post -n gtksourceview2-sharp -p /sbin/ldconfig
+
+%postun -n gtksourceview2-sharp -p /sbin/ldconfig
-%clean
-rm -rf $RPM_BUILD_ROOT
+%post -n wnck-sharp -p /sbin/ldconfig
+
+%postun -n wnck-sharp -p /sbin/ldconfig
+
+%post -n vte016-sharp -p /sbin/ldconfig
+
+%postun -n vte016-sharp -p /sbin/ldconfig
%files
%defattr(-,root,root)
+%{_libexecdir}/mono/gac/*gnomedesktop-sharp
+%{_libexecdir}/mono/gnomedesktop-sharp-2.20
+%dir %{_datadir}/gnomedesktop-sharp
+%{_datadir}/gnomedesktop-sharp/2.20
+
+%files devel
+%defattr(-,root,root)
%{_libdir}/pkgconfig/gnome-desktop-sharp-2.0.pc
-%{_prefix}/lib/mono/gac/*gnomedesktop-sharp
-%{_prefix}/lib/mono/gnomedesktop-sharp-2.20
-%dir %{_prefix}/share/gnomedesktop-sharp
-%{_prefix}/share/gnomedesktop-sharp/2.20
+%{_libdir}/pkgconfig/gtksourceview2-sharp.pc
+%{_libdir}/pkgconfig/rsvg2-sharp-2.0.pc
+%{_libdir}/pkgconfig/vte-sharp-0.16.pc
+%{_libdir}/pkgconfig/wnck-sharp-1.0.pc
+%{_libdir}/pkgconfig/gnome-print-sharp-2.18.pc
%files -n gtksourceview2-sharp
%defattr(-,root,root)
-%{_libdir}/pkgconfig/gtksourceview2-sharp.pc
-%{_prefix}/lib/mono/gac/*gtksourceview2-sharp
-%{_prefix}/lib/mono/gtksourceview2-sharp-2.0
-%dir %{_prefix}/share/gtksourceview2-sharp
-%{_prefix}/share/gtksourceview2-sharp/2.0
+%{_libexecdir}/mono/gac/*gtksourceview2-sharp
+%{_libexecdir}/mono/gtksourceview2-sharp-2.0
+%dir %{_datadir}/gtksourceview2-sharp
+%{_datadir}/gtksourceview2-sharp/2.0
%{_libdir}/libgtksourceview2sharpglue-2.so
%files -n rsvg2-sharp
%defattr(-,root,root)
-%{_libdir}/pkgconfig/rsvg2-sharp-2.0.pc
-%{_prefix}/lib/mono/gac/*rsvg2-sharp
-%{_prefix}/lib/mono/rsvg2-sharp-2.0
-%dir %{_prefix}/share/rsvg2-sharp
-%{_prefix}/share/rsvg2-sharp/2.0
+%{_libexecdir}/mono/gac/*rsvg2-sharp
+%{_libexecdir}/mono/rsvg2-sharp-2.0
+%dir %{_datadir}/rsvg2-sharp
+%{_datadir}/rsvg2-sharp/2.0
%files -n vte016-sharp
%defattr(-, root, root)
%{_libdir}/libvtesharpglue-2.so
-%{_libdir}/pkgconfig/vte-sharp-0.16.pc
-%{_prefix}/lib/mono/gac/*vte-sharp
-%{_prefix}/lib/mono/vte-sharp-0.16
-%dir %{_prefix}/share/vte-sharp
-%{_prefix}/share/vte-sharp/0.16
+%{_libexecdir}/mono/gac/*vte-sharp
+%{_libexecdir}/mono/vte-sharp-0.16
+%dir %{_datadir}/vte-sharp
+%{_datadir}/vte-sharp/0.16
%files -n wnck-sharp
%defattr(-, root, root)
-%{_libdir}/pkgconfig/wnck-sharp-1.0.pc
-%{_prefix}/lib/mono/gac/*wnck-sharp
-%{_prefix}/lib/mono/wnck-sharp-2.20
-%dir %{_prefix}/share/wnck-sharp
-%{_prefix}/share/wnck-sharp/2.20
+%{_libexecdir}/mono/gac/*wnck-sharp
+%{_libexecdir}/mono/wnck-sharp-2.20
+%dir %{_datadir}/wnck-sharp
+%{_datadir}/wnck-sharp/2.20
%{_libdir}/libwncksharpglue-2.so
%files -n gnome-print-sharp
%defattr(-, root, root)
-%{_libdir}/pkgconfig/gnome-print-sharp-2.18.pc
-%{_prefix}/lib/mono/gac/gnome-print-sharp
-%{_prefix}/lib/mono/gnome-print-sharp-2.18
-%dir %{_prefix}/share/gnome-print-sharp
-%{_prefix}/share/gnome-print-sharp/2.18
-%define __find_provides env sh -c 'filelist=($(cat)) && { printf "%s\\n" "${filelist[@]}" | /usr/lib/rpm/find-provides && printf "%s\\n" "${filelist[@]}" | /usr/bin/mono-find-provides ; } | sort | uniq'
-%define __find_requires env sh -c 'filelist=($(cat)) && { printf "%s\\n" "${filelist[@]}" | /usr/lib/rpm/find-requires && printf "%s\\n" "${filelist[@]}" | /usr/bin/mono-find-requires ; } | sort | uniq'
+%{_libexecdir}/mono/gac/gnome-print-sharp
+%{_libexecdir}/mono/gnome-print-sharp-2.18
+%dir %{_datadir}/gnome-print-sharp
+%{_datadir}/gnome-print-sharp/2.18
%changelog
1
0
Hello community,
here is the log from the commit of package gom for openSUSE:Factory checked in at 2015-12-29 13:00:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gom (Old)
and /work/SRC/openSUSE:Factory/.gom.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gom"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gom/gom.changes 2015-05-02 16:14:06.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gom.new/gom.changes 2015-12-29 13:00:11.000000000 +0100
@@ -1,0 +2,13 @@
+Sun Dec 27 04:57:47 UTC 2015 - damjanovic.ivo(a)gmail.com
+
+- Updated to version 0.3.2:
+ + Add missing annotation for repository object.
+ + Support ordering queries.
+ + Add support for creating new tables in a version.
+ + Fix memory leak in GomResource.
+ + Bindings:
+ - Add missing annotation for repository object.
+ - Add a working Python example.
+ - Make ResourceGroup a sequence in Python bindings.
+
+-------------------------------------------------------------------
Old:
----
gom-0.3.1.tar.xz
New:
----
gom-0.3.2.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gom.spec ++++++
--- /var/tmp/diff_new_pack.cSNQdV/_old 2015-12-29 13:00:12.000000000 +0100
+++ /var/tmp/diff_new_pack.cSNQdV/_new 2015-12-29 13:00:12.000000000 +0100
@@ -17,7 +17,7 @@
Name: gom
-Version: 0.3.1
+Version: 0.3.2
Release: 0
Summary: GObject Data Mapper
License: LGPL-2.1+
++++++ gom-0.3.1.tar.xz -> gom-0.3.2.tar.xz ++++++
++++ 30774 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package engine_pkcs11 for openSUSE:Factory checked in at 2015-12-29 13:00:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/engine_pkcs11 (Old)
and /work/SRC/openSUSE:Factory/.engine_pkcs11.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "engine_pkcs11"
Changes:
--------
--- /work/SRC/openSUSE:Factory/engine_pkcs11/engine_pkcs11.changes 2013-02-11 14:54:29.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.engine_pkcs11.new/engine_pkcs11.changes 2015-12-29 13:00:09.000000000 +0100
@@ -1,0 +2,14 @@
+Wed Dec 2 00:04:03 UTC 2015 - p.drouand(a)gmail.com
+
+- Update to version 0.2.0
+ * Added support for ECDSA when compiled with libp11 0.3.0
+ * Updated engine name to match other openssl engines
+ * Added support for PKCS#11 URLs -RFC7512- when loading keys
+ or certificates
+ * Added support for id_ legacy object identifier
+ * When no module is set default to p11-kit-proxy.so, allowing to
+ access any available PKCS#11 object in the system
+- Update project and download Url
+- Build with p11kit support; add pkgconfig(p11-kit-1) build requirement
+
+-------------------------------------------------------------------
Old:
----
engine_pkcs11-0.1.8.tar.bz2
New:
----
engine_pkcs11-0.2.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ engine_pkcs11.spec ++++++
--- /var/tmp/diff_new_pack.zjs4Hm/_old 2015-12-29 13:00:11.000000000 +0100
+++ /var/tmp/diff_new_pack.zjs4Hm/_new 2015-12-29 13:00:11.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package engine_pkcs11
#
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,17 +17,18 @@
Name: engine_pkcs11
-Version: 0.1.8
+Version: 0.2.0
Release: 0
-Url: http://www.opensc-project.org/engine_pkcs11/
+Url: https://github.com/OpenSC/engine_pkcs11
Summary: OpenSSL PKCS#11 Engine
License: BSD-3-Clause
Group: Productivity/Security
-Source: %{name}-%{version}.tar.bz2
+Source: https://github.com/OpenSC/engine_pkcs11/releases/download/%{name}-%{version…
Source1: %{name}-COPYING
BuildRequires: libp11-devel >= 0.2.5
BuildRequires: libxslt
BuildRequires: pkg-config
+BuildRequires: pkgconfig(p11-kit-1)
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -45,18 +46,17 @@
%build
%configure\
- --enable-doc\
--docdir=%{_docdir}/%{name}\
--disable-static
make %{?_smp_mflags}
%install
%makeinstall
-cp COPYING doc/nonpersistent/ChangeLog $RPM_BUILD_ROOT%{_docdir}/%{name}/
+rm -f %{buildroot}%{_libdir}/engines/libpkcs11.la
%files
%defattr (-, root, root)
-%doc %{_docdir}/%{name}
+%doc COPYING NEWS
%dir %{_libdir}/engines/
%{_libdir}/engines/*.so
1
0
Hello community,
here is the log from the commit of package libp11 for openSUSE:Factory checked in at 2015-12-29 13:00:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libp11 (Old)
and /work/SRC/openSUSE:Factory/.libp11.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libp11"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libp11/libp11.changes 2013-01-10 13:10:26.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libp11.new/libp11.changes 2015-12-29 13:00:08.000000000 +0100
@@ -1,0 +2,16 @@
+Wed Dec 2 00:18:59 UTC 2015 - p.drouand(a)gmail.com
+
+- Update to version 0.3.0
+ * Added small test suite based on softhsm (run on make check)
+ * Memory leak fixes
+ * On module initialization tell the module that the OS locking
+ primitives are OK to use
+ * Transparently handle applications that fork. That is call C_Initialize()
+ and reopen any handles if a fork is detected.
+ * Eliminated any hard coded limits for certificate size
+ * Added support for ECDSA
+ * Allow RSA_NO_PADDING padding mode in PKCS11_private_encrypt
+ * Eliminated several hard-coded limits in parameter sizes.
+- Update project and download Urls
+
+-------------------------------------------------------------------
Old:
----
libp11-0.2.8.tar.gz
New:
----
libp11-0.3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libp11.spec ++++++
--- /var/tmp/diff_new_pack.YlsE2R/_old 2015-12-29 13:00:09.000000000 +0100
+++ /var/tmp/diff_new_pack.YlsE2R/_new 2015-12-29 13:00:09.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package libp11
#
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,13 @@
Name: libp11
-Version: 0.2.8
+Version: 0.3.0
Release: 0
-Url: http://www.opensc-project.org/libp11/
+Url: https://github.com/OpenSC/libp11
Summary: Library Implementing a Small Layer on Top of PKCS#11 API
License: LGPL-2.1+
Group: Productivity/Security
-Source: %{name}-%{version}.tar.gz
+Source: https://github.com/OpenSC/libp11/releases/download/%{name}-%{version}/%{nam…
Source1: %{name}-rpmlintrc
Source2: baselibs.conf
BuildRequires: doxygen
@@ -79,20 +79,14 @@
%prep
%setup -q
-tr -d \\r <doc/nonpersistent/wiki.out/trac.css >doc/nonpersistent/wiki.out/trac.css.unix
-touch -r doc/nonpersistent/wiki.out/trac.css doc/nonpersistent/wiki.out/trac.css.unix
-mv doc/nonpersistent/wiki.out/trac.css.unix doc/nonpersistent/wiki.out/trac.css
%build
-%if %suse_version > 1100
-autoreconf -f -i
-%endif
%configure --disable-static --with-pic \
--enable-doc\
--docdir=%{_docdir}/libp11-2\
--enable-api-doc\
--with-apidocdir=%{_docdir}/%{name}-devel
-make %{?jobs:-j%jobs}
+make %{?_smp_mflags}
%install
%makeinstall
@@ -100,9 +94,6 @@
rm -f %{buildroot}%{_libdir}/*.la
%fdupes %{buildroot}%{_docdir}
-%clean
-rm -rf $RPM_BUILD_ROOT
-
%post -n libp11-2 -p /sbin/ldconfig
%postun -n libp11-2 -p /sbin/ldconfig
++++++ libp11-0.2.8.tar.gz -> libp11-0.3.0.tar.gz ++++++
++++ 32913 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package blender for openSUSE:Factory checked in at 2015-12-29 13:00:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/blender (Old)
and /work/SRC/openSUSE:Factory/.blender.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "blender"
Changes:
--------
--- /work/SRC/openSUSE:Factory/blender/blender.changes 2015-12-21 12:05:05.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.blender.new/blender.changes 2015-12-29 13:00:05.000000000 +0100
@@ -1,0 +2,6 @@
+Mon Dec 28 10:00:03 UTC 2015 - davejplater(a)gmail.com
+
+- Added conditionals to enable blender to build without cycles and
+ openCOLLADA for openSUSE:13.2 see boo#960234
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ blender.spec ++++++
--- /var/tmp/diff_new_pack.34yV7L/_old 2015-12-29 13:00:07.000000000 +0100
+++ /var/tmp/diff_new_pack.34yV7L/_new 2015-12-29 13:00:07.000000000 +0100
@@ -22,20 +22,28 @@
%define collada 1
%define wplayer 1
%define documentation 0
-
-%bcond_without ffmpeg
-
-# Use rpmbuild -D 'BUILD_ORIG 1' to build original code.
-
-Name: blender
-Version: 2.76b
-Release: 0
-
# blender has versions like x.xxy which have x.xx (notice the missing
# trailing y) in the directory path. This makes this additional variable
# necessary.
%define _version 2.76
-
+# NOTE: this is to enable blender to build without cycles for 13.2 BUILD_ORIG = 1 see boo#960234
+%if 0%{?suse_version} > 1320 || 0%{?suse_version} == 1315
+%bcond_without ffmpeg
+%bcond_without cycles
+%else
+%if 0%{?BUILD_ORIG} == 1 && 0%{?suse_version} <= 1320
+%define collada 0
+%bcond_without ffmpeg
+%bcond_with cycles
+%else
+%define collada 0
+%bcond_with ffmpeg
+%bcond_with cycles
+%endif
+%endif
+Name: blender
+Version: 2.76b
+Release: 0
Summary: A 3D Modelling And Rendering Package
License: GPL-2.0+
Group: Productivity/Graphics/3D Editors
@@ -50,24 +58,6 @@
Source8: blender-getversion.py
# Refreshed for 2.67b
Patch1: blender-2.58-python_include.patch
-BuildRequires: gettext-tools
-%if 0%{?suse_version} > 1210
-BuildRequires: libGLw-devel
-BuildRequires: libGLw1
-%else
-BuildRequires: MesaGLw-devel
-%endif
-BuildRequires: libexpat-devel
-BuildRequires: pkg-config
-# Needed since blender 2.71. Otherwise it won't build
-BuildRequires: python3-devel >= 3.4
-BuildRequires: python3-numpy-devel
-BuildRequires: python3-requests
-BuildRequires: update-desktop-files
-BuildRequires: xorg-x11
-%if %documentation == 1
-Recommends: blender-doc
-%endif
# libquicktime-devel
BuildRequires: OpenEXR-devel
BuildRequires: SDL-devel
@@ -79,6 +69,7 @@
BuildRequires: fdupes
BuildRequires: fftw3-devel
BuildRequires: gcc-c++
+BuildRequires: gettext-tools
BuildRequires: glew-devel
BuildRequires: graphviz
BuildRequires: help2man
@@ -86,6 +77,7 @@
BuildRequires: jack-audio-connection-kit-devel
BuildRequires: libao-devel
BuildRequires: libdrm-devel
+BuildRequires: libexpat-devel
BuildRequires: libjpeg-devel
BuildRequires: liblcms-devel
BuildRequires: libpng-devel
@@ -99,9 +91,16 @@
BuildRequires: openssl-devel
BuildRequires: pcre-devel
BuildRequires: perl-Text-Iconv
+BuildRequires: pkg-config
+# Needed since blender 2.71. Otherwise it won't build
+BuildRequires: python3-devel >= 3.4
+BuildRequires: python3-numpy-devel
+BuildRequires: python3-requests
BuildRequires: ruby
BuildRequires: ruby-devel
BuildRequires: shared-mime-info
+BuildRequires: update-desktop-files
+BuildRequires: xorg-x11
BuildRequires: xorg-x11-devel
BuildRequires: xz
BuildRequires: xz-devel
@@ -109,6 +108,20 @@
BuildRequires: yasm-devel
BuildRequires: pkgconfig(glu)
BuildRequires: pkgconfig(libxml-2.0)
+# See bnc#713346
+Requires: python3-numpy
+Requires: python3-requests
+Requires: python3-xml
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
+%if 0%{?suse_version} > 1210
+BuildRequires: libGLw-devel
+BuildRequires: libGLw1
+%else
+BuildRequires: MesaGLw-devel
+%endif
+%if %{documentation} == 1
+Recommends: blender-doc
+%endif
%if %{with ffmpeg}
BuildRequires: ffmpeg-devel
%endif
@@ -119,13 +132,10 @@
BuildRequires: pkgconfig(audaspace)
%endif
# Added OpenimageIO and OpenColorIO to enable build with cycles see bnc#905649
+%if %{with cycles}
BuildRequires: OpenColorIO-devel
BuildRequires: OpenImageIO-devel
-# See bnc#713346
-Requires: python3-numpy
-Requires: python3-requests
-Requires: python3-xml
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
+%endif
%description
Blender is a 3D modelling and rendering package. It is the in-house
@@ -144,8 +154,11 @@
rendering, node-based compositing, and non linear video editing,
as well as an integrated game engine for real-time interactive 3D
and game creation and playback with cross-platform compatibility.
+%if %{without cycles}
+This blender is not built with cycles.
+%endif
-%if %documentation == 1
+%if %{documentation} == 1
%package doc
Summary: Documentation for blender
Group: Documentation
@@ -191,6 +204,11 @@
export pver=$(pkg-config python3 --modversion)$(python3-config --abiflags)
mkdir -p Build && pushd Build
# Since Blender 2.71 Python >=3.4 is a hard requirement for building.
+# FIXME: This comes from a stupid osc spec formatter
+# blender's flags are complex enough already without %%cmake macro spamming the build log.
+# It also puts _smp_mflags where it shouldn't, I had to write make -j1 to stop it.
+# NOTE: Don't use cmake macro.
+# FIXME: you should use %%cmake macros
cmake ../ -DBUILD_SHARED_LIBS:BOOL=off \
-DWITH_FFTW3:BOOL=on \
-DWITH_JACK:BOOL=on \
@@ -201,6 +219,8 @@
%endif
%if 0%{?collada} == 1
-DWITH_OPENCOLLADA:BOOL=on \
+%else
+ -DWITH_OPENCOLLADA:BOOL=off \
%endif
%if 0%{?audaspace} == 1
-DWITH_SYSTEM_AUDASPACE:BOOL=on \
@@ -208,13 +228,18 @@
-DWITH_PYTHON:BOOL=on \
-DWITH_PYTHON_INSTALL:BOOL=off \
-DWITH_GAMEENGINE:BOOL=ON \
+%if %{without cycles}
+ -DWITH_CYCLES:BOOL=OFF \
+%endif
%ifarch ppc ppc64 ppc64le
-DWITH_CYCLES:BOOL=OFF \
%else
+%if %{with cycles}
-DWITH_CYCLES:BOOL=ON \
-%endif
-DWITH_OPENIMAGEIO:BOOL=ON \
-DWITH_OPENCOLORIO:BOOL=ON \
+%endif
+%endif
-DWITH_PLAYER:BOOL=on \
-DWITH_INSTALL_PORTABLE:BOOL=OFF \
-DWITH_SYSTEM_GLEW:BOOL=ON \
@@ -224,29 +249,29 @@
%endif
-DWITH_MOD_OCEANSIM:BOOL=OFF \
-DCMAKE_VERBOSE_MAKEFILE=on \
- -DCMAKE_C_FLAGS="$RPM_OPT_FLAGS ${sseflags}" \
- -DCMAKE_CXX_FLAGS="$RPM_OPT_FLAGS ${sseflags}" \
+ -DCMAKE_C_FLAGS="%{optflags} ${sseflags}" \
+ -DCMAKE_CXX_FLAGS="%{optflags} ${sseflags}" \
-DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \
-DPYTHON_VERSION=$psver \
-DPYTHON_LIBPATH=%{_libexecdir} \
-DPYTHON_LIBRARY=python$pver \
- -DPYTHON_INCLUDE_DIRS=/usr/include/python$pver \
+ -DPYTHON_INCLUDE_DIRS=%{_includedir}/python$pver \
-DWITH_PYTHON_INSTALL_NUMPY=off
export LDFLAGS="$LDFLAGS -lclew"
pushd extern/libmv
-make
+make -j1
popd
# A further attempt to stop out of memory failures.
export jobs=$(getconf _NPROCESSORS_ONLN)
+
%define jobs %(echo $jobs)
%if 0%{?jobs} > 2
%define _smp_mflags -j2
%endif
make %{?_smp_mflags}
popd
-
-%if %documentation == 1
+%if %{documentation} == 1
# Build documentation
pushd doc/doxygen
doxygen -u Doxyfile
@@ -259,25 +284,45 @@
%install
export blender_version=$(grep BLENDER_VERSION source/blender/blenkernel/BKE_blender.h | tr -dc 0-9)
export blender_version=$(expr $blender_version / 100).$(expr $blender_version % 100)
+
%define rlversion %(echo $blender_version)
echo "release version = $blender_version"
echo "rlversion is %{?rlversion}"
-
# make install
pushd Build
%make_install
popd
-
# Remove folder, it's not supposed to be installed here.
rm -rf %{buildroot}%{_datadir}/%{name}/%{_version}/datafiles/fonts
rm -f %{buildroot}%{_datadir}/%{name}/%{_version}/scripts/addons/.gitignore
-
+# Fix any .py files with shebangs and wrong permissions.
+if test -z `find %{buildroot} -name *.py -perm 0644 -print0|xargs -0r grep -l '#!'`; \
+then break;
+else chmod -f 0755 `find %{buildroot} -name *.py -perm 0644 -print0|xargs -0r grep -l '#!'`; \
+fi
+# Copy text files to correct place.
+mkdir -p %{buildroot}%{_docdir}/%{name}
+cp -v %{buildroot}%{_datadir}/doc/blender/* %{buildroot}%{_docdir}/%{name}/
+rm -rf %{buildroot}%{_datadir}/doc/blender
+# install blender sample.
+install -D -m 0644 %{SOURCE2} %{buildroot}%{_docdir}/%{name}/
+install -D -m 0644 %{SOURCE3} %{buildroot}%{_docdir}/%{name}/
+install -D -m 0755 %{SOURCE4} %{buildroot}%{_bindir}/
+# Install s6=blender.xpm
+#install -D -m 0644 %%{SOURCE6} %%{buildroot}%%{_datadir}/pixmaps/
+if test -z `find %{buildroot}%{_docdir}/%{name} -name *.py -perm 0755 -print0|xargs -0r grep -l '#!'`; \
+then break;
+else chmod -f 0644 `find %{buildroot}%{_docdir}/%{name} -name *.py -perm 0755 -print0|xargs -0r grep -l '#!'`; \
+fi
+%fdupes %{buildroot}%{_datadir}/%{name}/%{_version}/
+%find_lang %{name} %{?no_lang_C}
+rm -rf %{buildroot}%{_datadir}/locale/languages
+find %{buildroot}%{_datadir}/%{name}/%{_version}/scripts/ -name "*.h" -print -delete
# Factory is now of the opinion that every /usr/bin file needs a man page,
-%if %wplayer == 1
+%if %{wplayer} == 1
# Generate man page with help2man
# Create man1 directory if it doesn't exist. Added with v2.73
[ -d %{buildroot}%{_mandir}/man1 ] || mkdir -p %{buildroot}%{_mandir}/man1 || :
-
pushd %{buildroot}%{_mandir}/man1
cp -v %{buildroot}%{_bindir}/blenderplayer ./
help2man \
@@ -288,62 +333,27 @@
popd
#cp -v %%{SOURCE5} %%{buildroot}%%{_mandir}/man1
%endif
-
-# Fix any .py files with shebangs and wrong permissions.
-if test -z `find %{buildroot} -name *.py -perm 0644 -print0|xargs -0r grep -l '#!'`; \
-then break;
-else chmod -f 0755 `find %{buildroot} -name *.py -perm 0644 -print0|xargs -0r grep -l '#!'`; \
-fi
-
-# Copy text files to correct place.
-mkdir -p %{buildroot}%{_docdir}/%{name}
-cp -v %{buildroot}%{_datadir}/doc/blender/* %{buildroot}%{_docdir}/%{name}/
-rm -rf %{buildroot}%{_datadir}/doc/blender
-# install blender sample.
-install -D -m 0644 %{SOURCE2} %{buildroot}%{_docdir}/%{name}/
-install -D -m 0644 %{SOURCE3} %{buildroot}%{_docdir}/%{name}/
-install -D -m 0755 %{SOURCE4} %{buildroot}%{_bindir}/
-
%if 1 == 1
# Add more icons.
mkdir -p %{buildroot}%{_datadir}/pixmaps/
pushd %{buildroot}%{_datadir}/pixmaps/
ln -s ../icons/hicolor/32x32/apps/blender.png blender.png
popd
-
# Install s6=blender.xpm and s11=v-2.55
install -D -m 0644 %{SOURCE6} %{buildroot}%{_datadir}/pixmaps/
-
ln -s ../icons/hicolor/scalable/apps/blender.svg %{buildroot}%{_datadir}/pixmaps
%endif
-
-# Install s6=blender.xpm
-install -D -m 0644 %{SOURCE6} %{buildroot}%{_datadir}/pixmaps/
-
%if 0%{?sles_version}
%suse_update_desktop_file -i -n -G "Blender Template" x-blend
%suse_update_desktop_file -i -n blender
%else
-
# Install blender template desktop file.
desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE7}
-
# Validate blender.desktop
desktop-file-validate %{buildroot}%{_datadir}/applications/blender.desktop
desktop-file-validate %{buildroot}%{_datadir}/applications/x-blend.desktop
%endif
-if test -z `find %{buildroot}%{_docdir}/%{name} -name *.py -perm 0755 -print0|xargs -0r grep -l '#!'`; \
-then break;
-else chmod -f 0644 `find %{buildroot}%{_docdir}/%{name} -name *.py -perm 0755 -print0|xargs -0r grep -l '#!'`; \
-fi
-
-%fdupes %{buildroot}%{_datadir}/%{name}/%{_version}/
-
-%find_lang %{name} %{?no_lang_C}
-rm -rf %{buildroot}%{_datadir}/locale/languages
-find %{buildroot}%{_datadir}/%{name}/%{_version}/scripts/ -name "*.h" -print -delete
-
%post
update-desktop-database >/dev/null 2>&1 ||:
update-mime-database %{_datadir}/mime >/dev/null 2>&1 ||:
@@ -378,10 +388,9 @@
%{_datadir}/pixmaps/blender.svg
%{_datadir}/pixmaps/blender.xpm
%{_datadir}/pixmaps/blender.png
-%if %documentation == 0
+%if %{documentation} == 0
%doc %{_docdir}/%{name}
%else
-
%files doc
%defattr (-, root, root)
%doc doc/
1
0
Hello community,
here is the log from the commit of package youtube-dl for openSUSE:Factory checked in at 2015-12-29 13:00:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/youtube-dl (Old)
and /work/SRC/openSUSE:Factory/.youtube-dl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "youtube-dl"
Changes:
--------
--- /work/SRC/openSUSE:Factory/youtube-dl/youtube-dl.changes 2015-12-24 12:17:51.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.youtube-dl.new/youtube-dl.changes 2015-12-29 13:00:03.000000000 +0100
@@ -1,0 +2,5 @@
+Sat Dec 26 22:16:05 UTC 2015 - mailaender(a)opensuse.org
+
+- Update to new upstream release 2015.12.23
+
+-------------------------------------------------------------------
Old:
----
youtube-dl-2015.12.13.tar.gz
youtube-dl-2015.12.13.tar.gz.sig
New:
----
youtube-dl-2015.12.23.tar.gz
youtube-dl-2015.12.23.tar.gz.sig
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ youtube-dl.spec ++++++
--- /var/tmp/diff_new_pack.ca5U7Q/_old 2015-12-29 13:00:04.000000000 +0100
+++ /var/tmp/diff_new_pack.ca5U7Q/_new 2015-12-29 13:00:04.000000000 +0100
@@ -17,7 +17,7 @@
Name: youtube-dl
-Version: 2015.12.13
+Version: 2015.12.23
Release: 0
Summary: A tool for downloading from Youtube
License: SUSE-Public-Domain and CC-BY-SA-3.0
++++++ youtube-dl-2015.12.13.tar.gz -> youtube-dl-2015.12.23.tar.gz ++++++
++++ 4871 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package rkhunter for openSUSE:Factory checked in at 2015-12-29 12:59:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rkhunter (Old)
and /work/SRC/openSUSE:Factory/.rkhunter.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rkhunter"
Changes:
--------
--- /work/SRC/openSUSE:Factory/rkhunter/rkhunter.changes 2015-05-11 19:49:33.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.rkhunter.new/rkhunter.changes 2015-12-29 13:00:01.000000000 +0100
@@ -1,0 +2,5 @@
+Fri Dec 25 16:31:28 UTC 2015 - mpluskal(a)suse.com
+
+- Add gpg signature
+
+-------------------------------------------------------------------
New:
----
rkhunter-1.4.2.tar.gz.asc
rkhunter.keyring
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rkhunter.spec ++++++
--- /var/tmp/diff_new_pack.FYqTUr/_old 2015-12-29 13:00:02.000000000 +0100
+++ /var/tmp/diff_new_pack.FYqTUr/_new 2015-12-29 13:00:02.000000000 +0100
@@ -25,10 +25,12 @@
Group: System/Monitoring
Url: http://rkhunter.sourceforge.net/
Source0: http://sourceforge.net/projects/rkhunter/files/%{name}-%{version}.tar.gz
+Source1: http://sourceforge.net/projects/rkhunter/files/%{name}-%{version}.tar.gz.asc
Source2: %{name}.sysconfig
Source3: %{name}.cron
Source5: %{name}-README.SUSE
Source6: %{name}.logrotate
+Source7: %{name}.keyring
# PATCH-FIX-OPENSUSE -- saigkill(a)opensuse.org - Fix Pathes2
Patch0: %{name}-installer-fix.patch
BuildRequires: wget
1
0
Hello community,
here is the log from the commit of package ghc for openSUSE:Factory checked in at 2015-12-29 12:59:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc (Old)
and /work/SRC/openSUSE:Factory/.ghc.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc/ghc.changes 2015-12-23 08:50:20.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ghc.new/ghc.changes 2015-12-29 12:59:59.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Dec 28 08:52:20 UTC 2015 - mimi.vx(a)gmail.com
+
+- update Cabal to 1.22.6.0
+- add u_Cabal_update.patch -- update of Cabal
+* Relax upper bound to allow upcoming binary-0.8
+
+-------------------------------------------------------------------
New:
----
u_Cabal_update.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc.spec ++++++
--- /var/tmp/diff_new_pack.rGrxwN/_old 2015-12-29 13:00:01.000000000 +0100
+++ /var/tmp/diff_new_pack.rGrxwN/_new 2015-12-29 13:00:01.000000000 +0100
@@ -72,7 +72,8 @@
Patch19: 0001-implement-native-code-generator-for-ppc64.patch
# PATCH-FIX-UPSTREAM ghc.git-b29f20.patch peter.trommler(a)ohm-hochschule.de -- nativeGen PPC: fix > 16 bit offsets in stack handling. This is a backport of my patch for Haskell trac #7830. We do not use erikd's patch because we have 64 bit native code generation for ppc64[le]. See patch 19.
Patch20: ghc.git-b29f20.patch
-
+# PATCH-FIX-UPSTREAM u_Cabal_update.patch mimi.vx(a)gmail.com -- update Cabal to 1.22.6.0
+Patch22: u_Cabal_update.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -118,7 +119,7 @@
%global ghc_pkg_c_deps ghc-compiler = %{ghc_version_override}-%{release}
%if %{defined ghclibdir}
-%ghc_lib_subpackage Cabal 1.22.5.0
+%ghc_lib_subpackage Cabal 1.22.6.0
%ghc_lib_subpackage array 0.5.1.0
%ghc_lib_subpackage -c gmp-devel,libffi-devel base 4.8.1.0
%ghc_lib_subpackage binary 0.7.5.0
@@ -164,6 +165,7 @@
%patch1 -p1
%patch19 -p1
%patch20 -p1
+%patch22 -p2
%build
# Patch 19 modifies build system
++++++ u_Cabal_update.patch ++++++
diff --git a/ghc-7.10.3.old/libraries/Cabal/Cabal/Cabal.cabal b/ghc-7.10.3/libraries/Cabal/Cabal/Cabal.cabal
index b498ca0..f3b3c32 100644
--- a/ghc-7.10.3.old/libraries/Cabal/Cabal/Cabal.cabal
+++ b/ghc-7.10.3/libraries/Cabal/Cabal/Cabal.cabal
@@ -1,5 +1,5 @@
name: Cabal
-version: 1.22.5.0
+version: 1.22.6.0
copyright: 2003-2006, Isaac Jones
2005-2011, Duncan Coutts
license: BSD3
@@ -145,7 +145,7 @@ library
if flag(bundled-binary-generic)
build-depends: binary >= 0.5 && < 0.7
else
- build-depends: binary >= 0.7 && < 0.8
+ build-depends: binary >= 0.7 && < 0.9
-- Needed for GHC.Generics before GHC 7.6
if impl(ghc < 7.6)
@@ -265,7 +265,7 @@ test-suite unit-tests
test-framework-hunit,
test-framework-quickcheck2,
HUnit,
- QuickCheck < 2.8,
+ QuickCheck < 2.9,
Cabal
ghc-options: -Wall
default-language: Haskell98
@@ -312,7 +312,7 @@ test-suite package-tests
test-framework-quickcheck2 >= 0.2.12,
test-framework-hunit,
HUnit,
- QuickCheck >= 2.1.0.1 && < 2.8,
+ QuickCheck >= 2.1.0.1 && < 2.9,
Cabal,
process,
directory,
diff --git a/ghc-7.10.3.old/libraries/Cabal/Cabal/Distribution/Simple/GHC.hs b/ghc-7.10.3/libraries/Cabal/Cabal/Distribution/Simple/GHC.hs
index 444c851..270e2c3 100644
--- a/ghc-7.10.3.old/libraries/Cabal/Cabal/Distribution/Simple/GHC.hs
+++ b/ghc-7.10.3/libraries/Cabal/Cabal/Distribution/Simple/GHC.hs
@@ -553,8 +553,10 @@ buildOrReplLib forRepl verbosity numJobs pkg_descr lbi lib clbi = do
-- TODO: problem here is we need the .c files built first, so we can load them
-- with ghci, but .c files can depend on .h files generated by ghc by ffi
-- exports.
- unless (null (libModules lib)) $
- ifReplLib (runGhcProg replOpts)
+
+ ifReplLib $ do
+ when (null (libModules lib)) $ warn verbosity "No exposed modules"
+ ifReplLib (runGhcProg replOpts)
-- link:
unless forRepl $ do
@@ -766,7 +768,9 @@ buildOrReplExe forRepl verbosity numJobs _pkg_descr lbi
ghcOptLinkLibPath = toNubListR $ extraLibDirs exeBi,
ghcOptLinkFrameworks = toNubListR $ PD.frameworks exeBi,
ghcOptInputFiles = toNubListR
- [exeDir </> x | x <- cObjs],
+ [exeDir </> x | x <- cObjs]
+ }
+ dynLinkerOpts = mempty {
ghcOptRPaths = rpaths
}
replOpts = baseOpts {
@@ -812,9 +816,9 @@ buildOrReplExe forRepl verbosity numJobs _pkg_descr lbi
| otherwise = doingTH && (withProfExe lbi || withDynExe lbi)
linkOpts = commonOpts `mappend`
- linkerOpts `mappend` mempty {
- ghcOptLinkNoHsMain = toFlag (not isHaskellMain)
- }
+ linkerOpts `mappend`
+ mempty { ghcOptLinkNoHsMain = toFlag (not isHaskellMain) } `mappend`
+ (if withDynExe lbi then dynLinkerOpts else mempty)
-- Build static/dynamic object files for TH, if needed.
when compileForTH $
diff --git a/ghc-7.10.3.old/libraries/Cabal/Cabal/Distribution/Version.hs b/ghc-7.10.3/libraries/Cabal/Cabal/Distribution/Version.hs
index 1123749..e5c2e28 100644
--- a/ghc-7.10.3.old/libraries/Cabal/Cabal/Distribution/Version.hs
+++ b/ghc-7.10.3/libraries/Cabal/Cabal/Distribution/Version.hs
@@ -3,7 +3,25 @@
#if __GLASGOW_HASKELL__ < 707
{-# LANGUAGE StandaloneDeriving #-}
#endif
+
+-- Hack approach to support bootstrapping
+-- Assume binary <0.8 when MIN_VERSION_binary macro is not available.
+-- Starting with GHC>=8.0, compiler will hopefully provide this macros too.
+-- https://ghc.haskell.org/trac/ghc/ticket/10970
+--
+-- Otherwise, one can specify -DMIN_VERSION_binary_0_8_0=1, when bootstrapping
+-- with binary >=0.8.0.0
+#ifdef MIN_VERSION_binary
+#define MIN_VERSION_binary_0_8_0 MIN_VERSION_binary(0,8,0)
+#else
+#ifndef MIN_VERSION_binary_0_8_0
+#define MIN_VERSION_binary_0_8_0 0
+#endif
+#endif
+
+#if !MIN_VERSION_binary_0_8_0
{-# OPTIONS_GHC -fno-warn-orphans #-}
+#endif
-----------------------------------------------------------------------------
-- |
@@ -109,6 +127,7 @@ instance Binary VersionRange
deriving instance Data Version
#endif
+#if !(MIN_VERSION_binary_0_8_0)
-- Deriving this instance from Generic gives trouble on GHC 7.2 because the
-- Generic instance has to be standalone-derived. So, we hand-roll our own.
-- We can't use a generic Binary instance on later versions because we must
@@ -119,6 +138,7 @@ instance Binary Version where
tags <- get
return $ Version br tags
put (Version br tags) = put br >> put tags
+#endif
{-# DEPRECATED AnyVersion "Use 'anyVersion', 'foldVersionRange' or 'asVersionIntervals'" #-}
{-# DEPRECATED ThisVersion "use 'thisVersion', 'foldVersionRange' or 'asVersionIntervals'" #-}
diff --git a/ghc-7.10.3.old/libraries/Cabal/Cabal/changelog b/ghc-7.10.3/libraries/Cabal/Cabal/changelog
index f5fb8ff..e3ab68c 100644
--- a/ghc-7.10.3.old/libraries/Cabal/Cabal/changelog
+++ b/ghc-7.10.3/libraries/Cabal/Cabal/changelog
@@ -1,3 +1,6 @@
+1.22.6.0
+ * Relax upper bound to allow upcoming binary-0.8
+
1.22.5.0
* Don't recompile C sources unless needed (#2601). (Luke Iannini)
* Support Haddock response files.
1
0