debian/0000755000000000000000000000000012262473252007173 5ustar debian/control0000644000000000000000000000527212262473252010604 0ustar Source: bumblebee Section: utils Priority: extra Maintainer: Debian NVIDIA Maintainers Uploaders: Aron Xu , Vincent Cheng , Yunqiang Su Build-Depends: debhelper (>= 9), libbsd-dev (>= 0.2.0), pkg-config, libx11-dev, libglib2.0-dev, help2man, dh-systemd (>= 1.4) Standards-Version: 3.9.5 Homepage: https://launchpad.net/~bumblebee Vcs-Git: git://anonscm.debian.org/pkg-nvidia/bumblebee.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-nvidia/bumblebee.git Package: bumblebee Architecture: linux-any Depends: ${shlibs:Depends}, ${misc:Depends}, bbswitch-dkms | bbswitch-source Recommends: virtualgl | primus Suggests: bumblebee-nvidia (= ${binary:Version}) Description: NVIDIA Optimus support for Linux Bumblebee is an effort to make NVIDIA Optimus enabled laptops work in 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. . It disables the discrete graphics card if no client is detected, and start 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 runs on the intergrated graphics. The ability to use discrete graphics depends on the driver: open source nouveau and proprietary nvidia. Package: bumblebee-nvidia Architecture: amd64 i386 Section: contrib/utils Depends: ${shlibs:Depends}, ${misc:Depends}, bumblebee (= ${binary:Version}), # proprietary NVIDIA packages in Debian nvidia-driver | nvidia-glx | nvidia-kernel-dkms | nvidia-kernel-amd64 | nvidia-kernel-686-pae | nvidia-kernel-486 | # proprietary NVIDIA packages in Ubuntu nvidia | nvidia-current | nvidia-current-updates | nvidia-driver-binary | nvidia-304 | nvidia-304-updates | nvidia-experimental-304 | nvidia-310 | nvidia-310-updates | nvidia-experimental-310 | nvidia-313 | nvidia-313-updates | nvidia-experimental-313 | nvidia-319 | nvidia-319-updates | nvidia-experimental-319 | nvidia-325 | nvidia-325-updates | nvidia-experimental-325 | nvidia-331 | nvidia-331-updates | nvidia-experimental-331 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. Package: bumblebee-dbg 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. debian/bumblebee.postinst0000644000000000000000000000421312262470436012723 0ustar #!/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 groupadd --system $BB_GROUP users=$(getent 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 # 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 ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac #DEBHELPER# exit 0 debian/bumblebee.bumblebeed.upstart0000644000000000000000000000334112262470436014630 0ustar # Upstart job for Bumblebee daemon description "Bumblebee supporting NVIDIA Optimus cards" author "Lekensteyn " # XXX: do we need to stop before / after a graphical DE like kdm? start on (login-session-start or desktop-session-start) stop on (desktop-shutdown) # restart in case it crashed for some reason respawn script libopts= # When the user installs a nvidia package that is unknown, # ignore the paths in bumblebee.conf and use detected ones if ! driver=$(grep -Po '^Driver=\K.*' /etc/bumblebee/bumblebee.conf) \ || [ -z "$driver" ] || [ "$driver" = "nvidia" ]; then # find LibraryPath setting of nvidia section libpath=$(awk -F[=:] '/^\[driver-nvidia\]/{d=1}/^LibraryPath=/{if(d){print $2;exit}}' \ /etc/bumblebee/bumblebee.conf) || true # pick the first available nvidia installation (not necessary # the latest, e.g. nvidia-current over nvidia-experimental-310) pkgname=$(ls -1d /usr/lib/nvidia*/libGL.so | cut -d/ -f4 | head -1) || true # When the default library path does not contain nvidia drivers, # it is possibly not installed. If no driver is installed (no # /usr/lib/nvidia-*), assume that the auto-detection will use # nouveau instead and do not override paths. if [ ! -e "$libpath/libGL.so" -a -n "$pkgname" ] && \ modprobe -nq "$pkgname"; then # assume nvidia driver even if nouveau is already loaded libopts="$libopts --driver nvidia" libopts="$libopts --driver-module $pkgname" libopts="$libopts --ldpath /usr/lib/$pkgname:/usr/lib32/$pkgname" libopts="$libopts --module-path /usr/lib/$pkgname/xorg,/usr/lib/xorg/modules" fi fi # don't use --daemon as Upstart gets confused by that. exec '/usr/sbin/bumblebeed' --use-syslog $libopts end script debian/bumblebee.bumblebeed.init0000644000000000000000000001067612262470436014102 0ustar #!/bin/sh ### BEGIN INIT INFO # Provides: bumblebeed # Required-Start: $local_fs $remote_fs $syslog # Required-Stop: $local_fs $remote_fs $syslog # Should-Start: kdm gdm lightdm nvidia-kernel # Should-Stop: kdm gdm lightdm nvidia-kernel # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Bumblebee supporting NVIDIA Optimus cards # Description: Daemon responsible for handling power management for # NVIDIA Optimus cards and handling optirun requests which # allows the discrete card to be used ### END INIT INFO # Author: Aron Xu # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC=bumblebeed # Introduce a short description here NAME=bumblebeed # Introduce the short server's name here DAEMON=/usr/sbin/bumblebeed # Introduce the server's location here DAEMON_ARGS="--daemon" # Arguments to run the daemon with PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # Exit if the package is not installed [ -x $DAEMON ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac : debian/README.Debian0000644000000000000000000000130712262470436011236 0ustar bumblebee for Debian/Ubuntu --------------------------- 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: https://launchpad.net/~bumblebee/+archive/stable -- Vincent Cheng Wed, 27 Feb 2013 01:07:57 -0800 debian/copyright0000644000000000000000000000247012262470436011132 0ustar Format: http://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 License: GPL-3.0+ Files: debian/* Copyright: 2011-2013 Peter Lekensteyn 2011-2013 Bruno Pagani 2012 Igor Urazov 2013 Aron Xu 2013 Vincent Cheng 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 . . On Debian systems, the complete text of the GNU General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". debian/bumblebee-nvidia.postinst0000644000000000000000000000360512262470436014177 0ustar #!/bin/sh # postinst script for bumblebee-nvidia # # see: dh_installdeb(1) set -e xconffile=/etc/bumblebee/xorg.conf.nvidia case "$1" in configure) # Ubuntu and Debian's packaging of nvidia's proprietary driver differ greatly # 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 # == Ubuntu specific section == # 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 else # == Debian specific section == # Repair GL on the intel display update-alternatives --force --set \ glx /usr/lib/mesa-diverted 2>/dev/null || true 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 ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac #DEBHELPER# exit 0 debian/changelog0000644000000000000000000000325012262473243011045 0ustar 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 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 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 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 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. -- Vincent Cheng Fri, 03 May 2013 03:04:38 -0700 debian/bumblebee.install0000644000000000000000000000020212262470436012500 0ustar debian/bumblebee/etc/bumblebee/* usr/share/bumblebee/default-conf/ scripts/systemd/bumblebeed.service lib/systemd/system/ debian/bumblebee.modprobe0000644000000000000000000000157112262470436012653 0ustar # installed by bumblebee-nvidia # do not automatically load nouveau as it may prevent nvidia from loading blacklist nouveau # do not automatically load nvidia as it's unloaded anyway when bumblebeed # starts and may fail bumblebeed to disable the card in a race condition. blacklist nvidia blacklist nvidia-current blacklist nvidia-current-updates # 304 blacklist nvidia-304 blacklist nvidia-304-updates blacklist nvidia-experimental-304 # 310 blacklist nvidia-310 blacklist nvidia-310-updates blacklist nvidia-experimental-310 # 313 blacklist nvidia-313 blacklist nvidia-313-updates blacklist nvidia-experimental-313 # 319 blacklist nvidia-319 blacklist nvidia-319-updates blacklist nvidia-experimental-319 # 325 blacklist nvidia-325 blacklist nvidia-325-updates blacklist nvidia-experimental-325 # 331 blacklist nvidia-331 blacklist nvidia-331-updates blacklist nvidia-experimental-331 debian/rules0000755000000000000000000000217712262470436010263 0ustar #!/usr/bin/make -f # -*- makefile -*- # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 %: dh $@ --with systemd 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_auto_configure -- \ 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 \ CONF_PRIMUS_LD_PATH=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus else dh_auto_configure -- \ CONF_DRIVER_MODULE_NVIDIA=nvidia \ 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 \ CONF_PRIMUS_LD_PATH=/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus:/usr/lib/primus:/usr/lib32/primus endif override_dh_auto_install: dh_auto_install --destdir=debian/bumblebee/ override_dh_installinit: dh_installinit --name=bumblebeed override_dh_strip: dh_strip --dbg-package=bumblebee-dbg debian/watch0000644000000000000000000000015312262470436010224 0ustar version=3 https://github.com/Bumblebee-Project/Bumblebee/tags .*/v?(\d.*)\.(?:tgz|tbz2|tar\.(?:gz|bz2|xz)) debian/bumblebee.postrm0000644000000000000000000000106112262470436012362 0ustar #!/bin/sh # postrm script for bumblebee # # see: dh_installdeb(1) set -e 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 ;; remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ;; *) echo "postrm called with unknown argument \`$1'" >&2 exit 1 ;; esac case "$1" in purge|remove|abort-install) ;; esac #DEBHELPER# exit 0 debian/bumblebee-nvidia.lintian-overrides0000644000000000000000000000015612262470436015750 0ustar bumblebee-nvidia: postinst-has-useless-call-to-ldconfig bumblebee-nvidia: postrm-has-useless-call-to-ldconfig debian/source/0000755000000000000000000000000012262470436010474 5ustar debian/source/format0000644000000000000000000000001412262470436011702 0ustar 3.0 (quilt) debian/bumblebee-nvidia.postrm0000644000000000000000000000216112262470436013634 0ustar #!/bin/sh # postrm script for bumblebee-nvidia # # see: dh_installdeb(1) set -e case "$1" in purge|remove|abort-install) # Ubuntu and Debian's packaging of nvidia's proprietary driver differ greatly # 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 # == Ubuntu specific section == # 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 else # == Debian specific section == # Restore the alternatives in case bumblebee is installed on a # non-Optimus system that requires the nvidia driver update-alternatives --force --auto glx 2>/dev/null || true fi ldconfig ;; upgrade|failed-upgrade|abort-upgrade|disappear) ;; *) echo "postrm called with unknown argument \`$1'" >&2 exit 1 ;; esac #DEBHELPER# exit 0 debian/bumblebee.triggers0000644000000000000000000000003212262470436012661 0ustar activate update-initramfs debian/compat0000644000000000000000000000000212262470436010372 0ustar 9