bedrocklinux / bedrocklinux-userland

This tracks development for the things such as scripts and (defaults for) config files for Bedrock Linux
https://bedrocklinux.org
GNU General Public License v2.0
597 stars 62 forks source link

Potential Funtoo Linux Fetch Support? #286

Open Izder456 opened 1 year ago

Izder456 commented 1 year ago

I wonder if a Funtoo Linux Strata Fetch would be possible.

Funtoo Does Not use USE Flags, and has pre-cooked profiles for CPU sub architectures as Stage3 tarballs or with their ego profile utility.

I wonder if Bedrock Linux has a subarch detection system, that could allow this functionality to be replicated in a Funtoo Linux Strata Fetch.

Funtoo Linux has a very similar installation process to gentoo- so the overall skeleton of the gentoo fetch script could serve as a basis.

I will have to do more reading on bedrock fetch scripting.

If I make a functional fetch script I will send a prq with that.

I am asking if people had pointers that I must consider when I do this.

paradigm commented 1 year ago

I wonder if Bedrock Linux has a subarch detection system, that could allow this functionality to be replicated in a Funtoo Linux Strata Fetch.

When downloading/building Bedrock's installer, the user has to select the appropriate architecture. This is the default brl fetch uses, but the user can override with brl fetch's -a flag.

If that's what you mean, then yes, Bedrock should effectively provide enough information. Otherwise, if funtoo supports even more nuanced architecture descriptions, Bedrock does not and some other solution will be needed.

I will have to do more reading on bedrock fetch scripting. [...] I am asking if people had pointers that I must consider when I do this.

https://bedrocklinux.org/0.7/extending.html#brl-fetch-new-distros

If I make a functional fetch script I will send a prq with that.

Sounds good!

Izder456 commented 1 year ago

When downloading/building Bedrock's installer, the user has to select the appropriate architecture. This is the default brl fetch uses, but the user can override with brl fetch's -a flag.

If that's what you mean, then yes, Bedrock should effectively provide enough information. Otherwise, if funtoo supports even more nuanced architecture descriptions, Bedrock does not and some other solution will be needed

i should clarify that cpu subarch != cpu arch

cpu arch is like amd64 vs i586

subarch is like ivylake vs haswell codename intel chipsets.

it's much more nuanced.

so, yes- bedrock may need that functionality to make a funtoo fetch work effectively.

but- funtoo linux also has generic amd64 and i586 support as well, so for now a generic cpu architecture should suffice, but not ideal.

paradigm commented 1 year ago

Ah, gotcha. Right, the current Bedrock 0.7 doesn't detect/track/store that at all. The future 0.8 roadmap includes supporting Bedrock component updates from source with -mnative, -C target-cpu=native, etc as a first-class concept, but it still won't actually detect/track/store what that native subarch is so much as request compilers figure it out as needed. The 0.8 roadmap also includes giving brl fetch something like a --feature flag for more specific per-distro setup. We might be able to give the brl fetch Funtoo support something like --feature subarch=ivylake then. However, that's not available at the moment.

If compilers are available, I know they can be queried for that kind of information. For example this works for me on some of my machines:

gcc -march=native -Q --help=target | awk '/^ *-march=/{print$NF}'

However, (1) we can't guarantee such a compiler is available as Bedrock supports fairly minimal systems (e.g. maybe the user is getting Funtoo for its compiler toolchains and doesn't have any pre-Funtoo), and (2) even if it is available we don't actually know it's the actual native CPU, as Bedrock supports per-stratum architectures (e.g. the aforementioned brl fetch -a).

Is it feasible for brl fetch to download a more generic arch and have users configure Funtoo for the subarch and update (e.g. whatever the Funtoo equivalent of emerge @world is)? The idea behind brl fetch is to just kick off the bootstrap process; users are expected to need to do some post-fetch configuration, package installation, etc anyways.