You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
2.0 KiB
59 lines
2.0 KiB
From db8d748b2cad0adc2698e9fcf28727083a711bae Mon Sep 17 00:00:00 2001 |
|
From: David Allsopp <david.allsopp@metastack.com> |
|
Date: Wed, 24 Jan 2018 16:01:56 +0000 |
|
Subject: [PATCH] Warn about installations broken by previous faulty package |
|
|
|
--- |
|
Makefile | 33 +++++++++++++++++++++++++++++++++ |
|
1 file changed, 33 insertions(+) |
|
|
|
diff --git a/Makefile b/Makefile |
|
index b40e588..d4dcd70 100644 |
|
--- a/Makefile |
|
+++ b/Makefile |
|
@@ -14,9 +14,42 @@ install: |
|
$(MAKE) -C src install |
|
$(MAKE) -C toplevel install |
|
|
|
+OCAMLFIND_DIR:=$(dir $(shell command -v ocamlfind 2>/dev/null)) |
|
+OCAMLC_DIR:=$(dir $(shell command -v ocamlc 2>/dev/null)) |
|
+NUM_INSTALLED:=$(shell ocamlfind query num 2>/dev/null) |
|
+ |
|
+ifeq ($(NUM_INSTALLED),) |
|
+# The num findlib package is not already present - wohoo! |
|
+OUR_FAULT=no |
|
+else |
|
+ifeq ($(OCAMLFIND_DIR),$(OCAMLC_DIR)) |
|
+# The num findlib package is present, but ocamlc and ocamlfind are in the |
|
+# same place, which means that either we're looking at a system-installed |
|
+# ocamlfind (which isn't supported), or the user has done something else |
|
+# nefarious and doesn't deserve our sympathy (or, at least, our potentially |
|
+# unhelpful advice) |
|
+OUR_FAULT=no |
|
+else |
|
+# The num findlib package package is present, and ocamlc and ocamlfind reside |
|
+# in different directories, which means that we're almost certainly looking at |
|
+# a system switch which has been damaged by a previous num package installation |
|
+# on an OS which didn't protect the system lib directory. |
|
+OUR_FAULT=probably |
|
+endif |
|
+endif |
|
+ |
|
findlib-install: |
|
+ifeq ($(OUR_FAULT),no) |
|
$(MAKE) -C src findlib-install |
|
$(MAKE) -C toplevel install |
|
+else |
|
+ @echo "\033[0;31m[ERROR]\033[m It appears that the num library was previously installed to your system" |
|
+ @echo " compiler's lib directory, probably by a faulty opam package." |
|
+ @echo " You will need to remove arith_flags.*, arith_status.*, big_int.*," |
|
+ @echo " int_misc.*, nat.*, num.*, ratio.*, nums.*, libnums.* and" |
|
+ @echo " stublibs/dllnums.* from $(shell ocamlc -where)." |
|
+ @false |
|
+endif |
|
|
|
uninstall: |
|
$(MAKE) -C src uninstall |
|
-- |
|
2.14.1 |
|
|
|
|