]> matita.cs.unibo.it Git - helm.git/commitdiff
release snapshot
authorStefano Zacchiroli <zack@upsilon.cc>
Fri, 3 Feb 2006 15:13:40 +0000 (15:13 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Fri, 3 Feb 2006 15:13:40 +0000 (15:13 +0000)
- split of multiple matita conffiles (users vs developers)
- removed no longer needed keys in conffiles
- commented conffiles entries
- made matitaInit.ml more like other matita tools (still a lot to do ...)
- save .xml debugging files only if debug is enabled
- ...

14 files changed:
helm/matita/Makefile
helm/matita/matita.conf.xml [new symlink]
helm/matita/matita.conf.xml.build.in [new file with mode: 0644]
helm/matita/matita.conf.xml.devel.in [new file with mode: 0644]
helm/matita/matita.conf.xml.sample.in [deleted file]
helm/matita/matita.conf.xml.user.in [new file with mode: 0644]
helm/matita/matitaInit.ml
helm/matita/matitaInit.mli
helm/matita/matitaMathView.ml
helm/matita/matitacLib.ml
helm/matita/matitadep.ml
helm/matita/matitamake.ml
helm/matita/matitamakeLib.ml
helm/matita/template_makefile.in

index 415d4a1a557488ac594162a4c21b34d67ad59a6a..75d8787808c055eedd68185baf1b467ae834e25f 100644 (file)
@@ -59,32 +59,26 @@ PROGRAMS = $(PROGRAMS_BYTE) matitatop
 PROGRAMS_OPT = $(patsubst %,%.opt,$(PROGRAMS_BYTE))
 
 .PHONY: all
-all: matita.conf.xml $(PROGRAMS) coq.moo
-
-matita.conf.xml: matita.conf.xml.sample
-       @if diff matita.conf.xml.sample matita.conf.xml 1>/dev/null 2>/dev/null; then\
-               touch matita.conf.xml;\
-       else\
-               echo;\
-               echo "matita.conf.xml.sample is newer than matita.conf.xml";\
-               echo;\
-               echo "PLEASE update your configuration file!";\
-               echo "(copying matita.conf.xml.sample should work)";\
-               echo;\
-               false;\
-       fi
-
-matita.conf.xml.sample: matita.conf.xml.sample.in
-       autoconf
-       ./configure
-       @echo 
-       @echo "WARNING: The configuration sample file has changed!"
-       @echo 
-
-coq.moo: library/legacy/coq.ma matitac
-       ./matitac $(MATITA_FLAGS) $<
-coq.moo.opt: library/legacy/coq.ma matitac.opt
-       ./matitac.opt $(MATITA_FLAGS) $<
+all: $(PROGRAMS)
+#  all: matita.conf.xml $(PROGRAMS) coq.moo
+
+#  matita.conf.xml: matita.conf.xml.sample
+#          @if diff matita.conf.xml.sample matita.conf.xml 1>/dev/null 2>/dev/null; then\
+#                  touch matita.conf.xml;\
+#          else\
+#                  echo;\
+#                  echo "matita.conf.xml.sample is newer than matita.conf.xml";\
+#                  echo;\
+#                  echo "PLEASE update your configuration file!";\
+#                  echo "(copying matita.conf.xml.sample should work)";\
+#                  echo;\
+#                  false;\
+#          fi
+
+#  coq.moo: library/legacy/coq.ma matitac
+#          ./matitac $(MATITA_FLAGS) $<
+#  coq.moo.opt: library/legacy/coq.ma matitac.opt
+#          ./matitac.opt $(MATITA_FLAGS) $<
 
 ifeq ($(HAVE_OCAMLOPT),yes)
 
@@ -190,7 +184,7 @@ cleantests.opt: $(foreach d,$(TEST_DIRS),$(d)-cleantests-opt)
 
 # {{{ Distribution stuff
 
-ifeq ($(HAVE_OCAMLOPT),yes)
+ifeq ($(wildcard matitac.opt),matitac.opt)
 BEST=opt
 else
 BEST=all
@@ -198,7 +192,11 @@ endif
 
 stdlib:
        MATITA_RT_BASE_DIR=`pwd` \
-               $(MAKE) MATITA_FLAGS="-system" -C library/ $(BEST)
+       MATITA_FLAGS="-system -conffile `pwd`/matita.conf.xml.build" \
+               ./matitamake -init build_stdlib
+
+#          MATITA_RT_BASE_DIR=`pwd` \
+               $(MAKE) MATITA_FLAGS="-system -conffile `pwd`/matita.conf.xml.build" -C library/ $(BEST)
 
 DEST = @RT_BASE_DIR@
 INSTALL_STUFF =                        \
@@ -287,10 +285,9 @@ cicbrowser.opt.static.upx: matita.opt.static.upx
 distclean: clean
        $(MAKE) -C dist/ clean
        rm -f matitaGeneratedGui.ml matitaGeneratedGui.mli
-       rm -f config.log config.status Makefile buildTimeConf.ml
+       rm -f buildTimeConf.ml
        rm -f matita.glade.bak matita.gladep.bak
-       rm -rf autom4te.cache/
-       rm -f configure matita.conf.xml.sample
+       rm -f matita.conf.xml.sample
 
 %.upx: %
        cp $< $@
diff --git a/helm/matita/matita.conf.xml b/helm/matita/matita.conf.xml
new file mode 120000 (symlink)
index 0000000..7f7b7b8
--- /dev/null
@@ -0,0 +1 @@
+matita.conf.xml.devel
\ No newline at end of file
diff --git a/helm/matita/matita.conf.xml.build.in b/helm/matita/matita.conf.xml.build.in
new file mode 100644 (file)
index 0000000..0ee6245
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<helm_registry>
+  <section name="user">
+    <key name="home">$(HOME)</key>
+  </section>
+  <section name="matita">
+    <key name="basedir">.matita</key>
+    <key name="owner">nobody</key>
+  </section>
+  <section name="db">
+    <key name="host">@DBHOST@</key>
+    <key name="user">helm</key>
+    <key name="database">matita</key>
+  </section>
+  <section name="getter">
+    <key name="cache_dir">.matita/getter/cache</key>
+    <key name="prefix">
+      cic:/matita/
+      file://.matita/xml/matita/
+    </key>
+    <key name="prefix">
+      cic:/
+      file:///does_not_exists/
+      legacy
+    </key>
+  </section>
+</helm_registry>
diff --git a/helm/matita/matita.conf.xml.devel.in b/helm/matita/matita.conf.xml.devel.in
new file mode 100644 (file)
index 0000000..3a4e7bb
--- /dev/null
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<helm_registry>
+  <section name="user">
+    <!-- User home directory. Here a ".matita" directory will be created
+    and used to store the part of the library developed by the user. -->
+    <key name="home">$(HOME)</key>
+    <!-- User name. It is used down in this configuration file.  If left
+    unspecified, name of the user executing matita will be used (as per
+    getent) -->
+    <!-- <key name="name">foo</key> -->
+  </section>
+  <section name="matita">
+    <!-- Debug only. Stay away. -->
+    <!-- <key name="auto_disambiguation">true</key> -->
+    <!-- Debug only. Stay away. -->
+    <!-- <key name="environment_trust">true</key> -->
+    <key name="basedir">$(user.home)/.matita</key>
+    <!-- Metadata owner. It will be used to create user-specific tables
+    in the SQL database. -->
+    <key name="owner">$(user.name)</key>
+    <!-- Initial GUI font size. -->
+    <!-- <key name="font_size">10</key> -->
+  </section>
+  <section name="db">
+    <!-- Access parameter to the (MySql) metadata database. They are not
+    needed if Matita is always run with -nodb, but this is _not_
+    recommended since a lot of features wont work.
+    Hint. The simplest way to create a database is:
+      0) # become an user with database administration privileges
+      1) mysqladmin create matita
+      2) echo "grant all privileges on matita.* to helm;" | mysql matita
+      Note that this way the database will be open to anyone, apply
+      stricter permissions if needed.
+    -->
+    <key name="host">@DBHOST@</key>
+    <key name="user">helm</key>
+    <key name="database">matita</key>
+  </section>
+  <section name="getter">
+    <!-- Cache dir for CIC XML documents downloaded from the net.
+    Beware that this dir may become really space-consuming. It wont be
+    used if all prefexises below are local (i.e. "file:///" URI scheme).
+    -->
+    <key name="cache_dir">$(user.home)/.matita/getter/cache</key>
+    <!-- "Prefixes", i.e.: mappings URI -> URL of the global library
+    Each prefix mapps an URI of the cic:/ namespace to an URL where the
+    documents can actually be accessed. URL can be in the "file://" or
+    "http://" scheme. Only "file://" scheme can be used to store
+    documents created by the user.
+    Each prefix may be given a list of attributes. Currently supported
+    attributes are:
+    - "legacy" for parts of the library not generated by Matita (e.g.
+      exported from Coq)
+    - "ro" for parts of the library which are not writable by the user
+      (e.g. the Matita standard library)
+    "legacy" implies "ro"
+    -->
+    <key name="prefix">
+      cic:/matita/
+      file://$(user.home)/.matita/xml/matita/
+    </key>
+    <key name="prefix">
+      cic:/
+      file:///projects/helm/library/coq_contribs/
+      legacy
+    </key>
+  </section>
+</helm_registry>
diff --git a/helm/matita/matita.conf.xml.sample.in b/helm/matita/matita.conf.xml.sample.in
deleted file mode 100644 (file)
index ee9aae1..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<helm_registry>
-  <section name="user">
-    <key name="home">~</key>
-<!-- If not specified here, name of the user executing matita will be used -->
-<!--     <key name="name">foo</key> -->
-  </section>
-  <section name="matita">
-    <key name="auto_disambiguation">true</key>
-    <key name="environment_trust">true</key>
-    <key name="baseuri">cic:/matita/</key>
-    <key name="basedir">$(user.home)/.matita</key>
-    <key name="owner">$(user.name)</key>
-<!--     <key name="font_size">10</key> -->
-    <key name="tactics_bar">false</key>
-  </section>
-  <section name="db">
-    <!-- <key name="host">localhost</key> -->
-    <key name="host">mowgli.cs.unibo.it</key>
-    <key name="user">helm</key>
-    <key name="database">matita</key>
-  </section>
-  <section name="getter">
-    <key name="cache_dir">$(user.home)/.matita/getter/cache</key>
-    <key name="dtd_dir">/projects/helm/xml/dtd</key>
-    <key name="prefix">
-      cic:/
-      file:///projects/helm/library/coq_contribs/
-      legacy
-    </key>
-    <key name="prefix">
-      cic:/matita/
-      file://$(user.home)/.matita/xml/matita/
-    </key>
-  </section>
-</helm_registry>
diff --git a/helm/matita/matita.conf.xml.user.in b/helm/matita/matita.conf.xml.user.in
new file mode 100644 (file)
index 0000000..ff4be40
--- /dev/null
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<helm_registry>
+  <section name="user">
+    <!-- User home directory. Here a ".matita" directory will be created
+    and used to store the part of the library developed by the user. -->
+    <key name="home">$(HOME)</key>
+    <!-- User name. It is used down in this configuration file.  If left
+    unspecified, name of the user executing matita will be used (as per
+    getent) -->
+    <!-- <key name="name">foo</key> -->
+  </section>
+  <section name="matita">
+    <!-- Debug only. Stay away. -->
+    <!-- <key name="auto_disambiguation">true</key> -->
+    <!-- Debug only. Stay away. -->
+    <!-- <key name="environment_trust">true</key> -->
+    <key name="basedir">$(user.home)/.matita</key>
+    <!-- Metadata owner. It will be used to create user-specific tables
+    in the SQL database. -->
+    <key name="owner">$(user.name)</key>
+    <!-- Initial GUI font size. -->
+    <!-- <key name="font_size">10</key> -->
+  </section>
+  <section name="db">
+    <!-- Access parameter to the (MySql) metadata database. They are not
+    needed if Matita is always run with -nodb, but this is _not_
+    recommended since a lot of features wont work.
+    Hint. The simplest way to create a database is:
+      0) # become an user with database administration privileges
+      1) mysqladmin create matita
+      2) echo "grant all privileges on matita.* to helm;" | mysql matita
+      Note that this way the database will be open to anyone, apply
+      stricter permissions if needed.
+    -->
+    <key name="host">@DBHOST@</key>
+    <key name="user">helm</key>
+    <key name="database">matita</key>
+  </section>
+  <section name="getter">
+    <!-- Cache dir for CIC XML documents downloaded from the net.
+    Beware that this dir may become really space-consuming. It wont be
+    used if all prefexises below are local (i.e. "file:///" URI scheme).
+    -->
+    <key name="cache_dir">$(user.home)/.matita/getter/cache</key>
+    <!-- "Prefixes", i.e.: mappings URI -> URL of the global library
+    Each prefix mapps an URI of the cic:/ namespace to an URL where the
+    documents can actually be accessed. URL can be in the "file://" or
+    "http://" scheme. Only "file://" scheme can be used to store
+    documents created by the user.
+    Each prefix may be given a list of attributes. Currently supported
+    attributes are:
+    - "legacy" for parts of the library not generated by Matita (e.g.
+      exported from Coq)
+    - "ro" for parts of the library which are not writable by the user
+      (e.g. the Matita standard library)
+    "legacy" implies "ro"
+    -->
+    <key name="prefix">
+      cic:/matita/
+      file://@RT_BASE_DIR@/library/
+      ro
+    </key>
+    <key name="prefix">
+      cic:/matita/$(user.name)/
+      file://$(user.home)/.matita/xml/matita/
+    </key>
+    <key name="prefix">
+      cic:/
+      file://@RT_BASE_DIR@/legacy/coq/
+      legacy
+    </key>
+  </section>
+</helm_registry>
index 34b64284f85f3f0f99f7bbb13ae0b4cf5da1ddad..53ff6b9d60f29bdb8d775ba61811f11b174e18ff 100644 (file)
@@ -28,7 +28,7 @@
 open Printf
 
 type thingsToInitilaize = 
-  ConfigurationFile | Db | Environment | Getter | Makelib | CmdLine
+  ConfigurationFile | Db | Environment | Getter | Makelib | CmdLine | Registry
   
 exception FailedToInitialize of thingsToInitilaize
 
@@ -42,10 +42,34 @@ let wants s l =
 let already_configured s l =
   List.for_all (fun item -> List.exists (fun x -> x = item) l) s
   
+let conffile = ref BuildTimeConf.matita_conf
+
+let registry_defaults =
+  [
+    "db.nodb",                  "false";
+    "matita.system",            "false";
+    "matita.debug",             "false";
+    "matita.external_editor",   "gvim -f -c 'go %p' %f";
+    "matita.preserve",          "false";
+    "matita.quiet",             "false";
+    "matita.profile",           "true";
+  ]
+
+let set_registry_values =
+  List.iter (fun key, value -> Helm_registry.set ~key ~value)
+
+let fill_registry init_status =
+  if not (already_configured [ Registry ] init_status) then begin
+    set_registry_values registry_defaults;
+    Registry :: init_status
+  end else
+    init_status
+
 let load_configuration init_status =
+  wants [ Registry ] init_status;
   if not (already_configured [ConfigurationFile] init_status) then
     begin
-      Helm_registry.load_from BuildTimeConf.matita_conf;
+      Helm_registry.load_from !conffile;
       if not (Helm_registry.has "user.name") then begin
         let login = (Unix.getpwuid (Unix.getuid ())).Unix.pw_name in
         Helm_registry.set "user.name" login
@@ -85,7 +109,9 @@ let initialize_environment init_status =
     begin
       Http_getter.init ();
       CicEnvironment.set_trust (* environment trust *)
-        (let trust = Helm_registry.get_bool "matita.environment_trust" in
+        (let trust =
+          Helm_registry.get_opt_default Helm_registry.get_bool
+            ~default:true "matita.environment_trust" in
          fun _ -> trust);
       Getter::Environment::init_status
     end
@@ -136,20 +162,6 @@ let usage () =
   in
   try Hashtbl.find usages usage_key with Not_found -> default_usage
 
-let registry_defaults =
-  [
-    "db.nodb",                  "false";
-    "matita.system",            "false";
-    "matita.debug",             "false";
-    "matita.external_editor",   "gvim -f -c 'go %p' %f";
-    "matita.preserve",          "false";
-    "matita.quiet",             "false";
-    "matita.profile",           "true";
-  ]
-
-let set_registry_values =
-  List.iter (fun key, value -> Helm_registry.set ~key ~value)
-
 let parse_cmdline init_status =
   if not (already_configured [CmdLine] init_status) then begin
     let includes = ref [ BuildTimeConf.stdlib_dir ] in
@@ -160,6 +172,9 @@ let parse_cmdline init_status =
         "-I", Arg.String (add_l includes),
           ("<path> Adds path to the list of searched paths for the "
            ^ "include command");
+        "-conffile", Arg.Set_string conffile,
+          (Printf.sprintf "<filename> Read configuration from filename (default: %s)" 
+            BuildTimeConf.matita_conf);
         "-q", Arg.Unit (fun () -> Helm_registry.set_bool "matita.quiet" true),
           "Turn off verbose compilation";
         "-preserve",
@@ -190,7 +205,6 @@ let parse_cmdline init_status =
     let set_list ~key l =
       Helm_registry.set_list Helm_registry.of_string ~key ~value:(List.rev !l)
     in
-    set_registry_values registry_defaults;
     Arg.parse arg_spec (add_l args) (usage ());
     set_list ~key:"matita.includes" includes;
     set_list ~key:"matita.args" args;
@@ -207,7 +221,8 @@ let die_usage () =
 let initialize_all () =
   status := 
     List.fold_left (fun s f -> f s) !status
-      [ parse_cmdline; load_configuration; initialize_makelib;
+    [ fill_registry;
+        parse_cmdline; load_configuration; initialize_makelib;
         initialize_db; initialize_environment ]
 (*     initialize_notation 
       (initialize_environment 
@@ -222,3 +237,6 @@ let load_configuration_file () =
 let parse_cmdline () =
   status := parse_cmdline !status
 
+let fill_registry () =
+  status := fill_registry !status
+
index 9d86712990896e44111638a015ecc72825badd59..63b84b448a85028d32c2f0cb111a0afa83ffd1d5 100644 (file)
@@ -27,6 +27,7 @@
 val initialize_all: unit -> unit
 
   (** {2 per-components initialization} *)
+val fill_registry: unit -> unit (** fill registry with default values *)
 val parse_cmdline: unit -> unit (** parse cmdline setting registry keys *)
 val load_configuration_file: unit -> unit
 
index 3c4997aeca09e8437e9c6e9f647543fbae340983..e2eb22d5b8f05371ac9f456597360b35668f2c74 100644 (file)
@@ -490,9 +490,11 @@ object (self)
       (Some (Some unsh_sequent,
         ids_to_terms, ids_to_hypotheses, ids_to_father_ids,
         Hashtbl.create 1, None));
-    let name = "sequent_viewer.xml" in
-    HLog.debug ("load_sequent: dumping MathML to ./" ^ name);
-    ignore (domImpl#saveDocumentToFile ~name ~doc:mathml ());
+    if BuildTimeConf.debug then begin
+      let name = "sequent_viewer.xml" in
+      HLog.debug ("load_sequent: dumping MathML to ./" ^ name);
+      ignore (domImpl#saveDocumentToFile ~name ~doc:mathml ())
+    end;
     self#load_root ~root:mathml#get_documentElement
 
   method load_object obj =
@@ -510,9 +512,11 @@ object (self)
         XmlDiff.update_dom ~from:current_mathml mathml;
         self#thaw
     |  _ ->
-        let name = "cic_browser.xml" in
-        HLog.debug ("cic_browser: dumping MathML to ./" ^ name);
-        ignore (domImpl#saveDocumentToFile ~name ~doc:mathml ());
+        if BuildTimeConf.debug then begin
+          let name = "cic_browser.xml" in
+          HLog.debug ("cic_browser: dumping MathML to ./" ^ name);
+          ignore (domImpl#saveDocumentToFile ~name ~doc:mathml ())
+        end;
         self#load_root ~root:mathml#get_documentElement;
         current_mathml <- Some mathml);
 end
index 3567c33f0a14575c683a75384381cab7c82dca61..ee09258e07bad2f80fd62af05a1a1810c5e26267 100644 (file)
@@ -141,7 +141,9 @@ let go () =
   MetadataTypes.ownerize_tables (Helm_registry.get "matita.owner");
   LibraryDb.create_owner_environment ();
   CicEnvironment.set_trust (* environment trust *)
-    (let trust = Helm_registry.get_bool "matita.environment_trust" in
+    (let trust =
+      Helm_registry.get_opt_default Helm_registry.get_bool
+        ~default:true "matita.environment_trust" in
      fun _ -> trust);
   let include_paths =
    Helm_registry.get_list Helm_registry.string "matita.includes" in
index 48011c0b5300cde4643667d7be8bca91e9352b5b..c1ada6aea79dc5117ffb52965e015bf30aff6bec 100644 (file)
@@ -37,8 +37,9 @@ let main () =
   let resolve alias current_buri =
     let buri = buri alias in
     if buri <> current_buri then Some buri else None in
-  MatitaInit.load_configuration_file ();
+  MatitaInit.fill_registry ();
   MatitaInit.parse_cmdline ();
+  MatitaInit.load_configuration_file ();
   let include_paths =
    Helm_registry.get_list Helm_registry.string "matita.includes" in
   let basedir = Helm_registry.get "matita.basedir" in
index 9eab0f6d82a169017a64f9266ea47d89bb80df50..f0e17eb8b2ad435bccbfc869e639be731b996ce3 100644 (file)
@@ -28,6 +28,7 @@
 module MK = MatitamakeLib ;;
 
 let main () =
+  MatitaInit.fill_registry ();
   MatitaInit.load_configuration_file ();
   MK.initialize ();
   let usage = ref (fun () -> ()) in
index 8eba26fb02cbb8556187d89844c49f4a53a59022..fba66e0d62e283bb620f3ce603789ebeeb66f383 100644 (file)
@@ -25,6 +25,8 @@
 
 (* $Id$ *)
 
+open Printf
+
 let logger = fun mark -> 
   match mark with 
   | `Error -> HLog.error
@@ -176,7 +178,12 @@ let call_make development target make =
   let nodb =
     Helm_registry.get_opt_default Helm_registry.bool ~default:false "db.nodb"
   in
-  let flags = if nodb then ["NODB=true"] else [] in
+  let flags = [] in
+  let flags = flags @ if nodb then ["NODB=true"] else [] in
+  let flags =
+    try
+      flags @ [ sprintf "MATITA_FLAGS=\"%s\"" (Sys.getenv "MATITA_FLAGS") ]
+    with Not_found -> flags in
   make development.root 
     (["--no-print-directory"; "-s"; "-k"; "-f"; makefile; target]
     @ flags)
index 8cbef1fd193a85cc08f35047dfcd3c9ebc831679..57f1301d57e9e265dc1aeaa68f3ca23ac930d063 100644 (file)
@@ -1,7 +1,8 @@
 SRC=$(shell find @ROOT@ -name "*.ma" -a -type f)
 TODO=$(SRC:%.ma=%.mo)
 
-MATITA_FLAGS=-noprofile
+MATITA_FLAGS=
+MATITA_FLAGS+=-noprofile
 NODB=false
 ifeq ($(NODB),true)
        MATITA_FLAGS += -nodb