* [PATCH 1/5] Remove unused definition of preinstguiletool
2011-03-21 22:19 Some simple build simplification patches Neil Jerram
@ 2011-03-21 22:19 ` Neil Jerram
2011-03-21 22:19 ` [PATCH 2/5] GUILE_FOR_BUILD is only needed by meta/guile.in, not by Makefiles Neil Jerram
` (4 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Neil Jerram @ 2011-03-21 22:19 UTC (permalink / raw)
To: guile-devel; +Cc: Neil Jerram
* am/pre-inst-guile (preinstguiletool): Removed.
---
am/pre-inst-guile | 7 +++----
1 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/am/pre-inst-guile b/am/pre-inst-guile
index 7993d15..b7b0d34 100644
--- a/am/pre-inst-guile
+++ b/am/pre-inst-guile
@@ -1,6 +1,6 @@
-## am/pre-inst-guile --- define preinstguile and preinstguiletool vars
+## am/pre-inst-guile --- define preinstguile
-## Copyright (C) 2002, 2006 Free Software Foundation
+## Copyright (C) 2002, 2006, 2011 Free Software Foundation
##
## This file is part of GUILE.
##
@@ -21,7 +21,7 @@
## Commentary:
-## This fragment defines two variables: preinstguile, preinstguiletool.
+## This fragment defines the preinstguile variable
## It can be included in any Makefile.am by adding the line:
## include $(top_srcdir)/am/pre-inst-guile
## See devel/build/pre-inst-guile.text (CVS only) for more info.
@@ -29,6 +29,5 @@
## Code:
preinstguile = $(top_builddir_absolute)/meta/guile
-preinstguiletool = GUILE="$(preinstguile)" $(top_srcdir)/scripts
## am/pre-inst-guile ends here
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/5] GUILE_FOR_BUILD is only needed by meta/guile.in, not by Makefiles
2011-03-21 22:19 Some simple build simplification patches Neil Jerram
2011-03-21 22:19 ` [PATCH 1/5] Remove unused definition of preinstguiletool Neil Jerram
@ 2011-03-21 22:19 ` Neil Jerram
2011-03-21 22:19 ` [PATCH 3/5] Make explicit that GUILE_FOR_BUILD is only used when cross-compiling Neil Jerram
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Neil Jerram @ 2011-03-21 22:19 UTC (permalink / raw)
To: guile-devel; +Cc: Neil Jerram
* configure.ac: Use AM_SUBST_NOTMAKE for GUILE_FOR_BUILD instead of
AC_SUBST.
---
configure.ac | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/configure.ac b/configure.ac
index 423ae99..d033420 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1496,7 +1496,7 @@ if test "$cross_compiling" = "yes"; then
AC_MSG_RESULT($GUILE_FOR_BUILD)
fi
AC_ARG_VAR(GUILE_FOR_BUILD,[guile for build system])
-AC_SUBST(GUILE_FOR_BUILD)
+AM_SUBST_NOTMAKE(GUILE_FOR_BUILD)
## If we're using GCC, ask for aggressive warnings.
GCC_CFLAGS=""
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/5] Make explicit that GUILE_FOR_BUILD is only used when cross-compiling
2011-03-21 22:19 Some simple build simplification patches Neil Jerram
2011-03-21 22:19 ` [PATCH 1/5] Remove unused definition of preinstguiletool Neil Jerram
2011-03-21 22:19 ` [PATCH 2/5] GUILE_FOR_BUILD is only needed by meta/guile.in, not by Makefiles Neil Jerram
@ 2011-03-21 22:19 ` Neil Jerram
2011-03-21 22:19 ` [PATCH 4/5] Inline the effect of am/pre-inst-guile Neil Jerram
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: Neil Jerram @ 2011-03-21 22:19 UTC (permalink / raw)
To: guile-devel; +Cc: Neil Jerram
* configure.ac (GUILE_FOR_BUILD): Change normal build value to
'this-value-will-never-be-used'.
---
configure.ac | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/configure.ac b/configure.ac
index d033420..616bdda 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1487,7 +1487,7 @@ if test "$cross_compiling" = "yes"; then
AC_MSG_CHECKING(guile for build)
GUILE_FOR_BUILD="${GUILE_FOR_BUILD-guile}"
else
- GUILE_FOR_BUILD='$(preinstguile)'
+ GUILE_FOR_BUILD='this-value-will-never-be-used'
fi
## AC_MSG_CHECKING("if we are cross compiling")
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/5] Inline the effect of am/pre-inst-guile
2011-03-21 22:19 Some simple build simplification patches Neil Jerram
` (2 preceding siblings ...)
2011-03-21 22:19 ` [PATCH 3/5] Make explicit that GUILE_FOR_BUILD is only used when cross-compiling Neil Jerram
@ 2011-03-21 22:19 ` Neil Jerram
2011-03-22 20:46 ` Jan Nieuwenhuizen
2011-03-21 22:19 ` [PATCH 5/5] Remove statements about scripts/* that are no longer true Neil Jerram
2011-03-25 18:37 ` Some simple build simplification patches Andy Wingo
5 siblings, 1 reply; 10+ messages in thread
From: Neil Jerram @ 2011-03-21 22:19 UTC (permalink / raw)
To: guile-devel; +Cc: Neil Jerram
It's just one variable definition, and in my opinion it confuses,
rather than helps, the overall build picture to have two names
(preinstguile and meta/guile) for the same thing.
* am/Makefile.am (am_frags): Remove pre-inst-guile.
* am/pre-inst-guile: Deleted.
* doc/ref/Makefile.am: Don't include am/pre-inst-guile.
($(snarf_doc).am, $(snarf_doc).texi): Expand $(preinstguile).
* module/Makefile.am (ice-9/psyntax-pp.scm.gen): Don't include
am/pre-inst-guile.
(ice-9/psyntax-pp.scm.gen): Expand $(preinstguile).
---
am/Makefile.am | 2 +-
am/pre-inst-guile | 33 ---------------------------------
doc/ref/Makefile.am | 7 +++----
module/Makefile.am | 3 +--
4 files changed, 5 insertions(+), 40 deletions(-)
delete mode 100644 am/pre-inst-guile
diff --git a/am/Makefile.am b/am/Makefile.am
index d1b7ecc..e2044d6 100644
--- a/am/Makefile.am
+++ b/am/Makefile.am
@@ -21,7 +21,7 @@
AUTOMAKE_OPTIONS = gnu
-am_frags = pre-inst-guile maintainer-dirs guilec
+am_frags = maintainer-dirs guilec
EXTRA_DIST = $(am_frags) ChangeLog-2008
diff --git a/am/pre-inst-guile b/am/pre-inst-guile
deleted file mode 100644
index b7b0d34..0000000
--- a/am/pre-inst-guile
+++ /dev/null
@@ -1,33 +0,0 @@
-## am/pre-inst-guile --- define preinstguile
-
-## Copyright (C) 2002, 2006, 2011 Free Software Foundation
-##
-## This file is part of GUILE.
-##
-## GUILE is free software; you can redistribute it and/or modify
-## it under the terms of the GNU Lesser General Public License as
-## published by the Free Software Foundation; either version 3, or
-## (at your option) any later version.
-##
-## GUILE is distributed in the hope that it will be useful, but
-## WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU Lesser General Public
-## License along with GUILE; see the file COPYING.LESSER. If not, write
-## to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
-## Floor, Boston, MA 02110-1301 USA
-
-## Commentary:
-
-## This fragment defines the preinstguile variable
-## It can be included in any Makefile.am by adding the line:
-## include $(top_srcdir)/am/pre-inst-guile
-## See devel/build/pre-inst-guile.text (CVS only) for more info.
-
-## Code:
-
-preinstguile = $(top_builddir_absolute)/meta/guile
-
-## am/pre-inst-guile ends here
diff --git a/doc/ref/Makefile.am b/doc/ref/Makefile.am
index c154f42..0359380 100644
--- a/doc/ref/Makefile.am
+++ b/doc/ref/Makefile.am
@@ -111,8 +111,6 @@ noinst_DATA = $(PICTURES)
EXTRA_DIST = ChangeLog-2008 $(PICTURES)
-include $(top_srcdir)/am/pre-inst-guile
-
# Automated snarfing
autoconf.texi: autoconf-macros.texi
@@ -129,7 +127,8 @@ snarf_doc = standard-library
$(snarf_doc).am: $(snarf_doc).scm
GUILE_AUTO_COMPILE=0 ; \
variable="`echo $(snarf_doc) | tr - _`_scm_files" ; \
- "$(preinstguile)" -l "$(srcdir)/$(snarf_doc).scm" -c " \
+ "$(top_builddir_absolute)/meta/guile" -l "$(srcdir)/$(snarf_doc).scm" \
+ -c " \
(format #t \"# Automatically generated, do not edit.~%\") \
(format #t \"$$variable = \") \
(for-each (lambda (m) \
@@ -143,7 +142,7 @@ include standard-library.am
$(snarf_doc).texi: $(standard_library_scm_files)
GUILE_AUTO_COMPILE=0 \
- "$(preinstguile)" "$(srcdir)/make-texinfo.scm" \
+ "$(top_builddir_absolute)/meta/guile" "$(srcdir)/make-texinfo.scm" \
"$(abs_srcdir)/$(snarf_doc).scm" > "$@.tmp"
mv "$@.tmp" "$@"
diff --git a/module/Makefile.am b/module/Makefile.am
index 9940900..754bebf 100644
--- a/module/Makefile.am
+++ b/module/Makefile.am
@@ -73,9 +73,8 @@ ETAGS_ARGS += \
ice-9/compile-psyntax.scm \
ice-9/ChangeLog-2008
-include $(top_srcdir)/am/pre-inst-guile
ice-9/psyntax-pp.scm.gen:
- $(preinstguile) --no-auto-compile -s $(srcdir)/ice-9/compile-psyntax.scm \
+ $(top_builddir_absolute)/meta/guile --no-auto-compile -s $(srcdir)/ice-9/compile-psyntax.scm \
$(srcdir)/ice-9/psyntax.scm $(srcdir)/ice-9/psyntax-pp.scm
.PHONY: ice-9/psyntax-pp.scm.gen
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 4/5] Inline the effect of am/pre-inst-guile
2011-03-21 22:19 ` [PATCH 4/5] Inline the effect of am/pre-inst-guile Neil Jerram
@ 2011-03-22 20:46 ` Jan Nieuwenhuizen
2011-03-22 22:08 ` Neil Jerram
0 siblings, 1 reply; 10+ messages in thread
From: Jan Nieuwenhuizen @ 2011-03-22 20:46 UTC (permalink / raw)
To: Neil Jerram; +Cc: guile-devel
Neil Jerram schreef op ma 21-03-2011 om 22:19 [+0000]:
> It's just one variable definition, and in my opinion it confuses,
> rather than helps, the overall build picture to have two names
> (preinstguile and meta/guile) for the same thing.
Ah, but in my cross build recipe, i have something like
preinstguile=$GUILE_FOR_BUILD
I know this isn't nice, I think preinstguile should go
and we should use $GUILE_FOR_BUILD throughout.
It's just one variable, but one that you can override,
> - "$(preinstguile)" -l "$(srcdir)/$(snarf_doc).scm" -c " \
> + "$(top_builddir_absolute)/meta/guile" -l "$(srcdir)/$(snarf_doc).scm" \
> + -c " \
How do you suggest this works during cross compiling?
Greetings,
Jan.
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.nl
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/5] Inline the effect of am/pre-inst-guile
2011-03-22 20:46 ` Jan Nieuwenhuizen
@ 2011-03-22 22:08 ` Neil Jerram
0 siblings, 0 replies; 10+ messages in thread
From: Neil Jerram @ 2011-03-22 22:08 UTC (permalink / raw)
To: Jan Nieuwenhuizen; +Cc: guile-devel
Jan Nieuwenhuizen <janneke-list@xs4all.nl> writes:
[in rearranged order...]
>> - "$(preinstguile)" -l "$(srcdir)/$(snarf_doc).scm" -c " \
>> + "$(top_builddir_absolute)/meta/guile" -l "$(srcdir)/$(snarf_doc).scm" \
>> + -c " \
>
> How do you suggest this works during cross compiling?
Because meta/guile itself uses $GUILE_FOR_BUILD when $cross_compiling is
"yes".
> Ah, but in my cross build recipe, i have something like
>
> preinstguile=$GUILE_FOR_BUILD
Is that because you're cross-building in a way that doesn't set
$cross_compiling to "yes"?
I can understand if you are, because I think I was doing that when last
working on mingw building, and using Wine and binfmt to run the built
executables.
> I know this isn't nice, I think preinstguile should go
> and we should use $GUILE_FOR_BUILD throughout.
>
> It's just one variable, but one that you can override,
I think the right thing might be to ensure that $cross_compiling is set
to "yes" for your build, even if the default ./configure mechanisms
(which I presume are based on the --target option) don't set it. Could
you do a grep-find for "cross_compiling", and see if any of the things
that depend on [ $cross_compiling = yes ] would _not_ be appropriate for
your kind of build?
(I think this would have worked for the mingw build that I was doing.
The difference would have been that the non-installed intermediate
executables, like guile_filter_doc_snarfage, were built (using
CC_FOR_BUILD) and run host-natively, instead of being target-built and
then Wine-run.)
Regards,
Neil
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 5/5] Remove statements about scripts/* that are no longer true
2011-03-21 22:19 Some simple build simplification patches Neil Jerram
` (3 preceding siblings ...)
2011-03-21 22:19 ` [PATCH 4/5] Inline the effect of am/pre-inst-guile Neil Jerram
@ 2011-03-21 22:19 ` Neil Jerram
2011-03-25 18:37 ` Some simple build simplification patches Andy Wingo
5 siblings, 0 replies; 10+ messages in thread
From: Neil Jerram @ 2011-03-21 22:19 UTC (permalink / raw)
To: guile-devel; +Cc: Neil Jerram
* doc/ref/tools.texi (Executable Modules): Say "guile-tools modules"
instead of "executable modules". Remove obsolete statements about
not ending in .scm, being executable, and beginning with shell
script invocation sequence.
* module/scripts/README: Ditto.
---
doc/ref/tools.texi | 33 +++++++--------------------------
module/scripts/README | 23 +++++------------------
2 files changed, 12 insertions(+), 44 deletions(-)
diff --git a/doc/ref/tools.texi b/doc/ref/tools.texi
index 2f4f59a..7a98884 100644
--- a/doc/ref/tools.texi
+++ b/doc/ref/tools.texi
@@ -303,14 +303,11 @@ is rather byzantine, so for now @emph{NO} doc snarfing programs are installed.
@cindex executable modules
@cindex scripts
-When Guile is installed, in addition to the @code{(ice-9 FOO)} modules,
-a set of @dfn{executable modules} @code{(scripts BAR)} is also installed.
-Each is a regular Scheme module that has some additional packaging so
-that it can be called as a program in its own right, from the shell. For this
-reason, we sometimes use the term @dfn{script} in this context to mean the
-same thing.
-
-@c wow look at this hole^! variable-width font users eat your heart out.
+When Guile is installed, in addition to the @code{(ice-9 FOO)} modules, a set
+of @dfn{guile-tools modules} @code{(scripts BAR)} is also installed. Each is
+a regular Scheme module that has some additional packaging so that it can be
+used by guile-tools, from the shell. For this reason, we sometimes use the
+term @dfn{script} in this context to mean the same thing.
As a convenience, the @code{guile-tools} wrapper program is installed along w/
@code{guile}; it knows where a particular module is installed and calls it
@@ -346,17 +343,11 @@ executable module. Feel free to skip to the next chapter.
See template file @code{PROGRAM} for a quick start.
-Programs must follow the @dfn{executable module} convention, documented here:
+Programs must follow the @dfn{guile-tools} convention, documented here:
@itemize
@item
-The file name must not end in ".scm".
-
-@item
-The file must be executable (chmod +x).
-
-@item
The module name must be "(scripts PROGRAM)". A procedure named PROGRAM w/
signature "(PROGRAM . args)" must be exported. Basically, use some variant
of the form:
@@ -377,20 +368,10 @@ There must be the alias:
However, `main' must NOT be exported.
-@item
-The beginning of the file must use the following invocation sequence:
-
-@example
-#!/bin/sh
-main='(module-ref (resolve-module '\''(scripts PROGRAM)) '\'main')'
-exec $@{GUILE-guile@} -l $0 -c "(apply $main (cdr (command-line)))" "$@@"
-!#
-@end example
-
@end itemize
Following these conventions allows the program file to be used as module
-@code{(scripts PROGRAM)} in addition to as a standalone executable. Please
+@code{(scripts PROGRAM)} in addition to being invoked by guile-tools. Please
also include a helpful Commentary section w/ some usage info.
@c tools.texi ends here
diff --git a/module/scripts/README b/module/scripts/README
index 56dd286..cb397f5 100644
--- a/module/scripts/README
+++ b/module/scripts/README
@@ -4,9 +4,9 @@ Overview and Usage
This directory contains Scheme programs, some useful in maintaining Guile.
On "make install", these programs are copied to PKGDATADIR/VERSION/scripts.
-You can invoke a program from the shell, or alternatively, load its file
-as a Guile Scheme module, and use its exported procedure(s) from Scheme code.
-Typically for any PROGRAM:
+You can use guile-tools to invoke a program from the shell, or alternatively,
+load its file as a Guile Scheme module, and use its exported procedure(s)
+from Scheme code. Typically for any PROGRAM:
(use-modules (scripts PROGRAM))
(PROGRAM ARG1 ARG2 ...)
@@ -22,8 +22,6 @@ To see PROGRAM's commentary, which may or may not be helpful:
(help (scripts PROGRAM))
-To see all commentaries and module dependencies, try: "make overview".
-
If you want to try the programs before installing Guile, you will probably
need to set environment variable GUILE_LOAD_PATH to be the parent directory.
This can be done in Bourne-compatible shells like so:
@@ -40,11 +38,7 @@ How to Contribute
See template file PROGRAM for a quick start.
-Programs must follow the "executable module" convention, documented here:
-
-- The file name must not end in ".scm".
-
-- The file must be executable (chmod +x).
+Programs must follow the "guile-tools" convention, documented here:
- The module name must be "(scripts PROGRAM)". A procedure named PROGRAM w/
signature "(PROGRAM . args)" must be exported. Basically, use some variant
@@ -61,15 +55,8 @@ Programs must follow the "executable module" convention, documented here:
However, `main' must NOT be exported.
-- The beginning of the file must use the following invocation sequence:
-
- #!/bin/sh
- main='(module-ref (resolve-module '\''(scripts PROGRAM)) '\'main')'
- exec ${GUILE-guile} -l $0 -c "(apply $main (cdr (command-line)))" "$@"
- !#
-
Following these conventions allows the program file to be used as module
-(scripts PROGRAM) in addition to as a standalone executable. Please also
+(scripts PROGRAM) in addition to being invoked by guile-tools. Please also
include a helpful Commentary section w/ some usage info.
--
1.7.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: Some simple build simplification patches
2011-03-21 22:19 Some simple build simplification patches Neil Jerram
` (4 preceding siblings ...)
2011-03-21 22:19 ` [PATCH 5/5] Remove statements about scripts/* that are no longer true Neil Jerram
@ 2011-03-25 18:37 ` Andy Wingo
2011-03-25 20:00 ` Neil Jerram
5 siblings, 1 reply; 10+ messages in thread
From: Andy Wingo @ 2011-03-25 18:37 UTC (permalink / raw)
To: Neil Jerram; +Cc: guile-devel
On Mon 21 Mar 2011 23:19, Neil Jerram <neil@ossau.uklinux.net> writes:
> Following are 4 simple (I believe) patches that simplify the build.
> Plus the one at the end (#5) that is only very loosely related to this,
> because of its mentioning of the $GUILE variable, but I think is a
> useful cleanup anyway.
All sounds fine to me!
Andy
--
http://wingolog.org/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Some simple build simplification patches
2011-03-25 18:37 ` Some simple build simplification patches Andy Wingo
@ 2011-03-25 20:00 ` Neil Jerram
0 siblings, 0 replies; 10+ messages in thread
From: Neil Jerram @ 2011-03-25 20:00 UTC (permalink / raw)
To: Andy Wingo; +Cc: guile-devel
Andy Wingo <wingo@pobox.com> writes:
> On Mon 21 Mar 2011 23:19, Neil Jerram <neil@ossau.uklinux.net> writes:
>
>> Following are 4 simple (I believe) patches that simplify the build.
>> Plus the one at the end (#5) that is only very loosely related to this,
>> because of its mentioning of the $GUILE variable, but I think is a
>> useful cleanup anyway.
>
> All sounds fine to me!
Thanks, I've pushed those then.
After doing that, I remembered that Jan had a query about
GUILE_FOR_BUILD, and we didn't yet reach a conclusion in that
conversation. Jan, please do follow up to that, and I will be happy to
revert any GUILE_FOR_BUILD-related changes if we conclude that that's
the right thing.
Regards,
Neil
^ permalink raw reply [flat|nested] 10+ messages in thread