Setup connection to Xilinx license server.

Signed-off-by: Tim 'mithro' Ansell <me@mith.ro>
This commit is contained in:
Tim 'mithro' Ansell 2022-04-25 10:05:17 -07:00 committed by Hans Baier
parent bc38e48ebc
commit 0c2ea87927
3 changed files with 147 additions and 2 deletions

View File

@ -17,6 +17,8 @@ jobs:
Pipeline:
if: ${{ !(github.event_name != 'pull_request' && github.actor == 'dependabot[bot]') }}
uses: ./.github/workflows/Pipeline.yml
secrets:
LICENSE_TUNNEL_KEY_DATA: ${{ secrets.LICENSE_TUNNEL_KEY_DATA }}
Automerge:

View File

@ -2,6 +2,9 @@ name: Pipeline
on:
workflow_call:
secrets:
LICENSE_TUNNEL_KEY_DATA:
required: false
jobs:
@ -20,6 +23,7 @@ jobs:
ALLOW_ROOT: true
GHA_EXTERNAL_DISK: "tools"
XILINX_LOCAL_USER_DATA: "no"
LICENSE_TUNNEL_KEY_DATA: ${{ secrets.LICENSE_TUNNEL_KEY_DATA }}
steps:
@ -31,8 +35,30 @@ jobs:
run: |
DEBIAN_FRONTEND=noninteractive apt update -qq
DEBIAN_FRONTEND=noninteractive apt install -qq -y \
bash bison build-essential ca-certificates clang-format cmake psmisc \
colordiff coreutils git flex python3 python3-dev python3-venv xsltproc libtinfo5
bash \
bison \
build-essential \
ca-certificates \
clang-format \
cmake \
colordiff \
coreutils \
flex \
git \
iproute2 \
iputils-ping \
libtinfo5 \
netcat-openbsd \
psmisc \
python3 \
python3-dev \
python3-venv \
xsltproc
- name: Xilinx Setup
env:
LICENSE_TUNNEL_KEY_DATA: ${{ secrets.LICENSE_TUNNEL_KEY_DATA }}
run: .github/workflows/scripts/xilinx.sh
- name: Build
run: make build --output-sync=target --warn-undefined-variables -j$(nproc)

117
.github/workflows/scripts/xilinx.sh vendored Executable file
View File

@ -0,0 +1,117 @@
#!/bin/bash
# Copyright (C) 2017-2020 The Project X-Ray Authors.
#
# Use of this source code is governed by a ISC-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/ISC
#
# SPDX-License-Identifier: ISC
echo
echo "========================================"
echo "Xilinx proprietary toolchain setup."
echo "----------------------------------------"
echo
echo "Fix up the Xilinx configuration directory"
echo "----------------------------------------"
mkdir -p ~/.Xilinx
ls -l ~/.Xilinx
#sudo chown -R $USER ~/.Xilinx
export XILINX_LOCAL_USER_DATA=no
echo "----------------------------------------"
echo
echo "Select Xilinx Vivado version"
echo "----------------------------------------"
(
set -e
cd /opt
if [ x"$XRAY_SETTINGS" = x"kintex7" ]; then
echo "Using Xilinx Vivado Design Edition for $XRAY_SETTINGS build."
echo
echo "Making /opt mount rw"
sudo mount -o remount,rw /opt
echo
echo "Replacing /opt/Xilinx link."
sudo rm -f Xilinx
sudo ln -s Xilinx-design Xilinx
ls -l Xilinx
echo
echo "Making /opt mount ro"
sudo mount -o remount,ro /opt
echo
else
echo "Using Xilinx Vivado WebPack Edition for $XRAY_SETTINGS build."
ls -l Xilinx
fi
)
echo "----------------------------------------"
echo
echo "List /opt directory"
echo "----------------------------------------"
ls -l /opt
echo "----------------------------------------"
# Create a tunnel to the server which has the Xilinx licenses and port forward
# them.
echo
echo "Setting up license server tunnel"
echo "----------------------------------------"
if [ ! -z "$LICENSE_TUNNEL_KEY_DATA" ]; then
LICENSE_TUNNEL_KEY=~/.Xilinx/xilinx-tunnel-key
LICENSE_TUNNEL_HOST=10.138.0.2
echo $LICENSE_TUNNEL_KEY_DATA | base64 --decode > $LICENSE_TUNNEL_KEY
echo "SSH Key for license server tunnel should be found @ $LICENSE_TUNNEL_KEY"
ls -l $LICENSE_TUNNEL_KEY || true
echo
echo "Xilinx license server ssh key found, setting up tunnel"
echo
echo
echo "Checking $LICENSE_TUNNEL_HOST is up"
ip addr show
echo "ping: ---------"
ping -c 5 $LICENSE_TUNNEL_HOST
echo "port: ---------"
nc -zv $LICENSE_TUNNEL_HOST 22
echo "---------"
echo
chmod 600 $LICENSE_TUNNEL_KEY
cat <<EOF > ssh_config
Host xilinx-license
HostName $LICENSE_TUNNEL_HOST
User kokoro
IdentityFile $LICENSE_TUNNEL_KEY
StrictHostKeyChecking no
ExitOnForwardFailure yes
# SessionType none
LocalForward localhost:2100 172.18.0.3:2100
LocalForward localhost:2101 172.18.0.3:2101
EOF
echo "127.0.0.1 xlic.int" | sudo tee -a /etc/hosts
export GIT_SSH_COMMAND="ssh -F $(pwd)/ssh_config -f -N"
${GIT_SSH_COMMAND} xilinx-license
(
source /opt/Xilinx/Vivado/2017.2/settings64.sh
export PATH=/opt/Xilinx/Vivado/2017.2/bin/unwrapped/lnx64.o:$PATH
echo "-----"
lmutil lmstat -a -c 2100@localhost -i || true
echo "-----"
)
export XILINXD_LICENSE_FILE=2100@localhost
else
echo
echo "**No** Xilinx license server ssh key found."
fi
echo "----------------------------------------"