Re: [gentoo-dev] [PATCH 4/4] package.use.mask: Mask ICU supprt of Qt:4 on 17.0 profiles

2017-06-07 Thread Davide Pesavento
On Wed, Jun 7, 2017 at 4:48 PM,   wrote:
> From: Andreas K. Hüttel 
>
> ---
>  profiles/releases/17.0/package.use.mask | 5 +
>  1 file changed, 5 insertions(+)
>
> diff --git a/profiles/releases/17.0/package.use.mask 
> b/profiles/releases/17.0/package.use.mask
> index 8eefcfe631ea..9a6609274ad1 100644
> --- a/profiles/releases/17.0/package.use.mask
> +++ b/profiles/releases/17.0/package.use.mask
> @@ -4,3 +4,8 @@
>  # Andreas K. Hüttel  (27 May 2017)
>  # Unmask default-PIE on 17.0 profiles.
>  sys-devel/gcc -pie
> +
> +# Andreas K. Hüttel  (7 June 2017)
> +# Qt-4 will never work with >=icu-59, see bug 618638 and bug 618640
> +dev-qt/qtcore:4 icu
> +dev-qt/qtwebkit:4 icu
> --
> 2.13.1
>
>

ACK



Re: [gentoo-dev] [rfc] dev-libs/expat[unicode] and dev-libs/libbsd dependency

2017-06-07 Thread Sebastian Pipping
Hi!


Just quick note for the record: 2.2.0-r2 has these changes now, no need
to have that wait for the next release:

https://github.com/gentoo/gentoo/commit/715a2315ee2b841e38843e61b43ee058b5678cab

Best



Sebastian



signature.asc
Description: OpenPGP digital signature


Re: [gentoo-dev] New 17.0 release profiles

2017-06-07 Thread Sergei Trofimovich
On Wed, 07 Jun 2017 22:44:31 +0200
"Andreas K. Huettel"  wrote:

> 2) Switch GCC from default-non-PIE to default-PIE executables.

Yay \o/. It's a major change though. Will qa@ write us some docs
on the topic? Landing page:
https://wiki.gentoo.org/wiki/Project:Quality_Assurance#Documentation

Currently we have scarce mention of PIC-related problems:
https://wiki.gentoo.org/wiki/Hardened/Position_Independent_Code_internals
https://wiki.gentoo.org/wiki/Project:AMD64/Fixing_-fPIC_Errors_Guide

We will have a bit more more of those problems. Recent example:
https://bugs.gentoo.org/show_bug.cgi?id=618366
I'm personally interested in how to filter out '-pie' in dosemu.
What is the canonical way to detect '-pie' / '-no-pie' support
in toolchain and flip it?

A quick poll:

How about other toolchains?

A few examples that will have (perhaps minor) troubles doing that:

- sys-devel/clang will need to be defaulting to pie. llvm@
  llvm is especially touchy as otherwise it's easy to have static library mix.
- dev-lang/ghc will need to be defaulted to pie. haskell@
- dev-lang/go will need to be defaulted to pie. williamh@
- dev-lang/ocaml will need to be defaulted to pie. ml@
- dev-lang/crystal will need to be defaulted to pie. longl...@gmail.com
- others?

[haskell@ hat on]
  We are OK to invest some time and default to pie for dev-lang/ghc
  produced binaries. Perhaps slightly after new profiles are introduced
  into the tree as it will require merging a few patches upstream.

-- 

  Sergei


pgpST54Qx0Lm7.pgp
Description: Цифровая подпись OpenPGP


[gentoo-dev] [PATCH 1/4] package.mask: Move ICU-59 mask from main package.mask to base profile mask

2017-06-07 Thread dilfridge
From: Andreas K. Hüttel 

---
 profiles/base/package.mask | 6 ++
 profiles/package.mask  | 6 --
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/profiles/base/package.mask b/profiles/base/package.mask
index 320a6bbb1a0c..6fa75c0ec35a 100644
--- a/profiles/base/package.mask
+++ b/profiles/base/package.mask
@@ -1,2 +1,8 @@
 # Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
+
+# Andreas K. Hüttel  (27 May 2017)
+# This release and later require C++11 or C++14
+# So we mask it here, and unmask in 17.0 release profiles
+>=dev-libs/icu-59
+>=dev-libs/icu-layoutex-59
diff --git a/profiles/package.mask b/profiles/package.mask
index df1f6d7ce5a3..113cb93fdcdd 100644
--- a/profiles/package.mask
+++ b/profiles/package.mask
@@ -454,12 +454,6 @@ sci-chemistry/mead
 # dependencies. See #594134. To be removed in 30 days.
 sys-fabric/libibvpp
 
-# Andreas K. Hüttel  (13 May 2017)
-# This release breaks lots of reverse deps because of conflicting types.
-# So let's get it in the tree, mask it and test.
-=dev-libs/icu-59*
-=dev-libs/icu-layoutex-59*
-
 # Michael Orlitzky  (11 May 2017)
 # Neither of these packages has a clear license, and both are
 # unmaintained (and probably unused). No reverse dependencies,
-- 
2.13.1




[gentoo-dev] [PATCH 4/4] package.use.mask: Mask ICU supprt of Qt:4 on 17.0 profiles

2017-06-07 Thread dilfridge
From: Andreas K. Hüttel 

---
 profiles/releases/17.0/package.use.mask | 5 +
 1 file changed, 5 insertions(+)

diff --git a/profiles/releases/17.0/package.use.mask 
b/profiles/releases/17.0/package.use.mask
index 8eefcfe631ea..9a6609274ad1 100644
--- a/profiles/releases/17.0/package.use.mask
+++ b/profiles/releases/17.0/package.use.mask
@@ -4,3 +4,8 @@
 # Andreas K. Hüttel  (27 May 2017)
 # Unmask default-PIE on 17.0 profiles.
 sys-devel/gcc -pie
+
+# Andreas K. Hüttel  (7 June 2017)
+# Qt-4 will never work with >=icu-59, see bug 618638 and bug 618640
+dev-qt/qtcore:4 icu
+dev-qt/qtwebkit:4 icu
-- 
2.13.1




[gentoo-dev] [PATCH 3/4] profiles: Add amd64 17.0 profiles (identical to 13.0 except for one parent entry)

2017-06-07 Thread dilfridge
From: Andreas K. Hüttel 

---
 profiles/default/linux/amd64/17.0/desktop/eapi  | 1 +
 profiles/default/linux/amd64/17.0/desktop/gnome/eapi| 1 +
 profiles/default/linux/amd64/17.0/desktop/gnome/parent  | 2 ++
 profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi| 1 +
 profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent  | 2 ++
 profiles/default/linux/amd64/17.0/desktop/parent| 2 ++
 profiles/default/linux/amd64/17.0/desktop/plasma/eapi   | 1 +
 profiles/default/linux/amd64/17.0/desktop/plasma/parent | 2 ++
 profiles/default/linux/amd64/17.0/desktop/plasma/systemd/eapi   | 1 +
 profiles/default/linux/amd64/17.0/desktop/plasma/systemd/parent | 2 ++
 profiles/default/linux/amd64/17.0/developer/eapi| 1 +
 profiles/default/linux/amd64/17.0/developer/make.defaults   | 7 +++
 profiles/default/linux/amd64/17.0/developer/parent  | 2 ++
 profiles/default/linux/amd64/17.0/eapi  | 1 +
 profiles/default/linux/amd64/17.0/no-multilib/eapi  | 1 +
 profiles/default/linux/amd64/17.0/no-multilib/parent| 2 ++
 profiles/default/linux/amd64/17.0/parent| 2 ++
 profiles/default/linux/amd64/17.0/selinux/eapi  | 1 +
 profiles/default/linux/amd64/17.0/selinux/parent| 2 ++
 profiles/default/linux/amd64/17.0/systemd/eapi  | 1 +
 profiles/default/linux/amd64/17.0/systemd/parent| 2 ++
 profiles/default/linux/amd64/17.0/x32/eapi  | 1 +
 profiles/default/linux/amd64/17.0/x32/make.defaults | 4 
 profiles/default/linux/amd64/17.0/x32/parent| 2 ++
 24 files changed, 44 insertions(+)
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/gnome/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/gnome/parent
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi
 create mode 100644 
profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/parent
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/plasma/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/plasma/parent
 create mode 100644 
profiles/default/linux/amd64/17.0/desktop/plasma/systemd/eapi
 create mode 100644 
profiles/default/linux/amd64/17.0/desktop/plasma/systemd/parent
 create mode 100644 profiles/default/linux/amd64/17.0/developer/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/developer/make.defaults
 create mode 100644 profiles/default/linux/amd64/17.0/developer/parent
 create mode 100644 profiles/default/linux/amd64/17.0/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/no-multilib/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/no-multilib/parent
 create mode 100644 profiles/default/linux/amd64/17.0/parent
 create mode 100644 profiles/default/linux/amd64/17.0/selinux/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/selinux/parent
 create mode 100644 profiles/default/linux/amd64/17.0/systemd/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/systemd/parent
 create mode 100644 profiles/default/linux/amd64/17.0/x32/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/x32/make.defaults
 create mode 100644 profiles/default/linux/amd64/17.0/x32/parent

diff --git a/profiles/default/linux/amd64/17.0/desktop/eapi 
b/profiles/default/linux/amd64/17.0/desktop/eapi
new file mode 100644
index ..7ed6ff82de6b
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/eapi
@@ -0,0 +1 @@
+5
diff --git a/profiles/default/linux/amd64/17.0/desktop/gnome/eapi 
b/profiles/default/linux/amd64/17.0/desktop/gnome/eapi
new file mode 100644
index ..7ed6ff82de6b
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/gnome/eapi
@@ -0,0 +1 @@
+5
diff --git a/profiles/default/linux/amd64/17.0/desktop/gnome/parent 
b/profiles/default/linux/amd64/17.0/desktop/gnome/parent
new file mode 100644
index ..6589a0e01478
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/gnome/parent
@@ -0,0 +1,2 @@
+..
+../../../../../../targets/desktop/gnome
diff --git a/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi 
b/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi
new file mode 100644
index ..7ed6ff82de6b
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi
@@ -0,0 +1 @@
+5
diff --git a/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent 
b/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent
new file mode 100644
index ..44f88d3e2df0
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent
@@ -0,0 +1,2 @@
+..
+../../../../../../../targets/systemd
diff --git a/profiles/default/

[gentoo-dev] [PATCH 2/4] profiles: Add 17.0 release profile

2017-06-07 Thread dilfridge
From: Andreas K. Hüttel 

* Require >=gcc-6 with PIE forced on
* Unmask ICU-59 and later
---
 profiles/releases/17.0/eapi  | 1 +
 profiles/releases/17.0/make.defaults | 5 +
 profiles/releases/17.0/package.mask  | 6 ++
 profiles/releases/17.0/package.unmask| 9 +
 profiles/releases/17.0/package.use.force | 6 ++
 profiles/releases/17.0/package.use.mask  | 6 ++
 profiles/releases/17.0/parent| 1 +
 7 files changed, 34 insertions(+)
 create mode 100644 profiles/releases/17.0/eapi
 create mode 100644 profiles/releases/17.0/make.defaults
 create mode 100644 profiles/releases/17.0/package.mask
 create mode 100644 profiles/releases/17.0/package.unmask
 create mode 100644 profiles/releases/17.0/package.use.force
 create mode 100644 profiles/releases/17.0/package.use.mask
 create mode 100644 profiles/releases/17.0/parent

diff --git a/profiles/releases/17.0/eapi b/profiles/releases/17.0/eapi
new file mode 100644
index ..7ed6ff82de6b
--- /dev/null
+++ b/profiles/releases/17.0/eapi
@@ -0,0 +1 @@
+5
diff --git a/profiles/releases/17.0/make.defaults 
b/profiles/releases/17.0/make.defaults
new file mode 100644
index ..475e60c7d655
--- /dev/null
+++ b/profiles/releases/17.0/make.defaults
@@ -0,0 +1,5 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Adding this one, since it makes sense.
+USE="bzip2"
diff --git a/profiles/releases/17.0/package.mask 
b/profiles/releases/17.0/package.mask
new file mode 100644
index ..943ae2b6a65c
--- /dev/null
+++ b/profiles/releases/17.0/package.mask
@@ -0,0 +1,6 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Andreas K. Huettel  (27 May 2017)
+# Require a gcc here that uses C++14 or later as default setting
+ (27 May 2017)
+# We can unmask ICU 59 and later now we for sure have a recent GCC
+# Note: "and later" is safe here since the profiles/package.mask
+# still overrides.
+>=dev-libs/icu-59
+>=dev-libs/icu-layoutex-59
diff --git a/profiles/releases/17.0/package.use.force 
b/profiles/releases/17.0/package.use.force
new file mode 100644
index ..e0b6784ee1e7
--- /dev/null
+++ b/profiles/releases/17.0/package.use.force
@@ -0,0 +1,6 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Andreas K. Hüttel  (27 May 2017)
+# Force default-PIE build on 17.0 profiles.
+sys-devel/gcc pie
diff --git a/profiles/releases/17.0/package.use.mask 
b/profiles/releases/17.0/package.use.mask
new file mode 100644
index ..8eefcfe631ea
--- /dev/null
+++ b/profiles/releases/17.0/package.use.mask
@@ -0,0 +1,6 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Andreas K. Hüttel  (27 May 2017)
+# Unmask default-PIE on 17.0 profiles.
+sys-devel/gcc -pie
diff --git a/profiles/releases/17.0/parent b/profiles/releases/17.0/parent
new file mode 100644
index ..f3229c5b9876
--- /dev/null
+++ b/profiles/releases/17.0/parent
@@ -0,0 +1 @@
+..
-- 
2.13.1




[gentoo-dev] [PATCH 1/4] package.mask: Move ICU-59 mask from main package.mask to base profile mask

2017-06-07 Thread dilfridge
From: Andreas K. Hüttel 

---
 profiles/base/package.mask | 6 ++
 profiles/package.mask  | 6 --
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/profiles/base/package.mask b/profiles/base/package.mask
index 320a6bbb1a0c..6fa75c0ec35a 100644
--- a/profiles/base/package.mask
+++ b/profiles/base/package.mask
@@ -1,2 +1,8 @@
 # Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
+
+# Andreas K. Hüttel  (27 May 2017)
+# This release and later require C++11 or C++14
+# So we mask it here, and unmask in 17.0 release profiles
+>=dev-libs/icu-59
+>=dev-libs/icu-layoutex-59
diff --git a/profiles/package.mask b/profiles/package.mask
index df1f6d7ce5a3..113cb93fdcdd 100644
--- a/profiles/package.mask
+++ b/profiles/package.mask
@@ -454,12 +454,6 @@ sci-chemistry/mead
 # dependencies. See #594134. To be removed in 30 days.
 sys-fabric/libibvpp
 
-# Andreas K. Hüttel  (13 May 2017)
-# This release breaks lots of reverse deps because of conflicting types.
-# So let's get it in the tree, mask it and test.
-=dev-libs/icu-59*
-=dev-libs/icu-layoutex-59*
-
 # Michael Orlitzky  (11 May 2017)
 # Neither of these packages has a clear license, and both are
 # unmaintained (and probably unused). No reverse dependencies,
-- 
2.13.1




[gentoo-dev] [PATCH 2/4] profiles: Add 17.0 release profile

2017-06-07 Thread dilfridge
From: Andreas K. Hüttel 

* Require >=gcc-6 with PIE forced on
* Unmask ICU-59 and later
---
 profiles/releases/17.0/eapi  | 1 +
 profiles/releases/17.0/make.defaults | 5 +
 profiles/releases/17.0/package.mask  | 6 ++
 profiles/releases/17.0/package.unmask| 9 +
 profiles/releases/17.0/package.use.force | 6 ++
 profiles/releases/17.0/package.use.mask  | 6 ++
 profiles/releases/17.0/parent| 1 +
 7 files changed, 34 insertions(+)
 create mode 100644 profiles/releases/17.0/eapi
 create mode 100644 profiles/releases/17.0/make.defaults
 create mode 100644 profiles/releases/17.0/package.mask
 create mode 100644 profiles/releases/17.0/package.unmask
 create mode 100644 profiles/releases/17.0/package.use.force
 create mode 100644 profiles/releases/17.0/package.use.mask
 create mode 100644 profiles/releases/17.0/parent

diff --git a/profiles/releases/17.0/eapi b/profiles/releases/17.0/eapi
new file mode 100644
index ..7ed6ff82de6b
--- /dev/null
+++ b/profiles/releases/17.0/eapi
@@ -0,0 +1 @@
+5
diff --git a/profiles/releases/17.0/make.defaults 
b/profiles/releases/17.0/make.defaults
new file mode 100644
index ..475e60c7d655
--- /dev/null
+++ b/profiles/releases/17.0/make.defaults
@@ -0,0 +1,5 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Adding this one, since it makes sense.
+USE="bzip2"
diff --git a/profiles/releases/17.0/package.mask 
b/profiles/releases/17.0/package.mask
new file mode 100644
index ..943ae2b6a65c
--- /dev/null
+++ b/profiles/releases/17.0/package.mask
@@ -0,0 +1,6 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Andreas K. Huettel  (27 May 2017)
+# Require a gcc here that uses C++14 or later as default setting
+ (27 May 2017)
+# We can unmask ICU 59 and later now we for sure have a recent GCC
+# Note: "and later" is safe here since the profiles/package.mask
+# still overrides.
+>=dev-libs/icu-59
+>=dev-libs/icu-layoutex-59
diff --git a/profiles/releases/17.0/package.use.force 
b/profiles/releases/17.0/package.use.force
new file mode 100644
index ..e0b6784ee1e7
--- /dev/null
+++ b/profiles/releases/17.0/package.use.force
@@ -0,0 +1,6 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Andreas K. Hüttel  (27 May 2017)
+# Force default-PIE build on 17.0 profiles.
+sys-devel/gcc pie
diff --git a/profiles/releases/17.0/package.use.mask 
b/profiles/releases/17.0/package.use.mask
new file mode 100644
index ..8eefcfe631ea
--- /dev/null
+++ b/profiles/releases/17.0/package.use.mask
@@ -0,0 +1,6 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Andreas K. Hüttel  (27 May 2017)
+# Unmask default-PIE on 17.0 profiles.
+sys-devel/gcc -pie
diff --git a/profiles/releases/17.0/parent b/profiles/releases/17.0/parent
new file mode 100644
index ..f3229c5b9876
--- /dev/null
+++ b/profiles/releases/17.0/parent
@@ -0,0 +1 @@
+..
-- 
2.13.1




[gentoo-dev] [PATCH 4/4] package.use.mask: Mask ICU supprt of Qt:4 on 17.0 profiles

2017-06-07 Thread dilfridge
From: Andreas K. Hüttel 

---
 profiles/releases/17.0/package.use.mask | 5 +
 1 file changed, 5 insertions(+)

diff --git a/profiles/releases/17.0/package.use.mask 
b/profiles/releases/17.0/package.use.mask
index 8eefcfe631ea..9a6609274ad1 100644
--- a/profiles/releases/17.0/package.use.mask
+++ b/profiles/releases/17.0/package.use.mask
@@ -4,3 +4,8 @@
 # Andreas K. Hüttel  (27 May 2017)
 # Unmask default-PIE on 17.0 profiles.
 sys-devel/gcc -pie
+
+# Andreas K. Hüttel  (7 June 2017)
+# Qt-4 will never work with >=icu-59, see bug 618638 and bug 618640
+dev-qt/qtcore:4 icu
+dev-qt/qtwebkit:4 icu
-- 
2.13.1




[gentoo-dev] [PATCH 3/4] profiles: Add amd64 17.0 profiles (identical to 13.0 except for one parent entry)

2017-06-07 Thread dilfridge
From: Andreas K. Hüttel 

---
 profiles/default/linux/amd64/17.0/desktop/eapi  | 1 +
 profiles/default/linux/amd64/17.0/desktop/gnome/eapi| 1 +
 profiles/default/linux/amd64/17.0/desktop/gnome/parent  | 2 ++
 profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi| 1 +
 profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent  | 2 ++
 profiles/default/linux/amd64/17.0/desktop/parent| 2 ++
 profiles/default/linux/amd64/17.0/desktop/plasma/eapi   | 1 +
 profiles/default/linux/amd64/17.0/desktop/plasma/parent | 2 ++
 profiles/default/linux/amd64/17.0/desktop/plasma/systemd/eapi   | 1 +
 profiles/default/linux/amd64/17.0/desktop/plasma/systemd/parent | 2 ++
 profiles/default/linux/amd64/17.0/developer/eapi| 1 +
 profiles/default/linux/amd64/17.0/developer/make.defaults   | 7 +++
 profiles/default/linux/amd64/17.0/developer/parent  | 2 ++
 profiles/default/linux/amd64/17.0/eapi  | 1 +
 profiles/default/linux/amd64/17.0/no-multilib/eapi  | 1 +
 profiles/default/linux/amd64/17.0/no-multilib/parent| 2 ++
 profiles/default/linux/amd64/17.0/parent| 2 ++
 profiles/default/linux/amd64/17.0/selinux/eapi  | 1 +
 profiles/default/linux/amd64/17.0/selinux/parent| 2 ++
 profiles/default/linux/amd64/17.0/systemd/eapi  | 1 +
 profiles/default/linux/amd64/17.0/systemd/parent| 2 ++
 profiles/default/linux/amd64/17.0/x32/eapi  | 1 +
 profiles/default/linux/amd64/17.0/x32/make.defaults | 4 
 profiles/default/linux/amd64/17.0/x32/parent| 2 ++
 24 files changed, 44 insertions(+)
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/gnome/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/gnome/parent
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi
 create mode 100644 
profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/parent
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/plasma/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/desktop/plasma/parent
 create mode 100644 
profiles/default/linux/amd64/17.0/desktop/plasma/systemd/eapi
 create mode 100644 
profiles/default/linux/amd64/17.0/desktop/plasma/systemd/parent
 create mode 100644 profiles/default/linux/amd64/17.0/developer/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/developer/make.defaults
 create mode 100644 profiles/default/linux/amd64/17.0/developer/parent
 create mode 100644 profiles/default/linux/amd64/17.0/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/no-multilib/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/no-multilib/parent
 create mode 100644 profiles/default/linux/amd64/17.0/parent
 create mode 100644 profiles/default/linux/amd64/17.0/selinux/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/selinux/parent
 create mode 100644 profiles/default/linux/amd64/17.0/systemd/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/systemd/parent
 create mode 100644 profiles/default/linux/amd64/17.0/x32/eapi
 create mode 100644 profiles/default/linux/amd64/17.0/x32/make.defaults
 create mode 100644 profiles/default/linux/amd64/17.0/x32/parent

diff --git a/profiles/default/linux/amd64/17.0/desktop/eapi 
b/profiles/default/linux/amd64/17.0/desktop/eapi
new file mode 100644
index ..7ed6ff82de6b
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/eapi
@@ -0,0 +1 @@
+5
diff --git a/profiles/default/linux/amd64/17.0/desktop/gnome/eapi 
b/profiles/default/linux/amd64/17.0/desktop/gnome/eapi
new file mode 100644
index ..7ed6ff82de6b
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/gnome/eapi
@@ -0,0 +1 @@
+5
diff --git a/profiles/default/linux/amd64/17.0/desktop/gnome/parent 
b/profiles/default/linux/amd64/17.0/desktop/gnome/parent
new file mode 100644
index ..6589a0e01478
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/gnome/parent
@@ -0,0 +1,2 @@
+..
+../../../../../../targets/desktop/gnome
diff --git a/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi 
b/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi
new file mode 100644
index ..7ed6ff82de6b
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/eapi
@@ -0,0 +1 @@
+5
diff --git a/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent 
b/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent
new file mode 100644
index ..44f88d3e2df0
--- /dev/null
+++ b/profiles/default/linux/amd64/17.0/desktop/gnome/systemd/parent
@@ -0,0 +1,2 @@
+..
+../../../../../../../targets/systemd
diff --git a/profiles/default/

[gentoo-dev] New 17.0 release profiles

2017-06-07 Thread Andreas K. Huettel
Hey all, 

as already discussed on IRC, here is a first step towards new 17.0 profile 
sets. 
The switchover from 13.0 to 17.0 is introduced for two reasons:

1) Switch default compiler dialect from gnu++98 (as in <=gcc-5.4) to gnu++14 
(as in >=gcc-6).
2) Switch GCC from default-non-PIE to default-PIE executables.

This has the following implications: 
* In 17.0 profiles, =icu-59 is UNmasked.

It also has the great advantage that 
* we can tell users "on this profile switch please rebuild all your static 
archives"
* it's unnecessary to sprinkle the whole ebuild repository with "add-cxxflags -
std=c++11" just because someone still might use gcc-4 in a few years

Obviously we're now in the test phase and the official switchover 
recommendation 
can only happen after gcc-6 is stable. This is also why I'm not touching 
profiles.desc yet.

Patches following for review (only amd64 for now). 

Cheers, 
Andreas

-- 
Andreas K. Hüttel
dilfri...@gentoo.org
Gentoo Linux developer (council, perl, libreoffice)

signature.asc
Description: This is a digitally signed message part.


Re: [gentoo-dev] [RFC] Forced/automatic USE flag constraints (codename: ENFORCED_USE)

2017-06-07 Thread Alexis Ballier
On Wed, 07 Jun 2017 11:27:59 +0200
Michał Górny  wrote:

> On śro, 2017-06-07 at 10:17 +0200, Alexis Ballier wrote:
> > > Also, do I presume correctly that for all supported cases (i.e.
> > > those which your nsolve does not reject), solve and nsolve are
> > > compatible? 
> > 
> > Not sure what you mean here. nsolve does not solve anything, it just
> > validates REQUIRED_USE so that it is guaranteed it can be solved.  
> 
> What I mean is whether you can guarantee that:
> 
> a. for every X that nsolve(X) == ok, solve() will be able to find
> a valid solution,

yes

> b. for every X that solve() can solve reliably, nsolve(X) == ok.

no and that's not really possible

> > We first need to define properly & formally how to solve requse
> > constraints if we want ppl to be able to rely on it (or rather write
> > requse that give the expected result).
> > 
> > The way I see it, REQUIRED_USE ast looks like:
> > (assuming ^^ is already expanded to || + ??)
> > 
> > clause =
> > AllOf(list of clauses)
> >   | AnyOf(list of clauses)
> >   | AtMostOne(list of clauses)
> >   | Implication(useflag, clause)
> >   | useflag
> > 
> > Now, portage already has the function 'eval(input, clause)'. We
> > need to define 'trueify(input, clause)' that modifies input so that
> > 'eval(input, clause)' is always true afterwards. Since this is SAT,
> > there is no hope to make this work for all clauses. From the
> > discussions here, a good algorithm would be:
> > 
> > trueify(input, clause) = match clause with
> >   AllOf(l) -> for i in l: trueify(input, i)  
> > > AnyOf(l) -> if not eval(input, clause): trueify(input, l[0])
> > > AtMostOne(l) -> f = (lambda x,y: pass)  
> > 
> >   for i in l:
> > f(input, i)
> > if eval(input, i): f = falsify  
> > > Implication(useflag, consequence) ->  
> > 
> >  if input[useflag]: trueify(input, consequence)  
> > > useflag -> input[useflag] = True  
> > 
> > 
> > Now you see that for the AtMostOne case we need its dual, the
> > 'falsify(input, clause)' function:
> > 
> > falsify(input, clause) = match clause with
> >   AllOf(l)   -> falsify(input, l[0])  
> 
> That's a debatable case. My solve() actually 'falsifies' all
> the subexpressions which might be more reliable.

Best way to debate this is probably to write the implication
translation and feed that to nsolve from a few test cases.

Intuition is that falsifying all of them adds more pressure on the
solver and you might end up failing to solve it for no good reason, so
falsifying only one of them seems safer.

> > > AnyOf(l)   -> for i in l: falsify(input, i)
> > > AtMostOne(l) -> for i in l:  
> > 
> >  if eval(input, clause): trueify(input, i)  
> 
> Do I read this correctly that it pretty much implies enabling the
> first two subexpressions?

or the leftmost first false if one is already true in there, yes

> > > Implication(useflag, consequence) ->  
> > 
> >  if not input[useflag]: raise "impossible"  
> 
> Why impossible? Unless I'm missing something, it's false already.

'foo? bar' is always true if foo is false; so it's impossible to make
it false

it's really a corner case as I think we don't allow nested implications
inside ||, ^^, () or ??, which is the only way to reach that.

> >  else: falsify(input, consequence)  
> > > useflag -> input[useflag] = False  
> 
> Looks mostly sane. You've missed '!flag' but that's trivial to add.

yeah, i realized after sending the email

> > 
> > Note how the above favors leftmost in all cases. If it needs to
> > change something, it always tries to leave the leftmost untouched.
> > Note also that it processes everything left to right (the AllOf
> > case where REQUIRED_USE="AllOf(list of clauses)" ).  
> 
> You need to be able to reorder the clauses to handle use.force
> and use.mask.

Not sure if reorder is the best way. It sure works, but maybe we'd want
a repoman error if e.g. 'foo? ( bar )' is in REQUIRED_USE, bar is
masked but not foo. That'd be a matter of eliminating the constants in
the ast and if we get 'false' for a profile we error out.

> > So, the very first thing to do is to agree that the above solver
> > (the trueify function) is what we want to implement and set this in
> > stone. There's no point in implementing a proper requse checker if
> > the algorithm is meant to change. Having a formal definition will
> > also be necessary to mandate that in future EAPIs.
> > 
> > Then, and only then, we'd need to have the above solver implemented
> > into portage (hidden under a FEATURES) and import my nsolve into
> > repoman (after due cleanup).
> >   
> 
> Yes, that's my goal. However, before we can set the algorithm in stone
> we need to verify that it will work in all of the supported cases.

Yep, that's the point of nsolve/classify :)

> Preferably it should also be as simple as possible to avoid putting
> too much complexity in the spec.

Re: [gentoo-dev] [RFC] Forced/automatic USE flag constraints (codename: ENFORCED_USE)

2017-06-07 Thread Michał Górny
On śro, 2017-06-07 at 10:17 +0200, Alexis Ballier wrote:
> > Also, do I presume correctly that for all supported cases (i.e. those
> > which your nsolve does not reject), solve and nsolve are compatible?
> > 
> 
> Not sure what you mean here. nsolve does not solve anything, it just
> validates REQUIRED_USE so that it is guaranteed it can be solved.

What I mean is whether you can guarantee that:

a. for every X that nsolve(X) == ok, solve() will be able to find
a valid solution,

b. for every X that solve() can solve reliably, nsolve(X) == ok.

> We first need to define properly & formally how to solve requse
> constraints if we want ppl to be able to rely on it (or rather write
> requse that give the expected result).
> 
> The way I see it, REQUIRED_USE ast looks like:
> (assuming ^^ is already expanded to || + ??)
> 
> clause =
>   AllOf(list of clauses)
>   | AnyOf(list of clauses)
>   | AtMostOne(list of clauses)
>   | Implication(useflag, clause)
>   | useflag
> 
> Now, portage already has the function 'eval(input, clause)'. We need to
> define 'trueify(input, clause)' that modifies input so that 'eval(input,
> clause)' is always true afterwards. Since this is SAT, there is no
> hope to make this work for all clauses. From the discussions here, a
> good algorithm would be:
> 
> trueify(input, clause) = match clause with
>   AllOf(l) -> for i in l: trueify(input, i)
> > AnyOf(l) -> if not eval(input, clause): trueify(input, l[0])
> > AtMostOne(l) -> f = (lambda x,y: pass)
> 
> for i in l:
>   f(input, i)
>   if eval(input, i): f = falsify
> > Implication(useflag, consequence) ->
> 
>if input[useflag]: trueify(input, consequence)
> > useflag -> input[useflag] = True
> 
> 
> Now you see that for the AtMostOne case we need its dual, the
> 'falsify(input, clause)' function:
> 
> falsify(input, clause) = match clause with
>   AllOf(l)   -> falsify(input, l[0])

That's a debatable case. My solve() actually 'falsifies' all
the subexpressions which might be more reliable.

> > AnyOf(l)   -> for i in l: falsify(input, i)
> > AtMostOne(l) -> for i in l:
> 
>if eval(input, clause): trueify(input, i)

Do I read this correctly that it pretty much implies enabling the first
two subexpressions?

> > Implication(useflag, consequence) ->
> 
>  if not input[useflag]: raise "impossible"

Why impossible? Unless I'm missing something, it's false already.

>  else: falsify(input, consequence)
> > useflag -> input[useflag] = False

Looks mostly sane. You've missed '!flag' but that's trivial to add.

> 
> Note how the above favors leftmost in all cases. If it needs to change
> something, it always tries to leave the leftmost untouched. Note also
> that it processes everything left to right (the AllOf case where
> REQUIRED_USE="AllOf(list of clauses)" ).

You need to be able to reorder the clauses to handle use.force
and use.mask.

> So, the very first thing to do is to agree that the above solver
> (the trueify function) is what we want to implement and set this in
> stone. There's no point in implementing a proper requse checker if the
> algorithm is meant to change. Having a formal definition will also be
> necessary to mandate that in future EAPIs.
> 
> Then, and only then, we'd need to have the above solver implemented into
> portage (hidden under a FEATURES) and import my nsolve into repoman
> (after due cleanup).
> 

Yes, that's my goal. However, before we can set the algorithm in stone
we need to verify that it will work in all of the supported cases.
Preferably it should also be as simple as possible to avoid putting too
much complexity in the spec.


-- 
Best regards,
Michał Górny

signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [RFC] Forced/automatic USE flag constraints (codename: ENFORCED_USE)

2017-06-07 Thread Alexis Ballier
On Tue, 06 Jun 2017 19:39:04 +0200
Michał Górny  wrote:

> > [...]  
> > > > > The question is whether we want to:
> > > > > 
> > > > > a. actually try to solve this nesting insanity,
> > > > > 
> > > > > b. declare it unsupported and throw REQUIRED_USE mismatch on
> > > > > user,
> > > > > 
> > > > > c. ban it altogether.
> > > > 
> > > > 
> > > > I don't think it is *that* insane to support nesting :)
> > > > 
> > > > > ( ^^ ( ?? ( a b ) c ( d e ) ) f )  
> > 
> > If you really need that then you'd need to expand it manually. It
> > seems better to have it expanded internally automatically.
> > Remember you were the one wanting to keep || & co because they're
> > simpler to read and write ;)
> >   
> 
> Well, I was able to implement the logic for all-of blocks outside
> and inside other n-ary constraints, including the necessary logic
> transformations. Fun fact is, I was able to do it without implementing
> a complete set of logic functions and transformations in AST ;-).
> 
> I've just made it fail (correctly this time) with any other kind of
> nesting -- I don't think it's going to have a real use case and even
> if it did, there are more readable ways of solving the same problem.
> 
> The question is -- will you rebase now on top of my changes

yes that should be the goal but there are a lot of things to do prior
to that I think (thanks for doing it btw)

> (and preferably use nice logical changes with good commit messages),

Heh, I really meant 'quickndirty' :) it's actually good there is an
actual semi relevant commit message :p

> or should I try later to merge the rest of your code in? ;-)
> 
> Also, do I presume correctly that for all supported cases (i.e. those
> which your nsolve does not reject), solve and nsolve are compatible?
> 

Not sure what you mean here. nsolve does not solve anything, it just
validates REQUIRED_USE so that it is guaranteed it can be solved.


We first need to define properly & formally how to solve requse
constraints if we want ppl to be able to rely on it (or rather write
requse that give the expected result).

The way I see it, REQUIRED_USE ast looks like:
(assuming ^^ is already expanded to || + ??)

clause =
AllOf(list of clauses)
  | AnyOf(list of clauses)
  | AtMostOne(list of clauses)
  | Implication(useflag, clause)
  | useflag

Now, portage already has the function 'eval(input, clause)'. We need to
define 'trueify(input, clause)' that modifies input so that 'eval(input,
clause)' is always true afterwards. Since this is SAT, there is no
hope to make this work for all clauses. From the discussions here, a
good algorithm would be:

trueify(input, clause) = match clause with
  AllOf(l) -> for i in l: trueify(input, i)
| AnyOf(l) -> if not eval(input, clause): trueify(input, l[0])
| AtMostOne(l) -> f = (lambda x,y: pass)
  for i in l:
f(input, i)
if eval(input, i): f = falsify
| Implication(useflag, consequence) ->
 if input[useflag]: trueify(input, consequence)
| useflag -> input[useflag] = True


Now you see that for the AtMostOne case we need its dual, the
'falsify(input, clause)' function:

falsify(input, clause) = match clause with
  AllOf(l)   -> falsify(input, l[0])
| AnyOf(l)   -> for i in l: falsify(input, i)
| AtMostOne(l) -> for i in l:
 if eval(input, clause): trueify(input, i)
| Implication(useflag, consequence) ->
 if not input[useflag]: raise "impossible"
 else: falsify(input, consequence)
| useflag -> input[useflag] = False
  


Note how the above favors leftmost in all cases. If it needs to change
something, it always tries to leave the leftmost untouched. Note also
that it processes everything left to right (the AllOf case where
REQUIRED_USE="AllOf(list of clauses)" ).


Now, what I need is basically a -funroll-all-loops on that algorithm
(We're Gentoo!): This explains why I butchered your code any why all
this is so dependent on the solving method chosen.

After unrolling the loops for a given REQUIRED_USE, this code will look
like:
if useflag1: if useflag2: ... : input[foo] = True; input[bar] = False
if baz: if biz: input[x] = True

In my notation this is:
[
  [useflag1, useflag2, ...]?[foo,!bar]
  [baz, biz]?[x]
]

And that's where 'nsolve' comes into play. Portage will do:

trueify(input, requse)
if not eval(input, requse) then rant

We want to guarantee 'requse' is in a form so that portage never has to
rant. My nsolve is only a sufficient condition for that. I was
expecting more like 10% of problematic cases, but considering the data
obtained is that less than .5% of required use in the tree would
require non trivial change and in all the cases I've seen those
required changes are legit, I believe we can move forward with this.


So, the very first thing to do is to agree that the above solver
(the trueify function) is what we want to implement and set thi