




I found that the above-mentioned eix-installed-after command did not exclude the already re-installed packages, so I did the following instead, which did exclude the already-installed packages:mv wrote:No, but you can try something along the lines ofpapandreoos wrote:is there a flag that will tell portage to exclude all the already-reinstalled packages?Code: Select all
emerge -1 $(eix-installed-after -btF /usr/bin/gcc)
Code: Select all
# eix-installed-after -btF /usr/bin/gcc | sort > before-gcc
# eix-installed-after -tF /usr/bin/gcc | sort > after-gcc
# diff -U $(wc -l < before-gcc) before-gcc after-gcc | sed -n 's/^-//p' > diff-list
# tail -n +2 diff-list > merge-list
# emerge -1 --keep-going $(cat merge-list)Thanks, would be interesting to see the numbers. I may do a check as well, if I find the time. But, without hard numbers, compilation of gcc itself seemed notably slower.Tony0945 wrote:The question remains "How slow is compiling with pie?". It seems very slow but I did not have a benchmark to compare to other than the total emerge -e world time. Since the last time I did a world emerge was at least two portage versions and one minor gcc version back, that's not a data point, just a concern.
In another thread I had compared some phoronix benchmarks against this system versus published ryzen 7 results. I could rerun them and see if they had changed.
Another approach is to compare compile times for one or more packages using measured times between this system on profile 17.0 and my profile 13.0 Phenom II system by turning off three cores and limiting the CPU multiplier. That still wouldn't account for the other system having twice the RAM unless I benchmarked builds that don't use swap on either system.
I'll do some research and report my findings in a new thread on Gentoo Chat.

Code: Select all
# uname -a
Linux clevow230ss 4.12.12-gentoo #2 SMP Sat Dec 2 04:20:45 GMT 2017 x86_64 Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz GenuineIntel GNU/Linux
# grep MemTotal /proc/meminfo
MemTotal: 16346168 kB
# eselect profile list | grep plasma | grep -v systemd
[6] default/linux/amd64/13.0/desktop/plasma
[18] default/linux/amd64/17.0/desktop/plasma *Code: Select all
Wed Nov 22 01:36:07 2017 >>> sys-devel/gcc-6.4.0
merge time: 32 minutes and 4 seconds. <------ Merge time using gcc-5.4.0-r3 and 13.0 profile
Fri Dec 1 02:34:10 2017 >>> sys-devel/gcc-6.4.0
merge time: 32 minutes and 35 seconds. <------ Merge time using gcc-6.4.0 and 17.0 profile
Fri Dec 1 17:39:01 2017 >>> sys-devel/gcc-6.4.0
merge time: 31 minutes and 15 seconds. <------ Merge time using gcc-6.4.0 and 17.0 profile
Sat Dec 2 02:54:37 2017 >>> sys-devel/gcc-6.4.0
merge time: 32 minutes and 22 seconds. <------ Merge time using gcc-6.4.0 and 17.0 profile
It excludes everything which was (re)emerged after the timestamp of /usr/bin/gcc.Fitzcarraldo wrote:I found that the above-mentioned eix-installed-after command did not exclude the already re-installed packagesmv wrote:Code: Select all
emerge -1 $(eix-installed-after -btF /usr/bin/gcc)
It would be serious a bug in the eix-installed-after script (or of the stat utility) if the intersection of these files contains anything (unless something changed the timestamp of /usr/bin/gcc or the /var/db database between the two calls). If you can reproduce this, please report an eix bug.Fitzcarraldo wrote:Code: Select all
# eix-installed-after -btF /usr/bin/gcc | sort > before-gcc # eix-installed-after -tF /usr/bin/gcc | sort > after-gcc
Code: Select all
comm -12 file1 file2Code: Select all
commlist -2 file1 "" file2Proceeded with re-emerging world and a couple of packages didn't build, some rebuilt again on trying others didn't those that didn't are detailed in bug reports as follows...dilfridge wrote:Sorry, the news item was originally written when gcc-7.2 was still without keywords.slackline wrote:Thanks for the reply, do you mean I can just select the new profile and then emerge -e @world or do I still need to compile sys-devel/binutils and sys-libs/glibc (already done up to emergeing sys-devel/libtool).asturm wrote:No need to if you're already on 7.2.
Sorry for the dumb quesiton, just not clear to me what it is I've no need to do.
If you're already on 7.2, just replace 6.4.0 with 7.2.0 everywhere in the instructions. You still need to follow the whole procedure though to be 100% sure that everything works.
That said... On a typical system, the fallout from not rebuilding world may be rather small. Many of the developers who tested the 17.0 profiles did no rebuilds at all, and ended up only with a few random build failures at some point later. Then again, the devs recognize the errors that result (I hope), can fix them (I hope) and do not file invalid bugs about it (I hope)...
Code: Select all
# eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/13.0
[2] default/linux/amd64/13.0/selinux
[3] default/linux/amd64/13.0/desktop
[4] default/linux/amd64/13.0/desktop/gnome
[5] default/linux/amd64/13.0/desktop/gnome/systemd
[6] default/linux/amd64/13.0/desktop/plasma
[7] default/linux/amd64/13.0/desktop/plasma/systemd
[8] default/linux/amd64/13.0/developer
[9] default/linux/amd64/13.0/no-multilib
[10] default/linux/amd64/13.0/systemd
[11] default/linux/amd64/13.0/x32
[12] default/linux/amd64/17.0
[13] default/linux/amd64/17.0/selinux
[14] default/linux/amd64/17.0/hardened
[15] default/linux/amd64/17.0/desktop
[16] default/linux/amd64/17.0/desktop/gnome
[17] default/linux/amd64/17.0/desktop/gnome/systemd
[18] default/linux/amd64/17.0/desktop/plasma
[19] default/linux/amd64/17.0/desktop/plasma/systemd
[20] default/linux/amd64/17.0/developer
[21] default/linux/amd64/17.0/no-multilib *
[22] default/linux/amd64/17.0/systemd
[23] default/linux/amd64/17.0/x32
[24] hardened/linux/amd64
[25] hardened/linux/amd64/selinux
[26] hardened/linux/amd64/no-multilib
[27] hardened/linux/amd64/no-multilib/selinux
[28] hardened/linux/amd64/x32
[29] hardened/linux/musl/amd64
[30] hardened/linux/musl/amd64/x32
[31] default/linux/uclibc/amd64
[32] hardened/linux/uclibc/amd64

I've finished recompiling all my ~1300 packages, that was a long marathon. You say in amd64 it should be rather hard to construct an example that makes any difference. Perhaps I'm just imaging it, but I do have the feeling, that the system has become a little bit slower than usual. Let's see how it feels after a couple of days.mv wrote:On an x86 system, one should be able to measure it. On an amd64 system, it should be rather hard to construct an example where one can measure any difference.Spargeltarzan wrote:@klynastor: Do you think you will be even able to measure this performance difference?



You do not have to "care manually" about it any more and as a result some others have to toil manually from now on.Spargeltarzan wrote:For me the "just to improve the overall security fingerprint" is now something what I don't have to care manually about any more.
Ditto...especially given that my MythTV systems (that my family depends) on are all x86, this whole thing (which I just started reading about today) is without question the most terrifying thing I've ever heard in almost 14 years using Gentoo.eccerr0r wrote:So what's the guidance on x86 systems that need all the performance they can get?

Code: Select all
error code model kernel does not support PIC mode
Code: Select all
int global;
void f()
{
++global;
}
int g()
{
return global;
}
int h()
{
return 5;
}Code: Select all
.file "p.c"
.text
.p2align 4,,15
.globl f
.type f, @function
f:
.LFB0:
.cfi_startproc
call __x86.get_pc_thunk.ax
addl $_GLOBAL_OFFSET_TABLE_, %eax
movl global@GOT(%eax), %eax
addl $1, (%eax)
ret
.cfi_endproc
.LFE0:
.size f, .-f
.p2align 4,,15
.globl g
.type g, @function
g:
.LFB1:
.cfi_startproc
call __x86.get_pc_thunk.ax
addl $_GLOBAL_OFFSET_TABLE_, %eax
movl global@GOT(%eax), %eax
movl (%eax), %eax
ret
.cfi_endproc
.LFE1:
.size g, .-g
.p2align 4,,15
.globl h
.type h, @function
h:
.LFB2:
.cfi_startproc
movl $5, %eax
ret
.cfi_endproc
.LFE2:
.size h, .-h
.comm global,4,4
.section .text.__x86.get_pc_thunk.ax,"axG",@progbits,__x86.get_pc_thunk.ax,comdat
.globl __x86.get_pc_thunk.ax
.hidden __x86.get_pc_thunk.ax
.type __x86.get_pc_thunk.ax, @function
__x86.get_pc_thunk.ax:
.LFB3:
.cfi_startproc
movl (%esp), %eax
ret
.cfi_endproc
.LFE3:
.ident "GCC: (Gentoo Hardened 7.1.0-r1 p1.1) 7.1.0"
.section .note.GNU-stack,"",@progbits
Code: Select all
.file "p.c"
.text
.p2align 4,,15
.globl f
.type f, @function
f:
.LFB0:
.cfi_startproc
addl $1, global(%rip)
ret
.cfi_endproc
.LFE0:
.size f, .-f
.p2align 4,,15
.globl g
.type g, @function
g:
.LFB1:
.cfi_startproc
movl global(%rip), %eax
ret
.cfi_endproc
.LFE1:
.size g, .-g
.p2align 4,,15
.globl h
.type h, @function
h:
.LFB2:
.cfi_startproc
movl $5, %eax
ret
.cfi_endproc
.LFE2:
.size h, .-h
.comm global,4,4
.ident "GCC: (Gentoo Hardened 7.1.0-r1 p1.1) 7.1.0"
.section .note.GNU-stack,"",@progbitsI haven't finished my promised comparison because of some methodological issues. But the preliminary view is that for Athlon II/Phenom II computers there is maybe only a few percent (1-2) loss if any. Losses seem mostly on short compiles and who cares if a compile takes 3 seconds longer? On bigger packages, configuration, and linking, patching, and swapping seem more important than the actual compiling. The world emerge took almost twice as long as usual but I'm not seeing that on individual packages. I'm not sure if that was due to pie or maybe other changes in the profile. I seemed to spend an inordinate amount of time on qt stuff, but wxGTK stuff zips along.The Doctor wrote: If you actually check compile times for individual packages there is not much of a difference.
