This is the mail archive of the kawa@sources.redhat.com mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Build process for Kawa projects


Hi guys,

I will soon begin working on a Eclipse builder for Kawa programs, as a new
plugin based on SchemeScript (as well as more support for Kawa Scheme
programming).

In order to meet the needs of other developers like you, I would like to
know (if possible) how your Kawa projects are structured and want kind of
build process you (would like to) have. To help start the discussion, let me
explain how our build process works at NuEcho wrt Kawa.

FIrst, our Kawa modules follow a (quite) rigid structure to help our build
tools. Each module starts with a module declaration, followed by an optional
"module-static" clause, and then the "module-export" clause.

   (module-name <com.nuecho.somemodule>)
   (module-static #t)
   (module-export some-function <SomeClass>)

This is followed by all the module dependencies, expressed as a bunch of
"require" clauses:

   (require <com.nuecho.anotherModule>)
   (require <com.nuecho.yetAnotherOne>)
   (require 'srfi-1)

The build process does the following:
  0. all the Java code is compiled
  1. all the Scheme source files in the project are scanned, extracting all
dependency information and building a dependency graph
  2. the modules are sorted topologically based on the dependency graph
  3. we then determine all modules modified since the last build
  4. all modified modules are then compiled, as well as all modules directly
depending on them, in the order given by the topological sort (we developed
a custom Kawa compiler front-end)

All this is integrated as a custom Ant task. (This process is far from being
optimal if only a small number of files have changed since the last build.
But it's not that bad since we don't have millions of lines of Scheme
code...)

It would not be too difficult to implement the same thing in the context of
Eclipse. 

Would that satisfy some of your requirements?


Dominique Boucher
The SchemeWay Project
http://www.sourceforge.net/projects/schemeway



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]