summaryrefslogtreecommitdiffstats
path: root/bin/d-i_manual.sh
blob: ce00d909873617e2f776c9e0964fc924ad858591 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#!/bin/bash

# Copyright 2012,2014 Holger Levsen <holger@layer-acht.org>
# released under the GPLv=2

DEBUG=false
. /srv/jenkins/bin/common-functions.sh
common_init "$@"

cleanup_workspace() {
	#
	# clean
	#
	cd $WORKSPACE
	cd ..
	rm -fv *.deb *.udeb *.dsc *_*.build *_*.changes *_*.tar.gz *_*.tar.bz2 *_*.tar.xz *_*.buildinfo
	cd $WORKSPACE
	#
	# git clone and pull is done by jenkins job
	#
	if [ -d .git ] ; then
		echo "git status:"
		git status
	elif [ -f .svn ] ; then
		echo "svn status:"
		svn status
		svn stat --no-ignore
	fi
}

pdebuild_package() {
	#
	# only used to build the installation-guide package
	#
	SOURCE=installation-guide
	#
	# prepare build
	#
	if [ -f /var/cache/pbuilder/base.tgz ] ; then
		sudo pbuilder --create --http-proxy $http_proxy
	else
		sudo pbuilder --update --http-proxy $http_proxy
	fi

	#
	# build
	#
	cd manual
	NUM_CPU=$(grep -c '^processor' /proc/cpuinfo)
	pdebuild --use-pdebuild-internal --debbuildopts "-j$NUM_CPU" -- --http-proxy $http_proxy
	#
	# publish and cleanup
	#
	CHANGES=$(ls /var/cache/pbuilder/result/${SOURCE}_*changes)
	publish_changes_to_userContent $CHANGES debian-boot "svn-r$SVN_REVISION"
	echo
	cat $CHANGES
	echo
	sudo dcmd rm $CHANGES
	cd ..
}

po2xml() {
	#
	# This needs a schroot called jenkins-d-i-sid with the
	# build-depends for the installation-guide package installed.
	# The d-i_schroot-sid-create job creates it.
	#
	schroot --directory $BUILDDIR/manual -c source:jenkins-d-i-sid sh ./scripts/merge_xml en
	schroot --directory $BUILDDIR/manual -c source:jenkins-d-i-sid sh ./scripts/update_pot
	schroot --directory $BUILDDIR/manual -c source:jenkins-d-i-sid sh ./scripts/update_po $1
	schroot --directory $BUILDDIR/manual -c source:jenkins-d-i-sid sh ./scripts/revert_pot
	schroot --directory $BUILDDIR/manual -c source:jenkins-d-i-sid sh ./scripts/create_xml $1
}

build_language() {
	FORMAT=$2
	mkdir $FORMAT
	echo "Building the $FORMAT version of the $1 manual now."
	cd manual/build
	ARCHS=$(ls arch-options)
	for ARCH in $ARCHS ; do
		# ignore kernel architectures
		if [ "$ARCH" != "hurd" ] && [ "$ARCH" != "kfreebsd" ] && [ "$ARCH" != "linux" ] ; then
			#
			# This needs a schroot called jenkins-d-i-sid with the
			# build-depends for the installation-guide package installed.
			# The d-i_schroot-sid-create job creates it.
			#
			set -x
			schroot --directory $BUILDDIR/manual/build -c source:jenkins-d-i-sid make languages=$1 architectures=$ARCH destination=$BUILDDIR/manual/build/$FORMAT/ formats=$FORMAT
			set +x
			if ( [ "$FORMAT" = "pdf" ] && [ ! -f pdf/$1.$ARCH/install.$1.pdf ] ) || \
				( [ "$FORMAT" = "html" ] && [ ! -f html/$1.$ARCH/index.html ] ) ; then
					echo
					echo "Failed to build $1 $FORMAT for $ARCH, exiting."
					echo
					exit 1
			fi
		fi
	done
	cd ../..
	# remove directories if they are empty and in the case of pdf, leave a empty pdf
	# maybe it is indeed better not to create these jobs in the first place...
	# this is due to "Warning: pdf and ps formats are currently not supported for Chinese, Greek, Japanese and Vietnamese"
	(rmdir $FORMAT/* 2>/dev/null && rmdir $FORMAT 2>/dev/null ) || true
	if [ "$FORMAT" = "pdf" ] && [ ! -d $FORMAT ] ; then
		mkdir -p pdf/dummy
		touch pdf/dummy/dummy.pdf
	fi
	echo
}

cleanup_srv() {
	if [ "${BUILDDIR:0:9}" = "/srv/d-i/" ] && [ ${#BUILDDIR} -ge 10 ] ; then
		echo "Removing $BUILDDIR now."
		rm -rf $BUILDDIR
	fi
}


cleanup_workspace
#
# if $1 is not given, build the whole manual,
# else just the language $1 in format $2
#
# $1 = LANG
# $2 = FORMAT
# $3 if set, manual is translated using po files (else xml files are the default)
if [ "$1" = "" ] ; then
	pdebuild_package
else
	rm -rf html pdf
	if [ "$2" = "" ] ; then
		echo "Error: need format too."
		exit 1
	fi
	trap cleanup_srv INT TERM EXIT
	BUILDDIR=$(mktemp -d -p /srv/d-i d-i-manual-XXXX)
	echo "Copying $WORKSPACE/manual to $BUILDDIR now."
	cp -r $WORKSPACE/manual $BUILDDIR/
	cd $BUILDDIR
	if [ "$3" = "" ] ; then
		build_language $1 $2
	else
		po2xml $1
		build_language $1 $2
	fi
	echo "Copying back results from $BUILDDIR/manual/build/$2 to $WORKSPACE/"
	cp -r $BUILDDIR/manual/build/$2 $WORKSPACE/
	trap - INT TERM EXIT
	cleanup_srv
fi
cleanup_workspace