-
Notifications
You must be signed in to change notification settings - Fork 452
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
use ocaml modern build system #16
Conversation
Thanks for this. But does it work on all platforms? Last time I looked, Opam and Windows was not quite the loving couple. Has that changed? |
@rossberg-chromium opam is the package repo for OCaml; oasis is a build system, which can specify any number of build tools (we can also use a tool in the future like Here is a link to the github mirror: https://github.com/ocaml/oasis |
Cool or not, unless this does something useful for us, I don't think we should merge it. Just complicates the prototype. Is it solving an immediate (or nearly immediate, pressing, urgent) problem? Our requirements may change later in a way that makes this a bad choice, so that will be pretty awkward if we don't get anything out of it. Also: |
@kg: precisely because requirements may change later is why you have an extensible build system. Otherwise you're manually editing Makefiles, which maybe common in C-land, but seems strange to me when you have all this done automatically. This seems maybe a common mistake for someone who doesn't hack with OCaml very often. The current PR leaves the Makefile as is, and it can still be built in that manner. It doesn't "complicate" the prototype in anyway, and I'm not even sure what this means. As for solving a problem, extensible build systems are universally considered to be good, it's considered best practice in OCaml circles, and to be building in the src directory is unusual, and seems sloppy. In any event, to not merge seems entirely arbitrary. Moreover, there seems to be some confusion with opam and oasis. If you took the time to read the tutorial, you'd have noted that Lastly, about windows, from the oasis mirror:
Please read comments before responding hastily. |
for WebAssembly | ||
Description: It is written for clarity and simplicity, not speed (although it should be reasonably fast). Hopefully, it can be useful as a playground for trying out ideas and a device for nailing down the exact semantics. For that purpose, the code is written in a fairly declarative, "speccy" way. | ||
Authors: WebAssembly Authors | ||
License: Apache-2.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am assuming license stated here is for WebAssembly? Is it Apache 2?
Our build isn't very complicated (and I don't see it going that way any time soon), so I'm inclined to agree that this seems like a big hammer for a problem we don't have. Also, does this work for lex/yacc too? I couldn't find the build commands for them in the PR. |
@m4b, please calm down, getting snarky isn't constructive. I'd be fine with supporting Oasis, but we don't want to make it a requirement. Especially when it introduces extra dependencies, e.g. on findlib. Adding more layers of tooling always adds new and more opaque failure modes as well. Admittedly, I'm also not thrilled about dumping half a dozen more files in the root directory. At a minimum, both the README and the INSTALL file would need to be written such that they enumerate using Oasis as an alternative, not make it look like a necessity. For hygiene, it would also be preferable if most of the auxiliary files could go to a dedicated oasis subdirectory. |
You just type:
in the All it does is call: If you want tests:
As for license, I just added what is in the @rossberg-chromium
I'm calm, thanks. Sorry if I came off snarky, I just didn't appreciate being told that this won't work on windows when the time wasn't taken to check whether this was true or not, which seems less constructive and a waste of everyone's time, because here we are still talking about it. But we're done now so it's all ok. I definitely agree about not being a requirement, hence I left the Makefile intact in the Other points:
That being said, if there is unanimous desire to not add an extra OCaml friendly build system which does not interfere in any way with the current system, which honestly, I'd find utterly baffling, then I suppose that's all there is to it, and no hard feelings :) I just thought I'd add a feature which I and many others have found extremely useful, but if this is just throwaway code (which would be sad) then we needn't bother. |
Ideally, we would have a Makefile which you can tell what approach to use
So, I'd be willing to include Oasis support into the repo if (1) it is not WDYT? /Andreas |
Sorry for the delay! So I messed around with getting oasis to build correct build files using a relative, non-standard directory, and didn't try much harder, since it's a manufactured problem, and to steal a term from Jean-Yves Girard, I'm not really interested in the bureaucracy of an invented build system syntax problem. Nevertheless, I think an easy compromise is to revert to the simple case where the That way: (1) there are no cluttering files If this is acceptable, I'll repush these changes. |
Sounds good to me, thanks! On 25 August 2015 at 21:08, m4b [email protected] wrote:
|
…optional nature of oasis
Add syntax highlighting
Describe correct tail call behavior across modules
Merge with WebAssembly/spec, WebAssembly/function-references, and WebAssembly/gc
This to reflect consensus reached in WebAssembly/memory64#3 See in particular WebAssembly/memory64#3 (comment)
This PR sets up the project to use the oasis build system, which is a modern, extensible build system for OCaml. As this project becomes larger, it will become a necessity.
A quick survey is here: https://ocaml.org/learn/tutorials/setting_up_with_oasis.html
A basic .merlin file was added as well, for info on how to use, setup: https://github.com/the-lambda-church/merlin/wiki
Changes:
make test