<thelema>
val counter : 'a Batteries.Enum.t -> ('a, int) Batteries.Map.t = <fun>
vk0 has quit [Remote host closed the connection]
vk0 has joined #ocaml
<thelema>
is anyone out there able to explain Random.intaux (especially the test to get another random value)?
vk0 has quit [Ping timeout: 250 seconds]
<philtor>
Has anyone made (or thought of making) an OCaml version manager? Kind of like the Ruby Version manager (rvm) or the node version manager (nvm) - it would let you have multiple versions of OCaml installed and let you easily switch between them.
<philtor>
Usually these things are shell scripts that take care of managing the paths and libraries.
<philtor>
With OCaml there are conf files like ocamlfind.conf that would need to be managed for each version.
<philtor>
Anyway, it would enable you to do something like: ovm use v3.12.0
<philtor>
(for example)
<philtor>
or to install a new version: ovm install v3.12.1
<philtor>
Just wondering if anyone has already created something like this?
<philtor>
And if not, what might be involved?
myu2 has joined #ocaml
tauntaun has joined #ocaml
philtor has quit [Ping timeout: 240 seconds]
rien is now known as rien|zzz
myu2 has quit [Ping timeout: 272 seconds]
myu2 has joined #ocaml
arubin has quit [Quit: arubin]
Nutssh has joined #ocaml
vk0 has joined #ocaml
f[x] has quit [Ping timeout: 240 seconds]
tauntaun has quit [Quit: Ex-Chat]
Nutssh has quit [Ping timeout: 276 seconds]
Nutssh has joined #ocaml
ulfdoz has joined #ocaml
Cyanure has joined #ocaml
Nutssh has quit [Quit: Client exiting]
dgfitch has quit [Remote host closed the connection]
dgfitch has joined #ocaml
f[x] has joined #ocaml
Yoric has joined #ocaml
ulfdoz has quit [Ping timeout: 272 seconds]
philtor has joined #ocaml
ftrvxmtrx has quit [Quit: Leaving]
Cyanure has quit [Remote host closed the connection]
philtor has quit [Ping timeout: 272 seconds]
emias has quit [Ping timeout: 276 seconds]
emias has joined #ocaml
chicco has quit [*.net *.split]
deavid has quit [*.net *.split]
Derander has quit [*.net *.split]
rixed has quit [*.net *.split]
jlouis has quit [*.net *.split]
nejimban has quit [*.net *.split]
ftrvxmtrx has joined #ocaml
enthymeme has quit [Quit: rcirc on GNU Emacs 23.1.1]
chicco has joined #ocaml
deavid has joined #ocaml
Derander has joined #ocaml
rixed has joined #ocaml
jlouis has joined #ocaml
nejimban has joined #ocaml
Yoric has quit [Quit: Yoric]
eye-scuzzy has quit [Quit: leaving]
Snark has joined #ocaml
schmrkc has quit [*.net *.split]
Obfuscate has quit [*.net *.split]
mfp has quit [*.net *.split]
mattam has quit [*.net *.split]
_habnabit has quit [*.net *.split]
companion_cube has quit [*.net *.split]
alpounet has quit [*.net *.split]
benthos has quit [*.net *.split]
nimred has quit [*.net *.split]
chicco has quit [*.net *.split]
deavid has quit [*.net *.split]
Derander has quit [*.net *.split]
rixed has quit [*.net *.split]
jlouis has quit [*.net *.split]
nejimban has quit [*.net *.split]
eye-scuzzy has joined #ocaml
schmrkc has joined #ocaml
Obfuscate has joined #ocaml
mfp has joined #ocaml
mattam has joined #ocaml
_habnabit has joined #ocaml
companion_cube has joined #ocaml
alpounet has joined #ocaml
benthos has joined #ocaml
nimred has joined #ocaml
nimred has quit [Max SendQ exceeded]
nimred has joined #ocaml
ikaros has joined #ocaml
fabian has quit [Disconnected by services]
chicco has joined #ocaml
deavid has joined #ocaml
Derander has joined #ocaml
rixed has joined #ocaml
jlouis has joined #ocaml
nejimban has joined #ocaml
Yoric has joined #ocaml
<flux>
thelema, btw, does someone actually process those waiting-for-moderation messages on batteries-devel, or should I just resend?-)
edwin has joined #ocaml
ftrvxmtrx has quit [Remote host closed the connection]
ftrvxmtrx has joined #ocaml
ikaros has quit [Quit: Leave the magic to Houdini]
_andre has joined #ocaml
myu2_ has joined #ocaml
myu2 has quit [Ping timeout: 264 seconds]
ikaros has joined #ocaml
magthe has joined #ocaml
Oejet has joined #ocaml
lopex has joined #ocaml
<magthe>
gildor: I'm trying to convert some stuff to use oasis, but I'm getting stuck... is there a list of recipes for stuff like "how to check for a C header file" and "how to make use of p4"?
emias has quit [Quit: Changing server]
emias has joined #ocaml
Cyanure has joined #ocaml
Yoric has quit [Read error: Connection reset by peer]
Yoric has joined #ocaml
tauntaun has joined #ocaml
tauntaun has quit [Quit: Ex-Chat]
<thelema>
flux: that's a good question - I don't get any bounces - maybe yoric does.
myu2_ has quit [Remote host closed the connection]
tauntaun has joined #ocaml
tauntaun has quit [Ping timeout: 272 seconds]
<gildor>
magthe: C header file -> feature request for 0.3.0, camlp4 -> see _tags of oasis itself, for now it is about to add file.ml: syntax_camlp4o, pkg_odn.with.syntax
<magthe>
yes, that worked, and I get away with the slightly shorter line from thomasga :-)
<magthe>
that also fixed the error that ocamldep threw about the uncaught exception :)
<f[x]>
camlp4r parses revised syntax, but camlp4orf parses original + quotations in revised
<f[x]>
and don't use quotations in original - they don't work for anything but hello world (and don't work in the worst way - silently)
brendan has joined #ocaml
<magthe>
gildor: using is it possible to create a library that only consists of other libraries; one doesn't have any modules?
<thelema>
http://security.ece.cmu.edu/aeg/ <- now is not a good time to program in an unsafe language (or use unsafe features of ocaml)
mnabil has quit [Ping timeout: 250 seconds]
mnabil has joined #ocaml
philtor has joined #ocaml
tauntaun has quit [Ping timeout: 272 seconds]
tauntaun has joined #ocaml
<gildor>
magthe: yes, I think it is possible, just don't use Modules fields and InternalModules
avsm has joined #ocaml
<magthe>
gildor: yes, indeed... once I figured out that I could add an empty Modules: then it worked :)
lopex has quit []
sepp2k has joined #ocaml
waern_ has joined #ocaml
dgfitch has quit [Ping timeout: 268 seconds]
dgfitch has joined #ocaml
bitbckt has quit [Read error: Operation timed out]
bitbckt has joined #ocaml
bitbckt has quit [Changing host]
bitbckt has joined #ocaml
agarwal1975 has quit [Ping timeout: 268 seconds]
tauntaun has quit [Ping timeout: 272 seconds]
bohanlon has joined #ocaml
magthe has quit [Quit: Going away]
waern_ has quit [Quit: Page closed]
<hcarty>
philtor: You can have multiple OCaml versions available now with GODI - install multiple OCaml versions in different directories, then adjust your $PATH appropriately.
<hcarty>
philtor: There is no automated tool for automatically switching between versions, but it is at least possible to do manually.
<hcarty>
philtor: A rvm or perlbrew for OCaml would be pretty nifty.
<hcarty>
It would also be nice to have version support in findlib/ocamlfind. Being able to specify "ocamlfind opt -package batteries:1.x ..." vs "batteries:2.x" would be nice
lopex has joined #ocaml
avsm has quit [Quit: Leaving.]
<thelema>
hcarty: maybe batteries could have different (sub)packages for 1.x and 2.x etc
<thelema>
open Batteries = open the latest batteries
<thelema>
open Batteries1 = open the latest 1.x batteries
<thelema>
open Batteries2 ..
coucou747 has quit [Ping timeout: 250 seconds]
Yoric has quit [Quit: Yoric]
<hcarty>
thelema: I like it, but I'm not sure how it would work when you have both Batteries1 and Batteries2 installed. Would the two batteries.cm(x)a files conflict?
<hcarty>
thelema: Assuming that "open Batteries" is allowed for getting the most recent version
coucou747 has joined #ocaml
<thelema>
if I understand correctly, the name of the .cm(x)a isn't important
<thelema>
ocaml archives are more like include directories, packed into one file
ftrvxmtrx has quit [Quit: Leaving]
tauntaun has joined #ocaml
joewilliams is now known as joewilliams_away
tauntaun has quit [Ping timeout: 272 seconds]
mnabil has quit [Ping timeout: 240 seconds]
ulfdoz has joined #ocaml
<hcarty>
thelema: I didn't know that. That's good to know.
ymasory has joined #ocaml
Znudzon has quit [Ping timeout: 272 seconds]
drunK has joined #ocaml
oriba has joined #ocaml
tauntaun has joined #ocaml
Yoric has joined #ocaml
yezariaely has joined #ocaml
<adrien>
the lablgtk-list moved to ocamlforge, anyone know if the subscriptions have been kept with the migration? (I want to send a mail to it and want to know if there are more than 5 people subscribed)
olauzon has joined #ocaml
<thelema>
adrien: that's a good question - I don't know if I'm still subscribed. you could send the email and I'd let you know if I got it
metasyntax has quit [Ping timeout: 260 seconds]
<adrien>
thelema: there has been one mail: "[Lablgtk-list] Lablgtk moved to the ocamlcore forge
metasyntax has joined #ocaml
<thelema>
IIRC, I got that one, so they moved me over
<adrien>
" (yeah, it has been sent to the new list, at least that's how I received it)
<adrien>
ok, good, thanks =)
joewilliams_away is now known as joewilliams
<hcarty>
flux: I didnt see the patch in your mailing list post. But from looking at your MapSet code before, I think it is a worthwhile addition.
coucou747 has quit [Remote host closed the connection]
<flux>
hcarty, it should've been two posts, (git format-patch) cover letter and actual patch?
<thelema>
hcarty: his second email has the patch
jonathandav has quit [Read error: Connection reset by peer]
olauzon has quit [Quit: olauzon]
<hcarty>
flux, thelema: Sorry about the noise
<thelema>
hcarty: n/p
<gildor>
thelema, adrien: lablgtk list on ocaml forge "185 members total"
<gildor>
toots is working on injecting labgtk former archives
enthymeme has joined #ocaml
<thelema>
gildor: thanks for your hard work on everything ocamlcore
tauntaun has quit [Quit: Ex-Chat]
<adrien>
gildor: ah, awesome, thanks a lot =)
<adrien>
and thanks for your continued work too
<gildor>
thx adrien and thelema
<gildor>
more to come ;-)
* thelema
realizes how important oasis-db is to a community
* gildor
working on OCaml Forge SSO for this year OCaml Meeting registration
<gildor>
thelema: full ACK, it will be an important piece in between Debian/GODI and upstream authors and will "hopefully" give to OCaml a big boost in term of small libraries
<thelema>
without a central repository, *tons* of code gets rewritten over and over, as it's easier to "NIH" the routines
<gildor>
thelema: indeed, the ability to write small piece of code publish and forget it is a very nice feature
<gildor>
but that is not all
<gildor>
after oasis-db, we will need 1) OCaml platform and 2) installers of 1) for Mac/Linux/Windows
<gildor>
1) should contain e.g. Batteries (maybe the glue) and will be based on oasis-db
<gildor>
2) will help to get beginners right into OCaml without having to spend hours compiling libraries
<thelema>
it becomes reasonable to depend on others' code - without oasis-db, following a chain of dependencies is just too painful
* thelema
looks forward to both of these, but one step at a time.
<adrien>
same here =)
* thelema
makes a note to look into oasis-db's code to see what can be done.
_andre has quit [Quit: leaving]
kaustuv_ has quit [Remote host closed the connection]
<thelema>
since it's with jane street, I guess I'm going to have to make my peace with sexplib
<thelema>
eep! is oasis-db overengineered, or is it just me?
Snark has quit [Quit: Ex-Chat]
<thelema>
1) name -> uri, name list 2) uri -> tarball 3) tarball installer
<gildor>
thelema: could you be more precise ? The overall design has changed, but I would like to have your opinion
ulfdoz has quit [Ping timeout: 250 seconds]
<gildor>
thelema: where was the broken link on oasis-db darcs repo ?
bzzbzz has joined #ocaml
ftrvxmtrx has joined #ocaml
bzzbzz_ has quit [*.net *.split]
ymasory has quit [*.net *.split]
trigen has quit [*.net *.split]
Asmadeus has quit [Ping timeout: 240 seconds]
sepp2k has quit [Ping timeout: 240 seconds]
clog_ has joined #ocaml
fraggle_ has quit [*.net *.split]
noj has quit [*.net *.split]
ikaros has quit [*.net *.split]
eye-scuzzy has quit [*.net *.split]
vk0 has quit [*.net *.split]
rossberg has quit [*.net *.split]
willb1 has quit [*.net *.split]
sgnb has quit [*.net *.split]
orbitz has quit [*.net *.split]
bacam has quit [*.net *.split]
confound has quit [*.net *.split]
jdavis has quit [*.net *.split]
Lor has quit [*.net *.split]
cods has quit [*.net *.split]
metasyntax has quit [*.net *.split]
ccasin has quit [*.net *.split]
lamawithonel has quit [*.net *.split]
svenl has quit [*.net *.split]
ski has quit [*.net *.split]
mal`` has quit [*.net *.split]
diml has quit [*.net *.split]
bzzbzz has quit [*.net *.split]
mrvn has quit [*.net *.split]
pheredhel has quit [*.net *.split]
kerneis has quit [*.net *.split]
xl0 has quit [*.net *.split]
mlh has quit [*.net *.split]
bzzbzz_ has quit [*.net *.split]
ymasory has quit [*.net *.split]
trigen has quit [*.net *.split]
sepp2k has quit [*.net *.split]
Amorphous has quit [*.net *.split]
Pepe_ has quit [*.net *.split]
gildor has quit [*.net *.split]
Asmadeus has quit [*.net *.split]
Yoric has quit [*.net *.split]
oriba has quit [*.net *.split]
lopex has quit [*.net *.split]
Cyanure has quit [*.net *.split]
avsm2 has quit [*.net *.split]
thelema has quit [*.net *.split]
rien|zzz has quit [*.net *.split]
clog has quit [*.net *.split]
fraggle_ has joined #ocaml
ikaros has joined #ocaml
eye-scuzzy has joined #ocaml
vk0 has joined #ocaml
noj has joined #ocaml
rossberg has joined #ocaml
willb1 has joined #ocaml
confound has joined #ocaml
sgnb has joined #ocaml
orbitz has joined #ocaml
bacam has joined #ocaml
Lor has joined #ocaml
jdavis has joined #ocaml
cods has joined #ocaml
Pepe_ has joined #ocaml
jonafan_ has joined #ocaml
hto_ has quit [Ping timeout: 276 seconds]
hto has joined #ocaml
jonafan has quit [Ping timeout: 276 seconds]
zzz_ has joined #ocaml
tauntaun has joined #ocaml
xl0 has joined #ocaml
kerneis has joined #ocaml
pheredhel has joined #ocaml
mrvn has joined #ocaml
bzzbzz has joined #ocaml
ymasory has joined #ocaml
metasyntax has joined #ocaml
Yoric has joined #ocaml
oriba has joined #ocaml
lopex has joined #ocaml
avsm2 has joined #ocaml
Cyanure has joined #ocaml
ccasin has joined #ocaml
Amorphous has joined #ocaml
diml has joined #ocaml
mal`` has joined #ocaml
ski has joined #ocaml
svenl has joined #ocaml
lamawithonel has joined #ocaml
thelema has joined #ocaml
rien|zzz has joined #ocaml
gildor has joined #ocaml
sepp2k has joined #ocaml
srcerer_ has joined #ocaml
zzz_` has quit [Ping timeout: 276 seconds]
ftrvxmtrx_ has joined #ocaml
Asmadeus has joined #ocaml
emias has quit [Ping timeout: 276 seconds]
ftrvxmtrx has quit [Ping timeout: 276 seconds]
Asmadeus_ has quit [Ping timeout: 276 seconds]
enthymeme has quit [Ping timeout: 276 seconds]
srcerer has quit [Ping timeout: 276 seconds]
joewilliams_away is now known as 5EXAB8WZU
joewilliams_away has joined #ocaml
pantsd_ has joined #ocaml
16SAABGZS has joined #ocaml
seafood has joined #ocaml
thelema_ has joined #ocaml
emias_ has joined #ocaml
<thelema_>
specifically, any reference to inotify, job management, some of the complexity of the accounts and roles on the oasisdb website, rss on this website, most of the details of the file storage spec, disk space management, anything about uscan or automatic detection of new releases, the findlib db, oauth for authenticating to a web API, having a web API in the first place, "synchronizing local file storage and oasis DB file storage through the command line,
gildor_ has joined #ocaml
ftrvxmtrx_ has quit [Ping timeout: 276 seconds]
<thelema_>
gildor_: hmm, I'm guessing you didn't get my messages
<gildor_>
which one thelema
<thelema_>
starting 10 minutes ago
<thelema_>
3 messages
<gildor_>
I got only 2
<gildor_>
the broken link && I was surprised by
<thelema_>
was one of them very long?
<thelema_>
ok, not the long one.
<thelema_>
sent through msg to avoid spamming the channel
<thelema_>
(again)
<gildor_>
I got it
hto is now known as 50UAAA7O0
hto has joined #ocaml
<thelema_>
I agree that many of these things will be useful in the long run, and should be supportable
edwin has quit [Remote host closed the connection]
<thelema_>
but don't find any need to write the initial version of this as if we need to handle 1E6 transactions per second
20QAATNGB has joined #ocaml
<thelema_>
(metaphorically)
<gildor_>
thelema_: I didn't object to send the msg to the channel, if other want to participate
<thelema_>
the message was sent to the channel, right before gildor_ joined
<gildor_>
ah great
<thelema_>
(verified by the IRC logs)
Yoric_ has joined #ocaml
<gildor_>
concerning inotify -> it will be only used to detect upload to the forge and to and upload dir
emias_ has quit [*.net *.split]
50UAAA7O0 has quit [*.net *.split]
fraggle_ has quit [*.net *.split]
noj has quit [*.net *.split]
<gildor_>
I just remove all the other functions around it
rien_ has joined #ocaml
16SAABGZS has quit [*.net *.split]
Amorphous has quit [*.net *.split]
gildor has quit [*.net *.split]
sepp2k has quit [*.net *.split]
Yoric has quit [*.net *.split]
oriba has quit [*.net *.split]
lopex has quit [*.net *.split]
Cyanure has quit [*.net *.split]
avsm2 has quit [*.net *.split]
thelema has quit [*.net *.split]
rien|zzz has quit [*.net *.split]
Yoric_ is now known as Yoric
<thelema_>
an implementation detail, no? I wouldn't say it matters the least (in terms of getting this usable) how to get packages into the database
<gildor_>
oauth -> will be for future version, it was just mentioned as a way to login
<gildor_>
for now this is good old password + login in the URL
lopex has joined #ocaml
<gildor_>
I didn't get the implementation details
<hcarty>
thelema_: Having a spec/plan, however specific or loose, could be handy for external contributions once oasis-db gets rolling
<thelema_>
maybe this is more of a "where we'd like to go" rather than a technical specification
<gildor_>
hcarty: indeed, it is written and will be updated to help people understand what is going on
Oejet has quit [*.net *.split]
5EXAB8WZU has quit [*.net *.split]
pantsd has quit [*.net *.split]
CoryDambach has quit [*.net *.split]
explodus has quit [*.net *.split]
<gildor_>
thelema_: of course, I am free to change this, it was a first thought to present a project
<thelema_>
The central DB could be little more than a web server for static web pages - to look up package "foo", request http://db.o.o/pkg/foo
<gildor_>
thelema_: concerning the role on the website, I am not sure to understand what is your concern
<gildor_>
thelema_: already done ;-)
<thelema_>
that would give you the _oasis file for project foo
<thelema_>
including a URL to download the source tarball
<thelema_>
or if _oasis isn't the right place to put it, some other simple metadata file
noj has joined #ocaml
<gildor_>
don't remember precisely, but this is something like dist/foo/0.1.0/tarball
<thelema_>
the biggest complexity of this is user-mode compiling and installation of programs
<gildor_>
and dist/foo/download/ give you a list of available tarball
<gildor_>
thelema_: humm the install plugin.
Amorphous has joined #ocaml
<thelema_>
okay, so there's a repo structure, great. Next challenge is installing.
ftrvxmtrx_ has joined #ocaml
avsm2 has joined #ocaml
<gildor_>
thelema_: I was in favor of a GODI repository for this
oriba has joined #ocaml
<gildor_>
thelema_: take this more as an experiment
<gildor_>
more oriented toward dev. than end user/beginner
<thelema_>
okay, so do you have code to download all required tarballs, including deps?
<gildor_>
the findlib db is mandatory
Cyanure has joined #ocaml
<gildor_>
because it helps to integrate package that are not _oasis enabled
<gildor_>
you cannot bet on "tomorrow everyone use _oasis"
Asmadeus has quit [Changing host]
Asmadeus has joined #ocaml
pantsd_ has quit [Changing host]
pantsd_ has joined #ocaml
<thelema_>
yes, assume findlib locally.
<gildor_>
thelema_: yes
Amorphous has quit [Changing host]
Amorphous has joined #ocaml
sepp2k has joined #ocaml
<thelema_>
I agree that we can't assume _oasis immediately, but all we need to assume is that there's a script to build+install the package
<gildor_>
thelema_: I have a module that compute dependencies for a given package, just follow the link and download
srcerer_ is now known as srcerer
<gildor_>
(or compute the transitive closure of the graph)
avsm2 has quit [Ping timeout: 240 seconds]
<thelema_>
(or walk the dependency tree)
<thelema_>
how to tell if a dependency is satisfied? findlib?
thelema_ is now known as thelema
ftrvxmtrx_ has quit [Ping timeout: 240 seconds]
<gildor_>
findlib make the link for deps (and its satisfaction)
<hcarty>
gildor_: It's probably safe to require, at least at first, that any dependencies which aren't using oasis be installed through some other means than oasis-db
<gildor_>
the script to build + install should be setup.ml and accept -build and -install
<thelema>
great. so the only missing part of the code is building and installing
<thelema>
and build.ml is expected to do this, okay.
<gildor_>
hcarty: yes, that it is the reason why we can fill the findlib-db using debian/godi packages
<gildor_>
"ocaml setup.ml -build/install" should build a single package
<gildor_>
now you need to order the build
<gildor_>
order the rebuilds (if something change along the rev-dep)
<thelema>
post-order traversal of the dependency tree
<gildor_>
and build what is really needed
<gildor_>
build what is needed = SAT solving in fact
Oejet has joined #ocaml
<gildor_>
using "Flag" section
<thelema>
i.e. need to recheck all dependencies?
<gildor_>
thelema: there is 2 algo
seafood has quit [Quit: seafood]
<gildor_>
thelema: either rebuild every rev-deps
<gildor_>
thelema: or build a rev-deps and check that the rebuild has changed something in the module
<gildor_>
the first one is more simple and safe
<gildor_>
the second is an optimization to avoid rebuilding unaffected package
<thelema>
sure, we can avoid any optimization at this point
<thelema>
why is it sat solving instead of tree traversal?
avsm2 has joined #ocaml
20QAATNGB is now known as emias
<gildor_>
because you can conditionnaly build some libraries
<gildor_>
using flag
<thelema>
flag = optional dependencies?
<gildor_>
Build $: ...
<thelema>
doesn't mean anything to me yet
<gildor_>
thelema: yes, lwt is a good example of that
<gildor_>
many flags to conditionnally build part of the sources
<thelema>
well, eventually, it'd be nice to rebuild packages to take advantage of optional dependencies that have shown up, but that can be separate from the core functionality
<thelema>
s/separate from/in addition to/
<gildor_>
building et all (the install subsystem) is the more complex part of oasis-db
<gildor_>
this will really need the help of the whole community to find something simple and which works
<hcarty>
gildor_: What complex components remain?
<gildor_>
concerning your other points -> role, i don't see why
<thelema>
maybe v0.1 can assume /make/, /sudo make install/ works
<gildor_>
thelema: and the web api is to do some editing on CLI
<hcarty>
Does oasis provide install targets?
<gildor_>
thelema: the syncrhonisation is basically a web cache
<thelema>
gildor_: mirroring is past v0.1
<thelema>
minimum feature set
<gildor_>
thelema: sudo make install -> no, but we will recommend it
<gildor_>
hcarty: yes oasis provide install/uninstall/reinstall
<thelema>
okay, and we also have to add $HOME/.oasis-db to the ocamlfind path, somehow
<hcarty>
gildor_: I agree - anything involving a build + install should be restricted to _oasis packages
<gildor_>
thelema: yes, we should add this to ocamlfind path, but this is not a big deal, because CPAN does the same
<thelema>
okay, so we have the repo structure, we have the dependency solving and package getting and we have the required contents of the tarball. I guess I have to ask hcarty's question: what's missing?
<gildor_>
thelema: and concerning synchronization/web API, in fact the CLI version of oasis will download most of the file into a local cache
Amorphous has quit [Ping timeout: 240 seconds]
<thelema>
gildor_: not needed in v0.1, how is that not an optimization?
<gildor_>
thelema: i.e. a little bit like "apt-get update"
<gildor_>
thelema: at one point when you want to do "oasis install foo", you need to compute the deps of foo
<thelema>
It's definitely useful for providing an aptitude-like interface, but this is not minimal feature set.
<gildor_>
and download them
<thelema>
it can get the deps from the server
<thelema>
get db.o.o/pkg/foo -> discover deps bar, baz -> get db.o.o/pkg/{bar,baz}
<gildor_>
and I don't want to design a web api (involves to describe a high level description of deps)
<thelema>
it's not the prettiest, but think of it as more of a RPC
<gildor_>
and I want to make it works offline
<thelema>
no web api, just requesting simple metadata files
<thelema>
unless you have all the tarballs, no need
<gildor_>
thelema: this is what we call a web API ;-)
<thelema>
I don't think it's a web api if the requests are satisfied with static files.
<hcarty>
thelema: It's a web API, just not a dynamic one...
<gildor_>
web api can serve precomputed static file
<thelema>
bah, stupid web 2.0
<hcarty>
thelema: The static file could be replaced with something dynamic later on if needed
<gildor_>
and honestly -- ocsigen is not yet ready for defining extended web api
<gildor_>
(it will come, but now it is mainly about XHMTL/GET/POST)
<thelema>
don't need ocsigen for this - use ocamlnet, it's got a web server, no?
<thelema>
nethttpd
<gildor_>
matter of taste, I enjoy ocsigen because it is a big higher level than ocamlnet
<gildor_>
there is also zack http server and thomasga derived lwt aware version
<gildor_>
but ocsigen is probably the more advanced
<thelema>
to make this work, it doesn't matter what the http server is - use thttpd for all I care.
<gildor_>
(ok ocamlnet is probably the faster)
SoftTimur has joined #ocaml
<thelema>
I don't want advanced, I want working.
<thelema>
the perfect is the enemy of the good
<gildor_>
so do i
* thelema
checks if he got the quote right
<hcarty>
thelema: ocsigen is a nice community vote of confidence. Not that the same can't be said for ocamlnet...
<thelema>
for v0.1, make it work, then replace components with ocaml pieces.
<thelema>
ok, I got it wrong, it's "Le mieux est l'ennemi du bien."
Yoric has quit [Quit: Yoric]
fraggle_ has joined #ocaml
<gildor_>
thelema: yes I know
<gildor_>
thelema: working hard to make it happens the sooner
<thelema>
agreed - so far there's just a spec for the server side of things and no implementation, right?
<gildor_>
thelema: well the written specification has changed during implementation
<gildor_>
it has been simplified
sepp2k has quit [Quit: Leaving.]
<gildor_>
thelema: if you want to help, you can pre-design a solution for the "bundle" subsystem
<thelema>
if there's predictable urls for packages, we don't even need to get a URL, just dependencies (assuming no client-side caching of the entire dependency graph)
<thelema>
s/graph/tree/
<gildor_>
i.e. start with the oasis deps and try to build a bundle with oasis + its deps + right order of build
* thelema
would build this with any http server, wget and some shell scripts if he could do the recursive dependency handling in bash
<gildor_>
thelema: you can just start with a directory structur representing the storage strucutre
<thelema>
bundle = executable to start the whole process off?
<hcarty>
I admit that I haven't read the oasis-db technical specification yet, but CPAN seems like a good thing to emulate at first
<gildor_>
e.g. $HOME/oasis-db/ocaml-data-notation/0.1.0/tarball
ikaros has quit [Quit: Leave the magic to Houdini]
<gildor_>
e.g. $HOME/oasis-db/ocamlify/0.1.0/tarball
agarwal1975 has joined #ocaml
<SoftTimur>
hello all, is there a function in List to check if a list has any element which appears more than 1 time?
ftrvxmtrx_ has quit [Ping timeout: 276 seconds]
<gildor_>
hcarty: oasis-db is inspired from hackage mostly
jonafan_ is now known as jonafan
<thelema>
SoftTimur: not built in - use List.fold_left and a Set.t to do this.
<hcarty>
gildor_: I suppose I should read up on hackage then :-)
Amorphous has joined #ocaml
<gildor_>
hcarty: we use the same directory structure
<thelema>
gildor_: I'm still not understanding what you mean by bundle. Is there any reason the whole thing can't be bootstrapped by a shell script?
<gildor_>
thelema: it can
<agarwal1975>
SoftTimure: Batteries has List.unique. You can check if the length changes.
<gildor_>
the bundle is when you want to distribute a program that build depends on many packages
<hcarty>
gildor_: From the sound of it, the oasis-db client doesn't require anything from the server other than a fixed set of files, correct?
<gildor_>
e.g. oasis that build depends on many packages
<thelema>
gildor_: eh? you mean bundling a program with all its dependencies into a single tarball?
<gildor_>
rather than saying "go use oasis install XXX YYY"
<gildor_>
you create a bundle that contains the required deps and build in order
<gildor_>
thelema: yes
<thelema>
on the server this bundle is created?
<gildor_>
thelema: can be very useful for e.g. mldonkey, unison
<thelema>
and the purpose of this bundling is to ... save HTTP requests?
<gildor_>
no it is to create bundle
<hcarty>
thelema: It could be very useful for deploying to a server, or distribution to users
<thelema>
or for offline (without oasis-db) installation?
<gildor_>
this is just a use of osais-db to create something
<hcarty>
thelema: Avoid the need for an oasis-db client for end-users
<gildor_>
the cache scheme (sycnrhonizing) will be able to fetch all the required elements from oasis-db locally to work offline
<thelema>
I see where you're going, and find it a great exercise to get a whole lot of the necessary code for the oasis-db by doing this bundling thing
<gildor_>
hcarty: excatly, the bundle will just get rid of oasis-db and allow a simple build/install cycle
<thelema>
but if it's not too unreasonable to assume people have internet connections and that HTTP requests are cheap, why not just use that to do this:
<thelema>
for oasis-db to work, the code gets rehosted on db.o.o, no?
<gildor_>
on oasis.o.o in fact
agarwal1975 has quit [Quit: agarwal1975]
<thelema>
sure.
ftrvxmtrx_ has joined #ocaml
<thelema>
so what's the problem with ocaml websites disappearing (other than oasis.o.o disappearing)?
<gildor_>
cocan ? ocaml-tutorial ?
<thelema>
I agree you could end up with a big bandwidth bill is a million people download mldonkey and all its deps
<thelema>
if this works, it'll be mirrorable, and a mirror system would be easy to create (just copy a bunch of static files)
<gildor_>
thelema: I want to design oasis-db from the ground, with the idea that anyone can make backup of it
<thelema>
making bundles works against this goal, no?
<gildor_>
thelema: the bundle thing is something different
<gildor_>
thelema: it is to create a self-contained env
<gildor_>
thelema: it is very useful when you want to reproduce bugs
<thelema>
sure, but if o-db works well, bundles aren't needed.
<gildor_>
thelema: we call it a configuration (but maybe it is a french word)
<gildor_>
thelema: I cannot assume oasis-db will work well
<thelema>
then we're already failing
<hcarty>
thelema: Bundles and mirroring sound orthogonal to me
<gildor_>
thelema: I should keep in mind that I can go on holiday ;-)
<gildor_>
hcarty: it is indeed almost orthogonal
<thelema>
gildor_: let me know if I reach your annoyance threshold - I might be a bit too abrasive at the moment
<hcarty>
thelema: Bundles - one shot, for one package; Mirroring - oasis.o.o vs oasis.janest.com
<gildor_>
thelema: no we are not failing, we should design something that could fail
<hcarty>
If I understand correctly...
<thelema>
hcarty: if we have successful bundles, noone will need network oasis
<gildor_>
hcarty: well it can even be mirrored to your computer
<thelema>
authors will build bundles of their code and distribute the bundles
<hcarty>
thelema: Bundles would be for specific cases - packaging to distribute a final application for example
<gildor_>
thelema: if we have successful bundle no unison/mldonkey user should hear about oasis
<hcarty>
thelema: Network oasis gives you the CPAN/hackage experience
<gildor_>
thelema: but dev. who want a library will work with oasis (to publish his work and get the work of other)
<thelema>
gildor_: if oasis-db works well, one line installs (like the perl magic above) seem to be as good
<hcarty>
If you don't have network oasis-db, it's harder to mix versions of libraries as they come out. If you don't have bundles, it's harder to get snapshots.
<gildor_>
thelema: annoyance level -> no, but I wake up early tomorrow, so I'll probably go to bed soon
<thelema>
ah, bundles somehow substitute for binaries.
<gildor_>
thelema: bundle is a helper to hide all the external library a final application use
<hcarty>
I would presume that, eventually -- val build : ocaml -> oasis-db-bundle -> binary
<gildor_>
thelema: bundle is a helper to hide all the external librarIES a final application use
<thelema>
yes, and I agree that solving the dependency problem is a good thing for end users. I just think that solving it through bundles will take away from ocaml-db
<SoftTimur>
guys, do you know the difference bewteen Atom.AtomSet et Atom.AtomMap ?
<gildor_>
thelema: people that are the target of bundles are not the one who care about OCaml at large
<SoftTimur>
et => and
<hcarty>
thelema: I disagree somewhat. It makes it safer to put new version of libraries up, while being able to take stable snapshots along the way
<thelema>
gildor_: if you don't mind, I'll spend some time on oasis-db and not so much on bundles (because one helps me and the other doesn't)
<gildor_>
SoftTimur: this is an alphaCaml question, isn't it ?
coucou747 has joined #ocaml
<SoftTimur>
gildor_: yes, it is
<thelema>
hcarty: the solution to that is testing, lots
<hcarty>
thelema: But you can't test against an unknown user's code
<gildor_>
SoftTimur: I am not sure hcarty, me and thelema knows a lot about alphaCaml
<thelema>
hcarty: at least, that seems to be the accepted solution for CPAN and others
<SoftTimur>
gildor_: well, but they look quite busy at the moment...
<thelema>
SoftTimur: Set is a collection of things, Map is a set of keys where each key also holds a value with it.
<hcarty>
thelema: Version to version breakage is a large part of why I would love to see version handling in ocamlfind.
<thelema>
gildor_: I've looked at Atom and it seems to have nice set and map libraries (I plan on implementing some of their map and set functions in batteries)
<SoftTimur>
thelema: do you know how to compare a value of AtomSet.t and AtomMap.key ?
* gildor_
go to bed
<thelema>
SoftTimur: can't directly compare them
<thelema>
gildor_: good night
<gildor_>
thelema, hcarty: thx for the discussion, drop me an email/bugs/patches if you have other ideas
<hcarty>
gildor_: Thank you for your work on all of this!
<hcarty>
gildor_: Good night
mlh has joined #ocaml
* thelema
might have to use some of batteries' web space to do what he's planning
<hcarty>
thelema: To do some oasis-db-like work?
<thelema>
yes, to just mockup my idea
<thelema>
the simplest possible thing that could work.
<thelema>
requesting pkg/foo/dep gives the dependencies on one line, space separated
<hcarty>
thelema: META files have all of the information required for dependency calculation between OCaml packages
<thelema>
then the dep files can be extracted from META files
<thelema>
requesting pkg/foo/tarball gives the tarball for that package
<hcarty>
With a fixed directory hierarchy, findlib + OCaml's libcurl bindings should be enough for something which is static on the web side
<thelema>
a little recursion gets all the needed tarballs
<thelema>
building and installing requires the tarballs to contain install programs
<SoftTimur>
do yo think it is possible to compare a value of Atom.atom and a value of Atom.AtomSet.t ?
<hcarty>
thelema: Assuming "make" and "make install" do the right thing is probably reasonable for a STTCPW
<hcarty>
Simplest Thing That Could Possibly Work... or is it s/That/Which/...
<thelema>
google says the first is right
<thelema>
I think I'll go with make / make install
<hcarty>
Reading about the history of CPAN, I believe that's how it started. Static FTP on the server side and some basic organizational assumptions by the client.
<thelema>
FTP? well, that's good and old school
<gildor_>
hcarty, thelema: there is already a graph of deps in oasis
<thelema>
gildor_: where?
<hcarty>
CPAN is good and old school :-)
<hcarty>
libcurl abstracts the protocol away rather nicely
<thelema>
yes, it grew a bit ugly over the years, I'm happy that cpanminus has come along