1. Build failed on raspberry.

When i try to build any version version of euphoria for raspberry i get this error.

Translating eui.ex to create 
rm -f /home/pi/build/jsmn/intobj/{*.c,*.o} 
(cd /home/pi/build/jsmn/intobj;/home/pi/build/6267/bin/eui -i /home/pi/build/euphoria/include   /home/pi/build/euphoria/source/euc.ex  -nobuild -i /home/pi/build/euphoria/include -gcc    \ 
	-arch ARM -c "/home/pi/build/jsmn/eu.cfg" \ 
	-c /home/pi/build/euphoria/source/eu.cfg /home/pi/build/euphoria/source/eui.ex ) 
/home/pi/build/euphoria/include/std/mathcons.e:20 
<0607>:: The number specified here is too small. 
    PI        = 3.14159_26535_89793_23846, 
Euphoria Interpreter v4.1.0 development 32-bit Linux, Using System Memory Revision Date: 2014-10-01 12:14:09, Id: 6257:e9a250c9e114

new topic     » topic index » view message » categorize

2. Re: Build failed on raspberry.

Thomas said...

When i try to build any version version of euphoria for raspberry i get this error.

Translating eui.ex to create 
rm -f /home/pi/build/jsmn/intobj/{*.c,*.o} 
(cd /home/pi/build/jsmn/intobj;/home/pi/build/6267/bin/eui -i /home/pi/build/euphoria/include   /home/pi/build/euphoria/source/euc.ex  -nobuild -i /home/pi/build/euphoria/include -gcc    \ 
	-arch ARM -c "/home/pi/build/jsmn/eu.cfg" \ 
	-c /home/pi/build/euphoria/source/eu.cfg /home/pi/build/euphoria/source/eui.ex ) 
/home/pi/build/euphoria/include/std/mathcons.e:20 
<0607>:: The number specified here is too small. 
    PI        = 3.14159_26535_89793_23846, 
Euphoria Interpreter v4.1.0 development 32-bit Linux, Using System Memory Revision Date: 2014-10-01 12:14:09, Id: 6257:e9a250c9e114

I'm stumped as to why this could be happening.

Try editing line 115 of euphoria/include/std/fenv.e from

public function test(object e_p) 
	fexcept_t ee 
	if integer(e_p) then 
		ee = {e_p} 
	else 
		ee = e_p 
	end if 
	if fetestexcept = -1 then 
		return 0 
	end if 
	integer ce = c_func(fetestexcept, {e_to_c(ee)}) 
	sequence ans = c_to_e(ce) 
	if integer(e_p) then 
		return ce 
	end if 
	return ans 
end function 

to

public function test(object e_p) 
	fexcept_t ee 
	if integer(e_p) then 
		ee = {e_p} 
	else 
		ee = e_p 
	end if 
	if fetestexcept = -1 or 1 then 
		return 0 
	end if 
	integer ce = c_func(fetestexcept, {e_to_c(ee)}) 
	sequence ans = c_to_e(ce) 
	if integer(e_p) then 
		return ce 
	end if 
	return ans 
end function 

That should at least get your build past this error.

new topic     » goto parent     » topic index » view message » categorize

3. Re: Build failed on raspberry.

Perhaps the parsing algorithm when running on the ARM system triggers a number floating point exception. I wrote the code that displays that error message. It must have been a year ago. This didn't happen in my tests with a Pentium IV and the OS was and is 32-bit. The eudouble is the same size on both Intel and ARM but ARM is one quirky critter.

The exceptions detect whether a number register gets an overflow and some kind of analog when a number gets too small. None of these apply to pi of course.

Shawn

new topic     » goto parent     » topic index » view message » categorize

4. Re: Build failed on raspberry.

Do the corresponding values of the constants in the ARM headers match the values of the following constants in EUPHORIA?

type enum c_fe by *2 
	C_FE_INVALID, 
	C_FE_DIVBYZERO = 4, 
	C_FE_OVERFLOW, 
	C_FE_UNDERFLOW, 
	C_FE_INEXACT 
end type 
new topic     » goto parent     » topic index » view message » categorize

5. Re: Build failed on raspberry.

SDPringle said...

Perhaps the parsing algorithm when running on the ARM system triggers a number floating point exception.

Our euphoria/info.e doesn't report Intel/AMD vs ARM (which is a bug imvho), but I assumed that Thomas was crosscompiling and the exception happened on an Intel/AMD system.

If ARM is just quirky, can we disable the checks in scanner.e for just the ARM arch?

new topic     » goto parent     » topic index » view message » categorize

6. Re: Build failed on raspberry.

jimcbrown said...
SDPringle said...

Perhaps the parsing algorithm when running on the ARM system triggers a number floating point exception.

Our euphoria/info.e doesn't report Intel/AMD vs ARM (which is a bug imvho), but I assumed that Thomas was crosscompiling and the exception happened on an Intel/AMD system.

If ARM is just quirky, can we disable the checks in scanner.e for just the ARM arch?

No i'm building on the rpi now. I have default and jsm interpreters working thank you for your help.

new topic     » goto parent     » topic index » view message » categorize

7. Re: Build failed on raspberry.

i can confirm that a quick ifdef around the enum in fenv.e will allow building on a raspberry pi. it still fails a lot of tests but that's not a biggy at the moment.

ifdef ARM then 
        type enum c_fe by *2 
                C_FE_INVALID = 1, 
                C_FE_DIVBYZERO = 2, 
                C_FE_OVERFLOW = 4, 
                C_FE_UNDERFLOW = 8, 
                C_FE_INEXACT= 16 
        end type 
elsedef 
        type enum c_fe by *2 
                C_FE_INVALID, 
                C_FE_DIVBYZERO = 4, 
                C_FE_OVERFLOW, 
                C_FE_UNDERFLOW, 
                C_FE_INEXACT 
        end type 
end ifdef 

Test results summary: 
    FAIL: t_callc.e 
    FAIL: t_eutest.e 
    FAIL: t_machine.e 
    FAIL: t_net_http.e 
    FAIL: t_system_exec.e 
    FAIL: t_c_overflow_sbni.e 
    FAIL: t_c_overflow_sci1.e 
    FAIL: t_c_overflow_sci2.e 
    FAIL: t_c_overflow_sci3.e 
    FAIL: t_c_overflow_sci4.e 
    FAIL: t_c_overflow_sdnf.e 
    FAIL: t_c_overflow_sdni.e 
    FAIL: t_c_overflow_shni.e 
    FAIL: t_c_overflow_soni.e 
    FAIL: t_c_underflow_sci.e 
    FAIL: t_c_underflow_sdn.e 
Files (run: 169) (failed: 16) (91% success) 

p.s. i used to be rkdavis on the forums but forgot my password (i didn't but it failed to work) and i no longer have access to the email address i'd used to register originally


Creole tip: The ## tag is for Monospaced inline text. Use <eucode> or the {{{ / }}} tags for blocks of code. -Greg

new topic     » goto parent     » topic index » view message » categorize

8. Re: Build failed on raspberry.

The PI number causes the scanner to trigger the inexact flag because there are too many digits for 64-bit doubles. The inexact flag for ARM is the same numerical value as the underflow flag for i386. This makes sense.

If t_eutest.e is failing, it kind of invalidates the 91% success rate as it means the testing system itself is not working. Theoretically, the ifdef you added should make all tests t_c_underflow* and t_c_overflow* succeed.

SDPringle

new topic     » goto parent     » topic index » view message » categorize

9. Re: Build failed on raspberry.

yup i know it's not not really working but the 1st thing to do was to actually get openeuphoria building again as it hadn't since february. building for arm has always failed some of the unittests but in practice it's mostly good enough for messing around with.

the t_eutest.e failure was what I was planning at looking at tonight.

pi@raspberrypi /euphoria/tests $ eutest t_eutest.e -ALL -log

interpreting t_eutest.e:
Setting executable to '/home/pi/euphoria/tests/eutest/eui
Specified interpreter via -eui or -exe parameter was not found
passed: eutest t_c_bad_err_file.e
Setting executable to '/home/pi/euphoria/tests/eutest/eui'
Specified interpreter via -eui or -exe parameter was not found
passed: eutest t_c_no_err_file.e
Setting executable to '/home/pi/euphoria/tests/eutest/eui'
Specified interpreter via -eui or -exe parameter was not found
failed: eutest t_c_good_err_file.e, expected: 1 but got: 0
Setting executable to '/home/pi/euphoria/tests/eutest/eui'
Specified interpreter via -eui or -exe parameter was not found
passed: eutest t_test_false.e
Setting executable to '/home/pi/euphoria/tests/eutest/eui'
Specified interpreter via -eui or -exe parameter was not found
failed: eutest t_test_true.e, expected: 1 but got: 0
t_eutest summary:
5 tests run, 3 passed, 2 failed, 60% success
FAILURE: t_eutest.e program died with status 1

Test results summary:
FAIL: t_eutest.e
Files (run: 1) (failed: 1) (0% success)

new topic     » goto parent     » topic index » view message » categorize

10. Re: Build failed on raspberry.

Alright. Thanks for putting in this extra effort. I got the same results on a ix86. Unfortunately, this is some problem in eutest. Eutest is trying to call an interpreter that doesn't exist. This is a distinct bug.

The makefile specifies the location of the interpreter so this better will reproduce what "make test" shows you:

eutest -eui `which eui` t_eutest.e -ALL -log 

Replace optionally `which eui` with the path and name of eui.

SD Pringle

new topic     » goto parent     » topic index » view message » categorize

11. Re: Build failed on raspberry.

t_eutest.e gives http://pastebin.com/yYw0HGEG

t_rand.e sometimes fails, sometimes doesn't (on the chance() function :) )

as for the rest it's just two files i expect will have problems and the under/overflow tests

Test results summary: 
    FAIL: t_callc.e 
    FAIL: t_machine.e 
    FAIL: t_net_http.e 
    FAIL: t_c_overflow_sbni.e 
    FAIL: t_c_overflow_sci1.e 
    FAIL: t_c_overflow_sci2.e 
    FAIL: t_c_overflow_sci3.e 
    FAIL: t_c_overflow_sci4.e 
    FAIL: t_c_overflow_sdnf.e 
    FAIL: t_c_overflow_sdni.e 
    FAIL: t_c_overflow_shni.e 
    FAIL: t_c_overflow_soni.e 
    FAIL: t_c_underflow_sci.e 
    FAIL: t_c_underflow_sdn.e 
Files (run: 169) (failed: 14) (92% success) 


Creole tip: The ## tag is for Monospaced inline text. Use <eucode> or the {{{ / }}} tags for blocks of code. -Greg

new topic     » goto parent     » topic index » view message » categorize

12. Re: Build failed on raspberry.

ukscone said...

t_eutest.e gives http://pastebin.com/yYw0HGEG

Forum tip: we have our own Pastey so you don't have to go out to Pastebin. I mean, you can still use Pastebin if you want, but we have complete control over the local Pastey and it supports Euphoria code and Creole formatting. Also, please see the tips I added to your posts about Creole formatting for code in posts. Better formatting can save you time and make your posts easier for everyone to read.

-Greg

new topic     » goto parent     » topic index » view message » categorize

13. Re: Build failed on raspberry.

ukscone said...

t_eutest.e gives http://pastebin.com/yYw0HGEG

t_rand.e sometimes fails, sometimes doesn't (on the chance() function :) ) }}} Greg

It seems that t_eutest.e is working just fine now. What changed? Did you rebuild from newer sources? Presently, the current ix86 eubins interpreter from two weeks ago is failing in all of those tests save t_machine.e. It is a lot less work on a computer to specify the troubling tests by naming them on the command line. Like this:

eutest t_callc.e t_machine.e t_net_http.e t_c_{over,under}flow*.e -log 

I then used this to create an HTML file to look at the differences.

eutest -process-log -html > results.html 

When I looked at them in the browser, the underflow vs. overflow tests are failing correctly: That is, they both report the same error message in both cases but the numerical error is wrong. This in practice wont affect the user's experience. It should be very easy to fix these t_c_{over,under}*.d/control.err files so they have matching error numbers to what is being reported.

I am concerned about t_machine.e on ARM and t_callc.e on everything. The functionality of the systems tested by these files are crucial to calling dlls from Euphoria.

S D Pringle

new topic     » goto parent     » topic index » view message » categorize

14. Re: Build failed on raspberry.

the last post I made was (with the pastebin) after pulling your changes yesterday.

i'll do a clean run later tonight

new topic     » goto parent     » topic index » view message » categorize

15. Re: Build failed on raspberry.

http://russelldavis.org/oe/results.html

new topic     » goto parent     » topic index » view message » categorize

16. Re: Build failed on raspberry.

I think if you update to changeset 2f79e40d0f20, you will find t_machine.e works fine and most of the t_over/t_under test files. There is one problem with one of the t_under/ and t_over which requires more investigation. Then there t_callc, and some other test file that doesn't work quite right.

This brings the raspberry pi to the same level as ix86 which is less than 100% passing. I have just found an issue involving numbers that have 54 bits or more. Something that I will call 54-bits of complexity for lack of a better term. This issue effects all 32 bit systems.

S D Pringle

new topic     » goto parent     » topic index » view message » categorize

17. Re: Build failed on raspberry.

this is starting to look much better. the only failures were http://russelldavis.org/oe/results2.html

new topic     » goto parent     » topic index » view message » categorize

18. Re: Build failed on raspberry.

tarball of build of OE for the raspberry pi http://www.russelldavis.org/Files/files/RaspberryPi/euphoria-4.1.0-RaspberryPi.tar.gz

new topic     » goto parent     » topic index » view message » categorize

19. Re: Build failed on raspberry.

I downloaded from arm_download and then built using these intructions this AM.

How to Compile Open Euphoria On Linux

-xecronix

new topic     » goto parent     » topic index » view message » categorize

20. Re: Build failed on raspberry.

I will try building Euphoria on my Radxa Rock Pro (running Debian) when i have time. I have never built it before, so it will be a learning experience.

new topic     » goto parent     » topic index » view message » categorize

21. Re: Build failed on raspberry.

ryanj said...

I will try building Euphoria on my Radxa Rock Pro (running Debian) when i have time. I have never built it before, so it will be a learning experience.

If you get stuck and my tutorial doesn't help please let me know and I'll write a better tutorial.

new topic     » goto parent     » topic index » view message » categorize

22. Re: Build failed on raspberry.

Cool

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu