From aa52d9f8951b31f733d121b8a9ba5fa738e8b353 Mon Sep 17 00:00:00 2001 From: Stefan Helmert Date: Sat, 22 Jul 2017 00:54:09 +0200 Subject: [PATCH 1/6] working wildcard operation; working installation --- Makefile.am | 6 ++++ scripts/bumblebee.bash.in | 52 +++++++++++++++++++++++++++ scripts/systemd/bumblebeed.service.in | 3 +- 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 scripts/bumblebee.bash.in diff --git a/Makefile.am b/Makefile.am index 78e238a..8c3f397 100644 --- a/Makefile.am +++ b/Makefile.am @@ -22,6 +22,7 @@ if WITH_PIDFILE noinst_SCRIPTS += scripts/sysvinit/bumblebeed endif +sbin_SCRIPTS = scripts/bumblebee.bash bin_SCRIPTS = scripts/bumblebee-bugreport xconfddir = $(bumblebeedconfdir)/xorg.conf.d @@ -29,6 +30,7 @@ xconfd_DATA = conf/xorg.conf.d/10-dummy.conf CLEANFILES = $(noinst_SCRIPTS) conf/bumblebee.conf $(bin_SCRIPTS) EXTRA_DIST = scripts/systemd/bumblebeed.service.in \ + scripts/bumblebee.bash.in \ scripts/upstart/bumblebeed.conf.in \ conf/99-bumblebee-nvidia-dev.rules \ conf/bumblebee.conf.in \ @@ -108,6 +110,10 @@ scripts/systemd/bumblebeed.service: $(srcdir)/scripts/systemd/bumblebeed.service mkdir -p scripts/systemd $(do_subst) < $< > $@ +scripts/bumblebee.bash: $(srcdir)/scripts/bumblebee.bash.in + mkdir -p scripts + $(do_subst) < $< > $@ + scripts/bumblebee-bugreport: $(srcdir)/scripts/bumblebee-bugreport.in mkdir -p scripts $(do_subst) < $< > $@ diff --git a/scripts/bumblebee.bash.in b/scripts/bumblebee.bash.in new file mode 100644 index 0000000..a7a7324 --- /dev/null +++ b/scripts/bumblebee.bash.in @@ -0,0 +1,52 @@ +#!/bin/bash + + +if [ 0 -eq $# ] +then + ConfFile="@BBCONFDIR@/bumblebee.conf" +else + ConfFile=$1 +fi + + +ConfDriver=$( crudini --get $ConfFile bumblebeed driver ) +ConfKernelDriver=$( crudini --get $ConfFile driver-nvidia kerneldriver ) +ConfLibraryPath=$( crudini --get $ConfFile driver-nvidia librarypath ) +ConfXorgModulePath=$( crudini --get $ConfFile driver-nvidia xorgmodulepath ) + +echo "Bumblebee config file: $ConfFile" +echo " Raw config parameters: " +echo " Driver = $ConfDriver" +echo " KernelDriver = $ConfKernelDriver" +echo " LibraryPath = $ConfLibraryPath" +echo " XorgModulePath = $ConfXorgModulePath" + +Driver=$ConfDriver + +KernelDriver=$(find /lib/modules/$(uname -r) -name $ConfKernelDriver.ko -printf "%f\n") +KernelDriver=${KernelDriver:0:-3} + +LibraryPath= +for i in $(echo "$ConfLibraryPath" | sed "s/:/ /g") +do + LibraryPath=$LibraryPath:$(ls -d $i) +done +LibraryPath=${LibraryPath:1} + +XorgModulePath= +for i in $(echo "$ConfXorgModulePath" | sed "s/,/ /g") +do + XorgModulePath=$XorgModulePath,$(ls -d $i) +done +XorgModulePath=${XorgModulePath:1} + +echo " After applying wildcard:" +echo " Driver = $Driver" +echo " KernelDriver = $KernelDriver" +echo " LibraryPath = $LibraryPath" +echo " XorgModulePath = $XorgModulePath" + +bboptions="--driver $Driver --driver-module $KernelDriver --ldpath $LibraryPath --module-path $XorgModulePath" + +@SBINDIR@/bumblebeed -C $ConfFile -vvvv --use-syslog $bboptions + diff --git a/scripts/systemd/bumblebeed.service.in b/scripts/systemd/bumblebeed.service.in index 7a4cbc7..a94ff02 100644 --- a/scripts/systemd/bumblebeed.service.in +++ b/scripts/systemd/bumblebeed.service.in @@ -3,7 +3,8 @@ Description=Bumblebee C Daemon [Service] Type=simple -ExecStart=@SBINDIR@/bumblebeed --use-syslog +ExecStartPre=-/usr/bin/prime-select intel +ExecStart=@SBINDIR@/bumblebee.bash @BBCONFDIR@/bumblebee.conf Restart=always RestartSec=60 From ec3b6f569a1abf582d92ffb95be61c434746167f Mon Sep 17 00:00:00 2001 From: Stefan Helmert Date: Sat, 22 Jul 2017 01:02:19 +0200 Subject: [PATCH 2/6] save ls handling - only last line --- scripts/bumblebee.bash.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/bumblebee.bash.in b/scripts/bumblebee.bash.in index a7a7324..df3adaa 100644 --- a/scripts/bumblebee.bash.in +++ b/scripts/bumblebee.bash.in @@ -23,20 +23,20 @@ echo " XorgModulePath = $ConfXorgModulePath" Driver=$ConfDriver -KernelDriver=$(find /lib/modules/$(uname -r) -name $ConfKernelDriver.ko -printf "%f\n") +KernelDriver=$(find /lib/modules/$(uname -r) -name $ConfKernelDriver.ko -printf "%f\n" | tail --lines=1 ) KernelDriver=${KernelDriver:0:-3} LibraryPath= for i in $(echo "$ConfLibraryPath" | sed "s/:/ /g") do - LibraryPath=$LibraryPath:$(ls -d $i) + LibraryPath=$LibraryPath:$(ls -drt $i | tail --lines=1 ) done LibraryPath=${LibraryPath:1} XorgModulePath= for i in $(echo "$ConfXorgModulePath" | sed "s/,/ /g") do - XorgModulePath=$XorgModulePath,$(ls -d $i) + XorgModulePath=$XorgModulePath,$(ls -drt $i | tail --lines=1 ) done XorgModulePath=${XorgModulePath:1} From 65cdacac13cfd5134dc43bff5bd5a5eb214f8776 Mon Sep 17 00:00:00 2001 From: Stefan Helmert Date: Sat, 22 Jul 2017 01:12:39 +0200 Subject: [PATCH 3/6] correct cleanup - distcheck no error --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 8c3f397..53b5784 100644 --- a/Makefile.am +++ b/Makefile.am @@ -28,7 +28,7 @@ bin_SCRIPTS = scripts/bumblebee-bugreport xconfddir = $(bumblebeedconfdir)/xorg.conf.d xconfd_DATA = conf/xorg.conf.d/10-dummy.conf -CLEANFILES = $(noinst_SCRIPTS) conf/bumblebee.conf $(bin_SCRIPTS) +CLEANFILES = $(noinst_SCRIPTS) conf/bumblebee.conf $(bin_SCRIPTS) $(sbin_SCRIPTS) EXTRA_DIST = scripts/systemd/bumblebeed.service.in \ scripts/bumblebee.bash.in \ scripts/upstart/bumblebeed.conf.in \ From 5aa9ed5ac03eee548a8d2399a81db86488d26727 Mon Sep 17 00:00:00 2001 From: Stefan Helmert Date: Sat, 22 Jul 2017 01:22:58 +0200 Subject: [PATCH 4/6] AllowEmptyInitialConfiguration - because less confusing issues and most hardware supports it --- conf/xorg.conf.nvidia | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/xorg.conf.nvidia b/conf/xorg.conf.nvidia index 5bd686e..73c1c6e 100644 --- a/conf/xorg.conf.nvidia +++ b/conf/xorg.conf.nvidia @@ -29,8 +29,8 @@ Section "Device" Option "ProbeAllGpus" "false" Option "NoLogo" "true" - Option "UseEDID" "false" - Option "UseDisplayDevice" "none" +# Option "UseEDID" "false" +# Option "UseDisplayDevice" "none" # If your NVIDIA drivers are version 331.13 or newer, and you have a laptop # where some of the video outputs such as HDMI or DisplayPort are connected @@ -39,5 +39,5 @@ Section "Device" # below to allow using the external monitor when it is connected while also # allowing the X server to start when the monitor is disconnected. -# Option "AllowEmptyInitialConfiguration" + Option "AllowEmptyInitialConfiguration" EndSection From 0c7105a3eae18a99511adf80d0f6f3b33b71be3d Mon Sep 17 00:00:00 2001 From: Stefan Helmert Date: Sat, 22 Jul 2017 23:18:23 +0200 Subject: [PATCH 5/6] build flag to enable broken distro support (wildcard config) optionally --- Makefile.am | 15 +++++++++++---- configure.ac | 11 +++++++++++ quickinstall.bash | 14 ++++++++++++++ quickinstall_wild.bash | 14 ++++++++++++++ scripts/systemd/bumblebeed.service.in | 3 +-- scripts/systemd/bumblebeed_wild.service.in | 12 ++++++++++++ 6 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 quickinstall.bash create mode 100644 quickinstall_wild.bash create mode 100644 scripts/systemd/bumblebeed_wild.service.in diff --git a/Makefile.am b/Makefile.am index 53b5784..9387aa6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -22,13 +22,12 @@ if WITH_PIDFILE noinst_SCRIPTS += scripts/sysvinit/bumblebeed endif -sbin_SCRIPTS = scripts/bumblebee.bash bin_SCRIPTS = scripts/bumblebee-bugreport xconfddir = $(bumblebeedconfdir)/xorg.conf.d xconfd_DATA = conf/xorg.conf.d/10-dummy.conf -CLEANFILES = $(noinst_SCRIPTS) conf/bumblebee.conf $(bin_SCRIPTS) $(sbin_SCRIPTS) +CLEANFILES = $(noinst_SCRIPTS) conf/bumblebee.conf $(bin_SCRIPTS) EXTRA_DIST = scripts/systemd/bumblebeed.service.in \ scripts/bumblebee.bash.in \ scripts/upstart/bumblebeed.conf.in \ @@ -105,10 +104,18 @@ do_subst = sed -e 's|[@]GITVERSION[@]|$(GITVERSION)|g' \ conf/bumblebee.conf: $(srcdir)/conf/bumblebee.conf.in mkdir -p conf $(do_subst) < $< > $@ - -scripts/systemd/bumblebeed.service: $(srcdir)/scripts/systemd/bumblebeed.service.in +if CONF_WILD + scripts/systemd/bumblebeed.service: $(srcdir)/scripts/systemd/bumblebeed_wild.service.in + mkdir -p scripts/systemd + $(do_subst) < $< > $@ + sbin_SCRIPTS = scripts/bumblebee.bash + CLEANFILES += $(sbin_SCRIPTS) +else + scripts/systemd/bumblebeed.service: $(srcdir)/scripts/systemd/bumblebeed.service.in mkdir -p scripts/systemd $(do_subst) < $< > $@ +endif + scripts/bumblebee.bash: $(srcdir)/scripts/bumblebee.bash.in mkdir -p scripts diff --git a/configure.ac b/configure.ac index 65b2bb0..bfbf500 100644 --- a/configure.ac +++ b/configure.ac @@ -101,6 +101,17 @@ AS_IF([test "x$with_pidfile" != xno], ]) AM_CONDITIONAL([WITH_PIDFILE], [test "x$with_pidfile" != xno]) + +AC_ARG_ENABLE([wild], +[ --enable-wild Turn on wildcard support], +[case "${enableval}" in + yes) conf_wild=yes ;; + no) conf_wild=no ;; + *) AC_MSG_ERROR([bad value ${enableval} for --enable-wild]) ;; +esac],[conf_wild=no]) +AM_CONDITIONAL([CONF_WILD], [test "x$conf_wild" != xno]) + + UDEV_RULES_DIR=/lib/udev/rules.d AC_ARG_WITH([udev-rules], [AS_HELP_STRING([--with-udev-rules@<:@=DIR@:>@], diff --git a/quickinstall.bash b/quickinstall.bash new file mode 100644 index 0000000..778e42e --- /dev/null +++ b/quickinstall.bash @@ -0,0 +1,14 @@ +#!/bin/bash + +autoreconf -fi +./configure CONF_DRIVER=nvidia CONF_DRIVER_MODULE_NVIDIA=nvidia???? \ + CONF_PRIMUS_LD_PATH=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus \ + CONF_LDPATH_NVIDIA=/usr/lib/nvidia????:/usr/lib32/nvidia???? \ + CONF_MODPATH_NVIDIA=/usr/lib/nvidia????/xorg,/usr/lib/xorg/modules \ + +make clean +make +sudo make install +sudo cp scripts/systemd/bumblebeed.service /lib/systemd/system/. + + diff --git a/quickinstall_wild.bash b/quickinstall_wild.bash new file mode 100644 index 0000000..8a069e0 --- /dev/null +++ b/quickinstall_wild.bash @@ -0,0 +1,14 @@ +#!/bin/bash + +autoreconf -fi +./configure CONF_DRIVER=nvidia CONF_DRIVER_MODULE_NVIDIA=nvidia???? \ + CONF_PRIMUS_LD_PATH=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus \ + CONF_LDPATH_NVIDIA=/usr/lib/nvidia????:/usr/lib32/nvidia???? \ + CONF_MODPATH_NVIDIA=/usr/lib/nvidia????/xorg,/usr/lib/xorg/modules \ + --enable-wild +make clean +make +sudo make install +sudo cp scripts/systemd/bumblebeed.service /lib/systemd/system/. + + diff --git a/scripts/systemd/bumblebeed.service.in b/scripts/systemd/bumblebeed.service.in index a94ff02..7a4cbc7 100644 --- a/scripts/systemd/bumblebeed.service.in +++ b/scripts/systemd/bumblebeed.service.in @@ -3,8 +3,7 @@ Description=Bumblebee C Daemon [Service] Type=simple -ExecStartPre=-/usr/bin/prime-select intel -ExecStart=@SBINDIR@/bumblebee.bash @BBCONFDIR@/bumblebee.conf +ExecStart=@SBINDIR@/bumblebeed --use-syslog Restart=always RestartSec=60 diff --git a/scripts/systemd/bumblebeed_wild.service.in b/scripts/systemd/bumblebeed_wild.service.in new file mode 100644 index 0000000..a94ff02 --- /dev/null +++ b/scripts/systemd/bumblebeed_wild.service.in @@ -0,0 +1,12 @@ +[Unit] +Description=Bumblebee C Daemon + +[Service] +Type=simple +ExecStartPre=-/usr/bin/prime-select intel +ExecStart=@SBINDIR@/bumblebee.bash @BBCONFDIR@/bumblebee.conf +Restart=always +RestartSec=60 + +[Install] +WantedBy=multi-user.target From 22a49b24992466dca35372cf94000f0c7cdd5b41 Mon Sep 17 00:00:00 2001 From: Stefan Helmert Date: Sun, 23 Jul 2017 01:27:40 +0200 Subject: [PATCH 6/6] quickinstall for non wildcard should have usefull non wildcard content --- quickinstall.bash | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/quickinstall.bash b/quickinstall.bash index 778e42e..07f5ae1 100644 --- a/quickinstall.bash +++ b/quickinstall.bash @@ -1,10 +1,10 @@ #!/bin/bash autoreconf -fi -./configure CONF_DRIVER=nvidia CONF_DRIVER_MODULE_NVIDIA=nvidia???? \ +./configure CONF_DRIVER=nvidia CONF_DRIVER_MODULE_NVIDIA=nvidia-375 \ CONF_PRIMUS_LD_PATH=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus \ - CONF_LDPATH_NVIDIA=/usr/lib/nvidia????:/usr/lib32/nvidia???? \ - CONF_MODPATH_NVIDIA=/usr/lib/nvidia????/xorg,/usr/lib/xorg/modules \ + CONF_LDPATH_NVIDIA=/usr/lib/nvidia-375:/usr/lib32/nvidia-375 \ + CONF_MODPATH_NVIDIA=/usr/lib/nvidia-375/xorg,/usr/lib/xorg/modules \ make clean make