dan-t / cabal-bounds

Set the version bounds of dependencies in a cabal file
Other
66 stars 6 forks source link

Update to work with newer GHC and packages? #16

Closed mouse07410 closed 3 months ago

mouse07410 commented 1 year ago

Could you please update the code, so it can be built with GHC-9 (anything from 9.2.7 to 9.6.1) and current packages on Hackage?

dan-t commented 1 year ago

On Fri, May 12, 2023 at 11:34:26AM -0700, Mouse wrote:

Could you please update the code, so it can be built with GHC-9 (anything from 9.2.7 to 9.6.1) and current packages on Hackage?

I looked into it. At the moment the newer Cabal library versions removed functionality I'm depended on. I've contacted the Cabal developers for a solution.

mouse07410 commented 1 year ago

I looked into it

Thank you!

At the moment the newer Cabal library versions removed functionality I'm depended on. I've contacted the Cabal developers for a solution.

Let's hope they provide a solution or a workaround soon. If your request is in the form of a GitHub issue - would you like to refer to it here, to make it easier to keep track...?

dan-t commented 1 year ago

Let's hope they provide a solution or a workaround soon. If your request is in the form of a GitHub issue - would you like to refer to it here, to make it easier to keep track...?

I already asked them on their mailing list and they seem fine with my proposed change. I will make a patch for the cabal library - most likely somewhere at the end of this week - and then open a github issue for it.

mouse07410 commented 1 year ago

Any updates?

dan-t commented 1 year ago

On Mon, Jun 12, 2023 at 07:43:49PM -0700, Mouse wrote:

Any updates?

Well, life got inbetween. But I didn't forget it.

dan-t commented 1 year ago

I added now a pull request to the cabal library: https://github.com/haskell/cabal/pull/9034

mouse07410 commented 1 year ago

Any luck so far? I just tried today to install cabal-bounds from Hackage, and it failed:

Building     lens-aeson-1.2.3 (lib)
Installing   lens-aeson-1.2.3 (lib)
Completed    lens-aeson-1.2.3 (lib)

Failed to build cabal-lenses-0.10.1.
Build log (
/Users/ur20980/.cache/cabal/logs/ghc-9.6.2/cbl-lnss-0.10.1-3288ee85.log ):
Configuring library for cabal-lenses-0.10.1..
Preprocessing library for cabal-lenses-0.10.1..
Building library for cabal-lenses-0.10.1..
[ 1 of 11] Compiling CabalLenses.CondVars ( lib/CabalLenses/CondVars.hs, dist/build/CabalLenses/CondVars.o, dist/build/CabalLenses/CondVars.dyn_o )

lib/CabalLenses/CondVars.hs:52:20: error: [GHC-76037]
    Not in scope: data constructor ‘PD.MkFlag’
    NB: the module ‘Distribution.PackageDescription’ does not export ‘MkFlag’.
   |
52 |       nameWithDflt PD.MkFlag { PD.flagName = name, PD.flagDefault = dflt } =
   |                    ^^^^^^^^^

lib/CabalLenses/CondVars.hs:87:15: error: [GHC-76037]
    Not in scope: data constructor ‘PD.Flag’
    NB: the module ‘Distribution.PackageDescription’ does not export ‘Flag’.
   |
87 |       hasVar (PD.Flag name)
   |               ^^^^^^^
[ 2 of 11] Compiling CabalLenses.Package ( lib/CabalLenses/Package.hs, dist/build/CabalLenses/Package.o, dist/build/CabalLenses/Package.dyn_o )

lib/CabalLenses/Package.hs:20:13: warning: [GHC-58520] [-Wtype-equality-requires-operators]
    The use of ‘~’ without TypeOperators
    will become an error in a future GHC release.
    Suggested fix: Perhaps you intended to use TypeOperators
   |
20 | instance (t ~ PackageName) => Rewrapped PackageName t
   |             ^
[ 3 of 11] Compiling CabalLenses.PackageDescription ( lib/CabalLenses/PackageDescription.hs, dist/build/CabalLenses/PackageDescription.o, dist/build/CabalLenses/PackageDescription.dyn_o )
[ 4 of 11] Compiling CabalLenses.Section ( lib/CabalLenses/Section.hs, dist/build/CabalLenses/Section.o, dist/build/CabalLenses/Section.dyn_o )
[ 8 of 11] Compiling CabalLenses.Utils ( lib/CabalLenses/Utils.hs, dist/build/CabalLenses/Utils.o, dist/build/CabalLenses/Utils.dyn_o )
[ 9 of 11] Compiling CabalLenses.Version ( lib/CabalLenses/Version.hs, dist/build/CabalLenses/Version.o, dist/build/CabalLenses/Version.dyn_o )

lib/CabalLenses/Version.hs:21:57: error: [GHC-88464]
    Variable not in scope:
      mkVersionIntervals :: [a] -> VersionIntervals
    Suggested fix:
      Perhaps use one of these:
        ‘asVersionIntervals’ (imported from Distribution.Version),
        ‘toVersionIntervals’ (imported from Distribution.Version),
        ‘unVersionIntervals’ (imported from Distribution.Version)
   |
21 |       toVersionRange intervals = fromVersionIntervals . mkVersionIntervals $ intervals
   |                                                         ^^^^^^^^^^^^^^^^^^
[11 of 11] Compiling Paths_cabal_lenses ( dist/build/autogen/Paths_cabal_lenses.hs, dist/build/Paths_cabal_lenses.o, dist/build/Paths_cabal_lenses.dyn_o )
Error: cabal: Failed to build cabal-lenses-0.10.1 (which is required by
exe:cabal-bounds from cabal-bounds-2.3.0). See the build log above for
details.

$
$
$ cabal --version
cabal-install version 3.10.1.0
compiled using version 3.10.1.0 of the Cabal library 
$ ghc -V
The Glorious Glasgow Haskell Compilation System, version 9.6.2
$
dan-t commented 1 year ago

> Any luck so far? I just tried today to install cabal-bounds from Hackage, and it failed:

My pull request is still discussed by the cabal devs.

dan-t commented 9 months ago

The last released version 3.10.2.0 of the Cabal library in october 2023 still doesn't contain my changes. Looks like we've to wait for 3.11.

dan-t commented 3 months ago

cabal-bounds 2.4.0 is now released, supporting ghc 9.4.7.

mouse07410 commented 3 months ago

Thank you, that is nice.

But please consider that the current GHC versions are: 9.4.8 (outdated, probably no more updates or fixes), 9.6.5 (getting long in the tooth), 9.8.2 (current stable "standard"), and 9.10.1 (bleeding edge). In view of this ...

dan-t commented 3 months ago

The needed updates have been for the Cabal library, so I don‘t think that newer ghc versions should have any problems.

mouse07410 commented 3 months ago

Sorry, I do have problems with GHC-9.8.2:

$ cabal install cabal-bounds --overwrite-policy=always
Resolving dependencies...
Error: cabal: Could not resolve dependencies:
[__0] trying: cabal-bounds-2.4.0 (user goal)
[__1] trying: unordered-containers-0.2.20 (dependency of cabal-bounds)
[__2] trying: hashable-1.4.4.0 (dependency of unordered-containers)
[__3] next goal: lens (dependency of cabal-bounds)
[__3] rejecting: lens-5.3.2 (conflict: cabal-bounds => lens>=4.0.1 && <4.20)
[__3] skipping: lens-5.3.1, lens-5.3, lens-5.2.3, lens-5.2.2, lens-5.2.1,
lens-5.2, lens-5.1.1, lens-5.1, lens-5.0.1, lens-5 (has the same
characteristics that caused the previous version to fail: excluded by
constraint '>=4.0.1 && <4.20' from 'cabal-bounds')
[__3] rejecting: lens-4.19.2 (conflict: hashable==1.4.4.0, lens =>
hashable>=1.1.2.3 && <1.4)
[__3] skipping: lens-4.19.1, lens-4.19, lens-4.18.1, lens-4.18, lens-4.17.1,
lens-4.17, lens-4.16.1, lens-4.16, lens-4.15.4, lens-4.15.3, lens-4.15.2,
lens-4.15.1, lens-4.15, lens-4.14, lens-4.13.2.1, lens-4.13.2, lens-4.13.1,
lens-4.13, lens-4.12.3, lens-4.12.2, lens-4.12.1, lens-4.12, lens-4.11.1,
lens-4.11, lens-4.10, lens-4.9.1, lens-4.9, lens-4.8, lens-4.7.0.1, lens-4.7,
lens-4.6.0.1, lens-4.6, lens-4.5, lens-4.4.0.2, lens-4.4.0.1, lens-4.4,
lens-4.3.3, lens-4.3.2, lens-4.3.1, lens-4.3, lens-4.2, lens-4.1.2.1,
lens-4.1.2, lens-4.1.1, lens-4.1, lens-4.0.7, lens-4.0.6, lens-4.0.5,
lens-4.0.4, lens-4.0.3, lens-4.0.2, lens-4.0.1, lens-4.0, lens-3.10.3,
lens-3.10.2, lens-3.10.1, lens-3.10.0.1, lens-3.10, lens-3.9.2, lens-3.9.1,
lens-3.9.0.3, lens-3.9.0.2, lens-3.9.0.1, lens-3.9, lens-3.8.7.3,
lens-3.8.7.2, lens-3.8.7.1, lens-3.8.7, lens-3.8.6, lens-3.8.5, lens-3.8.4,
lens-3.8.3, lens-3.8.2, lens-3.8.1, lens-3.8.0.2, lens-3.8.0.1, lens-3.8,
lens-3.7.6, lens-3.7.5, lens-3.7.4, lens-3.7.3, lens-3.7.2, lens-3.7.1.2,
lens-3.7.1.1, lens-3.7.1, lens-3.7.0.2, lens-3.7.0.1, lens-3.7, lens-3.6.0.4,
lens-3.6.0.3, lens-3.6.0.2, lens-3.6.0.1, lens-3.6, lens-3.5.1, lens-3.5,
lens-3.4, lens-3.3, lens-3.2, lens-3.1, lens-3.0.6, lens-3.0.5, lens-3.0.4,
lens-3.0.3, lens-3.0.2, lens-3.0.1, lens-3.0, lens-2.9, lens-2.8,
lens-2.7.0.1, lens-2.7, lens-2.6.1, lens-2.6, lens-2.5 (has the same
characteristics that caused the previous version to fail: excludes 'hashable'
version 1.4.4.0)
[__3] rejecting: lens-2.4.0.2 (conflict: cabal-bounds => lens>=4.0.1 && <4.20)
[__3] skipping: lens-2.4, lens-2.3, lens-2.2, lens-2.1, lens-2.0, lens-1.9.1,
lens-1.9, lens-1.8, lens-1.7.1, lens-1.7, lens-1.6, lens-1.5, lens-1.4.1,
lens-1.4, lens-1.3.1, lens-1.3, lens-1.2, lens-1.1.1, lens-1.1, lens-1.0.3,
lens-1.0.2, lens-1.0.1, lens-1.0, lens-0.9, lens-0.8, lens-0.7, lens-0.6,
lens-0.5, lens-0.4, lens-0.3, lens-0.2, lens-0.1 (has the same characteristics
that caused the previous version to fail: excluded by constraint '>=4.0.1 &&
<4.20' from 'cabal-bounds')
[__3] fail (backjumping, conflict set: cabal-bounds, hashable, lens)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: lens, hashable, base, cabal-bounds,
unordered-containers
Try running with --minimize-conflict-set to improve the error message.

$ cabal install cabal-bounds --overwrite-policy=always --minimize-conflict-set
Resolving dependencies...
Error: cabal: Could not resolve dependencies:
[__0] trying: cabal-bounds-2.4.0 (user goal)
[__1] next goal: lens (dependency of cabal-bounds)
[__1] rejecting: lens-5.3.2 (conflict: cabal-bounds => lens>=4.0.1 && <4.20)
[__1] skipping: lens-5.3.1, lens-5.3, lens-5.2.3, lens-5.2.2, lens-5.2.1,
lens-5.2, lens-5.1.1, lens-5.1, lens-5.0.1, lens-5 (has the same
characteristics that caused the previous version to fail: excluded by
constraint '>=4.0.1 && <4.20' from 'cabal-bounds')
[__1] trying: lens-4.19.2
[__2] next goal: hashable (dependency of lens)
[__2] rejecting: hashable-1.4.4.0 (conflict: lens => hashable>=1.1.2.3 &&
<1.4)
[__2] skipping: hashable-1.4.3.0, hashable-1.4.2.0, hashable-1.4.1.0,
hashable-1.4.0.2, hashable-1.4.0.1, hashable-1.4.0.0 (has the same
characteristics that caused the previous version to fail: excluded by
constraint '>=1.1.2.3 && <1.4' from 'lens')
[__2] trying: hashable-1.3.5.0
[__3] next goal: base (dependency of cabal-bounds)
[__3] rejecting: base-4.19.1.0/installed-654f (conflict: hashable => base>=4.5
&& <4.17)
[__3] skipping: base-4.20.0.0, base-4.19.1.0, base-4.19.0.0, base-4.18.2.1,
base-4.18.2.0, base-4.18.1.0, base-4.18.0.0, base-4.17.2.1, base-4.17.2.0,
base-4.17.1.0, base-4.17.0.0 (has the same characteristics that caused the
previous version to fail: excluded by constraint '>=4.5 && <4.17' from
'hashable')
[__3] rejecting: base-4.16.4.0, base-4.16.3.0, base-4.16.2.0, base-4.16.1.0,
base-4.16.0.0, base-4.15.1.0, base-4.15.0.0, base-4.14.3.0, base-4.14.2.0,
base-4.14.1.0, base-4.14.0.0, base-4.13.0.0, base-4.12.0.0, base-4.11.1.0,
base-4.11.0.0, base-4.10.1.0, base-4.10.0.0, base-4.9.1.0, base-4.9.0.0,
base-4.8.2.0, base-4.8.1.0, base-4.8.0.0, base-4.7.0.2, base-4.7.0.1,
base-4.7.0.0, base-4.6.0.1, base-4.6.0.0, base-4.5.1.0, base-4.5.0.0,
base-4.4.1.0, base-4.4.0.0, base-4.3.1.0, base-4.3.0.0, base-4.2.0.2,
base-4.2.0.1, base-4.2.0.0, base-4.1.0.0, base-4.0.0.0, base-3.0.3.2,
base-3.0.3.1 (constraint from non-upgradeable package requires installed
instance)
[__3] fail (backjumping, conflict set: base, cabal-bounds, hashable)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: cabal-bounds, lens, base, hashable

$ ghc -V
The Glorious Glasgow Haskell Compilation System, version 9.8.2
$ cabal install cabal-bounds --overwrite-policy=always --minimize-conflict-set --allow-newer
Resolving dependencies...
Build profile: -w ghc-9.8.2 -O2
In order, the following will be built (use -v for more details):
 - OneTuple-0.4.2 (lib) (requires download & build)
 - character-ps-0.1 (lib) (requires download & build)
 - filepath-1.5.2.0 (lib) (requires download & build)
 - indexed-traversable-0.1.4 (lib) (requires download & build)
 - integer-conversion-0.1.1 (lib) (requires download & build)
 - reflection-2.1.8 (lib) (requires download & build)
 - assoc-1.1.1 (lib) (requires download & build)
 - system-filepath-0.4.14 (lib:system-filepath) (requires build)
 - th-abstraction-0.7.0.0 (lib) (requires download & build)
 - unix-2.8.5.1 (lib:unix) (requires build)
 - hashable-1.4.4.0 (lib) (requires build)
 - comonad-5.0.8 (lib) (requires build)
 - system-fileio-0.3.16.4 (lib) (requires build)
 - directory-1.3.8.5 (lib:directory) (requires download & build)
 - text-short-0.1.6 (lib) (requires download & build)
 - time-compat-1.9.7 (lib) (requires download & build)
 - these-1.2.1 (lib) (requires download & build)
 - scientific-0.3.8.0 (lib) (requires download & build)
 - unordered-containers-0.2.20 (lib) (requires build)
 - data-fix-0.3.3 (lib) (requires download & build)
 - uuid-types-1.0.6 (lib) (requires download & build)
 - bifunctors-5.6.2 (lib) (requires build)
 - process-1.6.20.0 (lib:process) (requires build)
 - alex-3.5.1.0 (exe:alex) (requires build)
 - text-iso8601-0.1.1 (lib) (requires download & build)
 - strict-0.5 (lib) (requires build)
 - indexed-traversable-instances-0.1.2 (lib) (requires download & build)
 - semigroupoids-6.0.1 (lib) (requires build)
 - profunctors-5.6.2 (lib) (requires build)
 - cmdargs-0.10.22 (lib) (requires build)
 - Cabal-syntax-3.12.0.0 (lib) (requires build)
 - witherable-0.5 (lib) (requires download & build)
 - semialign-1.3.1 (lib) (requires download & build)
 - invariant-0.6.3 (lib) (requires build)
 - free-5.2 (lib) (requires build)
 - Cabal-3.12.0.0 (lib) (requires download & build)
 - aeson-2.2.2.0 (lib) (requires download & build)
 - adjunctions-4.4.2 (lib) (requires build)
 - kan-extensions-5.2.6 (lib) (requires download & build)
 - lens-5.3.2 (lib) (requires download & build)
 - lens-aeson-1.2.3 (lib) (requires build)
 - cabal-lenses-0.12.0 (lib) (requires download & build)
 - cabal-bounds-2.4.0 (lib) (requires download & build)
 - cabal-bounds-2.4.0 (exe:cabal-bounds) (requires download & build)
Downloading  character-ps-0.1
Starting     system-filepath-0.4.14 (all, legacy fallback)
Downloaded   character-ps-0.1
Downloading  assoc-1.1.1

.  .  .

Completed    semialign-1.3.1 (lib)
Starting     aeson-2.2.2.0 (lib)
Building     aeson-2.2.2.0 (lib)
Installing   free-5.2 (lib)
Completed    free-5.2 (lib)
Installing   aeson-2.2.2.0 (lib)
Completed    aeson-2.2.2.0 (lib)

Failed to build unix-2.8.5.1.
Build log ( /Users/ur20980/.cabal/logs/ghc-9.8.2/nx-2.8.5.1-bea34034.log ):
Configuring unix-2.8.5.1...
configure: WARNING: unrecognized options: --with-compiler
checking for gcc... /opt/local/bin/clang
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether /opt/local/bin/clang accepts -g... yes
checking for /opt/local/bin/clang option to enable C11 features... none needed
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for wchar.h... yes
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking whether _XOPEN_SOURCE should be defined... no
checking for an ANSI C-conforming const... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for dirent.h... yes
checking for fcntl.h... yes
checking for grp.h... yes
checking for limits.h... yes
checking for pwd.h... yes
checking for signal.h... yes
checking for string.h... (cached) yes
checking for sys/resource.h... yes
checking for sys/stat.h... (cached) yes
checking for sys/times.h... yes
checking for sys/time.h... yes
checking for sys/utsname.h... yes
checking for sys/wait.h... yes
checking for sys/sysmacros.h... no
checking for bsd/libutil.h... no
checking for libutil.h... no
checking for pty.h... no
checking for utmp.h... yes
checking for termios.h... yes
checking for time.h... yes
checking for unistd.h... (cached) yes
checking for utime.h... yes
checking for getgrgid_r... yes
checking for getgrnam_r... yes
checking for getpwnam_r... yes
checking for getpwuid_r... yes
checking for getpwnam... yes
checking for getpwuid... yes
checking for getpwent... yes
checking for getgrent... yes
checking for lchown... yes
checking for setenv... yes
checking for sysconf... yes
checking for unsetenv... yes
checking for clearenv... no
checking for nanosleep... yes
checking for ptsname... yes
checking for setitimer... yes
checking for readdir_r... yes
checking for alarm... yes
checking for dup... yes
checking for execv... yes
checking for getpid... yes
checking for mknod... yes
checking for mkstemp... yes
checking for pipe... yes
checking for times... yes
checking for chown... yes
checking for fchdir... yes
checking for fchmod... yes
checking for struct rlimit... yes
checking for statx... no
checking for struct statx... no
checking for statx.stx_mnt_id... no
checking for F_GETLK from fcntl.h... checking how to run the C preprocessor... /opt/local/bin/clang -E
checking for grep that handles long lines and -e... /opt/local/bin/ggrep
checking for egrep... /opt/local/bin/ggrep -E
yes
checking build system type... x86_64-apple-darwin23.5.0
checking host system type... x86_64-apple-darwin23.5.0
checking target system type... x86_64-apple-darwin23.5.0
checking for telldir... yes
checking for seekdir... yes
checking for _NSGetEnviron... yes
checking for /opt/local/bin/clang options needed to detect all undeclared functions... none needed
checking whether execvpe is declared... no
checking for execvpe... no
checking whether CLOCKS_PER_SEC is declared... yes
checking for struct stat.st_atim... no
checking for struct stat.st_mtim... no
checking for struct stat.st_ctim... no
checking for struct stat.st_atimespec... yes
checking for struct stat.st_mtimespec... yes
checking for struct stat.st_ctimespec... yes
checking for struct stat.st_atimensec... no
checking for struct stat.st_mtimensec... no
checking for struct stat.st_ctimensec... no
checking for struct stat.st_atime_n... no
checking for struct stat.st_mtime_n... no
checking for struct stat.st_ctime_n... no
checking for struct stat.st_uatime... no
checking for struct stat.st_umtime... no
checking for struct stat.st_uctime... no
checking for struct stat.st_blocks... yes
checking for struct stat.st_blksize... yes
checking for struct passwd.pw_gecos... yes
checking for utimensat... yes
checking for futimens... yes
checking for lutimes... yes
checking for futimes... yes
checking for mkstemps... yes
checking for mkdtemp... yes
checking for fsync... yes
checking whether fdatasync is declared... no
checking for posix_fadvise... no
checking for posix_fallocate... no
checking whether tcdrain is declared... yes
checking whether ctermid is declared... yes
checking for library containing shm_open... none required
checking for shm_open... yes
checking for shm_unlink... yes
checking value of SIGABRT... 6
checking value of SIGALRM... 14
checking value of SIGBUS... 10
checking value of SIGCHLD... 20
checking value of SIGCONT... 19
checking value of SIGFPE... 8
checking value of SIGHUP... 1
checking value of SIGILL... 4
checking value of SIGINT... 2
checking value of SIGKILL... 9
checking value of SIGPIPE... 13
checking value of SIGQUIT... 3
checking value of SIGSEGV... 11
checking value of SIGSTOP... 17
checking value of SIGTERM... 15
checking value of SIGTSTP... 18
checking value of SIGTTIN... 21
checking value of SIGTTOU... 22
checking value of SIGUSR1... 30
checking value of SIGUSR2... 31
checking value of SIGPOLL... -1
checking value of SIGPROF... 27
checking value of SIGSYS... 12
checking value of SIGTRAP... 5
checking value of SIGURG... 16
checking value of SIGVTALRM... 26
checking value of SIGXCPU... 24
checking value of SIGXFSZ... 25
checking value of SIG_BLOCK... 1
checking value of SIG_SETMASK... 3
checking value of SIG_UNBLOCK... 2
checking value of SIGINFO... 29
checking value of SIGWINCH... 28
checking for _SC_GETGR_R_SIZE_MAX... yes
checking for _SC_GETPW_R_SIZE_MAX... yes
checking return type of usleep... int
checking return type of unsetenv... int
checking for RTLD_NEXT from dlfcn.h... yes
checking for RTLD_DEFAULT from dlfcn.h... yes
checking for openpty... yes
checking for /dev/ptmx... yes
checking for /dev/ptc... no
checking for library containing dlopen... none required
checking for library containing sem_close... none required
checking whether sem_getvalue is declared... yes
configure: creating ./config.status
config.status: creating unix.buildinfo
config.status: creating include/HsUnixConfig.h
configure: WARNING: unrecognized options: --with-compiler
Preprocessing library for unix-2.8.5.1..
Building library for unix-2.8.5.1..
[ 1 of 53] Compiling System.Posix.ByteString.FilePath ( dist/build/System/Posix/ByteString/FilePath.hs, dist/build/System/Posix/ByteString/FilePath.o, dist/build/System/Posix/ByteString/FilePath.dyn_o )
[ 2 of 53] Compiling System.Posix.Directory.Common ( dist/build/System/Posix/Directory/Common.hs, dist/build/System/Posix/Directory/Common.o, dist/build/System/Posix/Directory/Common.dyn_o )
[ 3 of 53] Compiling System.Posix.Directory.ByteString ( dist/build/System/Posix/Directory/ByteString.hs, dist/build/System/Posix/Directory/ByteString.o, dist/build/System/Posix/Directory/ByteString.dyn_o )
[ 4 of 53] Compiling System.Posix.Directory.Fd ( dist/build/System/Posix/Directory/Fd.hs, dist/build/System/Posix/Directory/Fd.o, dist/build/System/Posix/Directory/Fd.dyn_o )
[ 5 of 53] Compiling System.Posix.Directory.Internals ( dist/build/System/Posix/Directory/Internals.hs, dist/build/System/Posix/Directory/Internals.o, dist/build/System/Posix/Directory/Internals.dyn_o )
[ 6 of 53] Compiling System.Posix.DynamicLinker.Prim ( dist/build/System/Posix/DynamicLinker/Prim.hs, dist/build/System/Posix/DynamicLinker/Prim.o, dist/build/System/Posix/DynamicLinker/Prim.dyn_o )
[ 7 of 53] Compiling System.Posix.DynamicLinker.Common ( dist/build/System/Posix/DynamicLinker/Common.hs, dist/build/System/Posix/DynamicLinker/Common.o, dist/build/System/Posix/DynamicLinker/Common.dyn_o )
[ 8 of 53] Compiling System.Posix.DynamicLinker.ByteString ( dist/build/System/Posix/DynamicLinker/ByteString.hs, dist/build/System/Posix/DynamicLinker/ByteString.o, dist/build/System/Posix/DynamicLinker/ByteString.dyn_o )
[ 9 of 53] Compiling System.Posix.DynamicLinker ( dist/build/System/Posix/DynamicLinker.hs, dist/build/System/Posix/DynamicLinker.o, dist/build/System/Posix/DynamicLinker.dyn_o )
[10 of 53] Compiling System.Posix.DynamicLinker.Module ( dist/build/System/Posix/DynamicLinker/Module.hs, dist/build/System/Posix/DynamicLinker/Module.o, dist/build/System/Posix/DynamicLinker/Module.dyn_o )
[11 of 53] Compiling System.Posix.DynamicLinker.Module.ByteString ( dist/build/System/Posix/DynamicLinker/Module/ByteString.hs, dist/build/System/Posix/DynamicLinker/Module/ByteString.o, dist/build/System/Posix/DynamicLinker/Module/ByteString.dyn_o )
[12 of 53] Compiling System.Posix.Env.Internal ( dist/build/System/Posix/Env/Internal.hs, dist/build/System/Posix/Env/Internal.o, dist/build/System/Posix/Env/Internal.dyn_o )
[13 of 53] Compiling System.Posix.Env ( dist/build/System/Posix/Env.hs, dist/build/System/Posix/Env.o, dist/build/System/Posix/Env.dyn_o )
[14 of 53] Compiling System.Posix.Env.ByteString ( dist/build/System/Posix/Env/ByteString.hs, dist/build/System/Posix/Env/ByteString.o, dist/build/System/Posix/Env/ByteString.dyn_o )
[15 of 53] Compiling System.Posix.Env.PosixString ( dist/build/System/Posix/Env/PosixString.hs, dist/build/System/Posix/Env/PosixString.o, dist/build/System/Posix/Env/PosixString.dyn_o )

System/Posix/Env/PosixString.hsc:45:1: error: [GHC-87110]
    Could not load module ‘System.OsString.Internal.Types’.
    It is a member of the hidden package ‘os-string-2.0.2.2’.
    Perhaps you need to add ‘os-string’ to the build-depends in your .cabal file.
    It is a member of the hidden package ‘os-string-2.0.2’.
    Perhaps you need to add ‘os-string’ to the build-depends in your .cabal file.
    It is a member of the hidden package ‘filepath-1.4.300.2’.
    Perhaps you need to add ‘filepath’ to the build-depends in your .cabal file.
    It is a member of the hidden package ‘filepath-1.4.300.1’.
    Perhaps you need to add ‘filepath’ to the build-depends in your .cabal file.
    It is a member of the hidden package ‘filepath-1.4.200.1’.
    Perhaps you need to add ‘filepath’ to the build-depends in your .cabal file.
    Use -v to see a list of the files searched for.
   |
45 | import System.OsString.Internal.Types
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

System/Posix/Env/PosixString.hsc:47:1: error: [GHC-61948]
    Could not find module ‘System.OsString.Data.ByteString.Short’.
    Perhaps you meant
      System.OsString.Data.ByteString.Short (needs flag -package-id os-string-2.0.2.2)
      System.OsString.Data.ByteString.Short (needs flag -package-id os-string-2.0.2)
      System.OsPath.Data.ByteString.Short (needs flag -package-id filepath-1.4.300.2)
   |
47 | import qualified "os-string" System.OsString.Data.ByteString.Short as B
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[16 of 53] Compiling System.Posix.Error ( System/Posix/Error.hs, dist/build/System/Posix/Error.o, dist/build/System/Posix/Error.dyn_o )
[17 of 53] Compiling System.Posix.Directory ( dist/build/System/Posix/Directory.hs, dist/build/System/Posix/Directory.o, dist/build/System/Posix/Directory.dyn_o )
[18 of 53] Compiling System.Posix.Fcntl ( dist/build/System/Posix/Fcntl.hs, dist/build/System/Posix/Fcntl.o, dist/build/System/Posix/Fcntl.dyn_o )

.  .  .

[52 of 53] Compiling System.Posix.ByteString ( System/Posix/ByteString.hs, dist/build/System/Posix/ByteString.o, dist/build/System/Posix/ByteString.dyn_o )
[53 of 53] Compiling System.Posix     ( System/Posix.hs, dist/build/System/Posix.o, dist/build/System/Posix.dyn_o )
Error: cabal: Failed to build unix-2.8.5.1 (which is required by
exe:cabal-bounds from cabal-bounds-2.4.0). See the build log above for
details.
dan-t commented 3 months ago

I'm still trying to work out what the right solution is, but at the moment cabal-bounds can be build with ghc-9.8.2 with the aid of a cabal.project file containing: packages: ./*.cabal constraints: unix +os-string, directory +os-string

And then building it with cabal build --allow-newer.

dan-t commented 3 months ago

cabal-bounds-2.5.0 should now work with ghc-9.8.2.