unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
* [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-12  9:38 Freja Nordsiek
  2017-03-13 12:46 ` Andy Wingo
  0 siblings, 1 reply; 10+ messages in thread
From: Freja Nordsiek @ 2017-03-12  9:38 UTC (permalink / raw)
  To: guile-devel

[-- Attachment #1: Type: text/plain, Size: 1768 bytes --]

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.

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])
     ])

I honestly think this is the better version since it will work even
without the entry in the pkgconfig file but using pkgconfig fits in
better with the existing macros and may be preferred by others. Also,
this version requires GUILE_PROGS to have succeeded. Even if this
version is accepted, I still think the added entry to the pkgconfig
file is a good idea.


Freja Nordsiek

[-- Attachment #2: 0001-Added-GUILE_SITE_CCACHE_DIR-and-GUILE_EXTENSION_DIR-.patch --]
[-- Type: text/x-patch, Size: 3666 bytes --]

From 6ba6a0f1a32b248710d64ce307fa49a9b6a29d8f Mon Sep 17 00:00:00 2001
From: Freja Nordsiek <fnordsie@gmail.com>
Date: Sun, 12 Mar 2017 10:22:53 +0100
Subject: [PATCH] Added GUILE_SITE_CCACHE_DIR and GUILE_EXTENSION_DIR Autoconf
 macros for finding where user compiled .go and C extensions should go.

---
 meta/guile-2.2.pc.in |  1 +
 meta/guile.m4        | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+)

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..f1c7261 100644
--- a/meta/guile.m4
+++ b/meta/guile.m4
@@ -26,6 +26,8 @@
 ## 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_CCACHE_DIR -- find path to Guile "site-ccache" directory where GO files go
+## GUILE_EXTENSION_DIR -- find path to Guile "extensions" directory
 ## 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
@@ -175,6 +177,52 @@ AC_DEFUN([GUILE_SITE_DIR],
   AC_SUBST(GUILE_SITE)
  ])
 
+# GUILE_SITE_CCACHE_DIR -- find path to Guile "site-ccache" directory where GO files go
+#
+# Usage: GUILE_SITE_CCACHE_DIR
+#
+# This looks for Guile's "site-ccache" directory, usually something like
+# PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/site-ccache, and sets var
+# @var{GUILE_SITE_CCACHE} to the path. Note that the var name is different
+# from the macro name. This is the directory where users should install
+# compiled @code{.go} files for use with this version of Guile.
+#
+# The variable is marked for substitution, as by @code{AC_SUBST}.
+#
+AC_DEFUN([GUILE_SITE_CCACHE_DIR],
+ [AC_REQUIRE([GUILE_PKG])
+  AC_MSG_CHECKING(for Guile site-ccache directory)
+  GUILE_SITE_CCACHE=`$PKG_CONFIG --print-errors --variable=siteccachedir guile-$GUILE_EFFECTIVE_VERSION`
+  AC_MSG_RESULT($GUILE_SITE_CCACHE)
+  if test "$GUILE_SITE_CCACHE" = ""; then
+     AC_MSG_FAILURE(siteccachedir not found)
+  fi
+  AC_SUBST(GUILE_SITE_CCACHE)
+ ])
+
+# GUILE_EXTENSION_DIR -- find path to Guile "extensions" directory
+#
+# Usage: GUILE_EXTENSION_DIR
+#
+# This looks for Guile's "extensions" directory, usually something like
+# PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/extensions, and sets var
+# @var{GUILE_EXTENSION} to the path. Note that the var name is different
+# from the macro name. This is the directory where users should install
+# compiled C extensions for use with this version of Guile.
+#
+# The variable is marked for substitution, as by @code{AC_SUBST}.
+#
+AC_DEFUN([GUILE_EXTENSION_DIR],
+ [AC_REQUIRE([GUILE_PKG])
+  AC_MSG_CHECKING(for Guile extensions directory)
+  GUILE_EXTENSION=`$PKG_CONFIG --print-errors --variable=extensiondir guile-$GUILE_EFFECTIVE_VERSION`
+  AC_MSG_RESULT($GUILE_EXTENSION)
+  if test "$GUILE_EXTENSION" = ""; then
+     AC_MSG_FAILURE(extensiondir not found)
+  fi
+  AC_SUBST(GUILE_EXTENSION)
+ ])
+
 # GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
 #
 # Usage: GUILE_PROGS([VERSION])
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* 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-12  9:38 [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 Freja Nordsiek
@ 2017-03-13 12:46 ` Andy Wingo
  2017-03-14 14:08   ` Freja Nordsiek
  0 siblings, 1 reply; 10+ messages in thread
From: Andy Wingo @ 2017-03-13 12:46 UTC (permalink / raw)
  To: Freja Nordsiek; +Cc: guile-devel

On Sun 12 Mar 2017 10:38, Freja Nordsiek <fnordsie@gmail.com> 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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* 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-13 12:46 ` Andy Wingo
@ 2017-03-14 14:08   ` Freja Nordsiek
  2017-03-14 14:53     ` Andy Wingo
  0 siblings, 1 reply; 10+ messages in thread
From: Freja Nordsiek @ 2017-03-14 14:08 UTC (permalink / raw)
  To: Andy Wingo; +Cc: guile-devel

[-- Attachment #1: Type: text/plain, Size: 2708 bytes --]

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 <wingo@pobox.com> wrote:
> On Sun 12 Mar 2017 10:38, Freja Nordsiek <fnordsie@gmail.com> 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

[-- Attachment #2: 0001-Made-GUILE_SITE_DIR-Autoconf-macro-look-for-director.patch --]
[-- Type: text/x-patch, Size: 4040 bytes --]

From 90daf796c829f8e422a281d501f711138f21a334 Mon Sep 17 00:00:00 2001
From: Freja Nordsiek <fnordsie@gmail.com>
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 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.
 #
-# 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])
   AC_MSG_CHECKING(for Guile site directory)
   GUILE_SITE=`$PKG_CONFIG --print-errors --variable=sitedir guile-$GUILE_EFFECTIVE_VERSION`
   AC_MSG_RESULT($GUILE_SITE)
@@ -173,6 +180,22 @@ AC_DEFUN([GUILE_SITE_DIR],
      AC_MSG_FAILURE(sitedir not found)
   fi
   AC_SUBST(GUILE_SITE)
+  AC_MSG_CHECKING([for Guile site-ccache directory])
+  GUILE_SITE_CCACHE=`$GUILE -c "(display (if (defined? '%site-ccache-dir) (%site-ccache-dir) \"\"))"`
+  AC_MSG_RESULT([$GUILE_SITE_CCACHE])
+  if test $? != "0" -o "$GUILE_SITE_CCACHE" = ""; then
+    GUILE_SITE_CCACHE=""
+    AC_MSG_WARN([siteccachedir not found])
+  fi
+  AC_SUBST([GUILE_SITE_CCACHE])
+  AC_MSG_CHECKING(for Guile extensions directory)
+  GUILE_EXTENSION=`$PKG_CONFIG --print-errors --variable=extensiondir guile-$GUILE_EFFECTIVE_VERSION`
+  AC_MSG_RESULT($GUILE_EXTENSION)
+  if test "$GUILE_EXTENSION" = ""; then
+    GUILE_EXTENSION=""
+    AC_MSG_WARN(extensiondir not found)
+  fi
+  AC_SUBST(GUILE_EXTENSION)
  ])
 
 # GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* 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 14:08   ` Freja Nordsiek
@ 2017-03-14 14:53     ` Andy Wingo
  2017-03-14 15:31       ` Freja Nordsiek
  0 siblings, 1 reply; 10+ messages in thread
From: Andy Wingo @ 2017-03-14 14:53 UTC (permalink / raw)
  To: Freja Nordsiek; +Cc: guile-devel

Hi :)

Great patch, some comments.

On Tue 14 Mar 2017 15:08, Freja Nordsiek <fnordsie@gmail.com> writes:

> From 90daf796c829f8e422a281d501f711138f21a334 Mon Sep 17 00:00:00 2001
> From: Freja Nordsiek <fnordsie@gmail.com>
> 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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* 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 14:53     ` Andy Wingo
@ 2017-03-14 15:31       ` Freja Nordsiek
  2017-03-14 15:56         ` Andy Wingo
  0 siblings, 1 reply; 10+ messages in thread
From: Freja Nordsiek @ 2017-03-14 15:31 UTC (permalink / raw)
  To: Andy Wingo; +Cc: guile-devel

[-- Attachment #1: Type: text/plain, Size: 3454 bytes --]

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 <wingo@pobox.com> wrote:
> Hi :)
>
> Great patch, some comments.
>
> On Tue 14 Mar 2017 15:08, Freja Nordsiek <fnordsie@gmail.com> writes:
>
>> From 90daf796c829f8e422a281d501f711138f21a334 Mon Sep 17 00:00:00 2001
>> From: Freja Nordsiek <fnordsie@gmail.com>
>> 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

[-- Attachment #2: 0001-GUILE_SITE_DIR-Find-site-directories-for-compiled-fi.patch --]
[-- Type: text/x-patch, Size: 4288 bytes --]

From 41498549ac22ea50e497887b3a1e002985bb6f8f Mon Sep 17 00:00:00 2001
From: Freja Nordsiek <fnordsie@gmail.com>
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 @@ 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 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.
 #
-# 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])
   AC_MSG_CHECKING(for Guile site directory)
   GUILE_SITE=`$PKG_CONFIG --print-errors --variable=sitedir guile-$GUILE_EFFECTIVE_VERSION`
   AC_MSG_RESULT($GUILE_SITE)
@@ -173,6 +181,28 @@ AC_DEFUN([GUILE_SITE_DIR],
      AC_MSG_FAILURE(sitedir not found)
   fi
   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`
+  if test "$GUILE_SITE_CCACHE" = ""; then
+    AC_MSG_RESULT(no)
+    AC_MSG_CHECKING([for Guile site-ccache directory using interpreter])
+    GUILE_SITE_CCACHE=`$GUILE -c "(display (if (defined? '%site-ccache-dir) (%site-ccache-dir) \"\"))"`
+    if test $? != "0" -o "$GUILE_SITE_CCACHE" = ""; then
+      AC_MSG_RESULT(no)
+      GUILE_SITE_CCACHE=""
+      AC_MSG_WARN([siteccachedir not found])
+    fi
+  fi
+  AC_MSG_RESULT($GUILE_SITE_CCACHE)
+  AC_SUBST([GUILE_SITE_CCACHE])
+  AC_MSG_CHECKING(for Guile extensions directory)
+  GUILE_EXTENSION=`$PKG_CONFIG --print-errors --variable=extensiondir guile-$GUILE_EFFECTIVE_VERSION`
+  AC_MSG_RESULT($GUILE_EXTENSION)
+  if test "$GUILE_EXTENSION" = ""; then
+    GUILE_EXTENSION=""
+    AC_MSG_WARN(extensiondir not found)
+  fi
+  AC_SUBST(GUILE_EXTENSION)
  ])
 
 # GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* 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 15:31       ` Freja Nordsiek
@ 2017-03-14 15:56         ` Andy Wingo
  2017-03-14 16:10           ` Freja Nordsiek
  0 siblings, 1 reply; 10+ messages in thread
From: Andy Wingo @ 2017-03-14 15:56 UTC (permalink / raw)
  To: Freja Nordsiek; +Cc: guile-devel

Heya :)

On Tue 14 Mar 2017 16:31, Freja Nordsiek <fnordsie@gmail.com> writes:

> From 41498549ac22ea50e497887b3a1e002985bb6f8f Mon Sep 17 00:00:00 2001
> From: Freja Nordsiek <fnordsie@gmail.com>
> 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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* 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 15:56         ` Andy Wingo
@ 2017-03-14 16:10           ` Freja Nordsiek
  2017-03-14 19:41             ` Freja Nordsiek
  0 siblings, 1 reply; 10+ messages in thread
From: Freja Nordsiek @ 2017-03-14 16:10 UTC (permalink / raw)
  To: Andy Wingo; +Cc: guile-devel

[-- Attachment #1: Type: text/plain, Size: 2860 bytes --]

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 <wingo@pobox.com> wrote:
> Heya :)
>
> On Tue 14 Mar 2017 16:31, Freja Nordsiek <fnordsie@gmail.com> writes:
>
>> From 41498549ac22ea50e497887b3a1e002985bb6f8f Mon Sep 17 00:00:00 2001
>> From: Freja Nordsiek <fnordsie@gmail.com>
>> 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

[-- Attachment #2: 0001-GUILE_SITE_DIR-updated-to-find-compiled-site-directo.patch --]
[-- Type: text/x-patch, Size: 4353 bytes --]

From 438a8902f38b838eb407499aa0ed37669dc0b851 Mon Sep 17 00:00:00 2001
From: Freja Nordsiek <fnordsie@gmail.com>
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 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.
 #
-# 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])
   AC_MSG_CHECKING(for Guile site directory)
   GUILE_SITE=`$PKG_CONFIG --print-errors --variable=sitedir guile-$GUILE_EFFECTIVE_VERSION`
   AC_MSG_RESULT($GUILE_SITE)
@@ -173,6 +183,28 @@ AC_DEFUN([GUILE_SITE_DIR],
      AC_MSG_FAILURE(sitedir not found)
   fi
   AC_SUBST(GUILE_SITE)
+  AC_MSG_CHECKING([for Guile site-ccache directory using pkgconfig])
+  GUILE_SITE_CCACHE=`$PKG_CONFIG --variable=siteccachedir guile-$GUILE_EFFECTIVE_VERSION`
+  if test "$GUILE_SITE_CCACHE" = ""; then
+    AC_MSG_RESULT(no)
+    AC_MSG_CHECKING([for Guile site-ccache directory using interpreter])
+    GUILE_SITE_CCACHE=`$GUILE -c "(display (if (defined? '%site-ccache-dir) (%site-ccache-dir) \"\"))"`
+    if test $? != "0" -o "$GUILE_SITE_CCACHE" = ""; then
+      AC_MSG_RESULT(no)
+      GUILE_SITE_CCACHE=""
+      AC_MSG_WARN([siteccachedir not found])
+    fi
+  fi
+  AC_MSG_RESULT($GUILE_SITE_CCACHE)
+  AC_SUBST([GUILE_SITE_CCACHE])
+  AC_MSG_CHECKING(for Guile extensions directory)
+  GUILE_EXTENSION=`$PKG_CONFIG --print-errors --variable=extensiondir guile-$GUILE_EFFECTIVE_VERSION`
+  AC_MSG_RESULT($GUILE_EXTENSION)
+  if test "$GUILE_EXTENSION" = ""; then
+    GUILE_EXTENSION=""
+    AC_MSG_WARN(extensiondir not found)
+  fi
+  AC_SUBST(GUILE_EXTENSION)
  ])
 
 # GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* 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 16:10           ` Freja Nordsiek
@ 2017-03-14 19:41             ` Freja Nordsiek
  2017-03-15  7:46               ` Andy Wingo
  0 siblings, 1 reply; 10+ messages in thread
From: Freja Nordsiek @ 2017-03-14 19:41 UTC (permalink / raw)
  To: Andy Wingo; +Cc: guile-devel

[-- Attachment #1: Type: text/plain, Size: 3109 bytes --]

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 <fnordsie@gmail.com> 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 <wingo@pobox.com> wrote:
>> Heya :)
>>
>> On Tue 14 Mar 2017 16:31, Freja Nordsiek <fnordsie@gmail.com> writes:
>>
>>> From 41498549ac22ea50e497887b3a1e002985bb6f8f Mon Sep 17 00:00:00 2001
>>> From: Freja Nordsiek <fnordsie@gmail.com>
>>> 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

[-- Attachment #2: 0001-GUILE_SITE_DIR-updated-to-find-compiled-site-directo.patch --]
[-- Type: text/x-patch, Size: 4415 bytes --]

From 09e2d1075a7c48e408a5ddaf8b7bf4578b455aa9 Mon Sep 17 00:00:00 2001
From: Freja Nordsiek <fnordsie@gmail.com>
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
 #
-# 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.
 #
-# 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])
   AC_MSG_CHECKING(for Guile site directory)
   GUILE_SITE=`$PKG_CONFIG --print-errors --variable=sitedir guile-$GUILE_EFFECTIVE_VERSION`
   AC_MSG_RESULT($GUILE_SITE)
@@ -173,6 +183,28 @@ AC_DEFUN([GUILE_SITE_DIR],
      AC_MSG_FAILURE(sitedir not found)
   fi
   AC_SUBST(GUILE_SITE)
+  AC_MSG_CHECKING([for Guile site-ccache directory using pkgconfig])
+  GUILE_SITE_CCACHE=`$PKG_CONFIG --variable=siteccachedir guile-$GUILE_EFFECTIVE_VERSION`
+  if test "$GUILE_SITE_CCACHE" = ""; then
+    AC_MSG_RESULT(no)
+    AC_MSG_CHECKING([for Guile site-ccache directory using interpreter])
+    GUILE_SITE_CCACHE=`$GUILE -c "(display (if (defined? '%site-ccache-dir) (%site-ccache-dir) \"\"))"`
+    if test $? != "0" -o "$GUILE_SITE_CCACHE" = ""; then
+      AC_MSG_RESULT(no)
+      GUILE_SITE_CCACHE=""
+      AC_MSG_WARN([siteccachedir not found])
+    fi
+  fi
+  AC_MSG_RESULT($GUILE_SITE_CCACHE)
+  AC_SUBST([GUILE_SITE_CCACHE])
+  AC_MSG_CHECKING(for Guile extensions directory)
+  GUILE_EXTENSION=`$PKG_CONFIG --print-errors --variable=extensiondir guile-$GUILE_EFFECTIVE_VERSION`
+  AC_MSG_RESULT($GUILE_EXTENSION)
+  if test "$GUILE_EXTENSION" = ""; then
+    GUILE_EXTENSION=""
+    AC_MSG_WARN(extensiondir not found)
+  fi
+  AC_SUBST(GUILE_EXTENSION)
  ])
 
 # GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* 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 19:41             ` Freja Nordsiek
@ 2017-03-15  7:46               ` Andy Wingo
  2017-03-15  7:49                 ` Freja Nordsiek
  0 siblings, 1 reply; 10+ messages in thread
From: Andy Wingo @ 2017-03-15  7:46 UTC (permalink / raw)
  To: Freja Nordsiek; +Cc: guile-devel

On Tue 14 Mar 2017 20:41, Freja Nordsiek <fnordsie@gmail.com> writes:

> I missed adding an entry for meta/guile-2.2.pc.in in the commit log. Fixed now.

Applied, thanks!

Note that I made a small change to the commit log:

> 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

GUILE_SITE_DIR: Update to find compiled site directories

* meta/guile.m4 (GUILE_SITE_DIR): Update to find compiled site
  directories.
* meta/guile-2.2.pc.in: Add entry for site-ccache directory.

Here we usually avoid going over 72 columns (because these logs are
often indented, e.g. via "git log") and the general tone is a bit more
declarative, in the present tense, and with full stops.

Andy



^ permalink raw reply	[flat|nested] 10+ messages in thread

* 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-15  7:46               ` Andy Wingo
@ 2017-03-15  7:49                 ` Freja Nordsiek
  0 siblings, 0 replies; 10+ messages in thread
From: Freja Nordsiek @ 2017-03-15  7:49 UTC (permalink / raw)
  To: Andy Wingo; +Cc: guile-devel

[-- Attachment #1: Type: text/plain, Size: 1012 bytes --]

Those changes look fine. More clear now.


Freja Nordsiek

On Mar 15, 2017 8:46 AM, "Andy Wingo" <wingo@pobox.com> wrote:

> On Tue 14 Mar 2017 20:41, Freja Nordsiek <fnordsie@gmail.com> writes:
>
> > I missed adding an entry for meta/guile-2.2.pc.in in the commit log.
> Fixed now.
>
> Applied, thanks!
>
> Note that I made a small change to the commit log:
>
> > 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
>
> GUILE_SITE_DIR: Update to find compiled site directories
>
> * meta/guile.m4 (GUILE_SITE_DIR): Update to find compiled site
>   directories.
> * meta/guile-2.2.pc.in: Add entry for site-ccache directory.
>
> Here we usually avoid going over 72 columns (because these logs are
> often indented, e.g. via "git log") and the general tone is a bit more
> declarative, in the present tense, and with full stops.
>
> Andy
>

[-- Attachment #2: Type: text/html, Size: 1738 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-03-15  7:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-12  9:38 [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 Freja Nordsiek
2017-03-13 12:46 ` Andy Wingo
2017-03-14 14:08   ` Freja Nordsiek
2017-03-14 14:53     ` Andy Wingo
2017-03-14 15:31       ` Freja Nordsiek
2017-03-14 15:56         ` Andy Wingo
2017-03-14 16:10           ` Freja Nordsiek
2017-03-14 19:41             ` Freja Nordsiek
2017-03-15  7:46               ` Andy Wingo
2017-03-15  7:49                 ` Freja Nordsiek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).