forked from ceylon/ceylon-runtime
-
Notifications
You must be signed in to change notification settings - Fork 0
Ceylon runtime environment around bootstrapping and module isolation
okulikov/ceylon-runtime
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
CEYLON RUNTIME This project atm uses Maven for its build. There are a few steps needed to be able to build and test the project. 1) We need to install Ceylon Language into our local Maven repository. mvn install:install-file -Dfile=ceylon.language-0.3.car -DgroupId=ceylon.language -DartifactId=ceylon-language -Dversion=0.3 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true 2) We need to checkout and build (mvn clean install) Ceylon Module Resolver project (CMR). https://github.com/ceylon/ceylon-module-resolver The CMR build version must match the one used in this project -- see root pom.xml. The Runtime uses JBoss Modules to build modular runtime system. Initially JBoss Modules uses out dist/ directory as its modules repository. This includes modules we need on the "bootstrap": * Ceylon Language * Ceylon Module Resolver * Ceylon Runtime * JBoss Modules (as a module info, actual classes are part of system classpath) dist/ repository is built as part of the testsuite sub-project build. jars are copied from our Maven repository, while the module.xml information is static. This is the part that the user needs locally. To ease things, we create a zipped version of dist/ repository, and place it under <CEYLON_REPOSITORY>/ceylon-runtime-bootstrap/ceylon-runtime-bootstrap.zip In order to use this zipped module repository we need to use custom ModuleLoader - DistributionModuleLoader. (see ceylon.sh script for the actual usage) DistributionModuleLoader explodes (if not already present) this zipped repository at initialization, and places the exploded repository under <CEYLON_REPOSITORY>/ceylon-runtime-bootstrap/ceylon-runtime-bootstrap-exploded directory. You can force update with -Dforce.bootstrap.update=true system property flag. Afterwards Ceylon Runtime uses Ceylon Module Resolver to get its modules. By default we use ~/.ceylon/repo as local CMR repository, but different repositories can be mounted. (proper mounting API is wip) In order to run your Ceylon app / module, you need to first place it into ~/.ceylon/repo. Then you can use dist/bin/ceylon.sh to run the app / module. ceylon.sh expects module name and version as its only parameter. e.g. ./ceylon.sh hello/1.0.0 --> [full module name]/[version], where default version is 0.0.0 if left out (I think the version atm needs to be in the form x.y.z[.qualifier]).
About
Ceylon runtime environment around bootstrapping and module isolation
Resources
Stars
Watchers
Forks
Packages 0
No packages published