{"action":"closed","number":78,"pull_request":{"url":"https://api.github.com/repos/links-lang/links/pulls/78","id":87711892,"html_url":"https://github.com/links-lang/links/pull/78","diff_url":"https://github.com/links-lang/links/pull/78.diff","patch_url":"https://github.com/links-lang/links/pull/78.patch","issue_url":"https://api.github.com/repos/links-lang/links/issues/78","number":78,"state":"closed","locked":false,"title":"Oasis build system","user":{"login":"jstolarek","id":1597921,"avatar_url":"https://avatars.githubusercontent.com/u/1597921?v=3","gravatar_id":"","url":"https://api.github.com/users/jstolarek","html_url":"https://github.com/jstolarek","followers_url":"https://api.github.com/users/jstolarek/followers","following_url":"https://api.github.com/users/jstolarek/following{/other_user}","gists_url":"https://api.github.com/users/jstolarek/gists{/gist_id}","starred_url":"https://api.github.com/users/jstolarek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jstolarek/subscriptions","organizations_url":"https://api.github.com/users/jstolarek/orgs","repos_url":"https://api.github.com/users/jstolarek/repos","events_url":"https://api.github.com/users/jstolarek/events{/privacy}","received_events_url":"https://api.github.com/users/jstolarek/received_events","type":"User","site_admin":false},"body":"Here's a preliminary patch replacing OCamlMake build system with Oasis (#62). Big thanks go to Gabriel Radanne for his help. Please review this patch but don't merge yet.\n\nWhat we get with Oasis:\n- no need to specify dependencies manually. All the modules still need to be listed but this can be done in any order (I suggest sticking to alphabetic order)\n- all build artefacts are placed in `_build` directory and no longer clutter the directory with source files\n- Oasis conveniently generates `configure` and `Makefile`, so now we build things like `./configure --enable-postgresql --enable-tests --enable-docs && make && make docs && make test`\n- it also seems that we can maintain parallel builds. This can be controlled with `THREADS` environment variable. By default parallel build is on.\n\nWhat changes in our workflow:\n- As developers we need to have `oasis` package installed. Oasis generates several files (`setup.ml`, `configure`, `Makefile`). These files are stored inside the repo, which means that end users should not need oasis to install Links. At first I was worried about stroging automatically generated files in the repository but I believe these files will hardly ever change. I think adding new flags and sections to `_oasis` file will change `configure` script and that's it. From now on we use `configure`/`make` routine.\n\nQuestions\n- I have removed removed `deriving` directory along with executable inside it. Things seem to magically work nevertheless. Can someone more knowledgeable than me verify that this is indeed OK?\n# TODO\n- [ ] parametrize test script on the generated executable name. This solves the problem that oasis generates file named `links.native` rather than `links`. This can be done in `_oasis` file with `Command: testing_script $links_executable`, where `$links_executable` is executable section name\n- [x] I was unable to recover some setting present in the original `Makefile`. One that worries me the most is `OCAMLFLAGS=-dtypes -w Ae-44-45 -g -cclib -lunix`. I will keep working on this. **EDIT:** fix this in `_tags` file - see comments below\n- [ ] Each database backend needs to be in its separate directory. We should think what this directory should be. I will strongly insist on putting all source file in a separate directory once all large branches (like application server) are merged. I suggest to put all source files in `src` and backends on `src/drivers/`. At the moment they are in `lib`, per Gabriel's patch. I guess it is best to take a look at other OCaml projects and see whether they tend to store their library source files in `src` or `lib`\n- [ ] All of this needs to be documented on the wiki. I will write the documentation once I get an 'OK' to merge this change.\n- [ ] Documentation sections of `_oasis` file need tweaking before we make a release. We need to specify which files should be installed and where. Related to #61.\n- [ ] We should decide on a default backend and enable it. Currently all backends are disabled. Related to #76.\n","created_at":"2016-10-03T12:59:33Z","updated_at":"2016-12-01T14:03:39Z","closed_at":"2016-12-01T14:03:39Z","merged_at":null,"merge_commit_sha":"5399ae708105aea1bbe60c259351b0f43b32eefc","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/links-lang/links/pulls/78/commits","review_comments_url":"https://api.github.com/repos/links-lang/links/pulls/78/comments","review_comment_url":"https://api.github.com/repos/links-lang/links/pulls/comments{/number}","comments_url":"https://api.github.com/repos/links-lang/links/issues/78/comments","statuses_url":"https://api.github.com/repos/links-lang/links/statuses/bb6887dbedfe45185a8ad60544694943a7e041e6","head":{"label":"links-lang:js-T62-oasis-build-system","ref":"js-T62-oasis-build-system","sha":"bb6887dbedfe45185a8ad60544694943a7e041e6","user":{"login":"links-lang","id":9572894,"avatar_url":"https://avatars.githubusercontent.com/u/9572894?v=3","gravatar_id":"","url":"https://api.github.com/users/links-lang","html_url":"https://github.com/links-lang","followers_url":"https://api.github.com/users/links-lang/followers","following_url":"https://api.github.com/users/links-lang/following{/other_user}","gists_url":"https://api.github.com/users/links-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/links-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/links-lang/subscriptions","organizations_url":"https://api.github.com/users/links-lang/orgs","repos_url":"https://api.github.com/users/links-lang/repos","events_url":"https://api.github.com/users/links-lang/events{/privacy}","received_events_url":"https://api.github.com/users/links-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":16219137,"name":"links","full_name":"links-lang/links","owner":{"login":"links-lang","id":9572894,"avatar_url":"https://avatars.githubusercontent.com/u/9572894?v=3","gravatar_id":"","url":"https://api.github.com/users/links-lang","html_url":"https://github.com/links-lang","followers_url":"https://api.github.com/users/links-lang/followers","following_url":"https://api.github.com/users/links-lang/following{/other_user}","gists_url":"https://api.github.com/users/links-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/links-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/links-lang/subscriptions","organizations_url":"https://api.github.com/users/links-lang/orgs","repos_url":"https://api.github.com/users/links-lang/repos","events_url":"https://api.github.com/users/links-lang/events{/privacy}","received_events_url":"https://api.github.com/users/links-lang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/links-lang/links","description":"Links","fork":false,"url":"https://api.github.com/repos/links-lang/links","forks_url":"https://api.github.com/repos/links-lang/links/forks","keys_url":"https://api.github.com/repos/links-lang/links/keys{/key_id}","collaborators_url":"https://api.github.com/repos/links-lang/links/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/links-lang/links/teams","hooks_url":"https://api.github.com/repos/links-lang/links/hooks","issue_events_url":"https://api.github.com/repos/links-lang/links/issues/events{/number}","events_url":"https://api.github.com/repos/links-lang/links/events","assignees_url":"https://api.github.com/repos/links-lang/links/assignees{/user}","branches_url":"https://api.github.com/repos/links-lang/links/branches{/branch}","tags_url":"https://api.github.com/repos/links-lang/links/tags","blobs_url":"https://api.github.com/repos/links-lang/links/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/links-lang/links/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/links-lang/links/git/refs{/sha}","trees_url":"https://api.github.com/repos/links-lang/links/git/trees{/sha}","statuses_url":"https://api.github.com/repos/links-lang/links/statuses/{sha}","languages_url":"https://api.github.com/repos/links-lang/links/languages","stargazers_url":"https://api.github.com/repos/links-lang/links/stargazers","contributors_url":"https://api.github.com/repos/links-lang/links/contributors","subscribers_url":"https://api.github.com/repos/links-lang/links/subscribers","subscription_url":"https://api.github.com/repos/links-lang/links/subscription","commits_url":"https://api.github.com/repos/links-lang/links/commits{/sha}","git_commits_url":"https://api.github.com/repos/links-lang/links/git/commits{/sha}","comments_url":"https://api.github.com/repos/links-lang/links/comments{/number}","issue_comment_url":"https://api.github.com/repos/links-lang/links/issues/comments{/number}","contents_url":"https://api.github.com/repos/links-lang/links/contents/{+path}","compare_url":"https://api.github.com/repos/links-lang/links/compare/{base}...{head}","merges_url":"https://api.github.com/repos/links-lang/links/merges","archive_url":"https://api.github.com/repos/links-lang/links/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/links-lang/links/downloads","issues_url":"https://api.github.com/repos/links-lang/links/issues{/number}","pulls_url":"https://api.github.com/repos/links-lang/links/pulls{/number}","milestones_url":"https://api.github.com/repos/links-lang/links/milestones{/number}","notifications_url":"https://api.github.com/repos/links-lang/links/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/links-lang/links/labels{/name}","releases_url":"https://api.github.com/repos/links-lang/links/releases{/id}","deployments_url":"https://api.github.com/repos/links-lang/links/deployments","created_at":"2014-01-24T22:40:35Z","updated_at":"2016-10-24T14:43:32Z","pushed_at":"2016-12-01T11:14:36Z","git_url":"git://github.com/links-lang/links.git","ssh_url":"git@github.com:links-lang/links.git","clone_url":"https://github.com/links-lang/links.git","svn_url":"https://github.com/links-lang/links","homepage":null,"size":20819,"stargazers_count":45,"watchers_count":45,"language":"OCaml","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":43,"forks":9,"open_issues":43,"watchers":45,"default_branch":"sessions"}},"base":{"label":"links-lang:sessions","ref":"sessions","sha":"060fd0278d664846954693799692ab64e2a17bd1","user":{"login":"links-lang","id":9572894,"avatar_url":"https://avatars.githubusercontent.com/u/9572894?v=3","gravatar_id":"","url":"https://api.github.com/users/links-lang","html_url":"https://github.com/links-lang","followers_url":"https://api.github.com/users/links-lang/followers","following_url":"https://api.github.com/users/links-lang/following{/other_user}","gists_url":"https://api.github.com/users/links-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/links-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/links-lang/subscriptions","organizations_url":"https://api.github.com/users/links-lang/orgs","repos_url":"https://api.github.com/users/links-lang/repos","events_url":"https://api.github.com/users/links-lang/events{/privacy}","received_events_url":"https://api.github.com/users/links-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":16219137,"name":"links","full_name":"links-lang/links","owner":{"login":"links-lang","id":9572894,"avatar_url":"https://avatars.githubusercontent.com/u/9572894?v=3","gravatar_id":"","url":"https://api.github.com/users/links-lang","html_url":"https://github.com/links-lang","followers_url":"https://api.github.com/users/links-lang/followers","following_url":"https://api.github.com/users/links-lang/following{/other_user}","gists_url":"https://api.github.com/users/links-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/links-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/links-lang/subscriptions","organizations_url":"https://api.github.com/users/links-lang/orgs","repos_url":"https://api.github.com/users/links-lang/repos","events_url":"https://api.github.com/users/links-lang/events{/privacy}","received_events_url":"https://api.github.com/users/links-lang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/links-lang/links","description":"Links","fork":false,"url":"https://api.github.com/repos/links-lang/links","forks_url":"https://api.github.com/repos/links-lang/links/forks","keys_url":"https://api.github.com/repos/links-lang/links/keys{/key_id}","collaborators_url":"https://api.github.com/repos/links-lang/links/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/links-lang/links/teams","hooks_url":"https://api.github.com/repos/links-lang/links/hooks","issue_events_url":"https://api.github.com/repos/links-lang/links/issues/events{/number}","events_url":"https://api.github.com/repos/links-lang/links/events","assignees_url":"https://api.github.com/repos/links-lang/links/assignees{/user}","branches_url":"https://api.github.com/repos/links-lang/links/branches{/branch}","tags_url":"https://api.github.com/repos/links-lang/links/tags","blobs_url":"https://api.github.com/repos/links-lang/links/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/links-lang/links/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/links-lang/links/git/refs{/sha}","trees_url":"https://api.github.com/repos/links-lang/links/git/trees{/sha}","statuses_url":"https://api.github.com/repos/links-lang/links/statuses/{sha}","languages_url":"https://api.github.com/repos/links-lang/links/languages","stargazers_url":"https://api.github.com/repos/links-lang/links/stargazers","contributors_url":"https://api.github.com/repos/links-lang/links/contributors","subscribers_url":"https://api.github.com/repos/links-lang/links/subscribers","subscription_url":"https://api.github.com/repos/links-lang/links/subscription","commits_url":"https://api.github.com/repos/links-lang/links/commits{/sha}","git_commits_url":"https://api.github.com/repos/links-lang/links/git/commits{/sha}","comments_url":"https://api.github.com/repos/links-lang/links/comments{/number}","issue_comment_url":"https://api.github.com/repos/links-lang/links/issues/comments{/number}","contents_url":"https://api.github.com/repos/links-lang/links/contents/{+path}","compare_url":"https://api.github.com/repos/links-lang/links/compare/{base}...{head}","merges_url":"https://api.github.com/repos/links-lang/links/merges","archive_url":"https://api.github.com/repos/links-lang/links/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/links-lang/links/downloads","issues_url":"https://api.github.com/repos/links-lang/links/issues{/number}","pulls_url":"https://api.github.com/repos/links-lang/links/pulls{/number}","milestones_url":"https://api.github.com/repos/links-lang/links/milestones{/number}","notifications_url":"https://api.github.com/repos/links-lang/links/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/links-lang/links/labels{/name}","releases_url":"https://api.github.com/repos/links-lang/links/releases{/id}","deployments_url":"https://api.github.com/repos/links-lang/links/deployments","created_at":"2014-01-24T22:40:35Z","updated_at":"2016-10-24T14:43:32Z","pushed_at":"2016-12-01T11:14:36Z","git_url":"git://github.com/links-lang/links.git","ssh_url":"git@github.com:links-lang/links.git","clone_url":"https://github.com/links-lang/links.git","svn_url":"https://github.com/links-lang/links","homepage":null,"size":20819,"stargazers_count":45,"watchers_count":45,"language":"OCaml","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9,"mirror_url":null,"open_issues_count":43,"forks":9,"open_issues":43,"watchers":45,"default_branch":"sessions"}},"_links":{"self":{"href":"https://api.github.com/repos/links-lang/links/pulls/78"},"html":{"href":"https://github.com/links-lang/links/pull/78"},"issue":{"href":"https://api.github.com/repos/links-lang/links/issues/78"},"comments":{"href":"https://api.github.com/repos/links-lang/links/issues/78/comments"},"review_comments":{"href":"https://api.github.com/repos/links-lang/links/pulls/78/comments"},"review_comment":{"href":"https://api.github.com/repos/links-lang/links/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/links-lang/links/pulls/78/commits"},"statuses":{"href":"https://api.github.com/repos/links-lang/links/statuses/bb6887dbedfe45185a8ad60544694943a7e041e6"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":6,"review_comments":0,"commits":24,"additions":748,"deletions":8578,"changed_files":25}}
{"actor":{"display_login":"jamescheney"}}