Re: [gentoo-dev] New bootstrap-prefix global USE-flag and patch to llvm.eclass

2023-09-13 Thread Alexey Sokolov

13.09.2023 07:22, Sam James пишет:


Fabian Groffen  writes:


[[PGP Signed Part:Undecided]]
On 12-09-2023 20:32:19 +0100, Alexey Sokolov wrote:

Bug: https://bugs.gentoo.org/758167
Full PR is at https://github.com/gentoo/gentoo/pull/32730

Several LLVM packages require this early return, otherwise they fail to
build on Darwin. I'll also need this USE-flag for
sys-devel/clang-common, to distinguish between stage2 and stage3 of
bootstrap-prefix.sh to configure clang differently.

--
Best regards,
Alexey "DarthGandalf" Sokolov



 From de2bd1abc3e5c7607413633d132c604c6a801802 Mon Sep 17 00:00:00 2001
From: Alexey Sokolov 
Date: Mon, 11 Sep 2023 23:26:49 +0100
Subject: [PATCH] llvm.eclass: add global USE flag bootstrap-prefix

Mask it everywhere except for prefix profiles

Without this, stage2's LLVM packages fail to build.

Bug: https://bugs.gentoo.org/758167
Signed-off-by: Alexey Sokolov 
---
  eclass/llvm.eclass| 7 +++
  profiles/base/use.mask| 4 
  profiles/features/prefix/use.mask | 4 
  profiles/use.desc | 1 +
  4 files changed, 16 insertions(+)

diff --git a/eclass/llvm.eclass b/eclass/llvm.eclass
index 8198650aad9a7..87c2cedb3a376 100644
--- a/eclass/llvm.eclass
+++ b/eclass/llvm.eclass
@@ -64,6 +64,8 @@ esac
  if [[ ! ${_LLVM_ECLASS} ]]; then
  _LLVM_ECLASS=1
  
+IUSE="bootstrap-prefix"

+
  # make sure that the versions installing straight into /usr/bin
  # are uninstalled
  DEPEND="!!sys-devel/llvm:0"
@@ -242,6 +244,11 @@ llvm_fix_tool_path() {
  llvm_pkg_setup() {
debug-print-function ${FUNCNAME} "${@}"
  
+	if use bootstrap-prefix; then

+   # AppleClang has unparseable version numbers, but it's 
irrelevant anyway
+   return
+   fi
+


I might misunderstand this, but is this USE-flag supposed to be set only
during bootstrap, e.g. when host-provided Clang is used?  If so, would
it be possible to use has_version or something instead?


Another option is something I think we've done in the past - check
for use prefix and then some extra env var we set in the bootstrap
script.


Somehow I haven't thought about using extra env var, will try that, thanks.

We'll still need the USE-flag for sys-devel/clang-common because it will 
install different content with and without it, but that can be limited 
to a single package.




I think I'd prefer either your idea or the one I just mention
to a USE, but I don't think I feel very strongly between any of it.

(but given mgorny isn't keen on the USE in the PR at
https://github.com/gentoo/gentoo/pull/32730,
that's a vote against it)



Thanks,
Fabian





--
Best regards,
Alexey "DarthGandalf" Sokolov




Re: [gentoo-dev] New bootstrap-prefix global USE-flag and patch to llvm.eclass

2023-09-12 Thread Sam James


Fabian Groffen  writes:

> [[PGP Signed Part:Undecided]]
> On 12-09-2023 20:32:19 +0100, Alexey Sokolov wrote:
>> Bug: https://bugs.gentoo.org/758167
>> Full PR is at https://github.com/gentoo/gentoo/pull/32730
>> 
>> Several LLVM packages require this early return, otherwise they fail to 
>> build on Darwin. I'll also need this USE-flag for 
>> sys-devel/clang-common, to distinguish between stage2 and stage3 of 
>> bootstrap-prefix.sh to configure clang differently.
>> 
>> -- 
>> Best regards,
>> Alexey "DarthGandalf" Sokolov
>
>> From de2bd1abc3e5c7607413633d132c604c6a801802 Mon Sep 17 00:00:00 2001
>> From: Alexey Sokolov 
>> Date: Mon, 11 Sep 2023 23:26:49 +0100
>> Subject: [PATCH] llvm.eclass: add global USE flag bootstrap-prefix
>> 
>> Mask it everywhere except for prefix profiles
>> 
>> Without this, stage2's LLVM packages fail to build.
>> 
>> Bug: https://bugs.gentoo.org/758167
>> Signed-off-by: Alexey Sokolov 
>> ---
>>  eclass/llvm.eclass| 7 +++
>>  profiles/base/use.mask| 4 
>>  profiles/features/prefix/use.mask | 4 
>>  profiles/use.desc | 1 +
>>  4 files changed, 16 insertions(+)
>> 
>> diff --git a/eclass/llvm.eclass b/eclass/llvm.eclass
>> index 8198650aad9a7..87c2cedb3a376 100644
>> --- a/eclass/llvm.eclass
>> +++ b/eclass/llvm.eclass
>> @@ -64,6 +64,8 @@ esac
>>  if [[ ! ${_LLVM_ECLASS} ]]; then
>>  _LLVM_ECLASS=1
>>  
>> +IUSE="bootstrap-prefix"
>> +
>>  # make sure that the versions installing straight into /usr/bin
>>  # are uninstalled
>>  DEPEND="!!sys-devel/llvm:0"
>> @@ -242,6 +244,11 @@ llvm_fix_tool_path() {
>>  llvm_pkg_setup() {
>>  debug-print-function ${FUNCNAME} "${@}"
>>  
>> +if use bootstrap-prefix; then
>> +# AppleClang has unparseable version numbers, but it's 
>> irrelevant anyway
>> +return
>> +fi
>> +
>
> I might misunderstand this, but is this USE-flag supposed to be set only
> during bootstrap, e.g. when host-provided Clang is used?  If so, would
> it be possible to use has_version or something instead?

Another option is something I think we've done in the past - check
for use prefix and then some extra env var we set in the bootstrap
script.

I think I'd prefer either your idea or the one I just mention
to a USE, but I don't think I feel very strongly between any of it.

(but given mgorny isn't keen on the USE in the PR at
https://github.com/gentoo/gentoo/pull/32730,
that's a vote against it)

>
> Thanks,
> Fabian
>



Re: [gentoo-dev] New bootstrap-prefix global USE-flag and patch to llvm.eclass

2023-09-12 Thread Fabian Groffen
On 12-09-2023 20:32:19 +0100, Alexey Sokolov wrote:
> Bug: https://bugs.gentoo.org/758167
> Full PR is at https://github.com/gentoo/gentoo/pull/32730
> 
> Several LLVM packages require this early return, otherwise they fail to 
> build on Darwin. I'll also need this USE-flag for 
> sys-devel/clang-common, to distinguish between stage2 and stage3 of 
> bootstrap-prefix.sh to configure clang differently.
> 
> -- 
> Best regards,
> Alexey "DarthGandalf" Sokolov

> From de2bd1abc3e5c7607413633d132c604c6a801802 Mon Sep 17 00:00:00 2001
> From: Alexey Sokolov 
> Date: Mon, 11 Sep 2023 23:26:49 +0100
> Subject: [PATCH] llvm.eclass: add global USE flag bootstrap-prefix
> 
> Mask it everywhere except for prefix profiles
> 
> Without this, stage2's LLVM packages fail to build.
> 
> Bug: https://bugs.gentoo.org/758167
> Signed-off-by: Alexey Sokolov 
> ---
>  eclass/llvm.eclass| 7 +++
>  profiles/base/use.mask| 4 
>  profiles/features/prefix/use.mask | 4 
>  profiles/use.desc | 1 +
>  4 files changed, 16 insertions(+)
> 
> diff --git a/eclass/llvm.eclass b/eclass/llvm.eclass
> index 8198650aad9a7..87c2cedb3a376 100644
> --- a/eclass/llvm.eclass
> +++ b/eclass/llvm.eclass
> @@ -64,6 +64,8 @@ esac
>  if [[ ! ${_LLVM_ECLASS} ]]; then
>  _LLVM_ECLASS=1
>  
> +IUSE="bootstrap-prefix"
> +
>  # make sure that the versions installing straight into /usr/bin
>  # are uninstalled
>  DEPEND="!!sys-devel/llvm:0"
> @@ -242,6 +244,11 @@ llvm_fix_tool_path() {
>  llvm_pkg_setup() {
>   debug-print-function ${FUNCNAME} "${@}"
>  
> + if use bootstrap-prefix; then
> + # AppleClang has unparseable version numbers, but it's 
> irrelevant anyway
> + return
> + fi
> +

I might misunderstand this, but is this USE-flag supposed to be set only
during bootstrap, e.g. when host-provided Clang is used?  If so, would
it be possible to use has_version or something instead?

Thanks,
Fabian

>   if [[ ${MERGE_TYPE} != binary ]]; then
>   LLVM_SLOT=$(get_llvm_slot "${LLVM_MAX_SLOT}")
>  
> diff --git a/profiles/base/use.mask b/profiles/base/use.mask
> index 1d4f5b92865df..cc86fde21097a 100644
> --- a/profiles/base/use.mask
> +++ b/profiles/base/use.mask
> @@ -8,6 +8,10 @@
>  # eudev is masked for removal
>  eudev
>  
> +# Alexey Sokolov  (2023-09-11)
> +# Only needed during bootstrap of prefix
> +bootstrap-prefix
> +
>  # David Seifert  (2023-09-09)
>  # EOL upstream in 2 months, causes major headaches for OpenSSL 1.1
>  # masking. Removal on 2023-10-09.
> diff --git a/profiles/features/prefix/use.mask 
> b/profiles/features/prefix/use.mask
> index 482ce57f04485..1f43ca23fd101 100644
> --- a/profiles/features/prefix/use.mask
> +++ b/profiles/features/prefix/use.mask
> @@ -4,6 +4,10 @@
>  # prefix USE flag should always be unmasked in prefix profiles
>  -prefix
>  
> +# Alexey Sokolov  (2023-09-11)
> +# Allow bootstrapping the prefix
> +-bootstrap-prefix
> +
>  # USE flags inherited by the base/use.defaults file that shouldn't be in 
> Prefix
>  gpm
>  
> diff --git a/profiles/use.desc b/profiles/use.desc
> index 6034f3bf6fc31..37c64f43759da 100644
> --- a/profiles/use.desc
> +++ b/profiles/use.desc
> @@ -29,6 +29,7 @@ big-endian - Big-endian toolchain support
>  bindist - Flag to enable or disable options for prebuilt (GRP) packages (eg. 
> due to licensing issues)
>  blas - Add support for the virtual/blas numerical library
>  bluetooth - Enable Bluetooth Support
> +bootstrap-prefix - !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, 
> used for bootstrapping Gentoo Prefix
>  branding - Enable Gentoo specific branding
>  build - !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used for 
> creating build images and the first half of bootstrapping [make stage1]
>  bzip2 - Use the bzlib compression library


-- 
Fabian Groffen
Gentoo on a different level


signature.asc
Description: PGP signature


[gentoo-dev] New bootstrap-prefix global USE-flag and patch to llvm.eclass

2023-09-12 Thread Alexey Sokolov

Bug: https://bugs.gentoo.org/758167
Full PR is at https://github.com/gentoo/gentoo/pull/32730

Several LLVM packages require this early return, otherwise they fail to 
build on Darwin. I'll also need this USE-flag for 
sys-devel/clang-common, to distinguish between stage2 and stage3 of 
bootstrap-prefix.sh to configure clang differently.


--
Best regards,
Alexey "DarthGandalf" SokolovFrom de2bd1abc3e5c7607413633d132c604c6a801802 Mon Sep 17 00:00:00 2001
From: Alexey Sokolov 
Date: Mon, 11 Sep 2023 23:26:49 +0100
Subject: [PATCH] llvm.eclass: add global USE flag bootstrap-prefix

Mask it everywhere except for prefix profiles

Without this, stage2's LLVM packages fail to build.

Bug: https://bugs.gentoo.org/758167
Signed-off-by: Alexey Sokolov 
---
 eclass/llvm.eclass| 7 +++
 profiles/base/use.mask| 4 
 profiles/features/prefix/use.mask | 4 
 profiles/use.desc | 1 +
 4 files changed, 16 insertions(+)

diff --git a/eclass/llvm.eclass b/eclass/llvm.eclass
index 8198650aad9a7..87c2cedb3a376 100644
--- a/eclass/llvm.eclass
+++ b/eclass/llvm.eclass
@@ -64,6 +64,8 @@ esac
 if [[ ! ${_LLVM_ECLASS} ]]; then
 _LLVM_ECLASS=1
 
+IUSE="bootstrap-prefix"
+
 # make sure that the versions installing straight into /usr/bin
 # are uninstalled
 DEPEND="!!sys-devel/llvm:0"
@@ -242,6 +244,11 @@ llvm_fix_tool_path() {
 llvm_pkg_setup() {
 	debug-print-function ${FUNCNAME} "${@}"
 
+	if use bootstrap-prefix; then
+		# AppleClang has unparseable version numbers, but it's irrelevant anyway
+		return
+	fi
+
 	if [[ ${MERGE_TYPE} != binary ]]; then
 		LLVM_SLOT=$(get_llvm_slot "${LLVM_MAX_SLOT}")
 
diff --git a/profiles/base/use.mask b/profiles/base/use.mask
index 1d4f5b92865df..cc86fde21097a 100644
--- a/profiles/base/use.mask
+++ b/profiles/base/use.mask
@@ -8,6 +8,10 @@
 # eudev is masked for removal
 eudev
 
+# Alexey Sokolov  (2023-09-11)
+# Only needed during bootstrap of prefix
+bootstrap-prefix
+
 # David Seifert  (2023-09-09)
 # EOL upstream in 2 months, causes major headaches for OpenSSL 1.1
 # masking. Removal on 2023-10-09.
diff --git a/profiles/features/prefix/use.mask b/profiles/features/prefix/use.mask
index 482ce57f04485..1f43ca23fd101 100644
--- a/profiles/features/prefix/use.mask
+++ b/profiles/features/prefix/use.mask
@@ -4,6 +4,10 @@
 # prefix USE flag should always be unmasked in prefix profiles
 -prefix
 
+# Alexey Sokolov  (2023-09-11)
+# Allow bootstrapping the prefix
+-bootstrap-prefix
+
 # USE flags inherited by the base/use.defaults file that shouldn't be in Prefix
 gpm
 
diff --git a/profiles/use.desc b/profiles/use.desc
index 6034f3bf6fc31..37c64f43759da 100644
--- a/profiles/use.desc
+++ b/profiles/use.desc
@@ -29,6 +29,7 @@ big-endian - Big-endian toolchain support
 bindist - Flag to enable or disable options for prebuilt (GRP) packages (eg. due to licensing issues)
 blas - Add support for the virtual/blas numerical library
 bluetooth - Enable Bluetooth Support
+bootstrap-prefix - !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used for bootstrapping Gentoo Prefix
 branding - Enable Gentoo specific branding
 build - !!internal use only!! DO NOT SET THIS FLAG YOURSELF!, used for creating build images and the first half of bootstrapping [make stage1]
 bzip2 - Use the bzlib compression library