[Gta04-owner] [Tinkerphones] +++ next breakthrough for qtmoko2 +++

Josua Mayer josua.mayer at jm0.eu
Mon Mar 26 15:48:03 CEST 2018


Hi Nikolaus,

I came across a similar question a year ago, but I had to find some time
for digging it out.
So back then I wanted to use DEB_TARGET_GNU_TYPE to identify the long
compiler name, arm-linux-gnueabihf.

Now back in Wheezy, we only had BUILD_* and HOST_*. Quoting the Debian
Wiki Page on cross-build packaging [1]:
"HOST is the machine we are building for"
"BUILD is the machine we are building on"

So HOST_* is what we want to use here!

I don't fully understand what TARGET means. Reading in the gcc manual
[2] about build, host and target I understand this:
We are building software on a machine (BUILD), to execute on another
machine (HOST). And then we can have a TARGET machine that our newly
built software may produce code for, if it is a compiler, assembler or
otherwise generating tool.

So I conclude that we should be using HOST, not only on Wheezy, but also
on later releases as this is most accurate to our use-case.

br
Josua

[1] https://wiki.debian.org/CrossBuildPackagingGuidelines
[2] https://gcc.gnu.org/onlinedocs/gcc-4.0.2/gccint/Configure-Terms.html


Am 26.03.2018 um 14:07 schrieb H. Nikolaus Schaller:
> Hi Jonas,
>
>> Am 26.03.2018 um 13:17 schrieb Jonas Smedegaard <jonas at jones.dk>:
>>
>> Quoting H. Nikolaus Schaller (2018-03-26 12:43:56)
>>> Hi,
>>> nobody with an idea or knowledge?
>>>
>>> BR,
>>> Nikolaus
>>>
>>>> Am 18.03.2018 um 15:37 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>>>>
>>>> Another topic:
>>>>
>>>> I am trying to build it on/for wheezy, but ./mkqtspec.sh fails with:
>>>>
>>>>      dpkg-architecture: error: DEB_TARGET_ARCH is not a supported variable name
>>>>
>>>> Jessie reports:
>>>>
>>>> root at letux:# dpkg-architecture
>>>> DEB_BUILD_ARCH=armhf
>>>> DEB_BUILD_ARCH_BITS=32
>>>> DEB_BUILD_ARCH_CPU=arm
>>>> DEB_BUILD_ARCH_ENDIAN=little
>>>> DEB_BUILD_ARCH_OS=linux
>>>> DEB_BUILD_GNU_CPU=arm
>>>> DEB_BUILD_GNU_SYSTEM=linux-gnueabihf
>>>> DEB_BUILD_GNU_TYPE=arm-linux-gnueabihf
>>>> DEB_BUILD_MULTIARCH=arm-linux-gnueabihf
>>>> DEB_HOST_ARCH=armhf
>>>> DEB_HOST_ARCH_BITS=32
>>>> DEB_HOST_ARCH_CPU=arm
>>>> DEB_HOST_ARCH_ENDIAN=little
>>>> DEB_HOST_ARCH_OS=linux
>>>> DEB_HOST_GNU_CPU=arm
>>>> DEB_HOST_GNU_SYSTEM=linux-gnueabihf
>>>> DEB_HOST_GNU_TYPE=arm-linux-gnueabihf
>>>> DEB_HOST_MULTIARCH=arm-linux-gnueabihf
>>>> DEB_TARGET_ARCH=armhf
>>>> DEB_TARGET_ARCH_BITS=32
>>>> DEB_TARGET_ARCH_CPU=arm
>>>> DEB_TARGET_ARCH_ENDIAN=little
>>>> DEB_TARGET_ARCH_OS=linux
>>>> DEB_TARGET_GNU_CPU=arm
>>>> DEB_TARGET_GNU_SYSTEM=linux-gnueabihf
>>>> DEB_TARGET_GNU_TYPE=arm-linux-gnueabihf
>>>> DEB_TARGET_MULTIARCH=arm-linux-gnueabihf
>>>> root at letux:#
>>>>
>>>> Wheezy reports:
>>>>
>>>> root at letux:/# dpkg-architecture
>>>> DEB_BUILD_ARCH=armhf
>>>> DEB_BUILD_ARCH_BITS=32
>>>> DEB_BUILD_ARCH_CPU=arm
>>>> DEB_BUILD_ARCH_ENDIAN=little
>>>> DEB_BUILD_ARCH_OS=linux
>>>> DEB_BUILD_GNU_CPU=arm
>>>> DEB_BUILD_GNU_SYSTEM=linux-gnueabihf
>>>> DEB_BUILD_GNU_TYPE=arm-linux-gnueabihf
>>>> DEB_BUILD_MULTIARCH=arm-linux-gnueabihf
>>>> DEB_HOST_ARCH=armhf
>>>> DEB_HOST_ARCH_BITS=32
>>>> DEB_HOST_ARCH_CPU=arm
>>>> DEB_HOST_ARCH_ENDIAN=little
>>>> DEB_HOST_ARCH_OS=linux
>>>> DEB_HOST_GNU_CPU=arm
>>>> DEB_HOST_GNU_SYSTEM=linux-gnueabihf
>>>> DEB_HOST_GNU_TYPE=arm-linux-gnueabihf
>>>> DEB_HOST_MULTIARCH=arm-linux-gnueabihf
>>>> root at letux:/#
>>>>
>>>> So can we safely replace DEB_TARGET_ARCH by DEB_BUILD_ARCH
>>>> in DEB_TARGET_ARCH=$(dpkg-architecture -qDEB_TARGET_ARCH) ?
>> "man dpkg-architecture" says:
>>
>>> DEB_BUILD_ARCH
>>>  The Debian architecture of the build machine.
> ok.
>
>> and
>>
>>> DEB_TARGET_ARCH
>>>  The Debian architecture of the target machine (since dpkg 1.17.14).
> ok. So we can use the same since the build is not a cross-build or anything.
>
>> dpkg version in wheezy is too old:
>> https://packages.debian.org/source/oldoldstable/dpkg
> Well, for building a package for wheezy it should never be too old...
> Only some source code could be too new :)
>
>> If build machine is same architecture as target machine, then you can
>> reuse, else not.
> So does this mean the following?
>
> * use DEB_TARGET_ARCH if defined
> * fall back to DEB_BUILD_ARCH otherwise
>
> I.e. replace it by:
>
> DEB_TARGET_ARCH=$(dpkg-architecture -qDEB_TARGET_ARCH 2>/dev/null)
> [ "$DEB_TARGET_ARCH" ] || DEB_TARGET_ARCH=$(dpkg-architecture -qDEB_BUILD_ARCH
>
> BR and thanks,
> Nikolaus
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.goldelico.com/pipermail/gta04-owner/attachments/20180326/d22edfd5/attachment-0001.html>


More information about the Gta04-owner mailing list