[arch-dev-public] RFC: Use x86_64-v2 architecture
Allan McRae
allan at archlinux.org
Wed Mar 3 21:33:56 UTC 2021
On 4/3/21 6:38 am, Filipe Laíns wrote:
> On Wed, 2021-03-03 at 21:11 +1000, Allan McRae via arch-dev-public wrote:
>> On 3/3/21 9:00 pm, Filipe Laíns wrote:
>>> On Wed, 2021-03-03 at 20:52 +1000, Allan McRae via arch-dev-public wrote:
>>>> I'd hate to be the dbscripts maintainer who implements that! Also,
>>>> $arch in mirror URLs would likely have issues, as it would need be
>>>> x86_64 unless there was a complete x86_64-v2 build.
>>>>
>>>> I think a partial x86_64-v2 port would be more effort than having a full
>>>> one.
>>>>
>>>> Allan
>>>
>>> We are already rewriting dbscripts for the git migration anyway, so I think
>>> it's
>>> worth exploring.
>>> Why would the mirror URLs be an issue if we are using $arch as a
>>> placeholder?
>>>
>>> Sorry if I wasn't clear, but I meant that we would have a partial port!
>>> pacman
>>> would download all the DBs for the supported archs, hence my question about
>>> the
>>> DBs. It would look at x86_64-v2 first and if the package wasn't there, it
>>> would
>>> then look at x86_64. Makes sense?
>>> This could cause some breakage, but we work around that.
>>>
>>
>> The mirror in our mirrorlist file use "$arch" which pacman replaces with
>> the architecture of what it needs to download. Without a complete port,
>> that value would remain as x86_64. So now you need to put each mirror
>> in the mirrorlist file twice (one with x86_64-v2 and one with x86_64),
>> and you would have to assume they stayed in sync or risk partial updates.
>>
>> I think a partial port would require more effort in the long run than a
>> complete one. And if we can do x86_64-v2, we might as well do -v3 too.
>>
>> Allan
>
> Well, pacman could change the behavior here and instead of simply replacing the
> variable and declaring one sever entry, it could take raw string, evaluate it as
> each $arch and save the URL for each variant.
>
> What I am proposing is to essentially split core.db into one database for each
> arch.
>
> So, let's say the enabled arch are any, x86_64 and x86_64-v2. Then
>
> Server = https://mirror/$repo/os/$arch
>
> would register the following DBs.
>
> https://mirror/core/os/any/core.db
> https://mirror/core/os/x86_64/core.db
> https://mirror/core/os/x86_64-v2/core.db
>
> x86_64-v2 would have precedence over x86_64, if there is a package there, it
> would be used, if not then x86_64 would be checked.
>
> A full port would introduce a lot of more effort into the packaging workflow.
> Personally, I maintain a lot of packages and would definitely be affected, this
> would have an heavy impact my productivity.
>
> My proposal allows me to for eg. only do arch=(x86_64 x86_64-v2) in srslte in
> similar packages, keeping arch=(x86_64) in the rest.
>
> Does that make sense to you? :)
>
> I think the main counterargument I see for this proposal is the splitting of
> databases maybe slowing down sync a bit, but honestly, do we really care about
> that amount of performance hit? And wouldn't that be mitigated with parallel
> downloads?
The exact same is achieved by having a "core-v2" and an "core" db, where
only the x86_64-v2 optimized packages appear in "core-v2". But there
would need to be two separate package pools due to name clashes. The
dbscripts maintainer has already said no to this.
Options realistically are:
1) bump the baseline
2) provide a second more optimized port.
Allan
More information about the arch-dev-public
mailing list