Pagina 1 di 1

Nvidia SlackBuild

Inviato: ven 28 lug 2006, 23:53
da gohanz
Sto scrivendo uno script per creare un pacchetto precompilato TGZ, con i driver grafici NVIDIA belli pronti da installare con Pkgtool!

E' una versione preliminare, non testata!

#!/bin/sh
# Heavily based on the Slackware 10.2 SlackBuild
# http://www.nvidia.com/object/unix.html
# Packagers Andrea Sciucca Gohanz ( gohanz @ infinito.it)
# http://www.slacky.it




CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/tmp
fi

PKG=$TMP/package-NVIDIA-Linux-x86
NAME=NVIDIA-Linux-x86
VERSION=1.0-8762
ARCH=IA32
RELEASE_DATE='May 22, 2006'
KERNEL=$(uname -r)


if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi

cd $TMP
sh $CWD/$NAME-$VERSION-pkg1.run -x

echo "+----------------------------------------------------------------+"
echo "| Starting SlackBuild $NAME-$VERSION-Kernel-$KERNEL |"
echo "+----------------------------------------------------------------+"

cd $NAME-$VERSION-pkg1

find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;

chown -R root.root .

# Build SimLik.

( cd usr/X11R6/lib

ln -s libXvMCNVIDIA.so.$VERSION libXvMCNVIDIA_dynamic.so.1 )


( cd usr/X11R6/lib/modules/extensions

ln -s libglx.so.$VERSION libglx.so )


( cd usr/lib

ln -s libGL.so.1 libGL.so
ln -s libGL.so.$VERSION libGL.so.1
ln -s libGLcore.so.$VERSION libGLcore.so.1
ln -s libnvidia-cfg.so.1 libnvidia-cfg.so
ln -s libnvidia-cfg.so.$VERSION libnvidia-cfg.so.1
ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

( cd usr/lib/tls

ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

# End SimLink Build

mkdir -p $PKG/usr

( cd usr \

cp -a -r * $PKG/usr )

mkdir -p $PKG/lib/modules/$KERNEL/kernel/drivers/video

( cd usr/src/nv

make module # Compiling Module for Both 2.4/2.6 Kernel.

if [ `echo $KERNEL | cut -c -3` == "2.6" ]; then
echo "Copy Nvidia Module Kernel $KERNEL"
cp nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
elif [ `echo $KERNEL | cut -c -3` == "2.4" ]; then
echo "Copy Nvidia Module Kernel $KERNEL"
cp nvidia.o $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
else
incorrectVersion
fi
)

mkdir -p $PKG/usr/doc/$NAME-$VERSION

( cd $PKG/usr/share/doc

cp -a -r * $PKG/usr/doc/$NAME-$VERSION

rm -r $PKG/usr/share/doc
)

( cd $PKG/usr/share/man

mkdir -p $PKG/usr/man

cp -a -r * $PKG/usr/man

rm -r $PKG/usr/share/man )


mkdir -p $PKG/etc/X11

( cd /etc/X11
cp -a xorg.conf $PKG/etc/X11 )

( cd $PKG/etc/X11

sed -i "s|nvidia|nv|g" xorg.conf
sed -i "s|nv|nvidia|g" xorg.conf )


rm -r $PKG/usr/src



cp -a LICENSE pkg-history.txt \
$PKG/usr/doc/$NAME-$VERSION
mkdir -p $PKG/install
cat << EOF > $PKG/install/slack-desc
# 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----------------------------------------------------|
NvidiaLinuxX86: Nvidia Linux Display Driver $ARCH
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86: Version: $VERSION
NvidiaLinuxX86: Operating System: Linux IA32
NvidiaLinuxX86: Release Date: $RELEASE_DATE
NvidiaLinuxX86: KERNEL : $KERNEL
NvidiaLinuxX86:
NvidiaLinuxX86: http://WWW.SLACKY.IT
NvidiaLinuxX86: Packager Gohanz.
EOF

cd $CWD
cp -a *.SlackBuild $PKG/usr/doc/$NAME-$VERSION
chown -R root.root $PKG/usr/doc/$NAME-$VERSION

chown -R root.bin $PKG/usr/bin
strip --strip-unneeded $PKG/usr/bin/* 2> /dev/null

cd $PKG
requiredbuilder -v -y -s $CWD $PKG
makepkg -l y -c n $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz
echo "modprobe nvidia" >> $PKG/install/doinst.sh
makepkg -l n -c n $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz

if [ "$1" = "--cleanup" ]; then
rm -rf $TMP/$NAME-$VERSION
rm -rf $PKG
fi

Inviato: lun 31 lug 2006, 23:10
da gohanz
Ho fatto le ultime modifiche, ho iserito un po di controlli. L'ho provato su tre Kernel differenti 2.4 e 2.6 e funziona bene.
Mi sono creato un paio i pacchetti per i kernel di default, più un terzo kernel recente.

#!/bin/sh
# Heavily based on the Slackware 10.2 SlackBuild
# http://www.nvidia.com/object/unix.html
# Packager Andrea Sciucca Gohanz ( gohanz @ infinito.it)
# http://www.slacky.it




CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/tmp
fi

PKG=$TMP/package-NVIDIA-Linux-x86
NAME=NVIDIA-Linux-x86
VERSION=1.0-8762
ARCH=IA32
RELEASE_DATE='May 22, 2006'
KERNEL=$(uname -r)



#Check for root privileges
if [ `id -u` != "0" ]; then clear
echo "You must be Root to run Nvidia-Linux-x86.SlackBuild"
exit 1
fi
#


# Check for Kernel Source in /usr/src and make a symlink linux to kernel
cd /usr/src
if [ ! -r linux-$KERNEL ]; then clear
echo "You must install the Kernel Source in /usr/src!"
exit 1
else rm linux
ln -s linux-$KERNEL linux
fi
cd $CWD
#

# Check for .config file in the kernel source tree
cd /usr/src/linux
if [ ! -r .config ]; then clear
echo "No .config file in the source tree! Please copy your .config file in /usr/src/linux or you need to recompile the kernel with make menuconfig!"
exit 1
fi
cd $CWD
#



if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi



cd $TMP
sh $CWD/$NAME-$VERSION-pkg1.run -x

echo "+----------------------------------------------------------------+"
echo "| Starting SlackBuild $NAME-$VERSION-Kernel-$KERNEL |"
echo "+----------------------------------------------------------------+"

cd $NAME-$VERSION-pkg1

find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;

chown -R root.root .



# Build SimLik.

( cd usr/X11R6/lib

ln -s libXvMCNVIDIA.so.$VERSION libXvMCNVIDIA_dynamic.so.1 )


( cd usr/X11R6/lib/modules/extensions

ln -s libglx.so.1.0.8762 libglx.so )


( cd usr/lib

ln -s libGL.so.1 libGL.so
ln -s libGL.so.$VERSION libGL.so.1
ln -s libGLcore.so.$VERSION libGLcore.so.1
ln -s libnvidia-cfg.so.1 libnvidia-cfg.so
ln -s libnvidia-cfg.so.$VERSION libnvidia-cfg.so.1
ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

( cd usr/lib/tls

ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

# End SimLink Build

mkdir -p $PKG/usr

( cd usr \

cp -a -r * $PKG/usr )

mkdir -p $PKG/lib/modules/$KERNEL/kernel/drivers/video

( cd usr/src/nv

make module # Compiling Module for Both 2.4/2.6 Kernel.

if [ `echo $KERNEL | cut -c -3` == "2.6" ]; then clear
echo "Copy Nvidia Module for the Kernel $KERNEL"
cp nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
elif [ `echo $KERNEL | cut -c -3` == "2.4" ]; then clear
echo "Copy Nvidia Module for the Kernel $KERNEL"
cp nvidia.o $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
else
incorrectVersion
fi
)

mkdir -p $PKG/usr/doc/$NAME-$VERSION

( cd $PKG/usr/share/doc

cp -a -r * $PKG/usr/doc/$NAME-$VERSION

rm -r $PKG/usr/share/doc
)

( cd $PKG/usr/share/man

mkdir -p $PKG/usr/man

cp -a -r * $PKG/usr/man

rm -r $PKG/usr/share/man )


mkdir -p $PKG/etc/X11

( cd /etc/X11
cp -a xorg.conf $PKG/etc/X11 )

( cd $PKG/etc/X11

sed -i "s|nvidia|nv|g" xorg.conf
sed -i "s|nv|nvidia|g" xorg.conf )


rm -r $PKG/usr/src



cp -a LICENSE pkg-history.txt \
$PKG/usr/doc/$NAME-$VERSION
mkdir -p $PKG/install
cat << EOF > $PKG/install/slack-desc
# 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----------------------------------------------------|
NvidiaLinuxX86: Nvidia Linux Display Driver $ARCH
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86: Version: $VERSION
NvidiaLinuxX86: Operating System: Linux IA32
NvidiaLinuxX86: Release Date: $RELEASE_DATE
NvidiaLinuxX86: KERNEL : $KERNEL
NvidiaLinuxX86:
NvidiaLinuxX86: http://WWW.SLACKY.IT
NvidiaLinuxX86: Packager Gohanz.
EOF

cd $CWD
cp -a *.SlackBuild $PKG/usr/doc/$NAME-$VERSION
chown -R root.root $PKG/usr/doc/$NAME-$VERSION

chown -R root.bin $PKG/usr/bin
strip --strip-unneeded $PKG/usr/bin/* 2> /dev/null

cd $PKG
requiredbuilder -v -y -s $CWD $PKG
makepkg -l y -c n $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz
echo "modprobe nvidia" >> $PKG/install/doinst.sh
echo "ldconfig" >> $PKG/install/doinst.sh
makepkg -l n -c n $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz

if [ "$1" = "--cleanup" ]; then
rm -rf $TMP/$NAME-$VERSION
rm -rf $PKG
fi

Inviato: ven 4 ago 2006, 17:48
da gohanz
Questo è il definitivo. C'è la scelta di inserire o meno, xorg.conf presente nel sistema, nel pacchetto. Nel caso xorg.conf caso viene adattato per caricare i driver NVIDA in automatico.
Più una piccola modifica nella creazione del doinst.sh nel pacchetto, usando l'opzione -p Prepended, di makepkg!




#!/bin/sh
# Heavily based on the Slackware 10.2 SlackBuild
# http://www.nvidia.com/object/unix.html
# Packager Andrea Sciucca Gohanz ( gohanz @ infinito.it)
# http://www.slacky.it




CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/tmp
fi

PKG=$TMP/package-NVIDIA-Linux-x86
NAME=NVIDIA-Linux-x86
VERSION=1.0-8762
ARCH=IA32
RELEASE_DATE='May 22, 2006'
KERNEL=$(uname -r)



#Check for root privileges
if [ `id -u` != "0" ]; then clear
echo "You must be Root to run Nvidia-Linux-x86.SlackBuild"
exit 1
fi
#


# Check for Kernel Source in /usr/src and make a symlink linux to kernel
cd /usr/src
if [ ! -r linux-$KERNEL ]; then clear
echo "You must install the Kernel Source in /usr/src!"
exit 1
else rm linux
ln -s linux-$KERNEL linux
fi
cd $CWD
#

# Check for .config file in the kernel source tree
cd /usr/src/linux
if [ ! -r .config ]; then clear
echo "No .config file in the source tree! Please copy your .config file in /usr/src/linux or you need to recompile the kernel with make menuconfig!"
exit 1
fi
cd $CWD
#

#Function Build Package
PKG_BUILD () {
rm -r $PKG/usr/src



cp -a LICENSE pkg-history.txt \
$PKG/usr/doc/$NAME-$VERSION
mkdir -p $PKG/install
cat << EOF > $PKG/install/slack-desc
# 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----------------------------------------------------|
NvidiaLinuxX86: Nvidia Linux Display Driver $ARCH
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86: Version: $VERSION
NvidiaLinuxX86: Operating System: Linux IA32
NvidiaLinuxX86: Release Date: $RELEASE_DATE
NvidiaLinuxX86: KERNEL : $KERNEL
NvidiaLinuxX86:
NvidiaLinuxX86: http://WWW.SLACKY.IT
NvidiaLinuxX86: Packager Gohanz.
EOF



cd $CWD
cp -a *.SlackBuild $PKG/usr/doc/$NAME-$VERSION
chown -R root.root $PKG/usr/doc/$NAME-$VERSION

chown -R root.bin $PKG/usr/bin
strip --strip-unneeded $PKG/usr/bin/* 2> /dev/null

cd $PKG
requiredbuilder -v -y -s $CWD $PKG
makepkg -l y -c n -p $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz


if [ "$1" = "--cleanup" ]; then
rm -rf $TMP/$NAME-$VERSION
rm -rf $PKG
fi
}


if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi



cd $TMP
sh $CWD/$NAME-$VERSION-pkg1.run -x

echo "+----------------------------------------------------------------+"
echo "| Starting SlackBuild $NAME-$VERSION-Kernel-$KERNEL |"
echo "+----------------------------------------------------------------+"

cd $NAME-$VERSION-pkg1

find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;

chown -R root.root .



# Build SimLik.

( cd usr/X11R6/lib

ln -s libXvMCNVIDIA.so.$VERSION libXvMCNVIDIA_dynamic.so.1 )


( cd usr/X11R6/lib/modules/extensions

ln -s libglx.so.1.0.8762 libglx.so )


( cd usr/lib

ln -s libGL.so.1 libGL.so
ln -s libGL.so.$VERSION libGL.so.1
ln -s libGLcore.so.$VERSION libGLcore.so.1
ln -s libnvidia-cfg.so.1 libnvidia-cfg.so
ln -s libnvidia-cfg.so.$VERSION libnvidia-cfg.so.1
ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

( cd usr/lib/tls

ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

# End SimLink Build

mkdir -p $PKG/usr

( cd usr \

cp -a -r * $PKG/usr )

mkdir -p $PKG/lib/modules/$KERNEL/kernel/drivers/video

( cd usr/src/nv

make module # Compiling Module for Both 2.4/2.6 Kernel.

if [ `echo $KERNEL | cut -c -3` == "2.6" ]; then clear
echo "Copy Nvidia Module for the Kernel $KERNEL"
cp nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
elif [ `echo $KERNEL | cut -c -3` == "2.4" ]; then clear
echo "Copy Nvidia Module for the Kernel $KERNEL"
cp nvidia.o $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
else
echo " The Kernel $KERNEL Version, is not correct!"
fi
)

mkdir -p $PKG/usr/doc/$NAME-$VERSION

( cd $PKG/usr/share/doc

cp -a -r * $PKG/usr/doc/$NAME-$VERSION

rm -r $PKG/usr/share/doc
)

( cd $PKG/usr/share/man

mkdir -p $PKG/usr/man

cp -a -r * $PKG/usr/man

rm -r $PKG/usr/share/man )





# Xorg.conf copy in package

echo "I copy your xorg.conf file in the TGZ Package?"

OPTIONS="Yes No"
select opt in $OPTIONS; do
if [ "$opt" = "Yes" ]; then
( cd /etc/X11
mkdir -p $PKG/etc/X11
cp -a xorg.conf $PKG/etc/X11 )
mkdir -p $PKG/install
cat << EOF > $PKG/install/doinst.sh
modprobe nvidia
ldconfig
nvidia-xconfig
EOF
PKG_BUILD
exit
elif [ "$opt" = "No" ]; then
mkdir -p $PKG/install
cat << EOF > $PKG/install/doinst.sh
modprobe nvidia
ldconfig
EOF
PKG_BUILD
exit
else echo "Wrong Choice! (1/2)"
fi
done

Inviato: sab 5 ago 2006, 15:53
da Harp
Non ho potuto provare lo slackbuild, visto che sono costretto a letto e obbligato ad usare un portatile con Win$ XP, ma volevo dirti che sei un mito.
Assieme a Loris e tutti quelli che lavorano per procurarci tutti questi TGZ, state facendo davvero qualcosa di straordinario, che ci permette, sempre più, di avvicinarci ad essere una comunità stile Debisn e farci rimpiangere sempre meno apt-get tanto osannato.

GRAZIE !!