bumblebee (3.2.1-30) unstable; urgency=medium
authorAndreas Beckmann <anbe@debian.org>
Sat, 27 Jan 2024 00:28:10 +0000 (01:28 +0100)
committerAndreas Beckmann <anbe@debian.org>
Sat, 27 Jan 2024 00:28:10 +0000 (01:28 +0100)
  [ Andreas Beckmann ]
  * Update the list of supported drivers.

  [ Chris Hofstaedtler ]
  * Delegate placement of udev and systemd files to pkg-config data.
    (Closes: #1057747)

[dgit import unpatched bumblebee 3.2.1-30]

42 files changed:
1  2 
debian/README.Debian
debian/bug-control
debian/bug-script
debian/bumblebee-nvidia.postinst.Debian
debian/bumblebee-nvidia.postinst.Ubuntu
debian/bumblebee-nvidia.postrm.Ubuntu
debian/bumblebee-nvidia.triggers
debian/bumblebee.bash-completion
debian/bumblebee.dirs
debian/bumblebee.docs
debian/bumblebee.install
debian/bumblebee.maintscript
debian/bumblebee.manpages
debian/bumblebee.postinst
debian/bumblebee.postrm
debian/bumblebee.triggers
debian/changelog
debian/control
debian/copyright
debian/gbp.conf
debian/not-installed
debian/patches/amd-apu.patch
debian/patches/compiler-warnings.patch
debian/patches/disable-hard-dpms.patch
debian/patches/fix-device-detection.patch
debian/patches/fix-typos.patch
debian/patches/gcc-10.patch
debian/patches/ignore-error-on-X-shutdown.patch
debian/patches/ignore-failure-to-set-DRM-interface.patch
debian/patches/ignore-systemd-logind-noise.patch
debian/patches/libkmod.patch
debian/patches/man-section.patch
debian/patches/modprobe-r-instead-of-rmmod.patch
debian/patches/no-bbswitch.patch
debian/patches/pcie_id_overrun.patch
debian/patches/primus-vk.patch
debian/patches/series
debian/patches/xorg-binary-config.patch
debian/rules
debian/salsa-ci.yml
debian/upstream/metadata
debian/watch

index 8e3a3baa0d84faabb42d3767b4a13b89540cb842,0000000000000000000000000000000000000000..32bd53bbce629c8cde1b10f385189a6c76c6a488
mode 100644,000000..100644
--- /dev/null
@@@ -1,14 -1,0 +1,96 @@@
- Bumblebee in Debian defaults to using the primus backend, not because we wish
- to diverge from upstream, but simply because virtualgl and libjpeg-turbo are
- not yet packaged. libjpeg-turbo is currently blocked by a number of technical
- and/or legal issues in Debian; see http://bugs.debian.org/612341.
- Bumblebee in Ubuntu also defaults to using the primus backend, because
- virtualgl has not yet been packaged for Ubuntu proper. It is however easy to
- switch to using virtualgl by using upstream's PPAs. Follow the instructions at:
 +bumblebee for Debian/Ubuntu
 +---------------------------
 +
-  -- Vincent Cheng <Vincentc1208@gmail.com>  Wed, 27 Feb 2013 01:07:57 -0800
++Post-installation instructions:
++-------------------------------
++
++You must add your user to the bumblebee group in order to use optirun or
++primusrun, i.e.
++
++ $ sudo adduser $USER bumblebee
++
++where $USER corresponds to your username. Don't forget to log out and log back
++in for this to take effect.
++
++If you have sudo configured for your current user, i.e. your user is a member
++of the sudo group, this step is not needed (the bumblebee package postinst
++script takes care of adding sudo users to the bumblebee group automatically).
++To clarify, sudo is not needed to use bumblebee; it simply makes adding your
++user to the bumblebee group unnecessary.
++
++This step is unnecessary for Ubuntu users since sudo comes pre-configured and
++ready to be used by default (for user accounts created during install).
++
++To test whether bumblebee has been configured correctly, try running the
++glxgears demo (you must first install mesa-utils):
++
++ $ optirun glxgears -info
++
++
++Primus vs. VirtualGL:
++---------------------
++
++Bumblebee in Debian and Ubuntu defaults to using the primus backend, because
++virtualgl has not yet been packaged for Debian/Ubuntu proper. For Ubuntu users,
++it is however easy to switch to using virtualgl by using upstream's PPAs.
++Follow the instructions at:
 +https://launchpad.net/~bumblebee/+archive/stable
 +
++
++Common issues:
++--------------
++
++- If optirun returns the following error:
++[ERROR]Cannot access secondary GPU - error: Could not load GPU driver
++
++You must edit /etc/bumblebee/bumblebee.conf using your preferred editor as
++root, and change "KernelDriver=nvidia" to "KernelDriver=nvidia-current",
++then restart the bumblebee daemon, i.e.
++
++ $ sudo service bumblebeed restart 
++
++(Refer to https://bugs.debian.org/717687 for a brief explanation.)
++
++- If optirun returns the following error:
++[ERROR]Cannot access secondary GPU - error: [XORG] (EE) No devices detected
++
++You may have to set the BusID manually, in /etc/bumblebee/xorg.conf.nvidia.
++To get the BusID, run lspci | egrep 'VGA|3D' in a terminal. Refer to the
++comments in that file for further instructions.
++
++- If optirun returns the following error:
++[ERROR]Cannot access secondary GPU - error: [XORG] (EE) /dev/dri/card0:
++failed to set DRM interface version 1.4: Permission denied
++
++You have to append the following section to /etc/bumblebee/xorg.conf.nvidia:
++
++Section "Screen"
++    Identifier "Default Screen"
++    Device "DiscreteNvidia"
++EndSection
++
++Also refer to https://bugs.debian.org/756522 for a brief explanation.
++
++- If optirun errors out and dmesg reports that the GPU has "fallen off the bus"
++or "nvidia_frontend_open: minor 0, module->open() failed, error -5" on Linux
++>= 3.10 and < 3.19, either stick with an older kernel version (<= 3.9) or
++upgrade to > 3.19, or add rcutree.rcu_idle_gp_delay=1 to your grub command line
++(in /etc/default/grub, then run update-grub and reboot) as a workaround.
++
++This is a known problem upstream and suspected to be an issue with the
++proprietary nvidia driver. Refer to Bumblebee github issue #455 and #615,
++https://github.com/Bumblebee-Project/Bumblebee/issues/455 and
++https://github.com/Bumblebee-Project/Bumblebee/issues/615.
++
++A more up-to-date list of common issues can be found on the Debian/Ubuntu wiki
++pages relating to bumblebee, i.e.:
++
++https://wiki.debian.org/Bumblebee
++https://wiki.ubuntu.com/Bumblebee
++
++A more comprehensive list is available upstream:
++
++https://github.com/Bumblebee-Project/Bumblebee/wiki/Troubleshooting
++
++
++ -- Vincent Cheng <vcheng@debian.org>  Sat, 25 Oct 2014 10:13:42 -0700
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fd9a17ccc25942f623710587423416d201dba85c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++package-status: nvidia-driver-any nvidia-driver-libs-any xserver-xorg-video-nvidia-any primus-libs
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a1442f5140fd341040f56a46779563b33cd851b9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,20 @@@
++#!/bin/sh
++
++export LC_ALL=C
++
++exec >&3
++
++echo "OpenGL and NVIDIA library files installed:"
++ls -l /etc/alternatives/glx* \
++      /etc/alternatives/nvidia* \
++      2>/dev/null
++echo
++
++echo "/etc/modprobe.d:"
++ls -la /etc/modprobe.d/
++echo
++grep -ri nvidia /etc/modprobe.d/
++grep -ri nouveau /etc/modprobe.d/
++echo
++
++exit 0
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..433f1ba99024a808008a6d7343eafc1cbb5a3cb2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,16 @@@
++#!/bin/sh
++set -e
++
++case "$1" in
++  configure)
++    if dpkg --compare-versions "$2" lt-nl "3.2.1-21~" ; then
++        update-alternatives --force --auto glx 2>/dev/null || true
++        dpkg-trigger register-glx-alternative-nvidia
++    fi
++
++    # this has a chance of crashing the machine with mainline kernels...
++    grep -q '^nouveau ' /proc/modules && rmmod nouveau || true
++    ;;
++esac
++
++#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..f1279b5cae013474553aa407fafc9286ee30da96
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++#!/bin/sh
++set -e
++
++xconffile=/etc/bumblebee/xorg.conf.nvidia
++
++case "$1" in
++  configure)
++      # Repair GL on the intel display
++      for arch in x86_64-linux-gnu i386-linux-gnu; do
++        update-alternatives --force --set \
++          ${arch}_gl_conf /usr/lib/$arch/mesa/ld.so.conf 2>/dev/null || true
++      done
++
++      # assume first device to be discrete in nvidia/nvidia
++      busid=$(lspci -d10de: -nn | grep '\[030[02]\]' | cut -d' ' -f1 | tr . : | head -1)
++
++      if [ -z "$busid" ]; then
++        echo "No Nvidia card found. If you really have an Optimus system,"
++        echo "try selecting the Optimus setup in BIOS and run:"
++        echo "sudo dpkg-reconfigure bumblebee-nvidia"
++      else
++        echo "Selecting $busid as discrete nvidia card. If this is incorrect,"
++        echo "edit the BusID line in $xconffile"
++        sed -i $xconffile -r -e "s/^([\t ]*)#([\t ]*BusID[\t ]*)\"[^\"]*\"$/\\1 \\2\"PCI\:$busid\"/"
++      fi
++
++    ldconfig
++    # this has a chance of crashing the machine with mainline kernels...
++    grep -q '^nouveau ' /proc/modules && rmmod nouveau || true
++    if [ -e "/etc/init/bumblebeed.conf" ]; then
++        invoke-rc.d bumblebeed restart || true
++    fi
++    ;;
++esac
++
++#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..2a88c432a3d42522f80ec0ad8f6cabe9b7f29466
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,16 @@@
++#!/bin/sh
++set -e
++
++case "$1" in
++  remove|abort-install)
++      # Restore the alternatives in case bumblebee is installed on a
++      # non-Optimus system that requires the nvidia driver
++      for arch in x86_64-linux-gnu i386-linux-gnu; do
++        update-alternatives --force --auto ${arch}_gl_conf 2>/dev/null || true
++      done
++
++    ldconfig
++    ;;
++esac
++
++#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..703101cd597611bb9e4adcc6435cd16b07066aec
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++activate-noawait register-glx-alternative-nvidia
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ec3d50328a1b14c73858ca7200996d620bbf304e
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++etc/bash_completion.d/bumblebee
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..126f580d88b4c219417da4815fb1cd45aacfcf2a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++/etc/bumblebee/xorg.conf.d
++/etc/modprobe.d
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..ea8926625bcc9da126628f4c248c2fbf4f6b924d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/share/doc/bumblebee/README.markdown
++usr/share/doc/bumblebee/RELEASE_NOTES_3_2_1
index 6073ceeeb04f0a2d7015b0185c98a3b4ddae6a0c,0000000000000000000000000000000000000000..28c2e48d450cc96945ea68417f9462dc3d276d88
mode 100644,000000..100644
--- /dev/null
@@@ -1,2 -1,0 +1,10 @@@
- debian/bumblebee/etc/bumblebee/*      usr/share/bumblebee/default-conf/
- scripts/systemd/bumblebeed.service    lib/systemd/system/
++etc/bumblebee/bumblebee.conf
++etc/bumblebee/xorg.conf.nvidia
++etc/bumblebee/xorg.conf.nouveau
++${env:deb_udevdir}/rules.d/99-bumblebee-nvidia-dev.rules
++usr/bin/optirun
++usr/bin/bumblebee-bugreport
++usr/sbin/bumblebeed
++etc/bumblebee/*                       usr/share/bumblebee/default-conf/
++debian/bumblebee.conf                 usr/share/bumblebee/modprobe.d/
++scripts/systemd/bumblebeed.service    ${env:deb_systemdsystemunitdir}/
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0b64a8272cadf70251f9bae3e335b315c499ebb2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,1 @@@
++rm_conffile /etc/bumblebee/xorg.conf.d/10-dummy.conf 3.2.1-23~
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..0e70b1f17025e850620acc7983b66fc1d1d461a0
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++usr/share/man/man1/optirun.1
++usr/share/man/man8/bumblebeed.8
index 76cf24e631f56d090360eaee48ea1aca0a390899,0000000000000000000000000000000000000000..262f0b579eb8c3fe535448440c11f2d0bcc8eba0
mode 100644,000000..100644
--- /dev/null
@@@ -1,44 -1,0 +1,79 @@@
-         groupadd $BB_GROUP
-         users=$(getent group $USE_GROUPS | cut -d: -f4 | tr , '\n' | sort -u)
 +#!/bin/sh
 +# postinst script for bumblebee
 +#
 +# see: dh_installdeb(1)
 +
 +set -e
 +
++xconffile=/etc/bumblebee/xorg.conf.nouveau
++
 +# group that allows users to use Bumblebee
 +BB_GROUP=bumblebee
 +
 +# add members of these groups automatically to group "bumblebee" for new
 +# installations
 +USE_GROUPS='adm sudo admin'
 +
 +case "$1" in
 +  configure)
 +    # only add a group and members if the configured group does match the
 +    # default group and if the group is missing
 +    if grep -qx ServerGroup=$BB_GROUP /etc/bumblebee/bumblebee.conf &&
 +        ! getent group $BB_GROUP > /dev/null; then
-     # rebuild initial ramdisk to include blacklist
-     update-initramfs -u
-     ;;
++        groupadd --system $BB_GROUP
++        users=$(getent -s files group $USE_GROUPS | cut -d: -f4 | tr , '\n' | sort -u)
 +        echo "Adding members from group(s) '$USE_GROUPS' to '$BB_GROUP':"
 +        echo $users
 +        for user in $users; do
 +            gpasswd -a $user $BB_GROUP
 +        done
 +    fi
-   abort-upgrade|abort-remove|abort-deconfigure)
-     ;;
 +
-   *)
-     echo "postinst called with unknown argument \`$1'" >&2
-     exit 1
 +
- exit 0
++    # Raring specific issue
++    # Also, do not rely solely on dpkg-vendor (see LP: #1061769)
++    if (which dpkg-vendor >/dev/null && dpkg-vendor --derives-from Ubuntu) || \
++      [ -e /etc/dpkg/origins/ubuntu ]; then
++        # assume first device to be discrete in nvidia/nvidia
++        busid=$(lspci -d10de: -nn | grep '\[030[02]\]' | cut -d' ' -f1 | tr . : | head -1)
++        if [ -z "$busid" ]; then
++            echo "No Nvidia card found. If you really have an Optimus system,"
++            echo "try selecting the Optimus setup in BIOS and run:"
++            echo "sudo dpkg-reconfigure bumblebee"
++        else
++            echo "Selecting $busid as discrete nvidia card. If this is incorrect,"
++            echo "edit the BusID line in $xconffile ."
++            sed -i $xconffile -r -e "s/^([\t ]*)#([\t ]*BusID[\t ]*)\"[^\"]*\"$/\\1 \\2\"PCI\:$busid\"/"
++        fi
++        
++        # Only for 3.2.1, remove busid.conf if still present.
++        if [ -e /etc/bumblebee/xorg.conf.d/busid.conf ]; then
++            echo "Deleting old /etc/bumblebee/xorg.conf.d/busid.conf"
++            rm /etc/bumblebee/xorg.conf.d/busid.conf
++        fi
++    fi
++
++    # Do not treat /etc/modprobe.d/bumblebee-nvidia.conf as a conffile
++    # LP: #1242785, https://github.com/Bumblebee-Project/Bumblebee/issues/525
++    cp -f /usr/share/bumblebee/modprobe.d/bumblebee.conf /etc/modprobe.d/bumblebee.conf
++
 +    ;;
++  triggered)
++    case "$2" in
++      restart-bumblebeed)
++        # Trigger a restart of the bumblebee service, only if it's already running
++
++        if [ -d /run/systemd/system ]; then
++          if deb-systemd-invoke is-active bumblebeed.service > /dev/null 2>&1; then
++              deb-systemd-invoke restart bumblebeed.service || exit $?
++          fi
++        elif [ -x "/etc/init.d/bumblebeed" ]; then
++          if invoke-rc.d bumblebeed status > /dev/null 2>&1; then
++              invoke-rc.d bumblebeed restart || exit $?
++          fi
++        fi
++        ;;
++    esac
 +esac
 +
 +#DEBHELPER#
index ea81ff53cb9ae1ed397973b1c410268821663616,0000000000000000000000000000000000000000..b014aaa250f9cdf5e9138f83280475ec7c2cfe82
mode 100644,000000..100644
--- /dev/null
@@@ -1,35 -1,0 +1,25 @@@
 +#!/bin/sh
 +# postrm script for bumblebee
 +#
 +# see: dh_installdeb(1)
 +
 +set -e
 +
-     ;;
-   remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
-     ;;
 +case "$1" in
 +  purge)
 +    groupdel bumblebee || true
 +    # keep this as old versions did not mark these files as conffiles
 +    for file in bumblebee.conf xorg.conf.nvidia xorg.conf.nouveau; do
 +        rm -f /etc/bumblebee/$file
 +    done
-   *)
-     echo "postrm called with unknown argument \`$1'" >&2
-     exit 1
 +
- esac
 +    ;;
- case "$1" in
-   purge|remove|abort-install)
-     # update initial ramdisk to skip blacklist
-     update-initramfs -u
++  remove)
++    # Do not treat /etc/modprobe.d/bumblebee-nvidia.conf as a conffile
++    # LP: #1242785, https://github.com/Bumblebee-Project/Bumblebee/issues/525
++    rm -f /etc/modprobe.d/bumblebee.conf
 +
- exit 0
 +    ;;
 +esac
 +
 +#DEBHELPER#
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..d7fea6c16d354eaee499a786a04ee76a4e02c2be
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++activate-noawait update-initramfs
++interest-noawait restart-bumblebeed
index 2c42601fd248058d0826b8dd8688bb4306900260,0000000000000000000000000000000000000000..a6b3d9692af46f26bc6b321f2eea16560f28899b
mode 100644,000000..100644
--- /dev/null
@@@ -1,19 -1,0 +1,367 @@@
- bumblebee (3.1-1) experimental; urgency=low
++bumblebee (3.2.1-30) unstable; urgency=medium
 +
-   * New upstream release.
-   * Upload to experimental.
++  [ Andreas Beckmann ]
++  * Update the list of supported drivers.
 +
-  -- Vincent Cheng <Vincentc1208@gmail.com>  Tue, 09 Apr 2013 19:59:13 -0700
++  [ Chris Hofstaedtler ]
++  * Delegate placement of udev and systemd files to pkg-config data.
++    (Closes: #1057747)
 +
- bumblebee (3.0.1-1) unstable; urgency=low
++ -- Andreas Beckmann <anbe@debian.org>  Sat, 27 Jan 2024 01:28:10 +0100
++
++bumblebee (3.2.1-29) unstable; urgency=medium
++
++  * Switch to dh-sequence-bash-completion.
++  * Update the list of supported drivers.
++  * bumblebee-nvidia: Do not build for armhf and i386.
++  * Bump Standards-Version to 4.6.2, no changes needed.
++
++ -- Andreas Beckmann <anbe@debian.org>  Thu, 05 Jan 2023 01:53:42 +0100
++
++bumblebee (3.2.1-28) unstable; urgency=medium
++
++  [ Andreas Beckmann ]
++  * Update the list of supported drivers.
++  * Bump Standards-Version to 4.6.0, no changes needed.
++
++  [ Debian Janitor ]
++  * Remove constraints unnecessary since buster:
++    + Remove 3 maintscript entries from 1 files.
++  * Remove constraints unnecessary since buster:
++    + bumblebee: Drop versioned constraint on xserver-xorg-core in Depends.
++
++ -- Andreas Beckmann <anbe@debian.org>  Sun, 03 Apr 2022 17:47:35 +0200
++
++bumblebee (3.2.1-27) unstable; urgency=medium
++
++  * Bump Standards-Version to 4.5.1, no changes
++  * Backport pcie_id_overrun.patch to fix support for PCI bus numbers
++    greater than 99 (Closes: #979006)
++  * Bump watch file version to 4, no changes
++  * Drop bumblebee-nvidia.lintian-overrides, no longer necessary
++  * Backport disable-hard-dpms.patch to fix performance drop after 10
++    minutes
++  * Add Applied-Upstream tag to patch headers as expected by Lintian
++  * Add Forwaded tag to patches that are pending merge upstream
++  * Format remaining patches to follow DEP-3
++  * Backport patch to fix compiler warnings
++  * add Ubuntu's dependencies for 455 driver series
++
++ -- Luca Boccassi <bluca@debian.org>  Sat, 02 Jan 2021 13:54:24 +0000
++
++bumblebee (3.2.1-26) unstable; urgency=medium
++
++  [ Andreas Beckmann ]
++  * bumblebee-nvidia: Activate the register-glx-alternative-nvidia trigger.
++  * bumblebee-nvidia: Do not let an nvidia dkms package satisfy the driver
++    dependency while libraries are missing.  (Closes: #966557)
++
++  [ Vincent Cheng ]
++  * Remove myself from Uploaders.
++
++ -- Andreas Beckmann <anbe@debian.org>  Sat, 22 Aug 2020 22:31:43 +0200
++
++bumblebee (3.2.1-25) unstable; urgency=medium
++
++  * bumblebee-nvidia: Add Tesla 450 driver as alternative dependency.
++
++ -- Andreas Beckmann <anbe@debian.org>  Fri, 24 Jul 2020 14:23:13 +0200
++
++bumblebee (3.2.1-24) unstable; urgency=medium
++
++  * bumblebee-nvidia: Add arch restrictions to dependencies.
++  * bumblebee-nvidia: Build for armhf, arm64 and ppc64el, too.
++    (Closes: #963681)
++  * bumblebee: Depend on pciutils for lspci usage in postinst on Ubuntu.
++    (Closes: #964377)
++
++ -- Andreas Beckmann <anbe@debian.org>  Tue, 07 Jul 2020 17:35:19 +0200
++
++bumblebee (3.2.1-23) unstable; urgency=medium
++
++  [ Andreas Beckmann ]
++  * Do not recommend unavailable virtualgl on Debian.  (Closes: #881337)
++  * Fix FTBFS with gcc-10.  (Closes: #957058)
++  * Switch to debhelper-compat (= 13).
++  * Use dh_bash-completion.
++  * Simplify rules and use bumblebee.install etc. for installation.
++  * Remove obsolete conffile /etc/bumblebee/xorg.conf.d/10-dummy.conf.
++  * bumblebee-nvidia: Recommend nvidia-primus-vk-wrapper.
++  * optirun: Export ENABLE_PRIMUS_LAYER=1 when using primus backend to let
++    primus-vk (if available) handle Vulkan applications.  (Closes: #892646)
++
++  [ Debian Janitor ]
++  * Set upstream metadata fields: Bug-Database, Bug-Submit, Repository,
++    Repository-Browse.
++
++ -- Andreas Beckmann <anbe@debian.org>  Thu, 11 Jun 2020 20:55:55 +0200
++
++bumblebee (3.2.1-22) unstable; urgency=medium
++
++  * Ship empty /etc/modprobe.d directory.
++  * Generate vendor-specific modprobe.d/bumblebee.conf.
++  * Collect more information with reportbug.
++
++ -- Andreas Beckmann <anbe@debian.org>  Wed, 18 Mar 2020 23:37:06 +0100
++
++bumblebee (3.2.1-21) unstable; urgency=medium
++
++  [ Andreas Beckmann ]
++  * Recommend primus-libs instead of primus.
++  * Downgrade bbswitch dependency to Recommends.
++  * Add only local users to the bumblebee group.  (Closes: #928119)
++  * Generate vendor-specific driver dependency lists for bumblebee-nvidia.
++  * Add alternative dependency on Tesla driver.  (Closes: #946556)
++  * Move bumblebeed manpage to section 8.
++  * Fall back to /usr/lib/<triplet>/libGL.so.1 as the "nvidia" libGL.so.1 for
++    glvnd-enabled nvidia drivers that no longer provide a proprietary
++    libGL.so.1 replacement.  (Closes: #947661)
++  * Stop manipulating the glx alternative (Debian).
++  * Add Ubuntu's dependencies for 418, 430, 435, and 440 driver series.
++  * Bump Standards-Version to 4.5.0, no changes needed.
++  * Add myself to Uploaders.
++
++  [ Debian Janitor ]
++  * Set upstream metadata fields: Repository.
++
++ -- Andreas Beckmann <anbe@debian.org>  Tue, 10 Mar 2020 13:58:32 +0100
++
++bumblebee (3.2.1-20) unstable; urgency=medium
++
++  [ Andreas Beckmann ]
++  * Drop versioned constraints that are satisfied in wheezy.
++  * Switch to debhelper-compat (= 12).
++
++  [ Luca Boccassi ]
++  * Enable all hardening build flags.
++  * bumblebee-nvidia: add Ubuntu's dependencies for 390 and 410 series.
++
++ -- Luca Boccassi <bluca@debian.org>  Wed, 06 Feb 2019 11:57:48 +0000
++
++bumblebee (3.2.1-19) unstable; urgency=medium
++
++  * Use wildcard to install bash completion file.
++  * Backport patch to support AMD APU setups.
++  * Backport patch to support nvidia drivers without bbswitch.
++  * Bump Standards-Version to 4.3.0, no changes.
++  * Set debhelper compat to 11.
++
++ -- Luca Boccassi <bluca@debian.org>  Mon, 31 Dec 2018 18:12:20 +0000
++
++bumblebee (3.2.1-18) unstable; urgency=medium
++
++  [ Andreas Beckmann ]
++  * Add support for the 390xx legacy driver package available in Debian.
++    (Closes: #916448)
++  * The dbgsym migration was done in stretch.
++  * Switch Vcs-* URLs to salsa.debian.org.
++  * Set Rules-Requires-Root: no.
++
++  [ Luca Boccassi ]
++  * Bump Standards-Version to 4.2.1.
++  * Remove obsolete conffile /etc/init/bumblebeed.conf. Thanks Ansgar!
++    (Closes: #914979)
++
++ -- Luca Boccassi <bluca@debian.org>  Fri, 14 Dec 2018 16:02:16 +0000
++
++bumblebee (3.2.1-17) unstable; urgency=medium
++
++  * Switch the triggers to -noawait to fix Lintian warning and to make
++    things easier for apt/dpkg. Both restarting bumblebeed and re-building
++    the initramfs can be deferred.
++  * B-D on debhelper (>= 9.20160709) instead of dh-systemd to fix L:E.
++  * Switch Uploaders field to bluca@debian.org email address.
++  * Switch from priority extra to optional to fix L:W and comply with
++    Policy 4.0.1.
++  * Do not ship Upstart file anymore, fixes L:W.
++  * Add 387 series to dependencies for Ubuntu.
++  * Bump Standards-Version to 4.1.2.
++
++ -- Luca Boccassi <bluca@debian.org>  Fri, 08 Dec 2017 23:07:05 +0000
++
++bumblebee (3.2.1-16) unstable; urgency=medium
++
++  * Ubuntu: fix typo in modprobe, really support 378
++
++ -- Luca Boccassi <luca.boccassi@gmail.com>  Sun, 02 Jul 2017 10:36:52 +0100
++
++bumblebee (3.2.1-15) unstable; urgency=medium
++
++  * Use https in debian/copyright
++  * Bump Standards-Version to 4.0.0
++  * Ubuntu: add support for 375, 378, 381 and 384
++
++ -- Luca Boccassi <luca.boccassi@gmail.com>  Sat, 01 Jul 2017 19:43:52 +0100
++
++bumblebee (3.2.1-14) unstable; urgency=medium
++
++  * Add dependency to lsb-base (>= 3.0-6) to fix Lintian Error
++  * Add blacklist and dependency for nvidia-367*
++
++ -- Luca Boccassi <luca.boccassi@gmail.com>  Tue, 24 Jan 2017 14:20:27 +0000
++
++bumblebee (3.2.1-13) unstable; urgency=medium
++
++  * Backport libkmod.patch from upstream develop branch and add build-dep
++    on libkmod-dev. Definitively fixes all issues with multiple kernel
++    modules loading/unloading.
++  * Remove Ubuntu modprobe hack from debian/rules
++  * Add restart-bumblebeed dpkg-trigger, to be used by update-glx when
++    changing the provider of libglx.so and the nvidia kernel module.
++
++ -- Luca Boccassi <luca.boccassi@gmail.com>  Sat, 11 Jun 2016 12:49:56 +0100
++
++bumblebee (3.2.1-12) unstable; urgency=medium
++
++  [ Luca Boccassi ]
++  * Set nvidia lib directory to /usr/lib/nvidia/nvidia to solve
++    incompatibility between Bumblebee and concurrent installations of
++    current plus legacyYYYxx Nvidia driver series on the same system.
++  * Add ignore-systemd-logind-noise.patch and
++    ignore-failure-to-set-DRM-interface.patch to ignore red herrings.
++    (Closes: #822665)
++  * Set Ubuntu default kernel driver to nvidia, which is provided as a
++    modprobe alias by the nvidia-XYZ packages.
++
++  [ Vincent Cheng ]
++  * Use dh_strip --dbgsym-migration to cleanly migrate from old-style dbg
++    packages to autogenerated dbgsym packages.
++
++ -- Luca Boccassi <luca.boccassi@gmail.com>  Wed, 18 May 2016 00:17:59 +0100
++
++bumblebee (3.2.1-11) unstable; urgency=medium
++
++  [ Andreas Beckmann ]
++  * Team upload.
++  * Drop -dbg package in favor of autogenerated -dbgsym packages.
++  * Update Vcs-* URLs.
++  * Update Standards version to 3.9.8, no changes required.
++  * Drop obsolete Debian NVIDIA package alternatives.
++  * Add support for the 304xx/340xx legacy driver packages available in
++    Debian.  (Closes: #802479, #717687)
++  * Use vendor-specific maintainer scripts.
++  * Add Luca Boccassi to Uploaders.
++
++  [ Luca Boccassi ]
++  * Mention kernel cmdline workaround for nvidia module load issues on
++    some hardware, and related upstream tickets, in README.Debian.
++    (Closes: #822330)
++  * Run dh --with autoreconf to regenerate configure, Makefile, etc.
++  * Add xorg-binary-config.patch to allow changing the Xorg binary in
++    bumblebee.conf.
++  * Add dependency on xserver-xorg-core >= 1.18 and set default binary
++    to /usr/lib/xorg/Xorg in order to support xserver-xorg-legacy.
++    (Closes: #815888)
++  * Add 358, 361, 364 in alternate dep and blacklist.
++  * Install modprobe blacklist in /usr/share/bumblebee/modprobe.d/ to avoid
++    clash with the daemon config file.
++  * Delete /etc/modprobe.d/bumblebee.conf already when bumblebee is removed,
++    to not keep the blacklists active until it is purged.  (LP: #1242785)
++
++ -- Andreas Beckmann <anbe@debian.org>  Sat, 07 May 2016 23:42:16 +0200
++
++bumblebee (3.2.1-10) unstable; urgency=medium
++
++  * Team upload.
++  * Blacklist the nvidia legacy kernel modules available in Debian.
++  * Use the new /usr/lib/nvidia/bumblebee glx alternative.
++    (Closes: #802310, #802245)
++  * Add Depends: glx-alternative-nvidia (>= 0.6.92) (only for Debian).
++  * Trigger the glx-alternative-nvidia package after updating the alternative.
++  * fix-typos.patch: New, fix some typos noticed by Lintian.
++
++ -- Andreas Beckmann <anbe@debian.org>  Wed, 21 Oct 2015 02:14:27 +0200
++
++bumblebee (3.2.1-9) unstable; urgency=medium
++
++  [ Luca Boccassi ]
++  * Add modprobe remove in bumblebee.conf on Ubuntu to fix timeout when
++    unloading nvidia-uvm.
++
++  [ Vincent Cheng ]
++  * Add nvidia-355 in alternate dep and blacklist.
++
++ -- Vincent Cheng <vcheng@debian.org>  Fri, 14 Aug 2015 23:58:12 -0700
++
++bumblebee (3.2.1-8) unstable; urgency=medium
++
++  [ Luca Boccassi ]
++  * Cherry-pick patch for modprobe -r instead of rmmod (Closes: #793389)
++  * Add nvidia-346, 349, and 352 in alternate dep and blacklist.
++    (LP: #1511560)
++
++  [ Vincent Cheng ]
++  * Move bumblebee bash-completion file from obsolete /etc/bash_completion.d/
++    to /usr/share/bash-completion/completions/.
++
++ -- Vincent Cheng <vcheng@debian.org>  Sat, 25 Jul 2015 19:28:48 -0700
++
++bumblebee (3.2.1-7) unstable; urgency=medium
++
++  * Move conffile handling introduced in 3.2.1-6 from bumblebee-nvidia
++    to bumblebee.
++
++ -- Vincent Cheng <vcheng@debian.org>  Sat, 25 Oct 2014 17:04:28 -0700
++
++bumblebee (3.2.1-6) unstable; urgency=medium
++
++  * Build with CONF_DRIVER_MODULE_NVIDIA=nvidia-current instead of nvidia.
++  * Stop treating /etc/modprobe.d/bumblebee.conf as a conffile and remove it
++    when removing bumblebee, not just when purging it. (LP: #1242785)
++    - Pre-Depends on dpkg >= 1.15.7.2 for dpkg-maintscript-helper rm_conffile.
++  * Add patches: fix-device-detection.patch, ignore-error-on-X-shutdown.patch,
++    cherry-picked from upstream git. (LP: #1230008)
++  * Allow more nvidia flavours to satisfy bumblebee-nvidia's dependencies
++    (relevant only for Ubuntu).
++  * Update debian/README.Debian.
++  * Update email address.
++  * Update Standards version to 3.9.6, no changes required.
++
++ -- Vincent Cheng <vcheng@debian.org>  Sat, 25 Oct 2014 10:13:42 -0700
++
++bumblebee (3.2.1-5) unstable; urgency=medium
++
++  * Allow more nvidia flavours to satisfy bumblebee-nvidia's dependencies
++    (relevant only for Ubuntu). (LP: #1261180)
++  * Update Standards version to 3.9.5, no changes required.
++
++ -- Vincent Cheng <Vincentc1208@gmail.com>  Mon, 06 Jan 2014 01:24:33 -0800
++
++bumblebee (3.2.1-4) unstable; urgency=low
++
++  * Use dh-systemd (for systemd-specific additions to maintscripts).
++    (Closes: #715270)
++  * Add bumblebee group as system group (gid in between 100-999) instead
++    of a regular group in postinst. (Closes: #718772)
++
++ -- Vincent Cheng <Vincentc1208@gmail.com>  Tue, 20 Aug 2013 02:35:34 -0700
++
++bumblebee (3.2.1-3) unstable; urgency=low
++
++  * Append /usr/lib/primus to CONF_PRIMUS_LD_PATH in d/rules to ease
++    pre-multiarch backports. (Closes: #712665)
++  * Have bumblebee depend on bbswitch-dkms | bbswitch-source, and
++    bumblebee-nvidia depend on all possible m-a built nvidia modules.
++  * Add support for nvidia-325 packaged in Ubuntu (not relevant for Debian).
++
++ -- Vincent Cheng <Vincentc1208@gmail.com>  Thu, 11 Jul 2013 01:18:07 -0700
++
++bumblebee (3.2.1-2) unstable; urgency=low
++
++  * Allow more nvidia flavours to satisfy bumblebee-nvidia's dependencies
++    (relevant for Ubuntu).
++
++ -- Vincent Cheng <Vincentc1208@gmail.com>  Wed, 29 May 2013 01:45:35 -0700
++
++bumblebee (3.2.1-1) unstable; urgency=low
 +
 +  [ Aron Xu ]
 +  * Initial release (Closes: #659440).
 +  * Thanks to Peter Lekensteyn and Bruno Pagani, most stuff taken from the
 +    packaging for Ubuntu PPA.
 +
 +  [ Vincent Cheng ]
 +  * Thanks to Igor Urazov for lots of the Debian-specific portions of the
 +    packaging.
 +
-  -- Aron Xu <aron@debian.org>  Mon, 14 Jan 2013 22:16:25 +0800
++ -- Vincent Cheng <Vincentc1208@gmail.com>  Fri, 03 May 2013 03:04:38 -0700
diff --cc debian/control
index 11c0934e453cdf5ce3062784e1c5dd5357c9e0dd,0000000000000000000000000000000000000000..58c249afb158fff84bb93222056504052ead1c95
mode 100644,000000..100644
--- /dev/null
@@@ -1,52 -1,0 +1,64 @@@
- Uploaders: 
-  Aron Xu <aron@debian.org>, 
-  Vincent Cheng <Vincentc1208@gmail.com>,
-  Yunqiang Su <wzssyqa@gmail.com>
- Build-Depends: debhelper (>= 9), libbsd-dev (>= 0.2.0), pkg-config,
-  libx11-dev, libglib2.0-dev, help2man
- Standards-Version: 3.9.4
 +Source: bumblebee
 +Section: utils
 +Priority: optional
 +Maintainer: Debian NVIDIA Maintainers <pkg-nvidia-devel@lists.alioth.debian.org>
- Vcs-Git: git://anonscm.debian.org/pkg-nvidia/bumblebee.git
- Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-nvidia/bumblebee.git
++Uploaders:
++ Aron Xu <aron@debian.org>,
++ Yunqiang Su <wzssyqa@gmail.com>,
++ Luca Boccassi <bluca@debian.org>,
++ Andreas Beckmann <anbe@debian.org>,
++Build-Depends:
++ debhelper-compat (= 13),
++ dh-sequence-bash-completion,
++ help2man,
++ libbsd-dev,
++ libglib2.0-dev,
++ libx11-dev,
++ pkg-config,
++ libkmod-dev,
++ systemd-dev,
++Rules-Requires-Root: no
++Standards-Version: 4.6.2
 +Homepage: https://launchpad.net/~bumblebee
- Depends: ${shlibs:Depends}, ${misc:Depends}, bbswitch-dkms
- Recommends: virtualgl | primus
- Suggests: bumblebee-nvidia (= ${binary:Version})
++Vcs-Browser: https://salsa.debian.org/nvidia-team/bumblebee
++Vcs-Git: https://salsa.debian.org/nvidia-team/bumblebee.git
 +
 +Package: bumblebee
 +Architecture: linux-any
-  GNU/Linux systems. These laptops are built in such a way that the NVIDIA 
++Pre-Depends:
++ ${misc:Pre-Depends},
++Depends:
++ xserver-xorg-core,
++ ${bumblebee:Depends},
++ ${misc:Depends},
++ ${shlibs:Depends},
++Recommends:
++ bbswitch-dkms | bbswitch-source,
++ ${bumblebee:backend},
++Suggests:
++ bumblebee-nvidia (= ${binary:Version}) [amd64 arm64 ppc64el],
 +Description: NVIDIA Optimus support for Linux
 + Bumblebee is an effort to make NVIDIA Optimus enabled laptops work in
-  It disables the discrete graphics card if no client is detected, and start
++ GNU/Linux systems. These laptops are built in such a way that the NVIDIA
 + graphics card can be used on demand so that battery life is improved and
 + temperature is kept low.
 + .
-  runs on the intergrated graphics. The ability to use discrete graphics
++ It disables the discrete graphics card if no client is detected, and starts
 + an X server making use of NVIDIA card if requested then let software GL
 + implementations (such as VirtualGL) copy frames to the visible display that
- Architecture: amd64 i386
++ runs on the integrated graphics. The ability to use discrete graphics
 + depends on the driver: open source nouveau and proprietary nvidia.
 +
 +Package: bumblebee-nvidia
- Depends: ${shlibs:Depends}, ${misc:Depends}, bumblebee (= ${binary:Version}),
-  nvidia-glx | nvidia-304 | nvidia-304-updates | nvidia-experimental-304 |
-  nvidia-310 | nvidia-310-updates | nvidia-experimental-310 |
-  nvidia-313 | nvidia-313-updates | nvidia-experimental-313
- Recommends: virtualgl | primus-nvidia
++Architecture: amd64 arm64 ppc64el
 +Section: contrib/utils
- Package: bumblebee-dbg
- Priority: extra
- Architecture: linux-any
- Section: debug
- Depends: ${misc:Depends}, bumblebee (= ${binary:Version})
- Description: NVIDIA Optimus support - debugging symbols
-  This package contains the debugging symbols for bumblebee.
++Depends:
++ bumblebee (= ${binary:Version}),
++ ${misc:Depends},
++ ${nvidia:Depends},
++Recommends:
++ nvidia-primus-vk-wrapper,
 +Description: NVIDIA Optimus support using the proprietary NVIDIA driver
 + This metapackage ensures that the proprietary NVIDIA driver is installed in a
 + way such that 3D acceleration does not break. It does so by configuring the
 + OpenGL library path to use the Mesa graphics library.
index 38f6dd97710cbc03fcc17cb505821472726723a1,0000000000000000000000000000000000000000..3479393c72f15c9ed93b16e2ac1bca4e46550054
mode 100644,000000..100644
--- /dev/null
@@@ -1,32 -1,0 +1,34 @@@
- Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
++Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 +Upstream-Name: bumblebee
 +Source: https://github.com/Bumblebee-Project/Bumblebee
 +
 +Files: *
 +Copyright: 2011-2013 Bumblebee Project <bumblebee@lists.launchpad.net>
 +License: GPL-3.0+
 +
 +Files: debian/*
 +Copyright: 2011-2013 Peter Lekensteyn <lekensteyn@gmail.com>
 +           2011-2013 Bruno Pagani <bruno.n.pagani@gmail.com>
 +           2012 Igor Urazov <z0rc3r@gmail.com>
 +           2013 Aron Xu <aron@debian.org>
-            2013 Vincent Cheng <Vincentc1208@gmail.com>
++           2013-2015 Vincent Cheng <vcheng@debian.org>
++           2015-2019 Luca Boccassi <bluca@debian.org>
++ Â© 2015-2024 Andreas Beckmann <anbe@debian.org>
 +License: GPL-3.0+
 +
 +License: GPL-3.0+
 + This program is free software: you can redistribute it and/or modify
 + it under the terms of the GNU General Public License as published by
 + the Free Software Foundation, either version 3 of the License, or
 + (at your option) any later version.
 + .
 + This package is distributed in the hope that it will be useful,
 + but WITHOUT ANY WARRANTY; without even the implied warranty of
 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + GNU General Public License for more details.
 + .
 + You should have received a copy of the GNU General Public License
 + along with this program. If not, see <http://www.gnu.org/licenses/>.
 + .
 + On Debian systems, the complete text of the GNU General
 + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
diff --cc debian/gbp.conf
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..904882063b52eb01d3e0924764150bba4715546a
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++[DEFAULT]
++debian-branch = main
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..641d90a664f3d1cd1129f305b043436e35073acd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,2 @@@
++#960640: dh_bash-completion does not log installed files
++etc/bash_completion.d/bumblebee
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..bfa45d15456fd53d1b63048f6d461c353057d4c4
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,36 @@@
++Description: Support for AMD APU+NVIDIA setup
++Origin: upstream, https://github.com/Bumblebee-Project/Bumblebee/pull/1009
++Applied-Upstream: commit:7c75fd5e8aa9311aed5de6083634c863595924be
++--- a/src/bumblebeed.c
+++++ b/src/bumblebeed.c
++@@ -464,12 +464,19 @@ int main(int argc, char* argv[]) {
++ 
++   /* First look for an intel card */
++   struct pci_bus_id *pci_id_igd = pci_find_gfx_by_vendor(PCI_VENDOR_ID_INTEL, 0);
+++
+++  /* Then look for an amd card */
+++  if (!pci_id_igd) {
+++    bb_log(LOG_INFO, "No Intel video card found, testing for system with an AMD APU.\n");
+++    pci_id_igd = pci_find_gfx_by_vendor(PCI_VENDOR_ID_AMD, 0);
+++  }
+++
++   if (!pci_id_igd) {
++     /* This is no Optimus configuration. But maybe it's a
++        dual-nvidia configuration. Let us test that.
++     */
++     pci_id_igd = pci_find_gfx_by_vendor(PCI_VENDOR_ID_NVIDIA, 1);
++-    bb_log(LOG_INFO, "No Intel video card found, testing for dual-nvidia system.\n");
+++    bb_log(LOG_INFO, "No Intel/AMD video card found, testing for dual-nvidia system.\n");
++ 
++     if (!pci_id_igd) {
++       /* Ok, this is not a double gpu setup supported (there is at most
++--- a/src/pci.h
+++++ b/src/pci.h
++@@ -21,6 +21,7 @@
++ #pragma once
++ #include <sys/types.h> /* necessary for int32_t */
++ 
+++#define PCI_VENDOR_ID_AMD     0x1002
++ #define PCI_VENDOR_ID_NVIDIA  0x10de
++ #define PCI_VENDOR_ID_INTEL   0x8086
++ #define PCI_CLASS_DISPLAY_VGA 0x0300
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3b0e25e930bbec8d23ad15a4b71acf2f5783a942
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,67 @@@
++Author: Luca Boccassi <bluca@debian.org>
++Forwarded: https://github.com/Bumblebee-Project/Bumblebee/pull/1071
++Description: fix new compiler warnings
++--- a/src/bbsecondary.c
+++++ b/src/bbsecondary.c
++@@ -139,10 +139,10 @@
++     return true;
++   //no problems, start X if not started yet
++   if (!bb_is_running(bb_status.x_pid)) {
++-    char pci_id[13];
+++    char pci_id[16];
++     static char *x_conf_file;
++     // 0-255 bus, 0-31 slot, 0-7 func
++-    snprintf(pci_id, 13, "PCI:%03d:%02d:%o", pci_bus_id_discrete->bus,
+++    snprintf(pci_id, 16, "PCI:%03d:%02d:%o", pci_bus_id_discrete->bus,
++             pci_bus_id_discrete->slot, pci_bus_id_discrete->func);
++     if (!x_conf_file) {
++       x_conf_file = xorg_path_w_driver(bb_config.x_conf_file, bb_config.driver);
++--- a/src/pci.c
+++++ b/src/pci.c
++@@ -54,7 +54,7 @@
++  */
++ int pci_get_class(struct pci_bus_id *bus_id) {
++   /* the Bus ID is always of fixed length */
++-  char class_path[40];
+++  char class_path[42];
++   FILE *fp;
++ 
++   snprintf(class_path, sizeof class_path,
++@@ -133,7 +133,7 @@
++  * buffer was too small) or 0 on error
++  */
++ size_t pci_get_driver(char *dest, struct pci_bus_id *bus_id, size_t len) {
++-  char path[1024];
+++  char path[1024], resolved_path[1024];
++   ssize_t read_bytes;
++   char *name;
++ 
++@@ -145,16 +145,16 @@
++   /* the path to the driver if one is loaded */
++   snprintf(path, sizeof path,  "/sys/bus/pci/devices/0000:%02x:%02x.%o/driver",
++           bus_id->bus, bus_id->slot, bus_id->func);
++-  read_bytes = readlink(path, path, sizeof(path) - 1);
+++  read_bytes = readlink(path, resolved_path, sizeof(resolved_path) - 1);
++   if (read_bytes < 0) {
++     /* error, assume that the driver is not loaded */
++     return 0;
++   }
++ 
++   /* readlink does not append a NULL according to the manpage */
++-  path[read_bytes] = 0;
+++  resolved_path[read_bytes] = 0;
++ 
++-  name = basename(path);
+++  name = basename(resolved_path);
++   /* save the name if a valid destination and buffer size was given */
++   if (dest && len > 0) {
++     strncpy(dest, name, len - 1);
++@@ -172,7 +172,7 @@
++  * @return a file handle on success, or NULL on failure
++  */
++ static int pci_config_open(struct pci_bus_id *bus_id, mode_t mode) {
++-  char config_path[41];
+++  char config_path[43];
++ 
++   snprintf(config_path, sizeof config_path,
++           "/sys/bus/pci/devices/0000:%02x:%02x.%o/config", bus_id->bus,
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9016e445ee29f5f03cdc5a3c85705722bbf28baf
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++Author: sevu <severin.gloeckner@stud.htwk-leipzig.de>
++Description: don't use HardDPMS
++ The driver turns into a low power state after inactivity, but it cannot detect
++ headless displays.
++Bug: https://github.com/Bumblebee-Project/Bumblebee/issues/1046
++Origin: commit:c254abb874588bc808f54d60fa836f6b93a7d4bc
++Applied-Upstream: commit:c254abb874588bc808f54d60fa836f6b93a7d4bc
++--- a/conf/xorg.conf.nvidia
+++++ b/conf/xorg.conf.nvidia
++@@ -31,4 +31,5 @@
++     Option "NoLogo" "true"
++     Option "UseEDID" "false"
++     Option "UseDisplayDevice" "none"
+++    Option "HardDPMS" "false"
++ EndSection
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c2f95802e51f31c35fa745e19aa1e26d2423c408
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++Description: Fix detection of devices on bus numbers larger than 9
++Origin: upstream, https://github.com/Bumblebee-Project/Bumblebee/commit/2073f8537412aa47755eb6f3f22a114403e5285b
++Applied-Upstream: commit:2073f8537412aa47755eb6f3f22a114403e5285b
++Bug: https://github.com/Bumblebee-Project/Bumblebee/issues/573
++--- a/src/bbsecondary.c
+++++ b/src/bbsecondary.c
++@@ -138,7 +138,7 @@
++   if (!bb_is_running(bb_status.x_pid)) {
++     char pci_id[12];
++     static char *x_conf_file;
++-    snprintf(pci_id, 12, "PCI:%02x:%02x:%o", pci_bus_id_discrete->bus,
+++    snprintf(pci_id, 12, "PCI:%02d:%02d:%o", pci_bus_id_discrete->bus,
++             pci_bus_id_discrete->slot, pci_bus_id_discrete->func);
++     if (!x_conf_file) {
++       x_conf_file = xorg_path_w_driver(bb_config.x_conf_file, bb_config.driver);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6c363e6e00a4df5ebbf953beb943f801781330f9
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,72 @@@
++Author: Andreas Beckmann <anbe@debian.org>
++Description: fix some typos found by Lintian
++Applied-Upstream: commit:298502848f2d2822ed914a411996be546c5901b9
++--- a/src/bbconfig.c
+++++ b/src/bbconfig.c
++@@ -201,11 +201,11 @@ void print_usage(int exit_val) {
++   }
++   /* common options */
++   fputs("\
++-  -q, --quiet, --silent   supresses all logging messages\n\
+++  -q, --quiet, --silent   suppresses all logging messages\n\
++   -v, --verbose           increase the verbosity level of log messages. It\n\
++                             can be specified up to two times (or five if\n\
++                             --quiet is used)\n\
++-      --debug             show all logging messsages by setting the verbosity\n\
+++      --debug             show all logging messages by setting the verbosity\n\
++                             level to the maximum\n\
++   -C, --config FILE       retrieve settings for Bumblebee from FILE\n", out);
++   if (is_optirun) {
++--- a/src/module.c
+++++ b/src/module.c
++@@ -64,7 +64,7 @@ int module_is_loaded(char *driver) {
++  *
++  * @param module_name The filename of the module to be loaded
++  * @param driver The name of the driver to be loaded
++- * @return 1 if the driver is succesfully loaded, 0 otherwise
+++ * @return 1 if the driver is successfully loaded, 0 otherwise
++  */
++ int module_load(char *module_name, char *driver) {
++   if (module_is_loaded(driver) == 0) {
++@@ -89,7 +89,7 @@ int module_load(char *module_name, char
++  * giving up
++  *
++  * @param driver The name of the driver (not a filename)
++- * @return 1 if the driver is succesfully unloaded, 0 otherwise
+++ * @return 1 if the driver is successfully unloaded, 0 otherwise
++  */
++ int module_unload(char *driver) {
++   if (module_is_loaded(driver) == 1) {
++--- a/src/optirun.c
+++++ b/src/optirun.c
++@@ -62,7 +62,7 @@ static void handle_signal(int sig) {
++ 
++ /**
++  * Prints the status of the Bumblebee server if available
++- * @return EXIT_SUCCESS if the status is succesfully retrieved,
+++ * @return EXIT_SUCCESS if the status is successfully retrieved,
++  * EXIT_FAILURE otherwise
++  */
++ static int report_daemon_status(void) {
++--- a/src/switch/sw_bbswitch.c
+++++ b/src/switch/sw_bbswitch.c
++@@ -98,7 +98,7 @@ int bbswitch_is_available(struct switch_
++    * recognized by bbswitch. Assuming that vga_switcheroo was not told to OFF
++    * the device */
++   if (module_load("bbswitch", "bbswitch")) {
++-    bb_log(LOG_DEBUG, "succesfully loaded bbswitch\n");
+++    bb_log(LOG_DEBUG, "successfully loaded bbswitch\n");
++     /* hurrah, bbswitch could be loaded which means that the module is
++      * available and that the card is supported */
++     return 1;
++--- a/src/bbrun.c
+++++ b/src/bbrun.c
++@@ -170,7 +170,7 @@ int bb_run_fork(char **argv, int detache
++         exitcode = 128 + WTERMSIG(status);
++       }
++     } else {
++-      bb_log(LOG_ERR, "waitpid(%i) faild with %s\n", pid, strerror(errno));
+++      bb_log(LOG_ERR, "waitpid(%i) failed with %s\n", pid, strerror(errno));
++     }
++     pidlist_remove(pid);
++   } else {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..fddcc00e80c1e628e65edc264b871f0f630dde74
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,66 @@@
++Author: Andreas Beckmann <anbe@debian.org>
++Description: fix FTBFS with gcc-10
++ gcc-10 defaults to -fno-common
++ see https://gcc.gnu.org/gcc-10/porting_to.html
++Bug-Debian: https://bugs.debian.org/957058
++Forwarded: https://github.com/Bumblebee-Project/Bumblebee/pull/1071
++--- a/src/bbconfig.h
+++++ b/src/bbconfig.h
++@@ -103,7 +103,7 @@ enum bb_pm_method {
++     PM_VGASWITCHEROO,
++     PM_METHODS_COUNT /* not a method but a marker for the end */
++ };
++-const char *bb_pm_method_string[PM_METHODS_COUNT];
+++extern const char *bb_pm_method_string[PM_METHODS_COUNT];
++ 
++ /* String buffer size */
++ #define BUFFER_SIZE 1024
++--- a/src/switch/switching.h
+++++ b/src/switch/switching.h
++@@ -60,10 +60,10 @@ void switcheroo_off(void);
++ 
++ /* number of switchers as defined in switching.c */
++ #define SWITCHERS_COUNT 2
++-struct switching_method switching_methods[SWITCHERS_COUNT];
+++extern struct switching_method switching_methods[SWITCHERS_COUNT];
++ 
++ /* A switching method that can be used or NULL if none */
++-struct switching_method *switcher;
+++extern struct switching_method *switcher;
++ 
++ struct switching_method *switcher_detect(const char *name, struct switch_info);
++ enum switch_state switch_status(void);
++--- a/src/bbsecondary.h
+++++ b/src/bbsecondary.h
++@@ -21,7 +21,7 @@
++ #pragma once
++ 
++ /* PCI Bus ID of the discrete video card */
++-struct pci_bus_id *pci_bus_id_discrete;
+++extern struct pci_bus_id *pci_bus_id_discrete;
++ 
++ /// Start the X server by fork-exec, turn card on if needed.
++ bool start_secondary(bool);
++--- a/src/switch/switching.c
+++++ b/src/switch/switching.c
++@@ -31,6 +31,8 @@ struct switching_method switching_method
++           switcheroo_on, switcheroo_off}
++ };
++ 
+++struct switching_method *switcher = NULL;
+++
++ /**
++  * Enumerates through available switching methods and try a method
++  * 
++--- a/src/bbsecondary.c
+++++ b/src/bbsecondary.c
++@@ -37,6 +37,9 @@
++ #include "pci.h"
++ #include "module.h"
++ 
+++/* PCI Bus ID of the discrete video card */
+++struct pci_bus_id *pci_bus_id_discrete;
+++
++ /**
++  * Substitutes DRIVER in the passed path
++  * @param x_conf_file A path to be processed
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8f8d262a73c029209c038cbb631f94cbb8952e06
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++Description: Ignore error on X shutdown
++Origin: upstream, https://github.com/Bumblebee-Project/Bumblebee/commit/25387e92822fb1a56fa43f1f9f636b987018d068
++Applied-Upstream: commit:25387e92822fb1a56fa43f1f9f636b987018d068
++--- a/src/bblogger.c
+++++ b/src/bblogger.c
++@@ -144,7 +144,8 @@
++   /* Error lines are errors. */
++   if (strncmp(string, "(EE)", 4) == 0){
++     if (strstr(string, "Failed to load module \"kbd\"") ||
++-            strstr(string, "No input driver matching")) {
+++            strstr(string, "No input driver matching") ||
+++            strstr(string, "Server terminated successfully")) {
++       /* non-fatal errors */
++       prio = LOG_DEBUG;
++     } else {
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b87422fea55784fbf8c1d5af4f77ce1f94b5c2d5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,17 @@@
++Author: Luca Boccassi <luca.boccassi@gmail.com>
++Description: Ignore failure to set DRM interface
++ This always fail due to problems in libdrm, but does not affect
++ Bumblebee's functionality. See GH-652 for more details.
++Bug: https://github.com/Bumblebee-Project/Bumblebee/issues/652
++Origin: commit:881fab51122f7fe3c7c18565556ad96c25d0660f
++Applied-Upstream: commit:881fab51122f7fe3c7c18565556ad96c25d0660f
++--- a/src/bblogger.c
+++++ b/src/bblogger.c
++@@ -146,6 +146,7 @@ static void parse_xorg_output(char * string){
++     if (strstr(string, "Failed to load module \"kbd\"") ||
++             strstr(string, "No input driver matching") ||
++             strstr(string, "systemd-logind: failed to get session:") ||
+++            strstr(string, "failed to set DRM interface version 1.4:") ||
++             strstr(string, "Server terminated successfully")) {
++       /* non-fatal errors */
++       prio = LOG_DEBUG;
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..399155d85a02891f1490b53151ee2eb15ef1df6f
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++Author: Peter Wu <peter@lekensteyn.nl>
++Description: ignore systemd-logind noise
++ This "error" appears when not run under logind. As it is not fatal,
++ ignore it. (It also appears on my KDE desktop using KDM.)
++Bug: https://github.com/Bumblebee-Project/Bumblebee/issues/582
++Origin: commit:b506a03abab85bc202109f8eeda5c337ee956935
++Applied-Upstream: commit:b506a03abab85bc202109f8eeda5c337ee956935
++--- a/src/bblogger.c
+++++ b/src/bblogger.c
++@@ -145,6 +145,7 @@ static void parse_xorg_output(char * string){
++   if (strncmp(string, "(EE)", 4) == 0){
++     if (strstr(string, "Failed to load module \"kbd\"") ||
++             strstr(string, "No input driver matching") ||
+++            strstr(string, "systemd-logind: failed to get session:") ||
++             strstr(string, "Server terminated successfully")) {
++       /* non-fatal errors */
++       prio = LOG_DEBUG;
++@@ -201,7 +202,7 @@ static void parse_xorg_output(char * string){
++       }
++     }
++   }
++-  
+++
++   /* do the actual logging */
++   bb_log(prio, "[XORG] %s\n", string);
++ }
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..95ed4659cb9cc84777d90448451eaffda6eef6c5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,406 @@@
++Author: OndÅ™ej Janošík <j.ondra14@gmail.com>
++Description: module: use libkmod2 instead of modprobe
++Origin: commit:cab32cd9994df183c696310d7a30291061d0039f
++Applied-Upstream: commit:cab32cd9994df183c696310d7a30291061d0039f
++--- a/Makefile.am
+++++ b/Makefile.am
++@@ -10,7 +10,7 @@
++              -DCONF_XORG='"$(bumblebeedconfdir)/xorg.conf.DRIVER"' \
++              -DCONF_XORG_DIR='"$(bumblebeedconfdir)/xorg.conf.d"'
++ AM_CFLAGS = ${regular_CFLAGS} \
++-             ${x11_CFLAGS} ${libbsd_CFLAGS} ${glib_CFLAGS} \
+++             ${x11_CFLAGS} ${libbsd_CFLAGS} ${glib_CFLAGS} ${kmod_CFLAGS} \
++              -Wextra -funsigned-char -DGITVERSION='"${GITVERSION}"'
++ 
++ noinst_SCRIPTS = scripts/systemd/bumblebeed.service \
++@@ -49,13 +49,13 @@
++ bin_PROGRAMS = bin/optirun
++ 
++ bin_optirun_SOURCES = src/module.c src/bbconfig.c src/bblogger.c src/bbrun.c \
++-     src/bbsocket.c src/driver.c src/optirun.c src/bbsocketclient.c
++-bin_optirun_LDADD = ${glib_LIBS} -lrt
+++     src/bbsocket.c src/optirun.c src/bbsocketclient.c
+++bin_optirun_LDADD = ${glib_LIBS} ${kmod_LIBS} -lrt
++ bin_bumblebeed_SOURCES = src/pci.c src/bbconfig.c src/bblogger.c src/bbrun.c \
++      src/bbsocket.c src/module.c src/bbsecondary.c src/switch/switching.c \
++      src/switch/sw_bbswitch.c src/switch/sw_switcheroo.c \
++      src/driver.c src/bumblebeed.c
++-bin_bumblebeed_LDADD = ${x11_LIBS} ${libbsd_LIBS} ${glib_LIBS} -lrt
+++bin_bumblebeed_LDADD = ${x11_LIBS} ${libbsd_LIBS} ${glib_LIBS} ${kmod_LIBS} -lrt
++ 
++ dist_doc_DATA = $(relnotes) README.markdown
++ bumblebeedconf_DATA = conf/bumblebee.conf conf/xorg.conf.nouveau conf/xorg.conf.nvidia
++--- a/README.markdown
+++++ b/README.markdown
++@@ -19,6 +19,7 @@
++ - pkg-config
++ - glib-2.0 and development headers
++ - libx11 and development headers
+++- libkmod2 and development headers
++ - libbsd and development headers (if pidfile support is enabled, default yes)
++ - help2man (optional, it is needed for building manual pages)
++ 
++--- a/configure.ac
+++++ b/configure.ac
++@@ -132,6 +132,7 @@
++ # Checks for header files.
++ PKG_CHECK_MODULES([x11], [x11])
++ PKG_CHECK_MODULES([glib], [glib-2.0])
+++PKG_CHECK_MODULES([kmod], [libkmod])
++ AS_IF([test "x$with_pidfile" != xno], [
++              PKG_CHECK_MODULES([libbsd], [libbsd >= 0.2.0])
++              PKG_CHECK_EXISTS([libbsd = 0.2.0], [AC_DEFINE(HAVE_LIBBSD_020)])
++--- a/src/bbconfig.c
+++++ b/src/bbconfig.c
++@@ -251,12 +251,6 @@
++  */
++ static int bbconfig_parse_common(int opt, char *value) {
++   switch (opt) {
++-    case 'q'://quiet mode
++-      bb_status.verbosity = VERB_NONE;
++-      break;
++-    case OPT_DEBUG://debug mode
++-      bb_status.verbosity = VERB_ALL;
++-      break;
++     case 'd'://X display number
++       set_string_value(&bb_config.x_display, value);
++       break;
++@@ -307,6 +301,12 @@
++             bb_status.verbosity++;
++           }
++           break;
+++        case 'q'://quiet mode
+++          bb_status.verbosity = VERB_NONE;
+++          break;
+++        case OPT_DEBUG://debug mode
+++          bb_status.verbosity = VERB_ALL;
+++          break;
++         case 's': /* Unix socket to use for communication */
++           set_string_value(&bb_config.socket_path, optarg);
++           break;
++--- a/src/bbconfig.h
+++++ b/src/bbconfig.h
++@@ -26,6 +26,7 @@
++ #include <unistd.h> //for pid_t
++ #include <limits.h> //for CHAR_MAX
++ #include <glib.h>
+++#include <libkmod.h>
++ 
++ /* Daemon states */
++ #define BB_DAEMON 1
++@@ -118,6 +119,7 @@
++     int x_pipe[2];//pipes for reading/writing output from X's stdout/stderr
++     gboolean use_syslog;
++     char *program_name;
+++    struct kmod_ctx *kmod_ctx;
++ };
++ 
++ /* Structure containing the configuration. */
++--- a/src/bblogger.c
+++++ b/src/bblogger.c
++@@ -228,7 +228,7 @@
++         /* line / buffer is full, process the remaining buffer the next round */
++         repeat = 1;
++       }
++-    }else{
+++    } else {
++       if (r == 0 || (errno != EAGAIN && r == -1)){
++         /* the pipe is closed/invalid. Clean up. */
++         if (bb_status.x_pipe[0] != -1){close(bb_status.x_pipe[0]); bb_status.x_pipe[0] = -1;}
++@@ -257,5 +257,5 @@
++         memmove(x_output_buffer, next_part, x_buffer_pos);
++       }
++     }
++-  }while(repeat);
+++  }while (repeat);
++ }/* check_xorg_pipe */
++--- a/src/bumblebeed.c
+++++ b/src/bumblebeed.c
++@@ -34,6 +34,7 @@
++ #include <string.h>
++ #include <errno.h>
++ #include <getopt.h>
+++#include <libkmod.h>
++ #ifdef WITH_PIDFILE
++ #ifdef HAVE_LIBBSD_020
++ #include <libutil.h>
++@@ -488,6 +489,14 @@
++ 
++   free(pci_id_igd);
++ 
+++  // kmod context have to be available for driver detection
+++  bb_status.kmod_ctx = kmod_new(NULL, NULL);
+++  if (bb_status.kmod_ctx == NULL) {
+++    bb_log(LOG_ERR, "kmod_new() failed!\n");
+++    bb_closelog();
+++    exit(EXIT_FAILURE);
+++  }
+++
++   GKeyFile *bbcfg = bbconfig_parse_conf();
++   bbconfig_parse_opts(argc, argv, PARSE_STAGE_DRIVER);
++   driver_detect();
++@@ -500,6 +509,7 @@
++ 
++   /* dump the config after detecting the driver */
++   config_dump();
+++
++   if (config_validate() != 0) {
++     return (EXIT_FAILURE);
++   }
++@@ -572,5 +582,7 @@
++   //close X pipe, if any parts of it are open still
++   if (bb_status.x_pipe[0] != -1){close(bb_status.x_pipe[0]); bb_status.x_pipe[0] = -1;}
++   if (bb_status.x_pipe[1] != -1){close(bb_status.x_pipe[1]); bb_status.x_pipe[1] = -1;}
+++  //cleanup kmod context
+++  kmod_unref(bb_status.kmod_ctx);
++   return (EXIT_SUCCESS);
++ }
++--- a/src/module.c
+++++ b/src/module.c
++@@ -24,91 +24,152 @@
++ #include <ctype.h>
++ #include <stdlib.h>
++ #include <unistd.h>
+++#include <libkmod.h>
+++#include <errno.h>
++ #include "module.h"
++ #include "bblogger.h"
++ #include "bbrun.h"
+++#include "bbconfig.h"
+++
+++int module_unload_recursive(struct kmod_module *mod);
++ 
++ /**
++- * Checks in /proc/modules whether a kernel module is loaded
+++ * Checks whether a kernel module is loaded
++  *
++  * @param driver The name of the driver (not a filename)
++  * @return 1 if the module is loaded, 0 otherwise
++  */
++ int module_is_loaded(char *driver) {
++-  // use the same buffer length as lsmod
++-  char buffer[4096];
++-  FILE * bbs = fopen("/proc/modules", "r");
++-  int ret = 0;
++-  /* assume mod_len <= sizeof(buffer) */
++-  int mod_len = strlen(driver);
++-
++-  if (bbs == 0) {//error opening, return -1
++-    bb_log(LOG_DEBUG, "Couldn't open /proc/modules");
++-    return -1;
++-  }
++-  while (fgets(buffer, sizeof(buffer), bbs)) {
++-    /* match "module" with "module " and not "module-blah" */
++-    if (!strncmp(buffer, driver, mod_len) && isspace(buffer[mod_len])) {
++-      /* module is found */
++-      ret = 1;
++-      break;
++-    }
+++  int err, state;
+++  struct kmod_module *mod;
+++
+++  err = kmod_module_new_from_name(bb_status.kmod_ctx, driver, &mod);
+++  if (err < 0) {
+++    bb_log(LOG_DEBUG, "kmod_module_new_from_name(%s) failed (err: %d).\n",
+++      driver, err);
+++    return 0;
++   }
++-  fclose(bbs);
++-  return ret;
+++
+++  state = kmod_module_get_initstate(mod);
+++  kmod_module_unref(mod);
+++
+++  return state == KMOD_MODULE_LIVE;
++ }
++ 
++ /**
++- * Attempts to load a module. If the module has not been loaded after ten
++- * seconds, give up
+++ * Attempts to load a module.
++  *
++  * @param module_name The filename of the module to be loaded
++  * @param driver The name of the driver to be loaded
++  * @return 1 if the driver is successfully loaded, 0 otherwise
++  */
++ int module_load(char *module_name, char *driver) {
+++  int err = 0;
+++  int flags = KMOD_PROBE_IGNORE_LOADED;
+++  struct kmod_list *l, *list = NULL;
+++
++   if (module_is_loaded(driver) == 0) {
++     /* the module has not loaded yet, try to load it */
++-    bb_log(LOG_INFO, "Loading driver %s (module %s)\n", driver, module_name);
++-    char *mod_argv[] = {
++-      "modprobe",
++-      module_name,
++-      NULL
++-    };
++-    bb_run_fork_wait(mod_argv, 10);
++-    if (module_is_loaded(driver) == 0) {
++-      bb_log(LOG_ERR, "Module %s could not be loaded (timeout?)\n", module_name);
+++
+++    bb_log(LOG_INFO, "Loading driver '%s' (module '%s')\n", driver, module_name);
+++    err = kmod_module_new_from_lookup(bb_status.kmod_ctx, module_name, &list);
+++
+++    if (err < 0) {
+++      bb_log(LOG_DEBUG, "kmod_module_new_from_lookup(%s) failed (err: %d).\n",
+++        module_name, err);
+++      return 0;
+++    }
+++
+++    if (list == NULL) {
+++      bb_log(LOG_ERR, "Module '%s' not found.\n", module_name);
++       return 0;
++     }
+++
+++    kmod_list_foreach(l, list) {
+++      struct kmod_module *mod = kmod_module_get_module(l);
+++
+++      bb_log(LOG_DEBUG, "Loading module '%s'.\n", kmod_module_get_name(mod));
+++      err = kmod_module_probe_insert_module(mod, flags, NULL, NULL, NULL, 0);
+++
+++      if (err < 0) {
+++        bb_log(LOG_DEBUG, "kmod_module_probe_insert_module(%s) failed (err: %d).\n",
+++          kmod_module_get_name(mod), err);
+++      }
+++
+++      kmod_module_unref(mod);
+++
+++      if (err < 0) {
+++        break;
+++      }
+++    }
+++
+++    kmod_module_unref_list(list);
++   }
++-  return 1;
+++
+++  return err >= 0;
++ }
++ 
++ /**
++- * Attempts to unload a module if loaded, for ten seconds before
++- * giving up
+++ * Unloads module and modules that are depending on this module.
+++ *
+++ * @param mod Reference to libkmod module
+++ * @return 1 if the module is successfully unloaded, 0 otherwise
+++ */
+++int module_unload_recursive(struct kmod_module *mod) {
+++  int err = 0, flags = 0, refcnt;
+++  struct kmod_list *holders;
+++
+++  holders = kmod_module_get_holders(mod);
+++  if (holders != NULL) {
+++    struct kmod_list *itr;
+++
+++    kmod_list_foreach(itr, holders) {
+++      struct kmod_module *hm = kmod_module_get_module(itr);
+++      err = module_unload_recursive(hm);
+++      kmod_module_unref(hm);
+++
+++      if (err < 0) {
+++        break;
+++      }
+++    }
+++    kmod_module_unref_list(holders);
+++  }
+++
+++  refcnt = kmod_module_get_refcnt(mod);
+++  if (refcnt == 0) {
+++    bb_log(LOG_INFO, "Unloading module %s\n", kmod_module_get_name(mod));
+++    err = kmod_module_remove_module(mod, flags);
+++  } else {
+++    bb_log(LOG_ERR, "Failed to unload module '%s' (ref count: %d).\n",
+++      kmod_module_get_name(mod), refcnt);
+++    err = 1;
+++  }
+++
+++  return err == 0;
+++}
+++
+++/**
+++ * Attempts to unload a module if loaded.
++  *
++  * @param driver The name of the driver (not a filename)
++  * @return 1 if the driver is successfully unloaded, 0 otherwise
++  */
++ int module_unload(char *driver) {
+++  int err;
+++  struct kmod_module *mod;
++   if (module_is_loaded(driver) == 1) {
++-    int retries = 30;
++-    bb_log(LOG_INFO, "Unloading %s driver\n", driver);
++-    char *mod_argv[] = {
++-      "modprobe",
++-      "-r",
++-      driver,
++-      NULL
++-    };
++-    bb_run_fork_wait(mod_argv, 10);
++-    while (retries-- > 0 && module_is_loaded(driver) == 1) {
++-      usleep(100000);
++-    }
++-    if (module_is_loaded(driver) == 1) {
++-      bb_log(LOG_ERR, "Unloading %s driver timed out.\n", driver);
+++    err = kmod_module_new_from_name(bb_status.kmod_ctx, driver, &mod);
+++
+++    if (err < 0) {
+++      bb_log(LOG_DEBUG, "kmod_module_new_from_name(%s) failed (err: %d).\n",
+++        driver, err);
++       return 0;
++     }
+++
+++    err = module_unload_recursive(mod);
+++    kmod_module_unref(mod);
+++
+++    return err;
++   }
++   return 1;
++ }
++@@ -120,18 +181,20 @@
++  * @return 1 if the module is available for loading, 0 otherwise
++  */
++ int module_is_available(char *module_name) {
++-  /* HACK to support call from optirun */
++-  char *modprobe_bin = "/sbin/modprobe";
++-  if (access(modprobe_bin, X_OK)) {
++-    /* if /sbin/modprobe is not found, pray that PATH contains it */
++-    modprobe_bin = "modprobe";
++-  }
++-  char *mod_argv[] = {
++-    modprobe_bin,
++-    "--dry-run",
++-    "--quiet",
++-    module_name,
++-    NULL
++-  };
++-  return bb_run_fork(mod_argv, 1) == EXIT_SUCCESS;
+++  int err, available;
+++  struct kmod_list *list = NULL;
+++
+++  err = kmod_module_new_from_lookup(bb_status.kmod_ctx, module_name, &list);
+++
+++  if (err < 0) {
+++    bb_log(LOG_DEBUG, "kmod_module_new_from_lookup(%s) failed (err: %d).\n",
+++      module_name, err);
+++    return 0;
+++  }
+++
+++  available = list != NULL;
+++
+++  kmod_module_unref_list(list);
+++
+++  return available;
++ }
++--- a/src/optirun.c
+++++ b/src/optirun.c
++@@ -37,7 +37,6 @@
++ #include "bbsocketclient.h"
++ #include "bblogger.h"
++ #include "bbrun.h"
++-#include "driver.h"
++ 
++ 
++ /**
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..8ea7d578160df72953f374dd6e6d9c2a42632cb5
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,26 @@@
++Description: fix man section
++Author: Andreas Beckmann <anbe@debian.org>
++Forwarded: https://github.com/Bumblebee-Project/Bumblebee/pull/1071
++--- a/Makefile.am
+++++ b/Makefile.am
++@@ -113,7 +113,7 @@ scripts/upstart/bumblebeed.conf: $(srcdi
++      $(do_subst) < $< > $@
++ 
++ if HAVE_HELP2MAN
++-man_MANS = bumblebeed.1 optirun.1
+++man_MANS = bumblebeed.8 optirun.1
++ CLEANFILES += $(man_MANS)
++ 
++ optirun.1: bin/optirun $(bin_optirun_SOURCES)
++@@ -121,9 +121,10 @@ optirun.1: bin/optirun $(bin_optirun_SOU
++              --name='run programs on the discrete video card' \
++              bin/optirun
++ 
++-bumblebeed.1: bin/bumblebeed $(bin_bumblebeed_SOURCES)
+++bumblebeed.8: bin/bumblebeed $(bin_bumblebeed_SOURCES)
++      $(HELP2MAN) --output=$@ --no-info \
++              --name='bumblebee daemon' \
+++             --section=8 \
++              bin/bumblebeed
++ else
++      @echo "Warning: help2man not available, no man page is created."
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..b403ca19707cc04fa6892102af055c8a1b3acc58
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,21 @@@
++Description: switch from "rmmod" to "modprobe -r"
++ With the introduction of nvidia-uvm module, unloading nvidia module will fail
++ unless nvidia-uvm is unloaded.  GH-565 suggests using "remove" or "softdep"
++ modprobe.d clauses to teach modprobe to handle that for us; "rmmod" does not
++ have that functionality, so switch to "modprobe -r".
++Origin: upstream, https://github.com/Bumblebee-Project/Bumblebee/commit/1ada79fe5916961fc4e4917f8c63bb184908d986
++Applied-Upstream: commit:1ada79fe5916961fc4e4917f8c63bb184908d986
++Bug: https://github.com/Bumblebee-Project/Bumblebee/issues/565
++Bug-Debian: https://bugs.debian.org/793389
++--- a/src/module.c
+++++ b/src/module.c
++@@ -96,7 +96,8 @@ int module_unload(char *driver) {
++     int retries = 30;
++     bb_log(LOG_INFO, "Unloading %s driver\n", driver);
++     char *mod_argv[] = {
++-      "rmmod",
+++      "modprobe",
+++      "-r",
++       driver,
++       NULL
++     };
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..6c104bf6903a6b08032529db7578cafdefdd4fcd
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,83 @@@
++Description: Add option to always unload the driver on exit
++Origin: upstream, https://github.com/Bumblebee-Project/Bumblebee/pull/983
++Applied-Upstream: commit:61c6161cd310b70dd95dec8f4fbd8dd153dd01d2
++--- a/src/bbconfig.c
+++++ b/src/bbconfig.c
++@@ -462,6 +462,10 @@ void bbconfig_parse_conf_driver(GKeyFile
++       g_free(module_name);
++     }
++   }
+++  key = "AlwaysUnloadKernelDriver";
+++  if (g_key_file_has_key(bbcfg, section, key, NULL)) {
+++    bb_config.force_driver_unload = g_key_file_get_boolean(bbcfg, section, key, NULL);
+++  }
++   key = "LibraryPath";
++   if (g_key_file_has_key(bbcfg, section, key, NULL)) {
++     free_and_set_value(&bb_config.ld_path, g_key_file_get_string(bbcfg, section, key, NULL));
++--- a/src/bbconfig.h
+++++ b/src/bbconfig.h
++@@ -145,6 +145,7 @@ struct bb_config_struct {
++     char * module_name; /* Kernel module to be loaded for the driver.
++                                     * If empty, driver will be used. This is
++                                     * for Ubuntu which uses nvidia-current */
+++    int force_driver_unload; /* Force driver unload, even without active PM method */
++     int card_shutdown_state;
++ #ifdef WITH_PIDFILE
++     char *pid_file; /* pid file for storing the daemons PID */
++--- a/src/bbsecondary.c
+++++ b/src/bbsecondary.c
++@@ -223,24 +223,31 @@ bool start_secondary(bool need_secondary
++ static void switch_and_unload(void)
++ {
++   char driver[BUFFER_SIZE];
+++  int unload_driver = 0;
++ 
++-  if (bb_config.pm_method == PM_DISABLED && bb_status.runmode != BB_RUN_EXIT) {
+++  if (bb_config.pm_method == PM_DISABLED && !bb_config.force_driver_unload && bb_status.runmode != BB_RUN_EXIT) {
++     /* do not disable the card if PM is disabled unless exiting */
++     return;
++   }
++ 
++   //if card is on and can be switched, switch it off
+++  if (switcher && switcher->need_driver_unloaded) {
+++    /* do not unload the drivers nor disable the card if the card is not on */
+++    if (switcher->status() != SWITCH_ON) {
+++      return;
+++    }
+++    unload_driver = 1;
+++  }
+++
+++  if (unload_driver || bb_config.force_driver_unload) {
+++    /* unload the driver loaded by the graphica card */
+++    if (pci_get_driver(driver, pci_bus_id_discrete, sizeof driver)) {
+++      module_unload(driver);
+++    }
+++  }
+++
++   if (switcher) {
++     if (switcher->need_driver_unloaded) {
++-      /* do not unload the drivers nor disable the card if the card is not on */
++-      if (switcher->status() != SWITCH_ON) {
++-        return;
++-      }
++-      /* unload the driver loaded by the graphica card */
++-      if (pci_get_driver(driver, pci_bus_id_discrete, sizeof driver)) {
++-        module_unload(driver);
++-      }
++-
++       //only turn card off if no drivers are loaded
++       if (pci_get_driver(NULL, pci_bus_id_discrete, 0)) {
++         bb_log(LOG_DEBUG, "Drivers are still loaded, unable to disable card\n");
++--- a/conf/bumblebee.conf.in
+++++ b/conf/bumblebee.conf.in
++@@ -62,6 +62,10 @@ LibraryPath=@CONF_LDPATH_NVIDIA@
++ # default Xorg modules path
++ XorgModulePath=@CONF_MODPATH_NVIDIA@
++ XorgConfFile=@BBCONFDIR@/xorg.conf.nvidia
+++# If set to true, will always unload the kernel module(s) even with
+++# PMMethod=none - useful for newer Optimus models on which the kernel power
+++# management works out of the box to power the card on/off without bbswitch.
+++AlwaysUnloadKernelDriver=false
++ 
++ ## Section with nouveau driver specific options, only parsed if Driver=nouveau
++ [driver-nouveau]
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..c5d98dc961311155e4a329b2c72c2a4fda99eafc
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,20 @@@
++Author: Ian Hartwig
++Origin: commit:44cd9bd71fb4ded05be51f0d653b59a043b31088
++Applied-Upstream: commit:44cd9bd71fb4ded05be51f0d653b59a043b31088
++Bug-Debian: https://bugs.debian.org/979006
++Description: fix pcie id string overrun
++--- a/src/bbsecondary.c
+++++ b/src/bbsecondary.c
++@@ -139,9 +139,10 @@
++     return true;
++   //no problems, start X if not started yet
++   if (!bb_is_running(bb_status.x_pid)) {
++-    char pci_id[12];
+++    char pci_id[13];
++     static char *x_conf_file;
++-    snprintf(pci_id, 12, "PCI:%02d:%02d:%o", pci_bus_id_discrete->bus,
+++    // 0-255 bus, 0-31 slot, 0-7 func
+++    snprintf(pci_id, 13, "PCI:%03d:%02d:%o", pci_bus_id_discrete->bus,
++             pci_bus_id_discrete->slot, pci_bus_id_discrete->func);
++     if (!x_conf_file) {
++       x_conf_file = xorg_path_w_driver(bb_config.x_conf_file, bb_config.driver);
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..36540d967a29b76211456329d14cfddd74975625
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++Author: Andreas Beckmann <anbe@debian.org>
++Description: optirun: set ENABLE_PRIMUS_LAYER=1 to enable primus-vk handling
++Forwarded: https://github.com/Bumblebee-Project/Bumblebee/pull/1071
++--- a/src/optirun.c
+++++ b/src/optirun.c
++@@ -256,6 +256,9 @@ static int run_primus(int argc, char **a
++   /* assume OSS drivers for primary display (Mesa for Intel) */
++   setenv("PRIMUS_libGLd", libgl_mesa, 0);
++ 
+++  /* vulkan applications are handled via primus-vk */
+++  setenv("ENABLE_PRIMUS_LAYER", "1", 0);
+++
++   int exitcode = bb_run_fork(run_args, 0);
++   free(run_args);
++   return exitcode;
index 05be4625df7457276d995b379d4632faa1aa5400,0000000000000000000000000000000000000000..7131342b98ce103d1ebcfdd9245499f24ca582e5
mode 100644,000000..100644
--- /dev/null
@@@ -1,1 -1,0 +1,16 @@@
- 008-primus-libs-fix.patch
++fix-device-detection.patch
++ignore-error-on-X-shutdown.patch
++modprobe-r-instead-of-rmmod.patch
++fix-typos.patch
++xorg-binary-config.patch
++ignore-systemd-logind-noise.patch
++ignore-failure-to-set-DRM-interface.patch
++libkmod.patch
++amd-apu.patch
++no-bbswitch.patch
++man-section.patch
++gcc-10.patch
++primus-vk.patch
++pcie_id_overrun.patch
++disable-hard-dpms.patch
++compiler-warnings.patch
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..347d99931f2560bad37b6b4a373f903e038c2309
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,125 @@@
++Author: Rogier 'DocWilco' Mulhuijzen <github@bsdchicks.com>
++DescriptioN: add config option to set Xorg binary to run
++ Also add Xorg commandline binary to debug output
++Origin: commit:11ac2211e97823ee7fda9fa5978eb2e12358cceb
++Applied-Upstream: commit:11ac2211e97823ee7fda9fa5978eb2e12358cceb
++--- a/Makefile.am
+++++ b/Makefile.am
++@@ -70,6 +70,7 @@
++ 
++ do_subst = sed -e 's|[@]GITVERSION[@]|$(GITVERSION)|g' \
++      -e 's|[@]CONF_XDISP[@]|$(CONF_XDISP)|g' \
+++     -e 's|[@]CONF_XORG_BINARY[@]|$(CONF_XORG_BINARY)|g' \
++      -e 's|[@]CONF_SOCKPATH[@]|$(CONF_SOCKPATH)|g' \
++      -e 's|[@]CONF_GID[@]|$(CONF_GID)|g' \
++      -e 's|[@]CONF_PM_METHOD[@]|$(CONF_PM_METHOD)|g' \
++--- a/conf/bumblebee.conf.in
+++++ b/conf/bumblebee.conf.in
++@@ -22,6 +22,8 @@
++ Driver=@CONF_DRIVER@
++ # Directory with a dummy config file to pass as a -configdir to secondary X
++ XorgConfDir=@XCONFDDIR@
+++# Xorg binary to run
+++XorgBinary=@CONF_XORG_BINARY@
++ 
++ ## Client options. Will take effect on the next optirun executed.
++ [optirun]
++--- a/configure.ac
+++++ b/configure.ac
++@@ -32,6 +32,16 @@
++ AC_DEFINE_SUBST(CONF_VGLCOMPRESS, "proxy", [vglclient transport method])
++ AC_DEFINE_SUBST(CONF_TURNOFFATEXIT, "false", [state of card when shutting off daemon])
++ 
+++# OpenSUSE: /usr/bin/X -> /var/lib/X11/X -> /usr/bin/Xorg
+++# Fedora, Arch Linux: /usr/bin/X -> /usr/bin/Xorg
+++# Ubuntu: /usr/bin/X is a custom binary doing authorization and then executes
+++#         /etc/X11/X -> /usr/bin/Xorg
+++AC_DEFINE_CONF(CONF_XORG_BINARY, [Xorg binary to run], [
+++if test "x" = "x$CONF_XORG_BINARY"; then
+++     CONF_XORG_BINARY=Xorg
+++fi
+++])
+++
++ AC_DEFINE_CONF(CONF_BRIDGE, [optirun display/render bridge, valid values are auto (default), primus and virtualgl], [
++ case $CONF_BRIDGE in
++ auto|primus|virtualgl) ;;
++--- a/src/bbconfig.c
+++++ b/src/bbconfig.c
++@@ -425,6 +425,10 @@
++   if (g_key_file_has_key(bbcfg, section, key, NULL)) {
++     free_and_set_value(&bb_config.x_conf_dir, g_key_file_get_string(bbcfg, section, key, NULL));
++   }
+++  key = "XorgBinary";
+++  if (g_key_file_has_key(bbcfg, section, key, NULL)) {
+++    free_and_set_value(&bb_config.xorg_binary, g_key_file_get_string(bbcfg, section, key, NULL));
+++  }
++   return bbcfg;
++ }
++ 
++@@ -517,6 +521,7 @@
++   set_string_value(&bb_config.gid_name, CONF_GID);
++   set_string_value(&bb_config.x_conf_file, CONF_XORG);
++   set_string_value(&bb_config.x_conf_dir, CONF_XORG_DIR);
+++  set_string_value(&bb_config.xorg_binary, CONF_XORG_BINARY);
++   set_string_value(&bb_config.optirun_bridge, CONF_BRIDGE);
++   set_string_value(&bb_config.primus_ld_path, CONF_PRIMUS_LD_PATH);
++   set_string_value(&bb_config.vgl_compress, CONF_VGLCOMPRESS);
++@@ -550,6 +555,7 @@
++ #endif
++     bb_log(LOG_DEBUG, " xorg.conf file: %s\n", bb_config.x_conf_file);
++     bb_log(LOG_DEBUG, " xorg.conf.d dir: %s\n", bb_config.x_conf_dir);
+++    bb_log(LOG_DEBUG, " Xorg binary: %s\n", bb_config.xorg_binary);
++     bb_log(LOG_DEBUG, " ModulePath: %s\n", bb_config.mod_path);
++     bb_log(LOG_DEBUG, " GID name: %s\n", bb_config.gid_name);
++     bb_log(LOG_DEBUG, " Power method: %s\n",
++--- a/src/bbconfig.h
+++++ b/src/bbconfig.h
++@@ -122,6 +122,7 @@
++ 
++ /* Structure containing the configuration. */
++ struct bb_config_struct {
+++    char * xorg_binary; /// Xorg binary to run.
++     char * x_display; /// X display number to use.
++     char * x_conf_file; /// Path to the X configuration file.
++     char * x_conf_dir; /// Path to the dummy X configuration directory.
++--- a/src/bbsecondary.c
+++++ b/src/bbsecondary.c
++@@ -146,7 +146,7 @@
++ 
++     bb_log(LOG_INFO, "Starting X server on display %s.\n", bb_config.x_display);
++     char *x_argv[] = {
++-      XORG_BINARY,
+++      bb_config.xorg_binary,
++       bb_config.x_display,
++       "-config", x_conf_file,
++       "-configdir", bb_config.x_conf_dir,
++@@ -158,6 +158,12 @@
++       "-modulepath", bb_config.mod_path, // keep last
++       NULL
++     };
+++    char **argvp;
+++    bb_log(LOG_DEBUG, "X server command line:");
+++    for (argvp = x_argv; argvp && *argvp; argvp++) {
+++         bb_log(LOG_DEBUG, " %s", *argvp);
+++    }
+++    bb_log(LOG_DEBUG, "\n");
++     enum {n_x_args = sizeof(x_argv) / sizeof(x_argv[0])};
++     if (!*bb_config.mod_path) {
++       x_argv[n_x_args - 3] = 0; //remove -modulepath if not set
++--- a/src/bbsecondary.h
+++++ b/src/bbsecondary.h
++@@ -20,14 +20,6 @@
++  */
++ #pragma once
++ 
++-/**
++- * OpenSUSE: /usr/bin/X -> /var/lib/X11/X -> /usr/bin/Xorg
++- * Fedora, Arch Linux: /usr/bin/X -> /usr/bin/Xorg
++- * Ubuntu: /usr/bin/X is a custom binary doing authorization and then executes
++- *         /etc/X11/X -> /usr/bin/Xorg
++- */
++-#define XORG_BINARY "Xorg"
++-
++ /* PCI Bus ID of the discrete video card */
++ struct pci_bus_id *pci_bus_id_discrete;
++ 
diff --cc debian/rules
index fe4008f2bc3b615cd95b1e0caa2c92fbb1026ab2,0000000000000000000000000000000000000000..cd4f0844b50755ae3a8bee307516d53dc6d8b890
mode 100755,000000..100755
--- /dev/null
@@@ -1,31 -1,0 +1,110 @@@
-       dh $@ 
 +#!/usr/bin/make -f
 +# -*- makefile -*-
 +
 +# Uncomment this to turn on verbose mode.
 +#export DH_VERBOSE=1
 +
++get_variant            = $(word 1,$(subst _, ,$1))
++get_constraint                 = $(1:$(call get_variant,$1)%=%)
++
++nv_variant_Debian     += tesla-470_[amd64_arm64_ppc64el]
++
++nv_driver_Debian      += nvidia-driver_[!i386_!armhf]
++nv_driver_Debian      += $(foreach v,$(nv_variant_Debian),nvidia-$(call get_variant,$v)-driver$(call get_constraint,$v))
++nv_driver_Debian      += nvidia-driver-any
++
++nv_module_Debian      += nvidia
++nv_module_Debian      += nvidia-current
++nv_module_Debian      += $(foreach v,$(nv_variant_Debian),nvidia-$(call get_variant,$v))
++
++nv_version_Ubuntu     += 550_[amd64_arm64]
++nv_version_Ubuntu     += 545_[amd64_arm64]
++nv_version_Ubuntu     += 535_[amd64_arm64]
++nv_version_Ubuntu     += 535-server_[amd64_arm64]
++nv_version_Ubuntu     += 525_[amd64_arm64]
++nv_version_Ubuntu     += 525-server_[amd64_arm64]
++nv_version_Ubuntu     += 470_[amd64]
++nv_version_Ubuntu     += 470-server_[amd64]
++
++nv_driver_Ubuntu      += nvidia-driver-binary_[amd64_i386]
++nv_driver_Ubuntu      += $(foreach v,$(nv_version_Ubuntu),nvidia-driver-$(call get_variant,$v)$(call get_constraint,$v))
++
++nv_module_Ubuntu      += $(filter-out nvidia-driver-binary,$(foreach v,$(nv_driver_Ubuntu),$(call get_variant,$v)))
++
++
++VENDOR        := $(shell dpkg-vendor --derives-from Ubuntu && echo Ubuntu || echo Debian)
++
++bb_depends_Debian      =
++bb_depends_Ubuntu      = pciutils
++
++bbnv_depends_Debian    = glx-alternative-nvidia (>= 0.6.92)
++bbnv_depends_Ubuntu    =
++
++bb_backend_Debian      = primus-libs
++bb_backend_Ubuntu      = virtualgl | primus-libs
++
++MAINTSCRIPTS_GENERATED                 = $(MAINTSCRIPTS_GENERATED.$(VENDOR))
++MAINTSCRIPTS_GENERATED                += debian/bumblebee.conf
++MAINTSCRIPTS_GENERATED.Debian += debian/bumblebee-nvidia.postinst
++MAINTSCRIPTS_GENERATED.Ubuntu += debian/bumblebee-nvidia.postinst
++MAINTSCRIPTS_GENERATED.Ubuntu += debian/bumblebee-nvidia.postrm
++
++DPKG_EXPORT_BUILDFLAGS = 1
++export DEB_BUILD_MAINT_OPTIONS = hardening=+all
++include /usr/share/dpkg/default.mk
++
++export deb_systemdsystemunitdir = $(shell pkg-config --variable=systemdsystemunitdir systemd | sed s,^/,,)
++export deb_udevdir = $(shell pkg-config --variable=udevdir udev | sed s,^/,,)
++
 +%:
- override_dh_auto_configure:
- # Ubuntu and Debian's packaging of nvidia's proprietary driver differ greatly
- ifeq ($(shell dpkg-vendor --derives-from Ubuntu && echo yes),yes)
++      dh $@
 +
-               CONF_DRIVER_MODULE_NVIDIA=nvidia-current \
-               CONF_LDPATH_NVIDIA=/usr/lib/nvidia-current:/usr/lib32/nvidia-current \
-               CONF_MODPATH_NVIDIA=/usr/lib/nvidia-current/xorg,/usr/lib/xorg/modules
++override_dh_auto_configure: $(MAINTSCRIPTS_GENERATED)
++ifeq ($(VENDOR),Ubuntu)
 +      dh_auto_configure -- \
-               CONF_LDPATH_NVIDIA=/usr/lib/x86_64-linux-gnu/nvidia:/usr/lib/i386-linux-gnu/nvidia:/usr/lib/nvidia \
-               CONF_MODPATH_NVIDIA=/usr/lib/nvidia,/usr/lib/xorg/modules
++              --with-udev-rules=/$(deb_udevdir)/rules.d \
++              CONF_DRIVER_MODULE_NVIDIA=nvidia \
++              CONF_LDPATH_NVIDIA=/usr/lib/nvidia-current:/usr/lib32/nvidia-current:/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu \
++              CONF_MODPATH_NVIDIA=/usr/lib/nvidia-current/xorg,/usr/lib/xorg/modules \
++              CONF_PRIMUS_LD_PATH=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus \
++              CONF_XORG_BINARY=/usr/lib/xorg/Xorg
 +else
 +      dh_auto_configure -- \
++              --with-udev-rules=/$(deb_udevdir)/rules.d \
 +              CONF_DRIVER_MODULE_NVIDIA=nvidia \
- override_dh_auto_install:
-       dh_auto_install --destdir=debian/bumblebee/
++              CONF_LDPATH_NVIDIA=/usr/lib/x86_64-linux-gnu/nvidia:/usr/lib/i386-linux-gnu/nvidia:/usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu \
++              CONF_MODPATH_NVIDIA=/usr/lib/nvidia,/usr/lib/xorg/modules \
++              CONF_PRIMUS_LD_PATH=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus \
++              CONF_XORG_BINARY=/usr/lib/xorg/Xorg
 +endif
 +
- override_dh_strip:
-       dh_strip --dbg-package=bumblebee-dbg
++execute_after_dh_clean:
++      $(RM) $(MAINTSCRIPTS_GENERATED)
 +
 +override_dh_installinit:
 +      dh_installinit --name=bumblebeed
 +
++override_dh_bugfiles:
++      dh_bugfiles -A
++
++override_dh_gencontrol:
++      dh_gencontrol -- \
++              -V'bumblebee:Depends=$(bb_depends_$(VENDOR))' \
++              -V'nvidia:Depends=$(bbnv_depends_$(VENDOR)), $(subst _, ,$(foreach d,$(nv_driver_$(VENDOR)),$(d) |))' \
++              -V'bumblebee:backend=$(bb_backend_$(VENDOR))'
++
++debian/%: debian/%.$(VENDOR)
++      cp -a $< $@
++
++debian/bumblebee.conf: debian/rules
++      $(RM) $@
++      echo '# This file is installed by bumblebee, do NOT edit!' >> $@
++      echo '# to be used by kmod / module-init-tools, and installed in /etc/modprobe.d/' >> $@
++      echo '# or equivalent' >> $@
++      echo '' >> $@
++      echo '# do not automatically load nouveau as it may prevent nvidia from loading' >> $@
++      echo 'blacklist nouveau' >> $@
++      echo '' >> $@
++      echo '# do not automatically load nvidia as it'"'"'s unloaded anyway when bumblebeed' >> $@
++      echo '# starts and may fail bumblebeed to disable the card in a race condition.' >> $@
++      for module in $(nv_module_$(VENDOR)) ; do echo "blacklist $$module" >> $@ ; done
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9d6f29543df533b4bf15ef3ab951491c021dcfd2
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,6 @@@
++---
++include:
++  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
++
++variables:
++  SALSA_CI_COMPONENTS: 'main contrib non-free'
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..a18eacdb93432fa7154eadc9394f79aa32528cf6
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,4 @@@
++Bug-Database: https://github.com/Bumblebee-Project/Bumblebee/issues
++Bug-Submit: https://github.com/Bumblebee-Project/Bumblebee/issues/new
++Repository: https://github.com/Bumblebee-Project/Bumblebee.git
++Repository-Browse: https://github.com/Bumblebee-Project/Bumblebee
diff --cc debian/watch
index 721a8b6135953758507219059efd5359975ec1b5,0000000000000000000000000000000000000000..5076b459417b5755c25960e7217877441c2f9b19
mode 100644,000000..100644
--- /dev/null
@@@ -1,2 -1,0 +1,2 @@@
- version=3
++version=4
 +https://github.com/Bumblebee-Project/Bumblebee/tags .*/v?(\d.*)\.(?:tgz|tbz2|tar\.(?:gz|bz2|xz))