From 2e2ceb709324edec7baf64370ba3d3070e8d43f2 Mon Sep 17 00:00:00 2001 From: "Maciej S. Szmigiero" Date: Sun, 8 Jan 2017 23:47:56 +0100 Subject: sys-apps/usb_modeswitch: udev scripts need RW temporary directory /lib/udev/usb_modeswitch script and usb_modeswitch_dispatcher Tcl script that it calls both need a writable temporary directory which is a problematic requirement for example if usb_modeswitch is triggered by a module loaded during system startup. Fortunately, /run is available RW very early at boot so let's redirect them there instead. Fixes a case where system startup with an USB modem plugged in would often result in this modem not being switched correctly if USB host controller modules are loaded via the "modules" service. Gentoo-Bug: https://bugs.gentoo.org/565262 Fixes: https://github.com/gentoo/gentoo/pull/3389 Package-Manager: Portage-2.3.3, Repoman-2.3.1 (cherry picked from commit 1cede4c86a4e691cd51f82aad27c2a4e543cacdd) Signed-off-by: Robin H. Johnson --- .../files/usb_modeswitch.sh-tmpdir.patch | 18 ++++++ .../usb_modeswitch/usb_modeswitch-2.4.0-r1.ebuild | 68 ++++++++++++++++++++++ .../usb_modeswitch/usb_modeswitch-2.4.0.ebuild | 67 --------------------- 3 files changed, 86 insertions(+), 67 deletions(-) create mode 100644 sys-apps/usb_modeswitch/files/usb_modeswitch.sh-tmpdir.patch create mode 100644 sys-apps/usb_modeswitch/usb_modeswitch-2.4.0-r1.ebuild delete mode 100644 sys-apps/usb_modeswitch/usb_modeswitch-2.4.0.ebuild diff --git a/sys-apps/usb_modeswitch/files/usb_modeswitch.sh-tmpdir.patch b/sys-apps/usb_modeswitch/files/usb_modeswitch.sh-tmpdir.patch new file mode 100644 index 000000000000..5039d44da1fd --- /dev/null +++ b/sys-apps/usb_modeswitch/files/usb_modeswitch.sh-tmpdir.patch @@ -0,0 +1,18 @@ +Script that this patch modifies and usb_modeswitch_dispatcher Tcl script +that is being called by it both need a writable temporary directory which +is a problematic requirement for example if usb_modeswitch is triggered +by a module loaded during system startup. +Fortunately, /run is available very early at boot so let's redirect them +there instead. + +--- a/usb_modeswitch.sh 2016-11-29 17:29:47.000000000 +0100 ++++ b/usb_modeswitch.sh 2016-11-30 01:11:51.747993839 +0100 +@@ -17,6 +17,8 @@ + return 0 + } + ++export TMPDIR=/run ++ + if [ $(expr "$1" : "--.*") ]; then + p_id=$4 + if [ -z $p_id ]; then diff --git a/sys-apps/usb_modeswitch/usb_modeswitch-2.4.0-r1.ebuild b/sys-apps/usb_modeswitch/usb_modeswitch-2.4.0-r1.ebuild new file mode 100644 index 000000000000..74132f36d153 --- /dev/null +++ b/sys-apps/usb_modeswitch/usb_modeswitch-2.4.0-r1.ebuild @@ -0,0 +1,68 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +inherit eutils linux-info toolchain-funcs udev systemd + +MY_PN=${PN/_/-} +MY_P=${MY_PN}-${PV/_p*} +#DATA_VER=${PV/*_p} +DATA_VER="20160803" + +DESCRIPTION="A tool for controlling 'flip flop' (multiple devices) USB gear like UMTS sticks" +HOMEPAGE="http://www.draisberghof.de/usb_modeswitch/ http://www.draisberghof.de/usb_modeswitch/device_reference.txt" +SRC_URI="http://www.draisberghof.de/${PN}/${MY_P}.tar.bz2 + http://www.draisberghof.de/${PN}/${MY_PN}-data-${DATA_VER}.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="jimtcl" + +COMMON_DEPEND=" + virtual/udev + virtual/libusb:1 +" +RDEPEND="${COMMON_DEPEND} + jimtcl? ( dev-lang/jimtcl ) + !jimtcl? ( dev-lang/tcl:0 )" # usb_modeswitch script is tcl +DEPEND="${COMMON_DEPEND} + virtual/pkgconfig +" + +S=${WORKDIR}/${MY_P} + +CONFIG_CHECK="~USB_SERIAL" + +src_prepare() { + sed -i -e '/install.*BIN/s:-s::' Makefile || die + epatch "${FILESDIR}/usb_modeswitch.sh-tmpdir.patch" +} + +src_compile() { + emake CC="$(tc-getCC)" +} + +src_install() { + emake \ + DESTDIR="${D}" \ + SYSDIR="${D}/$(systemd_get_unitdir)" \ + UDEVDIR="${D}/$(get_udevdir)" \ + $(usex jimtcl install-shared install) + + # Even if we set SYSDIR above, the Makefile is causing automagic detection of `systemctl` binary, + # which is why we need to force the .service file to be installed: + systemd_dounit ${PN}@.service + + dodoc ChangeLog README + + pushd ../${MY_PN}-data-${DATA_VER} >/dev/null + emake \ + DESTDIR="${D}" \ + RULESDIR="${D}/$(get_udevdir)/rules.d" \ + files-install db-install + docinto data + dodoc ChangeLog README + popd >/dev/null +} diff --git a/sys-apps/usb_modeswitch/usb_modeswitch-2.4.0.ebuild b/sys-apps/usb_modeswitch/usb_modeswitch-2.4.0.ebuild deleted file mode 100644 index ceb9bfd3b851..000000000000 --- a/sys-apps/usb_modeswitch/usb_modeswitch-2.4.0.ebuild +++ /dev/null @@ -1,67 +0,0 @@ -# Copyright 1999-2016 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id$ - -EAPI=5 -inherit eutils linux-info toolchain-funcs udev systemd - -MY_PN=${PN/_/-} -MY_P=${MY_PN}-${PV/_p*} -#DATA_VER=${PV/*_p} -DATA_VER="20160803" - -DESCRIPTION="A tool for controlling 'flip flop' (multiple devices) USB gear like UMTS sticks" -HOMEPAGE="http://www.draisberghof.de/usb_modeswitch/ http://www.draisberghof.de/usb_modeswitch/device_reference.txt" -SRC_URI="http://www.draisberghof.de/${PN}/${MY_P}.tar.bz2 - http://www.draisberghof.de/${PN}/${MY_PN}-data-${DATA_VER}.tar.bz2" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~amd64 ~arm ~x86" -IUSE="jimtcl" - -COMMON_DEPEND=" - virtual/udev - virtual/libusb:1 -" -RDEPEND="${COMMON_DEPEND} - jimtcl? ( dev-lang/jimtcl ) - !jimtcl? ( dev-lang/tcl:0 )" # usb_modeswitch script is tcl -DEPEND="${COMMON_DEPEND} - virtual/pkgconfig -" - -S=${WORKDIR}/${MY_P} - -CONFIG_CHECK="~USB_SERIAL" - -src_prepare() { - sed -i -e '/install.*BIN/s:-s::' Makefile || die -} - -src_compile() { - emake CC="$(tc-getCC)" -} - -src_install() { - emake \ - DESTDIR="${D}" \ - SYSDIR="${D}/$(systemd_get_unitdir)" \ - UDEVDIR="${D}/$(get_udevdir)" \ - $(usex jimtcl install-shared install) - - # Even if we set SYSDIR above, the Makefile is causing automagic detection of `systemctl` binary, - # which is why we need to force the .service file to be installed: - systemd_dounit ${PN}@.service - - dodoc ChangeLog README - - pushd ../${MY_PN}-data-${DATA_VER} >/dev/null - emake \ - DESTDIR="${D}" \ - RULESDIR="${D}/$(get_udevdir)/rules.d" \ - files-install db-install - docinto data - dodoc ChangeLog README - popd >/dev/null -} -- cgit v1.2.3-65-gdbad