summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorvboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2023-05-05 08:53:50 +0000
committervboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2023-05-05 08:53:50 +0000
commita6c93092cdaa0ad38ec5285097e66c71e0a128ba (patch)
tree91107d375cbd515284a856ddac2296b7994d6163 /doc
parent6c5addf288148bb0715fb715f91d0173bded045c (diff)
downloadVirtualBox-svn-a6c93092cdaa0ad38ec5285097e66c71e0a128ba.tar.gz
manual: Kicked out the dita 1.8.5 related stuff to reduce the makefile messyness. bugref:10302
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@99617 cfe28804-0f27-0410-a406-dd0f0b0b656f
Diffstat (limited to 'doc')
-rw-r--r--doc/manual/Config.kmk16
-rw-r--r--doc/manual/Makefile.kmk191
-rwxr-xr-xdoc/manual/dita-ot-copy-exec.sh205
3 files changed, 82 insertions, 330 deletions
diff --git a/doc/manual/Config.kmk b/doc/manual/Config.kmk
index 10230b8b27b..898898cd98f 100644
--- a/doc/manual/Config.kmk
+++ b/doc/manual/Config.kmk
@@ -39,8 +39,12 @@ ifndef VBOX_DOC_MANUAL_CONFIG_KMK_INCLUDED
#
# DITA stuff.
- VBOX_DITA_CONVERTER_PATH ?= $(PATH_ROOT)/src/libs/dbdita-1.0
- VBOX_DITA_ORIGINAL_PATH ?= $(PATH_ROOT)/src/libs/dita-ot-1.8.5
+ VBOX_DITA_OT_PATH ?= $(PATH_ROOT)/src/libs/dita-ot-1.8.5
+ ifneq ($(VBOX_DITA_OT_PATH),)
+ VBOX_DITA_OT_PATH := $(firstfile \
+ $(rversortfiles $(qwildcard ,$(KBUILD_DEVTOOLS)/common/dita-ot/v[4-9].*)) \
+ $(KBUILD_DEVTOOLS)/common/dita-ot/v4.0.2-r1)
+ endif
# Source location.
@@ -383,14 +387,14 @@ ifndef VBOX_DOC_MANUAL_CONFIG_KMK_INCLUDED
if 0 # Enable to see the full combined document.
$$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT,,$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$$(VBOX_XML_XREF_TO_TEXT).cat) \
--path "$$(VBOX_PATH_MANUAL_SRC)/$(1)/dita/topics" \
- --path "$(VBOX_DITA_ORIGINAL_PATH)/dtd/bookmap/dtd" \
- --path "$(VBOX_DITA_ORIGINAL_PATH)/dtd/technicalContent/dtd" \
+ --path "$(VBOX_DITA_OT_PATH)/dtd/bookmap/dtd" \
+ --path "$(VBOX_DITA_OT_PATH)/dtd/technicalContent/dtd" \
--output "$$@.tmp2.xml" "$$(VBOX_PATH_MANUAL_SRC)/ditamap-to-single-xml.xsl" "$$@.tmp.xml"
endif
$$(QUIET)$$(call VBOX_XSLTPROC_WITH_CAT,,$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/$$(VBOX_XML_XREF_TO_TEXT).cat) \
--path "$$(VBOX_PATH_MANUAL_SRC)/$(1)/dita/topics" \
- --path "$(VBOX_DITA_ORIGINAL_PATH)/dtd/bookmap/dtd" \
- --path "$(VBOX_DITA_ORIGINAL_PATH)/dtd/technicalContent/dtd" \
+ --path "$(VBOX_DITA_OT_PATH)/dtd/bookmap/dtd" \
+ --path "$(VBOX_DITA_OT_PATH)/dtd/technicalContent/dtd" \
--stringparam 'g_sMode' 'first' \
--output "$$@" \
"$$(VBOX_PATH_MANUAL_SRC)/$(1)/dita-refentry-link-replacement-xsl-gen.xsl" \
diff --git a/doc/manual/Makefile.kmk b/doc/manual/Makefile.kmk
index da606d2a108..00bf3765699 100644
--- a/doc/manual/Makefile.kmk
+++ b/doc/manual/Makefile.kmk
@@ -106,100 +106,65 @@ if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DO
VBOX_PDFLATEX_CMD = pdflatex $(VBOX_PDFLATEX_HALT) -interaction $(VBOX_PDFLATEX_INTERACTION)
endif
+ #
+ # Java v17 or later (JAVA_HOME), used by DITA-OT.
+ #
+ ifeq ($(VBOX_JAVA17PLUS_HOME),)
+ if defined(VBOX_JAVA_VERSION) && $(VBOX_JAVA_VERSION) >= 170000 && "$(VBOX_JAVA_BIN_PATH)" != ""
+ VBOX_JAVA17PLUS_HOME := $(qabspath ,$(VBOX_JAVA_BIN_PATH)/..)
+ else
+ VBOX_JAVA17PLUS_HOME := $(firstfile \
+ $(rversortfiles $(qwildcard , $(KBUILD_DEVTOOLS_HST)/jdk/v1[789].* $(KBUILD_DEVTOOLS_HST)/jdk/v[2-9][0-9].* )) \
+ $(rversortfiles $(qwildcard ,$(KBUILD_DEVTOOLS_HST_ALT)/jdk/v1[789].* $(KBUILD_DEVTOOLS_HST_ALT)/jdk/v[2-9][0-9].* )) \
+ )
+ if "$(KBUILD_HOST)" == "darwin" && "$(VBOX_JAVA17PLUS_HOME)" != ""
+ VBOX_JAVA17PLUS_HOME := $(VBOX_JAVA17PLUS_HOME)/Contents/Home
+ endif
+ endif
+ endif
#
# DITA-OT related globals.
#
- VBOX_DITA_TECHNICAL_CONTENT_DTD_PATH = $(VBOX_DITA_ORIGINAL_PATH)/dtd/technicalContent/dtd
+ VBOX_DITA_TECHNICAL_CONTENT_DTD_PATH = $(VBOX_DITA_OT_PATH)/plugins/org.oasis-open.dita.v1_2/dtd/technicalContent/dtd
##
# Copies DITA-OT to $1, runs the dost.jar with /ditadir given and nukes $1 when done.
#
# Additional options for dost.jar can be specified following the call to VBOX_DITA_RUN_DOST
#
- # @param 1 Temporary+unique DITA-OT path.
- # @param 2 Additional kmk_redirect options.
- # @param 3 Parameters for the invoker.
- # @param 4 Parameters only for 1.8.5.
- # @param 5 Parameters only for 4.0.2.
+ # @param 1 Additional kmk_redirect options.
+ # @param 2 Parameters for the invoker.
#
- VBOX_DITA_RUN_DOST ?= $(REDIRECT) \
- -E 'ANT_OPTS=-Xmx512m -Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl' \
- -E 'ANT_HOME=$1/tools/ant' \
- -E 'DITA_DIR=$1' \
- -E 'JAVA_HOME=$(VBOX_JAVA_HOME)' \
- -A 'PATH=$(HOST_PATH_SEP)$1/tools/ant/bin' \
- -E 'CLASSPATH=$1/lib/dost.jar' \
- -A 'CLASSPATH=$(HOST_PATH_SEP)$1/lib' \
- -A 'CLASSPATH=$(HOST_PATH_SEP)$1/lib/commons-codec-1.4.jar' \
- -A 'CLASSPATH=$(HOST_PATH_SEP)$1/lib/resolver.jar' \
- -A 'CLASSPATH=$(HOST_PATH_SEP)$1/lib/icu4j.jar' \
- -A 'CLASSPATH=$(HOST_PATH_SEP)$1/lib/xercesImpl.jar' \
- -A 'CLASSPATH=$(HOST_PATH_SEP)$1/lib/xml-apis.jar' \
- -A 'CLASSPATH=$(HOST_PATH_SEP)$1/lib/saxon/saxon9.jar' \
- -A 'CLASSPATH=$(HOST_PATH_SEP)$1/lib/saxon/saxon9-dom.jar' \
- $2 \
- -- $(ASH) $(VBOX_PATH_MANUAL_SRC)/dita-ot-copy-exec.sh "$(VBOX_DITA_ORIGINAL_PATH)" "$1" \
- -- $(VBOX_JAVA) -jar "$1/lib/dost.jar" "/ditadir:$1" \
- $(if-expr defined(VBOX_DITA_DEBUG),"/cleantemp:no" "/debug:yes",) \
- $3 $4 # "/outercontrol:fail" ?
-
- if1of ($(KBUILD_HOST), darwin linux win)
- VBOX_DITA_USING_LATEST := 1
- endif
- ifdef VBOX_DITA_USING_LATEST
- VBOX_DITA_USING_LATEST := 1
- ifeq ($(VBOX_JAVA17PLUS_HOME),)
- if defined(VBOX_JAVA_VERSION) && $(VBOX_JAVA_VERSION) >= 170000 && "$(VBOX_JAVA_BIN_PATH)" != ""
- VBOX_JAVA17PLUS_HOME := $(qabspath ,$(VBOX_JAVA_BIN_PATH)/..)
- else
- VBOX_JAVA17PLUS_HOME := $(firstfile \
- $(rversortfiles $(qwildcard , $(KBUILD_DEVTOOLS_HST)/jdk/v1[789].* $(KBUILD_DEVTOOLS_HST)/jdk/v[2-9][0-9].* )) \
- $(rversortfiles $(qwildcard ,$(KBUILD_DEVTOOLS_HST_ALT)/jdk/v1[789].* $(KBUILD_DEVTOOLS_HST_ALT)/jdk/v[2-9][0-9].* )) \
- )
- if "$(KBUILD_HOST)" == "darwin" && "$(VBOX_JAVA17PLUS_HOME)" != ""
- VBOX_JAVA17PLUS_HOME := $(VBOX_JAVA17PLUS_HOME)/Contents/Home
- endif
- endif
- endif
- VBOX_DITA_ORIGINAL_PATH := $(firstfile $(rversortfiles $(qwildcard ,$(KBUILD_DEVTOOLS)/common/dita-ot/v[4-9].*)) \
- $(KBUILD_DEVTOOLS)/common/dita-ot/v4.0.2-r1)
-
- VBOX_DITA_TECHNICAL_CONTENT_DTD_PATH = $(VBOX_DITA_ORIGINAL_PATH)/plugins/org.oasis-open.dita.v1_2/dtd/technicalContent/dtd
- VBOX_DITA_CLASSPATH = \
- $(subst $(SP),$(HOST_PATH_SEP),$(strip \
- $(VBOX_DITA_ORIGINAL_PATH)/lib/ant-launcher.jar \
- $(VBOX_DITA_ORIGINAL_PATH)/config \
- $(VBOX_DITA_ORIGINAL_PATH)/lib \
- $(wildcard \
- $(VBOX_DITA_ORIGINAL_PATH)/lib/*.jar \
- $(VBOX_DITA_ORIGINAL_PATH)/plugins/*/lib/*.jar)))
- VBOX_DITA_RUN_DOST = $(REDIRECT_EXT) \
- -E 'ANT_HOME=$(VBOX_DITA_ORIGINAL_PATH)' \
- -E 'DITA_DIR=$(VBOX_DITA_ORIGINAL_PATH)' \
- -E 'JAVA_HOME=$(VBOX_JAVA17PLUS_HOME)' \
- -E 'CLASSPATH=$(VBOX_DITA_CLASSPATH)' \
- $2 \
- -- \
- $(VBOX_JAVA17PLUS_HOME)/bin/java \
- "-Djava.awt.headless=true" \
- "-Dsun.io.useCanonCaches=true" \
- "-Dant.home=$(VBOX_DITA_ORIGINAL_PATH)" \
- "-Ddita.dir=$(VBOX_DITA_ORIGINAL_PATH)" \
- org.apache.tools.ant.launch.Launcher \
- -cp "$(VBOX_DITA_CLASSPATH)" \
- -buildfile "$(VBOX_DITA_ORIGINAL_PATH)/build.xml" \
- -main "org.dita.dost.invoker.Main" \
- --args.grammar.cache=yes \
- $(patsubst "/i:%,"--input=%, \
- $(patsubst "/transtype:%,"--format=%, \
- $(patsubst "/outdir:%,"--output=%, \
- $(patsubst "/tempdir:%,"--temp=%, \
- $(patsubst "/filter:%,"--filter=%, \
- $(patsubst "/debug","--debug",$3)))))) \
- $(if-expr defined(VBOX_DITA_DEBUG),"--clean.temp=no" "--debug",) \
- $5 --verbose
- endif
+ VBOX_DITA_RUN_DOST = $(REDIRECT_EXT) \
+ -E 'ANT_HOME=$(VBOX_DITA_OT_PATH)' \
+ -E 'DITA_DIR=$(VBOX_DITA_OT_PATH)' \
+ -E 'JAVA_HOME=$(VBOX_JAVA17PLUS_HOME)' \
+ -E 'CLASSPATH=$(VBOX_DITA_CLASSPATH)' \
+ $1 \
+ -- \
+ "$(VBOX_JAVA17PLUS_HOME)/bin/java" \
+ "-Djava.awt.headless=true" \
+ "-Dsun.io.useCanonCaches=true" \
+ "-Dant.home=$(VBOX_DITA_OT_PATH)" \
+ "-Ddita.dir=$(VBOX_DITA_OT_PATH)" \
+ org.apache.tools.ant.launch.Launcher \
+ -cp "$(VBOX_DITA_CLASSPATH)" \
+ -buildfile "$(VBOX_DITA_OT_PATH)/build.xml" \
+ -main "org.dita.dost.invoker.Main" \
+ --args.grammar.cache=yes \
+ --verbose \
+ $(if-expr defined(VBOX_DITA_DEBUG),"--clean.temp=no" "--debug",) \
+ $2
+
+ VBOX_DITA_CLASSPATH = \
+ $(subst $(SP),$(HOST_PATH_SEP),$(strip \
+ $(VBOX_DITA_OT_PATH)/lib/ant-launcher.jar \
+ $(VBOX_DITA_OT_PATH)/config \
+ $(VBOX_DITA_OT_PATH)/lib \
+ $(wildcard \
+ $(VBOX_DITA_OT_PATH)/lib/*.jar \
+ $(VBOX_DITA_OT_PATH)/plugins/*/lib/*.jar)))
#
@@ -810,7 +775,7 @@ if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DO
#
# 4a. UserManual.pdf - Run dost.jar from DITA-OT to produce the PDF version.
#
- # Note! The /tempdir is deleted, recreated, used and deleted again for each
+ # Note! The --temp (dir) is deleted, recreated, used and deleted again for each
# run. So, be careful where you point it.
# Note! This crappy utility may fail to find files (or fail to parse the
# command line) and still return a successfully (0) exit code.
@@ -831,15 +796,12 @@ if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DO
"$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/temp_pdf" \
$$(if-expr defined(VBOX_DITA_USING_LATEST),,"$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/UserManual_pdf.log")
$$(QUIET)$$(RM) -Rf -- "$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita-ot-pdf/"
- $$(QUIET)$$(call VBOX_DITA_RUN_DOST,$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita-ot-pdf,, \
- "/i:$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/UserManual.ditamap" \
- "/transtype:pdf" \
- "/filter:$$(VBOX_PATH_MANUAL_SRC)/$(1)/dita/ohc.ditaval" \
- "/outdir:$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)" \
- "/tempdir:$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/temp_pdf" \
- , \
- "/grammarcache:yes" \
- , \
+ $$(QUIET)$$(call VBOX_DITA_RUN_DOST,, \
+ "--input=$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/UserManual.ditamap" \
+ "--format=pdf" \
+ "--filter=$$(VBOX_PATH_MANUAL_SRC)/$(1)/dita/ohc.ditaval" \
+ "--output=$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)" \
+ "--temp=$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/temp_pdf" \
"--theme=$$(VBOX_PATH_MANUAL_SRC)/pdf-theme-UserManual.yaml" \
"--logfile=$$(@D)/UserManual_pdf.log" \
)
@@ -870,15 +832,12 @@ if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DO
$(if-expr defined(VBOX_DITA_USING_LATEST),,"$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita-ot-html-chunks/")
$(call MSG_L1,Building html chunks $@ ($(@D)/UserManual_xhtml.log))
$(QUIET)$(MKDIR) -- "$(@D)"
- $(QUIET)$(call VBOX_DITA_RUN_DOST,$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita-ot-html-chunks,, \
- "/i:$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/UserManual.ditamap" \
- "/transtype:xhtml" \
- "/filter:$(VBOX_PATH_MANUAL_SRC)/en_US/dita/htmlhelp.ditaval" \
- "/outdir:$(@D)" \
- "/tempdir:$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/temp_xhtml_chunks" \
- , \
- "/grammarcache:yes" \
- , \
+ $(QUIET)$(call VBOX_DITA_RUN_DOST,, \
+ "--input=$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/UserManual.ditamap" \
+ "--format=xhtml" \
+ "--filter=$(VBOX_PATH_MANUAL_SRC)/en_US/dita/htmlhelp.ditaval" \
+ "--output=$(@D)" \
+ "--temp=$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/temp_xhtml_chunks" \
"--logfile=$(@D)/UserManual_xhtml.log" \
"--store-type=memory" \
)
@@ -926,14 +885,11 @@ if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DO
"$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/UserManual.ditamap"
$(QUIET)$(RM) -Rf -- "$(@D)" "$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita-ot-html-single/"
$(QUIET)$(MKDIR) -- "$(@D)"
- $(QUIET)$(call VBOX_DITA_RUN_DOST,$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita-ot-html-single,, \
- "/i:$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/UserManual-Single.ditamap" \
- "/transtype:xhtml" \
- "/outdir:$(@D)" \
- "/tempdir:$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/temp_xhtml_single" \
- , \
- "/grammarcache:yes" \
- , \
+ $(QUIET)$(call VBOX_DITA_RUN_DOST,, \
+ "--input=$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/UserManual-Single.ditamap" \
+ "--format=xhtml" \
+ "--output=$(@D)" \
+ "--temp=$(VBOX_PATH_MANUAL_OUTBASE)/en_US/dita/temp_xhtml_single" \
"--logfile=$(@D)/UserManual-Single_xhtml.log" \
"--store-type=memory" \
)
@@ -1036,15 +992,12 @@ if defined(VBOX_WITH_DOCS) && (!defined(VBOX_ONLY_BUILD) || defined(VBOX_ONLY_DO
$(if-expr defined(VBOX_DITA_USING_LATEST),,"$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita-ot-qhelp/")
$$(call MSG_L1,dita-ot-qhelp, => $$@ ($(2)/UserManual_htmlhelp.log))
$$(QUIET)$$(MKDIR) -- "$$(@D)"
- $$(call VBOX_DITA_RUN_DOST,$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita-ot-qhelp, -EHHCDIR="$$(@D)", \
- "/i:$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/UserManual.ditamap" \
- "/transtype:htmlhelp" \
- "/filter:$$(VBOX_PATH_MANUAL_SRC)/$(1)/dita/htmlhelp.ditaval" \
- "/outdir:$(2)" \
- "/tempdir:$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/temp_qhelp" \
- , \
- "/grammarcache:yes" \
- , \
+ $$(call VBOX_DITA_RUN_DOST, -EHHCDIR="$$(@D)", \
+ "--input=$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/UserManual.ditamap" \
+ "--format=htmlhelp" \
+ "--filter=$$(VBOX_PATH_MANUAL_SRC)/$(1)/dita/htmlhelp.ditaval" \
+ "--output=$(2)" \
+ "--temp=$$(VBOX_PATH_MANUAL_OUTBASE)/$(1)/dita/temp_qhelp" \
"--logfile=$(2)/UserManual_htmlhelp.log" \
"-Ddita.output.dir=$(2)" \
)
diff --git a/doc/manual/dita-ot-copy-exec.sh b/doc/manual/dita-ot-copy-exec.sh
deleted file mode 100755
index f917258fecc..00000000000
--- a/doc/manual/dita-ot-copy-exec.sh
+++ /dev/null
@@ -1,205 +0,0 @@
-#!/usr/bin/env kmk_ash
-# $Id$
-## @file
-# Helper Script for copying the DITA-OT toolkit from $1 to $2,
-# run the following command line, nuke $2.
-#
-# DITA-OT-1.8.5 updates around 40 files everytime it is started in an manner
-# that will cause race conditions when starting multiple dost.jar instances
-# concurrently. So, we work around that by running each job of a unqiue and
-# temporary copy. Extra effort is taken to using hardlinking when possible
-# and to reduce the number of files and directory we copy.
-#
-
-#
-# Copyright (C) 2023 Oracle and/or its affiliates.
-#
-# This file is part of VirtualBox base platform packages, as
-# available from https://www.virtualbox.org.
-#
-# 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, in version 3 of the
-# License.
-#
-# 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, see <https://www.gnu.org/licenses>.
-#
-# SPDX-License-Identifier: GPL-3.0-only
-#
-
-#
-# Some constants.
-#
-MY_INSTALL="kmk_install"
-MY_MKDIR="kmk_mkdir"
-MY_RM="kmk_rm"
-MY_SED="kmk_sed"
-MY_CP="kmk_cp"
-
-# Debug
-MY_DEBUG_INSTALL="-v"
-MY_DEBUG_INSTALL=""
-
-MY_DEBUG_MKDIR="-v"
-MY_DEBUG_MKDIR=""
-
-MY_DEBUG_RM="-v"
-MY_DEBUG_RM=""
-
-#
-# Pop off the source and target directories from the input arguments.
-# We're not trying to be very userfriendly here, just reasonably safe.
-#
-if test $# -lt 5; then
- echo "syntax error: too few arguments" 1>&2;
- exit 2;
-fi
-MY_SRCDIR="$1"
-MY_DSTDIR="$2"
-if test "$3" != "--"; then
- echo "syntax error: Expected '--' as the 3rd parameter, got: $3" 1>&2;
- exit 2;
-fi
-shift 3
-if ! test -d "${MY_SRCDIR}"; then
- echo "error: Source directory does not exists or is not a directory: ${MY_SRCDIR}" 1>&2;
- exit 1;
-fi
-if test -e "${MY_DSTDIR}"; then
- echo "error: Destination directory already exists: ${MY_DSTDIR}" 1>&2;
- exit 1;
-fi
-
-#
-# Helper.
-#
-CopyTree()
-{
- MY_SRCTREE="$1"
- MY_DSTTREE="$2"
-
- # Gather files and directories.
- cd "${MY_SRCTREE}"
- MY_DIRS=""
- MY_DIRS_PAIRS=""
- MY_FILES=""
- MY_EXEC_FILES=""
- for MY_FILE in *;
- do
- if test "${MY_FILE}" = "*"; then
- # For empty directories we get '*' back. Ignore it.
- elif test -d "${MY_SRCTREE}/${MY_FILE}"; then
- case "${MY_SRCTREE}/${MY_FILE}" in
- *\ *)
- echo "Unexpected space in dir/subdir: ${MY_SRCTREE}/${MY_FILE}" 1>&2;
- exit 1
- ;;
- esac
- MY_DIRS="${MY_DIRS} ${MY_FILE}"
- MY_DIRS_PAIRS="${MY_DIRS_PAIRS} ${MY_SRCTREE}/${MY_FILE} ${MY_DSTTREE}/${MY_FILE}"
- elif test -f "${MY_SRCTREE}/${MY_FILE}"; then
- case "${MY_SRCTREE}/${MY_FILE}" in
- *\ *)
- echo "Unexpected space in dir/filename: ${MY_SRCTREE}/${MY_FILE}" 1>&2;
- exit 1
- ;;
-
- *org.dita.dost.platform/plugin.properties)
- ;;
- *_template.xml)
- MY_FILES="${MY_FILES} ${MY_FILE}"
- MY_TEMPLATED_FILES="${MY_TEMPLATED_FILES} ${MY_DSTTREE}/${MY_FILE%_template.xml}.xml"
- ;;
- *_template.xsl)
- MY_FILES="${MY_FILES} ${MY_FILE}"
- MY_TEMPLATED_FILES="${MY_TEMPLATED_FILES} ${MY_DSTTREE}/${MY_FILE%_template.xsl}.xsl"
- ;;
- *)
- if test -x "${MY_SRCTREE}/${MY_FILE}"; then
- MY_EXEC_FILES="${MY_EXEC_FILES} ${MY_FILE}"
- else
- MY_FILES="${MY_FILES} ${MY_FILE}"
- fi
- ;;
- esac
- else
- echo "Unexpected file type: ${MY_SRCTREE}/${MY_FILE}" 1>&2;
- exit 1
- fi
- done
-
- # Install all the files in one go.
- if test -n "${MY_FILES}"; then
- "${MY_INSTALL}" ${MY_DEBUG_INSTALL} --hard-link-files-when-possible -m644 -- ${MY_FILES} "${MY_DSTTREE}/"
- fi
- if test -n "${MY_EXEC_FILES}"; then
- "${MY_INSTALL}" ${MY_DEBUG_INSTALL} --hard-link-files-when-possible -m755 -- ${MY_EXEC_FILES} "${MY_DSTTREE}/"
- fi
-
- # Create all subdirs and recurse into each.
- if test -n "${MY_DIRS}"; then
- cd "${MY_DSTTREE}"
- "${MY_MKDIR}" -p ${MY_DEBUG_MKDIR} -- ${MY_DIRS}
-
- # Now transfer MY_DIRS_PAIRS to the argument list, so they're preseved across recursive calls.
- # (the local command/keyword is busted in current binaries, though fixed in kBuild svn.)
- set -- ${MY_DIRS_PAIRS};
- while test "$#" -ge 2;
- do
- CopyTree "${1}" "${2}"
- shift 2
- done
- fi
-}
-
-#
-# Copy the files over.
-#
-set -e
-MY_SAVED_CWD=`pwd`
-"${MY_MKDIR}" -p ${MY_DEBUG_MKDIR} -- "${MY_DSTDIR}"
-
-# Selected root files.
-"${MY_INSTALL}" ${MY_DEBUG_INSTALL} --hard-link-files-when-possible -m644 -- \
- "${MY_SRCDIR}/build_template.xml" \
- "${MY_SRCDIR}/catalog-dita.txt" \
- "${MY_SRCDIR}/catalog-dita_template.xml" \
- "${MY_SRCDIR}/integrator.properties" \
- "${MY_SRCDIR}/integrator.xml" \
- "${MY_DSTDIR}/"
-
-# Selected directory trees.
-MY_TEMPLATED_FILES=""
-for MY_SUBDIR in css dtd lib plugins resource schema tools xsl;
-do
- "${MY_MKDIR}" -p ${MY_DEBUG_MKDIR} -- "${MY_DSTDIR}/${MY_SUBDIR}"
- CopyTree "${MY_SRCDIR}/${MY_SUBDIR}" "${MY_DSTDIR}/${MY_SUBDIR}"
-done
-
-# Now remove all files that has a _template.xml/xsl variant, just to ensure
-# that if hardlinked the copy in the tree won't be modified.
-if test -n "${MY_TEMPLATED_FILES}"; then
- "${MY_RM}" -f ${MY_DEBUG_RM} -- ${MY_TEMPLATED_FILES}
-fi
-
-cd "${MY_SAVED_CWD}"
-set +e
-
-#
-# Execute the command.
-#
-"$@"
-MY_EXITCODE=$?
-
-#
-# Cleanup and exit.
-#
-#"${MY_RM}" -Rf ${MY_DEBUG_RM} -- "${MY_DSTDIR}"
-exit ${MY_EXITCODE}
-