[1/2] Added x86_64 i586 aarch64 armv5tel support for GO language required for node_exporter compilation.

Message ID 20210606174856.177205-2-holger.sunke@posteo.de
State Superseded
Headers show
Series Reworked patches introducing node_exporter on master branch | expand

Commit Message

Holger Sunke June 6, 2021, 5:48 p.m. UTC
---
 lfs/Config | 8 ++++++++
 lfs/go     | 9 ++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)

Comments

Michael Tremer June 8, 2021, 4:54 p.m. UTC | #1
Hello Holger,

This patch looks good so far, but the root files are missing.

Do you know what those are?

Otherwise this would be mergeable.

Best,
-Michael

> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
> 
> ---
> lfs/Config | 8 ++++++++
> lfs/go     | 9 ++++++---
> 2 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/lfs/Config b/lfs/Config
> index 7d98e303b..c8be227a1 100644
> --- a/lfs/Config
> +++ b/lfs/Config
> @@ -138,6 +138,14 @@ ifeq "$(BUILD_ARCH)" "aarch64"
> 	GOARCH = arm64
> endif
> 
> +ifeq "$(BUILD_ARCH)" "armv5tel"
> +	GOARCH = armv6l
> +endif
> +
> +ifeq "$(BUILD_ARCH)" "i586"
> +	GOARCH = 386
> +endif
> +
> ###############################################################################
> # Common Macro Definitions
> ###############################################################################
> diff --git a/lfs/go b/lfs/go
> index 6ebb37080..487ad8486 100644
> --- a/lfs/go
> +++ b/lfs/go
> @@ -28,10 +28,10 @@ VER        = 1.15.4
> 
> THISAPP    = go-$(VER)
> DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
> -DL_FROM    = $(URL_IPFIRE)
> +DL_FROM    = https://golang.org/dl/
> DIR_APP    = $(DIR_SRC)/go
> TARGET     = $(DIR_INFO)/$(THISAPP)
> -SUP_ARCH   = x86_64
> +SUP_ARCH   = x86_64 i586 aarch64 armv5tel
> 
> ###############################################################################
> # Top-level Rules
> @@ -41,7 +41,10 @@ objects = $(DL_FILE)
> 
> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
> 
> -$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
> +go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
> +go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
> +go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
> +go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
> 
> install : $(TARGET)
> 
> -- 
> 2.30.2
>
Holger Sunke June 9, 2021, 6 a.m. UTC | #2
Hello Michael,

I don't know what the root files are, would you mind to explain?

Kind regards

Holger

Am 08.06.21 um 18:54 schrieb Michael Tremer:
> Hello Holger,
> 
> This patch looks good so far, but the root files are missing.
> 
> Do you know what those are?
> 
> Otherwise this would be mergeable.
> 
> Best,
> -Michael
> 
>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>
>> ---
>> lfs/Config | 8 ++++++++
>> lfs/go     | 9 ++++++---
>> 2 files changed, 14 insertions(+), 3 deletions(-)
>>
>> diff --git a/lfs/Config b/lfs/Config
>> index 7d98e303b..c8be227a1 100644
>> --- a/lfs/Config
>> +++ b/lfs/Config
>> @@ -138,6 +138,14 @@ ifeq "$(BUILD_ARCH)" "aarch64"
>> 	GOARCH = arm64
>> endif
>>
>> +ifeq "$(BUILD_ARCH)" "armv5tel"
>> +	GOARCH = armv6l
>> +endif
>> +
>> +ifeq "$(BUILD_ARCH)" "i586"
>> +	GOARCH = 386
>> +endif
>> +
>> ###############################################################################
>> # Common Macro Definitions
>> ###############################################################################
>> diff --git a/lfs/go b/lfs/go
>> index 6ebb37080..487ad8486 100644
>> --- a/lfs/go
>> +++ b/lfs/go
>> @@ -28,10 +28,10 @@ VER        = 1.15.4
>>
>> THISAPP    = go-$(VER)
>> DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
>> -DL_FROM    = $(URL_IPFIRE)
>> +DL_FROM    = https://golang.org/dl/
>> DIR_APP    = $(DIR_SRC)/go
>> TARGET     = $(DIR_INFO)/$(THISAPP)
>> -SUP_ARCH   = x86_64
>> +SUP_ARCH   = x86_64 i586 aarch64 armv5tel
>>
>> ###############################################################################
>> # Top-level Rules
>> @@ -41,7 +41,10 @@ objects = $(DL_FILE)
>>
>> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>>
>> -$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>> +go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>> +go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
>> +go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
>> +go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
>>
>> install : $(TARGET)
>>
>> -- 
>> 2.30.2
>>
>
Michael Tremer June 10, 2021, 8:57 a.m. UTC | #3
Hello,

> On 9 Jun 2021, at 07:00, Holger Sunke <holger.sunke@posteo.de> wrote:
> 
> Hello Michael,
> 
> I don't know what the root files are, would you mind to explain?

It is explained here:

  https://wiki.ipfire.org/devel/ipfire-2-x/addon-howto#package-definition

There is a log file which lists all files that are created and you will need to select the files that should be shipped in the package.

Let me know if you have any questions.

Best,
-Michael

> 
> Kind regards
> 
> Holger
> 
> Am 08.06.21 um 18:54 schrieb Michael Tremer:
>> Hello Holger,
>> This patch looks good so far, but the root files are missing.
>> Do you know what those are?
>> Otherwise this would be mergeable.
>> Best,
>> -Michael
>>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>> 
>>> ---
>>> lfs/Config | 8 ++++++++
>>> lfs/go     | 9 ++++++---
>>> 2 files changed, 14 insertions(+), 3 deletions(-)
>>> 
>>> diff --git a/lfs/Config b/lfs/Config
>>> index 7d98e303b..c8be227a1 100644
>>> --- a/lfs/Config
>>> +++ b/lfs/Config
>>> @@ -138,6 +138,14 @@ ifeq "$(BUILD_ARCH)" "aarch64"
>>> 	GOARCH = arm64
>>> endif
>>> 
>>> +ifeq "$(BUILD_ARCH)" "armv5tel"
>>> +	GOARCH = armv6l
>>> +endif
>>> +
>>> +ifeq "$(BUILD_ARCH)" "i586"
>>> +	GOARCH = 386
>>> +endif
>>> +
>>> ###############################################################################
>>> # Common Macro Definitions
>>> ###############################################################################
>>> diff --git a/lfs/go b/lfs/go
>>> index 6ebb37080..487ad8486 100644
>>> --- a/lfs/go
>>> +++ b/lfs/go
>>> @@ -28,10 +28,10 @@ VER        = 1.15.4
>>> 
>>> THISAPP    = go-$(VER)
>>> DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
>>> -DL_FROM    = $(URL_IPFIRE)
>>> +DL_FROM    = https://golang.org/dl/
>>> DIR_APP    = $(DIR_SRC)/go
>>> TARGET     = $(DIR_INFO)/$(THISAPP)
>>> -SUP_ARCH   = x86_64
>>> +SUP_ARCH   = x86_64 i586 aarch64 armv5tel
>>> 
>>> ###############################################################################
>>> # Top-level Rules
>>> @@ -41,7 +41,10 @@ objects = $(DL_FILE)
>>> 
>>> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>>> 
>>> -$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>> +go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>> +go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
>>> +go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
>>> +go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
>>> 
>>> install : $(TARGET)
>>> 
>>> -- 
>>> 2.30.2
>>>
Holger Sunke July 15, 2021, 7:32 p.m. UTC | #4
I guess I have to build ipfire for each different arch to get the log 
files as source for the root files.

How do you build ipfire for all the archs? Do you use some kind of VMs?

Kind regards

Holger



On 08.06.21 18:54, Michael Tremer wrote:
> Hello Holger,
> 
> This patch looks good so far, but the root files are missing.
> 
> Do you know what those are?
> 
> Otherwise this would be mergeable.
>  
> Best,
> -Michael
> 
>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>
>> ---
>> lfs/Config | 8 ++++++++
>> lfs/go     | 9 ++++++---
>> 2 files changed, 14 insertions(+), 3 deletions(-)
>>
>> diff --git a/lfs/Config b/lfs/Config
>> index 7d98e303b..c8be227a1 100644
>> --- a/lfs/Config
>> +++ b/lfs/Config
>> @@ -138,6 +138,14 @@ ifeq "$(BUILD_ARCH)" "aarch64"
>> 	GOARCH = arm64
>> endif
>>
>> +ifeq "$(BUILD_ARCH)" "armv5tel"
>> +	GOARCH = armv6l
>> +endif
>> +
>> +ifeq "$(BUILD_ARCH)" "i586"
>> +	GOARCH = 386
>> +endif
>> +
>> ###############################################################################
>> # Common Macro Definitions
>> ###############################################################################
>> diff --git a/lfs/go b/lfs/go
>> index 6ebb37080..487ad8486 100644
>> --- a/lfs/go
>> +++ b/lfs/go
>> @@ -28,10 +28,10 @@ VER        = 1.15.4
>>
>> THISAPP    = go-$(VER)
>> DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
>> -DL_FROM    = $(URL_IPFIRE)
>> +DL_FROM    = https://golang.org/dl/
>> DIR_APP    = $(DIR_SRC)/go
>> TARGET     = $(DIR_INFO)/$(THISAPP)
>> -SUP_ARCH   = x86_64
>> +SUP_ARCH   = x86_64 i586 aarch64 armv5tel
>>
>> ###############################################################################
>> # Top-level Rules
>> @@ -41,7 +41,10 @@ objects = $(DL_FILE)
>>
>> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>>
>> -$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>> +go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>> +go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
>> +go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
>> +go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
>>
>> install : $(TARGET)
>>
>> -- 
>> 2.30.2
>>
>
Michael Tremer July 19, 2021, 11:11 a.m. UTC | #5
Hello Holger,

> On 15 Jul 2021, at 20:32, Holger Sunke <holger.sunke@posteo.de> wrote:
> 
> I guess I have to build ipfire for each different arch to get the log files as source for the root files.

Yes, that would be the easiest way. For most packages this is not requires as the list of installed files is identical but compilers and other architecture-specific package tends to require this extra work.

> How do you build ipfire for all the archs? Do you use some kind of VMs?

You can do either that or use qemu-user-static. This will emulate the other architecture for you instead.

So you would install qemu-user-static (https://packages.debian.org/buster/qemu-user-static) or whatever the equivalent is in our your distribution of choice and then run these commands:

Erase the old build:

  ./make.sh clean

Download a toolchain for the target architecture:

  ./make.sh —-target=aarch64 gettoolchain

And then you run the build:

  ./make.sh —-target=aarch64 build

You can then do this for armv6l in next, too.

The emulated build will take a little bit longer due to the emulation.

Let me know if this has worked.

Best,
-Michael

> 
> Kind regards
> 
> Holger
> 
> 
> 
> On 08.06.21 18:54, Michael Tremer wrote:
>> Hello Holger,
>> This patch looks good so far, but the root files are missing.
>> Do you know what those are?
>> Otherwise this would be mergeable.
>> Best,
>> -Michael
>>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>> 
>>> ---
>>> lfs/Config | 8 ++++++++
>>> lfs/go     | 9 ++++++---
>>> 2 files changed, 14 insertions(+), 3 deletions(-)
>>> 
>>> diff --git a/lfs/Config b/lfs/Config
>>> index 7d98e303b..c8be227a1 100644
>>> --- a/lfs/Config
>>> +++ b/lfs/Config
>>> @@ -138,6 +138,14 @@ ifeq "$(BUILD_ARCH)" "aarch64"
>>> 	GOARCH = arm64
>>> endif
>>> 
>>> +ifeq "$(BUILD_ARCH)" "armv5tel"
>>> +	GOARCH = armv6l
>>> +endif
>>> +
>>> +ifeq "$(BUILD_ARCH)" "i586"
>>> +	GOARCH = 386
>>> +endif
>>> +
>>> ###############################################################################
>>> # Common Macro Definitions
>>> ###############################################################################
>>> diff --git a/lfs/go b/lfs/go
>>> index 6ebb37080..487ad8486 100644
>>> --- a/lfs/go
>>> +++ b/lfs/go
>>> @@ -28,10 +28,10 @@ VER        = 1.15.4
>>> 
>>> THISAPP    = go-$(VER)
>>> DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
>>> -DL_FROM    = $(URL_IPFIRE)
>>> +DL_FROM    = https://golang.org/dl/
>>> DIR_APP    = $(DIR_SRC)/go
>>> TARGET     = $(DIR_INFO)/$(THISAPP)
>>> -SUP_ARCH   = x86_64
>>> +SUP_ARCH   = x86_64 i586 aarch64 armv5tel
>>> 
>>> ###############################################################################
>>> # Top-level Rules
>>> @@ -41,7 +41,10 @@ objects = $(DL_FILE)
>>> 
>>> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>>> 
>>> -$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>> +go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>> +go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
>>> +go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
>>> +go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
>>> 
>>> install : $(TARGET)
>>> 
>>> -- 
>>> 2.30.2
>>>
Holger Sunke July 21, 2021, 5:55 p.m. UTC | #6
Hello Michael,

I think this should generally work, but currently I'm stuck with strange 
issues like these:

     Jul 21 17:51:53: Building glibc glibc-2.32.tar.xz checksum OK
     + cd /usr/src/lfs
     + make -f glibc LFS_BASEDIR=/usr/src install
     ====================================== Installing glibc-2.32 ...
     Install started; saving file list to /usr/src/lsalr ...
     cd /usr/src/glibc-2.32 && patch -Np1 < 
/usr/src/src/patches/glibc-localedef-no-archive.patch
     patching file localedata/Makefile
     Hunk #1 succeeded at 440 with fuzz 1 (offset 217 lines).
     cd /usr/src/glibc-build && \
     CFLAGS="-O2 -pipe -Wall -fexceptions -fPIC -fstack-clash-protection 
-Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS 
-fstack-protector-strong -Wno-error=maybe-uninitialized 
-fno-asynchronous-unwind-tables" \
     /usr/src/glibc-2.32/configure --build=aarch64-unknown-linux-gnu 
--prefix=/usr --libexecdir=/usr/lib/glibc 
--enable-stack-protector=strong --disable-profile --enable-kernel=4.14.0 
--enable-add-ons --without-selinux --enable-experimental-malloc 
--enable-bind-now --disable-crypt
     qemu: Unsupported syscall: 291
     /tools_aarch64/bin/ls: cannot access '.': Function not implemented
     configure: error: working directory cannot be determined
     make: *** [glibc:114: /usr/src/log/glibc-2.32] Error 2

ERROR: Building glibc 
 
                                       [ FAIL ]
     Check 
/home/holger/development/ipfire/ipfire-2.x/log/_build.base.log for 
errors if applicable 
                                 [ FAIL ]


I tried building in schroot using Ubuntu bionic and focal.

Did you already encounter these errors?

Kind regards
Holger


Am 19.07.21 um 13:11 schrieb Michael Tremer:
> Hello Holger,
> 
>> On 15 Jul 2021, at 20:32, Holger Sunke <holger.sunke@posteo.de> wrote:
>>
>> I guess I have to build ipfire for each different arch to get the log files as source for the root files.
> 
> Yes, that would be the easiest way. For most packages this is not requires as the list of installed files is identical but compilers and other architecture-specific package tends to require this extra work.
> 
>> How do you build ipfire for all the archs? Do you use some kind of VMs?
> 
> You can do either that or use qemu-user-static. This will emulate the other architecture for you instead.
> 
> So you would install qemu-user-static (https://packages.debian.org/buster/qemu-user-static) or whatever the equivalent is in our your distribution of choice and then run these commands:
> 
> Erase the old build:
> 
>    ./make.sh clean
> 
> Download a toolchain for the target architecture:
> 
>    ./make.sh —-target=aarch64 gettoolchain
> 
> And then you run the build:
> 
>    ./make.sh —-target=aarch64 build
> 
> You can then do this for armv6l in next, too.
> 
> The emulated build will take a little bit longer due to the emulation.
> 
> Let me know if this has worked.
> 
> Best,
> -Michael
> 
>>
>> Kind regards
>>
>> Holger
>>
>>
>>
>> On 08.06.21 18:54, Michael Tremer wrote:
>>> Hello Holger,
>>> This patch looks good so far, but the root files are missing.
>>> Do you know what those are?
>>> Otherwise this would be mergeable.
>>> Best,
>>> -Michael
>>>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>>>
>>>> ---
>>>> lfs/Config | 8 ++++++++
>>>> lfs/go     | 9 ++++++---
>>>> 2 files changed, 14 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/lfs/Config b/lfs/Config
>>>> index 7d98e303b..c8be227a1 100644
>>>> --- a/lfs/Config
>>>> +++ b/lfs/Config
>>>> @@ -138,6 +138,14 @@ ifeq "$(BUILD_ARCH)" "aarch64"
>>>> 	GOARCH = arm64
>>>> endif
>>>>
>>>> +ifeq "$(BUILD_ARCH)" "armv5tel"
>>>> +	GOARCH = armv6l
>>>> +endif
>>>> +
>>>> +ifeq "$(BUILD_ARCH)" "i586"
>>>> +	GOARCH = 386
>>>> +endif
>>>> +
>>>> ###############################################################################
>>>> # Common Macro Definitions
>>>> ###############################################################################
>>>> diff --git a/lfs/go b/lfs/go
>>>> index 6ebb37080..487ad8486 100644
>>>> --- a/lfs/go
>>>> +++ b/lfs/go
>>>> @@ -28,10 +28,10 @@ VER        = 1.15.4
>>>>
>>>> THISAPP    = go-$(VER)
>>>> DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
>>>> -DL_FROM    = $(URL_IPFIRE)
>>>> +DL_FROM    = https://golang.org/dl/
>>>> DIR_APP    = $(DIR_SRC)/go
>>>> TARGET     = $(DIR_INFO)/$(THISAPP)
>>>> -SUP_ARCH   = x86_64
>>>> +SUP_ARCH   = x86_64 i586 aarch64 armv5tel
>>>>
>>>> ###############################################################################
>>>> # Top-level Rules
>>>> @@ -41,7 +41,10 @@ objects = $(DL_FILE)
>>>>
>>>> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>>>>
>>>> -$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>>> +go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>>> +go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
>>>> +go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
>>>> +go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
>>>>
>>>> install : $(TARGET)
>>>>
>>>> -- 
>>>> 2.30.2
>>>>
>
Michael Tremer July 21, 2021, 6:15 p.m. UTC | #7
Hello,

We had this one before on the list. I can’t find it though.

What distribution are you using? It looks like QEMU is too old. The statx syscall (291) isn’t supported.

-Michael

> On 21 Jul 2021, at 18:55, Holger Sunke <holger.sunke@posteo.de> wrote:
> 
> Hello Michael,
> 
> I think this should generally work, but currently I'm stuck with strange issues like these:
> 
>    Jul 21 17:51:53: Building glibc glibc-2.32.tar.xz checksum OK
>    + cd /usr/src/lfs
>    + make -f glibc LFS_BASEDIR=/usr/src install
>    ====================================== Installing glibc-2.32 ...
>    Install started; saving file list to /usr/src/lsalr ...
>    cd /usr/src/glibc-2.32 && patch -Np1 < /usr/src/src/patches/glibc-localedef-no-archive.patch
>    patching file localedata/Makefile
>    Hunk #1 succeeded at 440 with fuzz 1 (offset 217 lines).
>    cd /usr/src/glibc-build && \
>    CFLAGS="-O2 -pipe -Wall -fexceptions -fPIC -fstack-clash-protection -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -Wno-error=maybe-uninitialized -fno-asynchronous-unwind-tables" \
>    /usr/src/glibc-2.32/configure --build=aarch64-unknown-linux-gnu --prefix=/usr --libexecdir=/usr/lib/glibc --enable-stack-protector=strong --disable-profile --enable-kernel=4.14.0 --enable-add-ons --without-selinux --enable-experimental-malloc --enable-bind-now --disable-crypt
>    qemu: Unsupported syscall: 291
>    /tools_aarch64/bin/ls: cannot access '.': Function not implemented
>    configure: error: working directory cannot be determined
>    make: *** [glibc:114: /usr/src/log/glibc-2.32] Error 2
> 
> ERROR: Building glibc                                       [ FAIL ]
>    Check /home/holger/development/ipfire/ipfire-2.x/log/_build.base.log for errors if applicable                                 [ FAIL ]
> 
> 
> I tried building in schroot using Ubuntu bionic and focal.
> 
> Did you already encounter these errors?
> 
> Kind regards
> Holger
> 
> 
> Am 19.07.21 um 13:11 schrieb Michael Tremer:
>> Hello Holger,
>>> On 15 Jul 2021, at 20:32, Holger Sunke <holger.sunke@posteo.de> wrote:
>>> 
>>> I guess I have to build ipfire for each different arch to get the log files as source for the root files.
>> Yes, that would be the easiest way. For most packages this is not requires as the list of installed files is identical but compilers and other architecture-specific package tends to require this extra work.
>>> How do you build ipfire for all the archs? Do you use some kind of VMs?
>> You can do either that or use qemu-user-static. This will emulate the other architecture for you instead.
>> So you would install qemu-user-static (https://packages.debian.org/buster/qemu-user-static) or whatever the equivalent is in our your distribution of choice and then run these commands:
>> Erase the old build:
>>   ./make.sh clean
>> Download a toolchain for the target architecture:
>>   ./make.sh —-target=aarch64 gettoolchain
>> And then you run the build:
>>   ./make.sh —-target=aarch64 build
>> You can then do this for armv6l in next, too.
>> The emulated build will take a little bit longer due to the emulation.
>> Let me know if this has worked.
>> Best,
>> -Michael
>>> 
>>> Kind regards
>>> 
>>> Holger
>>> 
>>> 
>>> 
>>> On 08.06.21 18:54, Michael Tremer wrote:
>>>> Hello Holger,
>>>> This patch looks good so far, but the root files are missing.
>>>> Do you know what those are?
>>>> Otherwise this would be mergeable.
>>>> Best,
>>>> -Michael
>>>>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>>>> 
>>>>> ---
>>>>> lfs/Config | 8 ++++++++
>>>>> lfs/go     | 9 ++++++---
>>>>> 2 files changed, 14 insertions(+), 3 deletions(-)
>>>>> 
>>>>> diff --git a/lfs/Config b/lfs/Config
>>>>> index 7d98e303b..c8be227a1 100644
>>>>> --- a/lfs/Config
>>>>> +++ b/lfs/Config
>>>>> @@ -138,6 +138,14 @@ ifeq "$(BUILD_ARCH)" "aarch64"
>>>>> 	GOARCH = arm64
>>>>> endif
>>>>> 
>>>>> +ifeq "$(BUILD_ARCH)" "armv5tel"
>>>>> +	GOARCH = armv6l
>>>>> +endif
>>>>> +
>>>>> +ifeq "$(BUILD_ARCH)" "i586"
>>>>> +	GOARCH = 386
>>>>> +endif
>>>>> +
>>>>> ###############################################################################
>>>>> # Common Macro Definitions
>>>>> ###############################################################################
>>>>> diff --git a/lfs/go b/lfs/go
>>>>> index 6ebb37080..487ad8486 100644
>>>>> --- a/lfs/go
>>>>> +++ b/lfs/go
>>>>> @@ -28,10 +28,10 @@ VER        = 1.15.4
>>>>> 
>>>>> THISAPP    = go-$(VER)
>>>>> DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
>>>>> -DL_FROM    = $(URL_IPFIRE)
>>>>> +DL_FROM    = https://golang.org/dl/
>>>>> DIR_APP    = $(DIR_SRC)/go
>>>>> TARGET     = $(DIR_INFO)/$(THISAPP)
>>>>> -SUP_ARCH   = x86_64
>>>>> +SUP_ARCH   = x86_64 i586 aarch64 armv5tel
>>>>> 
>>>>> ###############################################################################
>>>>> # Top-level Rules
>>>>> @@ -41,7 +41,10 @@ objects = $(DL_FILE)
>>>>> 
>>>>> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>>>>> 
>>>>> -$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>>>> +go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>>>> +go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
>>>>> +go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
>>>>> +go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
>>>>> 
>>>>> install : $(TARGET)
>>>>> 
>>>>> -- 
>>>>> 2.30.2
>>>>>
Holger Sunke July 24, 2021, 7:13 p.m. UTC | #8
Hello,

I'm using Ubuntu focal. After pulling a newer version of qemu and 
locally moving up the 'go' package in the make.sh script, I finally got 
the logs to create rootfiles for aarch64 and armv5tel.

What exact distro are you using? I could not manage do complete a build 
for aarch64 nor armv5tel as I ran into segmentation faults.

Kind reagards

Holger

Am 21.07.21 um 20:15 schrieb Michael Tremer:
> Hello,
> 
> We had this one before on the list. I can’t find it though.
> 
> What distribution are you using? It looks like QEMU is too old. The statx syscall (291) isn’t supported.
> 
> -Michael
> 
>> On 21 Jul 2021, at 18:55, Holger Sunke <holger.sunke@posteo.de> wrote:
>>
>> Hello Michael,
>>
>> I think this should generally work, but currently I'm stuck with strange issues like these:
>>
>>     Jul 21 17:51:53: Building glibc glibc-2.32.tar.xz checksum OK
>>     + cd /usr/src/lfs
>>     + make -f glibc LFS_BASEDIR=/usr/src install
>>     ====================================== Installing glibc-2.32 ...
>>     Install started; saving file list to /usr/src/lsalr ...
>>     cd /usr/src/glibc-2.32 && patch -Np1 < /usr/src/src/patches/glibc-localedef-no-archive.patch
>>     patching file localedata/Makefile
>>     Hunk #1 succeeded at 440 with fuzz 1 (offset 217 lines).
>>     cd /usr/src/glibc-build && \
>>     CFLAGS="-O2 -pipe -Wall -fexceptions -fPIC -fstack-clash-protection -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -Wno-error=maybe-uninitialized -fno-asynchronous-unwind-tables" \
>>     /usr/src/glibc-2.32/configure --build=aarch64-unknown-linux-gnu --prefix=/usr --libexecdir=/usr/lib/glibc --enable-stack-protector=strong --disable-profile --enable-kernel=4.14.0 --enable-add-ons --without-selinux --enable-experimental-malloc --enable-bind-now --disable-crypt
>>     qemu: Unsupported syscall: 291
>>     /tools_aarch64/bin/ls: cannot access '.': Function not implemented
>>     configure: error: working directory cannot be determined
>>     make: *** [glibc:114: /usr/src/log/glibc-2.32] Error 2
>>
>> ERROR: Building glibc                                       [ FAIL ]
>>     Check /home/holger/development/ipfire/ipfire-2.x/log/_build.base.log for errors if applicable                                 [ FAIL ]
>>
>>
>> I tried building in schroot using Ubuntu bionic and focal.
>>
>> Did you already encounter these errors?
>>
>> Kind regards
>> Holger
>>
>>
>> Am 19.07.21 um 13:11 schrieb Michael Tremer:
>>> Hello Holger,
>>>> On 15 Jul 2021, at 20:32, Holger Sunke <holger.sunke@posteo.de> wrote:
>>>>
>>>> I guess I have to build ipfire for each different arch to get the log files as source for the root files.
>>> Yes, that would be the easiest way. For most packages this is not requires as the list of installed files is identical but compilers and other architecture-specific package tends to require this extra work.
>>>> How do you build ipfire for all the archs? Do you use some kind of VMs?
>>> You can do either that or use qemu-user-static. This will emulate the other architecture for you instead.
>>> So you would install qemu-user-static (https://packages.debian.org/buster/qemu-user-static) or whatever the equivalent is in our your distribution of choice and then run these commands:
>>> Erase the old build:
>>>    ./make.sh clean
>>> Download a toolchain for the target architecture:
>>>    ./make.sh —-target=aarch64 gettoolchain
>>> And then you run the build:
>>>    ./make.sh —-target=aarch64 build
>>> You can then do this for armv6l in next, too.
>>> The emulated build will take a little bit longer due to the emulation.
>>> Let me know if this has worked.
>>> Best,
>>> -Michael
>>>>
>>>> Kind regards
>>>>
>>>> Holger
>>>>
>>>>
>>>>
>>>> On 08.06.21 18:54, Michael Tremer wrote:
>>>>> Hello Holger,
>>>>> This patch looks good so far, but the root files are missing.
>>>>> Do you know what those are?
>>>>> Otherwise this would be mergeable.
>>>>> Best,
>>>>> -Michael
>>>>>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>>>>>
>>>>>> ---
>>>>>> lfs/Config | 8 ++++++++
>>>>>> lfs/go     | 9 ++++++---
>>>>>> 2 files changed, 14 insertions(+), 3 deletions(-)
>>>>>>
>>>>>> diff --git a/lfs/Config b/lfs/Config
>>>>>> index 7d98e303b..c8be227a1 100644
>>>>>> --- a/lfs/Config
>>>>>> +++ b/lfs/Config
>>>>>> @@ -138,6 +138,14 @@ ifeq "$(BUILD_ARCH)" "aarch64"
>>>>>> 	GOARCH = arm64
>>>>>> endif
>>>>>>
>>>>>> +ifeq "$(BUILD_ARCH)" "armv5tel"
>>>>>> +	GOARCH = armv6l
>>>>>> +endif
>>>>>> +
>>>>>> +ifeq "$(BUILD_ARCH)" "i586"
>>>>>> +	GOARCH = 386
>>>>>> +endif
>>>>>> +
>>>>>> ###############################################################################
>>>>>> # Common Macro Definitions
>>>>>> ###############################################################################
>>>>>> diff --git a/lfs/go b/lfs/go
>>>>>> index 6ebb37080..487ad8486 100644
>>>>>> --- a/lfs/go
>>>>>> +++ b/lfs/go
>>>>>> @@ -28,10 +28,10 @@ VER        = 1.15.4
>>>>>>
>>>>>> THISAPP    = go-$(VER)
>>>>>> DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
>>>>>> -DL_FROM    = $(URL_IPFIRE)
>>>>>> +DL_FROM    = https://golang.org/dl/
>>>>>> DIR_APP    = $(DIR_SRC)/go
>>>>>> TARGET     = $(DIR_INFO)/$(THISAPP)
>>>>>> -SUP_ARCH   = x86_64
>>>>>> +SUP_ARCH   = x86_64 i586 aarch64 armv5tel
>>>>>>
>>>>>> ###############################################################################
>>>>>> # Top-level Rules
>>>>>> @@ -41,7 +41,10 @@ objects = $(DL_FILE)
>>>>>>
>>>>>> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>>>>>>
>>>>>> -$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>>>>> +go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>>>>> +go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
>>>>>> +go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
>>>>>> +go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
>>>>>>
>>>>>> install : $(TARGET)
>>>>>>
>>>>>> -- 
>>>>>> 2.30.2
>>>>>>
>
Michael Tremer July 26, 2021, 2:09 p.m. UTC | #9
Hey,

> On 24 Jul 2021, at 20:13, Holger Sunke <holger.sunke@posteo.de> wrote:
> 
> Hello,
> 
> I'm using Ubuntu focal. After pulling a newer version of qemu and locally moving up the 'go' package in the make.sh script, I finally got the logs to create rootfiles for aarch64 and armv5tel.
> 
> What exact distro are you using? I could not manage do complete a build for aarch64 nor armv5tel as I ran into segmentation faults.

I am using Debian Buster with maybe a couple of backports. I didn’t test bullseye, yet, but all these including Ubuntu should be fine.

The segmentation faults can happen and you can just restart the build and it should eventually go through.

For the nightly builds with are using native systems on AWS with their Graviton 2 processors. AFAIK there is no “budget” alternative to that.

-Michael

> 
> Kind reagards
> 
> Holger
> 
> Am 21.07.21 um 20:15 schrieb Michael Tremer:
>> Hello,
>> We had this one before on the list. I can’t find it though.
>> What distribution are you using? It looks like QEMU is too old. The statx syscall (291) isn’t supported.
>> -Michael
>>> On 21 Jul 2021, at 18:55, Holger Sunke <holger.sunke@posteo.de> wrote:
>>> 
>>> Hello Michael,
>>> 
>>> I think this should generally work, but currently I'm stuck with strange issues like these:
>>> 
>>>    Jul 21 17:51:53: Building glibc glibc-2.32.tar.xz checksum OK
>>>    + cd /usr/src/lfs
>>>    + make -f glibc LFS_BASEDIR=/usr/src install
>>>    ====================================== Installing glibc-2.32 ...
>>>    Install started; saving file list to /usr/src/lsalr ...
>>>    cd /usr/src/glibc-2.32 && patch -Np1 < /usr/src/src/patches/glibc-localedef-no-archive.patch
>>>    patching file localedata/Makefile
>>>    Hunk #1 succeeded at 440 with fuzz 1 (offset 217 lines).
>>>    cd /usr/src/glibc-build && \
>>>    CFLAGS="-O2 -pipe -Wall -fexceptions -fPIC -fstack-clash-protection -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -Wno-error=maybe-uninitialized -fno-asynchronous-unwind-tables" \
>>>    /usr/src/glibc-2.32/configure --build=aarch64-unknown-linux-gnu --prefix=/usr --libexecdir=/usr/lib/glibc --enable-stack-protector=strong --disable-profile --enable-kernel=4.14.0 --enable-add-ons --without-selinux --enable-experimental-malloc --enable-bind-now --disable-crypt
>>>    qemu: Unsupported syscall: 291
>>>    /tools_aarch64/bin/ls: cannot access '.': Function not implemented
>>>    configure: error: working directory cannot be determined
>>>    make: *** [glibc:114: /usr/src/log/glibc-2.32] Error 2
>>> 
>>> ERROR: Building glibc                                       [ FAIL ]
>>>    Check /home/holger/development/ipfire/ipfire-2.x/log/_build.base.log for errors if applicable                                 [ FAIL ]
>>> 
>>> 
>>> I tried building in schroot using Ubuntu bionic and focal.
>>> 
>>> Did you already encounter these errors?
>>> 
>>> Kind regards
>>> Holger
>>> 
>>> 
>>> Am 19.07.21 um 13:11 schrieb Michael Tremer:
>>>> Hello Holger,
>>>>> On 15 Jul 2021, at 20:32, Holger Sunke <holger.sunke@posteo.de> wrote:
>>>>> 
>>>>> I guess I have to build ipfire for each different arch to get the log files as source for the root files.
>>>> Yes, that would be the easiest way. For most packages this is not requires as the list of installed files is identical but compilers and other architecture-specific package tends to require this extra work.
>>>>> How do you build ipfire for all the archs? Do you use some kind of VMs?
>>>> You can do either that or use qemu-user-static. This will emulate the other architecture for you instead.
>>>> So you would install qemu-user-static (https://packages.debian.org/buster/qemu-user-static) or whatever the equivalent is in our your distribution of choice and then run these commands:
>>>> Erase the old build:
>>>>   ./make.sh clean
>>>> Download a toolchain for the target architecture:
>>>>   ./make.sh —-target=aarch64 gettoolchain
>>>> And then you run the build:
>>>>   ./make.sh —-target=aarch64 build
>>>> You can then do this for armv6l in next, too.
>>>> The emulated build will take a little bit longer due to the emulation.
>>>> Let me know if this has worked.
>>>> Best,
>>>> -Michael
>>>>> 
>>>>> Kind regards
>>>>> 
>>>>> Holger
>>>>> 
>>>>> 
>>>>> 
>>>>> On 08.06.21 18:54, Michael Tremer wrote:
>>>>>> Hello Holger,
>>>>>> This patch looks good so far, but the root files are missing.
>>>>>> Do you know what those are?
>>>>>> Otherwise this would be mergeable.
>>>>>> Best,
>>>>>> -Michael
>>>>>>> On 6 Jun 2021, at 18:48, Holger Sunke <holger.sunke@posteo.de> wrote:
>>>>>>> 
>>>>>>> ---
>>>>>>> lfs/Config | 8 ++++++++
>>>>>>> lfs/go     | 9 ++++++---
>>>>>>> 2 files changed, 14 insertions(+), 3 deletions(-)
>>>>>>> 
>>>>>>> diff --git a/lfs/Config b/lfs/Config
>>>>>>> index 7d98e303b..c8be227a1 100644
>>>>>>> --- a/lfs/Config
>>>>>>> +++ b/lfs/Config
>>>>>>> @@ -138,6 +138,14 @@ ifeq "$(BUILD_ARCH)" "aarch64"
>>>>>>> 	GOARCH = arm64
>>>>>>> endif
>>>>>>> 
>>>>>>> +ifeq "$(BUILD_ARCH)" "armv5tel"
>>>>>>> +	GOARCH = armv6l
>>>>>>> +endif
>>>>>>> +
>>>>>>> +ifeq "$(BUILD_ARCH)" "i586"
>>>>>>> +	GOARCH = 386
>>>>>>> +endif
>>>>>>> +
>>>>>>> ###############################################################################
>>>>>>> # Common Macro Definitions
>>>>>>> ###############################################################################
>>>>>>> diff --git a/lfs/go b/lfs/go
>>>>>>> index 6ebb37080..487ad8486 100644
>>>>>>> --- a/lfs/go
>>>>>>> +++ b/lfs/go
>>>>>>> @@ -28,10 +28,10 @@ VER        = 1.15.4
>>>>>>> 
>>>>>>> THISAPP    = go-$(VER)
>>>>>>> DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
>>>>>>> -DL_FROM    = $(URL_IPFIRE)
>>>>>>> +DL_FROM    = https://golang.org/dl/
>>>>>>> DIR_APP    = $(DIR_SRC)/go
>>>>>>> TARGET     = $(DIR_INFO)/$(THISAPP)
>>>>>>> -SUP_ARCH   = x86_64
>>>>>>> +SUP_ARCH   = x86_64 i586 aarch64 armv5tel
>>>>>>> 
>>>>>>> ###############################################################################
>>>>>>> # Top-level Rules
>>>>>>> @@ -41,7 +41,10 @@ objects = $(DL_FILE)
>>>>>>> 
>>>>>>> $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>>>>>>> 
>>>>>>> -$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>>>>>> +go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
>>>>>>> +go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
>>>>>>> +go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
>>>>>>> +go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
>>>>>>> 
>>>>>>> install : $(TARGET)
>>>>>>> 
>>>>>>> -- 
>>>>>>> 2.30.2
>>>>>>>

Patch

diff --git a/lfs/Config b/lfs/Config
index 7d98e303b..c8be227a1 100644
--- a/lfs/Config
+++ b/lfs/Config
@@ -138,6 +138,14 @@  ifeq "$(BUILD_ARCH)" "aarch64"
 	GOARCH = arm64
 endif
 
+ifeq "$(BUILD_ARCH)" "armv5tel"
+	GOARCH = armv6l
+endif
+
+ifeq "$(BUILD_ARCH)" "i586"
+	GOARCH = 386
+endif
+
 ###############################################################################
 # Common Macro Definitions
 ###############################################################################
diff --git a/lfs/go b/lfs/go
index 6ebb37080..487ad8486 100644
--- a/lfs/go
+++ b/lfs/go
@@ -28,10 +28,10 @@  VER        = 1.15.4
 
 THISAPP    = go-$(VER)
 DL_FILE    = go$(VER).$(GOOS)-$(GOARCH).tar.gz
-DL_FROM    = $(URL_IPFIRE)
+DL_FROM    = https://golang.org/dl/
 DIR_APP    = $(DIR_SRC)/go
 TARGET     = $(DIR_INFO)/$(THISAPP)
-SUP_ARCH   = x86_64
+SUP_ARCH   = x86_64 i586 aarch64 armv5tel
 
 ###############################################################################
 # Top-level Rules
@@ -41,7 +41,10 @@  objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
+go$(VER).$(GOOS)-amd64.tar.gz_MD5 = 8e9d11a16f03372c82c5134278a0bd7d
+go$(VER).$(GOOS)-386.tar.gz_MD5 = 8d1c3539c88710273f61b0c810b7448c
+go$(VER).$(GOOS)-arm64.tar.gz_MD5 = b1846fb093f0261707bda44e158bc5be
+go$(VER).$(GOOS)-armv6l.tar.gz_MD5 = cf04e0d84de6cbb7d224be1f42a83f02
 
 install : $(TARGET)