= Readesm =
This program takes an ESM file(possible file extensions are .esm, .dd, .tgd or .add), downloaded from a digital tachograph or a driver card (used in the European Union for trucks > 3.5 tons), and converts it into human-readable form, either html or simple plaintext.

Project page [[http://sourceforge.net/projects/readesm/]].

== Slackbuild ==

Run commands:
 * APPNAME=readesm
 * SOURCECODE=readesm-2011.12pre1.tar.bz2
 * cd /tmp
 * mkdir $APPNAME
 * cd $APPNAME
 * wget [[http://heanet.dl.sourceforge.net/project/readesm/readesm/2011-12/readesm-2011.12pre1-Source.tar.bz2]]
 * mv readesm-2011.12pre1-Source.tar.bz2 $SOURCECODE
 * touch $APPNAME.SlackBuild
 * touch slack-desc
 * tar -xvif $SOURCECODE || exit 1
 * nano slack-desc #fill slack-desc
 * nano readesm.SlackBuild #fill readesm.SlackBuild
 * chmod 755 $APPNAME.SlackBuild
 * ./$APPNAME.SlackBuild
 * installpkg /tmp/readesm-2011.12pre1-Source-i486-1_SBo.tgz

=== Content of slack-desc ===
{{{#!highlight bash
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|' on
# the right side marks the last column you can put a character in.  You must make
# exactly 11 lines for the formatting to be correct.  It's also customary to
# leave one space after the ':'.

       |-----handy-ruler------------------------------------------------------|
readesm: readesm - Shows the content of digital tachograph files 
readesm: This program takes an ESM file( file extensions are .esm, .dd, 
readesm: .tgd or .add), downloaded from a digital tachograph or a driver card 
readesm: (used in the European Union for trucks > 3.5 tons), and converts it 
readesm: into human-readable form, either html or simple plaintext.
readesm:
readesm: Homepage: http://readesm.sourceforge.net/
readesm: Homepage: http://sourceforge.net/projects/readesm/
readesm:
readesm:
readesm:
}}} 

=== Content of readesm.SlackBuild ===
{{{#!highlight bash
#!/bin/sh -e
#V.B. revision date 2013/07/04
#Set initial variables: 
CWD=$(pwd)
if [ "$TMP" = "" ]; then
  TMP=/tmp
fi

# The version which appears in the application's filename
VERSION=2011.12pre1-Source
# If the version conflicts with the Slackware package standard
# The dash character ("-") is not allowed in the VERSION string
# You can set the PKG_VERSION to something else than VERSION
PKG_VERSION=2011.12pre1-Source # the version which appears in the package name. 
ARCH=${ARCH:-i486} # the architecture on which you want to build your package   
# First digit is the build number, which specifies how many times it has been built.    
# Second string is the short form of the authors name, typical three initials:w
BUILD=${BUILD:-1_SBo}
# The application's name
APP=readesm
# The installation directory of the package (where its actual directory
# structure will be created) 
PKG=$TMP/package-$APP

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486 -mtune=i686"
 elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -fPIC"
fi

# Delete the leftover directories if they exist (due to a previous build)
# and (re)create the packaging directory
rm -rf $PKG 
mkdir -p $TMP $PKG
rm -rf $TMP/$APP-$VERSION

# Change to the TMP directory
cd $TMP || exit 1
 
# Extract the application source in TMP
# Note: if your application comes as a tar.bz2, you need tar -jxvf
tar -xvif $CWD/$APP-$VERSION.tar.bz2 || exit 1

# Change to the application source directory
cd $APP-$VERSION || exit 1
 
# Change ownership and permissions if necessary
# This may not be needed in some source tarballs, but it never hurts
chown -R root:root .
chmod -R u+w,go+r-w,a-s .

# buils Unix makefiles
cmake -G 'Unix Makefiles'

echo 'Patching some source files as stated in http://sourceforge.net/p/readesm/bugs/2/'
sed -i 's/Block11Record.h/block11Record.h/g' ./fileformat/DataTypes/block11Record.cpp 
sed -i 's/Block11.h/block11.h/g' ./fileformat/VuBlocks/block11.cpp 
sed -i 's/Block11Record.h/block11Record.h/g' ./fileformat/VuBlocks/block11.h 
sed -i 's/Block13.h/block13.h/g' ./fileformat/VuBlocks/block13.cpp 
sed -i 's/Block11Record.h/block11Record.h/g' ./fileformat/VuBlocks/block13.h 
sed -i 's/Block13.h/block13.h/g' ./fileformat/VuBlocks/vuBlockFactory.cpp 
sed -i 's/Block11.h/block11.h/g' ./fileformat/VuBlocks/vuBlockFactory.cpp 

# clean the source, but exit if anything goes wrong
make clean || exit

# compile the source, but exit if anything goes wrong
make || exit
 
# Install everything into the package directory, but exit if anything goes wrong
make install DESTDIR=$PKG || exit

# Create a directory for documentation
mkdir -p $PKG/usr/doc/$APP-$VERSION

# Copy documentation to the docs directory and fix permissions
cp -a COPYING CHANGELOG README $PKG/usr/doc/$APP-$VERSION
find $PKG/usr/doc/$APP-$VERSION -type f -exec chmod 644 {} \;
# slackbuild copy
cat $CWD/$APP.SlackBuild > $PKG/usr/doc/$APP-$VERSION/$APP.SlackBuild

echo "Create the ./install directory and copy the slack-desc into it"
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

echo "Add doinst.sh to package (if it exists)"
if [ -e $CWD/doinst.sh.gz ]; then
  zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh
fi

echo "Compress man pages if they exist"
if [ -d $PKG/usr/man ]; then
  ( cd $PKG/usr/man
  find . -type f -exec gzip -9 {} \;
  for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
  ) 
fi

echo "Compress info pages if they exist (and remove the dir file)"
if [ -d $PKG/usr/info ]; then
  gzip -9 $PKG/usr/info/*.info
  rm -f $PKG/usr/info/dir
fi

echo "Build the package"
cd $PKG
/sbin/makepkg -l y -c n $TMP/$APP-$PKG_VERSION-$ARCH-$BUILD.tgz

}}}