summaryrefslogtreecommitdiff
path: root/scripts/shipping/prepare-linux-qt-for-shipping.sh
blob: b8c058a84cb6dcf3b09ee3fc9ca242fdf69d25d9 (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
#!/usr/bin/env bash

version="4.5-rc1"
workdir=/home/berlin/dev/qt-${version}-temp
destdir=/home/berlin/dev/qt-${version}-shipping/qt  # "/qt" suffix for Bitrock
dir=qt-x11-opensource-src-${version}
file_tar="${dir}.tar"
file_tar_gz="${file_tar}.gz"
[ -z ${MAKE} ] && MAKE=make
envpath=/usr/bin:/bin

if gcc -dumpversion | grep '^4' ; then
	# GCC 4.x machine
	webkit=
else
	# GCC 3.3.5 machine
	webkit='-no-webkit'
fi


die() {
	echo $1 1>&2
	exit 1
}

rand_range() {
    incMin=$1
    incMax=$2
    echo $((RANDOM*(incMax-incMin+1)/32768+incMin))
}


setup() {
	mkdir -p "${workdir}"
	cd "${workdir}" || die "cd failed"
}

download() {
	[ -f "${file_tar_gz}" ] && return
	case `rand_range 1 2` in
	1)
		mirror=http://ftp.ntua.gr/pub/X11/Qt/qt/source
		;;
	*)
		mirror=http://wftp.tu-chemnitz.de/pub/Qt/qt/source
		;;
	esac
	wget "${mirror}/${file_tar_gz}" || die "Download failed"
}

unpack() {
	[ -d "${dir}" ] && return
	gzip -d "${file_tar_gz}" || die "gunzip failed"
	tar -xf "${file_tar}" || die "untar failed"
}

build() {
	(
		cd "${dir}" || die "cd failed"
		if [ ! -f config.status ] ; then
			env -i PATH=${envpath} ./configure \
				-prefix "${destdir}" \
				-optimized-qmake \
				-confirm-license \
				\
				-no-mmx -no-sse -no-sse2 -no-3dnow \
				-release -fast \
				${webkit} \
				-qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg \
				\
				|| die "configure failed"
		fi
	
		env -i PATH=${envpath} "${MAKE}" || die "make failed"
	)
	ret=$?; [ ${ret} = 0 ] || exit ${ret}
}

inst() {
	(
		cd "${dir}" || die "cd failed"
		if [ ! -d "${destdir}" ]; then
			mkdir -p "${destdir}"
			env -i "${MAKE}" install || die "make install failed"
		fi

		# Fix rpath's
		cd "${destdir}" || die "cd failed"
		find bin -mindepth 1 -maxdepth 1 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN/../lib'
		find lib -mindepth 1 -maxdepth 1 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN'
		find . -mindepth 3 -maxdepth 3 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN/../../lib'
		find . -mindepth 4 -maxdepth 4 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN/../../../lib'
		find . -mindepth 5 -maxdepth 5 -type f -perm -100 | xargs -n 1 chrpath -r '$ORIGIN/../../../../lib'
	)
	ret=$?; [ ${ret} = 0 ] || exit ${ret}
}

main() {
	(
		setup
		download
		unpack
		build
		inst
	)
	ret=$?; [ ${ret} = 0 ] || exit ${ret}
}

main