Skip to content

Update packages (2022-03) #125

@emillon

Description

@emillon

I created a list of outdated packages (packages that have a newer version in the upstream repo than here).

(list based on ocaml/opam-repository@4e30c15 and c750941)

This does not always mean that an action is required - sometimes it means that dune support has been merged upstream.

We can do that process later and try to automate this down the line but let's keep this manual for now.

Code used to run this
let latest_versions set =
  let module M = OpamPackage.Name.Map in
  OpamPackage.Set.fold
    (fun pkg acc ->
      let name = OpamPackage.name pkg in
      let version = OpamPackage.version pkg in
      match M.find_opt name acc with
      | None -> M.safe_add name version acc
      | Some v ->
          if OpamPackage.Version.compare version v > 0 then
            M.add name version acc
          else acc)
    set M.empty

let latest_versions_in_dir str =
  str |> OpamFilename.Dir.of_string |> OpamRepository.packages
  |> latest_versions

let main upstream overlays =
  let base_packages = latest_versions_in_dir upstream in
  let overlays_packages = latest_versions_in_dir overlays in
  OpamPackage.Name.Map.iter
    (fun name overlays_ver ->
      match OpamPackage.Name.Map.find_opt name base_packages with
      | None ->
          Printf.printf "%s: no upstream\n" (OpamPackage.Name.to_string name)
      | Some upstream_ver ->
          if OpamPackage.Version.compare upstream_ver overlays_ver > 0 then
            Printf.printf "%s: %s > %s\n"
              (OpamPackage.Name.to_string name)
              (OpamPackage.Version.to_string upstream_ver)
              (OpamPackage.Version.to_string overlays_ver))
    overlays_packages

let info = Cmdliner.Cmd.info "diff"

let repo n =
  let open Cmdliner.Arg in
  required & pos n (some string) None & info []

let term =
  let open Cmdliner.Term in
  const main $ repo 0 $ repo 1

let () = Cmdliner.Cmd.v info term |> Cmdliner.Cmd.eval |> Stdlib.exit

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions