Re: 2.2.0 release plan

2017-03-14 Thread Matt Wette

> On Mar 14, 2017, at 5:35 PM, Matt Wette  wrote:
> 
>> 
>> On Mar 14, 2017, at 8:50 AM, Andy Wingo  wrote:
>> 
>> On Tue 14 Mar 2017 16:25, Greg Troxel  writes:
>> 
>>> Andy Wingo  writes:
>>> 
 However!  Even though the code says 2.2.0 and the tag says 2.2.0, the
 release is not until Thursday.  I will not upload the tag yet.
>>> 
>>> I have just barely caught up with 2.0.x in pkgsrc, and haven't gotten to
>>> testing 2.1.x yet.  I wonder how many platforms 2.1.x has been tested
>>> on, and really I mean "has it been tested on other than GNU/Linux".
>> 
>> Things are in the early days, you are right.  GNU/Linux and macOS have
>> been tested.  Cygwin builds and works though it has some test errors; we
>> are working on it.  I don't know about mingw yet.  I think there might
>> be some errors on the other BSDs but I don't know yet.
> 
> Just got my desktop to extra-boot FreeBSD.  I’m taking a shot at that target 
> (amd64).

Status: The (g)make is grinding away, now building ice-9/psyntax-pp.go, going 
slow ...

Notes:

To configure, besides the mentioned items (e.g., libffi), must "pkg install"
* pkgconf
* gmake
* boehm-gc-threaded

Must use “gmake”, “make” breaks on meta/Makefile

The first gmake produced "not found" link errors for
  GC_unregister_my_thread
  GC_get_suspend_signal
  GC_allow_register_threads
  GC_register_my_thread

So I reconfigured using
  BDW_GC_LIBS=-L/usr/local/lib -lgc-threaded ./configure --prefix=/usr/local


Now the HACK:
ran into issue w/ weak-set.c (?), so I
edited config.h and changed
  /* #undef HAVE_GC_MOVE_DISAPPEARING_LINK */
to
  #define HAVE_GC_MOVE_DISAPPEARING_LINK 1

I will report more later, as time permits.
Matt



Re: 2.2.0 release plan

2017-03-14 Thread Matt Wette

> On Mar 14, 2017, at 8:50 AM, Andy Wingo  wrote:
> 
> On Tue 14 Mar 2017 16:25, Greg Troxel  writes:
> 
>> Andy Wingo  writes:
>> 
>>> However!  Even though the code says 2.2.0 and the tag says 2.2.0, the
>>> release is not until Thursday.  I will not upload the tag yet.
>> 
>> I have just barely caught up with 2.0.x in pkgsrc, and haven't gotten to
>> testing 2.1.x yet.  I wonder how many platforms 2.1.x has been tested
>> on, and really I mean "has it been tested on other than GNU/Linux".
> 
> Things are in the early days, you are right.  GNU/Linux and macOS have
> been tested.  Cygwin builds and works though it has some test errors; we
> are working on it.  I don't know about mingw yet.  I think there might
> be some errors on the other BSDs but I don't know yet.

Just got my desktop to extra-boot FreeBSD.  I’m taking a shot at that target 
(amd64).





Re: [PATCH] Add to the 2.1.x branch GUILE_SITE_CCACHE_DIR and GUILE_EXTENSION_DIR Autoconf macros along with needed siteccachdir entry in pkgconfig file

2017-03-14 Thread Freja Nordsiek
I missed adding an entry for meta/guile-2.2.pc.in in the commit log. Fixed now.


Freja Nordsiek

On Tue, Mar 14, 2017 at 5:10 PM, Freja Nordsiek  wrote:
> OK, got it on the commit log. Took some work to figure out how to do a
> multiline one, but got it now.
>
> Fixed the long lines.
>
> Removed the --print-errors option. Didn't catch that.
>
> Thank you for all the help. Yeah, this sort of nitpicking makes it a
> lot easier for people in the future to work on things.
>
>
> Freja Nordsiek
>
>
>
>
> On Tue, Mar 14, 2017 at 4:56 PM, Andy Wingo  wrote:
>> Heya :)
>>
>> On Tue 14 Mar 2017 16:31, Freja Nordsiek  writes:
>>
>>> From 41498549ac22ea50e497887b3a1e002985bb6f8f Mon Sep 17 00:00:00 2001
>>> From: Freja Nordsiek 
>>> Date: Tue, 14 Mar 2017 16:28:45 +0100
>>> Subject: [PATCH] GUILE_SITE_DIR: Find site directories for compiled files.
>>>
>>
>> Here in the commit log you need entries for the files you change and the
>> functions you change in them.  See
>> 036cc149e6e52722f16ef25f4203e82abae9bc79 for an example.  I know it's a
>> bit of a drag but it's how it is.  (In Magit, if you use that, you can
>> press C in a diff to make a template in the log.)
>>
>>> -# GUILE_SITE_DIR -- find path to Guile "site" directory
>>> +# GUILE_SITE_DIR -- find path to Guile site directories
>>>  #
>>>  # Usage: GUILE_SITE_DIR
>>>  #
>>> -# This looks for Guile's "site" directory, usually something like
>>> -# PREFIX/share/guile/site, and sets var @var{GUILE_SITE} to the path.
>>> -# Note that the var name is different from the macro name.
>>> +# This looks for Guile's "site" directories.  The variable 
>>> @var{GUILE_SITE} will
>>> +# be set to Guile's "site" directory for Scheme source files (usually 
>>> something like
>>> +# PREFIX/share/guile/site).  @var{GUILE_SITE_CCACHE} will be set to the 
>>> directory
>>> +# for compiled Scheme files also known as @code{.go} files
>>> +# (usually something like 
>>> PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/site-ccache).
>>> +# @var{GUILE_EXTENSION} will be set to the directory for compiled C 
>>> extensions
>>> +# (usually something like # 
>>> PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/extensions).
>>> +# The latter two are set to blank if the particular version of Guile does 
>>> not support
>>> +# them.  Note that this macro will run the macros @code{GUILE_PKG} and 
>>> @code{GUILE_PROGS}
>>> +# if they have not already been run.
>>
>> Please limit lines to < 80 characters.  If you use emacs, you can fix
>> with M-q, provided your fill-column is set appropriately.
>>
>>>AC_SUBST(GUILE_SITE)
>>> +  AC_MSG_CHECKING([for Guile site-ccache directory using pkgconfig])
>>> +  GUILE_SITE_CCACHE=`$PKG_CONFIG --print-errors --variable=siteccachedir 
>>> guile-$GUILE_EFFECTIVE_VERSION`
>>
>> Is --print-errors the right thing here?  I guess this causes some text
>> to spew on the console for 2.0.  Probably not the right thing if we're
>> going to fall back.
>>
>> Otherwise good.  Apologies for the nit-picking; I'm doing it now just so
>> that things are fluid in the future :)
>>
>> Andy
From 09e2d1075a7c48e408a5ddaf8b7bf4578b455aa9 Mon Sep 17 00:00:00 2001
From: Freja Nordsiek 
Date: Tue, 14 Mar 2017 17:05:09 +0100
Subject: [PATCH] GUILE_SITE_DIR: updated to find compiled site directories

* meta/guile.m4: GUILE_SITE_DIR updated to find compiled site directories
* meta/guile-2.2.pc.in: added entry for site-ccache directory
---
 meta/guile-2.2.pc.in |  1 +
 meta/guile.m4| 44 ++--
 2 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/meta/guile-2.2.pc.in b/meta/guile-2.2.pc.in
index c8f485b..c6d12b5 100644
--- a/meta/guile-2.2.pc.in
+++ b/meta/guile-2.2.pc.in
@@ -10,6 +10,7 @@ pkgincludedir=@includedir@/guile
 
 sitedir=@sitedir@
 extensiondir=@libdir@/guile/@GUILE_EFFECTIVE_VERSION@/extensions
+siteccachedir=@libdir@/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache
 libguileinterface=@LIBGUILE_INTERFACE@
 
 # Actual name of the 'guile' and 'guild' programs.  This is
diff --git a/meta/guile.m4 b/meta/guile.m4
index b0ef9be..23c2c63 100644
--- a/meta/guile.m4
+++ b/meta/guile.m4
@@ -25,7 +25,7 @@
 ## GUILE_PKG -- find Guile development files
 ## GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
 ## GUILE_FLAGS -- set flags for compiling and linking with Guile
-## GUILE_SITE_DIR -- find path to Guile "site" directory
+## GUILE_SITE_DIR -- find path to Guile "site" directories
 ## GUILE_CHECK -- evaluate Guile Scheme code and capture the return value
 ## GUILE_MODULE_CHECK -- check feature of a Guile Scheme module
 ## GUILE_MODULE_AVAILABLE -- check availability of a Guile Scheme module
@@ -154,18 +154,28 @@ AC_DEFUN([GUILE_FLAGS],
   AC_SUBST([GUILE_LTLIBS])
  ])
 
-# GUILE_SITE_DIR -- find path to Guile "site" directory
+# GUILE_SITE_DIR -- find path to Guile site directories
 #
 # Usage: GUILE_SITE_DIR
 

Re: guile 2.1.7 skips while condition

2017-03-14 Thread Arne Babenhauserheide

Andy Wingo writes:

> On Mon 13 Mar 2017 18:09, Arne Babenhauserheide  writes:
>
>> ERROR: In procedure string:
>> ERROR: In procedure string: Wrong type (expecting character): #
>
> Fixed, I think.  Thanks for the report.

That’s awesome! Thank you!

Best wishes,
Arne

PS: I did not test the fix, yet.



Re: [PATCH] Add to the 2.1.x branch GUILE_SITE_CCACHE_DIR and GUILE_EXTENSION_DIR Autoconf macros along with needed siteccachdir entry in pkgconfig file

2017-03-14 Thread Freja Nordsiek
OK, got it on the commit log. Took some work to figure out how to do a
multiline one, but got it now.

Fixed the long lines.

Removed the --print-errors option. Didn't catch that.

Thank you for all the help. Yeah, this sort of nitpicking makes it a
lot easier for people in the future to work on things.


Freja Nordsiek




On Tue, Mar 14, 2017 at 4:56 PM, Andy Wingo  wrote:
> Heya :)
>
> On Tue 14 Mar 2017 16:31, Freja Nordsiek  writes:
>
>> From 41498549ac22ea50e497887b3a1e002985bb6f8f Mon Sep 17 00:00:00 2001
>> From: Freja Nordsiek 
>> Date: Tue, 14 Mar 2017 16:28:45 +0100
>> Subject: [PATCH] GUILE_SITE_DIR: Find site directories for compiled files.
>>
>
> Here in the commit log you need entries for the files you change and the
> functions you change in them.  See
> 036cc149e6e52722f16ef25f4203e82abae9bc79 for an example.  I know it's a
> bit of a drag but it's how it is.  (In Magit, if you use that, you can
> press C in a diff to make a template in the log.)
>
>> -# GUILE_SITE_DIR -- find path to Guile "site" directory
>> +# GUILE_SITE_DIR -- find path to Guile site directories
>>  #
>>  # Usage: GUILE_SITE_DIR
>>  #
>> -# This looks for Guile's "site" directory, usually something like
>> -# PREFIX/share/guile/site, and sets var @var{GUILE_SITE} to the path.
>> -# Note that the var name is different from the macro name.
>> +# This looks for Guile's "site" directories.  The variable @var{GUILE_SITE} 
>> will
>> +# be set to Guile's "site" directory for Scheme source files (usually 
>> something like
>> +# PREFIX/share/guile/site).  @var{GUILE_SITE_CCACHE} will be set to the 
>> directory
>> +# for compiled Scheme files also known as @code{.go} files
>> +# (usually something like 
>> PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/site-ccache).
>> +# @var{GUILE_EXTENSION} will be set to the directory for compiled C 
>> extensions
>> +# (usually something like # 
>> PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/extensions).
>> +# The latter two are set to blank if the particular version of Guile does 
>> not support
>> +# them.  Note that this macro will run the macros @code{GUILE_PKG} and 
>> @code{GUILE_PROGS}
>> +# if they have not already been run.
>
> Please limit lines to < 80 characters.  If you use emacs, you can fix
> with M-q, provided your fill-column is set appropriately.
>
>>AC_SUBST(GUILE_SITE)
>> +  AC_MSG_CHECKING([for Guile site-ccache directory using pkgconfig])
>> +  GUILE_SITE_CCACHE=`$PKG_CONFIG --print-errors --variable=siteccachedir 
>> guile-$GUILE_EFFECTIVE_VERSION`
>
> Is --print-errors the right thing here?  I guess this causes some text
> to spew on the console for 2.0.  Probably not the right thing if we're
> going to fall back.
>
> Otherwise good.  Apologies for the nit-picking; I'm doing it now just so
> that things are fluid in the future :)
>
> Andy
From 438a8902f38b838eb407499aa0ed37669dc0b851 Mon Sep 17 00:00:00 2001
From: Freja Nordsiek 
Date: Tue, 14 Mar 2017 17:05:09 +0100
Subject: [PATCH] GUILE_SITE_DIR: updated to find compiled site directories

* meta/guile.m4: GUILE_SITE_DIR updated to find compiled site directories
---
 meta/guile-2.2.pc.in |  1 +
 meta/guile.m4| 44 ++--
 2 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/meta/guile-2.2.pc.in b/meta/guile-2.2.pc.in
index c8f485b..c6d12b5 100644
--- a/meta/guile-2.2.pc.in
+++ b/meta/guile-2.2.pc.in
@@ -10,6 +10,7 @@ pkgincludedir=@includedir@/guile
 
 sitedir=@sitedir@
 extensiondir=@libdir@/guile/@GUILE_EFFECTIVE_VERSION@/extensions
+siteccachedir=@libdir@/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache
 libguileinterface=@LIBGUILE_INTERFACE@
 
 # Actual name of the 'guile' and 'guild' programs.  This is
diff --git a/meta/guile.m4 b/meta/guile.m4
index b0ef9be..23c2c63 100644
--- a/meta/guile.m4
+++ b/meta/guile.m4
@@ -25,7 +25,7 @@
 ## GUILE_PKG -- find Guile development files
 ## GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
 ## GUILE_FLAGS -- set flags for compiling and linking with Guile
-## GUILE_SITE_DIR -- find path to Guile "site" directory
+## GUILE_SITE_DIR -- find path to Guile "site" directories
 ## GUILE_CHECK -- evaluate Guile Scheme code and capture the return value
 ## GUILE_MODULE_CHECK -- check feature of a Guile Scheme module
 ## GUILE_MODULE_AVAILABLE -- check availability of a Guile Scheme module
@@ -154,18 +154,28 @@ AC_DEFUN([GUILE_FLAGS],
   AC_SUBST([GUILE_LTLIBS])
  ])
 
-# GUILE_SITE_DIR -- find path to Guile "site" directory
+# GUILE_SITE_DIR -- find path to Guile site directories
 #
 # Usage: GUILE_SITE_DIR
 #
-# This looks for Guile's "site" directory, usually something like
-# PREFIX/share/guile/site, and sets var @var{GUILE_SITE} to the path.
-# Note that the var name is different from the macro name.
+# This looks for Guile's "site" directories.  The variable @var{GUILE_SITE} will
+# be set to Guile's "site" directory 

Re: [PATCH] Add to the 2.1.x branch GUILE_SITE_CCACHE_DIR and GUILE_EXTENSION_DIR Autoconf macros along with needed siteccachdir entry in pkgconfig file

2017-03-14 Thread Andy Wingo
Heya :)

On Tue 14 Mar 2017 16:31, Freja Nordsiek  writes:

> From 41498549ac22ea50e497887b3a1e002985bb6f8f Mon Sep 17 00:00:00 2001
> From: Freja Nordsiek 
> Date: Tue, 14 Mar 2017 16:28:45 +0100
> Subject: [PATCH] GUILE_SITE_DIR: Find site directories for compiled files.
>

Here in the commit log you need entries for the files you change and the
functions you change in them.  See
036cc149e6e52722f16ef25f4203e82abae9bc79 for an example.  I know it's a
bit of a drag but it's how it is.  (In Magit, if you use that, you can
press C in a diff to make a template in the log.)

> -# GUILE_SITE_DIR -- find path to Guile "site" directory
> +# GUILE_SITE_DIR -- find path to Guile site directories
>  #
>  # Usage: GUILE_SITE_DIR
>  #
> -# This looks for Guile's "site" directory, usually something like
> -# PREFIX/share/guile/site, and sets var @var{GUILE_SITE} to the path.
> -# Note that the var name is different from the macro name.
> +# This looks for Guile's "site" directories.  The variable @var{GUILE_SITE} 
> will
> +# be set to Guile's "site" directory for Scheme source files (usually 
> something like
> +# PREFIX/share/guile/site).  @var{GUILE_SITE_CCACHE} will be set to the 
> directory
> +# for compiled Scheme files also known as @code{.go} files
> +# (usually something like 
> PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/site-ccache).
> +# @var{GUILE_EXTENSION} will be set to the directory for compiled C 
> extensions
> +# (usually something like # 
> PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/extensions).
> +# The latter two are set to blank if the particular version of Guile does 
> not support
> +# them.  Note that this macro will run the macros @code{GUILE_PKG} and 
> @code{GUILE_PROGS}
> +# if they have not already been run.

Please limit lines to < 80 characters.  If you use emacs, you can fix
with M-q, provided your fill-column is set appropriately.

>AC_SUBST(GUILE_SITE)
> +  AC_MSG_CHECKING([for Guile site-ccache directory using pkgconfig])
> +  GUILE_SITE_CCACHE=`$PKG_CONFIG --print-errors --variable=siteccachedir 
> guile-$GUILE_EFFECTIVE_VERSION`

Is --print-errors the right thing here?  I guess this causes some text
to spew on the console for 2.0.  Probably not the right thing if we're
going to fall back.

Otherwise good.  Apologies for the nit-picking; I'm doing it now just so
that things are fluid in the future :)

Andy



Re: 2.2.0 release plan

2017-03-14 Thread Andy Wingo
On Tue 14 Mar 2017 16:25, Greg Troxel  writes:

> Andy Wingo  writes:
>
>> However!  Even though the code says 2.2.0 and the tag says 2.2.0, the
>> release is not until Thursday.  I will not upload the tag yet.
>
> I have just barely caught up with 2.0.x in pkgsrc, and haven't gotten to
> testing 2.1.x yet.  I wonder how many platforms 2.1.x has been tested
> on, and really I mean "has it been tested on other than GNU/Linux".

Things are in the early days, you are right.  GNU/Linux and macOS have
been tested.  Cygwin builds and works though it has some test errors; we
are working on it.  I don't know about mingw yet.  I think there might
be some errors on the other BSDs but I don't know yet.

> So if you think it's ready, I would suggest preparing a 2.2.0rc1, or
> simply a new 2.1.x with the notion that aside from version numbers it's
> an RC, and call for all people engaged in packaging to try to package it
> as 2.2, and to give them a few weeks.

I have done exactly that in the past weeks with 2.1.7 and 2.1.8 :) I
think a 2.2.1 will follow very soon (within a month or so from 2.2.0, I
would imagine), so any portability fixes will naturally be included
there.  That's about the same timeframe you are asking for, so all is
well in that regard.

Happy hacking,

Andy



Re: Guile-2.2 - goops slot redefinition at subclass level

2017-03-14 Thread Christopher Allan Webber
Andy Wingo writes:

> On Mon 27 Feb 2017 01:09, David Pirotte  writes:
>
>> 2-   slot redefinition at subclass level
>>
>> See bug#20423 for a full description.
>
> I think the correct solution here is to implement the slot combination
> protocol; see http://mop.lisp.se/dictionary.html#compute-slots.  This
> can be done in 2.2.  It's all in Scheme now so hopefully it will be
> easier to hack on.
>
> I do not have any time to devote to this area, however, and as it's
> possible to implement this in the stable series and it's not a
> regression, I don't think it's a release blocker.
>
> Andy

Okay, it's good to know that you're open to this being implemented as a
feature (and that there's a clear explaination of how to do it above).
Maybe in the not too distant future I can take a crack at it, as it's
something I'd love to have myself.

 - Chris



Re: [PATCH] Add to the 2.1.x branch GUILE_SITE_CCACHE_DIR and GUILE_EXTENSION_DIR Autoconf macros along with needed siteccachdir entry in pkgconfig file

2017-03-14 Thread Freja Nordsiek
I improved the commit log and the comments to make them better
formatted and more terse. Does the commit log look better?

I also made it so that pkgconfig is tried first for finding
site-ccache and only if that fails will the interpreter be used (the
messages say specifically which method they are using now). It is
definitely better to have both methods in there.


Freja Nordsiek

On Tue, Mar 14, 2017 at 3:53 PM, Andy Wingo  wrote:
> Hi :)
>
> Great patch, some comments.
>
> On Tue 14 Mar 2017 15:08, Freja Nordsiek  writes:
>
>> From 90daf796c829f8e422a281d501f711138f21a334 Mon Sep 17 00:00:00 2001
>> From: Freja Nordsiek 
>> Date: Tue, 14 Mar 2017 15:04:38 +0100
>> Subject: [PATCH] Made GUILE_SITE_DIR Autoconf macro look for directories for
>>  compiled .go and C extensions in addition to the site directory for scheme
>>  files.
>
> Please adapt the commit log.  (Just look at any other commit to see what
> the standard is.)  You might also be interested in "info standards".
>
>> -## GUILE_SITE_DIR -- find path to Guile "site" directory
>> +## GUILE_SITE_DIR -- find path to Guile "site" directories for scheme, 
>> compiles GO files, and compiled C extensions
>
> Line too long.  Probably just s/directories.*/directories./.
>
>> -# GUILE_SITE_DIR -- find path to Guile "site" directory
>> +# GUILE_SITE_DIR -- find path to Guile site directories
>
>> -# This looks for Guile's "site" directory, usually something like
>> -# PREFIX/share/guile/site, and sets var @var{GUILE_SITE} to the path.
>> -# Note that the var name is different from the macro name.
>> +# This looks for Guile's "site" directory for Scheme files (usually 
>> something like
>> +# PREFIX/share/guile/site), "site-ccache" directory for compiled @code{.go} 
>> files
>> +# (usually something like 
>> PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/site-ccache),
>> +# and "extensions" directory for compiled C extensions (usually something 
>> like
>> +# PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/extensions). The variables
>> +# @var{GUILE_SITE}, @var{GUILE_SITE_CCACHE}, and @var{GUILE_EXTENSION} are 
>> set to these
>> +# paths respectively. The latter two are set to blank if they are not 
>> found. Note that
>> +# this macro will run the macros @code{GUILE_PKG} and @code{GUILE_PROGS} if 
>> they have
>> +# not already been run.
>
> Can we make the text more terse?  E.g. 'This looks for Guile's "site"
> directories.  The variable @var{GUILE_SITE} will be set to Guile's
> "site" directory for Scheme source files (usually [...]).
> @var{GUILE_SITE_CCACHE} will be set to the directory for compiled Scheme
> files (usually [...])' and so on.  Two spaces before periods please in
> comments in Guile code.
>
>> -# The variable is marked for substitution, as by @code{AC_SUBST}.
>> +# The variables are marked for substitution, as by @code{AC_SUBST}.
>>  #
>>  AC_DEFUN([GUILE_SITE_DIR],
>>   [AC_REQUIRE([GUILE_PKG])
>> +  AC_REQUIRE([GUILE_PROGS])
>
> I guess this is OK given that anyone installing Scheme files should
> install .go files, and you need GUILE_PROGS to build .go files.
>
>> +  AC_MSG_CHECKING([for Guile site-ccache directory])
>> +  GUILE_SITE_CCACHE=`$GUILE -c "(display (if (defined? '%site-ccache-dir) 
>> (%site-ccache-dir) \"\"))"`
>
> You prefer this rather than first trying pkg-config?  I would try
> pkg-config first; but it doesn't really matter I guess :)
>
> Otherwise looking fine.  Thanks!
>
> Andy
From 41498549ac22ea50e497887b3a1e002985bb6f8f Mon Sep 17 00:00:00 2001
From: Freja Nordsiek 
Date: Tue, 14 Mar 2017 16:28:45 +0100
Subject: [PATCH] GUILE_SITE_DIR: Find site directories for compiled files.

---
 meta/guile-2.2.pc.in |  1 +
 meta/guile.m4| 42 --
 2 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/meta/guile-2.2.pc.in b/meta/guile-2.2.pc.in
index c8f485b..c6d12b5 100644
--- a/meta/guile-2.2.pc.in
+++ b/meta/guile-2.2.pc.in
@@ -10,6 +10,7 @@ pkgincludedir=@includedir@/guile
 
 sitedir=@sitedir@
 extensiondir=@libdir@/guile/@GUILE_EFFECTIVE_VERSION@/extensions
+siteccachedir=@libdir@/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache
 libguileinterface=@LIBGUILE_INTERFACE@
 
 # Actual name of the 'guile' and 'guild' programs.  This is
diff --git a/meta/guile.m4 b/meta/guile.m4
index b0ef9be..8617b52 100644
--- a/meta/guile.m4
+++ b/meta/guile.m4
@@ -25,7 +25,7 @@
 ## GUILE_PKG -- find Guile development files
 ## GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
 ## GUILE_FLAGS -- set flags for compiling and linking with Guile
-## GUILE_SITE_DIR -- find path to Guile "site" directory
+## GUILE_SITE_DIR -- find path to Guile "site" directories
 ## GUILE_CHECK -- evaluate Guile Scheme code and capture the return value
 ## GUILE_MODULE_CHECK -- check feature of a Guile Scheme module
 ## GUILE_MODULE_AVAILABLE -- check availability of a Guile Scheme module
@@ -154,18 +154,26 @@ 

Re: 2.2.0 release plan

2017-03-14 Thread Greg Troxel

Andy Wingo  writes:

> However!  Even though the code says 2.2.0 and the tag says 2.2.0, the
> release is not until Thursday.  I will not upload the tag yet.

I have just barely caught up with 2.0.x in pkgsrc, and haven't gotten to
testing 2.1.x yet.  I wonder how many platforms 2.1.x has been tested
on, and really I mean "has it been tested on other than GNU/Linux".

So if you think it's ready, I would suggest preparing a 2.2.0rc1, or
simply a new 2.1.x with the notion that aside from version numbers it's
an RC, and call for all people engaged in packaging to try to package it
as 2.2, and to give them a few weeks.

The basic issue is that getting widespread testing relies on a bunch of
people for whom hacking on guile is one little thing among many, and not
their main Free Software focus.  This is not about guile; I see this in
a vast number of projects.


signature.asc
Description: PGP signature


Re: [PATCH] Add to the 2.1.x branch GUILE_SITE_CCACHE_DIR and GUILE_EXTENSION_DIR Autoconf macros along with needed siteccachdir entry in pkgconfig file

2017-03-14 Thread Andy Wingo
Hi :)

Great patch, some comments.

On Tue 14 Mar 2017 15:08, Freja Nordsiek  writes:

> From 90daf796c829f8e422a281d501f711138f21a334 Mon Sep 17 00:00:00 2001
> From: Freja Nordsiek 
> Date: Tue, 14 Mar 2017 15:04:38 +0100
> Subject: [PATCH] Made GUILE_SITE_DIR Autoconf macro look for directories for
>  compiled .go and C extensions in addition to the site directory for scheme
>  files.

Please adapt the commit log.  (Just look at any other commit to see what
the standard is.)  You might also be interested in "info standards".

> -## GUILE_SITE_DIR -- find path to Guile "site" directory
> +## GUILE_SITE_DIR -- find path to Guile "site" directories for scheme, 
> compiles GO files, and compiled C extensions

Line too long.  Probably just s/directories.*/directories./.

> -# GUILE_SITE_DIR -- find path to Guile "site" directory
> +# GUILE_SITE_DIR -- find path to Guile site directories

> -# This looks for Guile's "site" directory, usually something like
> -# PREFIX/share/guile/site, and sets var @var{GUILE_SITE} to the path.
> -# Note that the var name is different from the macro name.
> +# This looks for Guile's "site" directory for Scheme files (usually 
> something like
> +# PREFIX/share/guile/site), "site-ccache" directory for compiled @code{.go} 
> files
> +# (usually something like 
> PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/site-ccache),
> +# and "extensions" directory for compiled C extensions (usually something 
> like
> +# PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/extensions). The variables
> +# @var{GUILE_SITE}, @var{GUILE_SITE_CCACHE}, and @var{GUILE_EXTENSION} are 
> set to these
> +# paths respectively. The latter two are set to blank if they are not found. 
> Note that
> +# this macro will run the macros @code{GUILE_PKG} and @code{GUILE_PROGS} if 
> they have
> +# not already been run.

Can we make the text more terse?  E.g. 'This looks for Guile's "site"
directories.  The variable @var{GUILE_SITE} will be set to Guile's
"site" directory for Scheme source files (usually [...]).
@var{GUILE_SITE_CCACHE} will be set to the directory for compiled Scheme
files (usually [...])' and so on.  Two spaces before periods please in
comments in Guile code.

> -# The variable is marked for substitution, as by @code{AC_SUBST}.
> +# The variables are marked for substitution, as by @code{AC_SUBST}.
>  #
>  AC_DEFUN([GUILE_SITE_DIR],
>   [AC_REQUIRE([GUILE_PKG])
> +  AC_REQUIRE([GUILE_PROGS])

I guess this is OK given that anyone installing Scheme files should
install .go files, and you need GUILE_PROGS to build .go files.

> +  AC_MSG_CHECKING([for Guile site-ccache directory])
> +  GUILE_SITE_CCACHE=`$GUILE -c "(display (if (defined? '%site-ccache-dir) 
> (%site-ccache-dir) \"\"))"`

You prefer this rather than first trying pkg-config?  I would try
pkg-config first; but it doesn't really matter I guess :)

Otherwise looking fine.  Thanks!

Andy



2.2.0 release plan

2017-03-14 Thread Andy Wingo
Hi,

I think we are ready to go for 2.2.0.  I am going to make a provisional
2.2.0 tag today and update the version.  I will dist a tarball and
upload to somewhere provisional.

However!  Even though the code says 2.2.0 and the tag says 2.2.0, the
release is not until Thursday.  I will not upload the tag yet.

This will give us a chance to update the web site, prepare nice release
notes, make a binary build using the new "guix pack", and test
everything out.  It could be we find some showstopper like a libtool age
issue or something.  If that's the case, we can fix it and re-spin a
release.  Since I won't have uploaded the tag, all should be good.

Thoughts welcome :)

Andy



Re: [PATCH] Add to the 2.1.x branch GUILE_SITE_CCACHE_DIR and GUILE_EXTENSION_DIR Autoconf macros along with needed siteccachdir entry in pkgconfig file

2017-03-14 Thread Freja Nordsiek
I coalesced the new macros into the existing GUILE_SITE_DIR macro,
though I had to change a few things as will be explained. It works on
Guile 2.1.x, 2.0.x, and 1.8.x. I changed it so that if the directories
for go files and compiled C extensions are not found, a warning is
raised and those variables are set to blank. Otherwise, it would just
result in failure on Guile 1.8.x. While testing this for these
different Guile versions, I uncovered a small bug in the GUILE_PROGS
macro that I will make a patch for in another email (back on the email
chain for the relevant bug).

Freja Nordsiek

On Mon, Mar 13, 2017 at 1:46 PM, Andy Wingo  wrote:
> On Sun 12 Mar 2017 10:38, Freja Nordsiek  writes:
>
>> Guile provides the GUILE_SITE_DIR Autoconf macro for finding where a
>> user should install scheme files, but there are no equivalent macros
>> for the directories to put compiled go files and C extensions into.
>> The patch adds the equivalent macros to do this for the 2.1.x branch
>> (it might work as is for the 2.0.x branch but I haven't tested it),
>> which are more or less copy-pastes of the GUILE_SITE_DIR macro.
>
> The patch looks good.  WDYT though about instead extending
> GUILE_SITE_DIR to search for the ccache dir and the extension dir and
> AC_SUBST them?  It would be nice to avoid adding more ceremonial lines
> to configure.ac.
>
> (I really wish I hadn't named it "ccache"; oh well, too late in 2.1.x to
> change.)
>
>> GUILE_SITE_CCACHE_DIR does require an additional entry to be put into
>> Guile's pkgconfig file, which I named siteccachedir to fit in with the
>> rest. One major issue is that the GUILE_SITE_CCACHE_DIR macro will
>> fail for any version of Guile that does not have the new entry in the
>> pkgconfig file, which would be all 2.0.x and 2.1.x releases thus far.
>> One way around it would be to instead of using pkgconfig for it would
>> to instead use the following macro that uses the Guile interpreter
>> itself to find the directory (this is more or less the version I use
>> in one of my own projects).
>>
>> AC_DEFUN([GUILE_SITE_CCACHE_DIR],
>>  [AC_REQUIRE([GUILE_PROGS])
>>   AC_MSG_CHECKING([for Guile site-ccache directory])
>>   GUILE_SITE_CCACHE=`$GUILE -c "(display (%site-ccache-dir))"`
>>   if test $? != "0" -o "$GUILE_SITE_CCACHE" = ""; then
>> AC_MSG_FAILURE([siteccachedir not found])
>>   fi
>>   AC_MSG_RESULT([$GUILE_SITE_CCACHE])
>>   AC_SUBST([GUILE_SITE_CCACHE])
>>  ])
>
> A fallback sounds good.  In that case it would work fine with 2.0.  We
> can add more paths to the pkg-config file as well, in parallel; it's
> better for other build systems.
>
> Andy
From 90daf796c829f8e422a281d501f711138f21a334 Mon Sep 17 00:00:00 2001
From: Freja Nordsiek 
Date: Tue, 14 Mar 2017 15:04:38 +0100
Subject: [PATCH] Made GUILE_SITE_DIR Autoconf macro look for directories for
 compiled .go and C extensions in addition to the site directory for scheme
 files.

---
 meta/guile-2.2.pc.in |  1 +
 meta/guile.m4| 35 +--
 2 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/meta/guile-2.2.pc.in b/meta/guile-2.2.pc.in
index c8f485b..c6d12b5 100644
--- a/meta/guile-2.2.pc.in
+++ b/meta/guile-2.2.pc.in
@@ -10,6 +10,7 @@ pkgincludedir=@includedir@/guile
 
 sitedir=@sitedir@
 extensiondir=@libdir@/guile/@GUILE_EFFECTIVE_VERSION@/extensions
+siteccachedir=@libdir@/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache
 libguileinterface=@LIBGUILE_INTERFACE@
 
 # Actual name of the 'guile' and 'guild' programs.  This is
diff --git a/meta/guile.m4 b/meta/guile.m4
index 2e4f3dc..4a2e285 100644
--- a/meta/guile.m4
+++ b/meta/guile.m4
@@ -25,7 +25,7 @@
 ## GUILE_PKG -- find Guile development files
 ## GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
 ## GUILE_FLAGS -- set flags for compiling and linking with Guile
-## GUILE_SITE_DIR -- find path to Guile "site" directory
+## GUILE_SITE_DIR -- find path to Guile "site" directories for scheme, compiles GO files, and compiled C extensions
 ## GUILE_CHECK -- evaluate Guile Scheme code and capture the return value
 ## GUILE_MODULE_CHECK -- check feature of a Guile Scheme module
 ## GUILE_MODULE_AVAILABLE -- check availability of a Guile Scheme module
@@ -154,18 +154,25 @@ AC_DEFUN([GUILE_FLAGS],
   AC_SUBST([GUILE_LTLIBS])
  ])
 
-# GUILE_SITE_DIR -- find path to Guile "site" directory
+# GUILE_SITE_DIR -- find path to Guile site directories
 #
 # Usage: GUILE_SITE_DIR
 #
-# This looks for Guile's "site" directory, usually something like
-# PREFIX/share/guile/site, and sets var @var{GUILE_SITE} to the path.
-# Note that the var name is different from the macro name.
+# This looks for Guile's "site" directory for Scheme files (usually something like
+# PREFIX/share/guile/site), "site-ccache" directory for compiled @code{.go} files
+# (usually something like 

Re: Guile-2.2 - goops slot redefinition at subclass level

2017-03-14 Thread Andy Wingo
On Mon 27 Feb 2017 01:09, David Pirotte  writes:

> 2-slot redefinition at subclass level
>
> See bug#20423 for a full description.

I think the correct solution here is to implement the slot combination
protocol; see http://mop.lisp.se/dictionary.html#compute-slots.  This
can be done in 2.2.  It's all in Scheme now so hopefully it will be
easier to hack on.

I do not have any time to devote to this area, however, and as it's
possible to implement this in the stable series and it's not a
regression, I don't think it's a release blocker.

Andy



Re: Guile-2.2 - goops setters should be inherited, no matter what :)

2017-03-14 Thread Andy Wingo
Hi,

On Sun 26 Feb 2017 23:57, David Pirotte  writes:

> 1-setters, as in (define-method ((setter ...) (self <...>) ...) ...)
>   should (also :)) be inherited,

As you mention this is https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19770.

I think we have an understanding about why things are the way they are
in GOOPS, and you are arguing that they should be different -- different
from 1.8 and 2.0.  That's OK and making a different system is possible
if we have good reasons.  It's also possible to extend the current
system to implement new behaviors.

In this case though I don't know how to make a consistent system with
the semantics you are looking for and without losing some of the speed
of the current system.  I guess you would want for the class defining
the slot to define a method that just does (slot-set! obj 'slot x), and
not have concrete subclasses define their own accessor methods, thereby
avoiding accessors entirely.  In that case I would think you could
define slots with a different kind of class, or override the slot
definition protocol or something, or use a different define-class
wrapper or something.

In short I think I just don't agree with this change as part of standard
GOOPS, so I propose the second solution: to make sure you can implement
the behavior you want as a user.  What about using a wrapper
define-class macro that removes "#:accessor foo" from its slot
definitions and translates those to issue definitions like this:

  (define-method (foo (x )) (slot-ref x 'foo))
  (define-method ((setter foo) (x ) val) (slot-set! x 'foo val))

Andy