Closed diosdog closed 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
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?
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!
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.
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.
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 runhugo
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?