You are not logged in.
When I run the script that was posted on the Arch Linux website on 10 Dec 2015 (see https://www.archlinux.org/news/c-abi-change), it returns the lib32-mesa package. However, I am using the latest version of that package (11.1.2-1) from the official multilib repo, which was actually updated in February of this year. Is it possible that the offical repo has a version of the lib32-mesa package which needs to be rebuilt with the new ABI?
[tony@laptop ~]$ more script.sh
#!/bin/bash
while read pkg; do
mapfile -t files < <(pacman -Qlq $pkg | grep -v /$)
grep -Fq libstdc++.so.6 "${files[@]}" <&- 2>/dev/null && echo $pkg
done < <(pacman -Qmq)
[tony@laptop ~]$ bash script.sh | grep lib32-mesa
lib32-mesa
[tony@laptop ~]$ pacman -Q lib32-mesa
lib32-mesa 11.1.2-1
Offline
Look at what the script does. It simply tells you what is linked to libstdc++, not what is using the old ABI.
Offline
Hmm..but the statement on that page says: "You can get a list of packages to rebuild using the following shell script." This made me think that the resulting list would be a list of the packages which would need to be rebuilt... Do you know how I might be able to get an actual list of just the packages which were built using the old ABI (and therefore do truly need to be rebuilt)? Thanks.
Offline
Is it possible that the offical repo has a version of the lib32-mesa package which needs to be rebuilt with the new ABI?
No. Not really, unless there was a major screw up.
The lib32-mesa package, and nearly everything else in the repos, needed to be rebuilt with the new ABI. But they all were, quite some time ago.
the statement on that page says: "You can get a list of packages to rebuild using the following shell script."
Perhaps it is a bit ambiguous. That is a list of packages that need to be rebuilt against the new ABI, yes. They all needed to be rebuilt, and all the once in the official repos were. All you need to be concerned with is anything on that list that you have from the AUR - you then need to rebuild it yourself (if you haven't already).
EDIT: that announcement you link to does clearly say that it applies to "non-repo" packages. You are referring to a package in one of the supported repos. So it does not apply.
EDIT 2: something doesn't add up. That script takes a package list input from pacman -Qm, so if you're lib32-mesa is actually from the multilib repo as you claim, it couldn't possibly be listed in the output of that script. Are you sure you have multilib enabled?
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Offline
Thanks for the info, Trilby. In response to EDIT 2: I installed lib32-mesa from the multilib repo as a dependency for android-studio (an AUR package). After installing lib32-mesa, I disabled the multilib repo as I had only needed it for a handful of lib32 packages (all dependencies of android-studio). Does that explain why it appears in the output of the script?
Offline
Yes, if a repo where a package is installed from is removed and the package is therefore no longer contained in one then it always becomes a manual package, which usually means (but not in your case) an AUR package. As advice you should keep the multilib repo enabled even if you think "you have what you need out of it" for the case when what you have is inevitably updated and you might not have realized it.
Offline
which usually means (but not in your case) an AUR package.
I disagree with this part. It does become equivalent to an AUR package. Without the repo enabled, the user would be responsible for building/updating it themselves. For this specific question it is not an issue as the package has been rebuilt since the ABI change, but this package is now just like any other locally installed package (e.g., AUR package).
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Offline
disagree with this part. It does become equivalent to an AUR package. Without the repo enabled, the user would be responsible for building/updating it themselves. For this specific question it is not an issue as the package has been rebuilt since the ABI change, but this package is now just like any other locally installed package (e.g., AUR package).
Except...
When you say to yourself, "No problem, I'll just clone that package from the AUR. Oh, wait... Oh, it must not have migrated from the old AUR. Okay, I'll check the archive. Wait, Whickey Tango Foxtrot, over?"
Last edited by ewaller (2016-03-24 20:30:56)
Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
Sometimes it is the people no one can imagine anything of who do the things no one can imagine. -- Alan Turing
---
How to Ask Questions the Smart Way
Offline
I didn't say he could use an existing AUR package to build it. Just that he'd have to build it himself.
The AUR is just a collection of build scripts. Users either get packages from the repos, or build them with makepkg. Whether or not a a ready made PKGBUILD exists in the AUR does not affect that dichotomy. (There is a PKGBUILD in the ABS).
"UNIX is simple and coherent..." - Dennis Ritchie, "GNU's Not UNIX" - Richard Stallman
Offline
Of course I know that. I also know that even I don't always remember how my system arrived at its current state. I could see myself installing something, then months later wonder why I had a particular repo enabled and deciding to drop it. Time passes. Then find a package that need updating and wonder how it got there. I thought your analysis was brilliant and when I read tony5429's response, I thought that could well have been me. This thread will alter my thinking when troubleshooting in the future.
Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
Sometimes it is the people no one can imagine anything of who do the things no one can imagine. -- Alan Turing
---
How to Ask Questions the Smart Way
Offline
Ah! Yes, after re-enabling multilib, lib32-mesa no longer appears in the output of that script. That said, these two AUR packages continue to show up even after rebuilding. Is there a way I can confirm that these two packages are in fact using the new ABI? Thanks.
[tony@laptop ~]$ bash script.sh
android-sdk
android-studio
Offline
Trilby, ewaller, what have I started?! lol.
Offline
Ah! Yes, after re-enabling multilib, lib32-mesa no longer appears in the output of that script. That said, these two AUR packages continue to show up even after rebuilding. Is there a way I can confirm that these two packages are in fact using the new ABI? Thanks.
[tony@laptop ~]$ bash script.sh android-sdk android-studio
You can try to rebuild the packages just to be sure and if you continue to receive the warning after installing them again and they work anyway then it can be safely ignored for now. The rebuild just means that all official packages have moved over to the new ABI. The old ABI is still there and as long as a program consistently uses only the old ABI without trying to mix it with the new ABI then it will continue to work.
Offline
...and if you continue to receive the warning after installing them again and they work anyway then it can be safely ignored for now.
Again, read the script. The packages will always show up.
Offline
I'm not familiar with the exact packages but I said that with the understanding that if they were just repackaging a binary program from another source then those binaries could have been compiled with the old ABI and do not use the new so they would continue to work on Arch.
Edit: and the binaries, if it is, dependencies must also have the old ABI available.
Last edited by headkase (2016-03-24 22:32:46)
Offline