Adding a MACHINE_ARCH note
Warner Losh
imp at bsdimp.com
Wed Jul 10 21:27:22 UTC 2013
On Jul 10, 2013, at 3:24 PM, Baptiste Daroussin wrote:
> On Wed, Jul 10, 2013 at 04:11:37PM -0400, John Baldwin wrote:
>> On Wednesday, July 10, 2013 3:55:47 pm Baptiste Daroussin wrote:
>>> On Wed, Jul 10, 2013 at 12:26:42PM -0700, Adrian Chadd wrote:
>>>> On 10 July 2013 09:55, Warner Losh <imp at bsdimp.com> wrote:
>>>>
>>>>>> That's the reason I replied about it. Not specifically to make it
>>>>>> happen _everywhere_, but to see if we're about to migrate to a tool
>>>>>> that doesn't support it, making it a much bigger deal to migrate again
>>>>>> later.
>>>>>
>>>>> I've been talking to Baptiste, and it will support this.
>>>>
>>>> Sweet.
>>>>
>>>> Thanks!
>>>>
>>>>
>>>> -adrian
>>>
>>> Yeah I need to get a simple and uniq way to gather the different ABI, I have
>>> been creating my own ABI string to solve this, but I'm far from being a
>>> specialist.
>>>
>>> While thinking about this kind of thing, please please think about a format that
>>> can easily give us a way to figure out a way to get cross ABI binaries support.
>>>
>>> pkgng needs for example to allow i386 packages to be installed on amd64 because
>>> amd64 does support it.
>>>
>>> Maintaining a list the compatibility will be painful.
>>>
>>> In my own version I have
>>> os:version:family:class:...
>>>
>>> for example here:
>>> on FreeBSD 9 i386 we have:
>>>
>>> freebsd:9:x86:32
>>>
>>> on FreeBSD 10 amd64 we have:
>>>
>>> freebsd:9:x86:64
>>>
>>> now if I do want a package I can install on both amd64 and i386 I just have to
>>> create a package saying:
>>>
>>> freebsd:9:x86
>>>
>>> or if I want a package that can be installed on all arches:
>>>
>>> freebsd:9
>>>
>>> It became complicated for arm and mips because of the multiple variation
>>> available.
>>
>> You should look at how MACHINE_CPUARCH vs MACHINE vs MACHINE_ARCH works.
>>
>> Keep in mind that amd64/i386/pc98 should probably have MACHINE_CPUARCH of x86,
>> but we just haven't done that yet. If we did that I think you could follow
>> src's conventions and be fine. Something like:
>>
>> os:version:cpuarch:arch
>>
>> Where cpuarch == MACHINE_CPUARCH (should be x86 on amd64/i386/pc98, but isn't
>> yet. It ss sane on other platforms) and
>> arch == MACHINE_ARCH (amd64/i386 (for pc98 MACHINE_ARCH is i386))
>>
>> So that would give:
>>
>> freebsd:9:x86:amd64
>> freebsd:9:x86:i386 (for both pc98 and i386)
>> freebsd:9:arm:armv6
>>
>> etc.
>>
>> I think that means we could eventually support x32 as:
>>
>> freebsd:9:x86:x32
>>
>> We might have an x32 world (but perhaps not a kernel?, though we would need
>> the headers to DTRT)
>
> I do like the idea a lot.
We should add a flag to uname to get MACHINE_CPUARCH, and publish it as hw.cpu_arch in sysctl.
Warner
More information about the freebsd-arch
mailing list