77 lines
2.4 KiB
Bash
77 lines
2.4 KiB
Bash
#! /bin/bash
|
|
#set -x
|
|
_arch=x86_64
|
|
CUDA_MAJ=13
|
|
CUDA_MIN=0
|
|
DRIVER_GEN=G05
|
|
DOWNLOAD=false
|
|
|
|
repourl=http://developer.download.nvidia.com/compute/cuda/repos/sles15/${_arch}
|
|
repo=NVIDIA_CUDA
|
|
multibuild=$(pwd)/_multibuild
|
|
declare -i sourcecount=10
|
|
|
|
pkg_list=" \
|
|
cuda-cccl-${CUDA_MAJ}-${CUDA_MIN} \
|
|
cuda-crt-${CUDA_MAJ}-${CUDA_MIN} \
|
|
cuda-cudart-${CUDA_MAJ}-${CUDA_MIN} \
|
|
cuda-cudart-devel-${CUDA_MAJ}-${CUDA_MIN} \
|
|
cuda-nvcc-${CUDA_MAJ}-${CUDA_MIN} \
|
|
cuda-driver-devel-${CUDA_MAJ}-${CUDA_MIN} \
|
|
libcublas-${CUDA_MAJ}-${CUDA_MIN} \
|
|
libcublas-devel-${CUDA_MAJ}-${CUDA_MIN} \
|
|
libnvvm-${CUDA_MAJ}-${CUDA_MIN} \
|
|
libnvptxcompiler-${CUDA_MAJ}-${CUDA_MIN} \
|
|
cuda-culibos-devel-${CUDA_MAJ}-${CUDA_MIN}"
|
|
|
|
pkg_list_noarch=" \
|
|
cuda-toolkit-${CUDA_MAJ}-${CUDA_MIN}-config-common \
|
|
cuda-toolkit-${CUDA_MAJ}-config-common \
|
|
cuda-toolkit-config-common"
|
|
|
|
tmpdir=$(mktemp -d /tmp/.tmp-XXXXXX)
|
|
rootdir=$tmpdir/root
|
|
mkdir -p ${rootdir}
|
|
|
|
sudo zypper -n --gpg-auto-import-keys --root ${rootdir} ar ${repourl} ${repo}
|
|
sudo zypper -n --gpg-auto-import-keys --root ${rootdir} refresh ${repo}
|
|
# include noarch only on one arch
|
|
if [ "$_arch" = "x86_64" ]; then
|
|
pkg_list="$pkg_list \
|
|
$pkg_list_noarch"
|
|
fi
|
|
echo '<multibuild>' > ${multibuild}
|
|
if $DOWNLOAD; then
|
|
mkdir -p ${tmpdir}/${repo}/
|
|
for i in $pkg_list; do
|
|
[ $i* = $i\* ] && \
|
|
zypper -n --root ${rootdir} --pkg-cache-dir ${tmpdir} download $i
|
|
# mv ./${i}*.rpm ${tmpdir}/${repo}/
|
|
done
|
|
|
|
for i in ${tmpdir}/${repo}/*.rpm; do
|
|
mv $i .
|
|
name=$(basename $i)
|
|
name=${name/${_arch}/%_arch}
|
|
name=${name%%.rpm}
|
|
echo ' <package>'${name}'</package>' >> ${multibuild}
|
|
sourcelist+="Source${sourcecount}: %repo/$name.rpm\n"
|
|
: $((sourcecount++))
|
|
done
|
|
else
|
|
for i in $pkg_list; do
|
|
i=${i/=/-}
|
|
name=$(zypper -q --root ${rootdir} info $i | awk -e '/Name/{name=$3;};/Version/{version=$3;};/Arch/{arch=$3;};END{printf "%s-%s.%s\n",name,version,arch; }')
|
|
name=${name/${_arch}/%_arch}
|
|
echo ' <package>'${name}'</package>' >> ${multibuild}
|
|
sourcelist+="Source${sourcecount}: %repo/$name.rpm\n"
|
|
: $((sourcecount++))
|
|
done
|
|
fi
|
|
echo '</multibuild>' >> ${multibuild}
|
|
sed -e "s#@ALL_SOURCES@#$(echo $sourcelist)#" \
|
|
-e "s#@CUDA_VERSION@#${CUDA_MAJ}.${CUDA_MIN}#g" \
|
|
-e "s#@CUDA_MAJ@#${CUDA_MAJ}#g" \
|
|
-e "s#@CUDA_MIN@#${CUDA_MIN}#g" < _cuda-repack.spec.in > cuda-repack.spec
|
|
sudo rm -rf ${tmpdir}
|