Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
GCC 5.3 fallout - or 'emerge now fails - halp!'
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Documentation, Tips & Tricks
View previous topic :: View next topic  
Author Message
dufeu
l33t
l33t


Joined: 30 Aug 2002
Posts: 924
Location: US-FL-EST

PostPosted: Thu Feb 18, 2016 7:05 pm    Post subject: GCC 5.3 fallout - or 'emerge now fails - halp!' Reply with quote

As many of you already know, gentoo's release of the gcc-5.3.0 package now defaults to the new C++ ABI by default. To be absolutely clear, this is a copy of the gentoo official news item:
Code:
2015-10-22-gcc-5-new-c++11-abi
  Title                     GCC 5 Defaults to the New C++11 ABI
  Author                    Mike Frysinger <vapier@gentoo.org>
  Posted                    2015-10-22
  Revision                  2

GCC 5 uses the new C++ ABI by default.  When building new code, you might run
into link time errors that include lines similar to:
...: undefined reference to '_ZNSt6chrono12steady_clock3nowEv@GLIBCXX_3.4.17'

Or you might see linkage failures with "std::__cxx11::string" in the output.

These are signs that you need to rebuild packages using the new C++ ABI.
You can quickly do so by using revdep-rebuild (from gentoolkit).

For gentoolkit-0.3.1 or higher:
# revdep-rebuild --library 'libstdc++.so.6' -- --exclude gcc

For previous versions of gentoolkit:
# revdep-rebuild --library 'libstdc\+\+\.so\.6' -- --exclude gcc

For more details, feel free to peruse:
https://developerblog.redhat.com/2015/02/05/gcc5-and-the-c11-abi/
https://blogs.gentoo.org/blueness/2015/03/10/the-c11-abi-incompatibility-problem-in-gentoo/

If you follow the instructions given in the news announcement, everything should {eventually) rebuild to completion.

This assumes if you're lucky enough to live in The Ideal World.

I have 4 wildy different gentoo based systems. {from 'uname -a'} One is x86_64 AMD A10-7850K. One is i686 Intel(R) Atom(TM). One is i686 Intel(R) Pentium(R) 4. The last one is i686 AMD A10-7850K. In other words, I have an AMD64, Netbook, old Dell workstation and a QEMU box. One of these is bound to give me problems during any relatively major upgrade. This time, the old Dell box refused to complete the rebuilds. The other 3 boxes all completed their rebuilds successfully.

So what happens if
Code:
revdep-rebuild --library 'libstdc++.so.6' -- --exclude gcc
doesn't work for you?

You'll still have a working 'puter so life isn't a disaster. On the other hand, your
Code:
emerge @world
will no longer go to completion. In addition to the link time errors and linkage failures noted in the above news notice, other seemingly random emerge failures are also possible. Because this is true, it wastes everybody's time end efforts to report any further emerge 'bugs' you may encounter.

Your first order of business is to complete the required rebuilds. This is an absolute requirement. You really don't want to be one of those people reporting a bug in a package emerge because your libstdc++.so.6 rebuilds haven't completed.

I tend to take a very simple, brute force, hands on approach to problems like this so my instructions are not elegant. They are, I hope, clear and understandable both to follow and as to why they work.

Let's look again at the rebuild instructions:
Code:
revdep-rebuild --library 'libstdc++.so.6' -- --exclude gcc

There are two different tasks this instruction will accomplish.
  1. Select all the installed packages which require libstdc++.so.6 to build.

  2. Run 'emerge' on all the selected packages {excluding gcc itself}.

There are two problems with the above command:
  1. Running the command again always starts at the beginning. There is no intelligence in the command to ignore packages which have already been successfully rebuilt using the new gcc-5.3. If you've already tried running the command again, you already know this won't work.

  2. The selected list is in a 'human unfriendly' form. Don't worry. These instructions will show you how to make the list human friendly and managable.

I've assumed you've been running your emerge/rebuild commands in a terminal like xterm or konsole. All my further instructions are based on using konsole to run commands and on using kate as my specialised editor. You'll need to adjust these instructions to match the tools you use.

Step One: Run the Rebuild Command

Yes. We're going to run the rebuild command one more time. But, we're going to modify it. Run the modified rebuild command:
Code:
revdep-rebuild --library 'libstdc++.so.6' -- --exclude gcc --pretend
Assuming the term program you're using has at least 1000 lines of scrollback capability {often the default}, you'll have a number of messages from 'revdep-rebuild' and 'emerge' which will be of interest and none of the lines should have exceeded the scrollback limit.

For my problem machine, I had 345 packages needing to be rebuilt. All my output from the 'revdep-rebuild' and 'emerge' commands fit within the default scrollback. If your output exceeded your term's scrollback limit, increase the limit and try again.

There will be 3 parts to the output.

The first part will be informational and warning messages from 'revdep-rebuild'. "ebuild not found" warning messages can be safely ignored for now. We will verify these later. Example:
Code:
 * This is the new python coded version
 * Please report any bugs found using it.
 * The original revdep-rebuild script is installed as revdep-rebuild.sh
 * Please files bugs at: https://bugs.gentoo.org/
 * Collecting system binaries and libraries
 * Checking dynamic linking consistency
 * Assign files to packages
        * Warning: "kde-apps/ksnapshot-15.08.3" ebuild not found..
        * Warning: "dev-qt/designer-5.5.1" ebuild not found..
        * Warning: "dev-qt/qtquick1-5.5.1" ebuild not found..
        * Warning: "dev-qt/qtwebkit-5.5.1" ebuild not found.

The second part is the 'emerge' command to be executed by 'revdep-rebuild'. This is the 'human unfriendly' portion of the output. In the Example, I've truncated everything past the first selected package. We only need to see the 'emerge' command itself and to see it's selected options. The actual resulting output line for 345 packages was over 10,000 characters. Example:
Code:
emerge --exclude gcc --pretend --oneshot --complete-graph=y kde-apps/kdepimlibs:4/4.14 ..

The third part of the output is generated from the executed 'emerge' command. This is what we will need to continue further. Example:
Code:
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-qt/qtchooser-0_p20151008
[ebuild   R    ] media-libs/ilmbase-2.1.0
[ebuild   R    ] media-libs/webrtc-audio-processing-0.1-r1
[ebuild   R    ] dev-util/gperf-3.0.4
[ebuild   R    ] dev-util/cppunit-1.13.2-r2
..
[ebuild   R    ] lxqt-base/lxqt-session-0.10.0
[ebuild   R    ] lxqt-base/lxqt-notificationd-0.10.0
[ebuild   R    ] app-text/aspell-0.60.6.1-r2

Leaving the open term session with it's rebuild output aside, open the kate {or equivalent} editor to edit a new file. The reason for using kate is we're going to make use of it's "Block Selection Mode" functionality. Which editor you use is entirely up to you so long as you achieve the same results.

Go back to the open term session and select&cut with your mouse all the packages that the emerge command listed. Example:
Code:
..
[ebuild   R    ] kde-apps/gwenview-4.14.3  USE="-semantic-desktop*"
[ebuild   R    ] kde-apps/okular-15.08.3-r1
[ebuild   R    ] kde-apps/kcontrol-15.08.3
[ebuild   R    ] kde-apps/kqtquickcharts-4.14.3
[ebuild   R    ] kde-base/plasma-workspace-4.11.22
[ebuild   R    ] kde-apps/kdeartwork-styles-15.08.3
[ebuild   R    ] kde-base/klipper-4.11.22
[ebuild   R    ] kde-apps/konq-plugins-15.08.3
[ebuild   R   *] media-video/aegisub-9999  USE="uchardet%*"
[ebuild   R    ] kde-base/systemsettings-4.11.22
[ebuild   R    ] kde-apps/nsplugins-15.08.3
[ebuild   R    ] kde-apps/artikulate-4.14.3
[ebuild   R    ] kde-base/kdeplasma-addons-4.14.3
[ebuild   R    ] kde-apps/ktouch-4.14.3
[ebuild   R    ] lxqt-base/lxqt-session-0.10.0
[ebuild   R    ] lxqt-base/lxqt-notificationd-0.10.0
[ebuild   R    ] app-text/aspell-0.60.6.1-r2

Switch to your open session of kate and paste the list of packages into it. Now click on Edit --> Block Selection Mode.

The output from 'emerge' has the first 18 characters of every line fixed to display information about a package. What we're want to do is select in a single block the first 18 characters of each line for all the packages at one time and replace them with an '=' sign. Example of selected block:
Code:
..
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R   *]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]
[ebuild   R    ]

After replacement:
Code:
..
=kde-apps/ffmpegthumbs-15.08.3
=kde-apps/baloo-widgets-4.14.3
=kde-base/powerdevil-4.11.22
=kde-apps/thumbnailers-15.08.3
=kde-apps/dolphin-4.14.3-r1
=kde-apps/kdeartwork-kscreensaver-15.08.3
=kde-base/kmenuedit-4.11.22
=kde-apps/gwenview-4.14.3  USE="-semantic-desktop*"
=kde-apps/okular-15.08.3-r1
=kde-apps/kcontrol-15.08.3
=kde-apps/kqtquickcharts-4.14.3
=kde-base/plasma-workspace-4.11.22
=kde-apps/kdeartwork-styles-15.08.3
=kde-base/klipper-4.11.22
=kde-apps/konq-plugins-15.08.3
=media-video/aegisub-9999  USE="uchardet%*"
=kde-base/systemsettings-4.11.22
=kde-apps/nsplugins-15.08.3
=kde-apps/artikulate-4.14.3
=kde-base/kdeplasma-addons-4.14.3
=kde-apps/ktouch-4.14.3
=lxqt-base/lxqt-session-0.10.0
=lxqt-base/lxqt-notificationd-0.10.0
=app-text/aspell-0.60.6.1-r2

We still need to do a little bit of editing.
From the 'revdep-rebuild' warnings, we can see matching lines in our 'emerge' ouput. We need to edit these lines in our list. We also need to edit all lines which have USE="some-use-flag" as well. Examples:
Code:
=kde-apps/ksnapshot-15.08.3-r1 [15.08.3]
=dev-qt/designer-5.5.1-r1 [5.5.1]
=kde-apps/gwenview-4.14.3  USE="-semantic-desktop*"
=media-video/aegisub-9999  USE="uchardet%*"
=dev-qt/qtwebkit-5.5.1-r1 [5.5.1] USE="jit%*"

We want to remove everything after and including the first space in these lines like this:
Code:
=kde-apps/ksnapshot-15.08.3-r1
=dev-qt/designer-5.5.1-r1
=kde-apps/gwenview-4.14.3
=media-video/aegisub-9999
=dev-qt/qtwebkit-5.5.1-r1 [5.5.1]

Where there is a version number in brackets tells you where the pretend 'emerge' wanted to upgrade that version of the package. A USE flag is where the pretend 'emerge' tells you that portage is adding or removing a new/old portage default USE flag for that package. These are purely informational from the pretend 'emerge' output and are not valid portage atoms.

After final edits, save your list. In my case, I named my list "gcc.cleanup".

Let's quickly revisit the generated 'emerge' command:
Code:
emerge --exclude gcc --pretend --oneshot --complete-graph=y ..

The list you just edited and saved includes all the packages that need to be rebuilt as determined by the options: "--library 'libstdc++.so.6'", "--exclude gcc" and "--complete-graph=y". Further, the list is sorted in the order in which portage believes most correct. You want to 'emerge' only the packages on this list in the order given. To do this, execute:
Code:
cat your.saved.list | xargs emerge -1

My real life Example:
Code:
cat gcc.cleanup | xargs emerge -1

When your rebuilds stop, you'll be able to determine exactly the problem package or other reason, figure out and resolve that issue, edit your list down to start where it stopped and continue from there.

Whatever problem you encounter with completing your required gcc-5.3 ebuilds is something you have to get resolved elsewhere. This post will only give you the tools you need so that you don't loose the progress you make as you go along.

Good luck!

Coda - on the issue of why this particular pc couldn't complete it's gcc-5.3 ebuilds ..

My problem machine stopped because it's a POS. No. I mean that really. It has a known hardware issue where the bottom line is that when memory/data transfer bandwidth is saturated, it {derogatory illogical action of your choice} and then gives me a segfault. I use this machine as a test bed/learning unit. I keep nothing on it which I don't have backed up elsewhere or that I care about. It's a cheap Foxconn motherboard manufactured for Dell using the Intel (of course) chipset. It's actually a warranty replacement motherboard dating from the 'exploding motherboard capacitors' era. The lspci results are:
Code:
00:00.0 Host bridge: Intel Corporation 82865G/PE/P DRAM Controller/Host-Hub Interface (rev 02)
00:01.0 PCI bridge: Intel Corporation 82865G/PE/P AGP Bridge (rev 02)
00:06.0 System peripheral: Intel Corporation 82865G/PE/P Processor to I/O Memory Interface (rev 02)
00:1d.0 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (rev 02)
00:1d.1 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (rev 02)
00:1d.2 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (rev 02)
00:1d.3 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (rev 02)
00:1d.7 USB controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2)
00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801EB (ICH5) SATA Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 02)
00:1f.5 Multimedia audio controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (rev 02)
01:00.0 VGA compatible controller: NVIDIA Corporation NV44A [GeForce 6200] (rev a1)
02:0c.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)

Everytime I saturate it's internal data/memory tranfer capabilities, I risk a segfault. It's not the memory sims. I've tried multiple sets, multiple brands and it's the same behavior every time. I keep it because it's a good learning/testing tool. Among other things, I gained experience running a btrfs RAID5 (6 devices) storage pool over encrypted devices.

If you're having problems running major updates like the gcc-5.3 rebuilds to completion, don't forget to consider your hardware too.

To get around this PC's issues, I had to individually emerge select packages:
Code:
MAKEOPTS='-j1' emerge -1 =problem.package-1.2.3
and not run anythig else at the same time.
_________________
People whom think M$ is mediocre, don't know the half of it.
Back to top
View user's profile Send private message
khayyam
Watchman
Watchman


Joined: 07 Jun 2012
Posts: 6227
Location: Room 101

PostPosted: Thu Feb 18, 2016 11:55 pm    Post subject: Re: GCC 5.3 fallout - or 'emerge now fails - halp!' Reply with quote

dufeu wrote:
There are two problems with the above command:
  1. Running the command again always starts at the beginning. There is no intelligence in the command to ignore packages which have already been successfully rebuilt using the new gcc-5.3. If you've already tried running the command again, you already know this won't work.

dufeu ... it's only a problem if you're not using the capabilities on offer. As you are already doing with '-- --exclude' parameters can be passed to emerge and so '--resume --skipfirst' can be used to pickup where the emerge left off. You might also add '--keep-going=y'. The '--' signifies the end of command options, and so what follows isn't taken to be an option to revdep-rebuild, they end up getting passed to emerge.

dufeu wrote:
  1. The selected list is in a 'human unfriendly' form. Don't worry. These instructions will show you how to make the list human friendly and managable.

I'm quite sure you couldn't provide some concrete description of what exactly might constitute "friendly" ITR, this reads to me the kind of vague flotsam born of "interface design", and begs the question of what sort of human is it that such designers have in mind. That's easy to answer, a inverted user, one who actually isn't doing something that qualifies as "use", and acquiring skill in the process, but is something of a abstraction that interface designers can then mould into whatever particular shape they please (or that happens to suit certain market trends, and so sell units, services, etc).

This whole "cut & paste into a GUI text editor" is indicative of such a "use", you are adopting the metaphors of "usability" that not only make things more complicated, but block the path to gaining some understanding of what "use" might be made of the OS (and how that OS differs from the particular notion of "usability" developed by Apple, et al).

So, here's something far, far, simpler ...

Code:
# revdep-rebuild --library 'libstdc++.so.6' -- --exclude gcc --pretend | awk '/^\[/{print "="$4}' > output

... yes, that requires a little knowledge/skill ... but that is the outcome of "use". Use conditions the acquisition of knowledge/skill and is not something that can be worked around by abstracting the user into a hypothesis of incapacity (that in fact has the opposite effect ... the user forever being beholden to the particulars of the use case that "usability" engenders).

Sorry to go on, but its an important point to get across, particularly as the meme of usability, and "user friendliness", seem to be very much in the driving seat wrt the entire domain of computation (even the small corner that we inhabit).

best ... khay
Back to top
View user's profile Send private message
dufeu
l33t
l33t


Joined: 30 Aug 2002
Posts: 924
Location: US-FL-EST

PostPosted: Sat Feb 20, 2016 3:05 am    Post subject: Re: GCC 5.3 fallout - or 'emerge now fails - halp!' Reply with quote

First, thank you for replying! ;)

I always find it difficult to edit my own writing so your points are appreciated. I've commented a few places to clarify what I was trying to accomplish.
khayyam wrote:
dufeu wrote:
There are two problems with the above command:
  1. Running the command again always starts at the beginning. There is no intelligence in the command to ignore packages which have already been successfully rebuilt using the new gcc-5.3. If you've already tried running the command again, you already know this won't work.

dufeu ... it's only a problem if you're not using the capabilities on offer. As you are already doing with '-- --exclude' parameters can be passed to emerge and so '--resume --skipfirst' can be used to pickup where the emerge left off. You might also add '--keep-going=y'. The '--' signifies the end of command options, and so what follows isn't taken to be an option to revdep-rebuild, they end up getting passed to emerge.

I wrote this for my concept of what a typical gentoo enduser might be expected to know. This means I expect such a user to read the news message and to follow it's instructions. I don't expect such an enduser to understand what '--' would signify though I believe they should know this! From experience watching endusers in action, when something doesn't work the first time, they'll usually try, try again. More to the point, they'll obsessively make sure to follow instructions exactly in case they didn't do it right the first time.

The '--resume --skipfirst' emerge options are something I would expect a more experience user to know but I'm really writing towards making sure my 'typical' user will succeed rather than educating them in more advanced options. It's a different perspective and goal.

Speaking of these relatively advanced emerge options, I wouldn't recommend using these options in this case. The reason is because this set of rebuilds is special due to the gcc-5.3.0 upgrade. In this particular instance, you can't trust portage to drop packages which depend on a failed package during resume. It's the special circumstances surrounding the gcc-5.3.0 upgrade and the fact that even though the C++ ABI has changed, the library name has not. This lack of name change is what creates these special circumstances. Therefore, the most safe approach is that every selected package must be rebuilt in order. Any package which fails has to be resolved before continuing. This is why I go through the entire process of building a 'human friendly' list.

Here's an actual example:
Code:
...
>>> Emerging (14 of 354) dev-libs/leveldb-1.18-r1::gentoo
>>> Installing (14 of 354) dev-libs/leveldb-1.18-r1::gentoo
>>> Emerging (15 of 354) dev-libs/icu-56.1::gentoo
>>> Installing (15 of 354) dev-libs/icu-56.1::gentoo
...
>>> Emerging (130 of 354) dev-qt/qtwebkit-5.5.1-r1::gentoo
>>> Installing (130 of 354) dev-qt/qtwebkit-5.5.1-r1::gentoo
...

dev-libs/leveldb absolutely must be rebuilt using gcc-5.3.0 before several packages including dev-qt/qtwebkit-5.5.1* will rebuild successfully after the gcc-5.3.0 upgrade. At least two bugs have already been entered in bugzilla by people whom had problems performing this set of rebuilds where dev-libs/leveldb was one of the packages that missed getting rebuilt {for whatever reason the failure occured}. --resume wouldn't drop dev-qt/qtwebit in this case and everyone with this broken set of rebuilds who's trying to run 'emerge =dev-qt/qtwebkit-5.5.1{-r1}' is seeing their build fail because portage can't recognise that it needs to rebuild dev-libs/leveldb first because of the gcc-5.3.0 upgrade issue.

To be clear, once this special set of rebuilds successfully completes. --skipfirst --resume are great emerge options and you're right to recommend them for nearly all the time. Here, though, --skipfirst really shouldn't be done. The problem package should be resolved before continuing. Since the user will most likely be using emerge when they resolve whatever package is gving them problems, then the internal list used by --resume will no longer be valid.

khayyam wrote:
dufeu wrote:
  1. The selected list is in a 'human unfriendly' form. Don't worry. These instructions will show you how to make the list human friendly and manageable.

I'm quite sure you couldn't provide some concrete description of what exactly might constitute "friendly" ITR, this reads to me the kind of vague flotsam born of "interface design", and begs the question of what sort of human is it that such designers have in mind. That's easy to answer, a inverted user, one who actually isn't doing something that qualifies as "use", and acquiring skill in the process, but is something of a abstraction that interface designers can then mold into whatever particular shape they please (or that happens to suit certain market trends, and so sell units, services, etc).

In this case, 'human unfriendly' constitutes the presentation of the 'emerge' command as built by the new item's instructions on invoking the 'revdep-rebuild' command. The emerge command as built by revdep-rebuild is being presented on a 'single line' in your terminal window. For a typical gentoo install with X and either KDE or Gnome and some reasonable assortment of user desired packages, this 'single line' will run over 10,000 characters. If you terminal window is 100 characters wide, that's over 100 lines of terminal display. On my term windows, this means scrolling up and down because I usually limit them to 40 lines deep. To add insult to injury {so to speak} it's character wrapped, not even word wrapped. So no, under no circumstances do I consider this 'human friendly' for any definition of 'human friendly', 'user friendly' or other term of anyone's choice.

I don't know about you, but my eyes glaze over and my heart starts palpitating when presented with screens like this.

I probably should not have truncated my example after the first package to make this clearer but I was concerned about forcing the browser width to widen when someone read the post.
khayyam wrote:
This whole "cut & paste into a GUI text editor" is indicative of such a "use", you are adopting the metaphors of "usability" that not only make things more complicated, but block the path to gaining some understanding of what "use" might be made of the OS (and how that OS differs from the particular notion of "usability" developed by Apple, et al).

I'm not concerned about usability here. I'm thinking of what tools the target user might have on hand and actually be familiar with. Even if they're not familiar with the tools, I'm looking for concepts they might be familiar with.

For the target user, the idea really is to make sure they succeed in getting past the special circumstances raised with the gcc-5.3 upgrade if and only if their first attempt at performing the requisite rebuilds fails.
khayyam wrote:
So, here's something far, far, simpler ...

Code:
# revdep-rebuild --library 'libstdc++.so.6' -- --exclude gcc --pretend | awk '/^\[/{print "="$4}' > output

... yes, that requires a little knowledge/skill ... but that is the outcome of "use". Use conditions the acquisition of knowledge/skill and is not something that can be worked around by abstracting the user into a hypothesis of incapacity (that in fact has the opposite effect ... the user forever being beholden to the particulars of the use case that "usability" engenders).

Here, you're doing something I was actively trying to avoid. You're being educational. ;)

In fact, I love the tip. I've always had problems wrapping my mind around 'awk' and I love having another example I can feel and touch that means something to me. I can't put something like this together without help.

As I pointed out early in my post, I tend towards obvious, brute force without any elegance approaches. So long as I can get across to my target audience what they need to do and how that works, I'm pretty happy. If I think furthering someone's knowledge in related but tangential areas is possible, I'll probably skip it in order not to confuse what needs to be done. There are arguments both for and against. Here, I'm much more focused on getting the problem solved with they tools/concepts I think will be most likely understandable {read simplest} for the target audience.
khayyam wrote:
Sorry to go on, but its an important point to get across, particularly as the meme of usability, and "user friendliness", seem to be very much in the driving seat wrt the entire domain of computation (even the small corner that we inhabit).

best ... khay

I didn't mean to push the 'user friendly' button on you. I've seen too much extraordinarily stupid 'user friendly design' over the years and it's pretty much a hot button topic for me as well. But .. let's not go there this time. ;)

Take care!
_________________
People whom think M$ is mediocre, don't know the half of it.
Back to top
View user's profile Send private message
khayyam
Watchman
Watchman


Joined: 07 Jun 2012
Posts: 6227
Location: Room 101

PostPosted: Sat Feb 20, 2016 3:23 pm    Post subject: Re: GCC 5.3 fallout - or 'emerge now fails - halp!' Reply with quote

defeu ... you're welcome, and thank you for taking the further time to follow up ... for brevity's sake I'll keep the quoting to a minimum, if you think I've missed some needed context then please point that out. As for the particulars of the gcc5 upgrade then you're most likely right, order is important, but not having been presented with the news item, or having the upgrade (I'm using stable) I haven't had to look closer, or make that migration.

dufeu wrote:
I wrote this for my concept of what a typical gentoo enduser might be expected to know.

Exactly, and that "typical enduser" is the kind of "abstraction" I pointed to, and the kind of abstraction that comes to assume the position of "the user". Is it "typical" that such a user would be using ~arch, and so subject to such a migration? What is the baseline here, what kind of "use" is involved where the particulars of that use (ie, dealing with the very problems created by the use of ~arch) such a user might not be "expected to know"? There is a normative assumption about "typicality", but yet the activity itself isn't commensurate with such an assumption ... that is the kind of pickle that the concept of "usability" involves, the user (and all the assumptions made about their use) is prior to, and entirely abstracted from, the user ever having done anything, and when it turns out their use is untypical, or doesn't match the skill required for real world "use", their lack of knowledge is presented to them as inherent, and at the same time, not something which relates to their "use". In short, the question of knowledge, and skill, is separate from the form of activity ("using") involved in the acquisition of that knowledge, and skill. It is here that the "typical user" is little more than an abstraction used to avoid the fact that skill/use is an activity, and can't be made to conform to an abstraction without replacing the activity with something that would have that activity conform to the idea of the users inherent "disability".

dufeu wrote:
This means I expect such a user to read the news message and to follow it's instructions. I don't expect such an enduser to understand what '--' would signify though I believe they should know this!

... and why should they know this? Surely none of us know such things until such a time as we are prompted by our use? Again, its about how we acquire such knowledge, not about our level of {dis,}ability. Lets assume these instructions explained *everything*, and that they are of such detail that no assumption is made as to the users comprehension. These instructions would need to cover every possible inference, including explanations of the words used, and explanations of each word used to provide those explanations ... ad infinatum. We don't need to do this because the thing being provided an explanation, and the use of language, involves prior inference ... inferences the user (in the activity of using, comprehending, etc) makes, constantly adding to, and amending, their understanding, and building on, and relating to, a chain of prior inference. What such instructions do is offer a small piece of the puzzle, the user then builds a picture using prior inference, and when something or other doesn't seem to fit, they look in the box, or to more experienced puzzlers, ask the manufacturer, etc, etc, and muddle through until such a time as the picture begins to take shape. From the perspective of "usability" such a puzzle is anathema, puzzles come in one shape or form, pre-constructed to conform to the "typical puzzle" of this sort, the contextless "answer" (or as much as the typical puzzles authors can claim to have understood, or have considered, their answer is always: "this is what use is").

dufeu wrote:
khayyam wrote:
I'm quite sure you couldn't provide some concrete description of what exactly might constitute "friendly" ITR [...]

In this case, 'human unfriendly' constitutes the presentation of the 'emerge' command as built by the new item's instructions on invoking the 'revdep-rebuild' command. [...] this 'single line' will run over 10,000 characters. If you terminal window is 100 characters wide, that's over 100 lines of terminal display. On my term windows, this means scrolling up and down because I usually limit them to 40 lines deep. To add insult to injury {so to speak} it's character wrapped, not even word wrapped. So no, under no circumstances do I consider this 'human friendly' for any definition of 'human friendly', 'user friendly' or other term of anyone's choice.

Sorry, but that is not a concrete description, you are applying a certain logic to 'output' as if a terminal is some sort of tool for "reading", which it's not (though the fact that someone has attached a "scrollbar", and go-faster-stripe, doesn't help the matter). Your description says more about your expectations than about how "friendly" a piece of software is towards it's user, output should not be treated as something specially designed for human consumption, even in cases where it is ;)

dufeu wrote:
I don't know about you, but my eyes glaze over and my heart starts palpitating when presented with screens like this.

No, not me ... I'm probably thinking of what it is that I want, or need to exact, from such output, and how I go about doing it, not about how much of it there is, or how much of it is present within the terminal window.

dufeu wrote:
khayyam wrote:
This whole "cut & paste into a GUI text editor" is indicative of such a "use", you are adopting the metaphors of "usability" that not only make things more complicated, but block the path to gaining some understanding of what "use" might be made of the OS (and how that OS differs from the particular notion of "usability" developed by Apple, et al).

I'm not concerned about usability here. I'm thinking of what tools the target user might have on hand and actually be familiar with. Even if they're not familiar with the tools, I'm looking for concepts they might be familiar with.

Besides the assumption of "actual familiarity" (see the point re abstraction above), such tools (awk, etc, etc) are present on every install, they are also tools designed with the idea of such use in mind (ie, pattern matching, field extraction, redirection, etc). Are users familiar with such concepts? Does it matter? As I explained, use breeds familiarity, so of course if you don't use them, or are never provided examples of their use (as they fail to pass the initial test of familiarity), then of course you'll be unfamiliar, but such an idea is entirely self-perpetuating. I could make the claim that no one understands your concerns, because everyone thinks of computation in terms of their own specific use, not in terms of the use usability design has in mind. Of course, such a claim would be spurious, because most everything to do with computing is thought of in terms of that particular meme.

dufeu wrote:
khayyam wrote:
... yes, that requires a little knowledge/skill ... but that is the outcome of "use". Use conditions the acquisition of knowledge/skill and is not something that can be worked around by abstracting the user into a hypothesis of incapacity (that in fact has the opposite effect ... the user forever being beholden to the particulars of the use case that "usability" engenders).

Here, you're doing something I was actively trying to avoid. You're being educational. ;)

I get the wink, but how can you possibly avoid it? If there is some need of the explanation, then there is some lack of knowledge the explanation is intended to educate.

best ... khay
Back to top
View user's profile Send private message
josephg
l33t
l33t


Joined: 10 Jan 2016
Posts: 783
Location: usually offline

PostPosted: Mon Sep 19, 2016 11:38 pm    Post subject: Reply with quote

so i'm picking up from both of you above, and end up with this one liner ;) problem solved?

Code:
# revdep-rebuild --library 'libstdc++.so.6' -- --exclude gcc --pretend | awk '/^\[/{print "="$4}' | xargs emerge -1
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Documentation, Tips & Tricks All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum