tarides / dune-release Goto Github PK
View Code? Open in Web Editor NEWStreamlining the release of dune packages to opam
License: ISC License
Streamlining the release of dune packages to opam
License: ISC License
dune-release worked wonderfully for me until the step where it was supposed to make a PR:
dune-release: [ERROR] Could not find html_url id in response:
HTTP/1.1 422 Unprocessable Entity
Server: GitHub.com
Date: Sun, 15 Jul 2018 07:36:29 GMT
Content-Type: application/json;
charset=utf-8
Content-Length: 235
Status: 422 Unprocessable Entity
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4939
X-RateLimit-Reset: 1531640970
X-OAuth-Scopes: public_repo
X-Accepted-OAuth-Scopes:
X-GitHub-Media-Type: github.v3;
format=json
Access-Control-Expose-Headers: ETag, Link, Retry-After,
X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
X-RateLimit-Reset, X-OAuth-Scopes,
X-Accepted-OAuth-Scopes,
X-Poll-Interval
Access-Control-Allow-Origin:
*
Strict-Transport-Security: max-age=31536000;
includeSubdomains; preload
X-Frame-Options: deny
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Referrer-Policy: origin-when-cross-origin,
strict-origin-when-cross-origin
Content-Security-Policy: default-src
'none'
X-Runtime-rack: 0.117253
X-GitHub-Request-Id:
A73A:645B:143FA6A:293F059:5B4AF97C
{
"message": "Validation Failed",
"errors": [
{
"resource": "PullRequest",
"field": "head",
"code": "invalid"
}
],
"documentation_url":
"https://developer.github.com/v3/pulls/#create-a-pull-request"
}
.
The automatic name detection fails to work for repos like https://github.com/ocaml/obi that do not have a common-short-prefix.
For these, having some convention for metadata (descr) in the repo would be handy, so that we don't need to specify a CLI flag all the time.
If my opam file already contains a version field, dune-release distrib
adds a new version field but doesn't remove the old one:
version: "9da0fd9"
opam-version: "1.2"
version: "dev"
...
Step to reproduce:
$ git clone https://github.com/janestreet/spawn.git
$ cd spawn
$ dune-release distrib
[...]
<failure because jbuilder picks up the wrong workspace root>
I think all the calls to jbuilder should have -p <package>
to make sure they are reproducible, i.e.:
The following is part of the verbose error message I get when trying to publish a distribution with the latest dune-release
version 1.01
:
dune-release: [EXEC:59307] ['curl' '-s' '-S' '-K' '-' '-D' '-' '--data'
'{ "tag_name" : "1.23.0", "body" : "CHANGES:\n\n* Switched to dune and dune-release\n" }'
'https://api.github.com/repos/gsl-ocaml/releases/releases']
dune-release: [ERROR] Could not find release id in response:
HTTP/1.1 404 Not Found
I assume the URL for obtaining release information should read instead as follows:
https://api.github.com/repos/mmottl/gsl-ocaml/releases
Hi,
Thanks for dune-release
, it's useful to release things with dune :)
I just noticed a frustrating point : if the descr
file is missing, or if somehow the description can not be extracted from README.md
, dune-release
will fail when when doing dune-release opam pkg
. It'd be nice if it could be caught before tagging the release, for example at dune-release lint
time.
Thanks!
It works with all the other commands, however the opam submit
one seems to fail:
$ dune-release opam submit --keep-v
Submitting _build/base.v0.11.1
From https://github.com/ocaml/opam-repository
* branch master -> FETCH_HEAD
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 7263 commits.
(use "git push" to publish your local commits)
Deleted branch release-base-v0.11.1 (was 4ff1e331c).
dune-release: [ERROR] /usr/local/home/jdimino/base/_build/base.0.11.1 does
not exist, did you run:
dune-release opam pkg -n base
I tried passing --dist-version=v0.11.1
but it stills fails with the same error.
Same request as dbuenzli/topkg#122. Either never dropping it or allowing to not drop it would be fine. Currently we can't use dune-release with Jane Street packages because of this behavior.
The package lpd declares a subpackage lpd.socket and this makes dune-release publish
fail with
odoc _doc/_odoc/pkg/lpd/page-index.odoc
File "../../../_mlds/lpd/index.mld", line 3, characters 0-22:
only one title-level heading is allowed
File "../../../_mlds/lpd/index.mld", line 3, characters 0-22:
'1': bad section level (2-4 allowed)
dune-release: [ERROR] No package delegate found. Try `dune-release help
delegate` for more information.
because index.mld
content is
{1 Library lpd}
The entry point of this library is the module:
{!module-Lpd}.
{1 Library lpd.socket}
The entry point of this library is the module:
{!module-Socket}.
If the tag we are using while doing dune-release publish submit
is not at the tip of master, toy-github-delegate
(or its equivalent, eg. Dune_release.Github.publish_distrib
) becomes confused a creates a new release on the wrong commit..
Step to reproduce:
$ git clone https://github.com/janestreet/core.git
$ cd core
$ dune-release distrib
Cloning into '_build/core-c125d07.build'...
done.
then it just freezes
Maybe i missed some configuration, but during publishing dune-release
is copying the _html
folder into the root of gh-pages branch. Since there is no index.html
in the directory github pages doesn't pick it up.
Example: https://github.com/anuragsoni/color/tree/95ab98acfd4ba3fe7862d4b3f9d9d7b7d3f40824
During dune-release distrib
for regenerate, I get the following error message:
Building package in _build/regenerate-9da0fd9
dune-release: [EXEC:30523] ['jbuilder' 'build']
Entering directory '/home/gabriel/Sources/regenerate'
_build/regenerate-9da0fd9/install refers to unknown build context: regenerate-9da0fd9
[FAIL] package builds
My guess is that the jbuilder command is not precise enough (it should probably be jbuilder build -p PKG "@install"
, or something like that.
We should guide the user more to set-up the GH token things. Also not sure if we should depend on opam-publish or do our own thing, see #3.
I get the following error when running dune-release bistro
, apparently in the dune-release publish doc
step:
Switched to a new branch 'gh-pages'
dune-release: [ERROR] create temporary file api/bos-825d00.tmp: No such file
or directory
dune-release: [ERROR] run ['dune-release' 'publish' '--verbosity' 'warning']:
exited with 3
Tag detection seems to rely on several things, and sometimes ignores what you give on the command line or what is present in _build
. For my last tyre release, it insisted that it was 0.1 while 0.4 was tagged in the repository.
That was with last versions of dune and dune-release.
I have 2FA enabled, and I basically never use the https auth for github (I always go through ssh).
When trying to use publish distrib
, I get a 401 that ends with this:
{
"message": "Must specify two-factor authentication OTP code.",
"documentation_url":
"https://developer.github.com/v3/auth#working-with-two-factor-authentication"
}
I guess there is an extra step needed.
Alternatively, dune-release could direct me to the page for creating personal access tokens.
Here's the error that I get from trying to publish a tag:
fatal: remote error:
You can't push to git://github.com/diml/utop.git
Use https://github.com/diml/utop.git
Why does dune-release hard code the git://
? Shouldn't it read from the remotes?
Also, I obtained that error message by manually running the command that dune-release printed out. It would be nice if dune-release just print the stderr in this case.
% dune-release publish doc -vvv
dune-release: [INFO] dune-release 0.3.0 running
dune-release: [EXEC:31315] ['git' 'rev-parse' '--git-dir']
dune-release: [EXEC:31316] ['git' '--git-dir' '.git' '--work-tree' './'
'describe' '--always' 'HEAD']
dune-release: [EXEC:31317] ['tar' '-xjf' 'tyre-0.1-81-ge6154d6.tbz']
dune-release: [EXEC:31319] ['jbuilder' 'build' '-p' 'tyre' '@doc']
dune-release: [INFO] Parsing opam file tyre.opam
dune-release: [EXEC:31329] ['git' 'rev-parse' '--git-dir']
dune-release: [EXEC:31330] ['git' '--git-dir' '.git' '--work-tree' './'
'describe' '--always' 'HEAD']
dune-release: [EXEC:31331] ['git' 'rev-parse' '--git-dir']
dune-release: [EXEC:31332] ['git' '--git-dir' '.git' 'fetch'
'[email protected]:drup/tyre.git' 'gh-pages']
Depuis github.com:drup/tyre
* branch gh-pages -> FETCH_HEAD
dune-release: [EXEC:31337] ['git' '--git-dir' '.git' 'rev-parse'
'FETCH_HEAD']
dune-release: [EXEC:31338] ['git' '--git-dir' '.git' 'branch' '-f' 'gh-pages'
'9302056fd073a8ab5cb50907cc7aa26ad42eaf7c']
dune-release: [EXEC:31339] ['git' 'rev-parse' '--git-dir']
dune-release: [EXEC:31340] ['git' '--git-dir' '.git' 'clone' '--local' '.git'
'_build/tyre-0.1-81-ge6154d6/_build/gh-pages']
Clonage dans '_build/tyre-0.1-81-ge6154d6/_build/gh-pages'...
fait.
dune-release: [EXEC:31342] ['git' 'rev-parse' '--git-dir']
dune-release: [EXEC:31343] ['git' '--git-dir' '.git' 'checkout' 'gh-pages']
La branche 'gh-pages' est paramétrée pour suivre la branche distante 'gh-pages' depuis 'origin'.
Basculement sur la nouvelle branche 'gh-pages'
dune-release: [EXEC:31344] ['cp' '-R'
'/home/gabriel/Sources/tyre/_build/tyre-0.1-81-ge6154d6/_build/default/_doc/_html/'
'dev/Tyre.html']
cp: impossible de créer le répertoire 'dev/Tyre.html': Aucun fichier ou dossier de ce type
dune-release: [ERROR] run ['cp' '-R'
'/home/gabriel/Sources/tyre/_build/tyre-0.1-81-ge6154d6/_build/default/_doc/_html/'
'dev/Tyre.html']: exited with 1
Latest version of dune, dune-release and odoc.
Interaction:
$ dune-release opam submit
Submitting _build/ANSITerminal.0.8.1
From https://github.com/ocaml/opam-repository
* branch master -> FETCH_HEAD
dune-release: [ERROR] ['git' '--git-dir' '.git' '--work-tree' './' 'checkout'
'--quiet' '-b'
'release-ANSITerminal-0.8.1'
'b1ac8b1e1e4ad5da0a6e09713f413c07eac6ed52'] exited with
code 1
When trying to submit a new minor release of core, I get:
$ dune-release opam submit --keep-v
Submitting _build/core.v0.11.3
From https://github.com/ocaml/opam-repository
* branch master -> FETCH_HEAD
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 7334 commits.
(use "git push" to publish your local commits)
Deleted branch release-core-v0.11.3 (was 2fa2ea6a6).
dune-release: [ERROR] /usr/local/home/jdimino/js-all/core/_build/core.0.11.3
does not exist, did you run:
dune-release opam pkg -n core
It seems that dune-release is looking for _build/core.0.11.3
, while instead it should be looking for _build/core.v0.11.3
because of the --keep-v
option
For some projects it's useful...
The following is part of the output of dune-release publish distrib --verbosity=debug
:
dune-release: [EXEC:30081] ['git' '--git-dir' '.git' 'push' '--force'
'[email protected]:mmottl/gsl-ocaml.git'
'1.23.0-2-g0ad5974']
fatal: 1.23.0-2-g0ad5974 cannot be resolved to branch.
dune-release: [ERROR] run ['git' '--git-dir' '.git' 'push' '--force'
'[email protected]:mmottl/gsl-ocaml.git'
'1.23.0-2-g0ad5974']: exited with 128
The branch used by dune-release
above contains an extra suffix -2-g0ad5974
that doesn't exist.
Even though I have the required release.yml
and github.token
files in .config/dune
, dune-release opam submit
still asks me for my username:
Submitting _build/aifad.2.2.0
From https://github.com/ocaml/opam-repository
* branch master -> FETCH_HEAD
Checking out files: 100% (4464/4464), done.
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
Deleted branch release-aifad-2.2.0 (was 9430fbd3e).
[release-aifad-2.2.0 5127d5e00] [new release] aifad (2.2.0)
3 files changed, 27 insertions(+)
create mode 100644 packages/aifad/aifad.2.2.0/descr
create mode 100644 packages/aifad/aifad.2.2.0/opam
create mode 100644 packages/aifad/aifad.2.2.0/url
Username for 'https://github.com':
Any idea what may be going on here?
There are 3 subdirectories under doc/
in the build artifacts: _html
, _odoc
, _mld
. dune-release currently copies all three, instead of copying just the content of _html
.
Additionally, it would be nice to ask confirmation where the doc should go before actually copying it and pushing.
Using dune-release 0.2.0 I was able to get https://github.com/hcarty/ocaml-gdal/releases/tag/v0.10.0 without any trouble by going through the release steps up through dune-release opam pkg
. Yay and thank you!
Unfortunately dune-release opam submit
fails with this error:
dune-release: [ERROR] /home/hcarty/projects/ocaml-gdal/_build/gdal.v0.10.0
does not exist, did you run:
dune-release opam pkg -n gdal
/home/hcarty/projects/ocaml-gdal/_build/gdal.v0.10.0
does not exist but /home/hcarty/projects/ocaml-gdal/_build/gdal.0.10.0
does. The v
was trimmed from the version number during dune-release opam pkg
but not during dune-release opam submit
.
Instead of failing late, just fail early and/or skip the doc publishing steps.
dune-release: [ERROR] Could not derive publication directory $PATH from opam
doc field value "https://owlbarn.github.io/"; expected
the pattern $SCHEME://$USER.github.io/$REPO/$PATH
[FAIL] lint _build/owl-0.4.0 failure: 1 errors.
For this particular package (Owl), the docs are intended to be published as the owlbarn
org website, so no $REPO
or $PATH
components provided.
(Possibly an edge case I admit :)
Sometimes, you might want to tweak the opam file a little bit before doing a release. For example, I like to change the doc
field to point to the right version of the documentation. It would be nice if dune-release
supported that.
When you dune-release tag
a new git tag is created, but there is no validation that said tag actually works. So when doing dune-release distrib
afterwards this might fail (because the build fails or tests fail etc) so now you have a tag that is invalid and needs to be removed manually.
I am aware that distrib
needs a version to construct the tarball but the ordering is unfortunate. Maybe there could be something like attempt-tag
or similar that could abort when it can't create a tarball.
dune-release
is very happy about committing and pushing and doing all sort of things. That's fine, but given the fact that the commands and their documentation are a little bit nebulous about what they do in precise terms, they really should ask for confirmation before doing anything that is hard to revert.
Not sure what's happening here. Seem to get a failure when dune-release opam submit --pkg-names ...
submits a multi-package (single repo) PR to opam-repository. I appear to be able to create the PR myself by hand, no problem.
Error is
...
Total 17 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6), completed with 3 local objects.
To github.com:mor1/opam-repository
+ 666d75518f...230beffc54 release-owl-0.4.0 -> release-owl-0.4.0 (forced update)
dune-release: [ERROR] Could not find html_url id in response:
HTTP/1.1 422 Unprocessable Entity
Server: GitHub.com
Date: Wed, 08 Aug 2018 23:15:19 GMT
Content-Type: application/json;
charset=utf-8
Content-Length: 235
Status: 422 Unprocessable Entity
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4830
X-RateLimit-Reset: 1533771756
X-OAuth-Scopes: public_repo
X-Accepted-OAuth-Scopes:
X-GitHub-Media-Type: github.v3;
format=json
Access-Control-Expose-Headers: ETag, Link, Retry-After,
X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
X-RateLimit-Reset, X-OAuth-Scopes,
X-Accepted-OAuth-Scopes,
X-Poll-Interval
Access-Control-Allow-Origin:
*
Strict-Transport-Security: max-age=31536000;
includeSubdomains; preload
X-Frame-Options: deny
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Referrer-Policy: origin-when-cross-origin,
strict-origin-when-cross-origin
Content-Security-Policy: default-src
'none'
X-Runtime-rack: 0.073096
X-GitHub-Request-Id:
D709:09BB:2407C4:534A9D:5B6B7986
{
"message": "Validation Failed",
"errors": [
{
"resource": "PullRequest",
"field": "head",
"code": "invalid"
}
],
"documentation_url":
"https://developer.github.com/v3/pulls/#create-a-pull-request"
}
.
See the dune
repo just before the 1.2 release.
$ dune-release log -t
1.2.0
$ dune-release tag
1.1.0
Apparently, Readme.md
(capital first letter, lowercase rest) is not recognized by dune-release
. I think it would be best to at least recognized any capitalization of readme.*
. Same for the other usual files.
My changelog has a title at the beginning, which makes dune-release completely bork in a way that I can't bypass with the command line:
% dune-release publish distrib --dist-ver 0.4
fatal: Needed a single revision
dune-release: [ERROR] CHANGES.md lists 'Change' as the latest release, but no
corresponding tag has been found in the repository.
Did you forget to call 'dune-release tag' ?
My changelog: https://github.com/Drup/tyre/blob/master/CHANGES.md
Latest version of dune and dune-release.
Would be nice if the cross-reference would point to the right repository instead of opam-repository issues like in ocaml/opam-repository#11896
I get the following error with the latest release and opam 1.2.2
:
Cloning into '_build/gsl-1.22.0.build'...
done.
Wrote archive _build/gsl-1.22.0.tbz
Linting distrib in _build/gsl-1.22.0
[FAIL] lint opam file gsl.opam:
opam lint --warn=-21-32-48 -s messages:
opam: unknown option `--warn'.
Usage: opam lint [OPTION]... [FILE]
Try `opam lint --help' or `opam --help' for more information.
[FAIL] lint _build/gsl-1.22.0 failure: 1 errors.
Building package in _build/gsl-1.22.0
[ OK ] package builds
Running package tests in _build/gsl-1.22.0
[ OK ] package tests
Distribution for gsl 1.22.0
Commit 55284ea320f1721e3e659d5814b7e3ce702e345b
Archive _build/gsl-1.22.0.tbz
dune-release: [ERROR] run ['dune-release' 'distrib' '--verbosity' 'warning']:
exited with 1
Any suggestions for a workaround until this is fixed?
Should be ~/.config/dune
if I understand correctly.
When upgrading from a previous version, the .dune directory is moved to .config/dune, i.e. we end up with .config/dune/.dune. This is probably not intended, the .dune should be .config/dune rather than be contained in it. This issue was mistakenly raised here first: ocaml/dune#1055
When I try to release ocaml-zmq
which has zmq
, zmq-lwt
and zmq-async
as subpackages it works in a way I would not expect.
When I do dune-release distrib
it generates one single tarball. This is a bit surprising, but since it includes all the source for all subpackages this might be the right thing to do.
But when I do dune-release opam pkg -p zmq,zmq-async,zmq-lwt
(a bit strange I have to mention all of them) it does
Wrote opam package _build/zmq.5.0.1
Wrote opam package _build/zmq.5.0.1
Wrote opam package _build/zmq.5.0.1
And the file it generates is just derived from zmq.opam
.
With opam 2, we can store the description inside the opam file directly. It'd be nice if dune-release supported that, so that we don't have to write *.descr files in addition to *.opam files
Ran into this when making the dune release:
I get the following HTTP 401 error when trying to publish my package. I generated a token the first time, with an access to public_repo only as requested by dune-release, and I had this error. Then any new try does not ask for a token anymore and just fails with the same error.
dune-release: [EXEC:9383] ['curl' '-s' '-S' '-K' '-' '-D' '-' '--data'
'{ "tag_name" : "v1.1.0", "body" : "CHANGES:\n\n* Added a Format module to help generate formatted content for forms\n * Migration from oasis to dune\n * Compatibility with OCaml 4.07\n" }'
'https://api.github.com/repos/yannham/mechaml/releases']
dune-release: [ERROR] Could not find release id in response:
HTTP/1.1 401 Unauthorized
Server: GitHub.com
Date: Mon, 22 Oct 2018 10:46:41 GMT
Content-Type: application/json;
charset=utf-8
Content-Length: 93
Status: 401 Unauthorized
X-GitHub-Media-Type: github.v3;
format=json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 56
X-RateLimit-Reset:
1540207742
Access-Control-Expose-Headers: ETag, Link, Retry-After,
X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
X-RateLimit-Reset, X-OAuth-Scopes,
X-Accepted-OAuth-Scopes,
X-Poll-Interval
Access-Control-Allow-Origin:
*
Strict-Transport-Security: max-age=31536000;
includeSubdomains; preload
X-Frame-Options: deny
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Referrer-Policy: origin-when-cross-origin,
strict-origin-when-cross-origin
Content-Security-Policy: default-src
'none'
X-GitHub-Request-Id:
656A:7C63:21A2F73:52B44EB:5BCDAA90
{
"message": "Bad credentials",
"documentation_url":
"https://developer.github.com/v3"
}
.
With opam 2, the synopsis may be in the .opam
file and no longer in a .descr
one. dune-release
should try to get it from the former before trying to resort to the file README.md
.
Currently dune-release
can only release on GitHub so will work only for GitHub packages. This is not great for those who host their packages on a different sytem.
The topkg
notion of delegate should be re-added.
For example, ocaml-decoders
has:
decoders.opam
decoders-ezjsonm.opam
decoders-yojson.opam
dune-release publish doc
only generates documentation for decoders
.
I'd like to publish all the docs to the same gh-pages site, so the index lists all the packages together, and cross-package links work. Is that possible?
Great tool by the way :)
dune-release: [INFO] dune-release 1.0.1 running
dune-release: [EXEC:78443] ['git' 'rev-parse' '--git-dir']
dune-release: [EXEC:78444] ['git' '--git-dir' '.git' '--work-tree' './'
'describe' '--always' 'HEAD']
-: must exists _build/decoders-0.1.0-2-g4411bb5.tbz
=> chdir _build/
[in _build]
=> rmdir _build/decoders-0.1.0-2-g4411bb5
-: exec: tar -xjf decoders-0.1.0-2-g4411bb5.tbz
-: chdir _build/decoders-0.1.0-2-g4411bb5
-: exec: dune build -p decoders @doc
-: exists _build/default/_doc/_html
dune-release: [INFO] Parsing opam file decoders.opam
dune-release: [EXEC:78445] ['git' 'rev-parse' '--git-dir']
dune-release: [EXEC:78446] ['git' '--git-dir' '.git' '--work-tree' './'
'describe' '--always' 'HEAD']
dune-release: [EXEC:78447] ['git' 'rev-parse' '--git-dir']
-: exec: git --git-dir .git fetch [email protected]:${user}/${repo}.git gh-pages
-: exec: git --git-dir .git rev-parse FETCH_HEAD
-: exec: git --git-dir .git branch -f gh-pages ${fetch_head}
=> rmdir _build/decoders-0.1.0-2-g4411bb5/_build/gh-pages
dune-release: [EXEC:78448] ['git' 'rev-parse' '--git-dir']
=> exec:
git --git-dir .git clone --local .git _build/decoders-0.1.0-2-g4411bb5/_build/gh-pages
dune-release: [EXEC:78449] ['git' '--git-dir' '.git' 'clone' '--local' '.git'
'_build/decoders-0.1.0-2-g4411bb5/_build/gh-pages']
=> chdir _build/decoders-0.1.0-2-g4411bb5/_build/gh-pages
dune-release: [EXEC:78452] ['git' 'rev-parse' '--git-dir']
[in _build/decoders-0.1.0-2-g4411bb5/_build/gh-pages]
-: exec: git --git-dir .git checkout gh-pages
-: rmdir _build/decoders-0.1.0-2-g4411bb5/_build/gh-pages/${dir}
-: exec:
cp -R /Users/mattjbray/code/mattjbray/ocaml-decoders/_build/decoders-0.1.0-2-g4411bb5/_build/default/_doc/_html/ ${dir}
-: exec: git --git-dir .git add ${dir}
-: exec: git --git-dir .git commit -m Update decoders doc to 0.1.0-2-g4411bb5.
-: exec: git --git-dir .git push
-: exec:
git --git-dir .git push [email protected]:${user}/${repo}.git gh-pages:gh-pages
-: rmdir _build/decoders-0.1.0-2-g4411bb5/_build/gh-pages
Published documentation for decoders 0.1.0-2-g4411bb5 in directory ${dir} of
gh-pages branch
not sure whether this is the right place, but opam2 now supports to integrate a synopsis
and descr
field in the opam file. topkg (and dune-release) have automation in place to extract a descr
file from README.md -- what is the recommended way to dune-release-opam2 packages (and where to put descr
)? since now lots of repositories contain multiple opam files, should they store descr individually? or should it still be extracted from README - downside being that the descr/synopsis may be different for the different opam packages (see e.g. the mirage/mirage repository, where the description for mirage-types and mirage should be different). so far, I manually added descr and synopsis to opam files at release time, which is tedious.
OTOH, having to manually take care of both opam and README.md is tedious as well (and will lead to out-of-sync descriptions).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.