====== Sestavení debian balíčků pro proprietární nvidia driver ======
I want to try nvidia feature "Initial support of G-Sync compatible monitors". It was introduced in 418.30 BETA driver. I am using GNU/Debian testing/unstable distribution and there is 390.87 and 410.93 only now. In experimental, there is 415.27. I found that it is possible to create newer package from git, but there is missing workflow in debian [[https://wiki.debian.org/NvidiaGraphicsDrivers#Building_newer_releases_from_GIT|wiki]]. I suppose that primary [[https://salsa.debian.org/anbe/nvidia-graphics-drivers-preview2|git repo is maintained by anbe]].
===== Příprava systému =====
* instalace chybějících balíčků
apt-get install libdistro-info-perl git-buildpackage git-lfs quilt
===== Příprava zdrojových kódů =====
* stažení zdrojových kódů
git clone https://salsa.debian.org/anbe/nvidia-graphics-drivers-preview2.git
* přepnutí do požadované branch
cd nvidia-graphics-drivers-preview2/
git branch -a
git checkout 418-preview
===== Import nového upstream release =====
* Zjištění dostupných verzí
$ uscan --report
uscan: Newest version of nvidia-graphics-drivers on remote site is 418.43, local version is 418.30
uscan: => Newer package available from
https://download.nvidia.com/XFree86/Linux-x86_64/418.43/NVIDIA-Linux-x86_64-418.43.run
* Aktualizace chnagelogu
* changelog je potřeba commitovat, extrahuje se z něj verze
debchange --distribution UNRELEASED --newversion 418.43-1
* Stažení tarballu ze stránek nvidia
debian/rules get-orig-source
* Nahrání tarbalu na správné místo
mkdir -p ../tarballs-nvidia-graphics-drivers/418.43
cp *.orig*.tar.gz ../tarballs-nvidia-graphics-drivers/418.43/
* při buildu se mohou detekovat další změny a je třeba je doplnit, například:
+ cmp -s debian/nv-readme.ids nv-readme.ids
+ diff -u debian/nv-readme.ids nv-readme.ids
--- debian/nv-readme.ids 2019-03-11 07:11:22.440234714 +0100
+++ nv-readme.ids 2019-03-11 07:11:28.508124795 +0100
@@ -283,3 +283,4 @@
10DE174D
10DE174E
10DE179C
+10DE2182
+ true
+ : *** Supported PCI IDs have changed. See diff above. Aborting. ***
+ exit 1
===== Buildování =====
* používá se gbp (git build package)
* musí se zadat správná branch, jinak se nespustí
* pokud se provedou lokální změny jako například import upstream, tak je třeba přidat volbu ''--git-ignore-new''
* je lepší provést ale commit, protože build používá pouze commitované soubory
* buildpackage se snaží stáhnout [[https://salsa.debian.org/nvidia-team/tarballs-nvidia-graphics-drivers.git|git repo s tarbally]] do ''../tarballs-nvidia-graphics-drivers''
gbp buildpackage --git-debian-branch=418-preview
* pro buildování jiné architektruy než je v systému se používá
* ''--git-arch=i386''
* ''--git-pbuilder''
* pokud neexistuje prostředí, musí se nejprve vytvořit
$ gbp buildpackage --git-debian-branch=418-preview --git-arch=i386 --git-pbuilder
...
gbp:info: Performing the build
Base directory /var/cache/pbuilder/base-sid-i386.cow does not exist
gbp:error: 'git-pbuilder' failed: it exited with 1
DIST=buster ARCH=i386 git-pbuilder create
# DIST=sid ARCH=i386 git-pbuilder create
===== Vyřešeno =====
==== Q: where %version is coming from? ====
* stál jsem si repo a zkusil aktualizovat upstream
* měla tam být verze 418.43, ale furt se snažil stahovat původní 418.30
gbp:info: Tarballs 'nvidia-graphics-drivers_418.30.orig.tar.gz, nvidia-graphics-drivers_418.30.orig-amd64.tar.gz' not found at '../tarballs-nvidia-graphics-drivers/418.30'
gbp:error: upstream/418.30 is not a valid treeish
* where %version is coming from?
* Is it [[http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.import.upstream-git.html|taken from changelog]]?
grep -R "418\." *
debian/changelog:nvidia-graphics-drivers (418.43-1) UNRELEASED; urgency=medium
debian/changelog: * New upstream beta 418.43 (2019-01-30).
* bere se to fakt z changelogu, ale musí být commitovaný, jinak bere předchozí verzi :)
==== Q: how to create packages with 32 bit compatible libraries? ====
* Nvidia drops support for 32 bit architecture. Version 390.xx is the last one with 32 bit only tarball released.
* As far as I know, 32 bit compatible libraries should be still included in 64 bit tarball, but git project creates 64 bit deb packages only.
* According to debian wiki (svn instructions), i386 deb packages should be created by setting target arch to i386
* I have found similar option --git-arch=i386,. but it seems to do nothing :(
* musí se použít ještě další přepínač, aby fungoval build jiné architektury
* vypadá to, že umí udělat 32 bit balíčky i z toho 64 bit tarballu
==== Konflikt s libglvnd ====
* zkusil jsem build větve 390 a skončilo chybou
pkg-checkbuilddeps: error: Build conflicts: libglvnd-dev
* je to opraveno commitem [[https://salsa.debian.org/anbe/nvidia-graphics-drivers-preview2/commit/832db072727c2b4c64a02bdbab8106164c83f367|832db072727c2b4c64a02bdbab8106164c83f367]]
* aktuálně je mergnuté do větví: 390-buster
* není v: master, 390xx/master, 390xx/stretch-backport
===== Testování =====
* dnes do Debian experimental přibyli baličky 418.43
* chybí tam ale balíček nvidia-settings
* podařilo se mi spustit takto:
cd /usr/src/nvidia-git/build-area/nvidia-graphics-drivers-418.43.obsolete.1552863428.647153/NVIDIA-Linux-x86_64-418.43
./nvidia-settings -I ./
* postup k zapnutí https://www.phoronix.com/scan.php?page=article&item=gsync-compatible-linux&num=1
* dojmy podobné jako ve Windows, divné trhání
* našel jsem radu, že když to začne dělat, tak stačí monitor vypnout/zapnout
* našel jsem nějaký seznam z testovaní g-sync compatible monitorů
* https://io.mt/nvidia-gsync-freesync-supported-monitors/
* LG 27UD58-B - 40-60 Hz - No flickering but heavy tearing at 40 fps. stuttering at 50, from 60 up everything seems normal
===== Zdroje =====
* README v git
* https://salsa.debian.org/anbe/nvidia-graphics-drivers-preview2/blob/master/debian/README.source
* Debian wiki
* https://wiki.debian.org/NvidiaGraphicsDrivers#Building_newer_releases_from_GIT
* Building Debian Packages with git-buildpackage
* http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html
* debian wiki PackagingWithGit
* https://wiki.debian.org/PackagingWithGit
* git buildpackage home
* https://honk.sigxcpu.org/piki/projects/git-buildpackage/
* Using Git for Debian Packaging
* https://www.eyrie.org/~eagle/notes/debian/git.html
* man gbp-buildpackage
* https://manpages.debian.org/testing/git-buildpackage/gbp-buildpackage.1.en.html
* cowbuilder
* https://wiki.debian.org/cowbuilder
* verze nvdia ovladačů v debian
* https://packages.debian.org/search?keywords=nvidia-driver&searchon=names&suite=all§ion=all
* Nvidia oficiální seznam ovladačů
* https://www.nvidia.com/Download/Find.aspx?lang=en-us
* debian nvidia graphics drivers tracker
* https://tracker.debian.org/pkg/nvidia-graphics-drivers