From: Sylvain Le Gall Date: Fri, 7 Sep 2007 21:09:52 +0000 (+0000) Subject: * Some enhancement to ocamldoc generation -- need to be tested X-Git-Tag: archive/raspbian/4.08.1-4+rpi1~3^2~520 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3e2dc1cf507305578454bf22c171b481d00ee3d4;p=ocaml.git * Some enhancement to ocamldoc generation -- need to be tested --- diff --git a/debian/cdbs/ocaml-vars.mk b/debian/cdbs/ocaml-vars.mk index 89f15cc8..3e2d1dc6 100644 --- a/debian/cdbs/ocaml-vars.mk +++ b/debian/cdbs/ocaml-vars.mk @@ -16,7 +16,7 @@ # this program; if not, write to the Free Software Foundation, Inc., 51 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# $Id: ocaml-vars.mk 4236 2007-08-31 09:45:13Z zack $ +# $Id: ocaml-vars.mk 4403 2007-09-07 21:09:52Z gildor $ _cdbs_scripts_path ?= /usr/lib/cdbs _cdbs_rules_path ?= /usr/share/cdbs/1/rules @@ -82,12 +82,23 @@ OCAML_LIB_PACKAGES := $(filter lib%-ocaml,$(DEB_PACKAGES)) # space separated list of packages on which ocamldoc usage is required. For # each package listed here will have ocamldoc invoked on all *.ml/*.mli files # installed under $(OCAML_STDLIB_DIR) to generated html documentation which -# will be shipped in /usr/share/doc/PACKAGE/html/*. +# will be shipped in $(OCAML_OCAMLDOC_DESTDIR_HTML). # Typical usage is OCAML_OCAMLDOC_PACKAGES = $(OCAML_LIBDEV_PACKAGES). # For debian/rules writers OCAML_OCAMLDOC_PACKAGES = #OCAML_OCAMLDOC_PACKAGES = $(OCAML_LIBDEV_PACKAGES) # more "aggressive" default +# space separated list of packages for which a pkg.doc-base.ocamldoc-apiref is +# required. This file contains is the debian doc-base description of file which +# should be located in the directory $(OCAML_OCAMLDOC_DESTDIR_HTML) +# For debian/rules writers +OCAML_OCAMLDOC_PACKAGES_DOCBASE = + +# ocamlfind flags which must be used in order to generate +# correctly the ocamldoc documentation +# For debian/rules writers +OCAML_OCAMLDOC_OCAMLFIND_FLAGS = + # generic (i.e. non backend specific) flags to be passed to ocamldoc # For debian/rules writers OCAML_OCAMLDOC_FLAGS = -stars -m A @@ -104,7 +115,7 @@ OCAML_OCAMLDOC_FLAGS_MAN = -man-mini # can use "$(cdbs_curpkg)" stem there, it will be expanded to the current # package name by CDBS # For debian/rules writers -OCAML_OCAMLDOC_DESTDIR_HTML = usr/share/doc/$(cdbs_curpkg)/html/api +OCAML_OCAMLDOC_DESTDIR_HTML = $(shell ocamldoc-api-ref-config --html-directory $(cdbs_curpkg)) endif diff --git a/debian/cdbs/ocaml.mk b/debian/cdbs/ocaml.mk index 691f2089..6f4be6eb 100644 --- a/debian/cdbs/ocaml.mk +++ b/debian/cdbs/ocaml.mk @@ -16,7 +16,7 @@ # this program; if not, write to the Free Software Foundation, Inc., 51 # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# $Id: ocaml.mk 4274 2007-09-02 17:12:05Z zack $ +# $Id: ocaml.mk 4403 2007-09-07 21:09:52Z gildor $ _cdbs_scripts_path ?= /usr/lib/cdbs _cdbs_rules_path ?= /usr/share/cdbs/1/rules @@ -44,25 +44,35 @@ endif # post-install hook to invoke ocamldoc on OCAML_OCAMLDOC_PACKAGES packages $(patsubst %,binary-install/%,$(DEB_PACKAGES)):: - @if (echo $(OCAML_OCAMLDOC_PACKAGES) | egrep '( |^)$(cdbs_curpkg)( |$$)' > /dev/null) ; then \ + @OCAMLDOC="ocamldoc $(OCAML_OCAMLDOC_FLAGS)"; \ + if test -n "$(OCAML_OCAMLDOC_OCAMLFIND_FLAGS)" ; then \ + if ! test -x "/usr/bin/ocamlfind"; then \ + echo "OCamlfind flags set and no ocamlfind to be found" >&2; \ + exit 1; \ + fi; \ + OCAMLDOC="ocamlfind $$OCAMLDOC $(OCAML_OCAMLDOC_OCAMLFIND_FLAGS)"; \ + fi; \ + 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 $(OCAML_OCAMLDOC_FLAGS) \ - -html $(OCAML_OCAMLDOC_FLAGS_HTML) \ + | xargs $$OCAMLDOC -html $(OCAML_OCAMLDOC_FLAGS_HTML) \ -d debian/$(cdbs_curpkg)/$(OCAML_OCAMLDOC_DESTDIR_HTML) \ || true ; \ fi # post-build hook to create doc-base entries for OCAML_OCAMLDOC_PACKAGES packages $(patsubst %,build/%,$(DEB_PACKAGES)):: - @if (echo $(OCAML_OCAMLDOC_PACKAGES) | egrep '( |^)$(cdbs_curpkg)( |$$)' > /dev/null) ; then \ - sed -e 's/@PACKAGE@/$(cdbs_curpkg)/g' \ - $(_cdbs_class_path)/ocaml-docbase-template.txt$(_cdbs_makefile_suffix) \ - > debian/$(cdbs_curpkg).doc-base.ocamldoc-apiref ; \ + @if (echo $(OCAML_OCAMLDOC_PACKAGES) $(OCAML_OCAMLDOC_PACKAGES_DOCBASE) \ + | egrep '( |^)$(cdbs_curpkg)( |$$)' > /dev/null) ; then \ + ocamldoc-api-ref-config --doc-base-generate $(cdbs_curpkg) fi + clean:: rm -f debian/*.doc-base.ocamldoc-apiref diff --git a/debian/cdbs/ocamldoc-api-ref-config b/debian/cdbs/ocamldoc-api-ref-config new file mode 100755 index 00000000..cbd1afd8 --- /dev/null +++ b/debian/cdbs/ocamldoc-api-ref-config @@ -0,0 +1,104 @@ +#!/bin/sh +# ocamldoc-api-ref-config: configuration and generation of .doc-base.ocamldoc-apiref +# Copyright (C) 2006 Sylvain Le Gall +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, +# MA 02110-1301, USA. + +set -e +set -x + +print_usage () +{ + PRG=`basename $0` + cat <&2 + echo $* >&2 + exit 1 +} + +html_directory () +{ + echo "/usr/share/doc/$1/html/api" +} + +doc_base_generate () +{ + if ! test -d "debian"; then + echo "Cannot find debian directory for generation" >&2 + exit 1 + fi + PKG="$1" + PKG_DIR=`html_directory $PKG` + FILE="debian/$PKG.doc-base.ocamldoc-apiref" + echo $FILE + cat > $FILE <