Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions Makefile.config.in
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
datarootdir = @datarootdir@
prefix = @prefix@
mandir = @mandir@
bindir = @bindir@
sbindir = @sbindir@
etcdir = @sysconfdir@
version = @PACKAGE_VERSION@
FETCH = @fetch@

Expand Down
45 changes: 38 additions & 7 deletions src/tools/opam_installer.ml
Original file line number Diff line number Diff line change
Expand Up @@ -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 *)
Expand Down Expand Up @@ -182,18 +186,18 @@ 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;
dest_global ?fix:o.libdir D.lib_dir, S.libexec_root instfile, true;
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 =
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 =
Expand Down
Loading