Oops - gauche-package regression
Alert for those who start writing new extention package
with Gauche 0.9.4. When you create the skeleton files
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
script to add the following stuff right after
(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))))))
configure from the
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
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
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.
.gpd file is to keep metadata of the extension package.
In the old skeleton
configure.ac file, it is generated by
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
Autoconf has comprehensive feature tests
match. If you need advanced feature tests, you may still want to use
autoconf-based configuration. Just give
gauche-package generate, and it gives you
gauche-package generate --autoconf YOUR-PACKAGE-NAME