From 2aa11b44ad5ae6b40e328f3f6d3616a96f30d3a2 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Tue, 26 Jun 2018 07:23:44 +0200 Subject: [PATCH] Updated Jenkinsfile and added user doc generation scripts. --- Jenkinsfile | 2 +- scripts/extract_user_doc.rb | 253 ++++++++++++++++++++++++++++++++++++ scripts/extract_user_doc.sh | 70 ++++++++++ 3 files changed, 324 insertions(+), 1 deletion(-) create mode 100755 scripts/extract_user_doc.rb create mode 100755 scripts/extract_user_doc.sh diff --git a/Jenkinsfile b/Jenkinsfile index 2bbadf168..5df7478b6 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -49,7 +49,7 @@ node("master") { withDockerContainer(image: "jenkins-${target}-basic") { // from shared library - installtest(target, target_dir) + installtest_nopymod(target, target_dir) } }) diff --git a/scripts/extract_user_doc.rb b/scripts/extract_user_doc.rb new file mode 100755 index 000000000..d83b99a78 --- /dev/null +++ b/scripts/extract_user_doc.rb @@ -0,0 +1,253 @@ + +# Produces the documentation text from within KLayout + +def xml2html(t) + + # strip XML processing instructions and DTD + t = t.sub(/^.*/m, "") + t = t.sub(/<\/body>.*$/m, "") + + # insert title in front of navigator + t = t.sub(/

KLayout Documentation (Qt #{$qt}): ") + + # replace .xml references in hrefs + t = t.gsub(/href=\"(.*?)\.xml\"/) { "href=\"#{$1}.html\""; } + t = t.gsub(/href=\"(.*?)\.xml#(.*?)\"/) { "href=\"#{$1}.html##{$2}\""; } + + # replace simplified XML tags with an opening/closing tag + t = t.gsub(/<(\w+)([^<>]*?)\/>/) { "<#{$1}#{$2}>" } + + # replace some closing tags which are not allowed + t = t.gsub(/<\/br>/, "").gsub(/<\/img>/, "") + + t + +end + +title = "KLayout " +title += ($klayout_version || "$version") + " " +title += "(" +title += ($klayout_version_date || "$date") + " " +title += ($klayout_version_rev || "$rev") +title += ") " +title += ($target_info && $target_info != "" ? "[#{$target_info}] " : "") + +HEADER=<<"END" + + + + + KLayout Documentation + + + + +#{title} +END + +TAIL=<<"END" + +END + + +hs = RBA::HelpSource.new + +hs.urls.each do |url| + + begin + + fn = ($target_doc + url).sub(/\.xml$/, ".html") + + t = hs.get(url) + t = HEADER + xml2html(t) + TAIL + + tt = nil + if File.exists?(fn) + File.open(fn, "rb") { |f| tt = f.read } + end + + if t != tt + puts "Writing #{fn} .." + File.open(fn, "wb") do |f| + f.write(t) + end + else + puts "Retained #{fn}." + end + + rescue => ex + puts "*** ERROR: #{ex.to_s}" + end + +end + + diff --git a/scripts/extract_user_doc.sh b/scripts/extract_user_doc.sh new file mode 100755 index 000000000..331513e55 --- /dev/null +++ b/scripts/extract_user_doc.sh @@ -0,0 +1,70 @@ +#!/bin/sh -e + +bin="" +src="" + +self=$(realpath $(which $0)) +inst_dir=$(dirname $self) +info="" + +while [ "$1" != "" ]; do + a="$1" + shift + if [ "$a" = "-h" ]; then + echo "./scripts/extract_user_doc -i " + exit 1 + elif [ "$a" = "-i" ]; then + info="$1" + shift + else + echo "invalid option $a" + exit 1 + fi +done + +doc_src=./src/lay/lay/doc +. ./version.sh + +for qt in 5 4; do + + target_doc=$(pwd)/doc-qt$qt + + rm -rf $target_doc + mkdir -p $target_doc + + export QT_SELECT=$qt + ./build.sh -qmake qmake -j4 -bin bin-release-qt$qt -build build-release-qt$qt + + for d in programming manual about images; do + mkdir -p $target_doc/$d + for f in $doc_src/$d/*.png; do + fn=$(basename $f) + if [ ! -e $target_doc/$d/$fn ] || [ $doc_src/$d/$fn -nt $target_doc/$d/$fn ]; then + echo "cp $doc_src/$d/$fn $target_doc/$d" + cp $doc_src/$d/$fn $target_doc/$d + fi + done + done + + mkdir -p $target_doc/code + + bin=bin-release-qt$qt + export LD_LIBRARY_PATH=$bin + export KLAYOUT_PATH=$bin + export KLAYOUT_HOME=$bin + + rm -f $bin/help-index.xml + $bin/klayout -rx -b \ + -rd "klayout_version=$KLAYOUT_VERSION" \ + -rd "klayout_version_rev=$KLAYOUT_VERSION_REV" \ + -rd "klayout_version_date=$KLAYOUT_VERSION_DATE" \ + -rd "target_doc=$target_doc" \ + -rd "target_info=$info" \ + -rd "qt=$qt" \ + -r $inst_dir/extract_user_doc.rb + + # just big: + # mv $bin/help-index.xml $target_doc/help-index.data + +done +