{"action":"created","issue":{"url":"https://api.github.com/repos/galaxyproject/docker-build/issues/15","labels_url":"https://api.github.com/repos/galaxyproject/docker-build/issues/15/labels{/name}","comments_url":"https://api.github.com/repos/galaxyproject/docker-build/issues/15/comments","events_url":"https://api.github.com/repos/galaxyproject/docker-build/issues/15/events","html_url":"https://github.com/galaxyproject/docker-build/pull/15","id":70222501,"number":15,"title":"V2","user":{"login":"erasche","id":458683,"avatar_url":"https://avatars.githubusercontent.com/u/458683?v=3","gravatar_id":"","url":"https://api.github.com/users/erasche","html_url":"https://github.com/erasche","followers_url":"https://api.github.com/users/erasche/followers","following_url":"https://api.github.com/users/erasche/following{/other_user}","gists_url":"https://api.github.com/users/erasche/gists{/gist_id}","starred_url":"https://api.github.com/users/erasche/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erasche/subscriptions","organizations_url":"https://api.github.com/users/erasche/orgs","repos_url":"https://api.github.com/users/erasche/repos","events_url":"https://api.github.com/users/erasche/events{/privacy}","received_events_url":"https://api.github.com/users/erasche/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":12,"created_at":"2015-04-22T20:06:07Z","updated_at":"2015-04-27T17:14:06Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/galaxyproject/docker-build/pulls/15","html_url":"https://github.com/galaxyproject/docker-build/pull/15","diff_url":"https://github.com/galaxyproject/docker-build/pull/15.diff","patch_url":"https://github.com/galaxyproject/docker-build/pull/15.patch"},"body":"I recognise that this is a huge PR, so please take your time to review and comment. :)\r\n\r\n- chado build added (mostly for my purposes/GMOD's)\r\n- new folder layout, `<package>/<version>`, where the version is usually 'default' for the base recipe, and then subsequent/specific versions of recipes will be added in their own folders.\r\n  - this is done in concert with the `check-for-updates.py` script which should automatically update certain pieces of software.\r\n- v2 features a `.yaml` format image/build metadata.\r\n  - see chado's, as it uses 100% of the spec.\r\n  - image metadata is stored in the 'meta' section. At runtime these are available in the environment, except augmented by any command line parameters changing image/version, and with the package based on the folder\r\n  - environment variables can further be specified in their own `ENV` section (probably overkill, but logically separate from `meta`)\r\n  - `prebuild` are commands that will occur in the Dockerfile, allowing you to extract all of the packages/dependencies into that section. The `packages` key is a text field of packages, while the `commands` section allows you to specify a list of commands to run. Useful for things like `cpan`ing perl dependencies.\r\n  - The `build` section concerns itself with things occurring during the build phase.\r\n    - `urls` are a list of urls to download via wget (`wget`, `ca-certificates` (so `--no-check-cerfificate` isn't needed), and `build-essential` are provided by default). \r\n    - `commands` are a list of commands to execute. They start execution from the `/build/` directory. Downloaded archives are *not* extracted for you (wanted in select cases, e.g. atlas).\r\n\r\nThis probably shouldn't be merged as-is, as there are some packages that fail to build/aren't function. E.g. bcftools removed version 1.0 from their github, so I was forced to update to 1.2. Atlas has some build issues but those are beyond my knowledge. All packages that people added should be manually built once just to verify :)"},"comment":{"url":"https://api.github.com/repos/galaxyproject/docker-build/issues/comments/96744093","html_url":"https://github.com/galaxyproject/docker-build/pull/15#issuecomment-96744093","issue_url":"https://api.github.com/repos/galaxyproject/docker-build/issues/15","id":96744093,"user":{"login":"natefoo","id":286969,"avatar_url":"https://avatars.githubusercontent.com/u/286969?v=3","gravatar_id":"","url":"https://api.github.com/users/natefoo","html_url":"https://github.com/natefoo","followers_url":"https://api.github.com/users/natefoo/followers","following_url":"https://api.github.com/users/natefoo/following{/other_user}","gists_url":"https://api.github.com/users/natefoo/gists{/gist_id}","starred_url":"https://api.github.com/users/natefoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/natefoo/subscriptions","organizations_url":"https://api.github.com/users/natefoo/orgs","repos_url":"https://api.github.com/users/natefoo/repos","events_url":"https://api.github.com/users/natefoo/events{/privacy}","received_events_url":"https://api.github.com/users/natefoo/received_events","type":"User","site_admin":false},"created_at":"2015-04-27T17:14:06Z","updated_at":"2015-04-27T17:14:06Z","body":"You both make really great points and I am not sure that I fall resoundingly on either side, but I do lean more to the structured approach since I, like @erasche, prefer to write a generalized data structure that generates the more specific stuff. That said, I don't think we need to make this easily portable to anything other than docker. I don't want to spend a lot of time writing something portable - my only goal here is to build build binaries for Galaxy as quickly as possible - and see https://github.com/galaxyproject/docker-build/blob/master/nginx/build-upload.sh as an example of where this could be very difficult to do in yaml (granted, this is not a tool dependency).\r\n\r\nThe scope is creeping and if it limits us being able to do the core task of what we want to accomplish, then that's not so fantastic. I suppose I'm not clear on how caching of steps could be achieved easily before, though."}}