Commit 5f6fc730 authored by Douglas Miles's avatar Douglas Miles Committed by GitHub

Merge pull request #1 from easye/master

Catchup
parents 1108899a c7c34bb9
......@@ -12,12 +12,17 @@ Enhancements
** [r14857] Support `FILE-POSITION` on string streams.
** [r14858] Runtime class improvements.
FIXME: currently borks CFFI-TESTS
** [r14859] Add multiple disassembler selector.
** [r14860] Add EXTERNAL-ONLY option to APROPOS.
** [r14861] Fix nested classes from JARs not visible with JSS.
* Implemented "time of time" semantics for {encode,decode}-universal time.
* Implemented "time of time" semantics {encode,decode}-universal time.
FIXME: breaking a number of ANSI tests. Need to conditionalize runtime behavior.
* EXTENSIONS:MAKE-TEMP-FILE now takes keyword arguments to specify
values of the prefix and suffix strings to the underlying JVM
implementation of java.io.File.createTempFile().
Fixes
-----
......@@ -29,7 +34,7 @@ Fixes
Updates
------
* asdf-3.1.7.9
* asdf-3.1.7.26
* jna-4.2.2
......
......@@ -4,7 +4,6 @@
<>
abcl:is "W3C Turtle RDF serializations format" .
@prefix doap: <http://usefulinc.com/ns/doap#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
......@@ -20,9 +19,13 @@
dc:identifier <urn:abcl.org/1.4.0#dev> ;
doap:language "Common Lisp" ;
dc:created "01-JAN-2004" ;
dc:modified "04-SEP-2016" ;
dc:modified "29-SEP-2016" ;
dc:version "abcl-1.4.0" ;
dc:release "rc-0" ;
dc:release "dev" ;
abcl:git <https://github.com/easye/abcl/> ; # Does this overwrite? TODO Check RDF specs.
abcl:git <https://gitlab.common-lisp.net/mevenson/abcl/> ;
abcl:svn <http://abcl.org/trac/changeset/14875> .
<>
rdfs:seeAlso <file:README> ;
rdfs:seeAlso <file:MANUAL> ;
......@@ -59,7 +62,7 @@
rdf:_3 _:ville ;
rdf:_4 _:astalla ;
rdf:_5 _:rudi ;
rdf:_6 _:ferada ;
rdf:_11 _:ferada ;
rdf:_7 _:cyrus ;
rdf:_8 _:dmiles ;
rdf:_9 _:alanr ;
......@@ -83,6 +86,7 @@ _:user dc:identifier <http://ville.not.org/#me> ;
dc:license <http://usefulinc.com/doap/licenses/gplv2-classpath-exception> ;
rdfs:seeAlso <urn:abcl.org/release/1.3.3> ;
rdfs:seeAlso <urn:abcl.org/release/1.4.0> ;
dc:licenseDocument <file:COPYING> ;
dc:licenseDocument
<http://abcl.org/svn/trunk/abcl/src/org/armedbear/LICENSE> ;
......@@ -102,9 +106,10 @@ doap:Project rdfs:seeAlso [
rdf:_4 <https://code.google.com/p/abcl-dynamic-install/files/abcl-1.1.1.jar> ;
rdf:_5 <http://abcl.org/releases/1.2.1/abcl-1.2.1.jar> ;
rdf:_6 <http://abcl.org/releases/1.3.0/abcl-1.3.0.jar> ;
rdf:_7 <http://abcl.org/releases/1.3.3/abcl-1.3.3.jar> ;
rdf:_14 <http://abcl.org/releases/1.3.2/abcl-1.3.1.jar> ;
rdf:_7 <http://abcl.org/releases/1.3.2/abcl-1.3.2.jar> ;
rdf:_8 <http://abcl.org/releases/1.3.3/abcl-1.3.3.jar> ;
rdf:_9 <http://abcl.org/releases/1.4.0/abcl-1.4.0.jar>
rdf:_9 <http://abcl.org/releases/1.4.0/abcl-1.4.0.jar> ;
] ;
] .
......@@ -141,7 +146,7 @@ doap:Project rdfs:seeAlso
rdf:_9 abcl:quicklisp-abcl ;
] .
abcl:asdf dc:version "3.1.7.9" .
abcl:asdf dc:version "3.1.7.26" .
abcl:abcl-contrib
rdfs:seeAlso <file:contrib/README.markdown> .
......
......@@ -191,7 +191,12 @@ is divided into following sections:
</not>
</and>
</condition>
<property name="javac.fork" value="${jdkBug6558476}"/>
<condition else="false" property="javac.fork">
<or>
<istrue value="${jdkBug6558476}"/>
<istrue value="${javac.external.vm}"/>
</or>
</condition>
<property name="jar.index" value="false"/>
<property name="jar.index.metainf" value="${jar.index}"/>
<property name="copylibs.rebase" value="true"/>
......@@ -217,6 +222,7 @@ is divided into following sections:
<condition else="" property="testng.debug.mode" value="-mixed">
<istrue value="${junit+testng.available}"/>
</condition>
<property name="java.failonerror" value="true"/>
</target>
<target name="-post-init">
<!-- Empty placeholder for easier customization. -->
......@@ -693,7 +699,7 @@ is divided into following sections:
<sequential>
<property environment="env"/>
<resolve name="profiler.current.path" value="${profiler.info.pathvar}"/>
<java classname="@{classname}" dir="${profiler.info.dir}" fork="true" jvm="${profiler.info.jvm}">
<java classname="@{classname}" dir="${profiler.info.dir}" failonerror="${java.failonerror}" fork="true" jvm="${profiler.info.jvm}">
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg value="${profiler.info.jvmargs.agent}"/>
<jvmarg line="${profiler.info.jvmargs}"/>
......@@ -768,7 +774,7 @@ is divided into following sections:
<attribute default="${debug.classpath}" name="classpath"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg line="${debug-args-line}"/>
<jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
......@@ -795,7 +801,7 @@ is divided into following sections:
<attribute default="jvm" name="jvm"/>
<element name="customize" optional="true"/>
<sequential>
<java classname="@{classname}" dir="${work.dir}" fork="true">
<java classname="@{classname}" dir="${work.dir}" failonerror="${java.failonerror}" fork="true">
<jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
<jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
<redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
......
......@@ -4,8 +4,8 @@ build.xml.stylesheet.CRC32=be360661
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=742204ce
nbproject/build-impl.xml.script.CRC32=768003f6
nbproject/build-impl.xml.stylesheet.CRC32=876e7a8f@1.74.1.48
nbproject/build-impl.xml.script.CRC32=4c2b716d
nbproject/build-impl.xml.stylesheet.CRC32=05530350@1.79.1.48
nbproject/profiler-build-impl.xml.data.CRC32=71623fcd
nbproject/profiler-build-impl.xml.script.CRC32=abda56ed
nbproject/profiler-build-impl.xml.stylesheet.CRC32=42cb6bcf
# HG changeset patch
# Parent 394d3a2e64b9b0c297b6e8dbdb58cee2e425f414
Fixed incorrect IPv6 addresses on ABCL
On ABCL, the vector form of IPv6 addresses only included the first half
of the bytes, resulting in an 8-byte vector instead of the full 16 bytes
of the vector.
<https://github.com/usocket/usocket/pull/26/commits/11361bda5f93be74cdf06cf376e4943cc5c0600d?diff=unified>
<http://abcl.org/trac/changeset/r14881>
diff -r 394d3a2e64b9 backend/abcl.lisp
--- a/backend/abcl.lisp Fri Sep 30 11:11:41 2016 +0200
+++ b/backend/abcl.lisp Fri Sep 30 11:16:38 2016 +0200
@@ -174,8 +174,10 @@
((= 4 length)
(vector (jbyte 0) (jbyte 1) (jbyte 2) (jbyte 3)))
((= 16 length)
- (vector (jbyte 0) (jbyte 1) (jbyte 2) (jbyte 3)
- (jbyte 4) (jbyte 5) (jbyte 6) (jbyte 7)))
+ (vector (jbyte 0) (jbyte 1) (jbyte 2) (jbyte 3)
+ (jbyte 4) (jbyte 5) (jbyte 6) (jbyte 7)
+ (jbyte 8) (jbyte 9) (jbyte 10) (jbyte 11)
+ (jbyte 12) (jbyte 13) (jbyte 14) (jbyte 15)))
(t nil)))))) ; neither a IPv4 nor IPv6 address?!
(defun get-hosts-by-name (name)
......@@ -264,31 +264,77 @@ public final class Extensions
}
public static final Primitive MAKE_TEMP_FILE = new make_temp_file();
@DocString(name="make_temp_file",
doc="Create and return the pathname of a previously non-existent file.")
@DocString(name="make-temp-file",
doc="Create and return the pathname of a previously non-existent file.",
args="&key prefix suffix")
private static class make_temp_file extends Primitive {
make_temp_file() {
super("make-temp-file", PACKAGE_EXT, true, "");
super("make-temp-file", PACKAGE_EXT, true, "&key prefix suffix");
}
@Override
public LispObject execute()
public LispObject execute(LispObject ... args)
{
try
{
File file = File.createTempFile("abcl", "", null);
if (file != null)
return new Pathname(file.getPath());
}
catch (IOException e)
{
Debug.trace(e);
String prefix = "abcl";
String suffix = null;
if ( args.length % 2 != 0) {
error(new WrongNumberOfArgumentsException("Expecting an even number of arguments including keywords."));
}
for (int i = 0; i < args.length; i++ ) {
if (args[i].SYMBOLP() != NIL) {
if (args[i].equals(Keyword.PREFIX)) {
String specifiedPrefix = args[i + 1].getStringValue();
if (specifiedPrefix != null) {
if (specifiedPrefix.equals(NIL.getStringValue())) {
error (new TypeError("Cannot create temporary file with NIL prefix."));
}
prefix = specifiedPrefix;
i += 1;
}
} else if (args[i].equals(Keyword.SUFFIX)) {
String specifiedSuffix = args[i + 1].getStringValue();
if (specifiedSuffix != null) {
if (specifiedSuffix.equals(NIL.getStringValue())) {
suffix =null;
} else {
suffix = specifiedSuffix;
}
i += 1;
}
}
} else {
error(new TypeError("Expected matching keyword argument.", args[i], Keyword.PREFIX.classOf()));
}
}
return createTempFile(prefix, suffix);
}
@Override
public LispObject execute() {
return createTempFile("abcl", null);
}
private LispObject createTempFile(String prefix, String suffix) {
try {
File file = File.createTempFile(prefix, suffix, null);
if (file != null)
return new Pathname(file.getPath());
} catch (IllegalArgumentException e) {
// "Failed to create temporary file due to argument problems."
error(new JavaException(e));
} catch (SecurityException e) {
//"Failed to create problem due to problems with JVM SecurityManager."
error(new JavaException(e));
} catch (IOException e) {
// "Failed to create temporary file."
error(new JavaException(e));
}
return NIL;
}
}
public static final Primitive MAKE_TEMP_DIRECTORY = new make_temp_directory();
@DocString(name="make_temp_directory",
@DocString(name="make-temp-directory",
doc="Create and return the pathname of a previously non-existent directory.")
private static class make_temp_directory extends Primitive {
make_temp_directory() {
......@@ -371,5 +417,4 @@ public final class Extensions
return result;
}
}
}
......@@ -122,6 +122,7 @@ public final class Keyword
PACKAGE = internKeyword("PACKAGE"),
PATHNAME = internKeyword("PATHNAME"),
PROBE = internKeyword("PROBE"),
PREFIX = internKeyword("PREFIX"), // EXT:MAKE-TEMP-FILE
PUBLIC = internKeyword("PUBLIC"),
PRESERVE = internKeyword("PRESERVE"),
REF = internKeyword("REF"),
......@@ -134,6 +135,7 @@ public final class Keyword
STATUS = internKeyword("STATUS"),
STREAM = internKeyword("STREAM"),
SUNOS = internKeyword("SUNOS"),
SUFFIX = internKeyword("SUFFIX"), // EXT:MAKE-TEMP-FILE
SUPERSEDE = internKeyword("SUPERSEDE"),
TEST = internKeyword("TEST"),
TEST_NOT = internKeyword("TEST-NOT"),
......
......@@ -317,6 +317,8 @@
(load (do-compile "concatenate.lisp"))
(load (do-compile "ldb.lisp"))
(load (do-compile "destructuring-bind.lisp"))
(load (do-compile "featurep.lisp"))
;; But not for these.
(mapc #'do-compile '("adjoin.lisp"
"and.lisp"
......@@ -368,7 +370,6 @@
"error.lisp"
"extensible-sequences.lisp"
"fasl-concat.lisp"
"featurep.lisp"
"fdefinition.lisp"
"fill.lisp"
"find-all-symbols.lisp"
......
......@@ -51,3 +51,33 @@
(when (featurep subform) (return t))))
(t
(error "Unknown operator in feature expression: ~S" form)))))
;;;; Cribbed from ASDF 3.1.7; duplicated to establish runtime conditionals before ASDF is constructed
(defun os-macosx-p ()
"Is the underlying operating system MacOS X?"
;; OS-MACOSX is not mutually exclusive with OS-UNIX,
;; in fact the former implies the latter.
(featurep '(:or :darwin (:and :allegro :macosx) (:and :clisp :macos))))
(defun os-unix-p ()
"Is the underlying operating system some Unix variant?"
(or (featurep '(:or :unix :cygwin)) (os-macosx-p)))
(defun os-windows-p ()
"Is the underlying operating system Microsoft Windows?"
(and (not (os-unix-p)) (featurep '(:or :win32 :windows :mswindows :mingw32 :mingw64))))
(defun os-genera-p ()
"Is the underlying operating system Genera (running on a Symbolics Lisp Machine)?"
(featurep :genera))
(defun os-oldmac-p ()
"Is the underlying operating system an (emulated?) MacOS 9 or earlier?"
(featurep :mcl))
(defun os-haiku-p ()
"Is the underlying operating system Haiku?"
(featurep :haiku))
(export '(os-unix-p os-windows-p))
......@@ -170,9 +170,13 @@ The &key arguments have the following meanings:
"java.io.File"
(if value
(namestring value)
#+unix "/dev/null"
#+windows "nul"
#-(or unix windows) (error "Don't know how to set up null stream on this platform."))))
(cond
((ext:os-unix-p)
"/dev/null")
((ext:os-windows-p)
"nul")
(t
(error "Don't know how to set up null stream on this platform."))))))
(defun setup-input-redirection (process-builder value if-does-not-exist)
(let ((redirect (if (eq value T)
......@@ -298,15 +302,13 @@ The &key arguments have the following meanings:
(defun %process-exit-code (jprocess)
(ignore-errors (java:jcall "exitValue" jprocess)))
#+unix
(defconstant +pid-field+
(let ((field (java:jcall "getDeclaredField" (java:jclass "java.lang.UNIXProcess") "pid")))
(java:jcall "setAccessible" field java:+true+)
field))
(defun %process-pid (jprocess)
#+unix (java:jcall "get" +pid-field+ jprocess)
#-unix (error "Can't retrieve PID on this platform."))
(if (ext:os-unix-p)
;; TODO: memoize this
(let ((field (java:jcall "getDeclaredField" (java:jclass "java.lang.UNIXProcess") "pid")))
(java:jcall "setAccessible" field java:+true+)
(java:jcall "get" field jprocess))
(error "Can't retrieve PID on this platform.")))
(defun %process-kill (jprocess)
(java:jcall "destroy" jprocess))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment