Am 13.07.2012 09:08:24 schrieb(en) Sylvain Le Gall:
> Regarding the Windows port, how far would you go? I always found it reasonable to provide a binary release, as many Windows users get scary when it comes to software builds. But I never found the time to do this, and hoped a group of interested people could maintain such a release. Skylift has now the required features: Users can download binary packages from remote repositories as if they were local. The format of the binary packages was extended for ensuring binary compatibility (the checksum thing). For publishers, there is scripting support for copying the packages to a public directory. I could imagine we could attract a lot more beginners and serious users with such a release.
>

Lets start small. Make the GODI build process (and a few selected
packages) works as reliably as possible.

Once we will have time and be confident in process, we can use the
builder to publish binary packages required to do the bootstrap. If we
can get to the point that we can create a binary installer that will
help to skip all the initial bootstrap process, it will be a big Win
and a very argument for beginner.

I see some problems however, to reach this state:
- GODI binary packages need to be relocatable, i.e. forcing the
standard directory to be c:\cygwin\opt\godi would feel strange for a
Windows guy

Agreed. However, a full solution seems to be some work. Not inside GODI (I guess it is simple to make it relocatable by changing config files), but in the packages.

There are a few problems

 - hardcoded paths
 - ocamlrun executables need to be relocated (on win32
   there is a executable header, don't know this works
   in detail)

- some packages are definitively not relocateable (camomile e.g.), we
will need to skip them
- once relocated we should be able to continue using GODI

For adapting hardcoded paths we have a number of options:
 1. Use relative paths, e.g. relative to the executable
 2. Use environment variables
 3. Use registry
 4. Use a property system like in Java

For me, 1. and 4. look promising (but 4. only if there is support in core OCaml). Option 2 has the disadvantage of not being scalable (you don't want users to set 20 variables, and Windows limits environments to 32K). 3. is Windows-only, and it is hard to sell to Unix users.

The property system could look like:
- There are simply hierarchic variables a.b.c.d which have string values - These variables can be taken from different sources and override each other - There would be a default <stdlib>/properties with the deployment-wide path settings

There would only be a single function Sys.property to get the value. Such a system would even be attractive to Unix users because you can generally avoid to bake paths into code.

Of course, this is a long-term solution only - we would need properties in core OCaml first (which can take months). Providing properties in a library would be too unattractive for software developers.

FYI, if we are able to do it for Windows, we can also create such
installer for Mac and Linux with little additional effort.

There is another problem here that does not occur for Windows: the object format may include paths to libraries. Maybe this is solvable with objcopy.

Does skylift bootstrap process produces the binary packages ? If this
is the case, where are they located ?

build/packages/All

If the binary packages are
there, providing them is a matter of second.

It's easy: set EXPORT_PACKAGES to the directory where the public packages should go to, and call "godi_make export-write-package" after each build. This copies the package, and updates a file PKGMANIFEST in the export directory.

Alternatively, you can also copy the package from build/packages/All yourself, and create this file manually:

godi_console ptool -in-binary "$package_file" -out-manifest

This command creates the part of the manifest for a single package (concatenate for all packages).

For importing such a directory into another GODI deployment set GODI_BINPKG to the path or URL of the export directory.

Btw., this text summarized the new features of Skylift: http://godi.camlcity.org/godi/project-doc/skylift-intro.txt

Gerd

Cheers

Sylvain
_______________________________________________
Godi-list mailing list
Godi-list@ocaml-programming.de
https://godirepo.camlcity.org/mailman/listinfo/godi-list





--
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany    g...@gerd-stolpmann.de
Creator of GODI and camlcity.org.
Contact details:        http://www.camlcity.org/contact.html
Company homepage:       http://www.gerd-stolpmann.de
------------------------------------------------------------
_______________________________________________
Godi-list mailing list
Godi-list@ocaml-programming.de
https://godirepo.camlcity.org/mailman/listinfo/godi-list

Reply via email to