Please read this before reporting a bug:
https://wiki.archlinux.org/title/Bug_reporting_guidelines
Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.
REPEAT: Do NOT report bugs for outdated packages!
https://wiki.archlinux.org/title/Bug_reporting_guidelines
Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.
REPEAT: Do NOT report bugs for outdated packages!
FS#31389 - [nvidia-utils] Building fails in a directory with dots and numbers
Attached to Project:
Arch Linux
Opened by Kristian Laakkonen (krisse7) - Sunday, 02 September 2012, 16:23 GMT
Last edited by Sven-Hendrik Haase (Svenstaro) - Sunday, 29 June 2014, 15:06 GMT
Opened by Kristian Laakkonen (krisse7) - Sunday, 02 September 2012, 16:23 GMT
Last edited by Sven-Hendrik Haase (Svenstaro) - Sunday, 29 June 2014, 15:06 GMT
|
DetailsDescription:
Building nvidia-utils fails when trying to build the package in a directory whose path contains dots and numbers. This is because when version numbers are stripped from .so files when making symbolic links, everything after the first dot and number is removed (in this case part of the directory name). The line 30 in PKGBUILD is the culprit: [[ -e "${_soname/.[0-9]*/}" ]] || ln -s "$(basename "${_soname}")" "${_soname/.[0-9]*/}" Maybe something like this could be used instead to remove the numbers only from the end: linkname="${_soname}" # if the path component after last slash contains .so, remove everything after it [[ "${linkname##*\/}" == *.so.* ]] && linkname="${_soname%.so.*}.so" [[ -e "${linkname}" ]] || ln -s "$(basename "${_soname}")" "${linkname}" Looks like the package lib32-nvidia-utils could also be affected by this. Additional info: * nvidia-utils 304.43-1 Steps to reproduce: $ mkdir nvidia-utils-304.43 && cd nvidia-utils-304.43 $ wget "https://projects.archlinux.org/svntogit/packages.git/plain/trunk/PKGBUILD?h=packages/nvidia-utils" -O PKGBUILD $ makepkg -s ... ==> Starting package_nvidia-utils()... ln: failed to create symbolic link '/home/user/temp/nvidia-utils-304': File exists ==> ERROR: A failure occurred in package_nvidia-utils(). Aborting... |
This task depends upon
Closed by Sven-Hendrik Haase (Svenstaro)
Sunday, 29 June 2014, 15:06 GMT
Reason for closing: Implemented
Additional comments about closing: If there still is a problem, please reopen.
Sunday, 29 June 2014, 15:06 GMT
Reason for closing: Implemented
Additional comments about closing: If there still is a problem, please reopen.
mkdir this.dir.has.dots
cd !$
ABSROOT=. abs extra/nvidia-utils
cd !$
makepkg
Edit: Sorry, it's not gone, I just missed it.
Without patch I get:
lrwxrwxrwx 1 root root 23 24. Jun 23:24 /usr/lib/libnvidia-tls.so -> libnvidia-tls.so.337.25
-rwxr-xr-x 1 root root 13K 24. Jun 23:24 /usr/lib/libnvidia-tls.so.337.25
with patch I get:
lrwxrwxrwx 1 root root 23 24. Jun 23:24 /usr/lib/libnvidia-tls.so.337 -> libnvidia-tls.so.337.25
-rwxr-xr-x 1 root root 13K 24. Jun 23:24 /usr/lib/libnvidia-tls.so.337.25
The first line should create the soname link (e.g. libnvidia-cfg.so.1):
[[ -e "${_soname}" ]] || ln -s $(basename "${_lib}") "${_soname}"
And the latter one the base link (libnvidia-cfg.so):
[[ -e "${_base}" ]] || ln -s $(basename "${_soname}") "${_base}"
E: Oh, did you get that last description as if "but still, it works, so I refuse to change it"? I actually was just trying to be funny, because this was the second time I had to edit it.