ccl icon indicating copy to clipboard operation
ccl copied to clipboard

Build broken on ARM7 after v1.12-dev.4

Open pqnelson opened this issue 3 years ago • 9 comments

I'm building from scratch on a Raspberry Pi (with ARMv7 Processor rev 5 (v71) CPU), and it hangs on optimizaters.lisp on v1.12-dev.5 (or v1.12 or v1.12.1), but it works fine on v1.12-dev.4.

To be clear, my basic steps are thus:

~/src/$ git clone https://github.com/Clozure/ccl/
...
~/src/$ cd ccl/
~/src/ccl/$ git checkout v1.12-dev.4
~/src/ccl/$ cd lisp-kernel/linuxarm
~/src/ccl/lisp-kernel/linuxarm/$ make clean; make
...
~/src/ccl/lisp-kernel/linuxarm/$ cd ../..
~/src/ccl/$ ./scripts/get-binaries linuxarm
...
~/src/ccl/$ ./armcl

? (ccl:rebuild-ccl :full t)
;; everything compiles fine

But if I ran git checkout v1.12-dev.5, the (ccl:rebuild-ccl :full t) looks like its working, but hangs on compiling optimizers.lisp

pqnelson avatar Nov 13 '21 00:11 pqnelson

Coincidentally, I have the same problem with my laptop running some Intel Core 2 Duo CPU.

pqnelson avatar Nov 13 '21 00:11 pqnelson

I encountered that issue in #204 and had to work around by making several more building steps - can you check if that workaround works for you?

On 13.11.2021 01:33, Alex wrote:

Coincidentally, I have the same problem with my laptop running some Intel Core 2 Duo CPU.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/Clozure/ccl/issues/399#issuecomment-967744057, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADSZHKUYNQT74BZVC3MSR6DULWW5XANCNFSM5H56L7BQ. Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

phoe avatar Nov 13 '21 07:11 phoe

Hi,

What does the last little bit of /proc/cpuinfo show?

I ask because my few years old Pi3 B+ shows 

model name      : ARMv7 Processor rev 4 (v7l)

Hardware        : BCM2835

Revision        : a020d3

so older.  It runs Linux 4.19.66-v7+.

But my Pi 400 rev 1 shows something that implies it is even older

ARMv7 Processor rev 3 (v7l)

Hardware        : BCM2711

Revision        : c03130

running Linux 5.10.63-v7l+

Using this procedure to build HEAD seems to produce something that works on both systems.

git clone https://github.com/Clozure/ccl.git

curl -L -O https://github.com/Clozure/ccl/releases/download/v1.12/linuxarm.tar.gz

cd ccl

tar xvf ../linuxarm.tar.gz 

./armcl

(ccl:rebuild-ccl :full t)

and repeat to make sure the new ccl can rebuild itself.

./armcl

(ccl:rebuild-ccl :full t)

Both built and rebuilt v1.12.1-5-g110c2306 just fine.

Of course any change can cause something to break but the change between -4 and -5 is adding :ieee-floating-point to features.  This does seem a bit unlikely but could be.

I wonder if there is really a CPU specific change with the rev4 vs rev5.  Or maybe a kernel change since sometimes linux emulates certain instructions and some might emulate differently?

cheers

bruce

On 2021-11-13T08:22:12.000+01:00, phoe @.***> wrote:

 I encountered that issue in #204 and had to work around by making  several more building steps - can you check if that workaround works  for  you?    On 13.11.2021 01:33, Alex wrote:

    Coincidentally, I have the same problem with my laptop running  some   Intel Core 2 Duo CPU.     —   You are receiving this because you are subscribed to this thread.   Reply to this email directly, view it on GitHub    https://github.com/Clozure/ccl/issues/399#issuecomment-967744057;,  or   unsubscribe    https://github.com/notifications/unsubscribe-auth/ADSZHKUYNQT74BZVC3MSR6DULWW5XANCNFSM5H56L7BQ;.   Triage notifications on the go with GitHub Mobile for iOS    https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675;   or Android    https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub;.        —  You are receiving this because you are subscribed to this thread.  Reply to this email directly, view it on GitHub  [https://github.com/Clozure/ccl/issues/399#issuecomment-967797329],  or unsubscribe  [https://github.com/notifications/unsubscribe-auth/ACEXJIQ6SLBWDULSKCQKAQ3ULYG2JANCNFSM5H56L7BQ].  Triage notifications on the go with GitHub Mobile for iOS  [https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675]  or Android  [https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub].

edoneel avatar Nov 13 '21 09:11 edoneel

@phoe I am afraid those extra steps are rather too cryptic for me to follow along.

pqnelson avatar Nov 13 '21 15:11 pqnelson

@edoneel I have CPU revision 5.

pqnelson avatar Nov 13 '21 15:11 pqnelson

I have modified my build steps to be:

~/src/$ git clone https://github.com/Clozure/ccl/
...
~/src/$ cd ccl/
~/src/ccl/$ git checkout v1.12
~/src/ccl/$ curl -L -O https://github.com/Clozure/ccl/releases/download/v1.12/linuxarm.tar.gz
~/src/ccl/$ tar xvf linuxarm.tar.gz 
~/src/ccl/$ cd lisp-kernel/linuxarm
~/src/ccl/lisp-kernel/linuxarm/$ make clean; make
...
~/src/ccl/lisp-kernel/linuxarm/$ cd ../..
~/src/ccl/$ ./scripts/get-binaries linuxarm
...
~/src/ccl/$ ./armcl
> Error: The value "CL" is not of the expected type LIST.
> While eecuting: (:INTERNAL CCL::OPERATION-ON-ALL-SPECS CCL::%%DEFINE_PACKAGE), in process listener(1)
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Skip loading init file.
> Type :? for other options.
> 
> :q

? (ccl:rebuild-ccl :full t)
;; everything compiles fine

Sadly I always encounter this error when starting armcl now.

pqnelson avatar Nov 13 '21 15:11 pqnelson

@phoe Morning coffee has cleared the cobwebs, I have tried:

~/src/$ git clone https://github.com/Clozure/ccl/
...
~/src/$ cd ccl/
~/src/ccl/$ git checkout v1.12
~/src/ccl/$ wget https://plaster.tymoon.eu/view/1144/raw?password
~/src/ccl/$ mv raw?password foo.lisp
~/src/ccl/$ cd lisp-kernel/linuxarm
~/src/ccl/lisp-kernel/linuxarm/$ make clean; make
...
~/src/ccl/lisp-kernel/linuxarm/$ cd ../..
~/src/ccl/$ ./scripts/get-binaries linuxarm
...
~/src/ccl/$ ./armcl

? (load "foo.lisp")
;; works fine
? (ccl:rebuild-ccl :full t)
;; hangs on optimizers.lisp again

pqnelson avatar Nov 13 '21 15:11 pqnelson

I think that there is some sort of intermediate commit that you must checkout in order to work around the bug that prevents optimizers.lisp from getting compiled. I think it might be 2912b11 (rebuild CCL) and then checkout the current master (and rebuild again), but I don't remember anymore - you might need to try and bisect the repository.

phoe avatar Nov 13 '21 15:11 phoe

I have tried this, but have discovered an amazing bug, which seems to reproduce what happens when I tried @edoneel's suggested route.

This is what I've done:

~/src/$ git clone https://github.com/Clozure/ccl/
...
~/src/$ cd ccl/
~/src/ccl/$ git checkout v1.12-dev.4
~/src/ccl/$ cd lisp-kernel/linuxarm
~/src/ccl/lisp-kernel/linuxarm/$ make clean; make
...
~/src/ccl/lisp-kernel/linuxarm/$ cd ../..
~/src/ccl/$ ./scripts/get-binaries linuxarm
...
~/src/ccl/$ ./armcl

? (ccl:rebuild-ccl :full t)
;; everything compiles fine
? (quit)

~/src/ccl/$ git checkout f120efb
~/src/ccl/$ wget https://plaster.tymoon.eu/view/1144/raw?password -o phoe-patch.lisp
~/src/ccl/$ ./armcl

? (load "phoe-patch.lisp")
;; a few warning messages
? (ccl:rebuild-ccl :full t)
;; works fine
? (quit)

~/src/ccl/$ git checkout 2912b11
~/src/ccl/$ ./armcl
> Error: The value "CL" is not of the expected type LIST.
> While executing: (:INTERNAL CCL::OPERATION-ON-ALL-SPECS CCL::%DEFINE_PACKAGE), in process listener(1)
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Skip loading init file.
> Type :? for other options.

pqnelson avatar Nov 13 '21 16:11 pqnelson

Please download the 1.12.2 release from https://github.com/Clozure/ccl/releases/tag/v1.12.2 (at least the linuxarm bootstrapping binaries) and the ARM build should work.

The file scripts/get-binaries is obsolete.

xrme avatar Aug 09 '23 19:08 xrme