That would be very cool. Unfortunately, I don't have access to the physical server. We would need propeller-load to work over an ssh tunnel.
I do have a raspberry pi here though.... I suppose I could copy the files from the build server to the pi and then run the tests. That'd sure be interesting. Or at that point, actually I could install a build agent on the pi and have libpropeller only run from that build agent.
I just tried a clean install of Ubuntu 14.04 and am having trouble building the obsolete version of texinfo that is needed for propgcc builds. Does anyone have a solution to this? I followed the instructions on the Google Code Wiki but texinfo-4.13 won't build on my system.
terminal.o:/home/dbetz/texinfo-4.13/info/terminal.c:585: more undefined references to `tgetstr' follow
terminal.o: In function `terminal_initialize_terminal':
/home/dbetz/texinfo-4.13/info/terminal.c:617: undefined reference to `tgetflag'
/home/dbetz/texinfo-4.13/info/terminal.c:620: undefined reference to `tgetstr'
/home/dbetz/texinfo-4.13/info/terminal.c:628: undefined reference to `tgetstr'
/home/dbetz/texinfo-4.13/info/terminal.c:629: undefined reference to `tgetstr'
/home/dbetz/texinfo-4.13/info/terminal.c:630: undefined reference to `tgetstr'
/home/dbetz/texinfo-4.13/info/terminal.c:631: undefined reference to `tgetstr'
terminal.o:/home/dbetz/texinfo-4.13/info/terminal.c:633: more undefined references to `tgetstr' follow
terminal.o: In function `terminal_initialize_terminal':
/home/dbetz/texinfo-4.13/info/terminal.c:617: undefined reference to `tgetflag'
terminal.o: In function `terminal_begin_using_terminal':
/home/dbetz/texinfo-4.13/info/terminal.c:135: undefined reference to `tputs'
/home/dbetz/texinfo-4.13/info/terminal.c:144: undefined reference to `tputs'
terminal.o: In function `terminal_end_using_terminal':
/home/dbetz/texinfo-4.13/info/terminal.c:166: undefined reference to `tputs'
/home/dbetz/texinfo-4.13/info/terminal.c:175: undefined reference to `tputs'
terminal.o: In function `terminal_goto_xy':
/home/dbetz/texinfo-4.13/info/terminal.c:235: undefined reference to `tputs'
terminal.o:/home/dbetz/texinfo-4.13/info/terminal.c:272: more undefined references to `tputs' follow
collect2: error: ld returned 1 exit status
Linking C executable fatfilereader_test
/opt/parallax.2408/propeller-elf/lib/libc.a(malloc.o): In function `__common_malloc':
(.text+0x24): undefined reference to `__LMM_MVI_r2'
/opt/parallax.2408/propeller-elf/lib/libc.a(malloc.o): In function `__common_malloc':
(.text+0xb4): undefined reference to `__LMM_MVI_r6'
/opt/parallax.2408/propeller-elf/lib/libc.a(malloc.o): In function `__common_malloc':
(.text+0xd0): undefined reference to `__LMM_MVI_r6'
/opt/parallax.2408/propeller-elf/lib/libc.a(malloc.o): In function `__hubmalloc':
(.text+0xfc): undefined reference to `__LMM_MVI_r0'
/opt/parallax.2408/propeller-elf/lib/libc.a(malloc.o): In function `__hubfree':
(.text+0x10c): undefined reference to `__LMM_FCACHE_LOAD'
/opt/parallax.2408/propeller-elf/lib/libc.a(rand.o): In function `_rand':
(.text+0x18): undefined reference to `__LMM_MVI_r1'
/opt/parallax.2408/propeller-elf/lib/libc.a(rand.o): In function `_rand':
(.text+0x20): undefined reference to `__LMM_MVI_r6'
/opt/parallax.2408/propeller-elf/lib/libc.a(toupper.o): In function `_toupper':
(.text+0x8): undefined reference to `__LMM_MVI_r7'
/opt/parallax.2408/propeller-elf/lib/libc.a(sbrk.o): In function `__sbrk':
(.text+0x4): undefined reference to `__LMM_MVI_r6'
/opt/parallax.2408/propeller-elf/lib/libc.a(sbrk.o): In function `__sbrk':
(.text+0x10): undefined reference to `__LMM_MVI_r7'
/opt/parallax.2408/propeller-elf/lib/libc.a(sbrk.o): In function `__sbrk':
(.text+0x3c): undefined reference to `__LMM_MVI_r5'
/opt/parallax.2408/propeller-elf/lib/libc.a(sbrk.o): In function `__sbrk':
(.text+0x5c): undefined reference to `__LMM_MVI_r6'
/opt/parallax.2408/propeller-elf/lib/libc.a(memcpy.o): In function `_memcpy':
(.text+0x34): undefined reference to `__LMM_FCACHE_LOAD'
/opt/parallax.2408/propeller-elf/lib/libc.a(memset.o): In function `_memset':
(.text+0x4c): undefined reference to `__LMM_FCACHE_LOAD'
/opt/parallax.2408/propeller-elf/lib/libc.a(memset.o): In function `_memset':
(.text+0x88): undefined reference to `__LMM_FCACHE_LOAD'
/opt/parallax.2408/propeller-elf/lib/libc.a(strcmp.o): In function `_strcmp':
(.text+0x0): undefined reference to `__LMM_FCACHE_LOAD'
/opt/parallax.2408/propeller-elf/lib/libc.a(strcpy.o): In function `_strcpy':
(.text+0x4): undefined reference to `__LMM_FCACHE_LOAD'
/opt/parallax.2408/propeller-elf/lib/libc.a(strlen.o):(.text+0x8): more undefined references to `__LMM_FCACHE_LOAD' follow
/opt/parallax.2408/lib/gcc/propeller-elf/4.6.1/libgcc.a(unwind-sjlj.o): In function `_Unwind_SjLj_SetContext':
/home/steve/Projects/propgcc/gcc/libgcc/../gcc/unwind-sjlj.c:163: undefined reference to `__LMM_MVI_r9'
/home/steve/Projects/propgcc/gcc/libgcc/../gcc/unwind-sjlj.c:163: undefined reference to `__LMM_MVI_r6'
/opt/parallax.2408/lib/gcc/propeller-elf/4.6.1/libgcc.a(unwind-sjlj.o): In function `_Unwind_SjLj_Register':
/home/steve/Projects/propgcc/gcc/libgcc/../gcc/unwind-sjlj.c:134: undefined reference to `__LMM_MVI_r7'
/opt/parallax.2408/lib/gcc/propeller-elf/4.6.1/libgcc.a(unwind-sjlj.o): In function `_Unwind_SjLj_SetContext':
/home/steve/Projects/propgcc/gcc/libgcc/../gcc/unwind-sjlj.c:163: undefined reference to `__LMM_MVI_r7'
/opt/parallax.2408/lib/gcc/propeller-elf/4.6.1/libgcc.a(unwind-sjlj.o): In function `_Unwind_SjLj_GetContext':
/home/steve/Projects/propgcc/gcc/libgcc/../gcc/unwind-sjlj.c:149: undefined reference to `__LMM_MVI_r7'
/opt/parallax.2408/lib/gcc/propeller-elf/4.6.1/libgcc.a(unwind-sjlj.o): In function `_Unwind_SjLj_ForcedUnwind':
/home/steve/Projects/propgcc/gcc/libgcc/../gcc/unwind.inc:202: undefined reference to `__LMM_MVI_r7'
/opt/parallax.2408/lib/gcc/propeller-elf/4.6.1/libgcc.a(unwind-sjlj.o): In function `_Unwind_SjLj_Resume':
/home/steve/Projects/propgcc/gcc/libgcc/../gcc/unwind.inc:225: undefined reference to `__LMM_MVI_r7'
/opt/parallax.2408/lib/gcc/propeller-elf/4.6.1/libgcc.a(unwind-sjlj.o):/home/steve/Projects/propgcc/gcc/libgcc/../gcc/unwind.inc:255: more undefined references to `__LMM_MVI_r7' follow
collect2: ld returned 1 exit status
PropWare/tests/CMakeFiles/fatfilereader_test.dir/build.make:88: recipe for target 'PropWare/tests/fatfilereader_test' failed
make[2]: *** [PropWare/tests/fatfilereader_test] Error 1
CMakeFiles/Makefile2:1064: recipe for target 'PropWare/tests/CMakeFiles/fatfilereader_test.dir/all' failed
make[1]: *** [PropWare/tests/CMakeFiles/fatfilereader_test.dir/all] Error 2
Makefile:137: recipe for target 'all' failed
make: *** [all] Error 2
Running from build 2408. I'll check tomorrow with a more up-to-date version
It's building PropWare. Since it still builds in teamcity I doubt it will be easily reproducible. This is the first build that I've run on Ubuntu 15.04 though.
Ah, turns it out it wasn't a problem in the first place. I had an existing build directory and didn't think to clean it out before attempting to build from the new OS. Once I cleared the build directory and rebuilt, it was fine.
It is interesting that Steve's name and his personal build directory shows up in the debug output though...
the TeamCity build has been busted for a while now and I finally have a hint as to why. spin2cpp has been downloaded into a out-of-source directory. I'm guessing this is something weird and specific to TeamCity, not the git or build configuration, but wanted to check with you all first. Here's a snippet from the log:
The spin.tab.h issue was related to parallel jobs. The makefile looks solid to me, so I'm not sure why too many concurrent jobs had it failing, but removing the -j option entirely has fixed it. Builds take 30 minutes now, but I guess that's better than failing 100% of the time.
Cross compiling no longer works. The build relies on libexpat which isn't readily available as a Windows or ARM lib. Is the library really needed, or was its inclusion an accident? If needed, how can I make it visible to the system?
gdb needs a curses package to do terminal formatting. ncurses is the standard (highly desired) package on most linux systems. It shouldn't be part of the source code package, because it's a shared library dependency that is expected to be supplied by the OS.
Usually, pkg-config, should be able to find a working/installed version of either curses or ncurses on your system when a gnu ./configure script is run. If it can't then sometimes broken make scripts do things like you are seeing.
gdb needs a curses package to do terminal formatting. ncurses is the standard (highly desired) package on most linux systems. It shouldn't be part of the source code package, because it's a shared library dependency that is expected to be supplied by the OS.
Usually, pkg-config, should be able to find a working/installed version of either curses or ncurses on your system when a gnu ./configure script is run. If it can't then sometimes broken make scripts do things like you are seeing.
We provide ncurses sources because some cross-compilers (particularly those targeting the Raspberry Pi) do not have curses libraries available. It's not a problem for native builds, so if you don't ever want to cross compile then you don't need to worry about it.
What relies on libexpat? Is it spin2cpp? Maybe Eric can answer that.
This is still an issue
spin2cpp certainly doesn't need libexpat. I think gdb is the only part of the propgcc system that needs it -- gdb uses xml for some configuration files for embedded systems. If you skip building gdb then you can probably avoid expat.
What relies on libexpat? Is it spin2cpp? Maybe Eric can answer that.
This is still an issue
spin2cpp certainly doesn't need libexpat. I think gdb is the only part of the propgcc system that needs it -- gdb uses xml for some configuration files for embedded systems. If you skip building gdb then you can probably avoid expat.
Good to know, but we don't want to skip building GDB do we?
Builds from my build server don't include the tweak/patch version in the version string. For instance, the --version output gives:
dzweb@davidzemonname:~$ propgcc4-bin/bin/propeller-elf-gcc --version
propeller-elf-gcc (propellergcc-alpha_v1_9_0_) 4.6.1
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
That's no good!
Anyone mind pointing me in the right direction for getting that added to the build?
Comments
I do have a raspberry pi here though.... I suppose I could copy the files from the build server to the pi and then run the tests. That'd sure be interesting. Or at that point, actually I could install a build agent on the pi and have libpropeller only run from that build agent.
Running from build 2408. I'll check tomorrow with a more up-to-date version
It is interesting that Steve's name and his personal build directory shows up in the debug output though...
Hi
These links from post 1 don't work for me with wget.
Amazingly the gcc4 Win32 link from post 237 seems to work.
Looks like when you copied/pasted the contents, you copied and pasted the ellipsis too, instead of the full URLs.
[noparse]
GCC4
x86-64 Linux
RPi
Win32
GCC5
x86-64 Linux
RPi
Win32
[/noparse]
Specifically, I would not expect the directory from line 4 to be different from line 5.
Cross compiling no longer works. The build relies on libexpat which isn't readily available as a Windows or ARM lib. Is the library really needed, or was its inclusion an accident? If needed, how can I make it visible to the system?
Usually, pkg-config, should be able to find a working/installed version of either curses or ncurses on your system when a gnu ./configure script is run. If it can't then sometimes broken make scripts do things like you are seeing.
This is still an issue
We provide ncurses sources because some cross-compilers (particularly those targeting the Raspberry Pi) do not have curses libraries available. It's not a problem for native builds, so if you don't ever want to cross compile then you don't need to worry about it.
spin2cpp certainly doesn't need libexpat. I think gdb is the only part of the propgcc system that needs it -- gdb uses xml for some configuration files for embedded systems. If you skip building gdb then you can probably avoid expat.
Good to know, but we don't want to skip building GDB do we?
That's no good!
Anyone mind pointing me in the right direction for getting that added to the build?