diff --git a/pkgs/by-name/us/usb-modeswitch/configurable-usb-modeswitch.patch b/pkgs/by-name/us/usb-modeswitch/configurable-usb-modeswitch.patch deleted file mode 100644 index d55caab22e69..000000000000 --- a/pkgs/by-name/us/usb-modeswitch/configurable-usb-modeswitch.patch +++ /dev/null @@ -1,283 +0,0 @@ -Index: usb-modeswitch-2.6.0/Makefile -=================================================================== ---- usb-modeswitch-2.6.0.orig/Makefile -+++ usb-modeswitch-2.6.0/Makefile -@@ -5,17 +5,24 @@ CFLAGS += -Wall -Wno-deprecated-dec - LIBS = `pkg-config --libs --cflags libusb-1.0` - RM = /bin/rm -f - OBJS = usb_modeswitch.c --PREFIX = $(DESTDIR)/usr --ETCDIR = $(DESTDIR)/etc -+PREFIX = /usr/local -+ETCDIR = $(PREFIX)/etc - SYSDIR = $(ETCDIR)/systemd/system - UPSDIR = $(ETCDIR)/init --UDEVDIR = $(DESTDIR)/lib/udev -+UDEVDIR = $(PREFIX)/lib/udev - SBINDIR = $(PREFIX)/sbin - MANDIR = $(PREFIX)/share/man/man1 - -+USE_UPSTART=$(shell if command -v initctl > /dev/null; then echo "true"; fi) -+USE_SYSTEMD=$(shell if command -v systemctl > /dev/null; then echo "true"; fi) -+ - .PHONY: clean install install-common uninstall \ - dispatcher-script dispatcher-dynlink dispatcher-statlink \ -- install-script install-dynlink install-statlink -+ install-script install-dynlink install-statlink \ -+ install-upstart install-systemd \ -+ configure-dispatcher configure-script \ -+ configure-upstart configure-systemd \ -+ configure - - all: all-with-script-dispatcher - -@@ -28,7 +35,25 @@ all-with-statlink-dispatcher: $(PROG) di - $(PROG): $(OBJS) usb_modeswitch.h - $(CC) -o $(PROG) $(OBJS) $(CFLAGS) $(LIBS) $(LDFLAGS) - --dispatcher-script: usb_modeswitch_dispatcher.tcl -+configure-dispatcher: -+ sed -i \ -+ -e 's,^\(set setup(sbindir) \).*$$,\1$(SBINDIR),' \ -+ -e 's,^\(set setup(etcdir) \).*$$,\1$(ETCDIR),' \ -+ usb_modeswitch_dispatcher.tcl -+ -+configure-script: -+ sed -i -e 's,^\(SBINDIR=\).*$$,\1$(SBINDIR),' usb_modeswitch.sh -+ -+configure-systemd: -+ sed -i -e 's,@sbindir@,$(SBINDIR),' usb_modeswitch@.service -+ -+configure-upstart: -+ sed -i -e 's,@sbindir@,$(SBINDIR),' usb-modeswitch-upstart.conf -+ -+configure: configure-dispatcher configure-script \ -+ configure-systemd configure-upstart -+ -+dispatcher-script: configure-dispatcher usb_modeswitch_dispatcher.tcl - DISPATCH=dispatcher-script - cp -f usb_modeswitch_dispatcher.tcl usb_modeswitch_dispatcher - -@@ -53,16 +78,28 @@ distclean: clean - # If the systemd folder is present, install the service for starting the dispatcher - # If not, use the dispatcher directly from the udev rule as in previous versions - --install-common: $(PROG) $(DISPATCH) -- install -D --mode=755 usb_modeswitch $(SBINDIR)/usb_modeswitch -- install -D --mode=755 usb_modeswitch.sh $(UDEVDIR)/usb_modeswitch -- install -D --mode=644 usb_modeswitch.conf $(ETCDIR)/usb_modeswitch.conf -- install -D --mode=644 usb_modeswitch.1 $(MANDIR)/usb_modeswitch.1 -- install -D --mode=644 usb_modeswitch_dispatcher.1 $(MANDIR)/usb_modeswitch_dispatcher.1 -- install -D --mode=755 usb_modeswitch_dispatcher $(SBINDIR)/usb_modeswitch_dispatcher -+install-common: $(PROG) configure $(DISPATCH) -+ install -D --mode=755 usb_modeswitch $(DESTDIR)$(SBINDIR)/usb_modeswitch -+ install -D --mode=755 usb_modeswitch.sh $(DESTDIR)$(UDEVDIR)/usb_modeswitch -+ install -D --mode=644 usb_modeswitch.conf $(DESTDIR)$(ETCDIR)/usb_modeswitch.conf -+ install -D --mode=644 usb_modeswitch.1 $(DESTDIR)$(MANDIR)/usb_modeswitch.1 -+ install -D --mode=644 usb_modeswitch_dispatcher.1 $(DESTDIR)$(MANDIR)/usb_modeswitch_dispatcher.1 -+ install -D --mode=755 usb_modeswitch_dispatcher $(DESTDIR)$(SBINDIR)/usb_modeswitch_dispatcher - install -d $(DESTDIR)/var/lib/usb_modeswitch -- test -d $(UPSDIR) -a -e /sbin/initctl && install --mode=644 usb-modeswitch-upstart.conf $(UPSDIR) || test 1 -- test -d $(SYSDIR) -a \( -e /usr/bin/systemctl -o -e /bin/systemctl \) && install --mode=644 usb_modeswitch@.service $(SYSDIR) || test 1 -+ -+install-upstart: -+ install -D --mode=644 usb-modeswitch-upstart.conf $(DESTDIR)$(UPSDIR)/usb-modeswitch-upstart.conf -+ -+install-systemd: -+ install -D --mode=644 usb_modeswitch@.service $(DESTDIR)$(SYSDIR)/usb_modeswitch@.service -+ -+ifeq ($(USE_UPSTART),true) -+install-common: install-upstart -+endif -+ -+ifeq ($(USE_SYSTEMD),true) -+install-common: install-systemd -+endif - - install: install-script - -@@ -73,10 +110,10 @@ install-dynlink: dispatcher-dynlink inst - install-statlink: dispatcher-statlink install-common - - uninstall: -- $(RM) $(SBINDIR)/usb_modeswitch -- $(RM) $(SBINDIR)/usb_modeswitch_dispatcher -- $(RM) $(UDEVDIR)/usb_modeswitch -- $(RM) $(ETCDIR)/usb_modeswitch.conf -- $(RM) $(MANDIR)/usb_modeswitch.1 -+ $(RM) $(DESTDIR)$(SBINDIR)/usb_modeswitch -+ $(RM) $(DESTDIR)$(SBINDIR)/usb_modeswitch_dispatcher -+ $(RM) $(DESTDIR)$(UDEVDIR)/usb_modeswitch -+ $(RM) $(DESTDIR)$(ETCDIR)/usb_modeswitch.conf -+ $(RM) $(DESTDIR)$(MANDIR)/usb_modeswitch.1 - $(RM) -R $(DESTDIR)/var/lib/usb_modeswitch -- $(RM) $(SYSDIR)/usb_modeswitch@.service -+ $(RM) $(DESTDIR)$(SYSDIR)/usb_modeswitch@.service -Index: usb-modeswitch-2.6.0/usb-modeswitch-upstart.conf -=================================================================== ---- usb-modeswitch-2.6.0.orig/usb-modeswitch-upstart.conf -+++ usb-modeswitch-2.6.0/usb-modeswitch-upstart.conf -@@ -1,5 +1,5 @@ - start on usb-modeswitch-upstart - task - script -- exec /usr/sbin/usb_modeswitch_dispatcher --switch-mode $UMS_PARAM -+ exec @sbindir@/usb_modeswitch_dispatcher --switch-mode $UMS_PARAM - end script -Index: usb-modeswitch-2.6.0/usb_modeswitch.sh -=================================================================== ---- usb-modeswitch-2.6.0.orig/usb_modeswitch.sh -+++ usb-modeswitch-2.6.0/usb_modeswitch.sh -@@ -1,5 +1,9 @@ - #!/bin/sh - # part of usb_modeswitch 2.6.0 -+ -+# Compile time configuration, injected by the Makefile -+SBINDIR=/usr/sbin -+ - device_in() - { - if [ ! -e /var/lib/usb_modeswitch/$1 ]; then -@@ -37,7 +41,7 @@ if [ $(expr "$1" : "--.*") ]; then - v_id=$3 - fi - fi --PATH=/sbin:/usr/sbin:$PATH -+ - case "$1" in - --driver-bind) - # driver binding code removed -@@ -46,9 +50,7 @@ case "$1" in - --symlink-name) - device_in "link_list" $v_id $p_id - if [ "$?" = "1" ]; then -- if [ -e "/usr/sbin/usb_modeswitch_dispatcher" ]; then -- exec usb_modeswitch_dispatcher $1 $2 2>>/dev/null -- fi -+ exec $SBINDIR/usb_modeswitch_dispatcher $1 $2 2>>/dev/null - fi - exit 0 - ;; -@@ -61,15 +63,13 @@ if [ "$p2" = "" -a "$p1" != "" ]; then - p2=$p1 - fi - --PATH=/bin:/sbin:/usr/bin:/usr/sbin --init_path=`readlink -f /sbin/init` --if [ `basename $init_path` = "systemd" ]; then -+if command -v systemctl > /dev/null; then - systemctl --no-block restart usb_modeswitch@$p2.service --elif [ -e "/etc/init/usb-modeswitch-upstart.conf" ]; then -+elif command -v initctl > /dev/null; then - initctl emit --no-wait usb-modeswitch-upstart UMS_PARAM=$p2 - else - # only old distros, new udev will kill all subprocesses - exec 1<&- 2<&- 5<&- 7<&- -- exec usb_modeswitch_dispatcher --switch-mode $p2 & -+ exec $SBINDIR/usb_modeswitch_dispatcher --switch-mode $p2 & - fi - exit 0 -Index: usb-modeswitch-2.6.0/usb_modeswitch@.service -=================================================================== ---- usb-modeswitch-2.6.0.orig/usb_modeswitch@.service -+++ usb-modeswitch-2.6.0/usb_modeswitch@.service -@@ -3,6 +3,6 @@ Description=USB_ModeSwitch_%i - - [Service] - Type=oneshot --ExecStart=/usr/sbin/usb_modeswitch_dispatcher --switch-mode %i -+ExecStart=@sbindir@/usb_modeswitch_dispatcher --switch-mode %i - #ExecStart=/bin/echo %i - -Index: usb-modeswitch-2.6.0/usb_modeswitch_dispatcher.tcl -=================================================================== ---- usb-modeswitch-2.6.0.orig/usb_modeswitch_dispatcher.tcl -+++ usb-modeswitch-2.6.0/usb_modeswitch_dispatcher.tcl -@@ -12,6 +12,16 @@ - # Part of usb-modeswitch-2.6.0 package - # (C) Josua Dietze 2009-2019 - -+# Compile-time configuration, injected by the Makefile. -+set setup(sbindir) /usr/sbin -+set setup(etcdir) /etc -+ -+# External dependency default location -+set setup(dbdir) /usr/share/usb_modeswitch -+ -+# Derived configuration -+set setup(dbdir_etc) $setup(etcdir)/usb_modeswitch.d -+ - set arg0 [lindex $argv 0] - if [regexp {\.tcl$} $arg0] { - if [file exists $arg0] { -@@ -115,10 +125,8 @@ if {![regexp {(.*?):.*$} $arg1 d device] - } - } - --set setup(dbdir) /usr/share/usb_modeswitch --set setup(dbdir_etc) /etc/usb_modeswitch.d - if {![file exists $setup(dbdir)] && ![file exists $setup(dbdir_etc)]} { -- Log "\nError: no config database found in /usr/share or /etc. Exit" -+ Log "\nError: no config database found in $setup(dbdir) or $setup(dbdir_etc). Exit" - SafeExit - } - -@@ -285,7 +293,7 @@ if {$config(NoMBIMCheck)==0 && $usb(bNum - if [CheckMBIM] { - Log " driver for MBIM devices is available" - Log "Find MBIM configuration number ..." -- if [catch {set cfgno [exec /usr/sbin/usb_modeswitch -j -Q $busParam $devParam -v $usb(idVendor) -p $usb(idProduct)]} err] { -+ if [catch {set cfgno [exec $setup(sbindir)/usb_modeswitch -j -Q $busParam $devParam -v $usb(idVendor) -p $usb(idProduct)]} err] { - Log "Error when trying to find MBIM configuration, switch to legacy modem mode" - } else { - set cfgno [string trim $cfgno] -@@ -321,7 +329,7 @@ if {$report == ""} { - # Now we are actually switching - if $flags(logging) { - Log "Command line:\nusb_modeswitch -W -D $configParam $busParam $devParam -v $usb(idVendor) -p $usb(idProduct) -f \$flags(config)" -- catch {set report [exec /usr/sbin/usb_modeswitch -W -D $configParam $busParam $devParam -v $usb(idVendor) -p $usb(idProduct) -f "$flags(config)" 2>@1]} report -+ catch {set report [exec $setup(sbindir)/usb_modeswitch -W -D $configParam $busParam $devParam -v $usb(idVendor) -p $usb(idProduct) -f "$flags(config)" 2>@1]} report - Log "\nVerbose debug output of usb_modeswitch and libusb follows" - Log "(Note that some USB errors are to be expected in the process)" - Log "--------------------------------" -@@ -329,7 +337,7 @@ if {$report == ""} { - Log "--------------------------------" - Log "(end of usb_modeswitch output)\n" - } else { -- catch {set report [exec /usr/sbin/usb_modeswitch -Q -D $configParam $busParam $devParam -v $usb(idVendor) -p $usb(idProduct) -f "$flags(config)" 2>@1]} report -+ catch {set report [exec $setup(sbindir)/usb_modeswitch -Q -D $configParam $busParam $devParam -v $usb(idVendor) -p $usb(idProduct) -f "$flags(config)" 2>@1]} report - } - } - -@@ -522,12 +530,12 @@ return 1 - - proc {ParseGlobalConfig} {path} { - --global flags -+global flags setup - set configFile "" - if [string length $path] { - set places [list $path] - } else { -- set places [list /etc/usb_modeswitch.conf /etc/sysconfig/usb_modeswitch /etc/default/usb_modeswitch] -+ set places [list $setup(etcdir)/usb_modeswitch.conf $setup(etcdir)/sysconfig/usb_modeswitch $setup(etcdir)/default/usb_modeswitch] - } - foreach cfg $places { - if [file exists $cfg] { -@@ -923,10 +931,12 @@ proc {SysLog} {msg} { - - global flags - if {![info exists flags(logger)]} { -- set flags(logger) "" -- foreach fn {/bin/logger /usr/bin/logger} { -- if [file exists $fn] { -- set flags(logger) $fn -+ set flags(logger) [exec sh -c "command -v logger || true"] -+ if {$flags(logger) == ""} { -+ foreach fn {/bin/logger /usr/bin/logger} { -+ if [file exists $fn] { -+ set flags(logger) $fn -+ } - } - } - Log "Logger is $flags(logger)" diff --git a/pkgs/by-name/us/usb-modeswitch/package.nix b/pkgs/by-name/us/usb-modeswitch/package.nix index c16acb517d11..3dbcce763660 100644 --- a/pkgs/by-name/us/usb-modeswitch/package.nix +++ b/pkgs/by-name/us/usb-modeswitch/package.nix @@ -11,19 +11,16 @@ bash, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "usb-modeswitch"; - version = "2.6.0"; + version = "2.6.2"; src = fetchurl { - url = "http://www.draisberghof.de/usb_modeswitch/${pname}-${version}.tar.bz2"; - sha256 = "18wbbxc5cfsmikba0msdvd5qlaga27b32nhrzicyd9mdddp265f2"; + url = "http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-${finalAttrs.version}.tar.bz2"; + hash = "sha256-96vTN3hKnRvTnLilh1GK/28qQ9kWFF6v2Asbi3FG22Y="; }; - patches = [ - ./configurable-usb-modeswitch.patch - ./pkg-config.patch - ]; + patches = [ ./pkg-config.patch ]; # Remove attempts to write to /etc and /var/lib. postPatch = '' @@ -57,6 +54,7 @@ stdenv.mkDerivation rec { libusb1 tcl ]; + nativeBuildInputs = [ pkg-config makeWrapper @@ -72,4 +70,4 @@ stdenv.mkDerivation rec { platforms = lib.platforms.linux; mainProgram = "usb_modeswitch"; }; -} +})