Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F110990694
D24958.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
13 KB
Referenced Files
None
Subscribers
None
D24958.id.diff
View Options
Index: lang/ecl-sage/Makefile
===================================================================
--- lang/ecl-sage/Makefile
+++ lang/ecl-sage/Makefile
@@ -5,9 +5,10 @@
PORTVERSION= 16.1.3
CATEGORIES= lang lisp
MASTER_SITES= https://common-lisp.net/project/ecl/static/files/release/
+PKGNAMESUFFIX= -sage
-MAINTAINER= olgeni@FreeBSD.org
-COMMENT= ANSI Common Lisp implementation
+MAINTAINER= thierry@FreeBSD.org
+COMMENT= ANSI Embeddable Common Lisp implementation for SageMath
LICENSE= LGPL20
@@ -15,19 +16,23 @@
BROKEN_mips= fails to build: qemu: uncaught target signal 11 (Segmentation fault) - core dumped
BROKEN_mips64= fails to build: qemu: uncaught target signal 11 (Segmentation fault) - core dumped
-LIB_DEPENDS= libgmp.so:math/gmp
+LIB_DEPENDS= libgmp.so:math/gmp \
+ libgc.so:devel/boehm-gc
MAKE_JOBS_UNSAFE= yes
-USES= gmake perl5 tar:tgz
+USES= autoreconf gmake localbase perl5 tar:tgz
USE_PERL5= build
GNU_CONFIGURE= yes
-CONFIGURE_ARGS= --with-system-gmp --with-gmp-prefix=${LOCALBASE} --enable-boehm=system
-CFLAGS+= -I${LOCALBASE}/include
-LDFLAGS+= -L${LOCALBASE}/lib
+AUTORECONF_WRKSRC= ${WRKSRC}/src
+
+CONFLICTS= ecl-16.*
+
+CONFIGURE_ARGS= --with-system-gmp --with-gmp-prefix=${LOCALBASE} \
+ --enable-boehm=system
USE_LDCONFIG= yes
OPTIONS_DEFINE= ASDF DFFI SOCKETS THREADS X11
-OPTIONS_DEFAULT=ASDF DFFI SOCKETS THREADS
+OPTIONS_DEFAULT=ASDF DFFI SOCKETS
ASDF_DESC= Enable ASDF building facility
SOCKETS_DESC= Enable socket interface
@@ -54,14 +59,16 @@
THREADS_CONFIGURE_ON= --enable-threads=yes
THREADS_LDFLAGS= -lpthread
THREADS_LIB_DEPENDS= libgc-threaded.so:devel/boehm-gc-threaded
+THREADS_LIBS= -lgc-threaded
THREADS_CONFIGURE_OFF= --enable-threads=no
-THREADS_LIB_DEPENDS_OFF= libgc.so:devel/boehm-gc
+THREADS_BOKEN= fails to build: segmentation fault
post-patch-THREADS-on:
- @${REINPLACE_CMD} -e 's|-lgc|-lgc-threaded|' ${WRKSRC}/src/configure
+ ${REINPLACE_CMD} -e 's|-lgc|-lgc-threaded|' ${WRKSRC}/src/configure
post-install:
${RMDIR} ${STAGEDIR}${PREFIX}/include/ecl/gc/private
${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libecl.so.${PORTVERSION}
+ ${LN} -sf ecl-${PORTVERSION} ${STAGEDIR}${PREFIX}/lib/ecl
.include <bsd.port.mk>
Index: lang/ecl-sage/files/patch-src_Makefile.in
===================================================================
--- lang/ecl-sage/files/patch-src_Makefile.in
+++ lang/ecl-sage/files/patch-src_Makefile.in
@@ -0,0 +1,19 @@
+--- src/Makefile.in.orig 2016-12-19 10:25:00 UTC
++++ src/Makefile.in
+@@ -304,10 +304,14 @@ install:
+ if test -s $$i ; then \
+ if echo $$i | grep dll; then \
+ $(INSTALL_LIBRARY) $$i $(DESTDIR)$(bindir); \
+- fi; \
+- $(INSTALL_LIBRARY) $$i $(DESTDIR)$(libdir); \
++ else \
++ $(INSTALL_LIBRARY) $$i $(DESTDIR)$(libdir); \
++ fi \
+ fi \
+ done
++ if [ "x@IMPLIB_NAME@" != "x" -a -f "@IMPLIB_NAME@" ]; then \
++ $(INSTALL_LIBRARY) @IMPLIB_NAME@ $(DESTDIR)$(libdir); \
++ fi
+ if [ "x@SONAME3@" != "x" -a -f "@SONAME3@" ]; then \
+ ( $(INSTALL_LIBRARY) @SONAME3@ $(DESTDIR)$(libdir) && \
+ cd $(DESTDIR)$(libdir) && $(RM) -f @SONAME2@ @SONAME1@ @SONAME@ && \
Index: lang/ecl-sage/files/patch-src_aclocal.m4
===================================================================
--- lang/ecl-sage/files/patch-src_aclocal.m4
+++ lang/ecl-sage/files/patch-src_aclocal.m4
@@ -0,0 +1,64 @@
+--- src/aclocal.m4.orig 2016-12-19 10:25:00 UTC
++++ src/aclocal.m4
+@@ -231,6 +231,8 @@ AC_SUBST(LIBPREFIX)dnl Name components of a statically
+ AC_SUBST(LIBEXT)
+ AC_SUBST(SHAREDEXT)dnl Name components of a dynamically linked library
+ AC_SUBST(SHAREDPREFIX)
++AC_SUBST(IMPLIB_EXT)dnl Name components of a dynamically linked library import file - borrowed from SageMath
++AC_SUBST(IMPLIB_PREFIX)
+ AC_SUBST(OBJEXT)dnl These are set by autoconf
+ AC_SUBST(EXEEXT)
+ AC_SUBST(INSTALL_TARGET)dnl Which type of installation: flat directory or unix like.
+@@ -240,6 +242,8 @@ ECL_GC_DIR=bdwgc
+ ECL_LDRPATH=''
+ SHAREDEXT='so'
+ SHAREDPREFIX='lib'
++IMPLIB_EXT=''
++IMPLIB_PREFIX=''
+ LIBPREFIX='lib'
+ LIBEXT='a'
+ PICFLAG='-fPIC'
+@@ -251,6 +255,8 @@ THREAD_OBJ="$THREAD_OBJ c/threads/process c/threads/qu
+ clibs='-lm'
+ SONAME=''
+ SONAME_LDFLAGS=''
++IMPLIB_NAME=''
++IMPLIB_LDFLAGS=''
+ case "${host_os}" in
+ linux-androideabi)
+ thehost='android'
+@@ -366,10 +372,14 @@ case "${host_os}" in
+ shared='yes'
+ THREAD_CFLAGS='-D_THREAD_SAFE'
+ THREAD_LIBS='-lpthread'
+- SHARED_LDFLAGS="-shared ${LDFLAGS}"
+- BUNDLE_LDFLAGS="-shared ${LDFLAGS}"
+- SHAREDPREFIX=''
++ SHARED_LDFLAGS="-shared -Wl,--enable-auto-image-base ${LDFLAGS}"
++ BUNDLE_LDFLAGS="-shared -Wl,--enable-auto-image-base ${LDFLAGS}"
++ SHAREDPREFIX='cyg'
+ SHAREDEXT='dll'
++ IMPLIB_PREFIX='lib'
++ IMPLIB_EXT='dll.a'
++ IMPLIB_NAME="${IMPLIB_PREFIX}ecl.${IMPLIB_EXT}"
++ IMPLIB_LDFLAGS="-Wl,--out-implib,${IMPLIB_NAME}"
+ PICFLAG=''
+ if test "x$host_cpu" = "xx86_64" ; then
+ # Our GMP library is too old and does not support
+@@ -387,10 +397,14 @@ case "${host_os}" in
+ enable_threads='yes'
+ THREAD_CFLAGS='-D_THREAD_SAFE'
+ THREAD_GC_FLAGS='--enable-threads=win32'
+- SHARED_LDFLAGS=''
+- BUNDLE_LDFLAGS=''
++ SHARED_LDFLAGS="-shared -Wl,--enable-auto-image-base ${LDFLAGS}"
++ BUNDLE_LDFLAGS="-shared -Wl,--enable-auto-image-base ${LDFLAGS}"
+ SHAREDPREFIX=''
+ SHAREDEXT='dll'
++ IMPLIB_PREFIX='lib'
++ IMPLIB_EXT='dll.a'
++ IMPLIB_NAME="${IMPLIB_PREFIX}ecl.${IMPLIB_EXT}"
++ IMPLIB_LDFLAGS="-Wl,--out-implib,${IMPLIB_NAME}"
+ PICFLAG=''
+ INSTALL_TARGET='flatinstall'
+ TCPLIBS='-lws2_32'
Index: lang/ecl-sage/files/patch-src_c_file.d
===================================================================
--- lang/ecl-sage/files/patch-src_c_file.d
+++ lang/ecl-sage/files/patch-src_c_file.d
@@ -0,0 +1,15 @@
+--- src/c/file.d.orig 2016-12-19 10:25:00 UTC
++++ src/c/file.d
+@@ -3351,8 +3351,10 @@ output_stream_write_byte8(cl_object strm, unsigned cha
+ ecl_disable_interrupts();
+ do {
+ out = fwrite(c, sizeof(char), n, IO_STREAM_FILE(strm));
+- } while (out < n && restartable_io_error(strm, "fwrite"));
+- ecl_enable_interrupts();
++ /* Ignore write errors to stderr to avoid an infinite loop - patch from SageMath */
++ } while (out < n && (IO_STREAM_FILE(strm) != stderr) && restartable_io_error(strm, "fwrite"));
++
++ ecl_enable_interrupts();
+ return out;
+ }
+
Index: lang/ecl-sage/files/patch-src_compile.lsp.in
===================================================================
--- lang/ecl-sage/files/patch-src_compile.lsp.in
+++ lang/ecl-sage/files/patch-src_compile.lsp.in
@@ -0,0 +1,13 @@
+--- src/compile.lsp.in.orig 2016-12-19 10:25:00 UTC
++++ src/compile.lsp.in
+@@ -142,8 +142,9 @@
+ #+:wants-dlopen
+ ;;;
+ ;;; We do not need the -rpath flag for the library, nor -lecl.
++;;; Patch borrowed from SageMath
+ ;;;
+-(let* ((c::*ld-shared-flags* #-msvc "@SHARED_LDFLAGS@ @LDFLAGS@ @SONAME_LDFLAGS@ @CORE_LIBS@ @FASL_LIBS@ @LIBS@"
++(let* ((c::*ld-shared-flags* #-msvc " @IMPLIB_LDFLAGS@ @SHARED_LDFLAGS@ @LDFLAGS@ @SONAME_LDFLAGS@ @CORE_LIBS@ @FASL_LIBS@ @LIBS@"
+ #+msvc "@SHARED_LDFLAGS@ @LDFLAGS@ @STATICLIBS@ @CLIBS@")
+ (c::*cc-flags* (concatenate 'string "-DECL_API -I@true_builddir@/c " c::*cc-flags*))
+ (extra-args nil))
Index: lang/ecl-sage/files/patch-src_configure.ac
===================================================================
--- lang/ecl-sage/files/patch-src_configure.ac
+++ lang/ecl-sage/files/patch-src_configure.ac
@@ -0,0 +1,22 @@
+--- src/configure.ac.orig 2016-12-19 10:25:00 UTC
++++ src/configure.ac
+@@ -606,6 +606,19 @@ AC_SUBST(SONAME1)
+ AC_SUBST(SONAME)
+ AC_SUBST(SONAME_LDFLAGS)
+
++dnl ----------------------------------------------------------------------
++dnl IMPLIB_NAME is only active when IMPLIB_NAME is non nil
++dnl Patch borrowed from SageMath
++AC_MSG_CHECKING(for import name)
++if test "${enable_soname}" != yes; then
++ IMPLIB_NAME=''
++ AC_MSG_RESULT([none])
++else
++ AC_MSG_RESULT([${IMPLIB_NAME}])
++fi
++AC_SUBST(IMPLIB_NAME)
++AC_SUBST(IMPLIB_LDFLAGS)
++
+ dnl Related to that, the package version number
+ ECL_VERSION_NUMBER=$(($PACKAGE_MAJOR * 10000 + $PACKAGE_MINOR * 100 + $PACKAGE_LEAST))
+ AC_SUBST(ECL_VERSION_NUMBER)
Index: lang/ecl-sage/files/patch-src_lsp_format.lsp
===================================================================
--- lang/ecl-sage/files/patch-src_lsp_format.lsp
+++ lang/ecl-sage/files/patch-src_lsp_format.lsp
@@ -0,0 +1,78 @@
+--- src/lsp/format.lsp.orig 2016-12-19 10:25:00 UTC
++++ src/lsp/format.lsp
+@@ -308,11 +308,14 @@
+ :start (format-directive-start struct)
+ :end (format-directive-end struct))))
+
++;; Patch borrowed from SageMath
++(defconstant +format-directive-limit+ (1+ (char-code #\~)))
++
+ #+formatter
+ (defparameter *format-directive-expanders*
+- (make-array char-code-limit :initial-element nil))
++ (make-array +format-directive-limit+ :initial-element nil))
+ (defparameter *format-directive-interpreters*
+- (make-array char-code-limit :initial-element nil))
++ (make-array +format-directive-limit+ :initial-element nil))
+
+ (defparameter *default-format-error-control-string* nil)
+ (defparameter *default-format-error-offset* nil)
+@@ -545,24 +548,24 @@
+ (write-string directive stream)
+ (interpret-directive-list stream (cdr directives) orig-args args))
+ (#-ecl format-directive #+ecl vector
++ (multiple-value-bind
++ (new-directives new-args)
++ (let* ((code (char-code (format-directive-character directive)))
++ (function
++ (and (< code +format-directive-limit+)
++ (svref *format-directive-interpreters* code)))
++ (*default-format-error-offset*
++ (1- (format-directive-end directive))))
++ (unless function
++ (error 'format-error
++ :complaint "Unknown format directive."))
+ (multiple-value-bind
+ (new-directives new-args)
+- (let ((function
+- (svref *format-directive-interpreters*
+- (char-code (format-directive-character
+- directive))))
+- (*default-format-error-offset*
+- (1- (format-directive-end directive))))
+- (unless function
+- (error 'format-error
+- :complaint "Unknown format directive."))
+- (multiple-value-bind
+- (new-directives new-args)
+- (funcall function stream directive
+- (cdr directives) orig-args args)
+- (values new-directives new-args)))
+- (interpret-directive-list stream new-directives
+- orig-args new-args)))))
++ (funcall function stream directive
++ (cdr directives) orig-args args)
++ (values new-directives new-args)))
++ (interpret-directive-list stream new-directives
++ orig-args new-args)))))
+ args))
+
+
+@@ -634,11 +637,12 @@
+ (values `(write-string ,directive stream)
+ more-directives))
+ (format-directive
+- (let ((expander
+- (aref *format-directive-expanders*
+- (char-code (format-directive-character directive))))
+- (*default-format-error-offset*
+- (1- (format-directive-end directive))))
++ (let* ((code (char-code (format-directive-character directive)))
++ (expander
++ (and (< code +format-directive-limit+)
++ (svref *format-directive-expanders* code)))
++ (*default-format-error-offset*
++ (1- (format-directive-end directive))))
+ (if expander
+ (funcall expander directive more-directives)
+ (error 'format-error
Index: lang/ecl-sage/pkg-descr
===================================================================
--- lang/ecl-sage/pkg-descr
+++ lang/ecl-sage/pkg-descr
@@ -3,4 +3,7 @@
(Common-Lisp Object System), conditions, loops, etc, plus a translator
to C, which can produce standalone executables.
+This a speciallly patched version for a dynamically linked library, to be
+used with SageMath.
+
WWW: https://common-lisp.net/project/ecl/main.html
Index: lang/ecl-sage/pkg-plist
===================================================================
--- lang/ecl-sage/pkg-plist
+++ lang/ecl-sage/pkg-plist
@@ -84,6 +84,7 @@
include/ecl/object.h
include/ecl/page.h
include/ecl/stacks.h
+lib/ecl
lib/ecl-%%VERSION%%/COPYING
lib/ecl-%%VERSION%%/LICENSE
lib/ecl-%%VERSION%%/TAGS
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Feb 26, 9:24 PM (2 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16858153
Default Alt Text
D24958.id.diff (13 KB)
Attached To
Mode
D24958: New port: lang/ecl-sage
Attached
Detach File
Event Timeline
Log In to Comment