Skip to content

release ocaml-rocksdb-0.02 #27360

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

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions packages/conf-rocksdb-ge-5-17-2/conf-rocksdb-ge-5-17-2.5.17.2/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
opam-version: "2.0"
homepage: "http://rocksdb.org/"
maintainer: "Chet Murthy <[email protected]>"
x-maintenance-intent: [ "(latest)" ]
authors: "Chet Murthy (copied from Anton Bachin)"
bug-reports: "https://github.com/chetmurthy/ocaml-rocksdb/issues"
license: "Apache-2.0"

depends: [
"conf-rocksdb"
"conf-pkg-config" {build}
(("host-arch-x86_32" {os = "win32" & os-distribution != "cygwinports"} & "conf-mingw-w64-zstd-i686" {os = "win32" & os-distribution != "cygwinports"}) |
("host-arch-x86_64" {os = "win32" & os-distribution != "cygwinports"} & "conf-mingw-w64-zstd-x86_64" {os = "win32" & os-distribution != "cygwinports"}))
]
build: [

["pkgconf" {os = "win32" & os-distribution = "cygwin"}
"--personality=i686-w64-mingw32" {os = "win32" & os-distribution = "cygwin" & host-arch-x86_32:installed}
"--personality=x86_64-w64-mingw32" {os = "win32" & os-distribution = "cygwin" & host-arch-x86_64:installed}
"pkg-config" {os != "win32" | os-distribution != "cygwin"}
"--atleast-version=7.8.3" "rocksdb"] {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this 7.8.3 constant correct? what's its relation to the "ge-5-17-2" aim?

!(os-distribution = "debian" & (os-version = 11 | os-version = 12)) &
!(os-distribution = "ubuntu" & (os-version = "20.04" | os-version = "22.04"))
}
]
synopsis: "Virtual package relying on a system installation of RocksDB (version >= 5.17.2)"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the need for this kind of package, and I wish we had a good solution (or at least a standard solution) to offer but right nnow it's an unsolved problem for the opam repo.

I'm not very happy with adding version constraints as part of the name of a package. Although I can see how it's needed and how we can't reasonably generate conf-rocksdb packages for each available version of rocksdb. Or maybe that's reasonable but would require having a separate dedicate opam repository.

Anyway… Anyone has ideas?

Otherwise I guess we can possibly merge for now and possibly revisit.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's actually worse and worse. When I started with trying to get this to work, I foolishly assumed that pkg-config would be available to check rocksdb's package-version. But (haha, silly me) that wasn't the case with these older versions of rocksdb like (sigh) current Debian (11, 12) and backlevel Ubuntu (20.24, 22.04). And they were all backlevel versions of Rocksdb (5.17.2, 6.11.4). Other platforms had 7.8.3, though a few even failed the check.

I could put these changes into conf-rocksdb ?

The bigger problem of not being able to state version-constraints is .... painful. Some packages (like Rocksdb) appear to be changing their API pretty rapidly. But OTOH this is a big change to opam, and I sure think there are better ways to spend developer resource than on this.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that we can accept the ge-… name for now

And maybe someone with time available can write a generator for many conf-packages where the version number is just substituted.

description: """
The build section merits an explanation.

(1) for debian 11/12, conf-rocksdb ensures that rocksdb gets installed. But it'll be backlevel,
and specifically either 5.17.2 or 6.11.4 -- versions that do not come with pkg-config files.
So we just skip the test.

(2) For all other OS versions, we check what pkg-config says.
"""

flags: conf
59 changes: 59 additions & 0 deletions packages/ocaml-rocksdb/ocaml-rocksdb.0.02/opam
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Normally we avoid having ocaml as part of the name of packages. See https://github.com/ocaml/opam-repository/tree/master/governance/policies#7-new-package-names-should-avoid-the-ocaml-prefixsuffix

I don't think this porject necessarily needs an exception. (Unless you can make a case for it?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm happy to make it "rocksdb" ? Or any other name you would propose grin.

synopsis: "An OCaml interface to RocksDB (generated by ocaml-cppffigen"
description:
"""
This is an OCaml interface to RocksDB, generated by the ocaml-cppffigen tool
"""
opam-version: "2.0"
x-maintenance-intent: [ "(latest)" ]
maintainer: "Chet Murthy <[email protected]>"
authors: ["Chet Murthy"]
homepage: "https://github.com/chetmurthy/ocaml-rocksdb"
license: "Apache-2.0"
bug-reports: "https://github.com/chetmurthy/ocaml-rocksdb/issues"
dev-repo: "git+https://github.com/chetmurthy/ocaml-rocksdb.git"
doc: "https://github.com/chetmurthy/ocaml-rocksdb/doc"

depends: [
"ocaml" { >= "4.10.0" }
"camlp5-buildscripts" { >= "0.02" }
"not-ocamlfind" { >= "0.10" }
"cppffigen"
"conf-g++"
"conf-snappy"
"conf-zlib"
"conf-liblz4"
"conf-libbz2"
"conf-rocksdb-ge-5-17-2"
"result"
"core"
"ounit" { >= "2.2.7" & with-test}
]
build: [
[make
"BACKLEVEL_ROCKSDB=1" {
(arch = "x86_64" & os-distribution = "debian" & (os-version = 11 | os-version = 12)) |
(arch = "x86_64" & os-distribution = "ubuntu" & (os-version = "20.04" | os-version = "22.04"))
}
"sys"]
[make
"BACKLEVEL_ROCKSDB=1" {
(arch = "x86_64" & os-distribution = "debian" & (os-version = 11 | os-version = 12)) |
(arch = "x86_64" & os-distribution = "ubuntu" & (os-version = "20.04"))
}
"test"] {with-test}
]
install: [
[make
"BACKLEVEL_ROCKSDB=1" {
(arch = "x86_64" & os-distribution = "debian" & (os-version = 11 | os-version = 12)) |
(arch = "x86_64" & os-distribution = "ubuntu" & (os-version = "20.04"))
}
"install"]
]
url {
src: "https://github.com/chetmurthy/ocaml-rocksdb/archive/refs/tags/0.02.tar.gz"
checksum: [
"sha512=b2b2b36b4c34ee7cc158dbe8d0eeff6955d36f5d665ec8e78a899635bd8ac3f3c7a956132b95d0096304f7fbd8a6c4034527eeb951a3a26e4cc12b17e6fc0d87"
]
}
Loading