trinity-users@lists.pearsoncomputing.net

Message: previous - next
Month: February 2011

Re: [trinity-users] Current Build Times & Quick & Dirty build script outline - just FYI

From: "David C. Rankin" <drankinatty@...>
Date: Sat, 19 Feb 2011 19:11:14 -0600
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.