sys-libs/libudev-compat: New package
authorJonathan Callen <jcallen@gentoo.org>
Fri, 28 Aug 2015 03:46:46 +0000 (23:46 -0400)
committerJonathan Callen <jcallen@gentoo.org>
Fri, 28 Aug 2015 03:48:52 +0000 (23:48 -0400)
This installs a libudev.so.0 that wraps libudev.so.1 and provides the
few functions that were removed with the SONAME bump.  This is only
needed for some older binary-only software, including Steam.

Package-Manager: portage-2.2.20.1

sys-libs/libudev-compat/files/udev_old.c [new file with mode: 0644]
sys-libs/libudev-compat/libudev-compat-186.ebuild [new file with mode: 0644]
sys-libs/libudev-compat/metadata.xml [new file with mode: 0644]

diff --git a/sys-libs/libudev-compat/files/udev_old.c b/sys-libs/libudev-compat/files/udev_old.c
new file mode 100644 (file)
index 0000000..584644a
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2015 Jonathan Callen <jcallen@gentoo.org>
+ * Copyright (C) 2008-2010 Kay Sievers <kay.sievers@vrfy.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ */
+
+#include <errno.h>
+#include <stddef.h>
+
+void *udev_monitor_new_from_socket(void *udev, const void *path) {
+       errno = ENOSYS;
+       return NULL;
+}
+
+void *udev_queue_get_failed_list_entry(void *udev_queue) {
+       errno = ENOSYS;
+       return NULL;
+}
+
+const char *udev_get_sys_path(void *udev) {
+       if (!udev) return NULL;
+       return "/sys";
+}
+
+const char *udev_get_dev_path(void *udev) {
+       if (!udev) return NULL;
+       return "/dev";
+}
+
+const char *udev_get_run_path(void *udev) {
+       if (!udev) return NULL;
+       return "/run/udev";
+}
diff --git a/sys-libs/libudev-compat/libudev-compat-186.ebuild b/sys-libs/libudev-compat/libudev-compat-186.ebuild
new file mode 100644 (file)
index 0000000..3a725c6
--- /dev/null
@@ -0,0 +1,48 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit multilib multilib-minimal toolchain-funcs
+
+DESCRIPTION="Wrapper around libudev.so.1 for packages needing the old libudev.so.0"
+HOMEPAGE="http://gentoo.org/"
+SRC_URI=""
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+DEPEND="virtual/libudev:0/1[${MULTILIB_USEDEP}]"
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+       mkdir "${S}" || die
+       cp "${FILESDIR}"/udev_old.c "${S}" || die
+}
+
+multilib_src_configure() { :; }
+
+echo_and_run() {
+       echo "$@"
+       "$@"
+}
+
+multilib_src_compile() {
+       # Note: --no-as-needed is used explictly here to ensure that libudev.so.1
+       # is pulled in, even though nothing in udev_old.c otherwise requires it
+       echo_and_run $(tc-getCC) \
+               ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} \
+               -fpic -shared \
+               -Wl,-soname,libudev.so.0 \
+               -o libudev.so.0 \
+               "${S}"/udev_old.c \
+               -Wl,--no-as-needed \
+               -ludev || die
+}
+
+multilib_src_install() {
+       dolib.so libudev.so.0
+}
diff --git a/sys-libs/libudev-compat/metadata.xml b/sys-libs/libudev-compat/metadata.xml
new file mode 100644 (file)
index 0000000..311eca7
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+       <maintainer>
+               <email>jcallen@gentoo.org</email>
+               <name>Jonathan Callen</name>
+       </maintainer>
+</pkgmetadata>