Felix is now bootstrapped in the sense you can now completely rebuild the current host model.
PLEASE TRY THIS. And let me know if it works. It is tested at this point ONLY on OSX using clang 3.3. It almost certainly will NOT work on Windows. Just do: make build in the top level of the repository to create the build/release image, then do make bootstrap as many times as you like. This process builds a new Felix entirely from the host configuration the original "make build" created, then replaces build/release with it. The first build process uses Python to create a Felix image I will call B0. The first bootstrap uses B0 to create B1. So the B0 tools are used to run the build scripts which generate B1 tools. So now we have a set of tools and libraries built by Felix, but the Felix used to build them was built by Python. So we need to run the bootstrap again to create B2 tools. These get made by B1, which was built entirely by Felix, but by a Felix built by Python. To understand the concepts here, suppose we're interested in performance. The Python build is slow, and may produce slow tools, and the code generated by those tools may be slow. For example 'assert' might be on not only in the tools Python built, but in the code they build. however running these slow tools with higher optimisation settings in the script produces slow tools that generate fast tools. So we run these tools to produce fast tools and we finally have fast tools producing fast tools. In principle, repeatedly bootstrapping should lead to a fixpoint, that is, each subsequent step will generate an image identical to the one used to produce it (apart from build time stamps), at which point there's no utility in bootstrapping more. Now .. if you install Felix, you should be able to use the installed Felix to upgrade itself. Once it's all going, there's no need to use Python again. That's only required for a clean build on a new platform. This means an upgradable Felix system can be distributed to developers using a tarball for each target. gcc or clang and Ocaml will be required for this process (but not Python). Status: ===== The build tools have woeful error handling. Some operations use library functions that do not return an error code. Some just don't bother to check the error code. Most that do just abort with an exit(1). Bugs ==== Some information such as version, etc, comes from the current config.flx generated record. The build tool cannot create this record so it just copies it. This cannot be fixed until there's a config tool. Also, the build process does not respect scoop, that is, it knows nothing of installed packages. -- john skaller skal...@users.sourceforge.net http://felix-lang.org ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. This 200-page book is written by three acclaimed leaders in the field. The early access version is available now. Download your free book today! http://p.sf.net/sfu/neotech_d2d_may _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language