Skip to content

[maintenance]: clock doesn't need to be an external package #5883

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

Closed

Conversation

edwintorok
Copy link
Contributor

Trying to set up a build on Fedora40 on an empty opam switch fails:

$ opam install --deps-only --with-test .
[ERROR] Package conflict!
  * Missing dependency:
    - clock >= master
    no matching version

(I could opam pin add, but I prefer not to, because then you get all the problems with 'master' version changing without opam knowing about it).

However it is not required for 'clock' to be a public library. Sure if you remove public_name it complains that you cannot have a private library as a dependency of a public package.
But you can just add a '(package)' field to the library and say which already existing public package you want it to be a part of and then it all works (I think this is a somewhat recent Dune feature).

Draft PR because I haven't checked whether this builds in Koji, but it works in opam.

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
@psafont
Copy link
Member

psafont commented Jul 25, 2024

Is that command using the metadata in xen-api or xs-opam?

@edwintorok
Copy link
Contributor Author

The opam command uses the metadata that is available locally to find out the dependencies and uses the remote metadata to install them, I think that is why it fails (or it doesn't know what the version of clock is locally, it probably won't be master, but ~dev).

@psafont
Copy link
Member

psafont commented Jul 25, 2024

I just created a new switch to test this, it worked outright:

$ opam switch create test ocaml.4.14.2

<><> Installing new switch packages <><><><><><><><><><><><><><><><><><><><><><>
Switch invariant: ["ocaml" {= "4.14.2"}]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><>
⬇ retrieved ocaml-config.2  (cached)
∗ installed base-bigarray.base
∗ installed base-threads.base
∗ installed base-unix.base
∗ installed host-arch-x86_64.1
∗ installed host-system-other.1
∗ installed ocaml-options-vanilla.1
⬇ retrieved ocaml-base-compiler.4.14.2  (cached)
∗ installed ocaml-base-compiler.4.14.2
∗ installed ocaml-config.2
∗ installed ocaml.4.14.2
Done.
# Run eval (opam env --switch=test) to update the current shell environment

$ oswitch test

$ opam repo
[NOTE] These are the repositories in use by the current switch. Use '--all' to see all configured repositories.

<><> Repository configuration for switch test <><><><><><><><><><><><><><><><><>
 1 xs-opam git+https://github.com/xapi-project/xs-opam

$ opam install --deps-only -t .
The following actions will be performed:
=== recompile 3 packages
  ↻ ocaml                       4.14.2   [upstream or system changes]
  ↻ ocaml-base-compiler         4.14.2   [upstream or system changes]
  ↻ ocaml-config                2        [upstream or system changes]
=== install 211 packages
  ∗ afl-persistent              1.4      [required by crowbar]
  ∗ alcotest                    1.7.0    [required by xapi-xenopsd, xapi-storage, xapi-stdext-std, etc.]
  ∗ alcotest-lwt                1.7.0    [required by vhd-tool, varstored-guard, vhd-format-lwt, xapi-nbd]
  ∗ ambient-context             0.1.0    [required by opentelemetry]
  ∗ angstrom                    0.16.0   [required by xapi]
  ∗ asn1-combinators            0.2.6    [required by x509]
  ∗ astring                     0.8.5    [required by xapi-xenopsd-xc, xapi-types, xapi-sdk, etc.]
  ∗ async                       v0.15.0  [required by xapi-storage-script, message-switch-async, xen-api-client-async]
  ∗ async_find                  v0.15.0  [required by async_inotify]
  ∗ async_inotify               v0.15.0  [required by xapi-storage-script]
  ∗ async_kernel                v0.15.0  [required by cohttp-async]
  ∗ async_rpc_kernel            v0.15.0  [required by async]
  ∗ async_unix                  v0.15.0  [required by xapi-storage-script, xen-api-client-async]
  ∗ base                        v0.15.1  [required by cohttp-async]
  ∗ base-bytes                  base     [required by cohttp, inotify]
  ∗ base64                      3.5.1    [required by wsproxy, http-lib, xapi]
  ∗ base_bigstring              v0.15.0  [required by core]
  ∗ base_quickcheck             v0.15.0  [required by core]
  ∗ bechamel                    0.5.0    [required by xapi-stdext-encodings]
  ∗ bechamel-notty              0.5.0    [required by xapi-stdext-encodings]
  ∗ bigarray-compat             1.1.0    [required by nbd-unix, ctypes]
  ∗ bigstringaf                 0.9.1    [required by angstrom]
  ∗ bin_prot                    v0.15.0  [required by core]
  ∗ bisect_ppx                  2.8.3    [required by xapi-stdext-unix]
  ∗ bos                         0.2.1    [required by ca-certs]
  ∗ ca-certs                    0.2.3    [required by conduit-lwt-unix]
  ∗ camlp-streams               5.0.1    [required by tar]
  ∗ cdrom                       0.9.4    [required by xapi]
  ∗ checkseum                   0.5.2    [required by decompress]
  ∗ cmdliner                    1.2.0    [required by xapi-storage-cli, xapi-rrd-transport-utils, xapi-inventory, etc.]
  ∗ cohttp                      5.2.0    [required by xen-api-client-async, xapi-xenopsd, xapi-squeezed, etc.]
  ∗ cohttp-async                5.2.0    [required by message-switch, message-switch-async]
  ∗ cohttp-lwt                  5.2.0    [required by varstored-guard, vhd-tool]
  ∗ cohttp-lwt-unix             5.2.0    [required by message-switch-lwt, message-switch, xen-api-client-lwt]
  ∗ conduit                     6.2.2    [required by conduit-async, conduit-lwt]
  ∗ conduit-async               6.2.2    [required by cohttp-async]
  ∗ conduit-lwt                 6.2.2    [required by cohttp-lwt-unix]
  ∗ conduit-lwt-unix            6.2.2    [required by cohttp-lwt-unix]
  ∗ conf-gmp                    4        [required by zarith, conf-gmp-powm-sec]
  ∗ conf-gmp-powm-sec           3        [required by mirage-crypto-pk]
  ∗ conf-libcurl                2        [required by ocurl]
  ∗ conf-libffi                 2.0.0    [required by ctypes-foreign]
  ∗ conf-libnl3                 1        [required by netlink]
  ∗ conf-libssl                 4        [required by vhd-tool]
  ∗ conf-linux-libc-dev         0        [required by mirage-block-unix, polly]
  ∗ conf-pam                    1        [required by xapi]
  ∗ conf-pkg-config             3        [required by io-page, ctypes-foreign]
  ∗ conf-python-3               9.0.0    [required by xapi-storage, xapi-storage-script]
  ∗ conf-xen                    1        [required by xapi-xenopsd-xc]
  ∗ core                        v0.15.1  [required by xapi-storage-script, xen-api-client-async]
  ∗ core_kernel                 v0.15.0  [required by async]
  ∗ core_unix                   v0.15.2  [required by cohttp-async, async_inotify]
  ∗ cppo                        1.6.9    [required by ppx_deriving]
  ∗ crc                         2.2.0    [required by rrd-transport]
  ∗ crowbar                     0.2.1    [required by xapi, xapi-rrd]
  ∗ csexp                       1.5.2    [required by dune-configurator]
  ∗ cstruct                     6.0.1    [required by vhd-tool, vhd-format, rrd-transport, etc.]
  ∗ cstruct-lwt                 6.0.1    [required by nbd-unix, mirage-block-unix, tar-unix]
  ∗ cstruct-unix                6.0.1    [required by rrdd-plugins]
  ∗ ctypes                      0.22.0   [required by xapi]
  ∗ ctypes-foreign              0.22.0   [required by xapi]
  ∗ decompress                  1.5.3    [required by tar]
  ∗ domain-name                 0.4.0    [required by xapi]
  ∗ dune                        3.15.2   [required by xml-light2, xen-api-client-async, xe, etc.]
  ∗ dune-build-info             3.15.2   [required by xapi-consts]
  ∗ dune-configurator           3.15.2   [required by ctypes, ctypes-foreign]
  ∗ duration                    0.2.1    [required by shared-block-ring]
  ∗ eqaf                        0.9      [required by mirage-crypto]
  ∗ expect_test_helpers_core    v0.15.0  [required by core_unix]
  ∗ ezcurl                      0.2.4    [required by opentelemetry-client-ocurl]
  ∗ fd-send-recv                2.0.1    [required by xapi-xenopsd, xapi-idl, forkexec, etc.]
  ∗ fieldslib                   v0.15.0  [required by core]
  ∗ fmt                         0.9.0    [required by xapi-xenopsd, xapi-idl, wsproxy, etc.]
  ∗ fpath                       0.7.3    [required by xe]
  ∗ gmap                        0.3.0    [required by x509]
  ∗ hex                         1.5.0    [required by xapi]
  ∗ hmap                        0.8.1    [required by opentelemetry]
  ∗ inotify                     2.5.0    [required by rrdd-plugins, xapi-rrdd]
  ∗ int_repr                    v0.15.0  [required by core_kernel]
  ∗ integers                    0.7.0    [required by ctypes, unix-errno]
  ∗ io-page                     3.0.0    [required by vhd-tool, vhd-format, message-switch, etc.]
  ∗ ipaddr                      5.5.0    [required by xapi, xapi-idl]
  ∗ ipaddr-sexp                 5.5.0    [required by conduit-async, conduit-lwt-unix]
  ∗ jane-street-headers         v0.15.0  [required by core, core_unix]
  ∗ jsonm                       1.0.2    [required by cohttp]
  ∗ jst-config                  v0.15.1  [required by core, core_unix]
  ∗ logs                        0.7.0    [required by xapi-stdext-pervasives, wsproxy, ezxenstore, etc.]
  ∗ lwt                         5.7.0    [required by xapi-storage, xapi-idl, vhd-tool, etc.]
  ∗ lwt_log                     1.1.2    [required by message-switch, xapi-nbd]
  ∗ lwt_ssl                     1.2.0    [required by xen-api-client-lwt]
  ∗ macaddr                     5.5.0    [required by ipaddr]
  ∗ magic-mime                  1.3.1    [required by cohttp-async, cohttp-lwt-unix]
  ∗ menhir                      20231231 [required by mustache]
  ∗ menhirCST                   20231231 [required by menhir]
  ∗ menhirLib                   20231231 [required by menhir]
  ∗ menhirSdk                   20231231 [required by menhir]
  ∗ mirage-block                3.0.2    [required by vhd-format-lwt]
  ∗ mirage-block-unix           2.14.2   [required by message-switch, xapi-nbd]
  ∗ mirage-clock                4.2.0    [required by shared-block-ring]
  ∗ mirage-crypto               0.10.7   [required by xapi]
  ∗ mirage-crypto-ec            0.10.7   [required by x509]
  ∗ mirage-crypto-pk            0.10.7   [required by xapi]
  ∗ mirage-crypto-rng           0.10.7   [required by xapi]
  ∗ mirage-no-solo5             1        [required by mirage-crypto-pk]
  ∗ mirage-no-xen               1        [required by mirage-crypto-pk]
  ∗ mirage-time                 3.0.0    [required by shared-block-ring]
  ∗ mirage-time-unix            3.0.0    [required by shared-block-ring]
  ∗ mtime                       2.0.0    [required by xapi-stdext-unix, xapi-rrdd, xapi-idl, etc.]
  ∗ mustache                    3.3.0    [required by xapi-datamodel, xapi-sdk]
  ∗ nbd                         6.0.1    [required by nbd-unix]
  ∗ nbd-unix                    6.0.1    [required by vhd-tool, xapi-nbd]
  ∗ netlink                     0.3.4    [required by xapi-networkd]
  ∗ notty                       0.2.3    [required by xapi-stdext-encodings]
  ∗ num                         1.5      [required by sexplib]
  ∗ ocaml-compiler-libs         v0.12.4  [required by ppxlib]
  ∗ ocaml-syntax-shims          1.0.0    [required by alcotest]
  ∗ ocaml_intrinsics            v0.15.2  [required by core_unix]
  ∗ ocamlbuild                  0.14.3   [required by logs, mtime, ptime, uuidm]
  ∗ ocamlfind                   1.9.6    [required by xapi-inventory]
  ∗ ocplib-endian               1.2      [required by crowbar]
  ∗ ocurl                       0.9.1    [required by opentelemetry-client-ocurl]
  ∗ opentelemetry               0.9      [required by opentelemetry-client-ocurl]
  ∗ opentelemetry-client-ocurl  0.9      [required by xapi]
  ∗ optint                      0.3.0    [required by decompress]
  ∗ parsexp                     v0.15.0  [required by sexplib]
  ∗ pbkdf                       1.2.0    [required by x509]
  ∗ pbrt                        3.0.2    [required by opentelemetry]
  ∗ pci                         v1.0.4   [required by xapi]
  ∗ polly                       0.4.1    [required by xapi-stdext-unix, xapi-xenopsd-xc]
  ∗ ppx_assert                  v0.15.0  [required by core]
  ∗ ppx_base                    v0.15.0  [required by core]
  ∗ ppx_bench                   v0.15.1  [required by ppx_jane]
  ∗ ppx_bin_prot                v0.15.0  [required by ppx_jane]
  ∗ ppx_cold                    v0.15.0  [required by ppx_base]
  ∗ ppx_compare                 v0.15.0  [required by ppx_base, bin_prot]
  ∗ ppx_cstruct                 6.0.1    [required by vhd-format, vhd-tool]
  ∗ ppx_custom_printf           v0.15.0  [required by ppx_jane]
  ∗ ppx_derivers                1.2.1    [required by ppx_deriving]
  ∗ ppx_deriving                5.2.1    [required by xapi]
  ∗ ppx_deriving_rpc            9.0.0+2  [required by xapi-xenopsd, xapi-tracing-export, xapi-storage-cli, etc.]
  ∗ ppx_disable_unused_warnings v0.15.0  [required by ppx_jane]
  ∗ ppx_enumerate               v0.15.0  [required by ppx_base]
  ∗ ppx_expect                  v0.15.1  [required by ppx_jane]
  ∗ ppx_fields_conv             v0.15.0  [required by ppx_jane]
  ∗ ppx_fixed_literal           v0.15.0  [required by ppx_jane]
  ∗ ppx_hash                    v0.15.0  [required by core]
  ∗ ppx_here                    v0.15.0  [required by conduit-async]
  ∗ ppx_ignore_instrumentation  v0.15.0  [required by ppx_jane]
  ∗ ppx_inline_test             v0.15.1  [required by core]
  ∗ ppx_jane                    v0.15.0  [required by async_inotify]
  ∗ ppx_let                     v0.15.0  [required by ppx_jane]
  ∗ ppx_log                     v0.15.0  [required by async]
  ∗ ppx_module_timer            v0.15.0  [required by ppx_jane]
  ∗ ppx_optcomp                 v0.15.0  [required by ppx_jane]
  ∗ ppx_optional                v0.15.0  [required by ppx_jane]
  ∗ ppx_pipebang                v0.15.0  [required by ppx_jane]
  ∗ ppx_sexp_conv               v0.15.1  [required by xapi-xenopsd, xapi-schema, xapi, etc.]
  ∗ ppx_sexp_message            v0.15.0  [required by core]
  ∗ ppx_sexp_value              v0.15.0  [required by ppx_jane]
  ∗ ppx_stable                  v0.15.0  [required by ppx_jane]
  ∗ ppx_string                  v0.15.0  [required by ppx_jane]
  ∗ ppx_typerep_conv            v0.15.0  [required by ppx_jane]
  ∗ ppx_variants_conv           v0.15.0  [required by ppx_jane]
  ∗ ppxlib                      0.32.1   [required by ppx_deriving, ppx_deriving_rpc, bisect_ppx]
  ∗ protocol_version_header     v0.15.0  [required by async_rpc_kernel]
  ∗ psq                         0.2.1    [required by xapi]
  ∗ ptime                       1.1.0    [required by clock, xapi-stdext-date]
  ∗ qcheck-core                 0.21.3   [required by wsproxy, sexpr, xapi-stdext-unix]
  ∗ qmp                         0.20.0   [required by xapi-xenopsd-xc]
  ∗ re                          1.11.0   [required by xen-api-client, xapi-xenopsd-cli, xapi-tracing, etc.]
  ∗ result                      1.5      [required by xapi-xenopsd, xapi-xenopsd-xc]
  ∗ rpclib                      9.0.0+2  [required by xen-api-client-async, xapi-xenopsd-xc, xapi-xenopsd, etc.]
  ∗ rpclib-async                9.0.0+2  [required by xapi-storage-script]
  ∗ rpclib-lwt                  9.0.0+2  [required by varstored-guard]
  ∗ rresult                     0.7.0    [required by xapi-xenopsd-cli, xapi, vhd-format, etc.]
  ∗ seq                         base     [required by psq]
  ∗ sexp_pretty                 v0.15.1  [required by expect_test_helpers_core]
  ∗ sexplib                     v0.15.1  [required by xapi-idl, message-switch, message-switch-core, xapi-xenopsd]
  ∗ sexplib0                    v0.15.1  [required by xapi-xenopsd, xapi-xenopsd-xc]
  ∗ sha                         1.15.4   [required by vhd-tool, http-lib, xapi]
  ∗ shared-block-ring           3.0.1    [required by message-switch]
  ∗ spawn                       v0.15.1  [required by core_unix]
  ∗ splittable_random           v0.15.0  [required by core]
  ∗ ssl                         0.6.0    [required by nbd-unix]
  ∗ stdio                       v0.15.0  [required by core]
  ∗ stdlib-shims                0.3.0    [required by vhd-format]
  ∗ stringext                   1.6.0    [required by cohttp]
  ∗ tar                         2.6.0    [required by vhd-tool, xapi]
  ∗ tar-unix                    2.6.0    [required by xapi]
  ∗ textutils                   v0.15.0  [required by async]
  ∗ textutils_kernel            v0.15.0  [required by textutils]
  ∗ time_now                    v0.15.0  [required by core]
  ∗ timezone                    v0.15.0  [required by core_unix]
  ∗ topkg                       1.0.7    [required by logs, mtime, ptime, uuidm]
  ∗ typerep                     v0.15.0  [required by core]
  ∗ unix-errno                  0.6.2    [required by xapi-stdext-unix]
  ∗ uri                         4.4.0+1  [required by xen-api-client-async, xapi-xenopsd, xapi-squeezed, etc.]
  ∗ uri-sexp                    4.4.0+1  [required by cohttp, cohttp-async]
  ∗ uuidm                       0.9.8    [required by xapi-inventory, uuid, ezxenstore, etc.]
  ∗ uutf                        1.0.3    [required by xapi-xenopsd]
  ∗ variantslib                 v0.15.0  [required by core]
  ∗ x509                        0.16.5   [required by xapi]
  ∗ xapi-backtrace              0.7      [required by xapi-xenopsd, xapi-stdext-pervasives, xapi-idl, etc.]
  ∗ xapi-test-utils             1.4.0    [required by xapi, xapi-networkd]
  ∗ xenctrl                     master   [required by xapi-squeezed, ezxenstore, rrdd-plugins, xapi-xenopsd-xc]
  ∗ xenmmap                     master   [required by xenctrl]
  ∗ xenstore                    2.2.0    [required by xapi-squeezed, rrdd-plugins, ezxenstore, etc.]
  ∗ xenstore_transport          1.3.0    [required by xapi-xenopsd-cli, xapi-squeezed, rrdd-plugin, etc.]
  ∗ xmlm                        1.4.0    [required by xen-api-client-lwt, xen-api-client, xapi-storage, etc.]
  ∗ yojson                      2.1.2    [required by xapi, rrd-transport, xapi-rrd]
  ∗ zarith                      1.13     [required by asn1-combinators, mirage-crypto-pk]

Proceed with ↻ 3 recompilations and ∗ 211 installations? [y/n] y

Please check that the xs-opam repository is the only one used in the switch and is up-todate

@edwintorok
Copy link
Contributor Author

I also added --with-test, maybe that is the difference?
Anyway this would also require .spec changes, so I'll rather do it together with the rest of 'reduce number of opam files' PR.

@edwintorok edwintorok closed this Jul 25, 2024
@psafont
Copy link
Member

psafont commented Jul 26, 2024

I can try with --with-test, although -t should be equivalent.

Tried with your original command after emptying the opam switch, it's able to resolve all the packages and offers to install them

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants