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

automatic ocamldoc generation and the -I bug



The question raised by this mail is, will we ever be able to fix the -I
misbehaviour of the automatic ocamldoc generation implemented by the
cdbs class? :-)

Sylvain, I though we did an ocaml upload which was, among other things,
also aimed at fixing that, but apparently this is not the case (or I'm
missing something obvious here ...). Here is the interested code snippet
from ocaml.mk (the CDBS class):

  OCAML_OCAMLDOC_INCLUDE=`for i in $(OCAML_OCAMLDOC_PACKAGES); do \
                                  find debian/$$i/$(OCAML_STDLIB_DIR)/ -type d -exec echo -I \{} \; ; \
                          done`; \
  if (echo $(OCAML_OCAMLDOC_PACKAGES) | egrep '( |^)$(cdbs_curpkg)( |$$)' > /dev/null) ; then \
          echo 'mkdir -p debian/$(cdbs_curpkg)/$(OCAML_OCAMLDOC_DESTDIR_HTML)' ; \
          mkdir -p debian/$(cdbs_curpkg)/$(OCAML_OCAMLDOC_DESTDIR_HTML) ; \
          echo 'invoking ocamldoc on debian/$(cdbs_curpkg)$(OCAML_STDLIB_DIR)/ ...' ; \
          find debian/$(cdbs_curpkg)$(OCAML_STDLIB_DIR)/ \
                  -type f -name '*.mli' -or -name '*.ml' \
          | xargs $$OCAMLDOC -html $(OCAML_OCAMLDOC_FLAGS_HTML) \
                  -d debian/$(cdbs_curpkg)/$(OCAML_OCAMLDOC_DESTDIR_HTML) \
          || true ; \

the first time I saw this snippet, I was asking myself, how the heck
OCAML_OCAMLDOC_INCLUDE is passed down to ocamldoc? I did not check (my
fault) but I was convinced that it was exported and then used internally
by ocamldoc. According to my test this is not the case, and indeed my
packages are failing ocamldoc generation due to missing -I flags as they
were with past ocaml version. Do you have any other test showing that
the bug is indeed fixed?

The fix working for me is the (obvious) following:

  OCAML_OCAMLDOC_INCLUDE=`for i in $(OCAML_OCAMLDOC_PACKAGES); do \
                                  find debian/$$i/$(OCAML_STDLIB_DIR)/ -type d -exec echo -I \{} \; ; \
                          done`; \
  if (echo $(OCAML_OCAMLDOC_PACKAGES) | egrep '( |^)$(cdbs_curpkg)( |$$)' > /dev/null) ; then \
          echo 'mkdir -p debian/$(cdbs_curpkg)/$(OCAML_OCAMLDOC_DESTDIR_HTML)' ; \
          mkdir -p debian/$(cdbs_curpkg)/$(OCAML_OCAMLDOC_DESTDIR_HTML) ; \
          echo 'invoking ocamldoc on debian/$(cdbs_curpkg)$(OCAML_STDLIB_DIR)/ ...' ; \
          find debian/$(cdbs_curpkg)$(OCAML_STDLIB_DIR)/ \
                  -type f -name '*.mli' -or -name '*.ml' \
          | xargs $$OCAMLDOC -html $(OCAML_OCAMLDOC_FLAGS_HTML) $$OCAML_OCAMLDOC_INCLUDE \
                  -d debian/$(cdbs_curpkg)/$(OCAML_OCAMLDOC_DESTDIR_HTML) \
          || true ; \

which simply pass $OCAML_OCAMLDOC_INCLUDE down to ocamldoc.

Can I go ahead and commit this, or am I missing something obvious here?

-- 
Stefano Zacchiroli -*- PhD in Computer Science ............... now what?
zack@{upsilon.cc,cs.unibo.it,debian.org}  -<%>-  http://upsilon.cc/zack/
(15:56:48)  Zack: e la demo dema ?    /\    All one has to do is hit the
(15:57:15)  Bac: no, la demo scema    \/    right keys at the right time

Attachment: signature.asc
Description: Digital signature


Reply to: