Version 21.2.1.

- Drop upstreamed patches: -fpe-macro, -stack-size.
- Add metainfo.
This commit is contained in:
Jerry James 2021-02-02 09:36:05 -07:00
parent 5a436eb7d0
commit 4cec6bdb33
7 changed files with 216 additions and 403 deletions

View File

@ -1,28 +0,0 @@
See https://gitlab.com/embeddable-common-lisp/ecl/-/commit/75877dd8f0d534552284ba4380ba65baa74f028f
--- src/h/impl/math_fenv.h.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/h/impl/math_fenv.h 2020-07-06 21:21:09.317821552 -0600
@@ -72,15 +72,14 @@
#if defined(HAVE_FENV_H) && !defined(ECL_AVOID_FPE_H)
# if defined(HAVE_FEENABLEEXCEPT)
-# define ECL_WITH_LISP_FPE_BEGIN do { \
- fenv_t __fenv; \
- fegetenv(&__fenv); \
- cl_env_ptr __the_env = ecl_process_env_unsafe(); \
- if (__the_env) { \
- int bits = __the_env->trap_fpe_bits; \
- fedisableexcept(FE_ALL_EXCEPT & ~bits); \
- feenableexcept(FE_ALL_EXCEPT & bits); \
- } \
+# define ECL_WITH_LISP_FPE_BEGIN do { \
+ fenv_t __fenv; \
+ fegetenv(&__fenv); \
+ if (ecl_get_option(ECL_OPT_BOOTED) > 0) { \
+ int bits = ecl_process_env()->trap_fpe_bits; \
+ fedisableexcept(FE_ALL_EXCEPT & ~bits); \
+ feenableexcept(FE_ALL_EXCEPT & bits); \
+ } \
feclearexcept(FE_ALL_EXCEPT);
# else
# define ECL_WITH_LISP_FPE_BEGIN do { \

View File

@ -1,165 +0,0 @@
See https://gitlab.com/embeddable-common-lisp/ecl/-/merge_requests/215
--- src/aclocal.m4.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/aclocal.m4 2020-07-06 21:09:43.687409707 -0600
@@ -665,6 +665,21 @@ case "${ECL_STACK_DIR}" in
up|UP) AC_MSG_RESULT(no) ;;
*) AC_MSG_ERROR(Unable to determine stack growth direction)
esac])
+
+dnl
+dnl --------------------------------------------------------------
+dnl Check if we can determine the stack size at runtime
+dnl
+AC_DEFUN(ECL_STACK_SIZE,[
+AC_CHECK_HEADER([sys/resource.h],
+ [AC_DEFINE([HAVE_SYS_RESOURCE_H], [], [Define to 1 if you have the <sys/resource.h> header file.])
+ AC_CHECK_DECL([RLIMIT_STACK],
+ [AC_DEFINE([ECL_CAN_SET_STACK_SIZE], [], [Define to 1 if we can set the stack size at runtime.])],
+ [],
+ [#include <sys/resource.h>])],
+ [],[])
+])
+
dnl
dnl ------------------------------------------------------------
dnl Find out a setjmp() that does not save signals. It is called
--- src/configure.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/configure 2020-07-06 21:15:05.074094533 -0600
@@ -7134,7 +7134,7 @@ fi
done
-for ac_header in sys/resource.h sys/utsname.h float.h pwd.h dlfcn.h link.h \
+for ac_header in sys/utsname.h float.h pwd.h dlfcn.h link.h \
mach-o/dyld.h dirent.h sys/ioctl.h sys/select.h \
sys/wait.h semaphore.h
do :
@@ -8354,6 +8354,24 @@ $as_echo "no" >&6; } ;;
*) as_fn_error $? "Unable to determine stack growth direction" "$LINENO" 5
esac
+ac_fn_c_check_header_mongrel "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_resource_h" = xyes; then :
+
+$as_echo "#define HAVE_SYS_RESOURCE_H /**/" >>confdefs.h
+
+ ac_fn_c_check_decl "$LINENO" "RLIMIT_STACK" "ac_cv_have_decl_RLIMIT_STACK" "#include <sys/resource.h>
+"
+if test "x$ac_cv_have_decl_RLIMIT_STACK" = xyes; then :
+
+$as_echo "#define ECL_CAN_SET_STACK_SIZE /**/" >>confdefs.h
+
+fi
+
+fi
+
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5
$as_echo_n "checking whether closedir returns void... " >&6; }
@@ -9006,8 +9024,6 @@ main ()
if (*(data + i) != *(data3 + i))
return 14;
close (fd);
- free (data);
- free (data3);
return 0;
}
_ACEOF
--- src/configure.ac.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/configure.ac 2020-07-06 21:15:58.390054558 -0600
@@ -657,7 +657,7 @@ AC_CHECK_HEADERS( [fcntl.h limits.h netd
[sched.h] )
dnl !!! end autoscan
-AC_CHECK_HEADERS( [sys/resource.h sys/utsname.h float.h pwd.h dlfcn.h link.h] \
+AC_CHECK_HEADERS( [sys/utsname.h float.h pwd.h dlfcn.h link.h] \
[mach-o/dyld.h dirent.h sys/ioctl.h sys/select.h] \
[sys/wait.h semaphore.h] )
@@ -710,8 +710,9 @@ ECL_SSE
ECL_COMPLEX_C99
dnl -----------------------------------------------------------------------
-dnl Study the call conventions
+dnl Stack size and growth direction
ECL_STACK_DIRECTION
+ECL_STACK_SIZE
dnl =====================================================================
dnl Checks for library functions
--- src/c/stacks.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/stacks.d 2020-07-06 21:13:06.047198600 -0600
@@ -29,7 +29,7 @@ cs_set_size(cl_env_ptr env, cl_index new
{
volatile char foo = 0;
cl_index margin = ecl_option_values[ECL_OPT_C_STACK_SAFETY_AREA];
-#if defined(HAVE_SYS_RESOURCE_H) && defined(RLIMIT_STACK) && !defined(NACL)
+#if defined(ECL_CAN_SET_STACK_SIZE)
{
struct rlimit rl;
@@ -40,13 +40,22 @@ cs_set_size(cl_env_ptr env, cl_index new
if (setrlimit(RLIMIT_STACK, &rl))
ecl_internal_error("Can't set the size of the C stack");
}
+ } else {
+ rl.rlim_cur = new_size;
+ }
+ if (rl.rlim_cur == 0 || rl.rlim_cur == RLIM_INFINITY || rl.rlim_cur > (cl_index)(-1)) {
+ /* Either getrlimit failed or returned nonsense, either way we
+ * don't know the stack size. Use a default of 1 MB and hope for
+ * the best. */
+ new_size = 1048576;
+ } else {
new_size = rl.rlim_cur;
+ }
#ifdef ECL_DOWN_STACK
- env->cs_barrier = env->cs_org - new_size;
+ env->cs_barrier = env->cs_org - new_size;
#else
- env->cs_barrier = env->cs_org + new_size;
+ env->cs_barrier = env->cs_org + new_size;
#endif
- }
}
#endif
env->cs_limit_size = new_size - (2*margin);
@@ -64,7 +73,7 @@ cs_set_size(cl_env_ptr env, cl_index new
}
#endif
else
- ecl_internal_error("Can't set the size of the C stack");
+ ecl_internal_error("Can't set the size of the C stack: sanity check failed");
env->cs_size = new_size;
}
--- src/ecl/configpre.h.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/ecl/configpre.h 2020-07-06 21:16:27.670032608 -0600
@@ -9,6 +9,9 @@
/* ECL_AVOID_FPE_H */
#undef ECL_AVOID_FPE_H
+/* Define to 1 if we can set the stack size at runtime. */
+#undef ECL_CAN_SET_STACK_SIZE
+
/* Allow STREAM operations to work on arbitrary objects */
#undef ECL_CLOS_STREAMS
--- src/h/config-internal.h.in.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/h/config-internal.h.in 2020-07-06 21:17:09.478001265 -0600
@@ -245,7 +245,10 @@
#include "@ECL_LIBFFI_HEADER@"
#endif
-#if defined(HAVE_SYS_RESOURCE_H) && defined(RLIMIT_STACK) && !defined(NACL)
+/* Can we determine and set the stack size at runtime? */
+#undef ECL_CAN_SET_STACK_SIZE
+
+#if defined(ECL_CAN_SET_STACK_SIZE)
#define ECL_DEFAULT_C_STACK_SIZE 0 /* Use the stack size provided by the OS */
#else
#define ECL_DEFAULT_C_STACK_SIZE @ECL_DEFAULT_C_STACK_SIZE@

View File

@ -1,184 +0,0 @@
--- src/c/compiler.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/compiler.d 2020-07-01 13:32:13.335535695 -0600
@@ -3185,7 +3185,7 @@ si_valid_function_name_p(cl_object name)
cl_object
si_make_lambda(cl_object name, cl_object rest)
{
- cl_object lambda;
+ cl_object lambda = ECL_NIL;
const cl_env_ptr the_env = ecl_process_env();
volatile cl_compiler_env_ptr old_c_env = the_env->c_env;
struct cl_compiler_env new_c_env;
--- src/c/ffi.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/ffi.d 2020-07-01 13:32:13.336535693 -0600
@@ -766,7 +766,7 @@ si_load_foreign_module(cl_object filenam
#if !defined(ENABLE_DLOPEN)
FEerror("SI:LOAD-FOREIGN-MODULE does not work when ECL is statically linked", 0);
#else
- cl_object output;
+ cl_object output = ECL_NIL;
# ifdef ECL_THREADS
mp_get_lock(1, ecl_symbol_value(@'mp::+load-compile-lock+'));
--- src/c/Makefile.in.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/Makefile.in 2020-07-01 14:39:48.097395278 -0600
@@ -114,9 +114,9 @@ $(OBJS): $(DPP)
#
$(srcdir)/symbols_list2.h: $(srcdir)/symbols_list.h Makefile
cat $(srcdir)/symbols_list.h | \
- sed -e 's%{\([A-Z ]*.*".*"\),[^,]*,[ ]*NULL,[ ]*\([^,]*\),.*}%{\1,NULL,\2}%g' \
- -e 's%{\([A-Z ]*.*".*"\),[^,]*,[ ]*\([^,]*\),[ ]*\([^,]*\),.*}%{\1,"\2",\3}%g' \
- -e 's%{NULL.*%{NULL,NULL,-1}};%' | \
+ sed -e 's%{{\([A-Z ]*.*".*"\),[^,]*,[ ]*NULL,[ ]*\([^,]*\),.*}}%{\1,NULL,\2}%g' \
+ -e 's%{{\([A-Z ]*.*".*"\),[^,]*,[ ]*\([^,]*\),[ ]*\([^,]*\),.*}}%{\1,"\2",\3}%g' \
+ -e 's%{{NULL.*%{NULL,NULL,-1}};%' | \
sed -e 's%"\(IF_[A-Z0-9]*\)(\([^)]*\))"%\1("\2")%g' > tmp.h
mv tmp.h $@
--- src/cmp/cmpcatch.lsp.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/cmp/cmpcatch.lsp 2020-07-01 13:32:13.337535692 -0600
@@ -86,6 +86,7 @@
(let ((*unwind-exit* (cons 'FRAME *unwind-exit*))
(*destination* 'VALUES))
(c2expr* form))
+ (wt-nl " next_fr = NULL;")
(wt-nl "}")
(wt-nl "ecl_frs_pop(cl_env_copy);")
;; Here we save the values of the form which might have been
--- src/cmp/cmpwt.lsp.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/cmp/cmpwt.lsp 2020-07-01 13:32:13.338535691 -0600
@@ -106,10 +106,10 @@
(*wt-data-column* 80)
(s (with-output-to-string (stream)
(wt-filtered-data string stream))))
- (format stream "static const struct ecl_base_string ~A[] = {
+ (format stream "static const struct ecl_base_string ~A[] = { {
(int8_t)t_base_string, 0, ecl_aet_bc, 0,
ECL_NIL, (cl_index)~D, (cl_index)~D,
- (ecl_base_char*)~A };~%"
+ (ecl_base_char*)~A } };~%"
name *wt-string-size* *wt-string-size* s)
name))
(output-c-strings (strings stream)
--- src/c/number.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/number.d 2020-07-01 14:50:49.667163855 -0600
@@ -630,6 +630,7 @@ si_complex_float(cl_object r, cl_object
break;
default:
ecl_type_error(@'si::complex-float',"real part", r, @'float');
+ result = ECL_NIL;
}
return result;
}
--- src/c/numbers/ceiling.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/numbers/ceiling.d 2020-07-01 13:32:13.339535690 -0600
@@ -143,7 +143,7 @@ ecl_ceiling2(cl_object x, cl_object y)
break;
}
default:
- (void)0; /*Never reached */
+ __builtin_unreachable(); /*Never reached */
}
break;
case t_bignum:
@@ -187,7 +187,7 @@ ecl_ceiling2(cl_object x, cl_object y)
break;
}
default:
- (void)0; /*Never reached */
+ __builtin_unreachable(); /*Never reached */
}
break;
case t_ratio:
--- src/c/num_log.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/num_log.d 2020-07-01 13:32:13.340535689 -0600
@@ -476,7 +476,7 @@ cl_object
si_bit_array_op(cl_object o, cl_object x, cl_object y, cl_object r)
{
cl_fixnum i, j, n, d;
- cl_object r0;
+ cl_object r0 = ECL_NIL;
bit_operator op;
bool replace = FALSE;
int xi, yi, ri;
--- src/c/num_rand.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/num_rand.d 2020-07-01 14:52:03.163132733 -0600
@@ -211,7 +211,8 @@ init_random_state(void)
* a lot of entropy, so use open() */
int file_handler = open("/dev/urandom", O_RDONLY);
if (file_handler != -1) {
- read(file_handler, &seed, sizeof(ulong));
+ if (read(file_handler, &seed, sizeof(ulong)) < 0)
+ seed = (rand() + time(0));
close(file_handler);
} else
#endif
--- src/c/printer/write_symbol.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/printer/write_symbol.d 2020-07-01 14:46:02.355279723 -0600
@@ -102,13 +102,15 @@ needs_to_be_escaped(cl_object s, cl_obje
return 0;
}
-#define buffer_write_char(c, buffer, stream, buffer_ndx, buffer_size) \
- ecl_char_set(buffer, buffer_ndx++, c); \
- if (buffer_ndx >= buffer_size) { \
- si_fill_pointer_set(buffer, ecl_make_fixnum(buffer_size)); \
- si_do_write_sequence(buffer, stream, ecl_make_fixnum(0), ECL_NIL);\
- buffer_ndx = 0; \
- }
+#define buffer_write_char(c, buffer, stream, buffer_ndx, buffer_size) \
+ do { \
+ ecl_char_set(buffer, buffer_ndx++, c); \
+ if (buffer_ndx >= buffer_size) { \
+ si_fill_pointer_set(buffer, ecl_make_fixnum(buffer_size)); \
+ si_do_write_sequence(buffer, stream, ecl_make_fixnum(0), ECL_NIL);\
+ buffer_ndx = 0; \
+ } \
+ } while(0)
static void
write_symbol_string(cl_object s, int action, cl_object print_case,
--- src/c/printer/write_ugly.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/printer/write_ugly.d 2020-07-01 14:40:59.739373160 -0600
@@ -135,6 +135,8 @@ write_complex_float(cl_object f, cl_obje
imag = ecl_make_long_float(cimagl(ecl_clfloat(f)));
break;
default:
+ real = ECL_NIL;
+ imag = ECL_NIL;
break;
}
writestr_stream("#C(", stream);
--- src/c/unixfsys.d.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/c/unixfsys.d 2020-07-01 14:54:29.307070874 -0600
@@ -351,7 +351,7 @@ file_truename(cl_object pathname, cl_obj
* the other hand, if the link is broken return file
* truename "as is". */
struct stat filestatus;
- if (safe_stat(filename->base_string.self, &filestatus) < 0) {
+ if (safe_stat((const char *)filename->base_string.self, &filestatus) < 0) {
@(return pathname kind);
}
filename = si_readlink(filename);
--- src/h/ecl-inl.h.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/h/ecl-inl.h 2020-07-01 14:39:48.100395277 -0600
@@ -164,7 +164,7 @@
static const struct ecl_vector name ## _data = { \
(int8_t)t_vector, 0, (type), 0, \
ECL_NIL, (cl_index)(len), (cl_index)(len), \
- ecl_cast_ptr(cl_object*,raw), 0 }; \
+ { ecl_cast_ptr(cl_object*,raw) }, 0 }; \
static const cl_object name = (cl_object)(& name ## _data)
#ifdef ECL_SSE2
--- src/h/stacks.h.orig 2020-04-24 04:54:52.000000000 -0600
+++ src/h/stacks.h 2020-07-01 13:32:13.341535688 -0600
@@ -446,7 +446,7 @@ extern ECL_API ecl_frame_ptr _ecl_frs_pu
} else {
#define ECL_UNWIND_PROTECT_EXIT \
- __unwinding=0; } \
+ __unwinding=0; __next_fr=NULL; } \
ecl_frs_pop(__the_env); \
__nr = ecl_stack_push_values(__the_env);

133
ecl-21.2.1-warnings.patch Normal file
View File

@ -0,0 +1,133 @@
--- src/c/compiler.d.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/c/compiler.d 2021-02-01 08:18:32.319218522 -0700
@@ -3268,7 +3268,7 @@ si_valid_function_name_p(cl_object name)
cl_object
si_make_lambda(cl_object name, cl_object rest)
{
- cl_object lambda;
+ cl_object lambda = ECL_NIL;
const cl_env_ptr the_env = ecl_process_env();
cl_compiler_env_ptr old_c_env = the_env->c_env;
struct cl_compiler_env new_c_env;
--- src/c/ffi.d.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/c/ffi.d 2021-02-01 08:18:32.321218518 -0700
@@ -766,7 +766,7 @@ si_load_foreign_module(cl_object filenam
#if !defined(ENABLE_DLOPEN)
FEerror("SI:LOAD-FOREIGN-MODULE does not work when ECL is statically linked", 0);
#else
- cl_object output;
+ cl_object output = ECL_NIL;
# ifdef ECL_THREADS
mp_get_lock_wait(ecl_symbol_value(@'mp::+load-compile-lock+'));
--- src/cmp/cmpcatch.lsp.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/cmp/cmpcatch.lsp 2021-02-01 08:18:32.322218515 -0700
@@ -86,6 +86,7 @@
(let ((*unwind-exit* (cons 'FRAME *unwind-exit*))
(*destination* 'VALUES))
(c2expr* form))
+ (wt-nl " next_fr = NULL;")
(wt-nl "}")
(wt-nl "ecl_frs_pop(cl_env_copy);")
;; Here we save the values of the form which might have been
--- src/cmp/cmpwt.lsp.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/cmp/cmpwt.lsp 2021-02-01 08:18:32.322218515 -0700
@@ -106,10 +106,10 @@
(*wt-data-column* 80)
(s (with-output-to-string (stream)
(wt-filtered-data string stream))))
- (format stream "static const struct ecl_base_string ~A[] = {
+ (format stream "static const struct ecl_base_string ~A[] = { {
(int8_t)t_base_string, 0, ecl_aet_bc, 0,
ECL_NIL, (cl_index)~D, (cl_index)~D,
- (ecl_base_char*)~A };~%"
+ (ecl_base_char*)~A } };~%"
name *wt-string-size* *wt-string-size* s)
name))
(output-c-strings (strings stream)
--- src/c/number.d.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/c/number.d 2021-02-01 08:18:32.323218513 -0700
@@ -630,6 +630,7 @@ si_complex_float(cl_object r, cl_object
break;
default:
ecl_type_error(@'si::complex-float',"real part", r, @'float');
+ result = ECL_NIL;
}
return result;
}
--- src/c/numbers/ceiling.d.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/c/numbers/ceiling.d 2021-02-01 08:18:32.324218511 -0700
@@ -143,7 +143,7 @@ ecl_ceiling2(cl_object x, cl_object y)
break;
}
default:
- (void)0; /*Never reached */
+ __builtin_unreachable(); /*Never reached */
}
break;
case t_bignum:
@@ -187,7 +187,7 @@ ecl_ceiling2(cl_object x, cl_object y)
break;
}
default:
- (void)0; /*Never reached */
+ __builtin_unreachable(); /*Never reached */
}
break;
case t_ratio:
--- src/c/num_log.d.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/c/num_log.d 2021-02-01 08:18:32.324218511 -0700
@@ -476,7 +476,7 @@ cl_object
si_bit_array_op(cl_object o, cl_object x, cl_object y, cl_object r)
{
cl_fixnum i, j, n, d;
- cl_object r0;
+ cl_object r0 = ECL_NIL;
bit_operator op;
bool replace = FALSE;
int xi, yi, ri;
--- src/c/num_rand.d.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/c/num_rand.d 2021-02-01 08:18:32.325218508 -0700
@@ -211,7 +211,8 @@ init_random_state(void)
* a lot of entropy, so use open() */
int file_handler = open("/dev/urandom", O_RDONLY);
if (file_handler != -1) {
- read(file_handler, &seed, sizeof(ulong));
+ if (read(file_handler, &seed, sizeof(ulong)) < 0)
+ seed = (rand() + time(0));
close(file_handler);
} else
#endif
--- src/c/printer/write_ugly.d.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/c/printer/write_ugly.d 2021-02-01 08:18:32.326218506 -0700
@@ -135,6 +135,8 @@ write_complex_float(cl_object f, cl_obje
imag = ecl_make_long_float(cimagl(ecl_clfloat(f)));
break;
default:
+ real = ECL_NIL;
+ imag = ECL_NIL;
break;
}
writestr_stream("#C(", stream);
--- src/h/ecl-inl.h.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/h/ecl-inl.h 2021-02-01 08:18:32.328218501 -0700
@@ -164,7 +164,7 @@
static const struct ecl_vector name ## _data = { \
(int8_t)t_vector, 0, (type), 0, \
ECL_NIL, (cl_index)(len), (cl_index)(len), \
- ecl_cast_ptr(cl_object*,raw), 0 }; \
+ { ecl_cast_ptr(cl_object*,raw) }, 0 }; \
static const cl_object name = (cl_object)(& name ## _data)
#ifdef ECL_SSE2
--- src/h/stacks.h.orig 2021-02-01 05:59:46.000000000 -0700
+++ src/h/stacks.h 2021-02-01 08:18:32.328218501 -0700
@@ -446,7 +446,7 @@ extern ECL_API ecl_frame_ptr _ecl_frs_pu
} else {
#define ECL_UNWIND_PROTECT_EXIT \
- __unwinding=0; } \
+ __unwinding=0; __next_fr=NULL; } \
ecl_frs_pop(__the_env); \
__nr = ecl_stack_push_values(__the_env);

View File

@ -1,6 +1,6 @@
Name: ecl
Version: 20.4.24
Release: 4%{?dist}
Version: 21.2.1
Release: 1%{?dist}
Summary: Embeddable Common-Lisp
License: LGPLv2+ and BSD and MIT and Public Domain
@ -10,10 +10,12 @@ Source1: %{name}.desktop
# A modified version of src/util/ecl.svg with extra whitespace removed. The
# extra whitespace made the icon appear very small and shoved into a corner.
Source2: %{name}.svg
# Metainfo for ECL
Source3: net.common-lisp.ecl.metainfo.xml
# This patch was sent upstream on 4 Feb 2012. It fixes a few warnings
# from the C compiler that indicate situations that might be dangerous at
# runtime.
Patch0: %{name}-20.4.24-warnings.patch
Patch0: %{name}-21.2.1-warnings.patch
# Do not use a separate thread to handle signals by default if built with
# boehm-gc support.
# This prevents a deadlock when building maxima with ecl support in
@ -23,17 +25,11 @@ Patch0: %{name}-20.4.24-warnings.patch
Patch1: %{name}-20.4.24-signal_handling_thread.patch
# GCC does not implement support for #pragma STDC FENV_ACCESS
Patch2: %{name}-20.4.24-fenv-access.patch
# Fix setting the stack size.
# See https://gitlab.com/embeddable-common-lisp/ecl/-/merge_requests/215
Patch3: %{name}-20.4.24-stack-size.patch
# Fix the ECL_WITH_LISP_FPE macro. See
# https://gitlab.com/embeddable-common-lisp/ecl/-/commit/75877dd8f0d534552284ba4380ba65baa74f028f
Patch4: %{name}-20.4.24-fpe-macro.patch
# Avoid an infinite loop if there is a write error on stderr. See
# build/pkgs/ecl/patches/write_error.patch in the sagemath distribution.
Patch5: %{name}-20.4.24-write-error.patch
Patch3: %{name}-20.4.24-write-error.patch
# Fix bogus test compromised by LTO.
Patch6: %{name}-20.4.24-configure.patch
Patch4: %{name}-20.4.24-configure.patch
BuildRequires: desktop-file-utils
@ -42,6 +38,7 @@ BuildRequires: docbook5-style-xsl
BuildRequires: emacs-common
BuildRequires: gcc
BuildRequires: gmp-devel
BuildRequires: libappstream-glib
BuildRequires: make
BuildRequires: pkgconfig
BuildRequires: pkgconfig(atomic_ops)
@ -80,6 +77,9 @@ find src/{c,h} -type f -perm /0111 -exec chmod a-x {} \+
# Temporary fix for missing braces in initializers, causes build failure
sed -i 's/{.*,.*,.*,.*,.*}/{&}/g' src/c/symbols_list.h
# Don't give the library a useless rpath
sed -i "/ECL_LDRPATH='-Wl,--rpath,~A'/d" src/configure
%build
%configure --enable-manual=html --with-sse=auto \
@ -92,26 +92,32 @@ make
%make_install
# Remove installed files that are in the wrong place
rm -fr $RPM_BUILD_ROOT%{_docdir}
rm -f $RPM_BUILD_ROOT%{_libdir}/Copyright
rm -f $RPM_BUILD_ROOT%{_libdir}/LGPL
rm -fr %{buildroot}%{_docdir}
rm -f %{buildroot}%{_libdir}/Copyright
rm -f %{buildroot}%{_libdir}/LGPL
# Install the man pages
mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
mkdir -p %{buildroot}%{_mandir}/man1
sed -e "s|@bindir@|%{_bindir}|" src/doc/ecl.man.in > \
$RPM_BUILD_ROOT%{_mandir}/man1/ecl.1
cp -p src/doc/ecl-config.man.in $RPM_BUILD_ROOT%{_mandir}/man1/ecl-config.1
%{buildroot}%{_mandir}/man1/ecl.1
cp -p src/doc/ecl-config.man.in %{buildroot}%{_mandir}/man1/ecl-config.1
# Add missing executable bits
chmod a+x $RPM_BUILD_ROOT%{_libdir}/ecl-%{version}/dpp
chmod a+x $RPM_BUILD_ROOT%{_libdir}/ecl-%{version}/ecl_min
chmod a+x %{buildroot}%{_libdir}/ecl-%{version}/dpp
chmod a+x %{buildroot}%{_libdir}/ecl-%{version}/ecl_min
# Install the desktop file
desktop-file-install --dir=$RPM_BUILD_ROOT%{_datadir}/applications %{SOURCE1}
desktop-file-install --dir=%{buildroot}%{_datadir}/applications %{SOURCE1}
# Install the desktop icon
mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/scalable/apps
cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/scalable/apps
mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps
cp -p %{SOURCE2} %{buildroot}%{_datadir}/icons/hicolor/scalable/apps
# Install the AppData file
mkdir -p %{buildroot}%{_metainfodir}
install -pm 644 %{SOURCE3} %{buildroot}%{_metainfodir}
appstream-util validate-relax --nonet \
%{buildroot}%{_metainfodir}/net.common-lisp.ecl.metainfo.xml
%files
@ -119,11 +125,11 @@ cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/scalable/apps
%{_bindir}/ecl-config
%{_datadir}/applications/ecl.desktop
%{_datadir}/icons/hicolor/scalable/apps/ecl.svg
%{_metainfodir}/net.common-lisp.ecl.metainfo.xml
%{_libdir}/ecl*
%{_libdir}/libecl.so.20.*
%{_libdir}/libecl.so.20
%{_libdir}/libecl.so.21*
%{_libdir}/libecl.so
%{_includedir}/ecl
%{_includedir}/ecl/
%{_mandir}/man1/*
%doc examples CHANGELOG README.md build/doc/manual/html
%doc src/doc/amop.txt src/doc/types-and-classes
@ -131,6 +137,11 @@ cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/scalable/apps
%changelog
* Mon Feb 1 2021 Jerry James <loganjerry@gmail.com> - 21.2.1-1
- Version 21.2.1
- Drop upstreamed patches: -fpe-macro, -stack-size
- Add metainfo
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 20.4.24-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>net.common-lisp.ecl</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>LGPL-2.1-or-later</project_license>
<name>Embeddable Common Lisp</name>
<summary>Common Lisp engine that can be embedded in C applications</summary>
<description>
<p>
ECL (Embeddable Common Lisp) is an implementation of the Common Lisp
language as defined by the ANSI X3J13 specification. ECL features a
bytecode compiler and interpreter, the ability to build standalone
executables and libraries, and extensions such as ASDF, sockets, and
Gray streams.
</p>
</description>
<launchable type="desktop-id">ecl.desktop</launchable>
<screenshots>
<screenshot type="default">
<image>https://a.fsdn.com/con/app/proj/ecls/screenshots/22260.jpg/max/max/1</image>
<caption>ECL in Emacs</caption>
</screenshot>
<screenshot>
<image>https://a.fsdn.com/con/app/proj/ecls/screenshots/49777.jpg/max/max/1</image>
<caption>Simple Qt app written with ECL</caption>
</screenshot>
<screenshot>
<image>https://a.fsdn.com/con/app/proj/ecls/screenshots/191857.jpg/max/max/1</image>
<caption>ECL in a terminal</caption>
</screenshot>
</screenshots>
<update_contact>loganjerry@gmail.com</update_contact>
<url type="homepage">https://common-lisp.net/project/ecl/</url>
<url type="bugtracker">https://gitlab.com/embeddable-common-lisp/ecl/-/issues</url>
<url type="help">https://common-lisp.net/project/ecl/static/manual/</url>
<url type="donation">https://www.patreon.com/jackdaniel_kochmanski</url>
<!--
Uncomment once fixed: https://bugzilla.redhat.com/show_bug.cgi?id=1893337
<url type="contact">mailto:ecl-devel@common-lisp.net</url>
-->
<content_rating type="oars-1.0"></content_rating>
<provides>
<binary>ecl</binary>
<binary>ecl-config</binary>
</provides>
</component>

View File

@ -1 +1 @@
SHA512 (ecl-20.4.24.tgz) = 4c127e0d6a99e38f3a926135ae92d92899058c5a5e99b90f28d4a47b58d94ee89a958cfb4bfd2b9e6ad7b3c57867cd13119b2a4dd6bb1aa3bb5ec42a96bfa788
SHA512 (ecl-21.2.1.tgz) = 0849bebe1a8073ea8027cfb172c1d7781d43adb6a8b80585bd08d5674b80422d1648b6fbf718cc17a51c5de6c696514523b4d13a82e8113bf9365c95d3c28648