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/ -- David C. Rankin, J.D.,P.E.