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 21-07-2010 20:56:11

polux
Membre
Date d'inscription: 15-07-2010
Messages: 17

slackbuild libffi

Bonjour

j'essaye de faire un SlackBuild sur libffi que j'aimerai prsenter l'quipe, terme j'aimerai faire quelques SlackBuilds pour GNUstep.

dites moi se que vous en pensez, toute critique(polie) est bonne.

Ce SlackBuild est incomplet, il manque fakeroot...mais comme je ne sais pas comment m'en servir et que je vois mal comment il est utilis dans le script, je l'ai laiss de cot pour le moment.

Code:

#!/bin/sh

SRC_NAME=${SRC_NAME:-libffi}
SRC_VERSION=${SRC_VERSION:-3.0.9}
SRC_EXT=${SRC_EXT:-tar.gz}

PKG_NAME=${PKG_NAME:-libffi}
PKG_EXT=${PKG_EXT:-txz}

SRC_URL=${SRC_URL:-ftp://sourceware.org/pub/$SRC_NAME/$SRC_NAME-$SRC_VERSION.$SRC_EXT}
SRC_SUM=${SRC_SUM:-1f300a7a7f975d4046f51c3022fa5ff1}

C_COMP=${C_COMP:-gcc}    # we might use "clang" someday
LINKER=${LINKER:-yes}    # options are yes, no

SRC_DOC=(LICENSE README)
CUR_DIR=$( pwd )

## variables to fit in slackware-fr.org requirements

TMP=${TMP:-/tmp}
OUT=${OUT:-/tmp/build}
BUILD=${BUILD:-1sfo}
ARCH=""                  # options are i486, i686, x86_64

## we should be ready for battle by now !

set -e
umask 022

chown -R root:root .
chmod -R u+w,go+r-w,a-s .

if [ "$(whoami)" = root ]; then
   echo "You shouldn't be running this SlackBuild as ROOT user !"
   echo "I'm giving you 10 seconds to surrender yourself with \"Ctrl-c\""
   sleep 10
fi

if [ ! -r $SRC_NAME-$SRC_VERSION.$SRC_EXT ]; then
   if ( ping -c1 sourceware.org ); then
      wget -vc $SRC_URL
      echo "file downloaded"
    else
      echo "problem either with the network either with the web site - aborting !"
      exit 1
   fi
fi

CHECK_SUM=$( md5sum $SRC_NAME-$SRC_VERSION.$SRC_EXT | cut -d" " -f1 )
if [ ! $SRC_SUM = $CHECK_SUM ]; then
   echo "the sums don't match - aborting !"
   exit 1
 else
   echo "the sum is fine, we keep on moving forward"
fi

rm -rf $TMP/build
rm -rf $TMP/$PKG_NAME
mkdir $TMP/$PKG_NAME || exit 1

tar xvf ./$SRC_NAME-$SRC_VERSION.$SRC_EXT -C $TMP/$PKG_NAME
cd $TMP/$PKG_NAME/$PKG_NAME-$SRC_VERSION

fBuild_soft() {

 if [ "$ARCH" = "" ]; then
   ARCH=$( uname -m )
 fi

 case $ARCH in x86_64) C_FLAGS="-O2 -fPIC"; LIB_SUFFIX="64" ;;
                 i486) C_FLAGS="-O2 -march=i486 -mtune=i686" ;;
                 i686) C_FLAGS="-O2 -march=i686" ;;
                    *) C_FLAGS="-O2 -march=$ARCH"
 esac

 CC=$C_COMP \
 CFLAGS=$C_FLAGS \
 CXXFLAGS=$C_FLAGS \
 ./configure --prefix=/usr \
             --docdir=/usr/doc/$PKG_NAME-$SRC_VERSION \
             --libdir=/usr/lib${LIB_SUFFIX} \
             --build=$ARCH-slackware-linux \
             --localstatedir=/var/lib \
             --with-gnu-ld=$LINKER \
             --datarootdir=/usr \
             --sysconfdir=/etc \
             --disable-static \
             --disable-debug \
             --enable-shared \
             --datadir=/usr

 NUM_JOBS=$(getconf _NPROCESSORS_ONLN)
 (( NUM_JOBS+=1 ))
 make -j$NUM_JOBS || make
 mkdir -p $TMP/build/$PKG_NAME
 make install DESTDIR=$TMP/build/$PKG_NAME

 return 0
}
fBuild_soft

if fBuild_soft; then
  cd $CUR_DIR
     echo "the software has been built, we're installing a slack-desc"
     mkdir -p $TMP/build/$PKG_NAME/install
     cat ./slack-desc > $TMP/build/$PKG_NAME/install/slack-desc

  cd $TMP/$PKG_NAME/$PKG_NAME-$SRC_VERSION
     echo "we're installing the documentation"
     mkdir -p $TMP/build/$PKG_NAME/usr/doc/$PKG_NAME-$SRC_VERSION
     for files in ${SRC_DOC[*]}; do
         cp $files $TMP/build/$PKG_NAME/usr/doc/$PKG_NAME-$SRC_VERSION
     done

  cd $TMP/build/$PKG_NAME/usr/man
     echo "we compress the man pages"
     find . -type f -name "*.?" -exec gzip -9 {} \;
     for manpages in $(find . -type l) ; do
         ln -s $(readlink $manpages).gz $manpages.gz
         rm -f $manpages
     done

  cd $TMP/build/$PKG_NAME/usr/info
     echo "we compress the info pages"
     rm -f ./dir
     gzip -9 ./libffi.info

  cd $TMP/build/$PKG_NAME
     find . -type f | xargs file | grep "shared object" | cut -f 1 -d : | xargs \
     strip --strip-unneeded 2> /dev/null || echo "no shared object to strip"
fi

if fBuild_soft; then 
  cd $TMP/build/$PKG_NAME
     /sbin/makepkg -p -l y -c n $OUT/$PKG_NAME-$SRC_VERSION-$ARCH-$BUILD.$PKG_EXT
     echo "the package has been created in $OUT"
     echo
 else
  echo "the compilation has failed - aborting !"
  exit 1
fi

#cd $TMP/build/$PKG_NAME
#mkdir -p $OUT
#PACKAGING="
#chown root:root . -R
#/sbin/makepkg -l y -c n $OUT/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.txz
#"
#if type -p fakeroot ; then
#  echo "$PACKAGING" | fakeroot
# else
#  su -c "$PACKAGING"
#fi

if [ "$1" = "--cleanup" ]; then
    echo "cleaning up"
    rm -rf $TMP/build/$PKG_NAME
    rm -rf $TMP/$PKG_NAME
fi

exit 0

le slack-desc

Code:

      |-----handy-ruler------------------------------------------------------|
libffi:
libffi:     ffi stands for "foreign function interface".
libffi:
libffi:     A foreign function interface is the popular name for the
libffi:     interface that allows code written in one language to call
libffi:     code written in another language.
libffi:
libffi:     The libffi library really only provides the lowest,
libffi:     machine dependent layer of a fully featured foreign
libffi:     function interface.
libffi:

juste chang indentation dans un for roll

Dernire modification par polux (21-07-2010 21:36:11)

Hors ligne

 

#2 22-07-2010 02:28:10

polux
Membre
Date d'inscription: 15-07-2010
Messages: 17

Re: slackbuild libffi

Code:

chown -R root:root .
chmod -R u+w,go+r-w,a-s .

sont mals placs, ils doivent aller dans le repertoire des sources tel que

Code:

cd $TMP/$PKG_NAME/$PKG_NAME-$SRC_VERSION

chown -R root:root .
chmod -R u+w,go+r-w,a-s .

fBuild_soft() {

Hors ligne

 

#3 22-07-2010 22:25:44

gouttegd
Membre trs actif
Lieu: Grenoble
Date d'inscription: 11-04-2007
Messages: 210

Re: slackbuild libffi

Salut,

polux a crit:

Ce SlackBuild est incomplet, il manque fakeroot...mais comme je ne sais pas comment m'en servir et que je vois mal comment il est utilis dans le script, je l'ai laiss de cot pour le moment.

Ben, euh, il ny a pas grandchose savoir, tout est dans le bloc de code que tu as comment. Quest-ce tu ne comprends pas exactement ?

En ltat, ton SlackBuild produit un paquet dont les fichiers appartiennent lutilisateur qui a lanc le SlackBuild, ce qui nest pas convenable.

Pour le reste, ple-mle et prendre comme a vient ;-) :

Ton SlackBuild me semble un peu trop verbeux . Par exemple, nul besoin de prciser que la vrification du checksum sest bien droule : si le script ne sarrte pas cet endroit, cest que le checksum tait correct (auquel cas on na pas le temps de voir le message de toute faon). Les messages "we're installing the man pages" et assimils me semblent galement superflus.

Je ne vois gure lintrt de pinger le serveur avant dessayer de tlcharger les sources ; si le rseau est mal configur ou si le serveur cible est injoignable pour une raison ou pour une autre, wget nous le fera savoir tout aussi bien.

Je naime pas trop que le SlackBuild dcide lui-mme du nombre de processus utiliser lors de la compilation ; il marrive de vouloir quune compilation charge le moins possible ma machine (lorsque je fais autre chose en mme temps) quitte ce quelle prenne plus de temps.

Le point certainement le plus important, ta fonction fBuild_soft. Dj, je ne vois gure lintrt de rassembler le code de configuration, compilation et installation dans une fonction (directement dans le corps du script, cest trs bien). Mais surtout, ladite fonction est appele au total trois fois, ce qui est totalement inutile.


Je vous aiderai si vous me promettez d'aider quelqu'un en retour. --- anonyme
Soyez vigilant lorsque vous vous exprimez dans un forum lectronique. Vos fautes de frappe et de syntaxe vous poursuivront pour l'ternit. --- Linus B. Torvalds

Hors ligne

 

#4 22-07-2010 22:59:00

polux
Membre
Date d'inscription: 15-07-2010
Messages: 17

Re: slackbuild libffi

Ok, merci pour les remarques, a me permet d'avancer.
Je vais allger le script et voir pour fakeroot parce que chez moi, cela ne marche pas en fait.

Hors ligne

 

#5 29-11-2013 12:18:31

malik378
Nouveau membre
Date d'inscription: 29-11-2013
Messages: 1

Re: slackbuild libffi

Ton SlackBuild me semble un peu trop verbeux . Par exemple, nul besoin de prciser que la vrification du checksum sest bien droule : si le script ne sarrte pas cet endroit, cest que le checksum tait correct (auquel cas on na pas le temps de voir le message de toute faon). Les messages "we're installing the man pages" et assimils me semblent galement superflus.


Malik

Hors ligne