Nouveau forum : https://forum.slackware-fr.eu.org/

Annonce

29/01/2017 : Ce forum est dsormais en lecture seule. Merci d'utiliser le nouveau forum.

13/12/2014 : Inscriptions dsactives pour un moment en raison d'une recrudescence d'inscriptions plus que douteuses.

#1 03-08-2010 14:02:26

g4tsu
Membre
Date d'inscription: 26-07-2010
Messages: 22

[Slackbuild] Ctags

Lo,

Bon asteroid m'a dit que le SB existait mais n'tait pas maintenu... donc je le poste en dernire version. Encore une fois, toutes critiques/remarques constructives sont les bienvenues (enfin pas trop non plus smile )

Code:

#!/bin/bash
# by: g4tsu - http://www.slackware-fr.org <vion.nico@gmail.com>
#
# Build script for Slackware - Based on Generic SlackBuild
#
# Latest Software sourcecode is available at:
# http://ctags.sourceforge.net 
#
# Depends: /
# Suggest: /

# Variables Obligatoires
NAMESRC=${NAMESRC:-ctags}
VERSION=${VERSION:-5.8}  
EXT=${EXT:-tar.gz} 
NAMEPKG=${NAMEPKG:-ctags}
PKGEXT=${PKGEXT:-tgz}
BUILD=${BUILD:-1sfo} 
 
# Variables de construction
TMP=${TMP:-/tmp}  
OUT=${OUT:-$TMP/build}  
TARGET=${TARGET:-$ARCH} 
WGET=${WGET:-http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz} 
SUM=${SUM:-ctags-5.8.tar.gz.sha1}
DOC=${DOC:-COPYING EXTENDING.html FAQ INSTALL INSTALL.oth MAINTAINERS NEWS README}
ARCH=${ARCH:-$(uname -m | sed 's/^i.86$/i486/;s/^arm.*/arm/')}

set -e  # Le Slackbuild s arrete des qu il y a une erreur
umask 022  # Les repertoires et fichiers crees auront respectivement les droits 755 et 644
 
# Le SlackBuild verifie que vous ne le lancez pas en root.
if [ "$(id -u)" = "0" ]; then
  echo "You shouldn't run this SlackBuild as ROOT !"
  sleep 10
fi

# Telechargement des sources si ces-dernieres ne sont pas presentes.
if [ ! -r $NAMESRC-$VERSION.$EXT ]; then
  wget -vc $WGET -O $NAMESRC-$VERSION.$EXT.part
  mv $NAMESRC-$VERSION.$EXT.part $NAMESRC-$VERSION.$EXT
fi

# Verification de la somme sha1
if [ -n $SUM ]; then
 #echo "$SUM  $NAMESRC-$VERSION.$EXT" > $NAMESRC-$VERSION.$EXT.sha1
 sha1sum -c $NAMESRC-$VERSION.$EXT.sha1
elif [ -f $NAMESRC-$VERSION.$EXT.sha1 ]; then
 sha1sum -c $NAMESRC-$VERSION.$EXT.sha1
fi

# Variables temporaires
CWD=$(pwd)
PKG=$TMP/build/$NAMEPKG
NAME=$(tar ft $NAMESRC-$VERSION.$EXT | head -n 1 | awk -F/ '{ print $1 }')

# Verification du repertoire.
if [ ! -d $TMP ]; then
  echo "$TMP doesn't exist or is not a directory !"
  exit 1
fi

# On passe a la compilation. 
cd $TMP
echo "Building $NAMESRC-$VERSION.$EXT..."
tar xf $CWD/$NAMESRC-$VERSION.$EXT
cd $NAME

# Les options de compilation
case $ARCH in
      i386)SLKCFLAGS="-O2 -march=i386 -mtune=i686";LIBDIRSUFFIX="";;
            i486)SLKCFLAGS="-O2 -march=i486 -mtune=i686";LIBDIRSUFFIX="";;
      i586)SLKCFLAGS="-O2 -march=i586 -mtune=i686";LIBDIRSUFFIX="";;
            i686)SLKCFLAGS="-O2 -march=i686 -mtune=i686";LIBDIRSUFFIX="";;
      s390)SLKCFLAGS="-O2";LIBDIRSUFFIX="";;
          x86_64)SLKCFLAGS="-O2 -fPIC";LIBDIRSUFFIX="64"
esac

CFLAGS=$SLKCFLAGS \
CXXFLAGS=$SLKCFLAGS \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --mandir=/usr/man \
  --docdir=/usr/doc/$NAMEPKG-$VERSION \
  --build=$TARGET-slackware-linux
 
make -j3

# Make install ne prend pas en compte le $DESTDIR
mkdir -p $PKG/usr/bin/
cp ctags $PKG/usr/bin/ctags  &&  chmod 755 $PKG/usr/bin/ctags

# Verification de la presence du doinst.sh
if [ -r $CWD/doinst.sh ]; then
  cat $CWD/doinst.sh > $PKG/install/doinst.sh
fi

# Pour la DOC
mkdir -p $PKG/usr/doc/$NAMEPKG-$VERSION
cp -a $DOC $PKG/usr/doc/$NAMEPKG-$VERSION

# Installation du fichier slack-desc
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

# Compress the man pages
if [ -d $PKG/usr/man ]; then
    find $PKG/usr/man -type f -name "*.?" -exec gzip -9 {} \;
    for manpage in $(find $PKG/usr/man -type l) ; do
        ln -s $(readlink $manpage).gz $manpage.gz
        rm -f $manpage
    done
fi
                   
# Compress the info pages
if [ -d $PKG/usr/info ]; then
    rm -f $PKG/usr/info/dir
    gzip -9 $PKG/usr/info/*.info*
fi

# Optimisation avant creation du package
find $PKG -type f | xargs file | grep "LSB executable" | cut -f 1 -d : | xargs \
  strip --strip-unneeded 2> /dev/null || echo "No binaries to strip"
find $PKG -type f | xargs file | grep "shared object" | cut -f 1 -d : | xargs \
  strip --strip-unneeded 2> /dev/null || echo "No shared objects to strip"
find $PKG -type f | xargs file | grep "current ar archive" | cut -f 1 -d : | \
  xargs strip -g 2> /dev/null || echo "No archives to strip"

# Creation du paquet
# rm -rf $CWD/$NAMESRC-$VERSION.$EXT
cd $PKG
mkdir -p $OUT
PACKAGING="
chown root:root . -R
/sbin/makepkg -l y -c n $OUT/$NAMEPKG-$VERSION-$ARCH-$BUILD.$PKGEXT
rm -rf $PKG
rm -rf $TMP/$NAME
"
if [ "$(which fakeroot 2> /dev/null)" ]; then
  echo "$PACKAGING" | fakeroot
else
  su -c "$PACKAGING"
fi

Hors ligne

 

#2 03-08-2010 15:56:07

Thom1
Administrateur
Date d'inscription: 21-09-2007
Messages: 524
Site web

Re: [Slackbuild] Ctags

Code:

# Variables de construction
TMP=${TMP:-/tmp}  
OUT=${OUT:-$TMP/build}  
TARGET=${TARGET:-$ARCH} 
WGET=${WGET:-http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz} 
SUM=${SUM:-ctags-5.8.tar.gz.sha1}
DOC=${DOC:-COPYING EXTENDING.html FAQ INSTALL INSTALL.oth MAINTAINERS NEWS README}
ARCH=${ARCH:-$(uname -m | sed 's/^i.86$/i486/;s/^arm.*/arm/')}

erreur : TARGET prend la valeur de $ARCH qui n'a pas encore t initialise. Il faut donc initialiser TARGET aprs ARCH.
warning : pourquoi ne pas en profiter pour mettre "http://prdownloads.sourceforge.net/$NAMESRC/$NAMESRC-$VERSION.tar.gz" ? Ce sera moins chiant maintenir.

Code:

# Verification de la somme sha1
if [ -n $SUM ]; then
 #echo "$SUM  $NAMESRC-$VERSION.$EXT" > $NAMESRC-$VERSION.$EXT.sha1
 sha1sum -c $NAMESRC-$VERSION.$EXT.sha1
elif [ -f $NAMESRC-$VERSION.$EXT.sha1 ]; then
 sha1sum -c $NAMESRC-$VERSION.$EXT.sha1
fi

warning : tu fais 2x le mme test. Soit tu mets la somme sha1 dans la variable SUM et tu laisses "echo "$SUM  $NAMESRC-$VERSION.$EXT" > $NAMESRC-$VERSION.$EXT.sha1", soit tu la laisses vide et le SB saura trouv le fichier .sha1.

Sinon je n'ai pas test le SB, donc je ne sais pas si la suite est correcte.

Dernire modification par Thom1 (03-08-2010 15:56:55)

Hors ligne

 

#3 03-08-2010 16:19:20

g4tsu
Membre
Date d'inscription: 26-07-2010
Messages: 22

Re: [Slackbuild] Ctags

En effet hmm

Bon modif done et propage sur mon svn.
Je colle le code encore un coup (Pas tester le code)

Code:

#!/bin/bash
# by: g4tsu - http://www.slackware-fr.org <vion.nico@gmail.com>
#
# Build script for Slackware - Based on Generic SlackBuild
#
# Latest Software sourcecode is available at:
# http://ctags.sourceforge.net 
#
# Depends: /
# Suggest: /

# Variables Obligatoires
NAMESRC=${NAMESRC:-ctags}
VERSION=${VERSION:-5.8}  
EXT=${EXT:-tar.gz} 
NAMEPKG=${NAMEPKG:-ctags}
PKGEXT=${PKGEXT:-tgz}
BUILD=${BUILD:-1sfo} 
 
# Variables de construction
TMP=${TMP:-/tmp}  
OUT=${OUT:-$TMP/build}  
ARCH=${ARCH:-$(uname -m | sed 's/^i.86$/i486/;s/^arm.*/arm/')}
TARGET=${TARGET:-$ARCH} 
WGET=${WGET:-http://prdownloads.sourceforge.net/$NAMESRC/$NAMESRC-$VERSION.tar.gz} 
SUM=${SUM:-$NAMESRC-$VERSION.tar.gz.sha1}
DOC=${DOC:-COPYING EXTENDING.html FAQ INSTALL INSTALL.oth MAINTAINERS NEWS README}

set -e  # Le Slackbuild s arrete des qu il y a une erreur
umask 022  # Les repertoires et fichiers crees auront respectivement les droits 755 et 644
 
# Le SlackBuild verifie que vous ne le lancez pas en root.
if [ "$(id -u)" = "0" ]; then
  echo "You shouldn't run this SlackBuild as ROOT !"
  sleep 10
fi

# Telechargement des sources si ces-dernieres ne sont pas presentes.
if [ ! -r $NAMESRC-$VERSION.$EXT ]; then
  wget -vc $WGET -O $NAMESRC-$VERSION.$EXT.part
  mv $NAMESRC-$VERSION.$EXT.part $NAMESRC-$VERSION.$EXT
fi

# Verification de la somme sha1
if [ -n $SUM ]; then
 sha1sum -c $NAMESRC-$VERSION.$EXT.sha1
fi

# Variables temporaires
CWD=$(pwd)
PKG=$TMP/build/$NAMEPKG
NAME=$(tar ft $NAMESRC-$VERSION.$EXT | head -n 1 | awk -F/ '{ print $1 }')

# Verification du repertoire.
if [ ! -d $TMP ]; then
  echo "$TMP doesn't exist or is not a directory !"
  exit 1
fi

# On passe a la compilation. 
cd $TMP
echo "Building $NAMESRC-$VERSION.$EXT..."
tar xf $CWD/$NAMESRC-$VERSION.$EXT
cd $NAME

# Les options de compilation
case $ARCH in
      i386)SLKCFLAGS="-O2 -march=i386 -mtune=i686";LIBDIRSUFFIX="";;
            i486)SLKCFLAGS="-O2 -march=i486 -mtune=i686";LIBDIRSUFFIX="";;
      i586)SLKCFLAGS="-O2 -march=i586 -mtune=i686";LIBDIRSUFFIX="";;
            i686)SLKCFLAGS="-O2 -march=i686 -mtune=i686";LIBDIRSUFFIX="";;
      s390)SLKCFLAGS="-O2";LIBDIRSUFFIX="";;
          x86_64)SLKCFLAGS="-O2 -fPIC";LIBDIRSUFFIX="64"
esac

CFLAGS=$SLKCFLAGS \
CXXFLAGS=$SLKCFLAGS \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --sysconfdir=/etc \
  --mandir=/usr/man \
  --docdir=/usr/doc/$NAMEPKG-$VERSION \
  --build=$TARGET-slackware-linux
 
    make -j3

    # Make install ne prend pas en compte le $DESTDIR
    mkdir -p $PKG/usr/bin/
    cp ctags $PKG/usr/bin/ctags  &&  chmod 755 $PKG/usr/bin/ctags

# Verification de la presence du doinst.sh
if [ -r $CWD/doinst.sh ]; then
  cat $CWD/doinst.sh > $PKG/install/doinst.sh
fi

# Pour la DOC
mkdir -p $PKG/usr/doc/$NAMEPKG-$VERSION
cp -a $DOC $PKG/usr/doc/$NAMEPKG-$VERSION

# Installation du fichier slack-desc
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

# Compress the man pages
if [ -d $PKG/usr/man ]; then
    find $PKG/usr/man -type f -name "*.?" -exec gzip -9 {} \;
    for manpage in $(find $PKG/usr/man -type l) ; do
        ln -s $(readlink $manpage).gz $manpage.gz
        rm -f $manpage
    done
fi
                   
# Compress the info pages
if [ -d $PKG/usr/info ]; then
    rm -f $PKG/usr/info/dir
    gzip -9 $PKG/usr/info/*.info*
fi

# Optimisation avant creation du package
find $PKG -type f | xargs file | grep "LSB executable" | cut -f 1 -d : | xargs \
  strip --strip-unneeded 2> /dev/null || echo "No binaries to strip"
find $PKG -type f | xargs file | grep "shared object" | cut -f 1 -d : | xargs \
  strip --strip-unneeded 2> /dev/null || echo "No shared objects to strip"
find $PKG -type f | xargs file | grep "current ar archive" | cut -f 1 -d : | \
  xargs strip -g 2> /dev/null || echo "No archives to strip"

# Creation du paquet
# rm -rf $CWD/$NAMESRC-$VERSION.$EXT
cd $PKG
mkdir -p $OUT
PACKAGING="
chown root:root . -R
/sbin/makepkg -l y -c n $OUT/$NAMEPKG-$VERSION-$ARCH-$BUILD.$PKGEXT
rm -rf $PKG
rm -rf $TMP/$NAME
"
if [ "$(which fakeroot 2> /dev/null)" ]; then
  echo "$PACKAGING" | fakeroot
else
  su -c "$PACKAGING"
fi

Hors ligne

 

#4 03-08-2010 16:25:05

Thom1
Administrateur
Date d'inscription: 21-09-2007
Messages: 524
Site web

Re: [Slackbuild] Ctags

Code:

cp ctags $PKG/usr/bin/ctags  &&  chmod 755 $PKG/usr/bin/ctags

Juste pour t'embter, tu peux tout faire en une commande :

Code:

install -m 755 ctags $PKG/usr/bin/ctags

Hors ligne

 

#5 03-08-2010 16:36:46

g4tsu
Membre
Date d'inscription: 26-07-2010
Messages: 22

Re: [Slackbuild] Ctags

Ok je connaissais pas. (enfin si mais j'y ai pas pens).
Cependant dans le makefile : sad

Code:

$(INSTALL_PROG) $(CTAGS_EXEC) $@  &&  chmod 755 $@

avec $(INSTALL_PROG) =>

Code:

INSTALL         = cp
INSTALL_PROG    = $(INSTALL)
INSTALL_DATA    = $(INSTALL)

Je modifie le SB

Hors ligne