Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package opam-file-format for 
openSUSE:Factory checked in at 2025-07-16 15:52:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opam-file-format (Old)
 and      /work/SRC/openSUSE:Factory/.opam-file-format.new.7373 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "opam-file-format"

Wed Jul 16 15:52:55 2025 rev:8 rq:1293542 version:2.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/opam-file-format/opam-file-format.changes        
2023-05-23 14:54:07.326333573 +0200
+++ 
/work/SRC/openSUSE:Factory/.opam-file-format.new.7373/opam-file-format.changes  
    2025-07-16 15:55:54.015095734 +0200
@@ -1,0 +2,6 @@
+Mon Jul  7 07:07:07 UTC 2025 - oher...@suse.de
+
+- Update to version 2.2.0
+  see included CHANGES file for details
+
+-------------------------------------------------------------------

Old:
----
  opam-file-format-2.1.6.tar.xz

New:
----
  opam-file-format-2.2.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ opam-file-format.spec ++++++
--- /var/tmp/diff_new_pack.eFYenL/_old  2025-07-16 15:55:54.563118614 +0200
+++ /var/tmp/diff_new_pack.eFYenL/_new  2025-07-16 15:55:54.563118614 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package opam-file-format
 #
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -29,7 +29,7 @@
 
 %define     pkg opam-file-format
 Name:           %pkg%nsuffix
-Version:        2.1.6
+Version:        2.2.0
 Release:        0
 %{?ocaml_preserve_bytecode}
 Summary:        Parser and printer for the opam file syntax
@@ -38,12 +38,14 @@
 URL:            https://opam.ocaml.org/
 Source0:        %pkg-%version.tar.xz
 BuildRequires:  ocaml
-BuildRequires:  ocaml-dune
-BuildRequires:  ocaml-rpm-macros >= 20230101
+BuildRequires:  ocaml-dune >= 3.13
+BuildRequires:  ocaml-rpm-macros >= 20250517
+BuildRequires:  ocamlfind(menhir)
 
 %if "%build_flavor" == "testsuite"
 BuildRequires:  ocamlfind(alcotest)
-BuildRequires:  ocamlfind(opam-file-format)
+BuildRequires:  ocamlfind(fmt)
+BuildRequires:  ocamlfind(opam-file-format) = %version
 %endif
 
 %description

++++++ _service ++++++
--- /var/tmp/diff_new_pack.eFYenL/_old  2025-07-16 15:55:54.615120785 +0200
+++ /var/tmp/diff_new_pack.eFYenL/_new  2025-07-16 15:55:54.627121286 +0200
@@ -1,6 +1,6 @@
 <services>
-  <service mode="disabled" name="tar_scm">
-    <param name="revision">303ab85afb67c7c22ea548b87241b08616b9f6f2</param>
+  <service mode="manual" name="tar_scm">
+    <param name="revision">59d9a6b585ac3fd141004f155a459e78f39993ac</param>
     <param name="scm">git</param>
     <param name="submodules">disable</param>
     <param name="url">https://github.com/ocaml/opam-file-format.git</param>
@@ -8,10 +8,10 @@
     <param name="versionrewrite-pattern">[v]?([^+]+)(.*)</param>
     <param name="versionrewrite-replacement">\1</param>
   </service>
-  <service mode="disabled" name="recompress">
+  <service mode="manual" name="recompress">
     <param name="compression">xz</param>
     <param name="file">*.tar</param>
   </service>
-  <service mode="disabled" name="set_version"/>
+  <service mode="manual" name="set_version"/>
 </services>
 

++++++ opam-file-format-2.1.6.tar.xz -> opam-file-format-2.2.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/.gitignore 
new/opam-file-format-2.2.0/.gitignore
--- old/opam-file-format-2.1.6/.gitignore       2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/.gitignore       2025-07-03 16:27:27.000000000 
+0200
@@ -1,23 +1,5 @@
 *~
 .#*
 \#*#
-*.cmo
-*.cmx
-*.cmi
-*.cmt
-*.cmti
-*.cma
-*.cmxa
-*.cmxs
-*.a
-*.lib
-*.o
 _build
 *.install
-.merlin
-*.obj
-src/.depend
-src/opamBaseParser.ml
-src/opamBaseParser.mli
-src/opamLexer.ml
-src/META
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/CHANGES 
new/opam-file-format-2.2.0/CHANGES
--- old/opam-file-format-2.1.6/CHANGES  2023-03-20 22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/CHANGES  2025-07-03 16:27:27.000000000 +0200
@@ -1,3 +1,12 @@
+2.2.0 [03 July 2025]
+--------------------
+* No change since 2.2.0~alpha1
+
+2.2.0~alpha1 [06 December 2024]
+-------------------------------
+* Remove the optional GNU Make build system in favour of Dune [#51 
@kit-ty-kate]
+* Make the parser domain-safe by switching from ocamlyacc to menhir [#60 
@kit-ty-kate]
+
 2.1.6 [20 March 2023]
 ------------------------
 * Remove deprecated usage of `Printf.ksprintf`, ocaml 5 compatibility
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/Makefile 
new/opam-file-format-2.2.0/Makefile
--- old/opam-file-format-2.1.6/Makefile 2023-03-20 22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/Makefile 1970-01-01 01:00:00.000000000 +0100
@@ -1,39 +0,0 @@
-TARGETS = opam-file-format.cma opam-file-format.cmxa opam-file-format.cmxs
-
-all: $(TARGETS)
-       $(MAKE) -C src META
-
-byte: $(filter %.cma,$(TARGETS))
-       $(MAKE) -C src META
-
-native: $(filter %.cmxa,$(TARGETS))
-       $(MAKE) -C src META
-
-.PHONY: dune clean
-dune:
-       dune build --profile=dev @all
-
-%:
-       $(MAKE) -C src $@
-
-tests: opam-file-format.cmxa
-       $(MAKE) -C tests run
-
-PREFIX ?= /usr/local
-LIBDIR ?= $(PREFIX)/lib
-
-install:
-       mkdir -p $(DESTDIR)$(LIBDIR)/opam-file-format
-       install -m 0644 \
-         $(wildcard $(addprefix src/*.,cmi cmo cmx cmt cmti lib a cma cmxa 
cmxs)) \
-           src/META \
-         $(DESTDIR)$(LIBDIR)/opam-file-format/
-
-uninstall:
-       rm -f $(DESTDIR)$(LIBDIR)/opam-file-format/*
-       rmdir $(DESTDIR)$(LIBDIR)/opam-file-format
-
-clean::
-       rm -rf _build
-       $(MAKE) -C src $@
-       $(MAKE) -C tests $@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/README.md 
new/opam-file-format-2.2.0/README.md
--- old/opam-file-format-2.1.6/README.md        2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/README.md        2025-07-03 16:27:27.000000000 
+0200
@@ -1,8 +1,7 @@
 # opam-file-format - Parser and printer for the opam file syntax
 
 This library provides the parser and printer for the opam file syntax as a
-library with no dependencies. The package can be built either with GNU make
-or any version of [Dune](https://dune.build).
+library with no dependencies but [Dune](https://dune.build) >= 3.13.
 
 Opam was created and is maintained by [OCamlPro](http://www.ocamlpro.com).
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/appveyor.cmd 
new/opam-file-format-2.2.0/appveyor.cmd
--- old/opam-file-format-2.1.6/appveyor.cmd     2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/appveyor.cmd     1970-01-01 01:00:00.000000000 
+0100
@@ -1,94 +0,0 @@
-@rem ***********************************************************************
-@rem *                                                                     *
-@rem *                                 opam                                *
-@rem *                                                                     *
-@rem *                 David Allsopp, OCaml Labs, Cambridge.               *
-@rem *                                                                     *
-@rem *   Copyright 2018 MetaStack Solutions Ltd.                           *
-@rem *                                                                     *
-@rem *   All rights reserved.  This file is distributed under the terms of *
-@rem *   the GNU Lesser General Public License version 2.1, with the       *
-@rem *   special exception on linking described in the file LICENSE.       *
-@rem *                                                                     *
-@rem ***********************************************************************
-
-@rem BE CAREFUL ALTERING THIS FILE TO ENSURE THAT ERRORS PROPAGATE
-@rem IF A COMMAND SHOULD FAIL IT PROBABLY NEEDS TO END WITH
-@rem   || exit /b 1
-@rem BASICALLY, DO THE TESTING IN BASH...
-
-@rem Do not call setlocal!
-@echo off
-
-goto %1
-
-goto :EOF
-
-:CheckPackage
-"%CYG_ROOT%\bin\bash.exe" -lc "cygcheck -dc %1" | findstr %1 > nul
-if %ERRORLEVEL% equ 1 (
-  echo Cygwin package %1 will be installed
-  set CYGWIN_INSTALL_PACKAGES=%CYGWIN_INSTALL_PACKAGES%,%1
-)
-goto :EOF
-
-:UpgradeCygwin
-if "%CYGWIN_INSTALL_PACKAGES%" neq "" "%CYG_ROOT%\setup-%CYG_ARCH%.exe" 
--quiet-mode --no-shortcuts --no-startmenu --no-desktop --only-site --root 
"%CYG_ROOT%" --site "%CYG_MIRROR%" --local-package-dir "%CYG_CACHE%" --packages 
%CYGWIN_INSTALL_PACKAGES:~1% > nul
-for %%P in (%CYGWIN_COMMANDS%) do "%CYG_ROOT%\bin\bash.exe" -lc "%%P --help" > 
nul || set CYGWIN_UPGRADE_REQUIRED=1
-"%CYG_ROOT%\bin\bash.exe" -lc "cygcheck -dc %CYGWIN_PACKAGES%"
-if %CYGWIN_UPGRADE_REQUIRED% equ 1 (
-  echo Cygwin package upgrade required - please go and drink coffee
-  "%CYG_ROOT%\setup-%CYG_ARCH%.exe" --quiet-mode --no-shortcuts --no-startmenu 
--no-desktop --only-site --root "%CYG_ROOT%" --site "%CYG_MIRROR%" 
--local-package-dir "%CYG_CACHE%" --upgrade-also > nul
-  "%CYG_ROOT%\bin\bash.exe" -lc "cygcheck -dc %CYGWIN_PACKAGES%"
-)
-goto :EOF
-
-:install
-set CYG_ROOT=C:\%CYG_ROOT%
-
-cd "%APPVEYOR_BUILD_FOLDER%"
-
-rem CYGWIN_PACKAGES is the list of required Cygwin packages (cygwin is included
-rem in the list just so that the Cygwin version is always displayed on the 
log).
-rem CYGWIN_COMMANDS is a corresponding command to run with --version to test
-rem whether the package works. This is used to verify whether the installation
-rem needs upgrading.
-set CYGWIN_PACKAGES=cygwin make patch diffutils tar unzip
-set CYGWIN_COMMANDS=cygcheck make patch diff tar unzip
-
-if "%OCAML_PORT%" equ "mingw" (
-  set CYGWIN_PACKAGES=%CYGWIN_PACKAGES% mingw64-i686-gcc-core
-  set CYGWIN_COMMANDS=%CYGWIN_COMMANDS% i686-w64-mingw32-core
-)
-if "%OCAML_PORT%" equ "mingw64" (
-  set CYGWIN_PACKAGES=%CYGWIN_PACKAGES% mingw64-x86_64-gcc-core
-  set CYGWIN_COMMANDS=%CYGWIN_COMMANDS% x86_64-w64-mingw32-core
-)
-if "%OCAML_PORT:~0,6%" equ "cygwin" (
-  set CYGWIN_PACKAGES=%CYGWIN_PACKAGES% flexdll gcc-core
-  set CYGWIN_COMMANDS=%CYGWIN_COMMANDS% flexlink gcc
-)
-
-set CYGWIN_INSTALL_PACKAGES=
-set CYGWIN_UPGRADE_REQUIRED=0
-
-for %%P in (%CYGWIN_PACKAGES%) do call :CheckPackage %%P
-call :UpgradeCygwin
-
-if "%OCAML_PORT%" equ "msvc64" call "C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
-if "%OCAML_PORT%" equ "msvc" call "C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"
-
-"%CYG_ROOT%\bin\bash.exe" -lc "$APPVEYOR_BUILD_FOLDER/appveyor.sh install" || 
exit /b 1
-
-set PATH=%OCAML_ROOT%\%OCAML_VERSION%\%OCAML_PORT%\bin;%PATH%
-
-goto :EOF
-
-:build
-"%CYG_ROOT%\bin\bash.exe" -lc "$APPVEYOR_BUILD_FOLDER/appveyor.sh build" || 
exit /b 1
-
-goto :EOF
-
-:test
-
-goto :EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/appveyor.sh 
new/opam-file-format-2.2.0/appveyor.sh
--- old/opam-file-format-2.1.6/appveyor.sh      2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/appveyor.sh      1970-01-01 01:00:00.000000000 
+0100
@@ -1,167 +0,0 @@
-#!/bin/bash
-
-TERM=st
-
-# Increment whenever the OCaml version or a package is updated to invalidate 
the caches
-SERIAL=1
-
-ROOT_CYG=$(echo $OCAML_ROOT| cygpath -f -)
-APPVEYOR_BUILD_FOLDER=$(echo $APPVEYOR_BUILD_FOLDER| cygpath -f -)
-
-ERRORS_ALLOWED=0
-function quietly_log {
-  if ! script --quiet --return --append --command "$1" $LOG_FILE > /dev/null 
2>&1 ; then
-    sed -e 's/\d027\[K//g' \
-        -e 's/\d027\[m/\d027[0m/g' \
-        -e 's/\d027\[01\([m;]\)/\d027[1\1/g' $LOG_FILE
-    if ((ERRORS_ALLOWED)) ; then
-      return 1
-    else
-      exit 1
-    fi
-  fi
-}
-
-function msvs_promote_path {
-  if [[ ${1%64} = "msvc" ]] ; then
-    eval $($ROOT_CYG/msvs-promote-path)
-  fi
-}
-
-case "$1" in
-  install)
-    # @@DRA TODO This should be converted OCAML_ROOT to a regexp, not having 
C:\\\\OCaml hard coded!
-    if ! cat $APPVEYOR_BUILD_FOLDER/appveyor.yml | tr -d '\015' | sed -e 
'1,/^cache:/d' -e '/^$/,$d' | grep -q "^ \+- \+C:\\\\OCaml$" ; then
-      echo "$(tput setf 4)ERROR$(tput sgr0) C:\\OCaml doesn't appear to be 
cached in appveyor.yml"
-      exit 1
-    fi
-
-    if [[ ! -e $ROOT_CYG/$OCAML_VERSION/$OCAML_PORT/bin/ocamlopt.exe || ! -e 
$ROOT_CYG/$OCAML_VERSION/version || $(cat $ROOT_CYG/$OCAML_VERSION/version) != 
"$OCAML_VERSION-$SERIAL" ]] ; then
-      if [[ -e $ROOT_CYG/$OCAML_VERSION/version && $(cat 
$ROOT_CYG/$OCAML_VERSION/version) != "$OCAML_VERSION-$SERIAL" ]] ; then
-        echo "Build cache for $OCAML_VERSION has serial $(cat 
$ROOT_CYG/$OCAML_VERSION/version); should be $OCAML_VERSION-$SERIAL -- clearing"
-        rm -rf $ROOT_CYG/$OCAML_VERSION
-      elif [[ ! -e $ROOT_CYG/$OCAML_VERSION/version ]] ; then
-        rm -rf $ROOT_CYG/$OCAML_VERSION
-      fi
-
-      PREFIX=$ROOT_CYG/$OCAML_VERSION/$OCAML_PORT
-      ROOT=$(echo $OCAML_ROOT| cygpath -m -f -)/$OCAML_VERSION/$OCAML_PORT
-      OCAML_BRANCH=${OCAML_VERSION%.*}
-      OCAML_BRANCH=${OCAML_BRANCH/.}
-
-      if [[ ! -d $APPVEYOR_BUILD_FOLDER/../src ]] ; then
-        mkdir -p $APPVEYOR_BUILD_FOLDER/../src
-        cd $APPVEYOR_BUILD_FOLDER/../src
-        git clone https://github.com/ocaml/ocaml.git
-        cd ocaml
-        mkdir -p $PREFIX
-        cp tools/msvs-promote-path $ROOT_CYG/
-        cd ..
-        FLEXDLL_VER=0.37
-        appveyor DownloadFile 
"https://github.com/alainfrisch/flexdll/releases/download/$FLEXDLL_VER/flexdll-bin-$FLEXDLL_VER.zip";
 -FileName flexdll-bin-$FLEXDLL_VER.zip
-        [[ -e $PREFIX/../version ]] || echo $OCAML_VERSION-$SERIAL> 
$PREFIX/../version
-      fi
-
-      cd $APPVEYOR_BUILD_FOLDER/../src/ocaml
-      git checkout $OCAML_VERSION
-      git worktree add ../$OCAML_VERSION/$OCAML_PORT/ocaml -b 
build-$OCAML_VERSION-$OCAML_PORT
-      if [[ $OCAML_BRANCH -ge 403 ]] ; then
-        pushd ../$OCAML_VERSION/$OCAML_PORT/ocaml > /dev/null
-        git submodule update --init
-        popd > /dev/null
-      fi
-      cd ../$OCAML_VERSION/$OCAML_PORT/ocaml
-      if [[ ${OCAML_PORT%64} = "cygwin" ]] ; then
-        if [[ $OCAML_BRANCH -gt 406 ]] ; then
-          NO_ALT_RUNTIMES="-no-instrumented-runtime -no-debug-runtime"
-        else
-          NO_ALT_RUNTIMES=
-        fi
-        PRE_WORLD=
-        POST_WORLD=
-        MAKEFILE=
-        ./configure -prefix $PREFIX -no-ocamldoc -no-debugger $NO_ALT_RUNTIMES
-      else
-        if [[ $OCAML_BRANCH -ge 406 ]] ; then
-          cp config/s-nt.h byterun/caml/s.h
-          cp config/m-nt.h byterun/caml/m.h
-        else
-          cp config/s-nt.h config/s.h
-          cp config/m-nt.h config/m.h
-        fi
-        if [[ $OCAML_BRANCH -ge 405 ]] ; then
-          POST_WORLD=flexlink.opt
-          MAKEFILE=
-        else
-          POST_WORLD=
-          MAKEFILE=-f Makefile.nt
-        fi
-        if [[ $OCAML_BRANCH -lt 403 ]] ; then
-          mkdir -p $PREFIX/bin
-          pushd $PREFIX/bin > /dev/null
-          case $OCAML_PORT in
-            msvc)
-              MANIFEST=default.manifest;;
-            msvc64)
-              MANIFEST=default_amd64.manifest;;
-            *)
-              MANIFEST=;;
-          esac
-          unzip $APPVEYOR_BUILD_FOLDER/../src/flexdll-bin-$FLEXDLL_VER.zip 
flexdll_*$OCAML_PORT.* flexdll.h flexlink.exe $MANIFEST
-          popd > /dev/null
-          PRE_WORLD=
-        else
-          PRE_WORLD=flexdll
-        fi
-        sed -e "s|PREFIX=[^\r]*|PREFIX=$ROOT|" config/Makefile.$OCAML_PORT > 
config/Makefile
-        msvs_promote_path $OCAML_PORT
-      fi
-
-      LOG_FILE=OCaml-$OCAML_VERSION-$OCAML_PORT.log
-      echo "Building OCaml $OCAML_VERSION for $OCAML_PORT" | tee $LOG_FILE
-      echo "Please see $LOG_FILE for further information"
-      LOG_FILE="$APPVEYOR_BUILD_FOLDER/$LOG_FILE"
-      quietly_log "make $MAKEFILE $PRE_WORLD world.opt $POST_WORLD install"
-      # Remove unnecessary executables to keep the build cache size down
-      # These are removed here to ensure findlib doesn't configure itself
-      # to use .opt commands
-      if [[ $OCAML_BRANCH -ge 404 ]] ; then
-        if [[ ${OCAML_PORT%64} != "cygwin" ]] ; then
-          rm $PREFIX/bin/*.opt.exe
-        fi
-        rm $PREFIX/bin/*.byte.exe
-      else
-        for i in $PREFIX/bin/*.opt.exe ; do
-          rm ${i%.opt.exe}.exe
-          mv $i ${i%.opt.exe}.exe
-        done
-      fi
-      # Remove unnecessary commands to keep the build cache size down
-      rm -f 
$PREFIX/bin/{ocamlcp,ocamldebug,ocamldoc,ocamlmktop,ocamlobjinfo,ocamloptp,ocamlprof}.exe
 \
-            $PREFIX/lib/{expunge,extract_crc,objinfo_helper}.exe
-      # Remove unnecessary files
-      if [[ $OCAML_BRANCH -lt 405 && $OCAML_BRANCH -gt 402 ]] ; then
-        rm $PREFIX/*.txt
-      fi
-      find $PREFIX -name \*.cmt\* | xargs rm
-      find $PREFIX -name \*.ml\* | xargs rm
-      rm -f $PREFIX/lib/compiler-libs/*.cmx* 
$PREFIX/lib/compiler-libs/*.{lib,a} $PREFIX/lib/compiler-libs/ocamloptcomp.cma
-      echo "Complete"
-      appveyor PushArtifact $(echo $LOG_FILE| cygpath -m -f -)
-    fi
-    ;;
-  build)
-    if [[ -z $2 ]] ; then
-      set -o pipefail
-      SCRIPT=$(echo "$0"| cygpath -f -)
-      script -qec "\"$SCRIPT\" $1 script" | sed -e 's/\d027\[K//g' \
-                                                -e 's/\d027\[m/\d027[0m/g' \
-                                                -e 
's/\d027\[01\([m;]\)/\d027[1\1/g'
-      exit $?
-    fi
-
-    msvs_promote_path $OCAML_PORT
-
-    make -C $APPVEYOR_BUILD_FOLDER all
-    ;;
-esac
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/appveyor.yml 
new/opam-file-format-2.2.0/appveyor.yml
--- old/opam-file-format-2.1.6/appveyor.yml     2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/appveyor.yml     1970-01-01 01:00:00.000000000 
+0100
@@ -1,42 +0,0 @@
-platform:
-  - x64
-
-image: Visual Studio 2017
-
-clone_depth: 1
-
-environment:
-  global:
-    CYG_ROOT: cygwin64
-    CYG_ARCH: x86_64
-    OCAML_ROOT: C:\OCaml
-    OCAML_VERSION: 4.06.1
-    CYG_CACHE: C:\cygwin\var\cache\setup
-    CYG_MIRROR: http://mirrors.kernel.org/sourceware/cygwin/
-  matrix:
-    - CYG_ROOT: cygwin
-      CYG_ARCH: x86
-      OCAML_PORT: cygwin
-    - CYG_ROOT: cygwin64
-      OCAML_PORT: cygwin64
-    - OCAML_PORT: msvc
-    - OCAML_PORT: msvc64
-    - OCAML_PORT: mingw
-    - OCAML_PORT: mingw64
-
-cache:
-  - C:\OCaml
-
-install:
-  - call "%APPVEYOR_BUILD_FOLDER%\appveyor.cmd" install
-
-build_script:
-  - call "%APPVEYOR_BUILD_FOLDER%\appveyor.cmd" build
-
-test_script:
-  - call "%APPVEYOR_BUILD_FOLDER%\appveyor.cmd" test
-
-# Uncomment this to enable Remote Desktop on the build worker at the end of the
-# build. The worker is available for the remainder of the allocated hour.
-#on_finish:
-#    - ps: $blockRdp = $true; iex ((new-object 
net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/dune-project 
new/opam-file-format-2.2.0/dune-project
--- old/opam-file-format-2.1.6/dune-project     2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/dune-project     2025-07-03 16:27:27.000000000 
+0200
@@ -1 +1,2 @@
-(lang dune 1.3)
+(lang dune 3.13)
+(using menhir 2.0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/opam-file-format.opam 
new/opam-file-format-2.2.0/opam-file-format.opam
--- old/opam-file-format-2.1.6/opam-file-format.opam    2023-03-20 
22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/opam-file-format.opam    2025-07-03 
16:27:27.000000000 +0200
@@ -1,5 +1,5 @@
 opam-version: "2.0"
-version: "2.1.6"
+version: "2.2.0"
 synopsis: "Parser and printer for the opam file syntax"
 maintainer: "Louis Gesbert <louis.gesb...@ocamlpro.com>"
 authors: "Louis Gesbert <louis.gesb...@ocamlpro.com>"
@@ -7,17 +7,12 @@
 bug-reports: "https://github.com/ocaml/opam-file-format/issues";
 license: "LGPL-2.1-only WITH OCaml-LGPL-linking-exception"
 dev-repo: "git+https://github.com/ocaml/opam-file-format";
-build: [
-  [make "byte" {!ocaml:native} "all" {ocaml:native}] {!dune:installed}
-  ["dune" "build" "-p" name "-j" jobs "@install" "@doc" {with-doc}] 
{dune:installed}
-  ["dune" "runtest" "-p" name "-j" jobs] {with-test & dune:installed}
-]
-install: [make "install" "PREFIX=%{prefix}%"] {!dune:installed}
+build: ["dune" "build" "-p" name "-j" jobs]
+run-test: ["dune" "runtest" "-p" name "-j" jobs]
 depends: [
-  "ocaml" {>= "3.09.0"}
-  "alcotest" {with-test}
-]
-depopts: [
-  "dune"
+  "ocaml" {>= "4.02"}
+  "dune" {>= "3.13"}
+  "menhir" {>= "20211230"}
+  "alcotest" {with-test & >= "0.4.8"}
+  "fmt" {with-test}
 ]
-conflicts: "dune" {< "1.3.0"}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/src/META.in 
new/opam-file-format-2.2.0/src/META.in
--- old/opam-file-format-2.1.6/src/META.in      2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/src/META.in      1970-01-01 01:00:00.000000000 
+0100
@@ -1,4 +0,0 @@
-version = VERSION
-description = "Parser and printer for the opam file syntax"
-archive(byte) = "opam-file-format.cma"
-archive(native) = "opam-file-format.cmxa"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/src/Makefile 
new/opam-file-format-2.2.0/src/Makefile
--- old/opam-file-format-2.1.6/src/Makefile     2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/src/Makefile     1970-01-01 01:00:00.000000000 
+0100
@@ -1,67 +0,0 @@
-all: opam-file-format.cmxa opam-file-format.cma
-
-%.ml: %.mll
-       ocamllex $<
-
-EMPTY=
-SPACE=$(EMPTY) $(EMPTY)
-OCAML_VERSION:=$(firstword $(subst ~, ,$(subst +, ,$(shell ocamlc -version))))
-ifeq ($(OCAML_VERSION),)
-OCAML_VERSION:=0
-else
-OCAML_VERSION:=$(subst ., ,$(OCAML_VERSION))
-OCAML_VERSION:=$(subst $(SPACE),,$(firstword $(OCAML_VERSION))$(foreach 
i,$(wordlist 2,$(words $(OCAML_VERSION)),$(OCAML_VERSION)),$(if $(filter 0 1 2 
3 4 5 6 7 8 9,$(i)),0,)$(i)))
-endif
-
-ifeq ($(shell test $(OCAML_VERSION) -ge 40202 || echo no-attributes),)
-PP=
-else
-PP=-pp 'sed -e s/\\[@@\\?ocaml[^]]*\\]//'
-endif
-
-show:
-       echo $(OCAML_VERSION)
-
-opamParserTypes.cmi: opamParserTypes.cmo
-
-%.ml %.mli: %.mly
-       ocamlyacc $<
-
-%.cmi: %.mli
-       ocamlc -c $(PP) $<
-
-%.cmo: %.ml
-       ocamlc -c $(PP) $<
-
-%.cmx: %.ml
-       ocamlopt -c $(PP) $<
-
-MODULES = opamParserTypes opamBaseParser opamLexer opamParser opamPrinter
-
-GENERATED = $(patsubst %.mly,%.ml,$(wildcard *.mly)) \
-            $(patsubst %.mly,%.mli,$(wildcard *.mly)) \
-            $(patsubst %.mll,%.ml,$(wildcard *.mll)) \
-           META
-
-opam-file-format.cma: $(addsuffix .cmo,$(MODULES))
-       ocamlc -a $^ -o $@
-
-opam-file-format.cmxa: $(addsuffix .cmx,$(MODULES))
-       ocamlopt -a $^ -o $@
-
-opam-file-format.cmxs: $(addsuffix .cmx,$(MODULES))
-       ocamlopt -shared $^ -o $@
-
-META: META.in ../opam-file-format.opam $(wildcard *.cm*)
-       sed -e 's/VERSION/$(shell sed -ne "s/^version: //p" 
../opam-file-format.opam)/' \
-           $(if $(wildcard *.cmx*),,-e '/archive(native)/d') \
-           $(if $(wildcard *.cma),,-e '/archive(byte)/d') $< > $@
-
-.PHONY: clean
-clean:
-       rm -f *.cm* *.o *.a $(GENERATED) .depend .merlin
-
-.depend: *.ml *.mli $(GENERATED)
-       ocamldep $(PP) *.mli *.ml > .depend
-
--include .depend
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/src/compat/domain.ml 
new/opam-file-format-2.2.0/src/compat/domain.ml
--- old/opam-file-format-2.1.6/src/compat/domain.ml     1970-01-01 
01:00:00.000000000 +0100
+++ new/opam-file-format-2.2.0/src/compat/domain.ml     2025-07-03 
16:27:27.000000000 +0200
@@ -0,0 +1,4 @@
+module DLS = struct
+  let new_key f = f ()
+  let get x = x
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/src/compat/dune 
new/opam-file-format-2.2.0/src/compat/dune
--- old/opam-file-format-2.1.6/src/compat/dune  1970-01-01 01:00:00.000000000 
+0100
+++ new/opam-file-format-2.2.0/src/compat/dune  2025-07-03 16:27:27.000000000 
+0200
@@ -0,0 +1,6 @@
+(rule
+ (enabled_if (< %{ocaml_version} "5.0"))
+ (action (with-stdout-to compat.sexp (echo "(\"domain\")"))))
+(rule
+ (enabled_if (>= %{ocaml_version} "5.0"))
+ (action (with-stdout-to compat.sexp (echo "()"))))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/src/dune 
new/opam-file-format-2.2.0/src/dune
--- old/opam-file-format-2.1.6/src/dune 2023-03-20 22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/src/dune 2025-07-03 16:27:27.000000000 +0200
@@ -3,18 +3,21 @@
   (public_name opam-file-format)
   (synopsis "Parser and printer for the opam file syntax")
   (wrapped false)
-  (modules :standard \ flags)
+  (private_modules (:include compat/compat.sexp))
   (flags :standard (:include flags.sexp)))
 
 (rule
-  (with-stdout-to flags.ml
-    (echo "print_string (if String.sub Sys.ocaml_version 0 5 = \"4.02.\" then 
\"(-w -50)\" else \"()\")")))
+ (enabled_if (< %{ocaml_version} "5.0"))
+ (action (copy compat/domain.ml domain.ml)))
 
 (rule
-  (with-stdout-to flags.sexp
-    (run ocaml %{dep:flags.ml})))
+ (enabled_if (< %{ocaml_version} "4.03"))
+ (action (with-stdout-to flags.sexp (echo "(-w -50)"))))
+(rule
+ (enabled_if (>= %{ocaml_version} "4.03"))
+ (action (with-stdout-to flags.sexp (echo "()"))))
 
-(ocamlyacc opamBaseParser)
+(menhir (modules opamBaseParser) (infer false))
 (ocamllex opamLexer)
 
 (env (dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/src/opamBaseParser.mly 
new/opam-file-format-2.2.0/src/opamBaseParser.mly
--- old/opam-file-format-2.1.6/src/opamBaseParser.mly   2023-03-20 
22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/src/opamBaseParser.mly   2025-07-03 
16:27:27.000000000 +0200
@@ -15,20 +15,15 @@
 
 (** Opam config file generic type parser *)
 
-let pos_of_lexing_pos spos epos =
+let get_pos spos epos =
   Lexing.({
     filename = spos.pos_fname;
     start = spos.pos_lnum, spos.pos_cnum - spos.pos_bol;
     stop = epos.pos_lnum, epos.pos_cnum - epos.pos_bol;
   })
 
-let get_pos_full ?(s=1) n =
-  pos_of_lexing_pos (Parsing.rhs_start_pos s) (Parsing.rhs_end_pos n)
-
-let get_pos n = get_pos_full ~s:n n
-
 (* This must match up with the package's version; checked by the build system 
*)
-let version = (2, 1)
+let version = (2, 2)
 
 %}
 
@@ -46,28 +41,27 @@
 %token <OpamParserTypes.FullPos.pfxop_kind> PFXOP
 %token <OpamParserTypes.FullPos.env_update_op_kind> ENVOP
 
-%left COLON
 %left ATOM
 %left OR
 %left AND
-%nonassoc ENVOP
 %nonassoc PFXOP
-%left LBRACE RBRACE
+%left LBRACE
 %nonassoc RELOP
-%nonassoc URELOP
 
 %start main value
 %type <string -> OpamParserTypes.FullPos.opamfile> main
 %type <OpamParserTypes.FullPos.value> value
+%type <OpamParserTypes.FullPos.value> valu_
 %type <OpamParserTypes.FullPos.value list> values
 %type <OpamParserTypes.FullPos.opamfile_item> item
+%type <OpamParserTypes.FullPos.value> atom
+%type <OpamParserTypes.FullPos.opamfile_item list> items
 
 %%
 
-main:
-| items EOF { fun file_name ->
-        { file_contents = $1; file_name } }
-;
+/* Exported values (must have an End Of File token) */
+main: items EOF { fun file_name -> { file_contents = $1; file_name } };
+value: valu_ EOF { $1 };
 
 items:
 | item items { $1 :: $2 }
@@ -75,58 +69,61 @@
 ;
 
 item:
-| IDENT COLON value                {
-  { pos = get_pos_full 3;
+| IDENT COLON valu_                {
+  { pos = get_pos $startpos($1) $endpos($3);
     pelem =
-      Variable ({ pos = get_pos 1; pelem =  $1 }, $3);
+      Variable ({ pos = get_pos $startpos($1) $endpos($1); pelem =  $1 }, $3);
   }
 }
 | IDENT LBRACE items RBRACE {
-  { pos = get_pos_full 4;
+  { pos = get_pos $startpos($1) $endpos($4);
     pelem =
-      Section ({section_kind = { pos = get_pos 1; pelem = $1 };
+      Section ({section_kind = { pos = get_pos $startpos($1) $endpos($1); 
pelem = $1 };
                 section_name = None;
                 section_items =
-                  { pos = get_pos_full ~s:2 4; pelem = $3 };
+                  { pos = get_pos $startpos($2) $endpos($4); pelem = $3 };
                })
   }
 }
 | IDENT STRING LBRACE items RBRACE {
-  { pos = get_pos_full 5;
+  { pos = get_pos $startpos($1) $endpos($5);
     pelem =
-      Section ({section_kind = { pos = get_pos 1; pelem = $1 };
-                section_name = Some { pos = get_pos 2; pelem = $2 };
+      Section ({section_kind = { pos = get_pos $startpos($1) $endpos($1); 
pelem = $1 };
+                section_name = Some { pos = get_pos $startpos($2) $endpos($2); 
pelem = $2 };
                 section_items =
-                  { pos = get_pos_full ~s:3 5; pelem = $4 };
+                  { pos = get_pos $startpos($3) $endpos($5); pelem = $4 };
                })
   }
 }
 ;
 
-value:
+/* Previously called "value" and directly exported.
+   However menhir handles end-of-stream differently compared to ocamlyacc.
+   Thus "value" (exported, handling end-of-stream) and "valu_" (internal, does 
not handle end-of-stream) had to be created */
+valu_:
 | atom            %prec ATOM { $1 }
-| LPAR values RPAR           {{ pos = get_pos_full 3 ; pelem = Group { pos = 
get_pos_full ~s:1 3; pelem = $2 } }}
-| LBRACKET values RBRACKET   {{ pos = get_pos_full 3 ; pelem = List { pos = 
get_pos_full ~s:1 3; pelem = $2 } }}
-| value LBRACE values RBRACE {{ pos = get_pos_full 4 ;
-                                pelem = Option ($1, { pos = get_pos_full ~s:2 
4; pelem = $3 }) }}
-| value AND value            {{ pos = get_pos_full 3 ; pelem = Logop ({ pos = 
get_pos 2 ; pelem = `And },$1,$3) }}
-| value OR value             {{ pos = get_pos_full 3 ; pelem = Logop ({ pos = 
get_pos 2 ; pelem = `Or },$1,$3) }}
-| atom RELOP atom            {{ pos = get_pos_full 3 ; pelem = Relop ({ pos = 
get_pos 2 ; pelem = $2 },$1,$3) }}
-| atom ENVOP atom            {{ pos = get_pos_full 3 ; pelem = Env_binding 
($1,{ pos = get_pos 2 ; pelem = $2 },$3) }}
-| PFXOP value                {{ pos = get_pos_full 2 ; pelem = Pfxop ({ pos = 
get_pos 1 ; pelem = $1 },$2) }}
-| RELOP atom                 {{ pos = get_pos_full 2 ; pelem = Prefix_relop ({ 
pos = get_pos 1 ; pelem = $1 },$2) }}
+| LPAR values RPAR           {{ pos = get_pos $startpos($1) $endpos($3) ; 
pelem = Group { pos = get_pos $startpos($1) $endpos($3); pelem = $2 } }}
+| LBRACKET values RBRACKET   {{ pos = get_pos $startpos($1) $endpos($3) ; 
pelem = List { pos = get_pos $startpos($1) $endpos($3); pelem = $2 } }}
+| valu_ LBRACE values RBRACE {{ pos = get_pos $startpos($1) $endpos($4) ;
+                                pelem = Option ($1, { pos = get_pos 
$startpos($2) $endpos($4); pelem = $3 }) }}
+| valu_ AND valu_            {{ pos = get_pos $startpos($1) $endpos($3) ; 
pelem = Logop ({ pos = get_pos $startpos($2) $endpos($2) ; pelem = `And 
},$1,$3) }}
+| valu_ OR valu_             {{ pos = get_pos $startpos($1) $endpos($3) ; 
pelem = Logop ({ pos = get_pos $startpos($2) $endpos($2) ; pelem = `Or },$1,$3) 
}}
+| atom RELOP atom            {{ pos = get_pos $startpos($1) $endpos($3) ; 
pelem = Relop ({ pos = get_pos $startpos($2) $endpos($2) ; pelem = $2 },$1,$3) 
}}
+| atom ENVOP atom            {{ pos = get_pos $startpos($1) $endpos($3) ; 
pelem = Env_binding ($1,{ pos = get_pos $startpos($2) $endpos($2) ; pelem = $2 
},$3) }}
+| PFXOP valu_                {{ pos = get_pos $startpos($1) $endpos($2) ; 
pelem = Pfxop ({ pos = get_pos $startpos($1) $endpos($1) ; pelem = $1 },$2) }}
+| RELOP atom                 {{ pos = get_pos $startpos($1) $endpos($2) ; 
pelem = Prefix_relop ({ pos = get_pos $startpos($1) $endpos($1) ; pelem = $1 
},$2) }}
 ;
 
 values:
 |                            { [] }
-| value values               { $1 :: $2 }
+| valu_ values               { $1 :: $2 }
 ;
 
 atom:
-| IDENT                      {{ pos = get_pos 1 ; pelem = Ident $1 }}
-| BOOL                       {{ pos = get_pos 1 ; pelem = Bool $1 }}
-| INT                        {{ pos = get_pos 1 ; pelem = Int $1 }}
-| STRING                     {{ pos = get_pos 1 ; pelem = String $1 }}
+| IDENT                      {{ pos = get_pos $startpos($1) $endpos($1) ; 
pelem = Ident $1 }}
+| BOOL                       {{ pos = get_pos $startpos($1) $endpos($1) ; 
pelem = Bool $1 }}
+| INT                        {{ pos = get_pos $startpos($1) $endpos($1) ; 
pelem = Int $1 }}
+| STRING                     {{ pos = get_pos $startpos($1) $endpos($1) ; 
pelem = String $1 }}
 ;
 
 %%
@@ -155,15 +152,6 @@
               | Failure _
               | End_of_file -> (0, 0)
 
-let with_clear_parser f x =
-  try
-    let r = f x in
-    Parsing.clear_parser ();
-    r
-  with e ->
-    Parsing.clear_parser ();
-    raise e
-
 (* Update a lexbuf with position information prior to raising an exception *)
 let reset_lexbuf_and_abort l file_name (start_line, start_col) (end_line, 
end_col) exn =
   let open Lexing in
@@ -178,7 +166,7 @@
 | Match_failure _ -> false
 | _ -> true
 
-let get_three_tokens lexer lexbuf = 
+let get_three_tokens lexer lexbuf =
   let open Lexing in
   try
     let p0 = lexbuf.lex_start_p, lexbuf.lex_curr_p in
@@ -236,9 +224,9 @@
              an exception to be raised before the element has been fully 
parsed.
              In this case, we generate a single opam-version Variable to 
return.
            *)
-          {pelem = Variable({pelem = "opam-version"; pos = pos_of_lexing_pos 
p0 p1},
-                             {pelem = String ver; pos = pos_of_lexing_pos p2 
p3});
-           pos = pos_of_lexing_pos p0 p3}
+          {pelem = Variable({pelem = "opam-version"; pos = get_pos p0 p1},
+                             {pelem = String ver; pos = get_pos p2 p3});
+           pos = get_pos p0 p3}
         in
         (header, (nopatch ver >= (2, 1)), (nopatch ver > version))
     | _ ->
@@ -262,7 +250,7 @@
           lexer lexbuf
   in
   let result =
-    try with_clear_parser (main lexer lexbuf) file_name
+    try main lexer lexbuf file_name
     with e when trap_exceptions && not_fatal e ->
       (* Append a syntactically invalid sentinel section "#" to the version
          header which was manually parsed. That is then sufficient
@@ -273,7 +261,7 @@
          detect the parsing error. *)
       let sentinel =
         let pos =
-          Lexing.(pos_of_lexing_pos lexbuf.lex_start_p lexbuf.lex_curr_p)
+          Lexing.(get_pos lexbuf.lex_start_p lexbuf.lex_curr_p)
         in
         let section =
           {section_kind = {pelem = "#"; pos};
@@ -294,4 +282,10 @@
   end;
   result
 
-let value t l = with_clear_parser (value t) l
+let main t l fn =
+  try main t l fn with
+  | Error -> raise Parsing.Parse_error
+
+let value t l =
+  try value t l with
+  | Error -> raise Parsing.Parse_error
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/src/opamLexer.mll 
new/opam-file-format-2.2.0/src/opamLexer.mll
--- old/opam-file-format-2.1.6/src/opamLexer.mll        2023-03-20 
22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/src/opamLexer.mll        2025-07-03 
16:27:27.000000000 +0200
@@ -84,7 +84,7 @@
 (* Some hash-consing for strings *)
 module HS =
   Weak.Make(struct include String let hash = Hashtbl.hash let equal = (=) end)
-let hm = HS.create 317
+let hm = Domain.DLS.new_key (fun () -> HS.create 317)
 
 
 let buffer_rule r lb =
@@ -93,7 +93,7 @@
   r b lb ;
   (* buffer start position, instead of last lexem position *)
   lb.Lexing.lex_start_p <- pos;
-  HS.merge hm (Buffer.contents b)
+  HS.merge (Domain.DLS.get hm) (Buffer.contents b)
 }
 
 let eol = '\r'? '\n'
@@ -131,7 +131,7 @@
 | "true" { BOOL true }
 | "false"{ BOOL false }
 | int    { INT (int_of_string (Lexing.lexeme lexbuf)) }
-| ident  { IDENT (HS.merge hm (Lexing.lexeme lexbuf)) }
+| ident  { IDENT (HS.merge (Domain.DLS.get hm) (Lexing.lexeme lexbuf)) }
 | relop  { RELOP (FullPos.relop (Lexing.lexeme lexbuf)) }
 | '&'    { AND }
 | '|'    { OR }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/tests/Makefile 
new/opam-file-format-2.2.0/tests/Makefile
--- old/opam-file-format-2.1.6/tests/Makefile   2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/tests/Makefile   1970-01-01 01:00:00.000000000 
+0100
@@ -1,13 +0,0 @@
-all: tests
-
-tests:
-       ocamlfind ocamlc tests.ml -o tests -linkpkg -package alcotest -package 
opam-file-format
-
-run: tests
-       ./tests
-
-.PHONY: clean
-clean:
-       rm -f tests
-       rm -f *.cmi *.cmo
-       rm -rf _build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/tests/dune 
new/opam-file-format-2.2.0/tests/dune
--- old/opam-file-format-2.1.6/tests/dune       2023-03-20 22:51:07.000000000 
+0100
+++ new/opam-file-format-2.2.0/tests/dune       2025-07-03 16:27:27.000000000 
+0200
@@ -1,6 +1,6 @@
 (test
   (name tests)
   (deps sample.opam)
-  (libraries alcotest opam-file-format))
+  (libraries alcotest opam-file-format fmt))
 
 (rule (copy sample-opam sample.opam))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/tests/hygiene/dune 
new/opam-file-format-2.2.0/tests/hygiene/dune
--- old/opam-file-format-2.1.6/tests/hygiene/dune       2023-03-20 
22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/tests/hygiene/dune       2025-07-03 
16:27:27.000000000 +0200
@@ -6,7 +6,7 @@
   (flags :standard (:include flags.sexp))
   (action (run %{test} %{version:opam-file-format})))
 
-(ocamlyacc OpamBaseParser)
+(menhir (modules OpamBaseParser) (infer false))
 
 (rule
   (with-stdout-to OpamBaseParser.mly
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/tests/legacy/Makefile 
new/opam-file-format-2.2.0/tests/legacy/Makefile
--- old/opam-file-format-2.1.6/tests/legacy/Makefile    2023-03-20 
22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/tests/legacy/Makefile    1970-01-01 
01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-.PHONY: test
-test:: legacy.byte
-
-ifneq "$(shell ocamlopt -vnum 2>/dev/null)" ""
-test:: legacy.native
-endif
-
-src/%:
-       $(MAKE) -C src $*
-
-legacy.byte: src/opam-file-format.cma legacy.ml
-       ocamlc -o $@ -I src $^
-
-legacy.native: src/opam-file-format.cmxa legacy.ml
-       ocamlopt -o $@ -I src $^
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/tests/legacy/dune 
new/opam-file-format-2.2.0/tests/legacy/dune
--- old/opam-file-format-2.1.6/tests/legacy/dune        2023-03-20 
22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/tests/legacy/dune        1970-01-01 
01:00:00.000000000 +0100
@@ -1,8 +0,0 @@
-; This test (driven by Dune) ensures that the old build system works
-
-(copy_files ../../opam-file-format.opam)
-
-(alias
-  (name runtest)
-  (deps Makefile legacy.ml opam-file-format.opam (glob_files src/*))
-  (action (run make test)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/tests/legacy/legacy.ml 
new/opam-file-format-2.2.0/tests/legacy/legacy.ml
--- old/opam-file-format-2.1.6/tests/legacy/legacy.ml   2023-03-20 
22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/tests/legacy/legacy.ml   1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-(* This "program" is used to verify that the library is linkable - see #40 *)
-let file = OpamParser.FullPos.file "../opam-file-format.opam"
-in Printf.printf "Successfully loaded %s\n" 
file.OpamParserTypes.FullPos.file_name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/tests/legacy/src/dune 
new/opam-file-format-2.2.0/tests/legacy/src/dune
--- old/opam-file-format-2.1.6/tests/legacy/src/dune    2023-03-20 
22:51:07.000000000 +0100
+++ new/opam-file-format-2.2.0/tests/legacy/src/dune    1970-01-01 
01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-; We mustn't copy the dune file, but Dune's globbing has no syntax for that
-(copy_files ../../../src/o*)
-(copy_files ../../../src/M*)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/tests/simple/dune 
new/opam-file-format-2.2.0/tests/simple/dune
--- old/opam-file-format-2.1.6/tests/simple/dune        1970-01-01 
01:00:00.000000000 +0100
+++ new/opam-file-format-2.2.0/tests/simple/dune        2025-07-03 
16:27:27.000000000 +0200
@@ -0,0 +1,6 @@
+(copy_files ../../opam-file-format.opam)
+
+(test
+ (name simple)
+ (deps opam-file-format.opam)
+ (libraries opam-file-format))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opam-file-format-2.1.6/tests/simple/simple.ml 
new/opam-file-format-2.2.0/tests/simple/simple.ml
--- old/opam-file-format-2.1.6/tests/simple/simple.ml   1970-01-01 
01:00:00.000000000 +0100
+++ new/opam-file-format-2.2.0/tests/simple/simple.ml   2025-07-03 
16:27:27.000000000 +0200
@@ -0,0 +1,3 @@
+(* This "program" is used to verify that the library is linkable - see #40 *)
+let file = OpamParser.FullPos.file "./opam-file-format.opam"
+in Printf.printf "Successfully loaded %s\n" 
file.OpamParserTypes.FullPos.file_name

Reply via email to