gohugoio / hugo

The world’s fastest framework for building websites.
https://gohugo.io
Apache License 2.0
73.57k stars 7.39k forks source link

Recent armhf builds not working on Raspberry Pi #3176

Closed diosdog closed 7 years ago

diosdog commented 7 years ago

None of the recent armhf releases (after 0.16) seem to be working when installed on my Raspberry Pi Model B running Raspbian.

Installing with sudo dpkg -i ./hugo_0.19_armhf.deb succeeds, but trying to run hugo on its own or with any arguments prints "Illegal instruction" and immediately returns. It seems likely that is related to being built for an incompatible architecture. This is the case with the 0.17, 0.18, and 0.19 releases. However, the 0.16 (which specifically mentioned Raspberry pi compatibility) does work correctly. Has there been a change in the build process since then?

bep commented 7 years ago

Has there been a change in the build process since then?

No, but there have been changes in the Go version used, which I guess is the culprit here. I have no Rasberry Pi or any other armhf device available to test this, which I guess is a must to be able to debug this. I assume it is a Go problem.

@anthonyfok may have some input, as I think the Debian build includes armhf ...?

As a curious side note, it works fine on my Android ARM phone: https://gist.github.com/bep/a0d8a26cf6b4f8bc992729b8e50b480b

anthonyfok commented 7 years ago

Hi @diosdog,

Please try downloading http://ftp.us.debian.org/debian/pool/main/h/hugo/hugo_0.18.1-1_armhf.deb to your Raspberry Pi 1 (Model B) and see if it works for you. Note the -1 in the version number 0.18.1-1, signifying that it was built using Debian's infrasturcture. And good news: it works on my RPi1! Yay!

However, the 0.16 (which specifically mentioned Raspberry pi compatibility) does work correctly.

The 0.16 that you mentioned, https://github.com/spf13/hugo/releases/download/v0.16/hugo_0.16-1_armhf.deb, was actually 0.16-1 (note the -1 again). It was built by Debian's infrastructure, but copied to GitHub manually by me. I specifically mentioned Raspberry Pi 1 compatibility because it worked on my RPi1.

Has there been a change in the build process since then?

No. Hugo's own arm32 binary does not work on RPi1 either, try this: https://github.com/spf13/hugo/releases/download/v0.16/hugo_0.16-1_armhf.deb or https://github.com/spf13/hugo/releases/download/v0.16/hugo_0.16_linux-arm32.tgz (identical hugo binary inside) and you will see the same Illegal instruction error.

So, it is not a change in the build process, per say, but two entirely separate builds, one by Hugo's main authors, and one by Debian's ARM build daemons.

That said, Raspberry Pi 2 or 3 has a newer CPU and no such restrictions whatsoever. :-)

@bep: Thanks for replying so quickly! (Your response pops up automatically while I was typing the first paragraph, neat!) It could be Go, but I suspect it has more to do the older CPU used in Raspberry Pi 1. Unlike the newer RPi 2 and RPi3, the venerable RPi1 It does not support the whole modern armhf. I can't recall what CPU instructions exactly, but this page offers a hint: https://wiki.debian.org/RaspberryPi.

I just read elsewhere that between RPi1 and RPi2, the biggest change was "a move from the BCM2835 (single core ARMv6) to BCM2836 (quad-core ARMv7)".

So, probably while most armhf targets for ARMv7, Debian's armhf still compiles with certain flags to cater somewhat to ARMv6?

diosdog commented 7 years ago

That explains it! I was wondering what the significance of the "-1" on the 0.16 binary was. Downloading the 0.18.1-1 release you linked does indeed work on my pi as well.

Thanks for your help!

anthonyfok commented 7 years ago

You are very welcome!

While I still don't know what exactly Debian’s armhf differ from most mainstream armhf ports, this page https://wiki.debian.org/ArmHardFloatPort may offer some hints.

github-actions[bot] commented 2 years ago

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.