LINUX.ORG.RU

Cобрать mesa в ubuntu 18.04

 ,


0

1

Всем привет. Может ли кто-то подсказать (или дать ссылку на гайд), как в убунте 18.04 собрать mesa из гита.

Те гайды, которые я находил, у меня не работают (мб они и устарели).

ppa по определенным причинам использовать не хочу, хочу собрать сам.

Пытался так:

CC=/opt/llvm-7/bin/clang CXX=/opt/llvm-7/bin/clang++ LLVM=/opt/llvm-7 scons build=release

(в /opt/llvm-7 лежит скачанный с оффсайта llvm для Ubuntu-16)

Компиляция проходит, я получаю папку build/linux-x86_64, в которой лежат непонятные мне файлы, что с нима делать дальше - я не знаю.

Вообще, цель всего этого - получить radv с поддержкой Stream Output.


ppa по определенным причинам использовать не хочу

По каким? PPA лучше чем компиляция вручную хотя бы тем, что ты установишь Mesa не в обход пакетного менеджера.

Kron4ek ★★ ()

У меня вот такой древний скрипт:

#!/bin/sh
#Скрипт для сборки debug версии месы

green="\033[01;32m"
red="\033[01;31m"
restore="\033[00m"
contrast="\033[1m"

terrorc="Ошибка конфигурирования"
terrorm="Ошибка при сборке"
tconf="Запускаем конфигурирование"
tsucsc=""
tsucsm="Сборка успешно завершена"

plain() {
    mesg=$1
    printf "${contrast}    ${mesg}${restore}\n"
}

msg() {
    mesg=$1
    printf "${green}==>${restore}${contrast} ${mesg}${restore}\n"
}

error() {
    mesg=$1
    printf "${red}==>${restore}${contrast} ${mesg}${restore}\n"
}

# Необходимые действия для переключения на определенный моммент или метку
gitselect() {
#git checkout tags/mesa-18.1.9
echo 1
}

############################################
##### Обновляем гит
############################################
git_upd() {

dir="mesa"
url="https://gitlab.freedesktop.org/mesa/mesa.git"

cd ****путь_до каталога сборки****

if [[ ! -d "${dir}" ]] ;
    then
        plain "Создаем клон репы mesa"
        if ! git clone "${url}" "${dir}";
            then
                error "Ошибка клонирования"
                exit 1
        fi
    else 
        cd ${dir}
        plain "Обновляем клон репы mesa"
        if ! git fetch --all -p;
            then
                error "Ошибка обновления"
                exit 1
        fi
fi
}

############################################
##### Сборка 32х битной версии
############################################

build_32() {
arch="32"

cd ****путь_до каталога сборки****

# Создаем резервную копию и удаляем предыдущую версию
rm -rf mesa-debug.32.old
cp -r mesa-debug.32 mesa-debug.32.old
rm -rf mesa-debug.32

#копируем каталог с месой для сборки
cp -r mesa mesa-debug.32

cd mesa-debug.32

gitselect

#конфигурируем
export CC="gcc -m32"
export CXX="g++ -m32"
export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"
export LLVM_CONFIG=/usr/bin/llvm-config32

if            ./autogen.sh --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu \
                                                     --with-dri-drivers= \
                                                     --with-gallium-drivers=r600 \
                                                     --with-egl-platforms=x11,drm,wayland \
                                                     --enable-glx-tls \
                                                     --enable-gles1 \
                                                     --enable-gles2 \
                                                     --enable-texture-float \
                                                     --disable-xvmc \
                                                     --enable-debug
then
    msg "Kонфигурирование удачно 32, запускаем make"
    notify-send build-mesa-debug.32  "<b>Запускаем make 32</b>"
else
    error "${terrorc} - ${arch}"
    notify-send build-mesa-debug.32 "<b>${terrorc} - ${arch}$</b>"
    exit 1
fi
#собираем
if make  -j8 -l8
then
    #удачно
    msg "${tsucsm} - ${arch}"
    notify-send build-mesa-debug.32  "<b>Сборка успешно завершена - 32</b>"
else
    #неудачно
    error "${terrorm} - ${arch}"
    notify-send build-mesa-debug.32 "<b>${terrorm} - ${arch}</b>"
    exit 1
fi
}
############################################
##### Сборка 64х битной версии
############################################

build_64() {
arch="64"

cd ****путь_до каталога сборки****

# Создаем резервную копию и удаляем предыдущую версию
rm -rf mesa-debug.64.old
cp -r mesa-debug.64 mesa-debug.64.old
rm -rf mesa-debug.64

#копируем каталог с месой для сборки
cp -r mesa mesa-debug.64

cd mesa-debug.64

gitselect

#конфигурируем
if CFLAGS="-O2 -march=native -pipe" CXXFLAGS="$CFLAGS" ./autogen.sh \
                                                     --with-dri-drivers= \
                                                     --with-gallium-drivers=r600 \
                                                     --with-egl-platforms=x11,drm,wayland \
                                                     --enable-glx-tls \
                                                     --enable-gles1 \
                                                     --enable-gles2 \
                                                     --enable-texture-float \
                                                     --disable-xvmc \
                                                     --enable-debug
then
    msg "Kонфигурирование удачно, запускаем make"
    notify-send build-mesa-debug.64  "<b>Запускаем make.64</b>"
else
    error "${terrorc} - ${arch}"
    notify-send build-mesa-debug.64 "<b>${terrorc} - ${arch}</b>"
    exit 1
fi
#собираем
if make  -j8 -l8
then
    msg "${tsucsm} - ${arch}"
    notify-send build-mesa-debug.64 "<b>${tsucsm} - ${arch}</b>"
else
    error "${terrorm} - ${arch}"
    notify-send build-mesa-debug.64 "<b>${terrorm} - ${arch}</b>"
    exit 1
fi
}
############################################
##### help
############################################
help_kc(){
  echo -e \
"Usage: govno-restart [OPTION]
available OPTIONS:
--32:         Собрать 32х битную версию.
--64:         Собрать 36х битную версию.
--all/-a      Собрать 32х и 64х битную версию.
--help/-h     Это меню."
}
############################################
##### Ехала
############################################
case ${1} in
--32 | 32 )
      git_upd;
      build_32;
      exit 0;;
--64 | 64 )
      git_upd;
      build_64;
      exit 0;;
--all | all | -a | a )
      git_upd;
      build_64;
      build_32;
      exit 0;;
--update | update | -u | u )
      git_upd;
      exit 0;;
--help | help | -h | h | * )
      help_kc;
      exit 0;;
esac

Заменить ****путь_до каталога сборки**** на свой каталог

Запихни в 2 файла mesa-debug.32 и mesa-debug.64

#!/bin/sh
LIBGL_DRIVERS_PATH=~/AUR/X11/mesa-debug.32/lib/gallium LD_LIBRARY_PATH=~/AUR/X11/mesa-debug.32/lib/gallium:${LD_LIBRARY_PATH} $@
и для 64х бит
#!/bin/sh
LIBGL_DRIVERS_PATH=~/AUR/X11/mesa-debug.64/lib/gallium LD_LIBRARY_PATH=~/AUR/X11/mesa-debug.64/lib/gallium:${LD_LIBRARY_PATH} $@

Опять же каталоги свои пропиши.

Используй так mesa-debug.32 ./имя_проги

Behem0th ★★★★★ ()
Ответ на: комментарий от Behem0th

Но этот вариант использовался мной для тестов месы. На постоянку использовать это костыль. Если ты хочешь поставить в систему и пользоваться постоянно, то лучше посмотреть чужое ппа и взять оттуда скрипты сборки пакетов. И с помощью их собрать их у себя в системе и установить нормально менеджером пакетов.

Behem0th ★★★★★ ()