All,
Here are recent build times for Trinity svn on a middle of the road P4 3.2G box. (nothing special - old Dell GX280 'small form factor'):
10:55 supersff:~/tblds> grep Feb bldlog.txt Feb 19 01:44:45 building: trinity-qt3 Feb 19 02:06:12 building: trinity-pyqt3 Feb 19 02:17:05 building: trinity-tqtinterface Feb 19 02:18:16 building: trinity-arts Feb 19 02:22:02 building: trinity-kdelibs Feb 19 03:01:01 building: trinity-kdebase Feb 19 03:36:42 building: trinity-kdevelop Feb 19 03:51:13 building: trinity-kdewebdev Feb 19 03:58:21 done!
2:14 beginning to end. For anyone packaging Trinity, the basic 'outline' of the build script layout I used was (link to full script below):
#!/bin/bash <snip>
# array of build directories -- in order declare -a blddirs blddirs=('trinity-qt3' 'trinity-pyqt3' 'trinity-tqtinterface' 'trinity-arts' 'trinity-kdelibs' 'trinity-kdebase' 'trinity-kdevelop' 'trinity-kdewebdev')
# loop through the blddirs to build each in order for((i=0;i<${#blddirs[@]};i++)); do
# copy your dev dir to the build dir (I don't build in my original dev dir) # if working with srpms, you could either install them at this point and # build with 'rpmbuild -bb specfile' or just 'rpmbuild --rebuild srpm'. cp -a ${pbbase}/${blddirs[$i]} $bldbase
# if the dir got copied (or spec file exists) -- use it, if not skip it if [[ -d ${bldbase}/${blddirs[$i]} ]]; then
# start time to screen & log echo -e "\n$(date '+%b %e %T') building: ${blddirs[$i]}\n" | tee -a ${bldlog}
# change into the build dir cd ${bldbase}/${blddirs[$i]}
# move any existing packages out to pkgdir (adjust for .rpm or .deb) echo -e "\n Testing for old packages and moving to ${binsavdir}\n" if ls *tar.xz &>/dev/null; then mv -fv *tar.xz ${binsavdir} | tee -a ${bldlog} fi
# build the new package (adjust for rpbbuild -bb or whatever deb uses) (makepkg -s)
# install and move new package to $pkgbin dir (adjust as needed) # if the build failed, issue warning an move on echo -e "\n Testing for new packages, installing, and moving to ${binpkgdir}\n" if ls *tar.xz &>/dev/null; then sudo pacman -U --noconfirm *tar.xz | tee -a ${bldlog} mv -fv *tar.xz ${binpkgdir} | tee -a ${bldlog} else echo "WARNING: Build of '${blddirs[$i]}' produced no package, skipping..." | tee -a ${bldlog} fi else echo "WARNING: Directory '${bldbase}/${blddirs[$i]}' not found - skipping" | tee -a ${bldlog} fi done
exit 0
The link to the full script is:
http://www.3111skyline.com/dl/dt/trinity/arch/scr/bldtrinsvn-all.sh
It should be able to be easily adapted for rpm based builds or whatever debian and slackware use. The PKGBUILD scripts that Arch Linux uses with "makepkg" work the same way SPEC files work with "rpmbuild" on rpm based distros.
On 02/19/2011 11:25 AM, David C. Rankin wrote:
All,
Here are recent build times for Trinity svn on a middle of the road P4 3.2G box. (nothing special - old Dell GX280 'small form factor'):
10:55 supersff:~/tblds> grep Feb bldlog.txt Feb 19 01:44:45 building: trinity-qt3 Feb 19 02:06:12 building: trinity-pyqt3 Feb 19 02:17:05 building: trinity-tqtinterface Feb 19 02:18:16 building: trinity-arts Feb 19 02:22:02 building: trinity-kdelibs Feb 19 03:01:01 building: trinity-kdebase Feb 19 03:36:42 building: trinity-kdevelop Feb 19 03:51:13 building: trinity-kdewebdev Feb 19 03:58:21 done!
2:14 beginning to end. For anyone packaging Trinity, the basic 'outline' of the build script layout I used was (link to full script below):
<snip>
The link to the full script is:
http://www.3111skyline.com/dl/dt/trinity/arch/scr/bldtrinsvn-all.sh
It should be able to be easily adapted for rpm based builds or whatever debian and slackware use. The PKGBUILD scripts that Arch Linux uses with "makepkg" work the same way SPEC files work with "rpmbuild" on rpm based distros.
I love this build script -- Rebuild times (with svn up on each module):
18:57 supersff:~/tblds> grep Feb bldlog.txt Feb 19 18:50:18 building: trinity-tqtinterface Feb 19 18:50:27 building: trinity-arts Feb 19 18:50:43 building: trinity-kdelibs Feb 19 18:53:30 building: trinity-kdebase Feb 19 18:56:37 building: trinity-kdevelop Feb 19 18:57:25 building: trinity-kdewebdev Feb 19 18:57:49 done!
The relevant build() and package() functions of the build script (Arch PKGBUILD for makepkg) are:
<snip>
_svnmod=kdebase _svntrunk="svn://anonsvn.kde.org/home/kde/branches/trinity/${_svnmod}"
trinity_prefix="/opt/trinity"
build() {
cd ${srcdir}
msg "Connecting to SVN server to update or checkout ${_svnmod}...." if [ -d ${_svnmod}/.svn ]; then (cd ${_svnmod} && svn up) [[ $? -eq 0 ]] || _co_failed=1 else (svn co $_svntrunk ${_svnmod}) [[ $? -eq 0 ]] || _co_failed=1 fi
# if update or checkout failed - bail... if [[ $_co_failed -ne 1 ]]; then msg "SVN checkout of revision $pkgver -- Complete." else msg "SVN checkout of revision $pkgver -- Failed or server timeout." exit 1 fi
msg "Setting PATH, CMAKE and Trinity Environment variables" export CMAKE_PREFIX_PATH=/opt/qt:/opt/trinity
CMAKE_INCLUDE_PATH=/opt/qt/include:/opt/qt/include/tqt:/usr/include/dbus-1.0:/opt/trinity/include:/opt/trinity/include/libkrandr export LD_LIBRARY_PATH=/opt/trinity/lib:/opt/trinity/lib/kde3:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/qt/lib/pkgconfig
cd ${srcdir}/${_svnmod}
cmake ./ \ -DCMAKE_INSTALL_PREFIX=${trinity_prefix} \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DWITH_QT3=ON \ -DQTDIR=/opt/qt \ -DQT_LIBRARY_DIRS=/opt/qt/lib \ -DWITH_PAM=ON \ -DBUILD_ALL=ON make }
package() { msg "Packaging - $pkgname-$pkgver" cd ${srcdir}/${_svnmod}
make DESTDIR="$pkgdir/" install
cd ${startdir}
# install desktop and update kdmrc and Xsession [[ -f trinity.desktop ]] && { mkdir -p ${pkgdir}/etc/X11/sessions cp trinity.desktop ${pkgdir}/etc/X11/sessions }
_kdmdir=${trinity_prefix}/share/config/kdm [[ -d ${pkgdir}/${_kdmdir} ]] || mkdir -p ${pkgdir}/${_kdmdir}
[[ -f kdmrc ]] && cp kdmrc ${pkgdir}/${_kdmdir}
[[ -f Xsession ]] && { cp Xsession ${pkgdir}/${_kdmdir} chmod 0755 ${pkgdir}/${_kdmdir}/Xsession }
[[ -d ${pkgdir}/usr/bin ]] || mkdir -p ${pkgdir}/usr/bin cd ${pkgdir}/usr/bin ln -sf /opt/trinity/bin/startkde starttrinity
cd ${startdir}
# rm -r ${srcdir}/${_svnmod} }
Note: the package() function includes updated trinity.desktop, kdmrc, Xsession and links for /usr/bin/starttrinity that allow Trinity kdm to work by simply modifying inittab, setting initial boot to runlevel 5 and specifying the desktop login manager as:
x:5:respawn:/opt/trinity/bin/kdm -nodaemon
The trinity.desktop, kdmrc and Xsession being used can all be found here:
http://www.3111skyline.com/dl/dt/trinity/arch/cfg/