2014/07/20
Oops - gauche-package regression
Alert for those who start writing new extention package
with Gauche 0.9.4. When you create the skeleton files
by gauche-package generate
, you need to tweak the
generated files to make them work.
Before going into details, I just describe what to do:
After generating skeleton files, edit configure
script to add the following stuff right after ;; Output
line:
(use gauche.package) (let1 gpd-file #"~(cf$ 'PACKAGE_NAME).gpd" (with-output-to-file gpd-file (cut write-gauche-package-description (make <gauche-package-description> :name (cf$ 'PACKAGE_NAME) :version (cf$ 'PACKAGE_VERSION) :configure (string-join (command-line))))))
And in Makefile.in
, remove configure
from the
rule of maintainer-clean
target, as shown in this patch.
maintainer-clean : clean - rm -rf $(CONFIG_GENERATED) configure VERSION + rm -rf $(CONFIG_GENERATED) VERSION
Now, the explanation.
0.9.4 is shipped with new gauche.configure
module,
which attempts to replace autoconf-based configuration
to build Gauche extensions.
Autoconf is well-built system,
but it makes great effort to make configure scripts work
on a minimal environment. In order to do so, it requires an
extra step for developers to generate configure script
from configure.ac
etc. It is reasonable for distributing
basic tools to the destination platform that lacks them.
However, when installing Gauche extensions, we know for sure that the destination platform already have Gauche installed, so the configure script doesn't need to be restricted in the minimal shell features. In fact, we can write configure script itself as a Gauche script, eliminating the step for developers to generate configure script from other files.
Nowadays more and more projects don't bother to create distribution tarballs and ask users to just pull from repository. Making configure script a source, not something to be generated, has advantage for not requiring users to run autoconf.
So I migrated the default skeleton files to use new configure features. But I forgot to cover a couple of points, as shown above.
The .gpd
file is to keep metadata of the extension package.
In the old skeleton configure.ac
file, it is generated by
calling gauche-package make-gpd
. My plan is to provide
an easier API in gauche.configure
, which will be in the
next version of Gauche.
And of course, we no longer need to remove configure
in
maintainer-clean
!
Autoconf has comprehensive feature tests gauche.configure
can't
match. If you need advanced feature tests, you may still want to use
autoconf-based configuration. Just give --autoconf
option
to gauche-package generate
, and it gives you configure.ac
.
gauche-package generate --autoconf YOUR-PACKAGE-NAME
Tags: 0.9.4, Extension, gauche-package
Post a comment