[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] ocaml: install built modules



On Thu, 2010-11-11 at 15:33 +0000, Ian Campbell wrote:
> # HG changeset patch
> # User Ian Campbell <ian.campbell@xxxxxxxxxx>
> # Date 1289489569 0
> # Node ID d98249b40f3c4a41b2f1ae9dc6b09b90b323460c
> # Parent  566505063e89cf583633613893d2913fe56eefee
> ocaml: install built modules
> 
> Previously the install target was having no effect because it ended up
> calling the default target in the subdir Makefile instead of the
> install target.

I wondered if this change might make the .NOTPARALLEL statements
unnecessary, especially in tools/ocaml/Makefile since that is now
serialized due to the shape of the stuff in Rules.mk.

I sure about removing the tools/ocaml/Makefile.rules one or the ones in
tools/ocaml/libs/{xs,xb}/Makefile (which may be redundant since the
Makefile.rules one was added?).

Eventually I figured no harm could come from leaving them as is for now.

> 
> Resolve this by tying the tools/ocaml Makefiles into the generic
> handling done by tools/Rules.mk.
> 
> Other changes arising in one way or another from this:
> - Add libs/xl/META.in
> - Update .hgignore for META files
> - Create leading directories
> - Remove existing module before installation in install targer
>   (worksaround what appears to be a quirk of "ocamlfind install")
> - Use the globally defined $(DESTDIR)
> - Move "ocamlfind printfconf destdir" to a common variable,
>   repurposing exising unused OCAMLDESTDIR, incorporating $(DESTDIR) at
>   the same time.
> - Drop a few unused variabe definitions (mainly to avoid deciding if
>   $(DESTDIR) made sense for them or not.
> - Pass -destdir to ocamlfind in uninstall target for symmetry with
>   install target.
> 
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> 
> diff -r 566505063e89 -r d98249b40f3c .hgignore
> --- a/.hgignore Thu Nov 11 15:07:42 2010 +0000
> +++ b/.hgignore Thu Nov 11 15:32:49 2010 +0000
> @@ -292,6 +292,7 @@
>  ^tools/ioemu-dir$
>  ^tools/ocaml/.*/.*\.annot$
>  ^tools/ocaml/.*/.*\.cmx?a$
> +^tools/ocaml/.*/META$
>  ^tools/ocaml/.*/\.ocamldep\.make$
>  ^tools/ocaml/xenstored/oxenstored$
>  ^xen/\.banner.*$
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/Makefile
> --- a/tools/ocaml/Makefile      Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/Makefile      Thu Nov 11 15:32:49 2010 +0000
> @@ -1,43 +1,19 @@ XEN_ROOT = ../..
>  XEN_ROOT = ../..
>  include $(XEN_ROOT)/tools/Rules.mk
> 
> -SUBDIRS_LIBS = \
> -       libs/uuid libs/mmap \
> -       libs/log libs/xc libs/eventchn \
> -       libs/xb libs/xs libs/xl
> -
>  SUBDIRS_PROGRAMS = xenstored
> 
> -SUBDIRS = $(SUBDIRS_LIBS) $(SUBDIRS_PROGRAMS)
> +SUBDIRS = libs $(SUBDIRS_PROGRAMS)
> 
>  .NOTPARALLEL:
>  # targets here must be run in order, otherwise we can try
>  # to build programs before the libraries are done
> 
>  .PHONY: all
> -all: build
> +all: subdirs-all
> 
> -.PHONY: build
> -build: SUBDIRS
> -
> -.PHONY: SUBDIRS SUBDIRS_PROGRAMS SUBDIRS_LIBS
> -SUBDIRS SUBDIRS_PROGRAMS SUBDIRS_LIBS:
> -       @set -e; for d in $($@); do                     \
> -               echo " === building $$d";               \
> -               $(MAKE) --no-print-directory -C $$d;    \
> -       done
> -
> -.PHONY: install install-libs install-program
> -install: install-libs install-program
> -
> -install-program: SUBDIRS_PROGRAMS
> -       $(INSTALL_DIR) $(DESTDIR)$(SBINDIR)
> -       $(INSTALL_PROG) xenstored/oxenstored $(DESTDIR)$(SBINDIR)
> -
> -install-libs: SUBDIRS_LIBS
> +.PHONY: install
> +install: subdirs-install
> 
>  .PHONY: clean
> -clean:
> -       @for dir in $(SUBDIRS); do \
> -               $(MAKE) --no-print-directory -C $$dir clean; \
> -       done
> +clean: subdirs-clean
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/common.make
> --- a/tools/ocaml/common.make   Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/common.make   Thu Nov 11 15:32:49 2010 +0000
> @@ -17,13 +17,8 @@ OCAMLOPTFLAGS = $(OCAMLOPTFLAG_G) -ccopt
>  OCAMLOPTFLAGS = $(OCAMLOPTFLAG_G) -ccopt "$(LDFLAGS)" -dtypes 
> $(OCAMLINCLUDE) -cc $(CC) -w F -warn-error F
>  OCAMLCFLAGS += -g $(OCAMLINCLUDE) -w F -warn-error F
> 
> -#LDFLAGS = -cclib -L./
> -
> -DESTDIR ?= /
>  VERSION := 4.1
> 
> -OCAMLABI = $(shell $(OCAMLC) -version)
> -OCAMLLIBDIR = $(shell $(OCAMLC) -where)
> -OCAMLDESTDIR ?= $(OCAMLLIBDIR)
> +OCAMLDESTDIR ?= $(DESTDIR)$(shell ocamlfind printconf destdir)
> 
>  o= >$@.new && mv -f $@.new $@
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/Makefile
> --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
> +++ b/tools/ocaml/libs/Makefile Thu Nov 11 15:32:49 2010 +0000
> @@ -0,0 +1,16 @@
> +XEN_ROOT = ../../..
> +include $(XEN_ROOT)/tools/Rules.mk
> +
> +SUBDIRS= \
> +       uuid mmap \
> +       log xc eventchn \
> +       xb xs xl
> +
> +.PHONY: all
> +all: subdirs-all
> +
> +.PHONY: install
> +install: subdirs-install
> +
> +.PHONY: clean
> +clean: subdirs-clean
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/eventchn/Makefile
> --- a/tools/ocaml/libs/eventchn/Makefile        Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/libs/eventchn/Makefile        Thu Nov 11 15:32:49 2010 +0000
> @@ -19,11 +19,13 @@ OCAML_LIBRARY = eventchn
> 
>  .PHONY: install
>  install: $(LIBS) META
> -       ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf 
> destdir) -ldconf ignore eventchn META $(INTF) $(LIBS) *.a *.so *.cmx
> +       mkdir -p $(OCAMLDESTDIR)
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) eventchn
> +       ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore eventchn 
> META $(INTF) $(LIBS) *.a *.so *.cmx
> 
>  .PHONY: uninstall
>  uninstall:
> -       ocamlfind remove eventchn
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) eventchn
> 
>  include $(TOPLEVEL)/Makefile.rules
> 
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/log/Makefile
> --- a/tools/ocaml/libs/log/Makefile     Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/libs/log/Makefile     Thu Nov 11 15:32:49 2010 +0000
> @@ -32,11 +32,13 @@ syslog.mli : syslog.ml
> 
>  .PHONY: install
>  install: $(LIBS) META
> -       ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf 
> destdir) -ldconf ignore log META $(INTF) $(LIBS) *.a *.so *.cmx
> +       mkdir -p $(OCAMLDESTDIR)
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) log
> +       ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore log META 
> $(INTF) $(LIBS) *.a *.so *.cmx
> 
>  .PHONY: uninstall
>  uninstall:
> -       ocamlfind remove log
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) log
> 
>  include $(TOPLEVEL)/Makefile.rules
> 
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/mmap/Makefile
> --- a/tools/ocaml/libs/mmap/Makefile    Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/libs/mmap/Makefile    Thu Nov 11 15:32:49 2010 +0000
> @@ -18,11 +18,13 @@ OCAML_LIBRARY = mmap
> 
>  .PHONY: install
>  install: $(LIBS) META
> -       ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf 
> destdir) -ldconf ignore mmap META $(INTF) $(LIBS) *.a *.so *.cmx
> +       mkdir -p $(OCAMLDESTDIR)
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) mmap
> +       ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore mmap META 
> $(INTF) $(LIBS) *.a *.so *.cmx
> 
>  .PHONY: uninstall
>  uninstall:
> -       ocamlfind remove mmap
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) mmap
> 
>  include $(TOPLEVEL)/Makefile.rules
> 
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/uuid/Makefile
> --- a/tools/ocaml/libs/uuid/Makefile    Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/libs/uuid/Makefile    Thu Nov 11 15:32:49 2010 +0000
> @@ -17,11 +17,13 @@ OCAML_NOC_LIBRARY = uuid
> 
>  .PHONY: install
>  install: $(LIBS) META
> -       ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf 
> destdir) -ldconf ignore uuid META $(INTF) $(LIBS) *.a *.cmx
> +       mkdir -p $(OCAMLDESTDIR)
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) uuid
> +       ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore uuid META 
> $(INTF) $(LIBS) *.a *.cmx
> 
>  .PHONY: uninstall
>  uninstall:
> -       ocamlfind remove uuid
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) uuid
> 
>  include $(TOPLEVEL)/Makefile.rules
> 
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/xb/Makefile
> --- a/tools/ocaml/libs/xb/Makefile      Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/libs/xb/Makefile      Thu Nov 11 15:32:49 2010 +0000
> @@ -33,10 +33,12 @@ OCAML_LIBRARY = xb
> 
>  .PHONY: install
>  install: $(LIBS) META
> -       ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf 
> destdir) -ldconf ignore xb META $(INTF) $(LIBS) *.a *.so *.cmx
> +       mkdir -p $(OCAMLDESTDIR)
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) xb
> +       ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore xb META 
> $(INTF) $(LIBS) *.a *.so *.cmx
> 
>  .PHONY: uninstall
>  uninstall:
> -       ocamlfind remove xb
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) xb
> 
>  include $(TOPLEVEL)/Makefile.rules
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/xc/Makefile
> --- a/tools/ocaml/libs/xc/Makefile      Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/libs/xc/Makefile      Thu Nov 11 15:32:49 2010 +0000
> @@ -20,10 +20,12 @@ libs: $(LIBS)
> 
>  .PHONY: install
>  install: $(LIBS) META
> -       ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf 
> destdir) -ldconf ignore xc META $(INTF) $(LIBS) *.a *.so *.cmx
> +       mkdir -p $(OCAMLDESTDIR)
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) xc
> +       ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore xc META 
> $(INTF) $(LIBS) *.a *.so *.cmx
> 
>  .PHONY: uninstall
>  uninstall:
> -       ocamlfind remove xc
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) xc
> 
>  include $(TOPLEVEL)/Makefile.rules
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/xl/META.in
> --- /dev/null   Thu Jan 01 00:00:00 1970 +0000
> +++ b/tools/ocaml/libs/xl/META.in       Thu Nov 11 15:32:49 2010 +0000
> @@ -0,0 +1,4 @@
> +version = "@VERSION@"
> +description = "Xen Toolstack Library"
> +archive(byte) = "xl.cma"
> +archive(native) = "xl.cmxa"
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/xl/Makefile
> --- a/tools/ocaml/libs/xl/Makefile      Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/libs/xl/Makefile      Thu Nov 11 15:32:49 2010 +0000
> @@ -17,10 +17,12 @@ libs: $(LIBS)
> 
>  .PHONY: install
>  install: $(LIBS) META
> -       ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf 
> destdir) -ldconf ignore xl META $(INTF) $(LIBS) *.a *.so *.cmx
> +       mkdir -p $(OCAMLDESTDIR)
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) xl
> +       ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore xl META 
> $(INTF) $(LIBS) *.a *.so *.cmx
> 
>  .PHONY: uninstall
>  uninstall:
> -       ocamlfind remove xl
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) xl
> 
>  include $(TOPLEVEL)/Makefile.rules
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/libs/xs/Makefile
> --- a/tools/ocaml/libs/xs/Makefile      Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/libs/xs/Makefile      Thu Nov 11 15:32:49 2010 +0000
> @@ -33,11 +33,13 @@ OCAML_NOC_LIBRARY = xs
> 
>  .PHONY: install
>  install: $(LIBS) META
> -       ocamlfind install -destdir $(DESTDIR)$(shell ocamlfind printconf 
> destdir) -ldconf ignore xs META $(INTF) xs.mli xst.mli xsraw.mli $(LIBS) *.a 
> *.cmx
> +       mkdir -p $(OCAMLDESTDIR)
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) xs
> +       ocamlfind install -destdir $(OCAMLDESTDIR) -ldconf ignore xs META 
> $(INTF) xs.mli xst.mli xsraw.mli $(LIBS) *.a *.cmx
> 
>  .PHONY: uninstall
>  uninstall:
> -       ocamlfind remove xs
> +       ocamlfind remove -destdir $(OCAMLDESTDIR) xs
> 
>  include $(TOPLEVEL)/Makefile.rules
> 
> diff -r 566505063e89 -r d98249b40f3c tools/ocaml/xenstored/Makefile
> --- a/tools/ocaml/xenstored/Makefile    Thu Nov 11 15:07:42 2010 +0000
> +++ b/tools/ocaml/xenstored/Makefile    Thu Nov 11 15:32:49 2010 +0000
> @@ -52,4 +52,8 @@ all: $(INTF) $(PROGRAMS)
> 
>  bins: $(PROGRAMS)
> 
> +install: all
> +       $(INSTALL_DIR) $(DESTDIR)$(SBINDIR)
> +       $(INSTALL_PROG) oxenstored $(DESTDIR)$(SBINDIR)
> +
>  include $(OCAML_TOPLEVEL)/Makefile.rules
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.