Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags
(1 edit) (+1)

Hey, I got the same libecl.so error as below, even though I do have ECL installed. I’ve tried compiling from source, unfortunately also to no avail:

;;; Internal error:
;;;   ** Error code 1 when executing
;;; (EXT:RUN-PROGRAM "x86_64-pc-linux-gnu-g++" ("-I." "-I/usr/include/" "-D_GNU_SOURCE" "-D_FILE_OFFSET_BITS=64" "-march=native" "-mtune=native" "-O2" "-fomit-frame-pointer" "-pipe" "-ggdb" "-fPIC" "-D_THREAD_SAFE" "-Dlinux" "-O2" "-c" "/var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx" "-o" "/var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.o")):
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx: In function 'cl_lispunion* L2set_color(cl_narg, cl_object, cl_object, cl_object, ...)':
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:114:34: error: invalid conversion from 'int' to 'cl_object' {aka 'cl_lispunion*'} [-fpermissive]
;;;   114 |   value0 = SDL_SetRenderDrawColor(renderer, ecl_to_int(v1r), ecl_to_int(v2g), ecl_to_int(v3b), ecl_to_int(v4a));
;;;       |            ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;       |                                  |
;;;       |                                  int
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx: In function 'cl_lispunion* L3fill_rectangle(cl_object, cl_object, cl_object, cl_object)':
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:136:26: error: taking address of rvalue [-fpermissive]
;;;   136 |        &(struct SDL_Rect){.x = ecl_to_int(T0), .y = ecl_to_int(T1),
;;;       |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;   137 |                           .w = ecl_to_int(T2), .h = ecl_to_int(T3)});
;;;       |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:135:22: error: invalid conversion from 'int' to 'cl_object' {aka 'cl_lispunion*'} [-fpermissive]
;;;   135 |    SDL_RenderFillRect(renderer,
;;;       |    ~~~~~~~~~~~~~~~~~~^~~~~~~~~~
;;;       |                      |
;;;       |                      int
;;;   136 |        &(struct SDL_Rect){.x = ecl_to_int(T0), .y = ecl_to_int(T1),
;;;       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;   137 |                           .w = ecl_to_int(T2), .h = ecl_to_int(T3)});
;;;       |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~An error occurred during initialization:
COMPILE-FILE-ERROR while
compiling #<cl-source-file "jam-no-theme" "jam-no-theme">.

You might want to consider using AppImage for deployment.

Thanks ! Could you try compiling as c instead of cxx as well?  What was that variable again......

On my openbsd machines, I'm using ecl21.2 and I know other people have been compiling on more modern stock linux distributions successfully at least sometimes. So my guess is that maybe I did something that didn't play well with C++ compilation? Since it looks like cxx files are being generated instead of .c .

No probs. I’m not sure how to force ECL’s build process to use plain C instead of CXX, but I might investigate later, ’cause again ECL looks to me like a very interesting option in terms of FFI with low-level libraries like SDL. I use Gentoo btw :) Same ECL version, 21.2.1.

I forgot what we are allowed to do with

> (ext:install-c-compiler)
> c:*cc*
"gcc"
> (setf c:*cc* "g++") ;and vice versa? Can we do it?

Something I learned from this jam was definitely the value of kinda known-working templates like you made, since it's a bit scattershot what's going to work on how-old what-distribution of linux !

On my recent phlog I speculated about targetting gentoo ebuild(1) / openbsd ports(7) for distribution in the future, since I don't like the style of every-program-with-its-own-redundant-deps-in-its-own-chroot dependency bundling.

(3 edits) (+1)

Oh I tried setfing c:*cc* but looks like the errors are the same:

;;; Internal error:
;;;   ** Error code 1 when executing
;;; (EXT:RUN-PROGRAM "gcc" ("-I." "-I/usr/include/" "-D_GNU_SOURCE" "-D_FILE_OFFSET_BITS=64" "-march=native" "-mtune=native" "-O2" "-fomit-frame-pointer" "-pipe" "-ggdb" "-fPIC" "-D_THREAD_SAFE" "-Dlinux" "-O2" "-c" "/var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx" "-o" "/var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.o")):
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx: In function 'cl_lispunion* L2set_color(cl_narg, cl_object, cl_object, cl_object, ...)':
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:114:34: error: invalid conversion from 'int' to 'cl_object' {aka 'cl_lispunion*'} [-fpermissive]
;;;   114 |   value0 = SDL_SetRenderDrawColor(renderer, ecl_to_int(v1r), ecl_to_int(v2g), ecl_to_int(v3b), ecl_to_int(v4a));
;;;       |            ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;       |                                  |
;;;       |                                  int
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx: In function 'cl_lispunion* L3fill_rectangle(cl_object, cl_object, cl_object, cl_object)':
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:136:26: error: taking address of rvalue [-fpermissive]
;;;   136 |        &(struct SDL_Rect){.x = ecl_to_int(T0), .y = ecl_to_int(T1),
;;;       |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;   137 |                           .w = ecl_to_int(T2), .h = ecl_to_int(T3)});
;;;       |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;; /var/tmp/cache/andrew/common-lisp/ecl-21.2.1-linux-x64/tmp/jam-no-theme/jam-no-theme.cxx:135:22: error: invalid conversion from 'int' to 'cl_object' {aka 'cl_lispunion*'} [-fpermissive]
;;;   135 |    SDL_RenderFillRect(renderer,
;;;       |    ~~~~~~~~~~~~~~~~~~^~~~~~~~~~
;;;       |                      |
;;;       |                      int
;;;   136 |        &(struct SDL_Rect){.x = ecl_to_int(T0), .y = ecl_to_int(T1),
;;;       |        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;;   137 |                           .w = ecl_to_int(T2), .h = ecl_to_int(T3)});
;;;       |                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~An error occurred during initialization:
COMPILE-FILE-ERROR while
compiling #<cl-source-file "jam-no-theme" "jam-no-theme">.

Yeah, I’ve learned importance of pre-developed scaffolding the hard way, on Lisp Game Jam 2019 :)

I don’t like the style of every-program-with-its-own-redundant-deps-in-its-own-chroot dependency bundling

I feel you bro, I don’t really like AppImage as well, but haven’t stumbled upon better alternatives. Unfortunately not all people use Gentoo or *BSD :)

Guix looks interesting though, since it could be installed on top of any distribution, but I haven’t had the time to dig deeper into it.

(2 edits) (+1)

In about 10 hours from now I'll write some smaller ecl programs (compile ecl at all, link against sdl2, open an sdl2 window, render an sdl2 window and a few other singular ecl compilation tests/examples. For now, I sleep.

(+1)

By the way everyone else, Andrew and I eventually debugged this. Andrew's Gentoo flavor had an experimental USE flag that had affected ECL, but would have required I use more idiomatic C++ rather than C for the OS-facing stuff or something I think.