docker搭建mesa最简构建环境

1 篇文章 0 订阅
1 篇文章 0 订阅

简介

编译mesa需要用到meson,meson要用最新版本的才能支持mesa中的meson.build新语法。所以我们要手动安装meson,但是最新的meson的版本又需要依赖3.8以上的python。
如果你的ubuntu自带的python没有3.8以上,卸载python再安装python3.8又可能会破坏原先的系统环境。
一般我们会使用virtualenv来搭建特定版本的python的运行环境,去编译运行,但是我这里出现的3.8版本的virtualenv 运行的python一直是ubuntu自带3.6。
为了避免其他同时搭建mesa编译环境出现和我一样的问题,还是弄了个docker环境,内部仅运行一个python版本。

提示

以下全凭记忆编写,个中细节,参考者自行补全

一、创建docker容器

1. docker安装

sudo apt install docker.io

2. 修改权限,不带sudo

docker用户组加上当前用户

sudo usermod -a -G docker `whoami`
sudo service docker restart

3. 获取镜像

选择一个最干净版本的ubuntu20.04,里面既没有python2,也没有python3

docker pull ubuntu:20.04

4. 创建并运行容器

# 创建容器 suchp-mesa是指容器的名称
docker create -it --name suchp-mesa ubuntu:20.04
# 运行容器 suchp-mesa
docker start suchp-mesa
# 进入容器中
docker exec -it suchp-mesa /bin/bash

二、安装python开发环境

此时的ubuntu中什么都没有, 我们需要先通过apt安装一个python版本,但是ubuntu默认源下载太慢,老三步走起来

1. 更新源

echo "网易镜像源,去百度找找" > /etc/apt/sources.list
apt update
apt list --upgradable

2. 安装工具

# 安装python,ubuntu22.04默认是3.8版本,我们先安装,等会就卸载了
apt install python3
# 安装git
apt install git
# 搞个vim吧
apt install vim-tiny

3. 下载pip源码

不直接下载python3-pip,因为依赖太多的,直接运行源码就可以了,pip运行依赖distutils这个库,也需要下载。

cd home
git clone https://github.com/pypa/pip.git
git clone https://github.com/pypa/distutils.git

直接进入pip目录运行 python src/pip会报错找不到distutils,设置环境变量PYTHONPATH就可以找到了。

export PYTHONPATH=/home/distutils

4. 下载安装virtualenv

下载

cd /home/pip
# virtualenv创建python虚拟运行环境
python3 src/pip install virtualenv

有了这个就可以创建独属于某特定版本的python运行环境了。我们在/home目录下创建一个python3.8_venv的目录用于保存python3.8的运行环境

cd /home
virtualenv python3.8_venv

进入python3.8的运行环境

cd /home/python3.8_venv
# 进入python虚拟开发环境
source bin/activate
# 退出python虚拟开发环境
deactivate

于是乎你就有了一个专门运行python3.8的环境,此时你可以卸载原来的python了

apt autoremove python3

安装setuptools

进入虚拟环境去安装setuptools,这个基本python必备

cd /home/python3.8_venv
source bin/activate
cd /home/pip
python3 src/pip install setuptools
deactivate

三、编译mesa

下载安装meson

cd /home/python3.8_env
source bin/activate
cd /home
git clone https://github.com/mesonbuild/meson.git
cd meson
# 编译meson
python3 setup.py build
# 安装meson到虚拟环境中
python3 setup.py install

下载mesa

cd /home
git clone https://github.com/mesa3d/mesa.git
cd mesa

修改meson_options.txt

@@ -71,7 +71,7 @@ option(
 option(
   'gallium-drivers',
   type : 'array',
-  value : ['auto'],
+  value : ['swrast'],
   choices : [
     'auto', 'kmsro', 'radeonsi', 'r300', 'r600', 'nouveau', 'freedreno',
     'swrast', 'v3d', 'vc4', 'etnaviv', 'tegra', 'i915', 'svga', 'virgl',
@@ -88,7 +88,7 @@ option(
 option(
   'gallium-vdpau',
   type : 'combo',
-  value : 'auto',
+  value : 'disabled',
   choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
   description : 'enable gallium vdpau frontend.',
 )
@@ -101,7 +101,7 @@ option(
 option(
   'gallium-xvmc',
   type : 'combo',
-  value : 'auto',
+  value : 'disabled',
   choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
   description : 'enable gallium xvmc frontend.',
 )
@@ -114,7 +114,7 @@ option(
 option(
   'gallium-omx',
   type : 'combo',
-  value : 'auto',
+  value : 'disabled',
   choices : ['auto', 'disabled', 'bellagio', 'tizonia'],
   description : 'enable gallium omx frontend.',
 )
@@ -127,7 +127,7 @@ option(
 option(
   'gallium-va',
   type : 'combo',
-  value : 'auto',
+  value : 'disabled',
   choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
   description : 'enable gallium va frontend.',
 )
@@ -140,7 +140,7 @@ option(
 option(
   'gallium-xa',
   type : 'combo',
-  value : 'auto',
+  value : 'disabled',
   choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
   description : 'enable gallium xa frontend.',
 )
@@ -191,7 +191,7 @@ option(
 option(
   'vulkan-drivers',
   type : 'array',
-  value : ['auto'],
+  value : ['swrast'],
   choices : ['auto', 'amd', 'broadcom', 'freedreno', 'intel', 'panfrost', 'swrast', 'virtio-experimental'],
   description : 'List of vulkan drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
 )
@@ -294,7 +294,7 @@ option(
 option(
   'egl',
   type : 'combo',
-  value : 'auto',
+  value : 'disabled',
   choices : ['auto', 'true', 'false', 'enabled', 'disabled'],
   description : 'Build support for EGL platform'
 )

构建编译

# 这里要修改的就多了
meson build
ninja -C build

四、总结

将容器打包成镜像,可以分享给其他同事运行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值