From 62b89e61ee82662dce0ba87128e5867eee66c5ca Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Tue, 28 Oct 2025 16:57:11 +0100 Subject: [PATCH 1/2] Add more directories to configure to opam installer --- src/tools/opam_installer.ml | 45 +++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/src/tools/opam_installer.ml b/src/tools/opam_installer.ml index 90f07aa5c33..f94bc38ed8b 100644 --- a/src/tools/opam_installer.ml +++ b/src/tools/opam_installer.ml @@ -21,6 +21,10 @@ type options = { stubsdir: OpamFilename.Dir.t option; topdir: OpamFilename.Dir.t option; docdir: OpamFilename.Dir.t option; + bindir: OpamFilename.Dir.t option; + sbindir: OpamFilename.Dir.t option; + sharedir: OpamFilename.Dir.t option; + etcdir: OpamFilename.Dir.t option; } (* A wrapper on top of commands to either proceed, or output a script *) @@ -182,8 +186,8 @@ let iter_install f instfile o = dest ?fix (instdir_f o.prefix () o.pkgname) in List.iter f - [ dest_global D.bin, S.bin instfile, true; - dest_global D.sbin, S.sbin instfile, true; + [ dest_global ?fix:o.bindir D.bin, S.bin instfile, true; + dest_global ?fix:o.sbindir D.sbin, S.sbin instfile, true; dest_pkg ?fix:o.libdir D.lib, S.lib instfile, false; dest_pkg ?fix:o.libdir D.lib, S.libexec instfile, true; dest_global ?fix:o.libdir D.lib_dir, S.lib_root instfile, false; @@ -191,9 +195,9 @@ let iter_install f instfile o = dest_global ?fix:o.topdir D.toplevel, S.toplevel instfile, false; dest_global ?fix:o.stubsdir D.stublibs, S.stublibs instfile, true; dest_global ?fix:o.mandir D.man_dir, S.man instfile, false; - dest_pkg D.share, S.share instfile, false; - dest_global D.share_dir,S.share_root instfile, false; - dest_pkg D.etc, S.etc instfile, false; + dest_pkg ?fix:o.sharedir D.share, S.share instfile, false; + dest_global ?fix:o.sharedir D.share_dir,S.share_root instfile, false; + dest_pkg ?fix:o.etcdir D.etc, S.etc instfile, false; dest_pkg ?fix:o.docdir D.doc, S.doc instfile, false; ] let install options = @@ -299,7 +303,28 @@ let options = By default $(i,\\$prefix/doc)." in Arg.(value & opt (some string) None & info ~docv:"PATH" ~doc ["docdir"]) in + let bindir = + let doc = "Binaries dir. Relative to $(b,prefix) or absolute. \ + By default $(i,\\$prefix/bin)." in + Arg.(value & opt (some string) None & info ~docv:"PATH" ~doc ["bindir"]) + in + let sbindir = + let doc = "System binaries dir. Relative to $(b,prefix) or absolute. \ + By default $(i,\\$prefix/sbin)." in + Arg.(value & opt (some string) None & info ~docv:"PATH" ~doc ["sbindir"]) + in + let sharedir = + let doc = "Share dir. Relative to $(b,prefix) or absolute. \ + By default $(i,\\$prefix/share)." in + Arg.(value & opt (some string) None & info ~docv:"PATH" ~doc ["sharedir"]) + in + let etcdir = + let doc = "Configuration dir. Relative to $(b,prefix) or absolute. \ + By default $(i,\\$prefix/etc)." in + Arg.(value & opt (some string) None & info ~docv:"PATH" ~doc ["etcdir"]) + in let make_options file prefix script name mandir libdir stubsdir topdir docdir + bindir sbindir sharedir etcdir = let file = match file with @@ -361,10 +386,16 @@ let options = | d, None | (Some _ as d), _ -> d in let docdir = mk_dir docdir in - { file; prefix; script; pkgname; mandir; libdir; stubsdir; topdir; docdir } + let bindir = mk_dir bindir in + let sbindir = mk_dir sbindir in + let sharedir = mk_dir sharedir in + let etcdir = mk_dir etcdir in + { file; prefix; script; pkgname; mandir; libdir; stubsdir; topdir; docdir; + bindir; sbindir; sharedir; etcdir; } in Term.(const make_options $ file $ prefix $ script $ pkgname - $ mandir $ libdir $ stubsdir $ topdir $ docdir) + $ mandir $ libdir $ stubsdir $ topdir $ docdir + $ bindir $ sbindir $ sharedir $ etcdir) let command = let remove = From 660b6eb6ac36533ef8bbf01159f0f1d7697bbf6a Mon Sep 17 00:00:00 2001 From: Raja Boujbel Date: Tue, 28 Oct 2025 16:57:55 +0100 Subject: [PATCH 2/2] propagate from configure to opam installer options --- Makefile | 3 +++ Makefile.config.in | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Makefile b/Makefile index 639c34f68ec..ee4f0519dc2 100644 --- a/Makefile +++ b/Makefile @@ -108,6 +108,9 @@ distclean: clean clean-ext OPAMINSTALLER_FLAGS = --prefix "$(call CYGPATH,$(DESTDIR)$(prefix))" OPAMINSTALLER_FLAGS += --mandir "$(call CYGPATH,$(DESTDIR)$(mandir))" +OPAMINSTALLER_FLAGS += --bindir "$(call CYGPATH,$(DESTDIR)$(bindir))" +OPAMINSTALLER_FLAGS += --sbindir "$(call CYGPATH,$(DESTDIR)$(sbindir))" +OPAMINSTALLER_FLAGS += --etcdir "$(call CYGPATH,$(DESTDIR)$(etcdir))" # With ocamlfind, prefer to install to the standard directory rather # than $(prefix) if there are no overrides diff --git a/Makefile.config.in b/Makefile.config.in index 2933541c81d..583def0f102 100644 --- a/Makefile.config.in +++ b/Makefile.config.in @@ -1,6 +1,9 @@ datarootdir = @datarootdir@ prefix = @prefix@ mandir = @mandir@ +bindir = @bindir@ +sbindir = @sbindir@ +etcdir = @sysconfdir@ version = @PACKAGE_VERSION@ FETCH = @fetch@