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