the dnsmasq.conf.d in the google farm, with the gitlab-runner host we
call "servo"::
- dhcp-host=1c:69:7a:0d:a3:d3,10.42.0.10,set:servo
+ dhcp-host=1c:69:7a:0d:a3:d3,10.42.0.10,set:servo
- # Fixed dhcp addresses for my sanity, and setting a tag for
- # specializing other DHCP options
- dhcp-host=a0:ce:c8:c8:d9:5d,10.42.0.11,set:cheza1
- dhcp-host=a0:ce:c8:c8:d8:81,10.42.0.12,set:cheza2
+ # Fixed dhcp addresses for my sanity, and setting a tag for
+ # specializing other DHCP options
+ dhcp-host=a0:ce:c8:c8:d9:5d,10.42.0.11,set:cheza1
+ dhcp-host=a0:ce:c8:c8:d8:81,10.42.0.12,set:cheza2
- # Specify the next server, watch out for the double ',,'. The
- # filename didn't seem to get picked up by the bootloader, so we use
- # tftp-unique-root and mount directories like
- # /srv/tftp/10.42.0.11/jwerner/cheza as /tftp in the job containers.
- tftp-unique-root
- dhcp-boot=tag:cheza1,cheza1/vmlinuz,,10.42.0.10
- dhcp-boot=tag:cheza2,cheza2/vmlinuz,,10.42.0.10
+ # Specify the next server, watch out for the double ',,'. The
+ # filename didn't seem to get picked up by the bootloader, so we use
+ # tftp-unique-root and mount directories like
+ # /srv/tftp/10.42.0.11/jwerner/cheza as /tftp in the job containers.
+ tftp-unique-root
+ dhcp-boot=tag:cheza1,cheza1/vmlinuz,,10.42.0.10
+ dhcp-boot=tag:cheza2,cheza2/vmlinuz,,10.42.0.10
- dhcp-option=tag:cheza1,option:root-path,/srv/nfs/cheza1
- dhcp-option=tag:cheza2,option:root-path,/srv/nfs/cheza2
+ dhcp-option=tag:cheza1,option:root-path,/srv/nfs/cheza1
+ dhcp-option=tag:cheza2,option:root-path,/srv/nfs/cheza2
See ``src/freedreno/ci/gitlab-ci.yml`` for an example of Servo on cheza. Note
that other Servo boards in CI are managed using LAVA.
.. code-block: console
- Switch>
- Password:
- Switch#configure terminal
- Switch(config)#interface Vlan 1
- Switch(config-if)#ip address 10.42.0.2 255.255.0.0
- Switch(config-if)#end
- Switch(config)#snmp-server community mesaci RW
- Switch(config)#end
- Switch#copy running-config startup-config
+ Switch>
+ Password:
+ Switch#configure terminal
+ Switch(config)#interface Vlan 1
+ Switch(config-if)#ip address 10.42.0.2 255.255.0.0
+ Switch(config-if)#end
+ Switch(config)#snmp-server community mesaci RW
+ Switch(config)#end
+ Switch#copy running-config startup-config
With that set up, you should be able to power on/off a port with something like:
.. code-block: console
- % snmpset -v2c -r 3 -t 30 -cmesaci 10.42.0.2 1.3.6.1.4.1.9.9.402.1.2.1.1.1.1 i 1
- % snmpset -v2c -r 3 -t 30 -cmesaci 10.42.0.2 1.3.6.1.4.1.9.9.402.1.2.1.1.1.1 i 4
+ % snmpset -v2c -r 3 -t 30 -cmesaci 10.42.0.2 1.3.6.1.4.1.9.9.402.1.2.1.1.1.1 i 1
+ % snmpset -v2c -r 3 -t 30 -cmesaci 10.42.0.2 1.3.6.1.4.1.9.9.402.1.2.1.1.1.1 i 4
Note that the "1.3.6..." SNMP OID changes between switches. The last digit
above is the interface id (port number). You can probably find the right OID by
.. code-block:: console
- sudo gitlab-runner register \
- --url https://gitlab.freedesktop.org \
- --registration-token $1 \
- --name MY_BOARD_NAME \
- --tag-list MY_BOARD_TAG \
- --executor docker \
- --docker-image "alpine:latest" \
- --docker-volumes "/dev:/dev" \
- --docker-network-mode "host" \
- --docker-privileged \
- --non-interactive
+ sudo gitlab-runner register \
+ --url https://gitlab.freedesktop.org \
+ --registration-token $1 \
+ --name MY_BOARD_NAME \
+ --tag-list MY_BOARD_TAG \
+ --executor docker \
+ --docker-image "alpine:latest" \
+ --docker-volumes "/dev:/dev" \
+ --docker-network-mode "host" \
+ --docker-privileged \
+ --non-interactive
For a Servo board, you'll need to also volume mount the board's NFS
root dir at /nfs and TFTP kernel directory at /tftp.
time"). Finally, add the board-specific environment variables
required by your bare-metal script, something like::
- [[runners]]
- name = "google-freedreno-db410c-1"
- environment = ["BM_SERIAL=/dev/ttyDB410c8", "BM_POWERUP=google-power-up.sh 8", "BM_FASTBOOT_SERIAL=15e9e390", "FDO_CI_CONCURRENT=4"]
+ [[runners]]
+ name = "google-freedreno-db410c-1"
+ environment = ["BM_SERIAL=/dev/ttyDB410c8", "BM_POWERUP=google-power-up.sh 8", "BM_FASTBOOT_SERIAL=15e9e390", "FDO_CI_CONCURRENT=4"]
The ``FDO_CI_CONCURRENT`` variable should be set to the number of CPU threads on
the board, which is used for auto-tuning of job parallelism.
.. code-block:: console
- sudo apt install nginx libnginx-mod-http-lua
+ sudo apt install nginx libnginx-mod-http-lua
Add the server setup files:
.. code-block:: console
- sudo ln -s /etc/nginx/sites-available/fdo-cache /etc/nginx/sites-enabled/fdo-cache
- sudo service nginx restart
+ sudo ln -s /etc/nginx/sites-available/fdo-cache /etc/nginx/sites-enabled/fdo-cache
+ sudo service nginx restart
- # First download will hit the internet
- wget http://localhost/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo.trace
- # Second download should be cached.
- wget http://localhost/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo.trace
+ # First download will hit the internet
+ wget http://localhost/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo.trace
+ # Second download should be cached.
+ wget http://localhost/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public/itoral-gl-terrain-demo/demo.trace
Now, set ``download-url`` in your ``traces-*.yml`` entry to something like
``http://10.42.0.1:8888/cache/?uri=https://s3.freedesktop.org/mesa-tracie-public``
.. code-block:: yaml
- variables:
+ variables:
DEQP_FRACTION: 10
to just run 1/10th of the test list.
.. code-block:: toml
- concurrent = 2
+ concurrent = 2
- [[runners]]
- environment = ["FDO_CI_CONCURRENT=16"]
+ [[runners]]
+ environment = ["FDO_CI_CONCURRENT=16"]
Docker caching
builds, you can use Docker to use their build environment locally. Go
to your job log, and at the top you'll see a line like::
- Pulling docker image registry.freedesktop.org/anholt/mesa/debian/android_build:2020-09-11
+ Pulling docker image registry.freedesktop.org/anholt/mesa/debian/android_build:2020-09-11
We'll use a volume mount to make our current Mesa tree be what the
Docker container uses, so they'll share everything (their build will
.. code-block:: console
- IMAGE=registry.freedesktop.org/anholt/mesa/debian/android_build:2020-09-11
- sudo docker pull $IMAGE
- sudo docker run --rm -v `pwd`:/mesa -w /mesa $IMAGE env PKG_CONFIG_PATH=/usr/local/lib/aarch64-linux-android/pkgconfig/:/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/pkgconfig/ GALLIUM_DRIVERS=freedreno UNWIND=disabled EXTRA_OPTION="-D android-stub=true -D llvm=disabled" DRI_LOADERS="-D glx=disabled -D gbm=disabled -D egl=enabled -D platforms=android" CROSS=aarch64-linux-android ./.gitlab-ci/meson-build.sh
+ IMAGE=registry.freedesktop.org/anholt/mesa/debian/android_build:2020-09-11
+ sudo docker pull $IMAGE
+ sudo docker run --rm -v `pwd`:/mesa -w /mesa $IMAGE env PKG_CONFIG_PATH=/usr/local/lib/aarch64-linux-android/pkgconfig/:/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/pkgconfig/ GALLIUM_DRIVERS=freedreno UNWIND=disabled EXTRA_OPTION="-D android-stub=true -D llvm=disabled" DRI_LOADERS="-D glx=disabled -D gbm=disabled -D egl=enabled -D platforms=android" CROSS=aarch64-linux-android ./.gitlab-ci/meson-build.sh
All you have left over from the build is its output, and a _build
directory. You can hack on mesa and iterate testing the build with:
.. code-block:: console
- sudo docker run --rm -v `pwd`:/mesa $IMAGE ninja -C /mesa/_build
+ sudo docker run --rm -v `pwd`:/mesa $IMAGE ninja -C /mesa/_build
Running specific CI jobs
------------------------