Version 21.2.1.
- Drop upstreamed patches: -fpe-macro, -stack-size. - Add metainfo.
This commit is contained in:
parent
5a436eb7d0
commit
4cec6bdb33
|
@ -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 { \
|
|
@ -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@
|
|
@ -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);
|
||||
|
|
@ -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);
|
||||
|
61
ecl.spec
61
ecl.spec
|
@ -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
|
||||
|
||||
|
|
|
@ -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>
|
2
sources
2
sources
|
@ -1 +1 @@
|
|||
SHA512 (ecl-20.4.24.tgz) = 4c127e0d6a99e38f3a926135ae92d92899058c5a5e99b90f28d4a47b58d94ee89a958cfb4bfd2b9e6ad7b3c57867cd13119b2a4dd6bb1aa3bb5ec42a96bfa788
|
||||
SHA512 (ecl-21.2.1.tgz) = 0849bebe1a8073ea8027cfb172c1d7781d43adb6a8b80585bd08d5674b80422d1648b6fbf718cc17a51c5de6c696514523b4d13a82e8113bf9365c95d3c28648
|
||||
|
|
Loading…
Reference in New Issue