Merge branch 'master' into as4630-54pe_20230321_pytest

This commit is contained in:
Roger Ho 2024-01-23 16:24:21 +08:00 committed by GitHub
commit 4fa9bf129c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3190 changed files with 470555 additions and 56797 deletions

View File

@ -161,8 +161,8 @@ stages:
git branch -u remote/$BRANCH_NAME
echo $GIT_PASSWORD | gh auth login --with-token
TITLE="Upgrade SONiC Versions"
BODY="Upgrade SONiC Versions"
TITLE="[${SOURCE_BRANCH#refs/heads/}] Upgrade SONiC package Versions"
BODY=$TITLE
RET=0
if ! gh pr create -t "$TITLE" -b "$BODY" -B $(Build.SourceBranch) -R $(Build.Repository.Name) > pr.log 2>&1; then
if ! grep -q "already exists" pr.log; then

View File

@ -0,0 +1,56 @@
# C/C++ with GCC
# Build your C/C++ project with GCC using make.
# Add steps that publish test results, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/apps/c-cpp/gcc
pr: none
trigger:
batch: true
branches:
include:
- master
stages:
- stage: Build
jobs:
- job:
displayName: "amd64/ubuntu-20.04"
pool:
vmImage: 'ubuntu-20.04'
steps:
- checkout: self
submodules: true
- script: |
sudo apt-get update
sudo apt-get install -y make wget libtool m4 autoconf dh-exec libdebhelper-perl=13.6ubuntu1~bpo20.04.1 debhelper=13.6ubuntu1~bpo20.04.1 \
cmake pkg-config python3-pip python cmake libgtest-dev libgmock-dev libyang-dev \
debhelper-compat dh-elpa dh-sequence-python3 python3-all \
libpython3-all-dev python3-six xmlto unzip rake-compiler gem2deb pkg-php-tools \
ant default-jdk maven-repo-helper libguava-java \
libboost-all-dev libgtest-dev build-essential
wget http://ftp.us.debian.org/debian/pool/main/libg/libgoogle-gson-java/libgoogle-gson-java_2.8.6-1+deb11u1_all.deb
sudo dpkg -i libgoogle-gson-java_2.8.6-1+deb11u1_all.deb
mkdir -p /tmp/artifacts
displayName: "Install dependencies"
- script: |
BLDENV=bullseye SONIC_CONFIG_MAKE_JOBS=$(nproc) CONFIGURED_ARCH=amd64 DEST=/tmp/artifacts make -f ../rules/protobuf.mk -f protobuf/Makefile
workingDirectory: src
displayName: "Build protobuf"
- script: |
sudo dpkg -i protobuf-compiler_3.21.12-3_amd64.deb libprotoc32_3.21.12-3_amd64.deb \
libprotobuf32_3.21.12-3_amd64.deb libprotobuf-dev_3.21.12-3_amd64.deb \
libprotobuf-lite32_3.21.12-3_amd64.deb
workingDirectory: /tmp/artifacts
displayName: "Install protobuf"
- script: |
dpkg-buildpackage -rfakeroot -b -us -uc
workingDirectory: src/sonic-dash-api
displayName: "Build sonic-dash-api"
- script: |
cp *.deb /tmp/artifacts
workingDirectory: src
- publish: /tmp/artifacts
artifact: sonic-buildimage.amd64.ubuntu20_04
displayName: "Archive sonic-buildimage debian packages for ubuntu20.04"

View File

@ -35,7 +35,6 @@ jobs:
dbg_image: no
asan_image: no
swi_image: no
raw_image: no
docker_syncd_rpc_image: no
syncd_rpc_image: no
platform_rpc: no
@ -62,7 +61,6 @@ jobs:
variables:
dbg_image: yes
swi_image: yes
raw_image: yes
docker_syncd_rpc_image: yes
platform_rpc: brcm
@ -94,6 +92,15 @@ jobs:
variables:
PLATFORM_ARCH: armhf
- name: marvell-arm64
${{ if not(parameters.qemuOrCrossBuild) }}:
pool: sonicbld-arm64
timeoutInMinutes: 2880
variables:
PLATFORM_ARCH: arm64
- name: marvell
- name: mellanox
variables:
dbg_image: yes
@ -107,12 +114,19 @@ jobs:
docker_syncd_rpc_image: yes
platform_rpc: nephos
- name: pensando
pool: sonicbld-arm64
variables:
PLATFORM_ARCH: arm64
buildSteps:
- template: .azure-pipelines/template-skipvstest.yml@buildimage
- template: .azure-pipelines/template-daemon.yml@buildimage
- bash: |
set -ex
if [ $(GROUP_NAME) == vs ]; then
if [ $(GROUP_NAME) == pensando ]; then
make $BUILD_OPTIONS target/sonic-pensando.tar
elif [ $(GROUP_NAME) == vs ]; then
if [ $(dbg_image) == yes ]; then
make $BUILD_OPTIONS INSTALL_DEBUG_TOOLS=y target/sonic-vs.img.gz
mv target/sonic-vs.img.gz target/sonic-vs-dbg.img.gz
@ -121,11 +135,15 @@ jobs:
make $BUILD_OPTIONS ENABLE_ASAN=y target/docker-sonic-vs.gz
mv target/docker-sonic-vs.gz target/docker-sonic-vs-asan.gz
fi
if [ "$(K8S_OPTIONS)" == 'INCLUDE_KUBERNETES_MASTER=y' ]; then
make $BUILD_OPTIONS $(K8S_OPTIONS) target/sonic-vs.img.gz
mv target/sonic-vs.img.gz target/sonic-vs-k8s.img.gz
fi
make $BUILD_OPTIONS target/docker-sonic-vs.gz target/sonic-vs.img.gz target/docker-ptf.gz
make $BUILD_OPTIONS target/docker-ptf-sai.gz
if [ $(Build.Reason) != 'PullRequest' ];then
gzip -kd target/sonic-vs.img.gz
SONIC_RUN_CMDS="qemu-img convert target/sonic-vs.img -O vhdx -o subformat=dynamic target/sonic-vs.vhdx" make sonic-slave-run
SONIC_RUN_CMDS="qemu-img convert target/sonic-vs.img -O vhdx -o subformat=dynamic target/sonic-vs.vhdx" make $BUILD_OPTIONS sonic-slave-run
rm target/sonic-vs.img
fi
else
@ -136,9 +154,6 @@ jobs:
if [ $(swi_image) == yes ]; then
make $BUILD_OPTIONS ENABLE_IMAGE_SIGNATURE=y target/sonic-aboot-$(GROUP_NAME).swi
fi
if [ $(raw_image) == yes ]; then
make $BUILD_OPTIONS target/sonic-$(GROUP_NAME).raw
fi
if [ $(docker_syncd_rpc_image) == yes ]; then
# workaround for issue in rules/sairedis.dep, git ls-files will list un-exist files for cache
make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y target/docker-syncd-$(platform_rpc)-rpc.gz
@ -150,16 +165,6 @@ jobs:
pushd ./src/sonic-sairedis/SAI
git stash
popd
make $BUILD_OPTIONS ENABLE_SYNCD_RPC=y SAITHRIFT_V2=y target/docker-saiserverv2-brcm.gz
pushd ./src/sonic-sairedis/SAI
git stash
popd
fi
if [ $(GROUP_NAME) == barefoot ]; then
make $BUILD_OPTIONS SAITHRIFT_V2=y ENABLE_SYNCD_RPC=y target/docker-saiserverv2-bfn.gz
pushd ./src/sonic-sairedis/SAI
git stash
popd
fi
fi
if [ $(syncd_rpc_image) == yes ]; then

View File

@ -28,11 +28,14 @@ jobs:
- template: .azure-pipelines/cleanup.yml@buildimage
- ${{ parameters.preSteps }}
- script: |
if [ -n "$(CACHE_MODE)" ] && echo $(PLATFORM_AZP) | grep -E -q "^(vs|broadcom|mellanox|marvell-armhf)$"; then
[ -n "$OVERRIDE_BUILD_OPTIONS" ] && OVERRIDE_BUILD_OPTIONS=$(OVERRIDE_BUILD_OPTIONS)
BUILD_OPTIONS="$(BUILD_OPTIONS) $OVERRIDE_BUILD_OPTIONS"
if [ -n "$(CACHE_MODE)" ] && echo $(PLATFORM_AZP) | grep -E -q "^(vs|broadcom|mellanox|marvell-armhf|marvell-arm64)$"; then
CACHE_OPTIONS="SONIC_DPKG_CACHE_METHOD=$(CACHE_MODE) SONIC_DPKG_CACHE_SOURCE=/nfs/dpkg_cache/$(PLATFORM_AZP)"
BUILD_OPTIONS="$(BUILD_OPTIONS) $CACHE_OPTIONS"
echo "##vso[task.setvariable variable=BUILD_OPTIONS]$BUILD_OPTIONS"
BUILD_OPTIONS="$BUILD_OPTIONS $CACHE_OPTIONS"
fi
echo $BUILD_OPTIONS
echo "##vso[task.setvariable variable=BUILD_OPTIONS]$BUILD_OPTIONS"
displayName: "Set cache options"
- checkout: self
submodules: recursive

View File

@ -1,5 +1,2 @@
variables:
${{ if eq(variables['Build.Reason'],'PullRequest') }}:
VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=$([[ "$(System.PullRequest.TargetBranch)" =~ ^20[2-9][0-9]{3}$ ]] && echo deb,py2,py3,web,git,docker)'
${{ else }}:
VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker'
VERSION_CONTROL_OPTIONS: 'SONIC_VERSION_CONTROL_COMPONENTS=deb,py2,py3,web,git,docker'

View File

@ -101,9 +101,6 @@ jobs:
if [ ${{ parameters.swi_image }} == true ]; then
make USERNAME=admin $CACHE_OPTIONS SONIC_BUILD_JOBS=$(nproc) ENABLE_IMAGE_SIGNATURE=y target/sonic-aboot-${{ parameters.platform }}.swi
fi
if [ ${{ parameters.raw_image }} == true ]; then
make USERNAME=admin $CACHE_OPTIONS SONIC_BUILD_JOBS=$(nproc) target/sonic-${{ parameters.platform }}.raw
fi
if [ ${{ parameters.sync_rpc_image }} == true ]; then
make USERNAME=admin $CACHE_OPTIONS SONIC_BUILD_JOBS=$(nproc) ENABLE_SYNCD_RPC=y target/docker-syncd-${{ parameters.platform_short }}-rpc.gz
# workaround for issue in rules/sairedis.dep, git ls-files will list un-exist files for cache

View File

@ -0,0 +1,63 @@
# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml
# Build and push sonic-mgmt image
schedules:
- cron: "0 8 * * *"
branches:
include:
- master
always: true
trigger: none
pr:
branches:
include:
- master
paths:
include:
- dockers/docker-sonic-mgmt
parameters:
- name: registry_url
type: string
default: sonicdev-microsoft.azurecr.io
- name: registry_conn
type: string
default: sonicdev
stages:
- stage: Build
jobs:
- job: Build
pool: sonicbld
timeoutInMinutes: 360
steps:
- template: cleanup.yml
- checkout: self
clean: true
- bash: |
set -xe
git submodule update --init --recursive -- src/sonic-platform-daemons src/sonic-genl-packet src/sonic-sairedis src/ptf src/sonic-device-data
make SONIC_BUILD_JOBS=$(nproc) DEFAULT_CONTAINER_REGISTRY=publicmirror.azurecr.io ENABLE_DOCKER_BASE_PULL=y configure PLATFORM=generic
make -f Makefile.work BLDENV=bullseye SONIC_BUILD_JOBS=$(nproc) DEFAULT_CONTAINER_REGISTRY=publicmirror.azurecr.io ENABLE_DOCKER_BASE_PULL=y LEGACY_SONIC_MGMT_DOCKER=n target/docker-sonic-mgmt.gz
cp target -r $(Build.ArtifactStagingDirectory)/target
docker load -i target/docker-sonic-mgmt.gz
docker tag docker-sonic-mgmt $REGISTRY_SERVER/docker-sonic-mgmt:py3only
env:
REGISTRY_SERVER: ${{ parameters.registry_url }}
displayName: Build docker-sonic-mgmt.gz
- task: Docker@2
displayName: Upload image
inputs:
containerRegistry: ${{ parameters.registry_conn }}
repository: docker-sonic-mgmt
command: push
tags: py3only
- publish: $(Build.ArtifactStagingDirectory)
artifact: 'docker-sonic-mgmt'
displayName: "Archive docker image sonic-mgmt"

View File

@ -43,7 +43,7 @@ stages:
git submodule update --init --recursive -- src/sonic-platform-daemons src/sonic-genl-packet src/sonic-sairedis src/ptf src/sonic-device-data
make SONIC_BUILD_JOBS=$(nproc) DEFAULT_CONTAINER_REGISTRY=publicmirror.azurecr.io ENABLE_DOCKER_BASE_PULL=y configure PLATFORM=generic
make SONIC_BUILD_JOBS=$(nproc) DEFAULT_CONTAINER_REGISTRY=publicmirror.azurecr.io ENABLE_DOCKER_BASE_PULL=y target/docker-sonic-mgmt.gz
make -f Makefile.work BLDENV=bullseye SONIC_BUILD_JOBS=$(nproc) DEFAULT_CONTAINER_REGISTRY=publicmirror.azurecr.io ENABLE_DOCKER_BASE_PULL=y LEGACY_SONIC_MGMT_DOCKER=y target/docker-sonic-mgmt.gz
cp target -r $(Build.ArtifactStagingDirectory)/target
docker load -i target/docker-sonic-mgmt.gz
docker tag docker-sonic-mgmt $REGISTRY_SERVER/docker-sonic-mgmt:latest

View File

@ -16,6 +16,7 @@ parameters:
- name: dist
type: string
values:
- bookworm
- bullseye
- buster
- stretch

View File

@ -8,7 +8,7 @@ resources:
- repository: buildimage
type: github
name: sonic-net/sonic-buildimage
ref: master
ref: bookworm
endpoint: sonic-net
schedules:
@ -44,6 +44,7 @@ parameters:
- name: 'dists'
type: object
default:
- bookworm
- bullseye
- buster
- stretch

View File

@ -15,13 +15,34 @@ trigger: none
pr: none
jobs:
- job: Build
- job: Amd
pool: sonicbld
timeoutInMinutes: 5
steps:
- checkout: none
- script: |
set -xe
df -h
sudo find /nfs/dpkg_cache/ -name *.tgz -mtime +30 -type f -delete
df -h
displayName: clean dpkg cache
- job: Armhf
pool: sonicbld-armhf
timeoutInMinutes: 5
steps:
- checkout: none
- script: |
df -h
sudo find /nfs/dpkg_cache/ -name *.tgz -mtime +30 -type f -delete
df -h
displayName: clean dpkg cache
- job: Arm64
pool: sonicbld-arm64
timeoutInMinutes: 5
steps:
- checkout: none
- script: |
df -h
sudo find /nfs/dpkg_cache/ -name *.tgz -mtime +30 -type f -delete
df -h
displayName: clean dpkg cache

View File

@ -39,7 +39,6 @@ stages:
- name: broadcom
variables:
swi_image: yes
raw_image: yes
docker_syncd_rpc_image: yes
platform_rpc: brcm
- name: mellanox

View File

@ -18,6 +18,10 @@ parameters:
type: string
default: 1
- name: NUM_ASIC
type: number
default: 1
- name: TEST_SET
type: string
default: ""
@ -34,39 +38,103 @@ parameters:
type: string
default: "ceos"
- name: SPECIFIED_PARAMS
- name: TESTBED_NAME
type: string
default: "{}"
default: ""
- name: IMAGE_URL
type: string
default: ""
- name: HWSKU
type: string
default: ""
- name: TEST_PLAN_TYPE
type: string
default: ""
- name: PLATFORM
type: string
default: ""
- name: SCRIPTS
type: string
default: ""
- name: FEATURES
type: string
default: ""
- name: SCRIPTS_EXCLUDE
type: string
default: ""
- name: FEATURES_EXCLUDE
type: string
default: ""
- name: REPO_NAME
type: string
default: ""
- name: MGMT_BRANCH
type: string
default: master
default: ""
- name: NUM_ASIC
- name: STOP_ON_FAILURE
type: string
default: ""
- name: RETRY_TIMES
type: string
default: ""
- name: DUMP_KVM_IF_FAIL
type: string
default: "True"
values:
- "True"
- "False"
- name: REQUESTER
type: string
default: ""
- name: MAX_RUN_TEST_MINUTES
type: number
default: 1
default: 480
steps:
- script: |
set -ex
set -e
wget -O ./.azure-pipelines/test_plan.py https://raw.githubusercontent.com/sonic-net/sonic-mgmt/master/.azure-pipelines/test_plan.py
wget -O ./.azure-pipelines/pr_test_scripts.yaml https://raw.githubusercontent.com/sonic-net/sonic-mgmt/master/.azure-pipelines/pr_test_scripts.yaml
displayName: Download TestbedV2 scripts
displayName: Download test plan scripts
- script: |
set -ex
set -e
pip install PyYAML
rm -f new_test_plan_id.txt
python ./.azure-pipelines/test_plan.py create -t ${{ parameters.TOPOLOGY }} -o new_test_plan_id.txt \
--min-worker ${{ parameters.MIN_WORKER }} --max-worker ${{ parameters.MAX_WORKER }} \
--test-set ${{ parameters.TEST_SET }} --kvm-build-id $(KVM_BUILD_ID) \
--deploy-mg-extra-params "${{ parameters.DEPLOY_MG_EXTRA_PARAMS }}" --common-extra-params "${{ parameters.COMMON_EXTRA_PARAMS }}" \
--mgmt-branch ${{ parameters.MGMT_BRANCH }} --vm-type ${{ parameters.VM_TYPE }} --specified-params "${{ parameters.SPECIFIED_PARAMS }}" \
python ./.azure-pipelines/test_plan.py create \
-t ${{ parameters.TOPOLOGY }} \
-o new_test_plan_id.txt \
--min-worker ${{ parameters.MIN_WORKER }} \
--max-worker ${{ parameters.MAX_WORKER }} \
--test-set ${{ parameters.TEST_SET }} \
--kvm-build-id $(KVM_BUILD_ID) \
--deploy-mg-extra-params "${{ parameters.DEPLOY_MG_EXTRA_PARAMS }}" \
--common-extra-params "${{ parameters.COMMON_EXTRA_PARAMS }}" \
--mgmt-branch ${{ parameters.MGMT_BRANCH }} \
--vm-type ${{ parameters.VM_TYPE }} \
--num-asic ${{ parameters.NUM_ASIC }}
TEST_PLAN_ID=`cat new_test_plan_id.txt`
echo "Created test plan $TEST_PLAN_ID"
echo "Check https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID for test plan status"
echo "Check $(FRONTEND_URL)/scheduler/testplan/$TEST_PLAN_ID for test plan status"
echo "##vso[task.setvariable variable=TEST_PLAN_ID]$TEST_PLAN_ID"
env:
TESTBED_TOOLS_URL: $(TESTBED_TOOLS_URL)
@ -76,10 +144,10 @@ steps:
displayName: Trigger test
- script: |
set -ex
set -e
echo "Lock testbed"
echo "TestbedV2 is just online and might not be stable enough, for any issue, please send email to sonictestbedtools@microsoft.com"
echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID"
echo "SONiC PR system-level test is powered by SONiC Elastictest, for any issue, please send email to sonicelastictest@microsoft.com"
echo "Runtime detailed progress at $(FRONTEND_URL)/scheduler/testplan/$TEST_PLAN_ID "
# When "LOCK_TESTBED" finish, it changes into "PREPARE_TESTBED"
python ./.azure-pipelines/test_plan.py poll -i "$(TEST_PLAN_ID)" --expected-state LOCK_TESTBED
env:
@ -87,12 +155,11 @@ steps:
displayName: Lock testbed
- script: |
set -ex
set -e
echo "Prepare testbed"
echo "Preparing the testbed(add-topo, deploy-mg) may take 15-30 minutes. Before the testbed is ready, the progress of the test plan keeps displayed as 0, please be patient(We will improve the indication in a short time)"
echo "If the progress keeps as 0 for more than 1 hour, please cancel and retry this pipeline"
echo "TestbedV2 is just online and might not be stable enough, for any issue, please send email to sonictestbedtools@microsoft.com"
echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID"
echo "Preparing the testbed(add-topo, deploy-mg) may take 15-30 minutes. Before the testbed is ready, the progress of the test plan keeps displayed as 0, please be patient"
echo "SONiC PR system-level test is powered by SONiC Elastictest, for any issue, please send email to sonicelastictest@microsoft.com"
echo "Runtime detailed progress at $(FRONTEND_URL)/scheduler/testplan/$TEST_PLAN_ID "
# When "PREPARE_TESTBED" finish, it changes into "EXECUTING"
python ./.azure-pipelines/test_plan.py poll -i "$(TEST_PLAN_ID)" --expected-state PREPARE_TESTBED
env:
@ -100,30 +167,32 @@ steps:
displayName: Prepare testbed
- script: |
set -ex
set -e
echo "Run test"
echo "TestbedV2 is just online and might not be stable enough, for any issue, please send email to sonictestbedtools@microsoft.com"
echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID"
echo "SONiC PR system-level test is powered by SONiC Elastictest, for any issue, please send email to sonicelastictest@microsoft.com"
echo "Runtime detailed progress at $(FRONTEND_URL)/scheduler/testplan/$TEST_PLAN_ID "
# When "EXECUTING" finish, it changes into "KVMDUMP", "FAILED", "CANCELLED" or "FINISHED"
python ./.azure-pipelines/test_plan.py poll -i "$(TEST_PLAN_ID)" --expected-state EXECUTING
env:
TESTBED_TOOLS_URL: $(TESTBED_TOOLS_URL)
displayName: Run test
timeoutInMinutes: ${{ parameters.MAX_RUN_TEST_MINUTES }}
- ${{ if eq(parameters.DUMP_KVM_IF_FAIL, 'True') }}:
- script: |
set -e
echo "KVM dump"
echo "SONiC PR system-level test is powered by SONiC Elastictest, for any issue, please send email to sonicelastictest@microsoft.com"
echo "Runtime detailed progress at $(FRONTEND_URL)/scheduler/testplan/$TEST_PLAN_ID "
# When "KVMDUMP" finish, it changes into "FAILED", "CANCELLED" or "FINISHED"
python ./.azure-pipelines/test_plan.py poll -i "$(TEST_PLAN_ID)" --expected-state KVMDUMP
condition: succeededOrFailed()
env:
TESTBED_TOOLS_URL: $(TESTBED_TOOLS_URL)
displayName: KVM dump
- script: |
set -ex
echo "KVM dump"
echo "TestbedV2 is just online and might not be stable enough, for any issue, please send email to sonictestbedtools@microsoft.com"
echo "Runtime detailed progress at https://www.testbed-tools.org/scheduler/testplan/$TEST_PLAN_ID"
# When "KVMDUMP" finish, it changes into "FAILED", "CANCELLED" or "FINISHED"
python ./.azure-pipelines/test_plan.py poll -i "$(TEST_PLAN_ID)" --expected-state KVMDUMP
condition: succeededOrFailed()
env:
TESTBED_TOOLS_URL: $(TESTBED_TOOLS_URL)
displayName: KVM dump
- script: |
set -ex
set -e
echo "Try to cancel test plan $TEST_PLAN_ID, cancelling finished test plan has no effect."
python ./.azure-pipelines/test_plan.py cancel -i "$(TEST_PLAN_ID)"
condition: always()

View File

@ -2,7 +2,13 @@ steps:
- ${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
- script: |
set -ex
tar_branch=origin/$(System.PullRequest.TargetBranch)
tar_branch=origin/$(System.PullRequest.TargetBranchName)
# Check if k8s master entrance script is changed
if ! git diff $tar_branch..HEAD --name-only | grep -F files/image_config/kubernetes/kubernetes_master_entrance.sh; then
echo "##vso[task.setvariable variable=K8S_OPTIONS;]INCLUDE_KUBERNETES_MASTER=n"
else
echo "##vso[task.setvariable variable=K8S_OPTIONS;]INCLUDE_KUBERNETES_MASTER=y"
fi
git diff $tar_branch..HEAD --name-only | grep -v -f .azure-pipelines/vstest-exclude && exit 0
git diff $tar_branch..HEAD --name-only | grep -f .azure-pipelines/vstest-include && exit 0
set +x

View File

@ -1,4 +1,3 @@
^platform
^.azure-pipelines
^files/build/versions
^sonic-slave-

View File

@ -12,10 +12,17 @@
#### Why I did it
##### Work item tracking
- Microsoft ADO **(number only)**:
#### How I did it
#### How to verify it
<!--
If PR needs to be backported, then the PR must be tested against the base branch and the earliest backport release branch and provide tested image version on these two branches. For example, if the PR is requested for master, 202211 and 202012, then the requester needs to provide test results on master and 202012.
-->
#### Which release branch to backport (provide reason below if selected)
<!--
@ -33,6 +40,18 @@
- [ ] 202111
- [ ] 202205
- [ ] 202211
- [ ] 202305
#### Tested branch (Please provide the tested image version)
<!--
- Please provide tested image version
- e.g.
- [x] 20201231.100
-->
- [ ] <!-- image version 1 -->
- [ ] <!-- image version 2 -->
#### Description for the changelog
<!--
@ -40,7 +59,9 @@ Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->
#### Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.
<!--
Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.
-->
#### Link to config_db schema for YANG module changes
<!--

View File

@ -9,7 +9,8 @@ on:
jobs:
automerge:
if: github.event.check_suite.app.name == 'Azure Pipelines' && github.event.check_suite.conclusion == 'success'
# Disable workflow. Use automerge_scan instead to have the same behaviour.
if: github.event.check_suite.app.name == 'Azure Pipelines' && github.event.check_suite.conclusion == 'success' && false
runs-on: ubuntu-latest
steps:
- name: automerge

View File

@ -16,53 +16,81 @@ jobs:
set -e
echo ${TOKEN} | gh auth login --with-token
gh pr list -R sonic-net/sonic-buildimage -A mssonicbld --json additions,assignees,author,baseRefName,body,changedFiles,closed,closedAt,comments,commits,createdAt,deletions,files,headRefName,headRepository,headRepositoryOwner,id,isCrossRepository,isDraft,labels,latestReviews,maintainerCanModify,mergeCommit,mergeStateStatus,mergeable,mergedAt,mergedBy,milestone,number,potentialMergeCommit,projectCards,reactionGroups,reviewDecision,reviewRequests,reviews,state,statusCheckRollup,title,updatedAt,url > prs.log
gh pr list -R sonic-net/sonic-buildimage -A mssonicbld -L 100 -S "label:automerge" --json url,body,title,createdAt,labels,statusCheckRollup > prs.log
cat prs.log | jq
- name: Main
run: |
set -e
# PR merge run per 2 hours
# Other operation run per day.
# Cherry pick PR:
# more than 3 days, comment @author to check
# more than 10 days, stop comment.
# more than 28 days, comment @author PR will be closed
# more than 30 days, close PR
date_3d_ago=$(date --date "3 day ago" -u +"%FT%TZ")
date_10d_ago=$(date --date "10 day ago" -u +"%FT%TZ")
date_28d_ago=$(date --date "28 day ago" -u +"%FT%TZ")
date_30d_ago=$(date --date "30 day ago" -u +"%FT%TZ")
date_now=$(date -u +"%T")
operate=false
[[ "$date_now" < "02:00:00" ]] && operate=true
count=$(cat prs.log | jq 'length')
for ((i=0;i<$count;i++))
do
url=$(cat prs.log | jq -r ".[$i].url")
body=$(cat prs.log | jq -r ".[$i].body")
title=$(cat prs.log | jq -r ".[$i].title")
origin_pr_id=$(echo $title | grep -Eo "\[action\] \[PR:[0-9]*\]" | grep -Eo [0-9]* || true)
created_at=$(cat prs.log | jq -r ".[$i].createdAt")
echo PR: $(($i+1))/$count, URL: $url, createdAt: $created_at, now: $(date -u +"%FT%TZ")
echo PR: $(($i+1))/$count, URL: $url, origin PR: $origin_pr_id, createdAt: $created_at, operate: $operate
[[ "$url" == "" ]] && continue
[[ $created_at > $(date --date "1 hour ago" -u +"%FT%TZ") ]] && continue
# only check automerge PR.
cat prs.log | jq -r ".[$i].labels[].name" | grep automerge || continue
checks=$(cat prs.log | jq ".[$i].statusCheckRollup")
checks_count=$(echo $checks | jq 'length')
echo Checks count: $checks_count
pr_success=true
for ((j=0;j<$checks_count;j++))
do
check=$(echo $checks | jq ".[$j]")
state=$(echo $check | jq -r '.state')
status=$(echo $check | jq -r '.status')
conclusion=$(echo $check | jq -r '.conclusion')
name=$(echo $check | jq -r '.name')
# EasyCLA success flag: state=SUCCESS
# Others success flag: conclusion in SUCCESS,NEUTRAL
# Ignore Azure.sonic-buildimage stage check result. It may be set continueOnError
echo "$name" | grep "Azure.sonic-buildimage (" && continue
# Ignore Semgrep, it has issues.
[[ "$name" == "Semgrep" ]] && continue
if [[ "$state" == "SUCCESS" ]];then
# check pass
continue
elif [[ "$conclusion" == "SUCCESS" ]] || [[ "$conclusion" == "NEUTRAL" ]];then
# check pass
continue
else
echo "$url Check failed!!!"
echo $check | jq
continue 2
fi
# only check Azure.sonic-buildimage currently
echo "$name" | grep -v "Azure.sonic-buildimage" > /dev/null && continue
[[ "$status" != "COMPLETED" ]] && echo "$name: $status" && continue 2
success=true
( [[ "$conclusion" == "FAILURE" ]] || [[ "$conclusion" == "CANCELLED" ]] ) && success=false && pr_success=false
! $success && echo "FAIL: $name"
done
# rerun Azure.sonic-buildimage per day
! $pr_success && $operate && gh pr comment $url --body "/azp run Azure.sonic-buildimage"
# If auto cherry pick PRs failed, comment in original PR and close cherry pick PR
if [ -n "$origin_pr_id" ] && [[ $created_at < $date_3d_ago ]] && ! $pr_success;then
origin_pr_url=https://github.com/sonic-net/sonic-buildimage/pull/$origin_pr_id
author=$(gh pr view $origin_pr_url --json author | jq .author.login -r)
echo "Original author will check."
$operate && [[ $created_at > $date_10d_ago ]] && gh pr comment $origin_pr_url --body "@$author cherry pick PR didn't pass PR checker. Please check!!!<br>$url"
$operate && [[ $created_at < $date_28d_ago ]] && gh pr comment $origin_pr_url --body "@$author cherry pick PR didn't pass PR checker. Please check!!! Auto cherry pick PR will be closed in 2 days.<br>$url"
$operate && [[ $created_at < $date_30d_ago ]] && echo "$url Closed" && gh pr close $url
fi
! $pr_success && continue
# merge the PR
echo ========Merging PR========
gh pr merge --rebase --admin -R sonic-net/sonic-buildimage $url || true
if echo $title | grep "^\[submodule\]";then
gh pr merge --squash --admin -R sonic-net/sonic-buildimage $url -b "$body" || true
else
gh pr merge --rebase --admin -R sonic-net/sonic-buildimage $url || true
fi
echo ========Finished PR========
done

View File

@ -13,9 +13,6 @@ on:
- reopened
branches:
- master
- '202012'
- '202[1-9][0-9][0-9]'
- '20[3-9][0-9][0-9][0-9]'
paths:
- 'files/build/versions/**'

View File

@ -9,7 +9,7 @@ on:
jobs:
pre_cherry_pick:
if: github.event.pull_request.merged == true && ( (github.event.action == 'closed' && contains(join(github.event.pull_request.labels.*.name, ','), 'Approved for 20')) || (github.event.action == 'labeled' && startsWith(github.event.label.name, 'Approved for 20')) )
if: github.repository_owner == 'sonic-net' && github.event.pull_request.merged == true && ( (github.event.action == 'closed' && contains(join(github.event.pull_request.labels.*.name, ','), 'Approved for 20')) || (github.event.action == 'labeled' && startsWith(github.event.label.name, 'Approved for 20')) )
runs-on: ubuntu-latest
steps:
- name: Checkout
@ -39,6 +39,7 @@ jobs:
labels=$(echo $GITHUB_CONTEXT | jq -r ".event.label.name")
fi
title=$(echo $GITHUB_CONTEXT | jq -r ".event.pull_request.title")
body=$(echo $GITHUB_CONTEXT | jq -r ".event.pull_request.body")
echo =============================
echo SHA: $sha
echo PRID: $pr_id
@ -50,6 +51,7 @@ jobs:
echo ${TOKEN} | gh auth login --with-token
echo author: $author
echo title: $title
echo body: "$body"
echo =============================
git config user.name mssonicbld
@ -105,7 +107,7 @@ jobs:
else
# Create PR to release branch
git push mssonicbld HEAD:cherry/$branch/${pr_id} -f
result=$(gh pr create -R ${repository} -H mssonicbld:cherry/$branch/${pr_id} -B $branch -t "[action] [PR:$pr_id] $title" -b '' 2>&1)
result=$(gh pr create -R ${repository} -H mssonicbld:cherry/$branch/${pr_id} -B $branch -t "[action] [PR:$pr_id] $title" -b "$body" 2>&1)
echo $result | grep "already exists" && { echo $result; return 0; }
echo $result | grep github.com || { echo $result; return 1; }
new_pr_rul=$(echo $result | grep github.com)

12
.gitignore vendored
View File

@ -41,6 +41,9 @@ installer/x86_64/platforms/
# Misc. files
asic_config_checksum
files/Aboot/boot0
files/dsc/MANIFEST
files/dsc/install_debian
files/dsc/fs.zip
files/initramfs-tools/arista-convertfs
files/initramfs-tools/union-mount
@ -63,6 +66,12 @@ platform/**/*.egg-info
platform/**/*-none-any.whl
platform/**/.pybuild
platform/**/debian/*
!platform/**/debian/control
!platform/**/debian/rules
!platform/**/debian/changelog
!platform/**/debian/compat
!platform/**/debian/*.postinst
!platform/**/debian/*.install
platform/**/build
platform/**/*.ko
platform/**/*.mod.c
@ -99,3 +108,6 @@ htmlcov/
# Debian mirror Sources
sources.list.*
!sources.list*.j2
# Generated mirror configs
apt-retries-count

17
.gitmodules vendored
View File

@ -46,7 +46,7 @@
[submodule "src/sonic-frr/frr"]
path = src/sonic-frr/frr
url = https://github.com/sonic-net/sonic-frr.git
branch = frr/8.2
branch = frr/8.5
[submodule "platform/p4/p4-hlir/p4-hlir-v1.1"]
path = platform/p4/p4-hlir/p4-hlir-v1.1
url = https://github.com/p4lang/p4-hlir.git
@ -65,9 +65,6 @@
[submodule "src/scapy"]
path = src/scapy
url = https://github.com/secdev/scapy.git
[submodule "platform/mellanox/mlnx-sai/SAI-Implementation"]
path = platform/mellanox/mlnx-sai/SAI-Implementation
url = https://github.com/Mellanox/SAI-Implementation
[submodule "src/sonic-mgmt-framework"]
path = src/sonic-mgmt-framework
url = https://github.com/sonic-net/sonic-mgmt-framework
@ -112,3 +109,15 @@
[submodule "src/sonic-genl-packet"]
path = src/sonic-genl-packet
url = https://github.com/sonic-net/sonic-genl-packet
[submodule "src/dhcpmon"]
path = src/dhcpmon
url = https://github.com/sonic-net/sonic-dhcpmon.git
[submodule "src/sonic-dash-api"]
path = src/sonic-dash-api
url = https://github.com/sonic-net/sonic-dash-api.git
[submodule "platform/marvell-arm64/mrvl-prestera"]
path = platform/marvell-arm64/mrvl-prestera
url = https://github.com/Marvell-switching/mrvl-prestera.git
[submodule "platform/marvell-arm64/sonic-platform-marvell"]
path = platform/marvell-arm64/sonic-platform-marvell
url = https://github.com/Marvell-switching/sonic-platform-arm64.git

22
LICENSE
View File

@ -1,15 +1,13 @@
Copyright (C) 2016 Microsoft
Copyright (C) 2023 Microsoft
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
http://www.apache.org/licenses/LICENSE-2.0
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -4,6 +4,7 @@ NOJESSIE ?= 1
NOSTRETCH ?= 1
NOBUSTER ?= 0
NOBULLSEYE ?= 0
NOBOOKWORM ?= 0
override Q := @
ifeq ($(QUIET),n)
@ -29,6 +30,10 @@ ifeq ($(NOBULLSEYE),0)
BUILD_BULLSEYE=1
endif
ifeq ($(NOBOOKWORM),0)
BUILD_BOOKWORM=1
endif
PLATFORM_PATH := platform/$(if $(PLATFORM),$(PLATFORM),$(CONFIGURED_PLATFORM))
PLATFORM_CHECKOUT := platform/checkout
PLATFORM_CHECKOUT_FILE := $(PLATFORM_CHECKOUT)/$(PLATFORM).ini
@ -47,9 +52,12 @@ ifeq ($(NOBUSTER), 0)
$(MAKE_WITH_RETRY) EXTRA_DOCKER_TARGETS=$(notdir $@) BLDENV=buster -f Makefile.work buster
endif
ifeq ($(NOBULLSEYE), 0)
$(MAKE_WITH_RETRY) BLDENV=bullseye -f Makefile.work $@
$(MAKE_WITH_RETRY) EXTRA_DOCKER_TARGETS=$(notdir $@) BLDENV=bullseye -f Makefile.work bullseye
endif
BLDENV=bullseye $(MAKE) -f Makefile.work docker-cleanup
ifeq ($(NOBOOKWORM), 0)
$(MAKE_WITH_RETRY) BLDENV=bookworm -f Makefile.work $@
endif
BLDENV=bookworm $(MAKE) -f Makefile.work docker-cleanup
jessie:
@echo "+++ Making $@ +++"
@ -69,6 +77,12 @@ ifeq ($(NOBUSTER), 0)
$(MAKE) -f Makefile.work buster
endif
bullseye:
@echo "+++ Making $@ +++"
ifeq ($(NOBUSTER), 0)
$(MAKE) -f Makefile.work bullseye
endif
init:
@echo "+++ Making $@ +++"
$(MAKE) -f Makefile.work $@
@ -82,6 +96,7 @@ define make_work
$(if $(BUILD_STRETCH),BLDENV=stretch $(MAKE) -f Makefile.work $@,)
$(if $(BUILD_BUSTER),BLDENV=buster $(MAKE) -f Makefile.work $@,)
$(if $(BUILD_BULLSEYE),BLDENV=bullseye $(MAKE) -f Makefile.work $@,)
$(if $(BUILD_BOOKWORM),BLDENV=bookworm $(MAKE) -f Makefile.work $@,)
endef
.PHONY: $(PLATFORM_PATH)

View File

@ -78,7 +78,8 @@ SONIC_COMMON_DPKG_LIST := debian/control debian/changelog debian/rules \
SONIC_COMMON_BASE_FILES_LIST := sonic-slave-jessie/Dockerfile.j2 sonic-slave-jessie/Dockerfile.user.j2 \
sonic-slave-stretch/Dockerfile.j2 sonic-slave-stretch/Dockerfile.user.j2 \
sonic-slave-buster/Dockerfile.j2 sonic-slave-buster/Dockerfile.user.j2 \
sonic-slave-bullseye/Dockerfile.j2 sonic-slave-bullseye/Dockerfile.user.j2
sonic-slave-bullseye/Dockerfile.j2 sonic-slave-bullseye/Dockerfile.user.j2 \
sonic-slave-bookworm/Dockerfile.j2 sonic-slave-bookworm/Dockerfile.user.j2
@ -357,6 +358,22 @@ define SAVE_CACHE
$(if $(call CHECK_WCACHE_ENABLED,$(1)), $(call SAVE_INTO_CACHE,$(1),$(2)))
endef
RFS_DEP_FILES := $(wildcard \
$(addprefix scripts/, build_debian_base_system.sh prepare_debian_image_buildinfo.sh build_mirror_config.sh) \
$(addprefix $(IMAGE_DISTRO_DEBS_PATH)/,$(INITRAMFS_TOOLS) $(LINUX_KERNEL)) \
$(shell git ls-files files/initramfs-tools) \
$(shell git ls-files files/image_config) \
$(shell git ls-files files/apparmor) \
$(shell git ls-files files/apt) \
$(shell git ls-files files/sshd) \
$(shell git ls-files files/dhcp) \
src/sonic-build-hooks/buildinfo/trusted.gpg.d \
platform/$(CONFIGURED_PLATFORM)/modules \
files/docker/docker.service.conf \
files/build_templates/default_users.json.j2 \
files/build_scripts/generate_asic_config_checksum.py \
files/scripts/core_cleanup.py \
build_debian.sh onie-image.conf)
# Set the target path for each target.
@ -384,11 +401,17 @@ $(foreach pkg, $(SONIC_INSTALL_PKGS), \
$(eval $(pkg)_DST_PATH := $(if $($(pkg)_DST_PATH), $($(pkg)_DST_PATH), $(FSROOT_PATH))) \
$(eval $(FSROOT_PATH)/$(pkg)_TARGET := $(pkg)) )
$(foreach pkg, $(SONIC_RFS_TARGETS), \
$(eval $(pkg)_DST_PATH := $(if $($(pkg)_DST_PATH), $($(pkg)_DST_PATH), $(TARGET_PATH))) \
$(eval $(pkg)_CACHE_MODE := GIT_CONTENT_SHA) \
$(eval $(pkg)_DEP_FLAGS := $(SONIC_COMMON_FLAGS_LIST)) \
$(eval $(pkg)_DEP_FILES := $(SONIC_COMMON_BASE_FILES_LIST) $(RFS_DEP_FILES)) \
$(eval $(TARGET_PATH)/$(pkg)_TARGET := $(pkg)) )
# define the DEP files(.dep and .smdep) and SHA files (.sha and smsha) for each target
$(foreach pkg, $(SONIC_MAKE_DEBS) $(SONIC_DPKG_DEBS) $(SONIC_ONLINE_DEBS) $(SONIC_COPY_DEBS) \
$(SONIC_MAKE_FILES) $(SONIC_PYTHON_STDEB_DEBS) $(SONIC_PYTHON_WHEELS) \
$(SONIC_DOCKER_IMAGES) $(SONIC_DOCKER_DBG_IMAGES) $(SONIC_INSTALL_PKGS), \
$(SONIC_DOCKER_IMAGES) $(SONIC_DOCKER_DBG_IMAGES) $(SONIC_INSTALL_PKGS) $(SONIC_RFS_TARGETS), \
$(eval $(pkg)_MOD_SRC_PATH:=$(if $($(pkg)_SRC_PATH),$($(pkg)_SRC_PATH),$($(pkg)_PATH))) \
$(eval $(pkg)_BASE_PATH:=$(if $($(pkg)_BASE_PATH),$($(pkg)_BASE_PATH),$(CURDIR))) \
$(eval $(pkg)_DEP_FLAGS_FILE:=$($(pkg)_DST_PATH)/$(pkg).flags) \
@ -489,6 +512,7 @@ $(eval $(call FLAGS_DEP_RULES, $(SONIC_PYTHON_STDEB_DEBS), $(PYTHON_DEBS_PATH),f
$(eval $(call FLAGS_DEP_RULES, $(SONIC_PYTHON_WHEELS), $(PYTHON_WHEELS_PATH),flags))
$(eval $(call FLAGS_DEP_RULES, $(SONIC_DOCKER_IMAGES) $(SONIC_DOCKER_DBG_IMAGES), $(TARGET_PATH),flags))
$(eval $(call FLAGS_DEP_RULES, $(SONIC_INSTALL_PKGS), $(FSROOT_PATH),flags))
$(eval $(call FLAGS_DEP_RULES, $(SONIC_RFS_TARGETS), $(TARGET_PATH),flags))
@ -564,10 +588,12 @@ ALL_DEP_FILES_LIST += $(foreach pkg,$(2), $($(filter none,$($(1)_CACHE_MODE)), \
$(addsuffix .$(3).sha,$(addprefix $(pkg)/, $(1)))))
$(foreach docker, $(filter $(SONIC_DOCKER_IMAGES), $(1)), \
$(eval $(docker)_DEP_FILES+=$(wildcard files/build/versions/default/*) \
$(wildcard files/build/versions/dockers/$(basename $(docker))/*)))
$(wildcard files/build/versions/dockers/$(basename $(docker))/*) \
$(foreach docker_file, $($(docker)_FILES), $(addprefix $(if $($(docker_file)_PATH), $($(docker_file)_PATH), $(FILES_PATH))/, $(docker_file))) ))
$(foreach docker, $(filter $(SONIC_DOCKER_DBG_IMAGES), $(1)), \
$(eval $(docker)_DEP_FILES+=$(wildcard files/build/versions/default/*) \
$(wildcard files/build/versions/dockers/$(patsubst %-$(DBG_IMAGE_MARK).gz,%,$(docker))/*)))
$(wildcard files/build/versions/dockers/$(patsubst %-$(DBG_IMAGE_MARK).gz,%,$(docker))/*) \
$(foreach docker_file, $($(docker)_FILES), $(addprefix $(if $($(docker_file)_PATH), $($(docker_file)_PATH), $(FILES_PATH))/, $(docker_file))) ))
$(addsuffix .$(3),$(addprefix $(2)/, $(1))) : $(2)/%.$(3) : \
$(2)/%.flags $$$$($$$$*_DEP_FILES) $$$$(if $$$$($$$$*_SMDEP_FILES), $(2)/%.smdep)
@$$(eval $$*_DEP_FILES_MODIFIED := $$? )
@ -583,6 +609,7 @@ $(eval $(call SHA_DEP_RULES, $(SONIC_PYTHON_STDEB_DEBS), $(PYTHON_DEBS_PATH),dep
$(eval $(call SHA_DEP_RULES, $(SONIC_PYTHON_WHEELS), $(PYTHON_WHEELS_PATH),dep))
$(eval $(call SHA_DEP_RULES, $(SONIC_DOCKER_IMAGES) $(SONIC_DOCKER_DBG_IMAGES), $(TARGET_PATH),dep))
$(eval $(call SHA_DEP_RULES, $(SONIC_INSTALL_PKGS), $(FSROOT_PATH),dep))
$(eval $(call SHA_DEP_RULES, $(SONIC_RFS_TARGETS), $(TARGET_PATH),dep))
@ -616,6 +643,7 @@ SONIC_CACHE_CLEAN_TARGETS = $(addsuffix -clean,$(addprefix $(TARGET_PATH)/, \
$(SONIC_DOCKER_IMAGES) \
$(SONIC_DOCKER_DBG_IMAGES) \
$(SONIC_SIMPLE_DOCKER_IMAGES) \
$(SONIC_RFS_TARGETS) \
$(SONIC_INSTALLERS)))
$(SONIC_CACHE_CLEAN_TARGETS) :: $(TARGET_PATH)/%-clean : .platform
@rm -f $($*_DEP_FLAGS_FILE) $($*_MOD_HASH_FILE) $($*_SMOD_HASH_FILE) \

View File

@ -40,6 +40,9 @@
# * ENABLE_NATIVE_WRITE: Enable native write/config operations via the gNMI interface.
# * Default: unset
# * Values: y
# * ENABLE_DIALOUT: Enable dialout client in telemetry.
# * Default: unset
# * Values: y
# * SONIC_DPKG_CACHE_METHOD: Specifying method of obtaining the Debian packages from cache: none or cache
# * SONIC_DPKG_CACHE_SOURCE: Debian package cache location when cache enabled for debian packages
# * BUILD_LOG_TIMESTAMP: Set timestamp in the build log (simple/none)
@ -69,6 +72,7 @@ USER := $(shell id -un)
PWD := $(shell pwd)
USER_LC := $(shell echo $(USER) | tr A-Z a-z)
DOCKER_MACHINE := $(shell docker run --rm debian:buster uname -m)
HOST_DOCKERD_GID := $(shell getent group docker | cut -d : -f3)
comma := ,
@ -121,7 +125,9 @@ else
TARGET_BOOTLOADER = uboot
endif
ifeq ($(BLDENV), bullseye)
ifeq ($(BLDENV), bookworm)
SLAVE_DIR = sonic-slave-bookworm
else ifeq ($(BLDENV), bullseye)
SLAVE_DIR = sonic-slave-bullseye
else ifeq ($(BLDENV), buster)
SLAVE_DIR = sonic-slave-buster
@ -147,6 +153,10 @@ ifeq ($(ENABLE_DOCKER_BASE_PULL),)
override ENABLE_DOCKER_BASE_PULL = n
endif
ifeq ($(LEGACY_SONIC_MGMT_DOCKER),)
override LEGACY_SONIC_MGMT_DOCKER = y
endif
ifneq ($(GZ_COMPRESS_PROGRAM), pigz)
override GZ_COMPRESS_PROGRAM = gzip
endif
@ -176,13 +186,19 @@ DOCKER_ROOT = $(PWD)/fsroot.docker.$(BLDENV)
# Support FIPS feature, armhf not supported yet
ifeq ($(PLATFORM_ARCH),armhf)
ENABLE_FIPS_FEATURE := n
INCLUDE_FIPS := n
ENABLE_FIPS := n
endif
ifeq ($(ENABLE_FIPS_FEATURE), n)
# FIPS not yet available on Bookworm
ifeq ($(BLDENV),bookworm)
$(warning FIPS support not yet available on Bookworm)
INCLUDE_FIPS := n
endif
ifeq ($(INCLUDE_FIPS), n)
ifeq ($(ENABLE_FIPS), y)
$(error Cannot set fips config ENABLE_FIPS=y when ENABLE_FIPS_FEATURE=n)
$(error Cannot set fips config ENABLE_FIPS=y when INCLUDE_FIPS=n)
endif
endif
@ -203,13 +219,14 @@ $(shell \
SONIC_VERSION_CACHE_SOURCE=$(SONIC_VERSION_CACHE_SOURCE) \
DBGOPT='$(DBGOPT)' \
MIRROR_SNAPSHOT=$(MIRROR_SNAPSHOT) \
PIP_HTTP_TIMEOUT=$(PIP_HTTP_TIMEOUT) \
scripts/generate_buildinfo_config.sh)
# Generate the slave Dockerfile, and prepare build info for it
$(shell CONFIGURED_ARCH=$(CONFIGURED_ARCH) \
MULTIARCH_QEMU_ENVIRON=$(MULTIARCH_QEMU_ENVIRON) \
CROSS_BUILD_ENVIRON=$(CROSS_BUILD_ENVIRON) \
ENABLE_FIPS_FEATURE=$(ENABLE_FIPS_FEATURE) \
INCLUDE_FIPS=$(INCLUDE_FIPS) \
DOCKER_EXTRA_OPTS=$(DOCKER_EXTRA_OPTS) \
DEFAULT_CONTAINER_REGISTRY=$(DEFAULT_CONTAINER_REGISTRY) \
GZ_COMPRESS_PROGRAM=$(GZ_COMPRESS_PROGRAM) \
@ -220,10 +237,18 @@ $(shell CONFIGURED_ARCH=$(CONFIGURED_ARCH) \
CROSS_BUILD_ENVIRON=$(CROSS_BUILD_ENVIRON) \
j2 $(SLAVE_DIR)/Dockerfile.user.j2 > $(SLAVE_DIR)/Dockerfile.user)
ifeq ($(CROSS_BUILD_ENVIRON), y)
$(shell SONIC_VERSION_CONTROL_COMPONENTS=$(SONIC_VERSION_CONTROL_COMPONENTS) \
MIRROR_SNAPSHOT=$(MIRROR_SNAPSHOT) scripts/build_mirror_config.sh $(SLAVE_DIR) amd64 $(BLDENV))
endif
$(shell SONIC_VERSION_CONTROL_COMPONENTS=$(SONIC_VERSION_CONTROL_COMPONENTS) \
MIRROR_SNAPSHOT=$(MIRROR_SNAPSHOT) scripts/build_mirror_config.sh $(SLAVE_DIR) $(CONFIGURED_ARCH) $(BLDENV))
PREPARE_DOCKER=BUILD_SLAVE=y \
DEFAULT_CONTAINER_REGISTRY=$(DEFAULT_CONTAINER_REGISTRY) \
SONIC_VERSION_CACHE=$(SONIC_VERSION_CACHE) \
DBGOPT='$(DBGOPT)' \
MIRROR_SNAPSHOT=$(MIRROR_SNAPSHOT) \
scripts/prepare_docker_buildinfo.sh \
$(SLAVE_BASE_IMAGE) \
$(SLAVE_DIR)/Dockerfile \
@ -245,6 +270,7 @@ SLAVE_BASE_TAG = $(shell \
SLAVE_TAG = $(shell \
(cat $(SLAVE_DIR)/Dockerfile.user \
$(SLAVE_DIR)/Dockerfile \
$(SLAVE_DIR)/sources.list.* \
$(SLAVE_DIR)/buildinfo/versions/versions-* \
&& echo $(USER)/$(PWD)/$(CONFIGURED_PLATFORM)) \
| sha1sum \
@ -275,7 +301,7 @@ endif
DOCKER_LOCKFILE_SAVE := $(DOCKER_LOCKDIR)/docker_save.lock
$(shell mkdir -m 0777 -p $(DOCKER_LOCKDIR))
$(shell [ -f $(DOCKER_LOCKFILE_SAVE) ] || (touch $(DOCKER_LOCKFILE_SAVE) && chmod 0777 $(DOCKER_LOCKFILE_SAVE)))
$(docker run --rm -v $(DOCKER_ROOT)\:/mount alpine sh -c 'rm -rf /mount/')
$(shell [ -d $(DOCKER_ROOT) ] && docker run --rm -v $(DOCKER_ROOT)\:/mount debian sh -c 'rm -rf /mount/*')
$(mkdir -p $(DOCKER_ROOT))
ifeq ($(DOCKER_BUILDER_MOUNT),)
@ -313,15 +339,13 @@ endif
ifneq ($(SECURE_UPGRADE_DEV_SIGNING_KEY),)
DOCKER_RUN += -v $(SECURE_UPGRADE_DEV_SIGNING_KEY):$(SECURE_UPGRADE_DEV_SIGNING_KEY):ro
endif
ifneq ($(SECURE_UPGRADE_DEV_SIGNING_CERT),)
DOCKER_RUN += -v $(SECURE_UPGRADE_DEV_SIGNING_CERT):$(SECURE_UPGRADE_DEV_SIGNING_CERT):ro
ifneq ($(SECURE_UPGRADE_SIGNING_CERT),)
DOCKER_RUN += -v $(SECURE_UPGRADE_SIGNING_CERT):$(SECURE_UPGRADE_SIGNING_CERT):ro
endif
# Mount the Signing prod tool in the slave container
$(info "SECURE_UPGRADE_PROD_SIGNING_TOOL": "$(SECURE_UPGRADE_PROD_SIGNING_TOOL)")
ifneq ($(SECURE_UPGRADE_PROD_SIGNING_TOOL),)
SECURE_UPGRADE_PROD_SIGNING_TOOL_DST = /sonic/scripts/$(shell basename -- $(SECURE_UPGRADE_PROD_SIGNING_TOOL))
DOCKER_RUN += -v $(SECURE_UPGRADE_PROD_SIGNING_TOOL):$(SECURE_UPGRADE_PROD_SIGNING_TOOL_DST):ro
SECURE_UPGRADE_PROD_SIGNING_TOOL := $(SECURE_UPGRADE_PROD_SIGNING_TOOL_DST)
DOCKER_RUN += -v $(SECURE_UPGRADE_PROD_SIGNING_TOOL):/sonic/scripts/$(shell basename -- $(SECURE_UPGRADE_PROD_SIGNING_TOOL)):ro
endif
ifneq ($(SONIC_DPKG_CACHE_SOURCE),)
@ -369,7 +393,7 @@ endif
ifeq ($(SONIC_CONFIG_USE_NATIVE_DOCKERD_FOR_BUILD), y)
ifneq ($(MULTIARCH_QEMU_ENVIRON), y)
DOCKER_RUN += -v /var/run/docker.sock:/var/run/docker.sock
DOCKER_RUN += -v /var/run/docker.sock:/var/run/docker.sock --group-add $(HOST_DOCKERD_GID)
endif
endif
@ -414,7 +438,7 @@ endif
endif
SPLIT_LOG = | tee
SPLIT_LOG = 2>&1 | tee
DOCKER_BASE_LOG = $(SLAVE_DIR)/$(SLAVE_BASE_IMAGE)_$(SLAVE_BASE_TAG).log
DOCKER_LOG = $(SLAVE_DIR)/$(SLAVE_IMAGE)_$(SLAVE_TAG).log
@ -431,7 +455,7 @@ DOCKER_SLAVE_BASE_BUILD = docker build --no-cache \
$(SPLIT_LOG) $(DOCKER_BASE_LOG)
DOCKER_BASE_PULL = docker pull \
$(REGISTRY_SERVER):$(REGISTRY_PORT)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
$(REGISTRY_SERVER):$(REGISTRY_PORT)$(REGISTRY_SERVER_PATH)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
DOCKER_USER_BUILD = docker build --no-cache \
--build-arg user=$(USER) \
@ -457,7 +481,7 @@ DOCKER_SLAVE_BASE_PULL_REGISTRY = \
$(DOCKER_BASE_PULL); \
} && \
{ \
docker tag $(REGISTRY_SERVER):$(REGISTRY_PORT)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) && \
docker tag $(REGISTRY_SERVER):$(REGISTRY_PORT)$(REGISTRY_SERVER_PATH)/$(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG) && \
$(COLLECT_DOCKER); \
}\
@ -531,20 +555,24 @@ SONIC_BUILD_INSTRUCTION := $(MAKE) \
DOCKER_LOCKFILE_SAVE=$(DOCKER_LOCKFILE_SAVE) \
SONIC_CONFIG_USE_NATIVE_DOCKERD_FOR_BUILD=$(SONIC_CONFIG_USE_NATIVE_DOCKERD_FOR_BUILD) \
SONIC_INCLUDE_SYSTEM_TELEMETRY=$(INCLUDE_SYSTEM_TELEMETRY) \
SONIC_INCLUDE_SYSTEM_GNMI=$(INCLUDE_SYSTEM_GNMI) \
INCLUDE_DHCP_RELAY=$(INCLUDE_DHCP_RELAY) \
INCLUDE_DHCP_SERVER=$(INCLUDE_DHCP_SERVER) \
INCLUDE_MACSEC=$(INCLUDE_MACSEC) \
SONIC_INCLUDE_RESTAPI=$(INCLUDE_RESTAPI) \
SONIC_INCLUDE_MUX=$(INCLUDE_MUX) \
ENABLE_TRANSLIB_WRITE=$(ENABLE_TRANSLIB_WRITE) \
ENABLE_NATIVE_WRITE=$(ENABLE_NATIVE_WRITE) \
ENABLE_DIALOUT=$(ENABLE_DIALOUT) \
EXTRA_DOCKER_TARGETS=$(EXTRA_DOCKER_TARGETS) \
BUILD_LOG_TIMESTAMP=$(BUILD_LOG_TIMESTAMP) \
SONIC_ENABLE_IMAGE_SIGNATURE=$(ENABLE_IMAGE_SIGNATURE) \
SONIC_ENABLE_SECUREBOOT_SIGNATURE=$(SONIC_ENABLE_SECUREBOOT_SIGNATURE) \
SECURE_UPGRADE_MODE=$(SECURE_UPGRADE_MODE) \
SECURE_UPGRADE_DEV_SIGNING_KEY=$(SECURE_UPGRADE_DEV_SIGNING_KEY) \
SECURE_UPGRADE_DEV_SIGNING_CERT=$(SECURE_UPGRADE_DEV_SIGNING_CERT) \
SECURE_UPGRADE_SIGNING_CERT=$(SECURE_UPGRADE_SIGNING_CERT) \
SECURE_UPGRADE_PROD_SIGNING_TOOL=$(SECURE_UPGRADE_PROD_SIGNING_TOOL) \
SECURE_UPGRADE_PROD_TOOL_ARGS=$(SECURE_UPGRADE_PROD_TOOL_ARGS) \
SONIC_DEFAULT_CONTAINER_REGISTRY=$(DEFAULT_CONTAINER_REGISTRY) \
ENABLE_HOST_SERVICE_ON_START=$(ENABLE_HOST_SERVICE_ON_START) \
SLAVE_DIR=$(SLAVE_DIR) \
@ -553,13 +581,18 @@ SONIC_BUILD_INSTRUCTION := $(MAKE) \
ENABLE_ASAN=$(ENABLE_ASAN) \
SONIC_INCLUDE_BOOTCHART=$(INCLUDE_BOOTCHART) \
SONIC_ENABLE_BOOTCHART=$(ENABLE_BOOTCHART) \
ENABLE_FIPS_FEATURE=$(ENABLE_FIPS_FEATURE) \
INCLUDE_FIPS=$(INCLUDE_FIPS) \
ENABLE_FIPS=$(ENABLE_FIPS) \
SONIC_SLAVE_DOCKER_DRIVER=$(SONIC_SLAVE_DOCKER_DRIVER) \
MIRROR_URLS=$(MIRROR_URLS) \
MIRROR_SECURITY_URLS=$(MIRROR_SECURITY_URLS) \
GZ_COMPRESS_PROGRAM=$(GZ_COMPRESS_PROGRAM) \
MIRROR_SNAPSHOT=$(MIRROR_SNAPSHOT) \
SONIC_VERSION_CONTROL_COMPONENTS=$(SONIC_VERSION_CONTROL_COMPONENTS) \
ONIE_IMAGE_PART_SIZE=$(ONIE_IMAGE_PART_SIZE) \
SONIC_OS_VERSION=$(SONIC_OS_VERSION) \
PIP_HTTP_TIMEOUT=$(PIP_HTTP_TIMEOUT) \
LEGACY_SONIC_MGMT_DOCKER=$(LEGACY_SONIC_MGMT_DOCKER) \
$(SONIC_OVERRIDE_BUILD_VARS)
.PHONY: sonic-slave-build sonic-slave-bash init reset
@ -580,7 +613,9 @@ endif
export MIRROR_URLS
export MIRROR_SECURITY_URLS
export MIRROR_SNAPSHOT
export SONIC_VERSION_CONTROL_COMPONENTS
export PIP_HTTP_TIMEOUT
%:: | sonic-build-hooks
ifneq ($(filter y, $(MULTIARCH_QEMU_ENVIRON) $(CROSS_BUILD_ENVIRON)),)
@ -607,8 +642,6 @@ sonic-build-hooks:
$(Q)pushd src/sonic-build-hooks; TRUSTED_GPG_URLS=$(TRUSTED_GPG_URLS) $(MAKE) all; popd
$(Q)mkdir -p $(SLAVE_DIR)/buildinfo
$(Q)cp src/sonic-build-hooks/buildinfo/sonic-build-hooks* $(SLAVE_DIR)/buildinfo
$(Q)if [ "$(MULTIARCH_QEMU_ENVIRON)" == y ]; then scripts/build_mirror_config.sh $(SLAVE_DIR) amd64 $(BLDENV); fi
$(Q)scripts/build_mirror_config.sh $(SLAVE_DIR) $(CONFIGURED_ARCH) $(BLDENV)
sonic-slave-base-build : | sonic-build-hooks
ifeq ($(MULTIARCH_QEMU_ENVIRON), y)

View File

@ -7,9 +7,34 @@
[![Innovium](https://dev.azure.com/mssonic/build/_apis/build/status/innovium/Azure.sonic-buildimage.official.innovium?branchName=master&label=Innovium)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=148&branchName=master)
[![Mellanox](https://dev.azure.com/mssonic/build/_apis/build/status/mellanox/Azure.sonic-buildimage.official.mellanox?branchName=master&label=Mellanox)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=139&branchName=master)
[![Marvell(armhf)](https://dev.azure.com/mssonic/build/_apis/build/status/marvell/Azure.sonic-buildimage.official.marvell-armhf?branchName=master&label=Marvell-armhf)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=141&branchName=master)
[![Marvell(arm64)](https://dev.azure.com/mssonic/build/_apis/build/status/marvell/Azure.sonic-buildimage.official.marvell-arm64?branchName=master&label=Marvell-arm64)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=999&branchName=master)
[![Nephos](https://dev.azure.com/mssonic/build/_apis/build/status/nephos/Azure.sonic-buildimage.official.nephos?branchName=master&label=Nephos)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=149&branchName=master)
[![VS](https://dev.azure.com/mssonic/build/_apis/build/status/vs/Azure.sonic-buildimage.official.vs?branchName=master&label=VS)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=142&branchName=master)
*202305 builds*:
[![Barefoot](https://dev.azure.com/mssonic/build/_apis/build/status/barefoot/Azure.sonic-buildimage.official.barefoot?branchName=202205&label=Barefoot)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=146&branchName=202305)
[![Broadcom](https://dev.azure.com/mssonic/build/_apis/build/status/broadcom/Azure.sonic-buildimage.official.broadcom?branchName=202305&label=Broadcom)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=138&branchName=202305)
[![Centec](https://dev.azure.com/mssonic/build/_apis/build/status/centec/Azure.sonic-buildimage.official.centec?branchName=202305&label=Centec)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=143&branchName=202305)
[![Centec(arm64)](https://dev.azure.com/mssonic/build/_apis/build/status/centec/Azure.sonic-buildimage.official.centec-arm64?branchName=202305&label=Centec-arm64)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=140&branchName=202305)
[![Innovium](https://dev.azure.com/mssonic/build/_apis/build/status/innovium/Azure.sonic-buildimage.official.innovium?branchName=202305&label=Innovium)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=148&branchName=202305)
[![Mellanox](https://dev.azure.com/mssonic/build/_apis/build/status/mellanox/Azure.sonic-buildimage.official.mellanox?branchName=202305&label=Mellanox)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=139&branchName=202305)
[![Marvell(armhf)](https://dev.azure.com/mssonic/build/_apis/build/status/marvell/Azure.sonic-buildimage.official.marvell-armhf?branchName=202305&label=Marvell-armhf)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=141&branchName=202305)
[![Nephos](https://dev.azure.com/mssonic/build/_apis/build/status/nephos/Azure.sonic-buildimage.official.nephos?branchName=202305&label=Nephos)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=149&branchName=202305)
[![VS](https://dev.azure.com/mssonic/build/_apis/build/status/vs/Azure.sonic-buildimage.official.vs?branchName=202305&label=VS)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=142&branchName=202305)
*202211 builds*:
[![Barefoot](https://dev.azure.com/mssonic/build/_apis/build/status/barefoot/Azure.sonic-buildimage.official.barefoot?branchName=202205&label=Barefoot)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=146&branchName=202211)
[![Broadcom](https://dev.azure.com/mssonic/build/_apis/build/status/broadcom/Azure.sonic-buildimage.official.broadcom?branchName=202211&label=Broadcom)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=138&branchName=202211)
[![Centec](https://dev.azure.com/mssonic/build/_apis/build/status/centec/Azure.sonic-buildimage.official.centec?branchName=202211&label=Centec)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=143&branchName=202211)
[![Centec(arm64)](https://dev.azure.com/mssonic/build/_apis/build/status/centec/Azure.sonic-buildimage.official.centec-arm64?branchName=202211&label=Centec-arm64)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=140&branchName=202211)
[![Innovium](https://dev.azure.com/mssonic/build/_apis/build/status/innovium/Azure.sonic-buildimage.official.innovium?branchName=202211&label=Innovium)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=148&branchName=202211)
[![Mellanox](https://dev.azure.com/mssonic/build/_apis/build/status/mellanox/Azure.sonic-buildimage.official.mellanox?branchName=202211&label=Mellanox)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=139&branchName=202211)
[![Marvell(armhf)](https://dev.azure.com/mssonic/build/_apis/build/status/marvell/Azure.sonic-buildimage.official.marvell-armhf?branchName=202211&label=Marvell-armhf)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=141&branchName=202211)
[![Nephos](https://dev.azure.com/mssonic/build/_apis/build/status/nephos/Azure.sonic-buildimage.official.nephos?branchName=202211&label=Nephos)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=149&branchName=202211)
[![VS](https://dev.azure.com/mssonic/build/_apis/build/status/vs/Azure.sonic-buildimage.official.vs?branchName=202211&label=VS)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=142&branchName=202211)
*202205 builds*:
[![Barefoot](https://dev.azure.com/mssonic/build/_apis/build/status/barefoot/Azure.sonic-buildimage.official.barefoot?branchName=202205&label=Barefoot)](https://dev.azure.com/mssonic/build/_build/latest?definitionId=146&branchName=202205)
@ -106,6 +131,7 @@ pip3 install --user j2cli
system to allow running the 'docker' command without 'sudo':
* Add current user to the docker group: `sudo gpasswd -a ${USER} docker`
* Log out and log back in so that your group membership is re-evaluated
* If you are using Linux kernel 5.3 or newer, then you must use Docker 20.10.10 or newer. This is because older Docker versions did not allow the `clone3` syscall, which is now used in Bookworm.
> Note: If a previous installation of Docker using snap was present on the
> system, remove it and also remove docker from snap before reinstallating docker.
@ -162,9 +188,6 @@ The supported ASIC vendors are:
## Usage for ARM Architecture
ARM build has dependency in docker version 18.
If docker version is 19, downgrade to 18 with:
```shell
sudo apt-get install --allow-downgrades -y docker-ce=5:18.09.0~3-0~ubuntu-xenial
sudo apt-get install --allow-downgrades -y docker-ce-cli=5:18.09.0~3-0~ubuntu-xenial
@ -227,7 +250,7 @@ make configure PLATFORM=marvell-arm64 PLATFORM_ARCH=arm64
`/usr/bin/tar: /path/to/sonic-buildimage/<some_file>:
Cannot write: No space left on device`
The solution is to [move the directory](https://linuxconfig.org/how-to-move-docker-s-default-var-lib-docker-to-another-directory-on-ubuntu-debian-linux)
The solution is to [move the directory](https://www.ibm.com/docs/en/z-logdata-analytics/5.1.0?topic=compose-relocating-docker-root-directory)
to a partition with more free space.
* Use
`http_proxy=[your_proxy] https_proxy=[your_proxy] no_proxy=[your_no_proxy] make`
@ -328,6 +351,10 @@ on the SAI version for each SONiC release.
[managing, configuring and monitoring SONiC](https://github.com/sonic-net/sonic-mgmt)
(gzip tar archive)
## SONiC Image Azure Pipelines
All SONiC project build pipeline could be found at [Download Portal for SONiC Images](https://sonic-build.azurewebsites.net)
## Contribution Guide
All contributors must sign a contribution license agreement before contributions

View File

@ -28,6 +28,7 @@ resources:
- repository: sonic-mgmt
type: github
name: sonic-net/sonic-mgmt
ref: master
endpoint: sonic-net
- repository: buildimage
type: github
@ -41,7 +42,7 @@ variables:
- name: CACHE_MODE
value: rcache
- name: ENABLE_FIPS
value: y
value: n
stages:
- stage: BuildVS
@ -49,14 +50,12 @@ stages:
jobs:
- template: .azure-pipelines/azure-pipelines-build.yml
parameters:
buildOptions: 'USERNAME=admin SONIC_BUILD_JOBS=$(nproc) BUILD_MULTIASIC_KVM=y ${{ variables.VERSION_CONTROL_OPTIONS }}'
buildOptions: 'USERNAME=admin SONIC_BUILD_JOBS=$(nproc) BUILD_MULTIASIC_KVM=y INCLUDE_DHCP_SERVER=y ${{ variables.VERSION_CONTROL_OPTIONS }}'
jobGroups:
- name: vs
- stage: Build
pool: sonicbld
variables:
INSTALL_DEBUG_TOOLS: y
dependsOn: []
jobs:
- template: .azure-pipelines/azure-pipelines-build.yml
@ -66,18 +65,28 @@ stages:
- name: broadcom
variables:
swi_image: yes
INCLUDE_RESTAPI: y
- name: mellanox
variables:
dbg_image: yes
docker_syncd_rpc_image: yes
platform_rpc: mlnx
- name: marvell-arm64
pool: sonicbld-arm64
variables:
PLATFORM_ARCH: arm64
- name: marvell-armhf
pool: sonicbld-armhf
timeoutInMinutes: 1200
variables:
PLATFORM_ARCH: armhf
INCLUDE_RESTAPI: y
- stage: Test
dependsOn: BuildVS
condition: and(succeeded(), and(ne(stageDependencies.BuildVS.outputs['vs.SetVar.SKIP_VSTEST'], 'YES'), in(dependencies.BuildVS.result, 'Succeeded', 'SucceededWithIssues')))
variables:
- group: Testbed-Tools
- group: SONiC-Elastictest
- name: inventory
value: veos_vtb
- name: testbed_file
@ -104,27 +113,30 @@ stages:
sudo rm -rf ../*.deb
displayName: "Cleanup"
- task: DownloadPipelineArtifact@2
inputs:
source: specific
project: build
pipeline: 9
artifact: sonic-swss-common.amd64.ubuntu20_04
runVersion: 'latestFromBranch'
runBranch: 'refs/heads/master'
displayName: "Download sonic swss common deb packages"
- task: DownloadPipelineArtifact@2
inputs:
artifact: sonic-buildimage.vs
displayName: "Download sonic-buildimage.vs artifact"
- script: |
set -x
sudo src/sonic-swss-common/.azure-pipelines/build_and_install_module.sh
displayName: "Install kernel modules"
- script: |
sudo apt-get update
sudo apt-get install libyang0.16 -y
sudo dpkg -i --force-confask,confnew ../libswsscommon_1.0.0_amd64.deb
sudo dpkg -i ../python3-swsscommon_1.0.0_amd64.deb
sudo apt-get install -y make libtool m4 autoconf dh-exec debhelper cmake pkg-config \
libhiredis-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev libnl-nf-3-dev swig \
libpython2.7-dev libboost-dev libboost-serialization-dev uuid-dev libzmq5 libzmq3-dev python3-pip \
cmake libgtest-dev libgmock-dev libyang-dev nlohmann-json3-dev
sudo pip3 install pytest
cd src/sonic-swss-common
./autogen.sh
dpkg-buildpackage -rfakeroot -us -uc -b -j$(nproc)
sudo dpkg -i --force-confask,confnew ../libswsscommon_*.deb
sudo dpkg -i ../python3-swsscommon_*.deb
displayName: "Compile sonic swss common"
- script: |
sudo docker load -i ../target/docker-sonic-vs.gz
docker tag docker-sonic-vs:latest docker-sonic-vs:$(Build.BuildNumber)
username=$(id -un)
@ -143,235 +155,116 @@ stages:
testResultsFiles: '**/tr.xml'
testRunTitle: vstest
- job: t0_part1
pool: sonictest
displayName: "kvmtest-t0-part1"
timeoutInMinutes: 400
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
continueOnError: false
steps:
- template: .azure-pipelines/run-test-template.yml
parameters:
dut: vlab-01
tbname: vms-kvm-t0
ptf_name: ptf_vms6-1
tbtype: t0
vmtype: ceos
section: part-1
- job: t0_part2
pool: sonictest
displayName: "kvmtest-t0-part2"
timeoutInMinutes: 400
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
continueOnError: false
steps:
- template: .azure-pipelines/run-test-template.yml
parameters:
dut: vlab-01
tbname: vms-kvm-t0
ptf_name: ptf_vms6-1
tbtype: t0
vmtype: ceos
section: part-2
- job: t0_testbedv2
- job: t0_elastictest
pool: ubuntu-20.04
displayName: "kvmtest-t0 by TestbedV2"
displayName: "kvmtest-t0 by Elastictest"
timeoutInMinutes: 240
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError: false
steps:
- template: .azure-pipelines/run-test-scheduler-template.yml
- template: .azure-pipelines/run-test-elastictest-template.yml@sonic-mgmt
parameters:
TOPOLOGY: t0
MIN_WORKER: $(T0_INSTANCE_NUM)
MAX_WORKER: $(T0_INSTANCE_NUM)
MGMT_BRANCH: "master"
- job: t0_2vlans_testbedv2
- job: t0_2vlans_elastictest
pool: ubuntu-20.04
displayName: "kvmtest-t0-2vlans by TestbedV2"
displayName: "kvmtest-t0-2vlans by Elastictest"
timeoutInMinutes: 240
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError: false
steps:
- template: .azure-pipelines/run-test-scheduler-template.yml
- template: .azure-pipelines/run-test-elastictest-template.yml@sonic-mgmt
parameters:
TOPOLOGY: t0
TEST_SET: t0-2vlans
MIN_WORKER: $(T0_2VLANS_INSTANCE_NUM)
MAX_WORKER: $(T0_2VLANS_INSTANCE_NUM)
MGMT_BRANCH: "master"
DEPLOY_MG_EXTRA_PARAMS: "-e vlan_config=two_vlan_a"
- job:
pool:
vmImage: 'ubuntu-20.04'
displayName: "kvmtest-t0"
dependsOn:
- t0_part1
- t0_part2
- t0_testbedv2
- t0_2vlans_testbedv2
condition: always()
continueOnError: false
variables:
resultOfPart1: $[ dependencies.t0_part1.result ]
resultOfPart2: $[ dependencies.t0_part2.result ]
resultOfT0TestbedV2: $[ dependencies.t0_testbedv2.result ]
resultOfT02VlansTestbedV2: $[ dependencies.t0_2vlans_testbedv2.result ]
steps:
- script: |
if [ $(resultOfT0TestbedV2) == "Succeeded" ] && [ $(resultOfT02VlansTestbedV2) == "Succeeded" ]; then
echo "TestbedV2 t0 passed."
exit 0
fi
if [ $(resultOfPart1) == "Succeeded" ] && [ $(resultOfPart2) == "Succeeded" ]; then
echo "Classic t0 jobs(both part1 and part2) passed."
exit 0
fi
echo "Both classic and TestbedV2 t0 jobs failed! Please check the detailed information. (Any of them passed, t0 will be considered as passed)"
exit 1
- job: t1_lag_classic
pool: sonictest-t1-lag
displayName: "kvmtest-t1-lag classic"
timeoutInMinutes: 400
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
continueOnError: false
steps:
- template: .azure-pipelines/run-test-template.yml
parameters:
dut: vlab-03
tbname: vms-kvm-t1-lag
ptf_name: ptf_vms6-2
tbtype: t1-lag
vmtype: ceos
- job: t1_lag_testbedv2
- job: t1_lag_elastictest
pool: ubuntu-20.04
displayName: "kvmtest-t1-lag by TestbedV2"
displayName: "kvmtest-t1-lag by Elastictest"
timeoutInMinutes: 240
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError: false
steps:
- template: .azure-pipelines/run-test-scheduler-template.yml
- template: .azure-pipelines/run-test-elastictest-template.yml@sonic-mgmt
parameters:
TOPOLOGY: t1-lag
MIN_WORKER: $(T1_LAG_INSTANCE_NUM)
MAX_WORKER: $(T1_LAG_INSTANCE_NUM)
MGMT_BRANCH: "master"
- job:
pool:
vmImage: 'ubuntu-20.04'
displayName: "kvmtest-t1-lag"
dependsOn:
- t1_lag_classic
- t1_lag_testbedv2
condition: always()
continueOnError: false
variables:
resultOfClassic: $[ dependencies.t1_lag_classic.result ]
resultOfTestbedV2: $[ dependencies.t1_lag_testbedv2.result ]
steps:
- script: |
if [ $(resultOfClassic) == "Succeeded" ] || [ $(resultOfTestbedV2) == "Succeeded" ]; then
echo "One or both of t1_lag_classic and t1_lag_testbedv2 passed."
exit 0
else
echo "Both t1_lag_classic and t1_lag_testbedv2 failed! Please check the detailed information."
exit 1
fi
- job:
pool: sonictest-sonic-t0
displayName: "kvmtest-t0-sonic"
timeoutInMinutes: 360
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
continueOnError: true
steps:
- template: .azure-pipelines/run-test-template.yml
parameters:
dut: vlab-02
tbname: vms-kvm-t0-64-32
ptf_name: ptf_vms6-1
tbtype: t0-sonic
vmtype: vsonic
- job:
pool: sonictest-ma
displayName: "kvmtest-multi-asic-t1-lag"
timeoutInMinutes: 240
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_CLASSICAL_TEST, 'YES'))
continueOnError: true
steps:
- template: .azure-pipelines/run-test-template.yml
parameters:
dut: vlab-08
tbname: vms-kvm-four-asic-t1-lag
ptf_name: ptf_vms6-4
tbtype: multi-asic-t1-lag-pr
image: sonic-4asic-vs.img.gz
- job: multi_asic_testbedv2
displayName: "kvmtest-multi-asic-t1-lag by TestbedV2"
- job: multi_asic_elastictest
displayName: "kvmtest-multi-asic-t1-lag by Elastictest"
pool: ubuntu-20.04
timeoutInMinutes: 240
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError: false
steps:
- template: .azure-pipelines/run-test-scheduler-template.yml
- template: .azure-pipelines/run-test-elastictest-template.yml@sonic-mgmt
parameters:
TOPOLOGY: t1-8-lag
TEST_SET: multi-asic-t1-lag
MIN_WORKER: $(MULTI_ASIC_INSTANCE_NUM)
MAX_WORKER: $(MULTI_ASIC_INSTANCE_NUM)
NUM_ASIC: 4
MGMT_BRANCH: "master"
- job: dualtor_testbedv2
- job: dualtor_elastictest
pool: ubuntu-20.04
displayName: "kvmtest-dualtor-t0 by TestbedV2"
displayName: "kvmtest-dualtor-t0 by Elastictest"
timeoutInMinutes: 240
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError: false
steps:
- template: .azure-pipelines/run-test-scheduler-template.yml
- template: .azure-pipelines/run-test-elastictest-template.yml@sonic-mgmt
parameters:
TOPOLOGY: dualtor
MIN_WORKER: $(T0_DUALTOR_INSTANCE_NUM)
MAX_WORKER: $(T0_DUALTOR_INSTANCE_NUM)
MGMT_BRANCH: "master"
COMMON_EXTRA_PARAMS: "--disable_loganalyzer "
- job: sonic_t0_testbedv2
displayName: "kvmtest-t0-sonic by TestbedV2"
- job: sonic_t0_elastictest
displayName: "kvmtest-t0-sonic by Elastictest"
pool: ubuntu-20.04
timeoutInMinutes: 240
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError: false
steps:
- template: .azure-pipelines/run-test-scheduler-template.yml
- template: .azure-pipelines/run-test-elastictest-template.yml@sonic-mgmt
parameters:
TOPOLOGY: t0-64-32
MIN_WORKER: $(T0_SONIC_INSTANCE_NUM)
MAX_WORKER: $(T0_SONIC_INSTANCE_NUM)
TEST_SET: t0-sonic
COMMON_EXTRA_PARAMS: "--neighbor_type=sonic --enable_macsec --macsec_profile=128_SCI,256_XPN_SCI"
MGMT_BRANCH: "master"
COMMON_EXTRA_PARAMS: "--neighbor_type=sonic "
VM_TYPE: vsonic
SPECIFIED_PARAMS: '{\"test_pretest.py\":[\"--completeness_level=confident\",\"--allow_recover\"],\"test_posttest.py\":[\"--completeness_level=confident\",\"--allow_recover\"]}'
- job: wan_testbedv2
displayName: "kvmtest-wan by TestbedV2"
pool: ubuntu-20.04
- job: dpu_elastictest
displayName: "kvmtest-dpu by Elastictest"
timeoutInMinutes: 240
condition: and(succeeded(), eq(variables.BUILD_IMG_RUN_TESTBEDV2_TEST, 'YES'))
continueOnError: false
pool: ubuntu-20.04
steps:
- template: .azure-pipelines/run-test-scheduler-template.yml
- template: .azure-pipelines/run-test-elastictest-template.yml@sonic-mgmt
parameters:
TOPOLOGY: wan-pub
MIN_WORKER: $(WAN_INSTANCE_NUM)
MAX_WORKER: $(WAN_INSTANCE_NUM)
COMMON_EXTRA_PARAMS: "--skip_sanity "
TOPOLOGY: dpu
MIN_WORKER: $(T0_SONIC_INSTANCE_NUM)
MAX_WORKER: $(T0_SONIC_INSTANCE_NUM)
KVM_IMAGE_BRANCH: "master"
MGMT_BRANCH: "master"
# - job: wan_elastictest
# displayName: "kvmtest-wan by Elastictest"
# pool: ubuntu-20.04
# timeoutInMinutes: 240
# continueOnError: false
# steps:
# - template: .azure-pipelines/run-test-scheduler-template.yml
# parameters:
# TOPOLOGY: wan-pub
# MIN_WORKER: $(WAN_INSTANCE_NUM)
# MAX_WORKER: $(WAN_INSTANCE_NUM)
# COMMON_EXTRA_PARAMS: "--skip_sanity "

View File

@ -31,9 +31,9 @@ set -x -e
CONFIGURED_ARCH=$([ -f .arch ] && cat .arch || echo amd64)
## docker engine version (with platform)
DOCKER_VERSION=5:20.10.14~3-0~debian-$IMAGE_DISTRO
CONTAINERD_IO_VERSION=1.5.11-1
LINUX_KERNEL_VERSION=5.10.0-18-2
DOCKER_VERSION=5:24.0.2-1~debian.12~$IMAGE_DISTRO
CONTAINERD_IO_VERSION=1.6.21-1
LINUX_KERNEL_VERSION=6.1.0-11-2
## Working directory to prepare the file system
FILESYSTEM_ROOT=./fsroot
@ -50,8 +50,8 @@ TRUSTED_GPG_DIR=$BUILD_TOOL_PATH/trusted.gpg.d
echo "Error: Invalid ONIE_IMAGE_PART_SIZE in onie image config file"
exit 1
}
[ -n "$ONIE_INSTALLER_PAYLOAD" ] || {
echo "Error: Invalid ONIE_INSTALLER_PAYLOAD in onie image config file"
[ -n "$INSTALLER_PAYLOAD" ] || {
echo "Error: Invalid INSTALLER_PAYLOAD in onie image config file"
exit 1
}
[ -n "$FILESYSTEM_SQUASHFS" ] || {
@ -59,23 +59,30 @@ TRUSTED_GPG_DIR=$BUILD_TOOL_PATH/trusted.gpg.d
exit 1
}
if [ "$IMAGE_TYPE" = "aboot" ]; then
TARGET_BOOTLOADER="aboot"
fi
## Check if not a last stage of RFS build
if [[ $RFS_SPLIT_LAST_STAGE != y ]]; then
## Prepare the file system directory
if [[ -d $FILESYSTEM_ROOT ]]; then
sudo rm -rf $FILESYSTEM_ROOT || die "Failed to clean chroot directory"
fi
mkdir -p $FILESYSTEM_ROOT
mkdir -p $FILESYSTEM_ROOT/$PLATFORM_DIR
mkdir -p $FILESYSTEM_ROOT/$PLATFORM_DIR/grub
touch $FILESYSTEM_ROOT/$PLATFORM_DIR/firsttime
bootloader_packages=""
if [ "$TARGET_BOOTLOADER" != "aboot" ]; then
mkdir -p $FILESYSTEM_ROOT/$PLATFORM_DIR/grub
bootloader_packages="grub2-common"
fi
## ensure proc is mounted
sudo mount proc /proc -t proc || true
## make / as a mountpoint in chroot env, needed by dockerd
pushd $FILESYSTEM_ROOT
sudo mount --bind . .
popd
## Build the host debian base system
echo '[INFO] Build host debian base system...'
TARGET_PATH=$TARGET_PATH scripts/build_debian_base_system.sh $CONFIGURED_ARCH $IMAGE_DISTRO $FILESYSTEM_ROOT
@ -111,9 +118,10 @@ sudo LANG=C chroot $FILESYSTEM_ROOT mount
[ -d $TRUSTED_GPG_DIR ] && [ ! -z "$(ls $TRUSTED_GPG_DIR)" ] && sudo cp $TRUSTED_GPG_DIR/* ${FILESYSTEM_ROOT}/etc/apt/trusted.gpg.d/
## Pointing apt to public apt mirrors and getting latest packages, needed for latest security updates
scripts/build_mirror_config.sh files/apt $CONFIGURED_ARCH $IMAGE_DISTRO
scripts/build_mirror_config.sh files/apt $CONFIGURED_ARCH $IMAGE_DISTRO
sudo cp files/apt/sources.list.$CONFIGURED_ARCH $FILESYSTEM_ROOT/etc/apt/sources.list
sudo cp files/apt/apt.conf.d/{81norecommends,apt-{clean,gzip-indexes,no-languages},no-check-valid-until,apt-multiple-retries} $FILESYSTEM_ROOT/etc/apt/apt.conf.d/
sudo cp files/apt/apt-retries-count $FILESYSTEM_ROOT/etc/apt/apt.conf.d/
sudo cp files/apt/apt.conf.d/{81norecommends,apt-{clean,gzip-indexes,no-languages},no-check-valid-until} $FILESYSTEM_ROOT/etc/apt/apt.conf.d/
## Note: set lang to prevent locale warnings in your chroot
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y update
@ -248,24 +256,19 @@ sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install apparmor
sudo cp files/image_config/ntp/ntp-apparmor $FILESYSTEM_ROOT/etc/apparmor.d/local/usr.sbin.ntpd
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl
if [[ $CONFIGURED_ARCH == armhf ]]; then
# update ssl ca certificates for secure pem
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT c_rehash
fi
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT curl -o /tmp/docker.asc -fsSL https://download.docker.com/linux/debian/gpg
sudo LANG=C chroot $FILESYSTEM_ROOT mv /tmp/docker.asc /etc/apt/trusted.gpg.d/
sudo LANG=C chroot $FILESYSTEM_ROOT add-apt-repository \
"deb [arch=$CONFIGURED_ARCH] https://download.docker.com/linux/debian $IMAGE_DISTRO stable"
sudo tee $FILESYSTEM_ROOT/etc/apt/sources.list.d/docker.list >/dev/null <<EOF
deb [arch=$CONFIGURED_ARCH] https://download.docker.com/linux/debian $IMAGE_DISTRO stable
EOF
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get update
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install docker-ce=${DOCKER_VERSION} docker-ce-cli=${DOCKER_VERSION} containerd.io=${CONTAINERD_IO_VERSION}
# Uninstall 'python3-gi' installed as part of 'software-properties-common' to remove debian version of 'PyGObject'
# pip version of 'PyGObject' will be installed during installation of 'sonic-host-services'
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y remove software-properties-common gnupg2 python3-gi
install_kubernetes () {
local ver="$1"
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT curl -fsSL \
@ -294,22 +297,13 @@ then
## Install Kubernetes master
echo '[INFO] Install kubernetes master'
install_kubernetes ${MASTER_KUBERNETES_VERSION}
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT curl -fsSL \
https://packages.microsoft.com/keys/microsoft.asc | \
sudo LANG=C chroot $FILESYSTEM_ROOT apt-key add -
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT curl -fsSL \
https://packages.microsoft.com/keys/msopentech.asc | \
sudo LANG=C chroot $FILESYSTEM_ROOT apt-key add -
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azurecore-debian $IMAGE_DISTRO main" | \
sudo tee $FILESYSTEM_ROOT/etc/apt/sources.list.d/azure.list
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get update
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install hyperv-daemons gnupg xmlstarlet
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install metricsext2
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install hyperv-daemons gnupg xmlstarlet parted netcat
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y remove gnupg
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT curl -o /tmp/cri-dockerd.deb -fsSL \
https://github.com/Mirantis/cri-dockerd/releases/download/v${MASTER_CRI_DOCKERD}/cri-dockerd_${MASTER_CRI_DOCKERD}.3-0.debian-${IMAGE_DISTRO}_amd64.deb
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install -f /tmp/cri-dockerd.deb
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get -y install -f /tmp/cri-dockerd.deb
sudo LANG=C chroot $FILESYSTEM_ROOT rm -f /tmp/cri-dockerd.deb
else
echo '[INFO] Skipping Install kubernetes master'
@ -375,7 +369,8 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in
gdisk \
sysfsutils \
squashfs-tools \
grub2-common \
$bootloader_packages \
rsyslog \
screen \
hping3 \
tcptraceroute \
@ -391,9 +386,9 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in
python3-pip \
python-is-python3 \
cron \
libprotobuf23 \
libprotobuf32 \
libgrpc++1 \
libgrpc10 \
libgrpc29 \
haveged \
fdisk \
gpg \
@ -402,11 +397,9 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in
linux-perf \
resolvconf \
lsof \
sysstat
# default rsyslog version is 8.2110.0 which has a bug on log rate limit,
# use backport version
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -t bullseye-backports -y install rsyslog
sysstat \
xxd \
zstd
# Have systemd create the auditd log directory
sudo mkdir -p ${FILESYSTEM_ROOT}/etc/systemd/system/auditd.service.d
@ -416,6 +409,10 @@ LogsDirectory=audit
LogsDirectoryMode=0750
EOF
# latest tcpdump control resource access with AppArmor.
# override tcpdump profile to allow tcpdump access TACACS config file.
sudo cp files/apparmor/usr.bin.tcpdump $FILESYSTEM_ROOT/etc/apparmor.d/local/usr.bin.tcpdump
if [[ $CONFIGURED_ARCH == amd64 ]]; then
## Pre-install the fundamental packages for amd64 (x86)
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install \
@ -464,6 +461,10 @@ fi
## Disable kexec supported reboot which was installed by default
sudo sed -i 's/LOAD_KEXEC=true/LOAD_KEXEC=false/' $FILESYSTEM_ROOT/etc/default/kexec
# Ensure that 'logrotate-config.service' is set as a dependency to start before 'logrotate.service'.
sudo mkdir $FILESYSTEM_ROOT/etc/systemd/system/logrotate.service.d
sudo cp files/image_config/logrotate/logrotateOverride.conf $FILESYSTEM_ROOT/etc/systemd/system/logrotate.service.d/logrotateOverride.conf
## Remove sshd host keys, and will regenerate on first sshd start
sudo rm -f $FILESYSTEM_ROOT/etc/ssh/ssh_host_*_key*
sudo cp files/sshd/host-ssh-keygen.sh $FILESYSTEM_ROOT/usr/local/bin/
@ -483,10 +484,14 @@ rm /files/etc/ssh/sshd_config/ClientAliveInterval
rm /files/etc/ssh/sshd_config/ClientAliveCountMax
touch /files/etc/ssh/sshd_config/EmptyLineHack
rename /files/etc/ssh/sshd_config/EmptyLineHack ""
set /files/etc/ssh/sshd_config/ClientAliveInterval 900
set /files/etc/ssh/sshd_config/ClientAliveInterval 300
set /files/etc/ssh/sshd_config/ClientAliveCountMax 0
ins #comment before /files/etc/ssh/sshd_config/ClientAliveInterval
set /files/etc/ssh/sshd_config/#comment[following-sibling::*[1][self::ClientAliveInterval]] "Close inactive client sessions after 15 minutes"
set /files/etc/ssh/sshd_config/#comment[following-sibling::*[1][self::ClientAliveInterval]] "Close inactive client sessions after 5 minutes"
rm /files/etc/ssh/sshd_config/MaxAuthTries
set /files/etc/ssh/sshd_config/MaxAuthTries 3
rm /files/etc/ssh/sshd_config/Banner
set /files/etc/ssh/sshd_config/Banner /etc/issue
rm /files/etc/ssh/sshd_config/LogLevel
set /files/etc/ssh/sshd_config/LogLevel VERBOSE
save
@ -524,20 +529,21 @@ done < files/image_config/sysctl/sysctl-net.conf
sudo augtool --autosave "$sysctl_net_cmd_string" -r $FILESYSTEM_ROOT
# Upgrade pip via PyPI and uninstall the Debian version
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install --upgrade pip
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python3-pip
# Specify that we want to explicitly install Python packages into the system environment, and risk breakages
sudo cp files/image_config/pip/pip.conf $FILESYSTEM_ROOT/etc/pip.conf
# For building Python packages
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'setuptools==49.6.00'
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'wheel==0.35.1'
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install python3-setuptools python3-wheel
# docker Python API package is needed by Ansible docker module as well as some SONiC applications
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'docker==5.0.3'
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'docker==6.1.1'
# Install scapy
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'scapy==2.4.4'
# The option --no-build-isolation can be removed when upgrading PyYAML to 6.0.1
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip3 install 'PyYAML==5.4.1' --no-build-isolation
## Note: keep pip installed for maintainance purpose
# Install GCC, needed for building/installing some Python packages
@ -560,32 +566,27 @@ sudo cp files/dhcp/sethostname6 $FILESYSTEM_ROOT/etc/dhcp/dhclient-exit-hooks.d/
sudo cp files/dhcp/graphserviceurl $FILESYSTEM_ROOT/etc/dhcp/dhclient-exit-hooks.d/
sudo cp files/dhcp/snmpcommunity $FILESYSTEM_ROOT/etc/dhcp/dhclient-exit-hooks.d/
sudo cp files/dhcp/vrf $FILESYSTEM_ROOT/etc/dhcp/dhclient-exit-hooks.d/
if [ -f files/image_config/ntp/ntp ]; then
sudo cp ./files/image_config/ntp/ntp $FILESYSTEM_ROOT/etc/init.d/
if [ -f files/image_config/ntp/ntpsec ]; then
sudo cp ./files/image_config/ntp/ntpsec $FILESYSTEM_ROOT/etc/init.d/
fi
if [ -f files/image_config/ntp/ntp-systemd-wrapper ]; then
sudo mkdir -p $FILESYSTEM_ROOT/usr/lib/ntp/
sudo cp ./files/image_config/ntp/ntp-systemd-wrapper $FILESYSTEM_ROOT/usr/lib/ntp/
sudo cp ./files/image_config/ntp/ntp-systemd-wrapper $FILESYSTEM_ROOT/usr/libexec/ntpsec/
fi
## Version file
## Version file part 1
sudo mkdir -p $FILESYSTEM_ROOT/etc/sonic
if [ -f files/image_config/sonic_release ]; then
sudo cp files/image_config/sonic_release $FILESYSTEM_ROOT/etc/sonic/
fi
export build_version="${SONIC_IMAGE_VERSION}"
export debian_version="$(cat $FILESYSTEM_ROOT/etc/debian_version)"
export kernel_version="${kversion}"
export asic_type="${sonic_asic_platform}"
export asic_subtype="${TARGET_MACHINE}"
export commit_id="$(git rev-parse --short HEAD)"
export branch="$(git rev-parse --abbrev-ref HEAD)"
export release="$(if [ -f $FILESYSTEM_ROOT/etc/sonic/sonic_release ]; then cat $FILESYSTEM_ROOT/etc/sonic/sonic_release; fi)"
export build_date="$(date -u)"
export build_number="${BUILD_NUMBER:-0}"
export built_by="$USER@$BUILD_HOSTNAME"
j2 files/build_templates/sonic_version.yml.j2 | sudo tee $FILESYSTEM_ROOT/etc/sonic/sonic_version.yml
# Default users info
export password_expire="$( [[ "$CHANGE_DEFAULT_PASSWORD" == "y" ]] && echo true || echo false )"
export username="${USERNAME}"
export password="$(sudo grep ^${USERNAME} $FILESYSTEM_ROOT/etc/shadow | cut -d: -f2)"
j2 files/build_templates/default_users.json.j2 | sudo tee $FILESYSTEM_ROOT/etc/sonic/default_users.json
sudo LANG=c chroot $FILESYSTEM_ROOT chmod 600 /etc/sonic/default_users.json
sudo LANG=c chroot $FILESYSTEM_ROOT chown root:shadow /etc/sonic/default_users.json
## Copy over clean-up script
sudo cp ./files/scripts/core_cleanup.py $FILESYSTEM_ROOT/usr/bin/core_cleanup.py
@ -599,6 +600,60 @@ if [[ ! -f './asic_config_checksum' ]]; then
fi
sudo cp ./asic_config_checksum $FILESYSTEM_ROOT/etc/sonic/asic_config_checksum
## Check if not a last stage of RFS build
fi
if [[ $RFS_SPLIT_FIRST_STAGE == y ]]; then
echo '[INFO] Finished with RFS first stage'
echo '[INFO] Umount all'
## Display all process details access /proc
sudo LANG=C chroot $FILESYSTEM_ROOT fuser -vm /proc
## Kill the processes
sudo LANG=C chroot $FILESYSTEM_ROOT fuser -km /proc || true
## Wait fuser fully kill the processes
sudo timeout 15s bash -c 'until LANG=C chroot $0 umount /proc; do sleep 1; done' $FILESYSTEM_ROOT || true
sudo rm -f $TARGET_PATH/$RFS_SQUASHFS_NAME
sudo mksquashfs $FILESYSTEM_ROOT $TARGET_PATH/$RFS_SQUASHFS_NAME -Xcompression-level 1
exit 0
fi
if [[ $RFS_SPLIT_LAST_STAGE == y ]]; then
echo '[INFO] RFS build: second stage'
## ensure proc is mounted
sudo mount proc /proc -t proc || true
sudo fuser -vm $FILESYSTEM_ROOT || true
sudo rm -rf $FILESYSTEM_ROOT
sudo unsquashfs -d $FILESYSTEM_ROOT $TARGET_PATH/$RFS_SQUASHFS_NAME
## make / as a mountpoint in chroot env, needed by dockerd
pushd $FILESYSTEM_ROOT
sudo mount --bind . .
popd
trap_push 'sudo LANG=C chroot $FILESYSTEM_ROOT umount /proc || true'
sudo LANG=C chroot $FILESYSTEM_ROOT mount proc /proc -t proc
fi
## Version file part 2
export build_version="${SONIC_IMAGE_VERSION}"
export debian_version="$(cat $FILESYSTEM_ROOT/etc/debian_version)"
export kernel_version="${kversion}"
export asic_type="${sonic_asic_platform}"
export asic_subtype="${TARGET_MACHINE}"
export commit_id="$(git rev-parse --short HEAD)"
export branch="$(git rev-parse --abbrev-ref HEAD)"
export release="$(if [ -f $FILESYSTEM_ROOT/etc/sonic/sonic_release ]; then cat $FILESYSTEM_ROOT/etc/sonic/sonic_release; fi)"
export build_date="$(date -u)"
export build_number="${BUILD_NUMBER:-0}"
export built_by="$USER@$BUILD_HOSTNAME"
export sonic_os_version="${SONIC_OS_VERSION}"
j2 files/build_templates/sonic_version.yml.j2 | sudo tee $FILESYSTEM_ROOT/etc/sonic/sonic_version.yml
if [ -f sonic_debian_extension.sh ]; then
./sonic_debian_extension.sh $FILESYSTEM_ROOT $PLATFORM_DIR $IMAGE_DISTRO
fi
@ -633,11 +688,15 @@ then
fi
## Set FIPS runtime default option
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c "mkdir -p /etc/fips"
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c "echo 0 > /etc/fips/fips_enable"
# #################
# secure boot
# secure boot
# #################
if [[ $SECURE_UPGRADE_MODE == 'dev' || $SECURE_UPGRADE_MODE == "prod" && $SONIC_ENABLE_SECUREBOOT_SIGNATURE != 'y' ]]; then
# note: SONIC_ENABLE_SECUREBOOT_SIGNATURE is a feature that signing just kernel,
# note: SONIC_ENABLE_SECUREBOOT_SIGNATURE is a feature that signing just kernel,
# SECURE_UPGRADE_MODE is signing all the boot component including kernel.
# its required to do not enable both features together to avoid conflicts.
echo "Secure Boot support build stage: Starting .."
@ -646,14 +705,14 @@ if [[ $SECURE_UPGRADE_MODE == 'dev' || $SECURE_UPGRADE_MODE == "prod" && $SONIC_
sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y install \
shim-unsigned \
grub-efi
if [ ! -f $SECURE_UPGRADE_DEV_SIGNING_CERT ]; then
echo "Error: SONiC SECURE_UPGRADE_DEV_SIGNING_CERT=$SECURE_UPGRADE_DEV_SIGNING_CERT key missing"
if [ ! -f $SECURE_UPGRADE_SIGNING_CERT ]; then
echo "Error: SONiC SECURE_UPGRADE_SIGNING_CERT=$SECURE_UPGRADE_SIGNING_CERT key missing"
exit 1
fi
if [[ $SECURE_UPGRADE_MODE == 'dev' ]]; then
# development signing & verification
# development signing & verification
if [ ! -f $SECURE_UPGRADE_DEV_SIGNING_KEY ]; then
echo "Error: SONiC SECURE_UPGRADE_DEV_SIGNING_KEY=$SECURE_UPGRADE_DEV_SIGNING_KEY key missing"
@ -663,27 +722,31 @@ if [[ $SECURE_UPGRADE_MODE == 'dev' || $SECURE_UPGRADE_MODE == "prod" && $SONIC_
sudo ./scripts/signing_secure_boot_dev.sh -a $CONFIGURED_ARCH \
-r $FILESYSTEM_ROOT \
-l $LINUX_KERNEL_VERSION \
-c $SECURE_UPGRADE_DEV_SIGNING_CERT \
-c $SECURE_UPGRADE_SIGNING_CERT \
-p $SECURE_UPGRADE_DEV_SIGNING_KEY
elif [[ $SECURE_UPGRADE_MODE == "prod" ]]; then
# Here Vendor signing should be implemented
OUTPUT_SEC_BOOT_DIR=$FILESYSTEM_ROOT/boot
if [ ! -f $SECURE_UPGRADE_PROD_SIGNING_TOOL ]; then
echo "Error: SONiC SECURE_UPGRADE_PROD_SIGNING_TOOL=$SECURE_UPGRADE_PROD_SIGNING_TOOL script missing"
if [ ! -f $sonic_su_prod_signing_tool ]; then
echo "Error: SONiC sonic_su_prod_signing_tool=$sonic_su_prod_signing_tool script missing"
exit 1
fi
sudo $SECURE_UPGRADE_PROD_SIGNING_TOOL $CONFIGURED_ARCH $FILESYSTEM_ROOT $LINUX_KERNEL_VERSION $OUTPUT_SEC_BOOT_DIR
sudo $sonic_su_prod_signing_tool -a $CONFIGURED_ARCH \
-r $FILESYSTEM_ROOT \
-l $LINUX_KERNEL_VERSION \
-o $OUTPUT_SEC_BOOT_DIR \
$SECURE_UPGRADE_PROD_TOOL_ARGS
# verifying all EFI files and kernel modules in $OUTPUT_SEC_BOOT_DIR
sudo ./scripts/secure_boot_signature_verification.sh -e $OUTPUT_SEC_BOOT_DIR \
-c $SECURE_UPGRADE_DEV_SIGNING_CERT \
-c $SECURE_UPGRADE_SIGNING_CERT \
-k $FILESYSTEM_ROOT
# verifying vmlinuz file.
sudo ./scripts/secure_boot_signature_verification.sh -e $FILESYSTEM_ROOT/boot/vmlinuz-${LINUX_KERNEL_VERSION}-${CONFIGURED_ARCH} \
-c $SECURE_UPGRADE_DEV_SIGNING_CERT \
-c $SECURE_UPGRADE_SIGNING_CERT \
-k $FILESYSTEM_ROOT
fi
echo "Secure Boot support build stage: END."
@ -694,14 +757,27 @@ sudo chroot $FILESYSTEM_ROOT update-initramfs -u
## Convert initrd image to u-boot format
if [[ $TARGET_BOOTLOADER == uboot ]]; then
INITRD_FILE=initrd.img-${LINUX_KERNEL_VERSION}-${CONFIGURED_ARCH}
KERNEL_FILE=vmlinuz-${LINUX_KERNEL_VERSION}-${CONFIGURED_ARCH}
if [[ $CONFIGURED_ARCH == armhf ]]; then
INITRD_FILE=initrd.img-${LINUX_KERNEL_VERSION}-armmp
sudo LANG=C chroot $FILESYSTEM_ROOT mkimage -A arm -O linux -T ramdisk -C gzip -d /boot/$INITRD_FILE /boot/u${INITRD_FILE}
## Overwriting the initrd image with uInitrd
sudo LANG=C chroot $FILESYSTEM_ROOT mv /boot/u${INITRD_FILE} /boot/$INITRD_FILE
elif [[ $CONFIGURED_ARCH == arm64 ]]; then
sudo cp -v $PLATFORM_DIR/${sonic_asic_platform}-${CONFIGURED_ARCH}/sonic_fit.its $FILESYSTEM_ROOT/boot/
sudo LANG=C chroot $FILESYSTEM_ROOT mkimage -f /boot/sonic_fit.its /boot/sonic_${CONFIGURED_ARCH}.fit
if [[ $CONFIGURED_PLATFORM == pensando ]]; then
## copy device tree file into boot (XXX: need to compile dtb from dts)
sudo cp -v $PLATFORM_DIR/pensando/elba-asic-psci.dtb $FILESYSTEM_ROOT/boot/
## make kernel as gzip file
sudo LANG=C chroot $FILESYSTEM_ROOT gzip /boot/${KERNEL_FILE}
sudo LANG=C chroot $FILESYSTEM_ROOT mv /boot/${KERNEL_FILE}.gz /boot/${KERNEL_FILE}
## Convert initrd image to u-boot format
sudo LANG=C chroot $FILESYSTEM_ROOT mkimage -A arm64 -O linux -T ramdisk -C gzip -d /boot/$INITRD_FILE /boot/u${INITRD_FILE}
## Overwriting the initrd image with uInitrd
sudo LANG=C chroot $FILESYSTEM_ROOT mv /boot/u${INITRD_FILE} /boot/$INITRD_FILE
else
sudo cp -v $PLATFORM_DIR/${sonic_asic_platform}-${CONFIGURED_ARCH}/sonic_fit.its $FILESYSTEM_ROOT/boot/
sudo LANG=C chroot $FILESYSTEM_ROOT mkimage -f /boot/sonic_fit.its /boot/sonic_${CONFIGURED_ARCH}.fit
fi
fi
fi
@ -736,8 +812,7 @@ sudo LANG=C chroot $FILESYSTEM_ROOT fuser -vm /proc
## Kill the processes
sudo LANG=C chroot $FILESYSTEM_ROOT fuser -km /proc || true
## Wait fuser fully kill the processes
sleep 15
sudo LANG=C chroot $FILESYSTEM_ROOT umount /proc || true
sudo timeout 15s bash -c 'until LANG=C chroot $0 umount /proc; do sleep 1; done' $FILESYSTEM_ROOT || true
## Prepare empty directory to trigger mount move in initramfs-tools/mount_loop_root, implemented by patching
sudo mkdir $FILESYSTEM_ROOT/host
@ -753,7 +828,7 @@ if [[ "$CHANGE_DEFAULT_PASSWORD" == "y" ]]; then
fi
## Compress most file system into squashfs file
sudo rm -f $ONIE_INSTALLER_PAYLOAD $FILESYSTEM_SQUASHFS
sudo rm -f $INSTALLER_PAYLOAD $FILESYSTEM_SQUASHFS
## Output the file system total size for diag purpose
## Note: -x to skip directories on different file systems, such as /proc
sudo du -hsx $FILESYSTEM_ROOT
@ -763,8 +838,22 @@ sudo mkdir -p $FILESYSTEM_ROOT/var/lib/docker
sudo rm -f $FILESYSTEM_ROOT/etc/resolvconf/resolv.conf.d/original
sudo cp files/image_config/resolv-config/resolv.conf.head $FILESYSTEM_ROOT/etc/resolvconf/resolv.conf.d/head
## Optimize filesystem size
if [ "$BUILD_REDUCE_IMAGE_SIZE" = "y" ]; then
sudo scripts/build-optimize-fs-size.py "$FILESYSTEM_ROOT" \
--image-type "$IMAGE_TYPE" \
--hardlinks var/lib/docker \
--hardlinks usr/share/sonic/device \
--remove-docs \
--remove-mans \
--remove-licenses
fi
sudo mksquashfs $FILESYSTEM_ROOT $FILESYSTEM_SQUASHFS -comp zstd -b 1M -e boot -e var/lib/docker -e $PLATFORM_DIR
## Reduce /boot permission
sudo chmod -R go-wx $FILESYSTEM_ROOT/boot
# Ensure admin gid is 1000
gid_user=$(sudo LANG=C chroot $FILESYSTEM_ROOT id -g $USERNAME) || gid_user="none"
if [ "${gid_user}" != "1000" ]; then
@ -784,5 +873,5 @@ fi
pushd $FILESYSTEM_ROOT && sudo tar -I $GZ_COMPRESS_PROGRAM -cf $OLDPWD/$FILESYSTEM_DOCKERFS -C ${DOCKERFS_PATH}var/lib/docker .; popd
## Compress together with /boot, /var/lib/docker and $PLATFORM_DIR as an installer payload zip file
pushd $FILESYSTEM_ROOT && sudo tar -I $GZ_COMPRESS_PROGRAM -cf platform.tar.gz -C $PLATFORM_DIR . && sudo zip -n .gz $OLDPWD/$ONIE_INSTALLER_PAYLOAD -r boot/ platform.tar.gz; popd
sudo zip -g -n .squashfs:.gz $ONIE_INSTALLER_PAYLOAD $FILESYSTEM_SQUASHFS $FILESYSTEM_DOCKERFS
pushd $FILESYSTEM_ROOT && sudo tar -I $GZ_COMPRESS_PROGRAM -cf platform.tar.gz -C $PLATFORM_DIR . && sudo zip -n .gz $OLDPWD/$INSTALLER_PAYLOAD -r boot/ platform.tar.gz; popd
sudo zip -g -n .squashfs:.gz $INSTALLER_PAYLOAD $FILESYSTEM_SQUASHFS $FILESYSTEM_DOCKERFS

View File

@ -18,8 +18,8 @@ fi
echo "Error: Invalid ONIE_IMAGE_PART_SIZE in onie image config file"
exit 1
}
[ -n "$ONIE_INSTALLER_PAYLOAD" ] || {
echo "Error: Invalid ONIE_INSTALLER_PAYLOAD in onie image config file"
[ -n "$INSTALLER_PAYLOAD" ] || {
echo "Error: Invalid INSTALLER_PAYLOAD in onie image config file"
exit 1
}
@ -86,7 +86,7 @@ generate_onie_installer_image()
## Note: Don't leave blank between lines. It is single line command.
./onie-mk-demo.sh $CONFIGURED_ARCH $TARGET_MACHINE $TARGET_PLATFORM-$TARGET_MACHINE-$ONIEIMAGE_VERSION \
installer platform/$TARGET_MACHINE/platform.conf $output_file OS $IMAGE_VERSION $ONIE_IMAGE_PART_SIZE \
$ONIE_INSTALLER_PAYLOAD
$INSTALLER_PAYLOAD $SECURE_UPGRADE_SIGNING_CERT $SECURE_UPGRADE_DEV_SIGNING_KEY
}
# Generate asic-specific device list
@ -139,7 +139,11 @@ elif [ "$IMAGE_TYPE" = "raw" ]; then
## Run the installer
## The 'build' install mode of the installer is used to generate this dump.
sudo chmod a+x $tmp_output_onie_image
sudo ./$tmp_output_onie_image
sudo ./$tmp_output_onie_image || {
## Failure during 'build' install mode of the installer results in an incomplete raw image.
## Delete the incomplete raw image.
sudo rm -f $OUTPUT_RAW_IMAGE
}
rm $tmp_output_onie_image
[ -r $OUTPUT_RAW_IMAGE ] || {
@ -147,15 +151,7 @@ elif [ "$IMAGE_TYPE" = "raw" ]; then
exit 1
}
$GZ_COMPRESS_PROGRAM $OUTPUT_RAW_IMAGE
[ -r $OUTPUT_RAW_IMAGE.gz ] || {
echo "Error : $GZ_COMPRESS_PROGRAM $OUTPUT_RAW_IMAGE failed!"
exit 1
}
mv $OUTPUT_RAW_IMAGE.gz $OUTPUT_RAW_IMAGE
echo "The compressed raw image is in $OUTPUT_RAW_IMAGE"
echo "The raw image is in $OUTPUT_RAW_IMAGE"
elif [ "$IMAGE_TYPE" = "kvm" ]; then
@ -179,7 +175,7 @@ elif [ "$IMAGE_TYPE" = "aboot" ]; then
sudo rm -f $OUTPUT_ABOOT_IMAGE
sudo rm -f $ABOOT_BOOT_IMAGE
## Add main payload
cp $ONIE_INSTALLER_PAYLOAD $OUTPUT_ABOOT_IMAGE
cp $INSTALLER_PAYLOAD $OUTPUT_ABOOT_IMAGE
## Add Aboot boot0 file
j2 -f env files/Aboot/boot0.j2 ./onie-image.conf > files/Aboot/boot0
sed -i -e "s/%%IMAGE_VERSION%%/$IMAGE_VERSION/g" files/Aboot/boot0
@ -202,12 +198,12 @@ elif [ "$IMAGE_TYPE" = "aboot" ]; then
zip -g $OUTPUT_ABOOT_IMAGE .platforms_asic
if [ "$ENABLE_FIPS" = "y" ]; then
echo "sonic_fips=1" > kernel-cmdline
echo "sonic_fips=1" >> kernel-cmdline-append
else
echo "sonic_fips=0" > kernel-cmdline
echo "sonic_fips=0" >> kernel-cmdline-append
fi
zip -g $OUTPUT_ABOOT_IMAGE kernel-cmdline
rm kernel-cmdline
zip -g $OUTPUT_ABOOT_IMAGE kernel-cmdline-append
rm kernel-cmdline-append
zip -g $OUTPUT_ABOOT_IMAGE $ABOOT_BOOT_IMAGE
rm $ABOOT_BOOT_IMAGE
@ -217,6 +213,38 @@ elif [ "$IMAGE_TYPE" = "aboot" ]; then
[ -f "$CA_CERT" ] && cp "$CA_CERT" "$TARGET_CA_CERT"
./scripts/sign_image.sh -i "$OUTPUT_ABOOT_IMAGE" -k "$SIGNING_KEY" -c "$SIGNING_CERT" -a "$TARGET_CA_CERT"
fi
elif [ "$IMAGE_TYPE" = "dsc" ]; then
echo "Build DSC installer"
dsc_installer_dir=files/dsc
dsc_installer=$dsc_installer_dir/install_debian
dsc_installer_manifest=$dsc_installer_dir/MANIFEST
mkdir -p `dirname $OUTPUT_DSC_IMAGE`
sudo rm -f $OUTPUT_DSC_IMAGE
source ./onie-image.conf
j2 $dsc_installer.j2 > $dsc_installer
export installer_sha=$(sha512sum "$dsc_installer" | awk '{print $1}')
export build_date=$(date -u)
export build_user=$(id -un)
export installer_payload_sha=$(sha512sum "$INSTALLER_PAYLOAD" | awk '{print $1}')
j2 $dsc_installer_manifest.j2 > $dsc_installer_manifest
cp $INSTALLER_PAYLOAD $dsc_installer_dir
tar cf $OUTPUT_DSC_IMAGE -C files/dsc $(basename $dsc_installer_manifest) $INSTALLER_PAYLOAD $(basename $dsc_installer)
echo "Build ONIE installer"
mkdir -p `dirname $OUTPUT_ONIE_IMAGE`
sudo rm -f $OUTPUT_ONIE_IMAGE
generate_device_list "./installer/platforms_asic"
generate_onie_installer_image
else
echo "Error: Non supported image type $IMAGE_TYPE"
exit 1

View File

@ -1,7 +1,17 @@
{
"chassis": {
"name": "DCS-7050QX-32",
"components": [],
"components": [
{
"name": "Scd(addr=0000:04:00.0)"
},
{
"name": "Ucd90120A(addr=6-004e)"
},
{
"name": "Ucd90160(addr=10-004e)"
}
],
"fans": [
{
"name": "fan1"
@ -53,37 +63,43 @@
"psus": [
{
"name": "psu1",
"fans": []
"fans": [
{
"name": "psu1/1",
"speed": {
"controllable": false
}
}
]
},
{
"name": "psu2",
"fans": []
"fans": [
{
"name": "psu2/1",
"speed": {
"controllable": false
}
}
]
}
],
"thermals": [
{
"name": "Cpu temp sensor"
"name": "Cpu temp sensor",
"controllable": false
},
{
"name": "Board sensor"
"name": "Board sensor",
"controllable": false
},
{
"name": "Front-panel temp sensor"
"name": "Front-panel temp sensor",
"controllable": false
},
{
"name": "Rear temp sensor"
},
{
"name": "Power supply 1 inlet temp sensor"
},
{
"name": "Power supply 1 internal sensor"
},
{
"name": "Power supply 2 inlet temp sensor"
},
{
"name": "Power supply 2 internal sensor"
"name": "Rear temp sensor",
"controllable": false
}
],
"sfps": [

View File

@ -1,144 +0,0 @@
{
"interfaces": {
"Ethernet0": {
"default_brkout_mode": "1x10G",
"port_type": "RJ45"
},
"Ethernet1": {
"default_brkout_mode": "1x10G",
"port_type": "RJ45"
},
"Ethernet2": {
"default_brkout_mode": "1x10G",
"port_type": "RJ45"
},
"Ethernet3": {
"default_brkout_mode": "1x1G",
"port_type": "RJ45"
},
"Ethernet4": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet8": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet12": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet16": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet20": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet24": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet28": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet32": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet36": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet40": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet44": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet48": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet52": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet56": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet60": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet64": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet68": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet72": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet76": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet80": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet84": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet88": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet92": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet96": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet100": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet104": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet108": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet112": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet116": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet120": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
},
"Ethernet124": {
"default_brkout_mode": "1x40G",
"port_type": "QSFP+"
}
}
}

View File

@ -1,36 +1,36 @@
# name lanes alias index
Ethernet0 9 Ethernet1 1
Ethernet1 10 Ethernet2 2
Ethernet2 11 Ethernet3 3
Ethernet3 12 Ethernet4 4
Ethernet4 13,14,15,16 Ethernet6/1 6
Ethernet8 17,18,19,20 Ethernet7/1 7
Ethernet12 21,22,23,24 Ethernet8/1 8
Ethernet16 29,30,31,32 Ethernet9/1 9
Ethernet20 25,26,27,28 Ethernet10/1 10
Ethernet24 33,34,35,36 Ethernet11/1 11
Ethernet28 37,38,39,40 Ethernet12/1 12
Ethernet32 45,46,47,48 Ethernet13/1 13
Ethernet36 41,42,43,44 Ethernet14/1 14
Ethernet40 49,50,51,52 Ethernet15/1 15
Ethernet44 53,54,55,56 Ethernet16/1 16
Ethernet48 69,70,71,72 Ethernet17/1 17
Ethernet52 65,66,67,68 Ethernet18/1 18
Ethernet56 73,74,75,76 Ethernet19/1 19
Ethernet60 77,78,79,80 Ethernet20/1 20
Ethernet64 93,94,95,96 Ethernet21/1 21
Ethernet68 89,90,91,92 Ethernet22/1 22
Ethernet72 97,98,99,100 Ethernet23/1 23
Ethernet76 101,102,103,104 Ethernet24/1 24
Ethernet80 109,110,111,112 Ethernet25/1 25
Ethernet84 105,106,107,108 Ethernet26/1 26
Ethernet88 121,122,123,124 Ethernet27/1 27
Ethernet92 125,126,127,128 Ethernet28/1 28
Ethernet96 61,62,63,64 Ethernet29 29
Ethernet100 57,58,59,60 Ethernet30 30
Ethernet104 81,82,83,84 Ethernet31 31
Ethernet108 85,86,87,88 Ethernet32 32
Ethernet112 117,118,119,120 Ethernet33 33
Ethernet116 113,114,115,116 Ethernet34 34
Ethernet120 1,2,3,4 Ethernet35 35
Ethernet124 5,6,7,8 Ethernet36 36
# name lanes alias index speed
Ethernet0 9 Ethernet1 1 10000
Ethernet1 10 Ethernet2 2 10000
Ethernet2 11 Ethernet3 3 10000
Ethernet3 12 Ethernet4 4 1000
Ethernet4 13,14,15,16 Ethernet6/1 6 40000
Ethernet8 17,18,19,20 Ethernet7/1 7 40000
Ethernet12 21,22,23,24 Ethernet8/1 8 40000
Ethernet16 29,30,31,32 Ethernet9/1 9 40000
Ethernet20 25,26,27,28 Ethernet10/1 10 40000
Ethernet24 33,34,35,36 Ethernet11/1 11 40000
Ethernet28 37,38,39,40 Ethernet12/1 12 40000
Ethernet32 45,46,47,48 Ethernet13/1 13 40000
Ethernet36 41,42,43,44 Ethernet14/1 14 40000
Ethernet40 49,50,51,52 Ethernet15/1 15 40000
Ethernet44 53,54,55,56 Ethernet16/1 16 40000
Ethernet48 69,70,71,72 Ethernet17/1 17 40000
Ethernet52 65,66,67,68 Ethernet18/1 18 40000
Ethernet56 73,74,75,76 Ethernet19/1 19 40000
Ethernet60 77,78,79,80 Ethernet20/1 20 40000
Ethernet64 93,94,95,96 Ethernet21/1 21 40000
Ethernet68 89,90,91,92 Ethernet22/1 22 40000
Ethernet72 97,98,99,100 Ethernet23/1 23 40000
Ethernet76 101,102,103,104 Ethernet24/1 24 40000
Ethernet80 109,110,111,112 Ethernet25/1 25 40000
Ethernet84 105,106,107,108 Ethernet26/1 26 40000
Ethernet88 121,122,123,124 Ethernet27/1 27 40000
Ethernet92 125,126,127,128 Ethernet28/1 28 40000
Ethernet96 61,62,63,64 Ethernet29 29 40000
Ethernet100 57,58,59,60 Ethernet30 30 40000
Ethernet104 81,82,83,84 Ethernet31 31 40000
Ethernet108 85,86,87,88 Ethernet32 32 40000
Ethernet112 117,118,119,120 Ethernet33 33 40000
Ethernet116 113,114,115,116 Ethernet34 34 40000
Ethernet120 1,2,3,4 Ethernet35 35 40000
Ethernet124 5,6,7,8 Ethernet36 36 40000

View File

@ -1,7 +1,23 @@
{
"chassis": {
"name": "DCS-7050QX-32S",
"components": [],
"components": [
{
"name": "Aboot()"
},
{
"name": "Scd(addr=0000:02:00.0)"
},
{
"name": "Ucd90120A(addr=4-004e)"
},
{
"name": "Ucd90120A(addr=8-004e)"
},
{
"name": "CrowSysCpld(addr=2-0023)"
}
],
"fans": [],
"fan_drawers": [
{
@ -40,46 +56,47 @@
"psus": [
{
"name": "psu1",
"fans": []
"fans": [
{
"name": "psu1/1",
"speed": {
"controllable": false
}
}
]
},
{
"name": "psu2",
"fans": []
"fans": [
{
"name": "psu2/1",
"speed": {
"controllable": false
}
}
]
}
],
"thermals": [
{
"name": "Cpu temp sensor"
"name": "Cpu temp sensor",
"controllable": false
},
{
"name": "Cpu board temp sensor"
"name": "Cpu board temp sensor",
"controllable": false
},
{
"name": "Back-panel temp sensor"
"name": "Back-panel temp sensor",
"controllable": false
},
{
"name": "Board Sensor"
"name": "Board Sensor",
"controllable": false
},
{
"name": "Front-panel temp sensor"
},
{
"name": "Power supply 1 hotspot sensor"
},
{
"name": "Power supply 1 inlet temp sensor"
},
{
"name": "Power supply 1 exhaust temp sensor"
},
{
"name": "Power supply 2 hotspot sensor"
},
{
"name": "Power supply 2 inlet temp sensor"
},
{
"name": "Power supply 2 exhaust temp sensor"
"name": "Front-panel temp sensor",
"controllable": false
}
],
"sfps": [
@ -201,6 +218,12 @@
"1x40G[10G]": [
"Ethernet5/1"
],
"3x10G(3)+1x1G(1)": [
"Ethernet1",
"Ethernet2",
"Ethernet3",
"Ethernet4"
],
"2x20G[10G]": [
"Ethernet5/1",
"Ethernet5/3"

View File

@ -1,16 +1,24 @@
{# Construct config.bcm to include additional soc properties per specific device metadata requirement #}
{%- set map_prio = '' -%}
{%- set pfcwd_sock = '' -%}
{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined and DEVICE_METADATA['localhost']['subtype'] is defined -%}
{%- set switch_subtype = DEVICE_METADATA['localhost']['subtype'] -%}
{%- if 'dualtor' in switch_subtype.lower() %}
{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%}
{%- endif %}
{%- endif %}
{%- if SYSTEM_DEFAULTS is defined and 'tunnel_qos_remap' in SYSTEM_DEFAULTS and SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled' -%}
{%- set pfcwd_sock =
'hybrid_pfc_deadlock_enable=1
pfc_deadlock_seq_control=1
sai_pfc_dlr_init_capability=1' -%}
{%- endif %}
sai_load_hw_config=/etc/bcm/flex/bcm56870_a0_premium_issu/b870.6.4.1/
l3_alpm_hit_skip=1
sai_adjust_acl_drop_in_rx_drop=1
sai_verify_incoming_chksum=0
{{ map_prio }}
{{ pfcwd_sock }}
host_as_route_disable=1
use_all_splithorizon_groups=1
riot_enable=1

View File

@ -1,16 +1,24 @@
{# Construct config.bcm to include additional soc properties per specific device metadata requirement #}
{%- set map_prio = '' -%}
{%- set pfcwd_sock = '' -%}
{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined and DEVICE_METADATA['localhost']['subtype'] is defined -%}
{%- set switch_subtype = DEVICE_METADATA['localhost']['subtype'] -%}
{%- if 'dualtor' in switch_subtype.lower() %}
{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%}
{%- endif %}
{%- endif %}
{%- if SYSTEM_DEFAULTS is defined and 'tunnel_qos_remap' in SYSTEM_DEFAULTS and SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled' -%}
{%- set pfcwd_sock =
'hybrid_pfc_deadlock_enable=1
pfc_deadlock_seq_control=1
sai_pfc_dlr_init_capability=1' -%}
{%- endif %}
sai_load_hw_config=/etc/bcm/flex/bcm56870_a0_premium_issu/b870.6.4.1/
l3_alpm_hit_skip=1
sai_adjust_acl_drop_in_rx_drop=1
sai_verify_incoming_chksum=0
{{ map_prio }}
{{ pfcwd_sock }}
host_as_route_disable=1
use_all_splithorizon_groups=1
riot_enable=1

View File

@ -152,11 +152,6 @@
id: '1466'
name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh)
Data Fabric: Device 18h; Function 6'
- bus: '00'
dev: '18'
fn: '7'
id: '0001'
name: 'Host bridge: Arastra Inc. Device 0001'
- bus: '01'
dev: '00'
fn: '0'

View File

@ -152,11 +152,6 @@
id: '1466'
name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh)
Data Fabric: Device 18h; Function 6'
- bus: '00'
dev: '18'
fn: '7'
id: '0001'
name: 'Host bridge: Arastra Inc. Device 0001'
- bus: '01'
dev: '00'
fn: '0'

View File

@ -64,11 +64,6 @@
id: '1578'
name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Carrizo Platform
Security Processor'
- bus: '00'
dev: 09
fn: '0'
id: '0001'
name: 'Host bridge: Arastra Inc. Device 0001'
- bus: '00'
dev: 09
fn: '2'

View File

@ -64,11 +64,6 @@
id: '1578'
name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Carrizo Platform
Security Processor'
- bus: '00'
dev: 09
fn: '0'
id: '0001'
name: 'Host bridge: Arastra Inc. Device 0001'
- bus: '00'
dev: 09
fn: '2'

View File

@ -449,3 +449,4 @@ serdes_preemphasis_109=0x145c00
mmu_init_config="MSFT-TH-Tier1"
phy_an_lt_msft=1
phy_unlos_msft=1

View File

@ -1,6 +1,6 @@
{
"chassis": {
"DCS-7050CX3-32S": {
"DCS-7060CX-32S": {
"component": {
"Aboot()": {},
"Scd(addr=0000:02:00.0)": {},

View File

@ -16,6 +16,8 @@ miim_intr_enable.0=0
module_64ports.0=1
multicast_l2_range.0=511
oversubscribe_mode=1
sai_tunnel_global_sip_mask_enable=1
bcm_tunnel_term_compatible_mode=1
parity_correction=1
parity_enable=1
pbmp_xport_xe.0=0x3ffffffffffffffffffffffffffffffffffffffe

View File

@ -186,11 +186,6 @@
id: 6f37
name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon
D R3 QPI Link 0/1 (rev 03)'
- bus: ff
dev: 0b
fn: '3'
id: '0001'
name: 'System peripheral: Arastra Inc. Device 0001 (rev 03)'
- bus: ff
dev: 0c
fn: '0'

View File

@ -16,6 +16,8 @@ miim_intr_enable.0=0
module_64ports.0=1
multicast_l2_range.0=511
oversubscribe_mode=1
sai_tunnel_global_sip_mask_enable=1
bcm_tunnel_term_compatible_mode=1
parity_correction=1
parity_enable=1
pbmp_xport_xe.0=0x3ffffffffffffffffffffffffffffffffffffffe

View File

@ -0,0 +1,104 @@
{
"interfaces": {
"Ethernet0": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet8": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet16": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet24": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet32": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet40": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet48": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet56": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet64": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet72": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet80": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet88": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet96": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet104": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet112": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet120": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet128": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet136": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet144": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet152": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet160": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet168": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet176": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet184": {
"default_brkout_mode": "2x200G[100G,50G,40G,25G,10G]"
},
"Ethernet192": {
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
},
"Ethernet200": {
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
},
"Ethernet208": {
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
},
"Ethernet216": {
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
},
"Ethernet224": {
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
},
"Ethernet232": {
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
},
"Ethernet240": {
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
},
"Ethernet248": {
"default_brkout_mode": "4x100G[50G,40G,25G,10G]"
},
"Ethernet256": {
"default_brkout_mode": "1x10G",
"fec": "none"
}
}
}

View File

@ -0,0 +1 @@
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/th4-a7060dx5-32-200Gx48-100Gx32.config.bcm

View File

@ -0,0 +1,879 @@
# configuration yaml file
# device:
# <unit>:
# <table>:
# ?
# <key_fld_1>: <value>
# <key_fld_2>: <value>
# ...
# <key_fld_n>: <value>
# :
# <data_fld_1>: <value>
# <data_fld_2>: <value>
# ...
# <data_fld_n>: <value>
#
---
bcm_device:
0:
global:
pktio_mode: 1
vlan_flooding_l2mc_num_reserved: 0
ipv6_lpm_128b_enable: 1
shared_block_mask_section: uc_bc
skip_protocol_default_entries: 1
# LTSW uses value 1 for ALPM combined mode
l3_alpm_template: 1
l3_alpm_hit_skip: 1
sai_feat_tail_timestamp : 1
sai_field_group_auto_prioritize: 1
#l3_intf_vlan_split_egress for MTU at L3IF
l3_intf_vlan_split_egress : 1
# vxlan
l3_alpm_template: 1
riot_overlay_l3_egress_mem_size: 16384
riot_overlay_l3_intf_mem_size: 4096
l3_ecmp_member_first_lkup_mem_size: 12288
bcm_tunnel_term_compatible_mode: 1
shared_l2_tunnel: 1
sai_tunnel_support: 10
sai_tunnel_underlay_route_mode: 2
sai_tunnel_ecmp_sharing_mode: 0 # change to 2 if SAI_NEXT_HOP_GROUP_ATTR_LEVEL_1 used
# bfd
#bfd_enable: 1
#bfd_sha1_keys: 5
#bfd_num_sessions: 2048
#bfd_simple_password_keys: 5
#num_queues_pci: 47
#num_queues_uc0: 1
#bfd_feature_enable: 1
#bfd_use_endpoint_id_as_discriminator: 1
#bfd_tx_raw_ingress_enable: 1
#sai_eapp_config_file: "/usr/share/sonic/device/x86_64-broadcom_common/eapps/eapp_config.json"
---
device:
0:
PC_SERDES_CONFIG:
PKG_SWAP_BYPASS: 1
PC_PM_CORE:
?
PC_PM_ID: 1
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x67235401
TX_LANE_MAP: 0x2731465
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 2
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x31752064
TX_LANE_MAP: 0x76025314
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 3
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x67241503
TX_LANE_MAP: 0x13650274
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0x01
?
PC_PM_ID: 4
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x46025713
TX_LANE_MAP: 0x31650274
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 5
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x62713054
TX_LANE_MAP: 0x21703465
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0xd8
?
PC_PM_ID: 6
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x13460257
TX_LANE_MAP: 0x64137502
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 7
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x43512670
TX_LANE_MAP: 0x2571364
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 8
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x14270356
TX_LANE_MAP: 0x64237501
RX_POLARITY_FLIP: 0xfb
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 9
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x76140235
TX_LANE_MAP: 0x74036521
RX_POLARITY_FLIP: 0xc1
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 10
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x47125603
TX_LANE_MAP: 0x30451276
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 11
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x76041235
TX_LANE_MAP: 0x74036512
RX_POLARITY_FLIP: 0x40
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 12
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x27145603
TX_LANE_MAP: 0x21450376
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 13
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x2735146
TX_LANE_MAP: 0x3657421
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0xc8
?
PC_PM_ID: 14
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x47306521
TX_LANE_MAP: 0x12643075
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0x33
?
PC_PM_ID: 15
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x20157436
TX_LANE_MAP: 0x56237104
RX_POLARITY_FLIP: 0x08
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 16
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x14270356
TX_LANE_MAP: 0x76325014
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 49
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x56704312
TX_LANE_MAP: 0x32641570
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 50
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x21564073
TX_LANE_MAP: 0x50314762
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 51
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x36715402
TX_LANE_MAP: 0x32641075
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 52
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x51462073
TX_LANE_MAP: 0x5127634
RX_POLARITY_FLIP: 0x69
TX_POLARITY_FLIP: 0x08
?
PC_PM_ID: 53
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x73204651
TX_LANE_MAP: 0x32640175
RX_POLARITY_FLIP: 0x69
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 54
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x5134627
TX_LANE_MAP: 0x60137254
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 55
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x57420163
TX_LANE_MAP: 0x32651074
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 56
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x5134627
TX_LANE_MAP: 0x10524376
RX_POLARITY_FLIP: 0x05
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 57
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x73520146
TX_LANE_MAP: 0x31650274
RX_POLARITY_FLIP: 0x3d
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 58
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x16072354
TX_LANE_MAP: 0x51634270
RX_POLARITY_FLIP: 0x01
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 59
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x72530164
TX_LANE_MAP: 0x32506147
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 60
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x4371256
TX_LANE_MAP: 0x21673054
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0xcc
?
PC_PM_ID: 61
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x67241503
TX_LANE_MAP: 0x12730465
RX_POLARITY_FLIP: 0x20
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 62
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x73625140
TX_LANE_MAP: 0x12640573
RX_POLARITY_FLIP: 0x00
TX_POLARITY_FLIP: 0x00
?
PC_PM_ID: 63
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x23674015
TX_LANE_MAP: 0x57206143
RX_POLARITY_FLIP: 0xff
TX_POLARITY_FLIP: 0xff
?
PC_PM_ID: 64
CORE_INDEX: 0
:
RX_LANE_MAP_AUTO: 0
TX_LANE_MAP_AUTO: 0
RX_POLARITY_FLIP_AUTO: 0
TX_POLARITY_FLIP_AUTO: 0
RX_LANE_MAP: 0x57314260
TX_LANE_MAP: 0x1735264
RX_POLARITY_FLIP: 0x10
TX_POLARITY_FLIP: 0x00
...
---
device:
0:
PC_PORT_PHYS_MAP:
?
PORT_ID: 0
:
PC_PHYS_PORT_ID: 0
?
PORT_ID: 1
:
PC_PHYS_PORT_ID: 1
?
PORT_ID: 2
:
PC_PHYS_PORT_ID: 3
?
PORT_ID: 5
:
PC_PHYS_PORT_ID: 5
?
PORT_ID: 6
:
PC_PHYS_PORT_ID: 7
?
PORT_ID: 9
:
PC_PHYS_PORT_ID: 9
?
PORT_ID: 10
:
PC_PHYS_PORT_ID: 11
?
PORT_ID: 13
:
PC_PHYS_PORT_ID: 13
?
PORT_ID: 14
:
PC_PHYS_PORT_ID: 15
?
PORT_ID: 17
:
PC_PHYS_PORT_ID: 17
?
PORT_ID: 18
:
PC_PHYS_PORT_ID: 19
?
PORT_ID: 21
:
PC_PHYS_PORT_ID: 21
?
PORT_ID: 22
:
PC_PHYS_PORT_ID: 23
?
PORT_ID: 25
:
PC_PHYS_PORT_ID: 25
?
PORT_ID: 26
:
PC_PHYS_PORT_ID: 27
?
PORT_ID: 29
:
PC_PHYS_PORT_ID: 29
?
PORT_ID: 30
:
PC_PHYS_PORT_ID: 31
?
PORT_ID: 33
:
PC_PHYS_PORT_ID: 259
?
PORT_ID: 34
:
PC_PHYS_PORT_ID: 33
?
PORT_ID: 35
:
PC_PHYS_PORT_ID: 35
?
PORT_ID: 38
:
PC_PHYS_PORT_ID: 37
?
PORT_ID: 39
:
PC_PHYS_PORT_ID: 39
?
PORT_ID: 42
:
PC_PHYS_PORT_ID: 41
?
PORT_ID: 43
:
PC_PHYS_PORT_ID: 43
?
PORT_ID: 46
:
PC_PHYS_PORT_ID: 45
?
PORT_ID: 47
:
PC_PHYS_PORT_ID: 47
?
PORT_ID: 50
:
PC_PHYS_PORT_ID: 258
?
PORT_ID: 51
:
PC_PHYS_PORT_ID: 49
?
PORT_ID: 52
:
PC_PHYS_PORT_ID: 51
?
PORT_ID: 55
:
PC_PHYS_PORT_ID: 53
?
PORT_ID: 56
:
PC_PHYS_PORT_ID: 55
?
PORT_ID: 59
:
PC_PHYS_PORT_ID: 57
?
PORT_ID: 60
:
PC_PHYS_PORT_ID: 59
?
PORT_ID: 63
:
PC_PHYS_PORT_ID: 61
?
PORT_ID: 64
:
PC_PHYS_PORT_ID: 63
?
PORT_ID: 67
:
PC_PHYS_PORT_ID: 260
?
PORT_ID: 204
:
PC_PHYS_PORT_ID: 193
?
PORT_ID: 205
:
PC_PHYS_PORT_ID: 195
?
PORT_ID: 208
:
PC_PHYS_PORT_ID: 197
?
PORT_ID: 209
:
PC_PHYS_PORT_ID: 199
?
PORT_ID: 212
:
PC_PHYS_PORT_ID: 201
?
PORT_ID: 213
:
PC_PHYS_PORT_ID: 203
?
PORT_ID: 216
:
PC_PHYS_PORT_ID: 205
?
PORT_ID: 217
:
PC_PHYS_PORT_ID: 207
?
PORT_ID: 221
:
PC_PHYS_PORT_ID: 209
?
PORT_ID: 222
:
PC_PHYS_PORT_ID: 211
?
PORT_ID: 225
:
PC_PHYS_PORT_ID: 213
?
PORT_ID: 226
:
PC_PHYS_PORT_ID: 215
?
PORT_ID: 229
:
PC_PHYS_PORT_ID: 217
?
PORT_ID: 230
:
PC_PHYS_PORT_ID: 219
?
PORT_ID: 233
:
PC_PHYS_PORT_ID: 221
?
PORT_ID: 234
:
PC_PHYS_PORT_ID: 223
?
PORT_ID: 237
:
PC_PHYS_PORT_ID: 265
?
PORT_ID: 238
:
PC_PHYS_PORT_ID: 225
?
PORT_ID: 239
:
PC_PHYS_PORT_ID: 226
?
PORT_ID: 240
:
PC_PHYS_PORT_ID: 227
?
PORT_ID: 241
:
PC_PHYS_PORT_ID: 228
?
PORT_ID: 242
:
PC_PHYS_PORT_ID: 229
?
PORT_ID: 243
:
PC_PHYS_PORT_ID: 230
?
PORT_ID: 244
:
PC_PHYS_PORT_ID: 231
?
PORT_ID: 245
:
PC_PHYS_PORT_ID: 232
?
PORT_ID: 246
:
PC_PHYS_PORT_ID: 233
?
PORT_ID: 247
:
PC_PHYS_PORT_ID: 234
?
PORT_ID: 248
:
PC_PHYS_PORT_ID: 235
?
PORT_ID: 249
:
PC_PHYS_PORT_ID: 236
?
PORT_ID: 250
:
PC_PHYS_PORT_ID: 237
?
PORT_ID: 251
:
PC_PHYS_PORT_ID: 238
?
PORT_ID: 252
:
PC_PHYS_PORT_ID: 239
?
PORT_ID: 253
:
PC_PHYS_PORT_ID: 240
?
PORT_ID: 255
:
PC_PHYS_PORT_ID: 241
?
PORT_ID: 256
:
PC_PHYS_PORT_ID: 242
?
PORT_ID: 257
:
PC_PHYS_PORT_ID: 243
?
PORT_ID: 258
:
PC_PHYS_PORT_ID: 244
?
PORT_ID: 259
:
PC_PHYS_PORT_ID: 245
?
PORT_ID: 260
:
PC_PHYS_PORT_ID: 246
?
PORT_ID: 261
:
PC_PHYS_PORT_ID: 247
?
PORT_ID: 262
:
PC_PHYS_PORT_ID: 248
?
PORT_ID: 263
:
PC_PHYS_PORT_ID: 249
?
PORT_ID: 264
:
PC_PHYS_PORT_ID: 250
?
PORT_ID: 265
:
PC_PHYS_PORT_ID: 251
?
PORT_ID: 266
:
PC_PHYS_PORT_ID: 252
?
PORT_ID: 267
:
PC_PHYS_PORT_ID: 253
?
PORT_ID: 268
:
PC_PHYS_PORT_ID: 254
?
PORT_ID: 269
:
PC_PHYS_PORT_ID: 255
?
PORT_ID: 270
:
PC_PHYS_PORT_ID: 256
...
---
device:
0:
PC_PORT:
?
PORT_ID: 0
:
&port_mode_10g
ENABLE: 1
SPEED: 10000
NUM_LANES: 1
?
PORT_ID: [[50, 50]]
:
ENABLE: 0
MAX_FRAME_SIZE: 9416
SPEED: 10000
NUM_LANES: 1
?
PORT_ID: [[1, 2],
[5, 6],
[9, 10],
[13, 14],
[17, 18],
[21, 22],
[25, 26],
[29, 30],
[34, 35],
[38, 39],
[42, 43],
[46, 47],
[51, 52],
[55, 56],
[59, 60],
[63, 64],
[204, 205],
[208, 209],
[212, 213],
[216, 217],
[221, 222],
[225, 226],
[229, 230],
[233, 234]]
:
ENABLE: 0
SPEED: 200000
NUM_LANES: 4
FEC_MODE: PC_FEC_RS544_2XN
MAX_FRAME_SIZE: 9416
?
PORT_ID: [[238, 241],
[242, 245],
[246, 249],
[250, 253],
[255, 258],
[259, 262],
[263, 266],
[267, 270]]
:
ENABLE: 0
SPEED: 100000
NUM_LANES: 2
FEC_MODE: PC_FEC_RS544
MAX_FRAME_SIZE: 9416
...
---
device:
0:
# Per pipe flex counter configuration
CTR_EFLEX_CONFIG:
CTR_ING_EFLEX_OPERMODE_PIPEUNIQUE: 0
CTR_EGR_EFLEX_OPERMODE_PIPEUNIQUE: 0
# Per pipe flex state configuration
#FLEX_STATE_CONFIG:
# FLEX_STATE_ING_OPERMODE_PIPEUNIQUE: 0
# FLEX_STATE_EGR_OPERMODE_PIPEUNIQUE: 1
# Lossy vs Lossless mode
TM_THD_CONFIG:
THRESHOLD_MODE: LOSSLESS
# IFP mode
FP_CONFIG:
FP_ING_OPERMODE: GLOBAL_PIPE_AWARE
...

View File

@ -0,0 +1,114 @@
#name lanes alias index speed fec
Ethernet0 1 Ethernet1/1 1 25000
Ethernet1 5 Ethernet1/2 1 25000
Ethernet2 3 Ethernet1/3 1 25000
Ethernet3 7 Ethernet1/4 1 25000
Ethernet8 9 Ethernet2/1 2 25000
Ethernet9 13 Ethernet2/2 2 25000
Ethernet10 11 Ethernet2/3 2 25000
Ethernet11 15 Ethernet2/4 2 25000
Ethernet16 17 Ethernet3/1 3 25000
Ethernet17 21 Ethernet3/2 3 25000
Ethernet18 19 Ethernet3/3 3 25000
Ethernet19 23 Ethernet3/4 3 25000
Ethernet24 25 Ethernet4/1 4 25000
Ethernet25 29 Ethernet4/2 4 25000
Ethernet26 27 Ethernet4/3 4 25000
Ethernet27 31 Ethernet4/4 4 25000
Ethernet32 33 Ethernet5/1 5 25000
Ethernet33 37 Ethernet5/2 5 25000
Ethernet34 35 Ethernet5/3 5 25000
Ethernet35 39 Ethernet5/4 5 25000
Ethernet40 41 Ethernet6/1 6 25000
Ethernet41 45 Ethernet6/2 6 25000
Ethernet42 43 Ethernet6/3 6 25000
Ethernet43 47 Ethernet6/4 6 25000
Ethernet48 49 Ethernet7/1 7 25000
Ethernet49 53 Ethernet7/2 7 25000
Ethernet50 51 Ethernet7/3 7 25000
Ethernet51 55 Ethernet7/4 7 25000
Ethernet56 57 Ethernet8/1 8 25000
Ethernet57 61 Ethernet8/2 8 25000
Ethernet58 59 Ethernet8/3 8 25000
Ethernet59 63 Ethernet8/4 8 25000
Ethernet64 65 Ethernet9/1 9 25000
Ethernet65 69 Ethernet9/2 9 25000
Ethernet66 67 Ethernet9/3 9 25000
Ethernet67 71 Ethernet9/4 9 25000
Ethernet72 73 Ethernet10/1 10 25000
Ethernet73 77 Ethernet10/2 10 25000
Ethernet74 75 Ethernet10/3 10 25000
Ethernet75 79 Ethernet10/4 10 25000
Ethernet80 81 Ethernet11/1 11 25000
Ethernet81 85 Ethernet11/2 11 25000
Ethernet82 83 Ethernet11/3 11 25000
Ethernet83 87 Ethernet11/4 11 25000
Ethernet88 89 Ethernet12/1 12 25000
Ethernet89 93 Ethernet12/2 12 25000
Ethernet90 91 Ethernet12/3 12 25000
Ethernet91 95 Ethernet12/4 12 25000
Ethernet96 97 Ethernet13/1 13 25000
Ethernet97 101 Ethernet13/2 13 25000
Ethernet98 99 Ethernet13/3 13 25000
Ethernet99 103 Ethernet13/4 13 25000
Ethernet104 105 Ethernet14/1 14 25000
Ethernet105 109 Ethernet14/2 14 25000
Ethernet106 107 Ethernet14/3 14 25000
Ethernet107 111 Ethernet14/4 14 25000
Ethernet112 113 Ethernet15/1 15 25000
Ethernet113 117 Ethernet15/2 15 25000
Ethernet114 115 Ethernet15/3 15 25000
Ethernet115 119 Ethernet15/4 15 25000
Ethernet120 121 Ethernet16/1 16 25000
Ethernet121 125 Ethernet16/2 16 25000
Ethernet122 123 Ethernet16/3 16 25000
Ethernet123 127 Ethernet16/4 16 25000
Ethernet128 385 Ethernet17/1 17 25000
Ethernet129 389 Ethernet17/2 17 25000
Ethernet130 387 Ethernet17/3 17 25000
Ethernet131 391 Ethernet17/4 17 25000
Ethernet136 393 Ethernet18/1 18 25000
Ethernet137 397 Ethernet18/2 18 25000
Ethernet138 395 Ethernet18/3 18 25000
Ethernet139 399 Ethernet18/4 18 25000
Ethernet144 401 Ethernet19/1 19 25000
Ethernet145 405 Ethernet19/2 19 25000
Ethernet146 403 Ethernet19/3 19 25000
Ethernet147 407 Ethernet19/4 19 25000
Ethernet152 409 Ethernet20/1 20 25000
Ethernet153 413 Ethernet20/2 20 25000
Ethernet154 411 Ethernet20/3 20 25000
Ethernet155 415 Ethernet20/4 20 25000
Ethernet160 417 Ethernet21/1 21 25000
Ethernet161 421 Ethernet21/2 21 25000
Ethernet162 419 Ethernet21/3 21 25000
Ethernet163 423 Ethernet21/4 21 25000
Ethernet168 425 Ethernet22/1 22 25000
Ethernet169 429 Ethernet22/2 22 25000
Ethernet170 427 Ethernet22/3 22 25000
Ethernet171 431 Ethernet22/4 22 25000
Ethernet176 433 Ethernet23/1 23 25000
Ethernet177 437 Ethernet23/2 23 25000
Ethernet178 435 Ethernet23/3 23 25000
Ethernet179 439 Ethernet23/4 23 25000
Ethernet184 441 Ethernet24/1 24 25000
Ethernet185 445 Ethernet24/2 24 25000
Ethernet186 443 Ethernet24/3 24 25000
Ethernet187 447 Ethernet24/4 24 25000
Ethernet192 449,450,451,452 Ethernet25/1 25 100000 rs
Ethernet196 453,454,455,456 Ethernet25/5 25 100000 rs
Ethernet200 457,458,459,460 Ethernet26/1 26 100000 rs
Ethernet204 461,462,463,464 Ethernet26/5 26 100000 rs
Ethernet208 465,466,467,468 Ethernet27/1 27 100000 rs
Ethernet212 469,470,471,472 Ethernet27/5 27 100000 rs
Ethernet216 473,474,475,476 Ethernet28/1 28 100000 rs
Ethernet220 477,478,479,480 Ethernet28/5 28 100000 rs
Ethernet224 481,482,483,484 Ethernet29/1 29 200000 rs
Ethernet228 485,486,487,488 Ethernet29/5 29 200000 rs
Ethernet232 489,490,491,492 Ethernet30/1 30 200000 rs
Ethernet236 493,494,495,496 Ethernet30/5 30 200000 rs
Ethernet240 497,498,499,500 Ethernet31/1 31 200000 rs
Ethernet244 501,502,503,504 Ethernet31/5 31 200000 rs
Ethernet248 505,506,507,508 Ethernet32/1 32 200000 rs
Ethernet252 509,510,511,512 Ethernet32/5 32 200000 rs
Ethernet256 513 Ethernet33 33 10000 none

View File

@ -0,0 +1 @@
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/th4-a7060dx5-32-25Gx96-100Gx8-200Gx8.config.bcm

View File

@ -0,0 +1 @@
../../../common/profiles/th4/gen/BALANCED

View File

@ -0,0 +1,2 @@
{%- set default_topo = 't1' %}
{%- include 'buffers_config.j2' %}

View File

@ -0,0 +1 @@
BALANCED/buffers_defaults_t0.j2

View File

@ -0,0 +1 @@
BALANCED/buffers_defaults_t1.j2

View File

@ -0,0 +1,104 @@
{
"interfaces": {
"Ethernet0": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet8": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet16": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet24": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet32": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet40": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet48": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet56": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet64": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet72": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet80": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet88": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet96": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet104": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet112": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet120": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet128": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet136": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet144": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet152": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet160": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet168": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet176": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet184": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet192": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet200": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet208": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet216": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet224": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet232": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet240": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet248": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]"
},
"Ethernet256": {
"default_brkout_mode": "1x10G",
"fec": "none"
}
}
}

View File

@ -0,0 +1 @@
BALANCED/pg_profile_lookup.ini

View File

@ -0,0 +1,34 @@
# name lanes alias index speed fec
Ethernet0 1,2,3,4,5,6,7,8 Ethernet1/1 1 400000 rs
Ethernet8 9,10,11,12,13,14,15,16 Ethernet2/1 2 400000 rs
Ethernet16 17,18,19,20,21,22,23,24 Ethernet3/1 3 400000 rs
Ethernet24 25,26,27,28,29,30,31,32 Ethernet4/1 4 400000 rs
Ethernet32 33,34,35,36,37,38,39,40 Ethernet5/1 5 400000 rs
Ethernet40 41,42,43,44,45,46,47,48 Ethernet6/1 6 400000 rs
Ethernet48 49,50,51,52,53,54,55,56 Ethernet7/1 7 400000 rs
Ethernet56 57,58,59,60,61,62,63,64 Ethernet8/1 8 400000 rs
Ethernet64 65,66,67,68,69,70,71,72 Ethernet9/1 9 400000 rs
Ethernet72 73,74,75,76,77,78,79,80 Ethernet10/1 10 400000 rs
Ethernet80 81,82,83,84,85,86,87,88 Ethernet11/1 11 400000 rs
Ethernet88 89,90,91,92,93,94,95,96 Ethernet12/1 12 400000 rs
Ethernet96 97,98,99,100,101,102,103,104 Ethernet13/1 13 400000 rs
Ethernet104 105,106,107,108,109,110,111,112 Ethernet14/1 14 400000 rs
Ethernet112 113,114,115,116,117,118,119,120 Ethernet15/1 15 400000 rs
Ethernet120 121,122,123,124,125,126,127,128 Ethernet16/1 16 400000 rs
Ethernet128 385,386,387,388,389,390,391,392 Ethernet17/1 17 400000 rs
Ethernet136 393,394,395,396,397,398,399,400 Ethernet18/1 18 400000 rs
Ethernet144 401,402,403,404,405,406,407,408 Ethernet19/1 19 400000 rs
Ethernet152 409,410,411,412,413,414,415,416 Ethernet20/1 20 400000 rs
Ethernet160 417,418,419,420,421,422,423,424 Ethernet21/1 21 400000 rs
Ethernet168 425,426,427,428,429,430,431,432 Ethernet22/1 22 400000 rs
Ethernet176 433,434,435,436,437,438,439,440 Ethernet23/1 23 400000 rs
Ethernet184 441,442,443,444,445,446,447,448 Ethernet24/1 24 400000 rs
Ethernet192 449,450,451,452,453,454,455,456 Ethernet25/1 25 400000 rs
Ethernet200 457,458,459,460,461,462,463,464 Ethernet26/1 26 400000 rs
Ethernet208 465,466,467,468,469,470,471,472 Ethernet27/1 27 400000 rs
Ethernet216 473,474,475,476,477,478,479,480 Ethernet28/1 28 400000 rs
Ethernet224 481,482,483,484,485,486,487,488 Ethernet29/1 29 400000 rs
Ethernet232 489,490,491,492,493,494,495,496 Ethernet30/1 30 400000 rs
Ethernet240 497,498,499,500,501,502,503,504 Ethernet31/1 31 400000 rs
Ethernet248 505,506,507,508,509,510,511,512 Ethernet32/1 32 400000 rs
Ethernet256 513 Ethernet33 33 10000 none

View File

@ -0,0 +1 @@
{%- include 'qos_config.j2' %}

View File

@ -0,0 +1 @@
SAI_INIT_CONFIG_FILE=/usr/share/sonic/hwsku/th4-a7060dx5-32.config.bcm

View File

@ -0,0 +1 @@
Arista-7060DX5-32 t1

View File

@ -0,0 +1 @@
../x86_64-arista_common/pcie.yaml

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
broadcom

View File

@ -0,0 +1,12 @@
{
"chassis": {
"DCS-7060DX5-32": {
"component": {
"Aboot()": {},
"Scd(addr=0000:00:18.7)": {},
"Scd(addr=0000:01:00.0)": {},
"LorikeetSysCpld(addr=13-0023)": {}
}
}
}
}

View File

@ -0,0 +1,2 @@
SYNCD_SHM_SIZE=512m
is_ltsw_chip=1

View File

@ -0,0 +1 @@
../x86_64-arista_common/platform_reboot

View File

@ -0,0 +1 @@
../x86_64-arista_common/plugins/

View File

@ -0,0 +1 @@
../x86_64-arista_common/pmon_daemon_control.json

View File

@ -0,0 +1,36 @@
# libsensors configuration file for DCS-7060DX4-32
# ------------------------------------------------#
bus "i2c-9" "SCD 0000:00:18.7 SMBus master 0 bus 0"
bus "i2c-29" "SCD 0000:01:00.0 SMBus master 1 bus 0"
bus "i2c-32" "SCD 0000:01:00.0 SMBus master 1 bus 3"
bus "i2c-33" "SCD 0000:01:00.0 SMBus master 1 bus 4"
chip "max6658-i2c-9-4c"
label temp1 "CPU board temp sensor"
label temp2 "Back-panel temp sensor"
chip "max6581-i2c-29-4d"
label temp1 "Center Rear"
label temp2 "Switch board right sensor"
label temp3 "Switch board left sensor"
label temp4 "Front-panel temp sensor"
label temp5 "Switch chip diode 1 sensor"
label temp6 "Switch chip diode 2 sensor"
ignore temp7
ignore temp8
chip "pmbus-i2c-32-58"
label temp1 "Power supply 1 hotspot sensor"
label temp2 "Power supply 1 inlet temp sensor"
label temp3 "Power supply 1 exhaust temp sensor"
ignore fan2
ignore fan3
chip "pmbus-i2c-33-58"
label temp1 "Power supply 2 hotspot sensor"
label temp2 "Power supply 2 inlet temp sensor"
label temp3 "Power supply 2 exhaust temp sensor"
ignore fan2
ignore fan3

View File

@ -0,0 +1 @@
../x86_64-arista_common/system_health_monitoring_config.json

View File

@ -0,0 +1 @@
../x86_64-arista_common/thermal_policy.json

View File

@ -255,6 +255,14 @@
"Ethernet504": {
"default_brkout_mode": "1x400G[200G,100G,50G,40G,25G,10G]",
"fec": "rs"
},
"Ethernet512": {
"default_brkout_mode": "1x10G",
"fec": "none"
},
"Ethernet513": {
"default_brkout_mode": "1x10G",
"fec": "none"
}
}
}

View File

@ -63,3 +63,5 @@ Ethernet480 237,238,239,240,241,242,243,244 Ethernet61/1 61 400000 rs
Ethernet488 229,230,231,232,233,234,235,236 Ethernet62/1 62 400000 rs
Ethernet496 249,250,251,252,253,254,255,256 Ethernet63/1 63 400000 rs
Ethernet504 245,246,247,248,249,250,251,252 Ethernet64/1 64 400000 rs
Ethernet512 258 Ethernet65 65 10000 none
Ethernet513 257 Ethernet66 66 10000 none

View File

@ -34,7 +34,7 @@ bcm_device:
sai_field_group_auto_prioritize: 1
#l3_intf_vlan_split_egress for MTU at L3IF
l3_intf_vlan_split_egress : 1
bcm_tunnel_term_compatible_mode: 1
---
device:
0:
@ -1073,6 +1073,14 @@ device:
PORT_ID: 258
:
PC_PHYS_PORT_ID: 253
?
PORT_ID: 152
:
PC_PHYS_PORT_ID: 257
?
PORT_ID: 50
:
PC_PHYS_PORT_ID: 258
...
---
device:
@ -1085,6 +1093,13 @@ device:
ENABLE: 1
SPEED: 10000
NUM_LANES: 1
?
PORT_ID: [[50, 50], [152, 152]]
:
ENABLE: 1
MAX_FRAME_SIZE: 9416
SPEED: 10000
NUM_LANES: 1
?
PORT_ID: [[1, 4],
[17, 20],
@ -1103,7 +1118,7 @@ device:
[238, 241],
[255, 258]]
:
ENABLE: 1
ENABLE: 0
SPEED: 400000
NUM_LANES: 8
FEC_MODE: PC_FEC_RS544_2XN

View File

@ -0,0 +1 @@
../x86_64-arista_common/pcie.yaml

View File

@ -49,52 +49,52 @@
],
"thermals": [
{
"name": "Cpu temp sensor"
"name": "Board sensor",
"controllable": false
},
{
"name": "CPU board temp sensor"
"name": "TH4 exhaust temp sensor",
"controllable": false
},
{
"name": "Back-panel temp sensor"
"name": "Inlet temp sensor",
"controllable": false
},
{
"name": "Board sensor"
"name": "CPU board temp sensor",
"controllable": false
},
{
"name": "Switch board middle sensor"
"name": "Back panel temp sensor",
"controllable": false
},
{
"name": "Switch board left sensor"
"name": "Front panel temp sensor",
"controllable": false
},
{
"name": "Front-panel temp sensor"
"name": "Power supply 1 hotspot sensor",
"controllable": false
},
{
"name": "Switch chip diode 1 sensor"
"name": "Power supply 1 inlet temp sensor",
"controllable": false
},
{
"name": "Switch chip diode 2 sensor"
"name": "Power supply 1 exhaust temp sensor",
"controllable": false
},
{
"name": "Front-panel temp sensor"
"name": "Power supply 2 hotspot sensor",
"controllable": false
},
{
"name": "Power supply 1 inlet temp sensor"
"name": "Power supply 2 inlet temp sensor",
"controllable": false
},
{
"name": "Power supply 1 secondary hotspot sensor"
},
{
"name": "Power supply 1 primary hotspot sensor"
},
{
"name": "Power supply 2 inlet temp sensor"
},
{
"name": "Power supply 2 secondary hotspot sensor"
},
{
"name": "Power supply 2 primary hotspot sensor"
"name": "Power supply 2 exhaust temp sensor",
"controllable": false
}
],
"sfps": [
@ -2154,6 +2154,24 @@
"Ethernet64/8"
]
}
},
"Ethernet512": {
"index": "65",
"lanes": "258",
"breakout_modes": {
"1x10G": [
"Ethernet65"
]
}
},
"Ethernet513": {
"index": "66",
"lanes": "257",
"breakout_modes": {
"1x10G": [
"Ethernet66"
]
}
}
}
}

View File

@ -20,6 +20,8 @@ miim_intr_enable.0=0
module_64ports.0=1
multicast_l2_range.0=511
oversubscribe_mode=1
sai_tunnel_global_sip_mask_enable=1
bcm_tunnel_term_compatible_mode=1
parity_correction=1
parity_enable=1
pbmp_xport_xe.0=0x3ffffffffffffffffffffffffffffffffffffffe

View File

@ -20,6 +20,8 @@ miim_intr_enable.0=0
module_64ports.0=1
multicast_l2_range.0=511
oversubscribe_mode=1
sai_tunnel_global_sip_mask_enable=1
bcm_tunnel_term_compatible_mode=1
parity_correction=1
parity_enable=1
pbmp_xport_xe.0=0x3ffffffffffffffffffffffffffffffffffffffe

View File

@ -186,11 +186,6 @@
id: 6f37
name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon
D R3 QPI Link 0/1 (rev 03)'
- bus: ff
dev: 0b
fn: '3'
id: '0001'
name: 'System peripheral: Arastra Inc. Device 0001 (rev 03)'
- bus: ff
dev: 0c
fn: '0'

View File

@ -16,6 +16,8 @@ miim_intr_enable.0=0
module_64ports.0=1
multicast_l2_range.0=511
oversubscribe_mode=1
sai_tunnel_global_sip_mask_enable=1
bcm_tunnel_term_compatible_mode=1
parity_correction=1
parity_enable=1
pbmp_xport_xe.0=0x3ffffffffffffffffffffffffffffffffffffffe

View File

@ -4,12 +4,6 @@
<phy_addr>0</phy_addr>
<mode>retimer</mode>
<topology>1</topology>
<tx-taps>
<PAM4>2,-8,17,0,0</PAM4>
<NRZ>0,-8,17,0,0</NRZ>
</tx-taps>
<tx-taps-scale>0,0,1,0,0</tx-taps-scale>
<lane id="0" tx-polarity="0" rx-polarity="0" />
<lane id="1" tx-polarity="0" rx-polarity="0" />
<lane id="2" tx-polarity="0" rx-polarity="0" />
@ -26,4 +20,23 @@
<lane id="13" tx-polarity="0" rx-polarity="0" />
<lane id="14" tx-polarity="0" rx-polarity="0" />
<lane id="15" tx-polarity="0" rx-polarity="0" />
<PAM4>
<lane id="0" tx-taps="0,0,-8,117,-2,0,0"/>
<lane id="1" tx-taps="0,0,-8,117,-2,0,0"/>
<lane id="2" tx-taps="0,0,-8,117,-2,0,0"/>
<lane id="3" tx-taps="0,0,-8,117,-2,0,0"/>
<lane id="4" tx-taps="0,0,-8,117,-2,0,0"/>
<lane id="5" tx-taps="0,0,-8,117,-2,0,0"/>
<lane id="6" tx-taps="0,0,-8,117,-2,0,0"/>
<lane id="7" tx-taps="0,0,-8,117,-2,0,0"/>
<lane id="8" tx-taps="0,10,-22,93,-2,0,0"/>
<lane id="9" tx-taps="0,10,-22,93,-2,0,0"/>
<lane id="10" tx-taps="0,10,-22,93,-2,0,0"/>
<lane id="11" tx-taps="0,10,-22,93,-2,0,0"/>
<lane id="12" tx-taps="0,10,-22,93,-2,0,0"/>
<lane id="13" tx-taps="0,10,-22,93,-2,0,0"/>
<lane id="14" tx-taps="0,10,-22,93,-2,0,0"/>
<lane id="15" tx-taps="0,10,-22,93,-2,0,0"/>
</PAM4>
</root>

View File

@ -0,0 +1 @@
../x86_64-arista_common/pcie.yaml

View File

@ -7,20 +7,15 @@ bus "i2c-23" "SCD 0000:01:00.0 SMBus master 1 bus 4"
bus "i2c-24" "SCD 0000:01:00.0 SMBus master 1 bus 5"
bus "i2c-107" "SCD 0000:00:18.7 SMBus master 0 bus 0"
chip "max6581-i2c-19-4d"
chip "tmp464-i2c-19-48"
label temp1 "Board sensor"
label temp2 "TH4 exhaust temp sensor"
label temp3 "Left edge PCB rear temp sensor"
label temp4 "Inlet temp sensor"
ignore temp5
ignore temp6
label temp7 "Diode temp sensor 1"
label temp8 "Diode temp sensor 2"
label temp3 "Inlet temp sensor"
chip "dps800-i2c-22-58"
label temp1 "Power supply 1 hotspot sensor"
label temp2 "Power supply 1 inlet temp sensor"
label temp3 "Power supply 1 exhaust temp sensor"
ignore temp3 "Power supply 1 exhaust temp sensor"
chip "dps800-i2c-23-58"
label temp1 "Power supply 2 hotspot sensor"

View File

@ -186,11 +186,6 @@
id: 6f37
name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon
D R3 QPI Link 0/1 (rev 03)'
- bus: ff
dev: 0b
fn: '3'
id: '0001'
name: 'System peripheral: Arastra Inc. Device 0001 (rev 03)'
- bus: ff
dev: 0c
fn: '0'

View File

@ -174,11 +174,6 @@
id: 6f37
name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon
D R3 QPI Link 0/1 (rev 03)'
- bus: ff
dev: 0b
fn: '3'
id: '0001'
name: 'System peripheral: Arastra Inc. Device 0001 (rev 03)'
- bus: ff
dev: 0c
fn: '0'

View File

@ -90,11 +90,6 @@
id: 15ee
name: 'Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function
6'
- bus: '00'
dev: '18'
fn: '7'
id: '0001'
name: 'Host bridge: Arista Networks, Inc. Device 0001'
- bus: '01'
dev: '00'
fn: '0'

View File

@ -2,6 +2,7 @@
{%- set mmu_sock = 'mmu_init_config="MSFT-TH2-Tier1"' -%}
{%- set IPinIP_sock = '' -%}
{%- set map_prio = '' -%}
{%- set pfcwd_sock = '' -%}
{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined -%}
{%- if DEVICE_METADATA['localhost']['type'] is defined -%}
{%- set switch_role = DEVICE_METADATA['localhost']['type'] -%}
@ -12,19 +13,26 @@
{%- if DEVICE_METADATA['localhost']['subtype'] is defined -%}
{%- set switch_subtype = DEVICE_METADATA['localhost']['subtype'] -%}
{%- if 'dualtor' in switch_subtype.lower() %}
{%- set IPinIP_sock = 'sai_tunnel_support=1
sai_tunnel_underlay_route_mode=1
host_as_route_disable=1
l3_ecmp_levels=2' -%}
{%- set IPinIP_sock =
'sai_tunnel_underlay_route_mode=1
host_as_route_disable=1
l3_ecmp_levels=2' -%}
{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%}
{%- endif %}
{%- endif %}
{%- endif %}
{%- if SYSTEM_DEFAULTS is defined and 'tunnel_qos_remap' in SYSTEM_DEFAULTS and SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled' -%}
{%- set pfcwd_sock =
'hybrid_pfc_deadlock_enable=1
pfc_deadlock_seq_control=1
sai_pfc_dlr_init_capability=1' -%}
{%- endif %}
{# The following is the common soc properties that used to be named "th2-a7260cx3-64-64x100G-t1.config.bcm" #}
l3_alpm_hit_skip=1
sai_adjust_acl_drop_in_rx_drop=1
{{ map_prio }}
{{ pfcwd_sock }}
PHY_AN_ALLOW_PLL_CHANGE=1
arl_clean_timeout_usec=15000000
asf_mem_profile=2
@ -1040,5 +1048,6 @@ serdes_preemphasis_116=0x103706
serdes_preemphasis_117=0x133c06
{{ mmu_sock }}
sai_tunnel_support=1
{{ IPinIP_sock }}
phy_an_lt_msft=1

View File

@ -1,20 +1,28 @@
{# Construct config.bcm to include additional soc properties per specific device metadata requirement #}
{%- set IPinIP_sock = '' -%}
{%- set map_prio = '' -%}
{%- set pfcwd_sock = '' -%}
{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined and DEVICE_METADATA['localhost']['subtype'] is defined -%}
{%- set switch_subtype = DEVICE_METADATA['localhost']['subtype'] -%}
{%- if 'dualtor' in switch_subtype.lower() %}
{%- set IPinIP_sock = 'sai_tunnel_support=1
sai_tunnel_underlay_route_mode=1
host_as_route_disable=1
l3_ecmp_levels=2' -%}
{%- set IPinIP_sock =
'sai_tunnel_underlay_route_mode=1
host_as_route_disable=1
l3_ecmp_levels=2' -%}
{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%}
{%- endif %}
{%- endif %}
{%- if SYSTEM_DEFAULTS is defined and 'tunnel_qos_remap' in SYSTEM_DEFAULTS and SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled' -%}
{%- set pfcwd_sock =
'hybrid_pfc_deadlock_enable=1
pfc_deadlock_seq_control=1
sai_pfc_dlr_init_capability=1' -%}
{%- endif %}
{# The following is the common soc properties that used to be named "th2-a7260cx3-64-112x50G+8x100G.config.bcm" #}
l3_alpm_hit_skip=1
sai_adjust_acl_drop_in_rx_drop=1
{{ map_prio }}
{{ pfcwd_sock }}
PHY_AN_ALLOW_PLL_CHANGE=1
arl_clean_timeout_usec=15000000
asf_mem_profile=2
@ -947,5 +955,6 @@ serdes_preemphasis_130=0x580c
serdes_preemphasis_131=0x580c
mmu_init_config="MSFT-TH2-Tier0"
sai_tunnel_support=1
{{ IPinIP_sock }}
phy_an_lt_msft=1

View File

@ -1,20 +1,28 @@
{# Construct config.bcm to include additional soc properties per specific device metadata requirement #}
{%- set IPinIP_sock = '' -%}
{%- set map_prio = '' -%}
{%- set pfcwd_sock = '' -%}
{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined and DEVICE_METADATA['localhost']['subtype'] is defined -%}
{%- set switch_subtype = DEVICE_METADATA['localhost']['subtype'] -%}
{%- if 'dualtor' in switch_subtype.lower() %}
{%- set IPinIP_sock = 'sai_tunnel_support=1
sai_tunnel_underlay_route_mode=1
host_as_route_disable=1
l3_ecmp_levels=2' -%}
{%- set IPinIP_sock =
'sai_tunnel_underlay_route_mode=1
host_as_route_disable=1
l3_ecmp_levels=2' -%}
{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%}
{%- endif %}
{%- endif %}
{%- if SYSTEM_DEFAULTS is defined and 'tunnel_qos_remap' in SYSTEM_DEFAULTS and SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled' -%}
{%- set pfcwd_sock =
'hybrid_pfc_deadlock_enable=1
pfc_deadlock_seq_control=1
sai_pfc_dlr_init_capability=1' -%}
{%- endif %}
{# The following is the common soc properties that used to be named "th2-a7260cx3-64-112x50G+8x100G.config.bcm" #}
l3_alpm_hit_skip=1
sai_adjust_acl_drop_in_rx_drop=1
{{ map_prio }}
{{ pfcwd_sock }}
PHY_AN_ALLOW_PLL_CHANGE=1
arl_clean_timeout_usec=15000000
asf_mem_profile=2
@ -951,5 +959,6 @@ serdes_preemphasis_130=0x580c
serdes_preemphasis_131=0x580c
mmu_init_config="MSFT-TH2-Tier0"
sai_tunnel_support=1
{{ IPinIP_sock }}
phy_an_lt_msft=1

View File

@ -2,6 +2,7 @@
{%- set mmu_sock = 'mmu_init_config="MSFT-TH2-Tier1"' -%}
{%- set IPinIP_sock = '' -%}
{%- set map_prio = '' -%}
{%- set pfcwd_sock = '' -%}
{%- if DEVICE_METADATA is defined and DEVICE_METADATA['localhost'] is defined -%}
{%- if DEVICE_METADATA['localhost']['type'] is defined -%}
{%- set switch_role = DEVICE_METADATA['localhost']['type'] -%}
@ -12,18 +13,25 @@
{%- if DEVICE_METADATA['localhost']['subtype'] is defined -%}
{%- set switch_subtype = DEVICE_METADATA['localhost']['subtype'] -%}
{%- if 'dualtor' in switch_subtype.lower() %}
{%- set IPinIP_sock = 'sai_tunnel_support=1
sai_tunnel_underlay_route_mode=1
host_as_route_disable=1
l3_ecmp_levels=2' -%}
{%- set IPinIP_sock =
'sai_tunnel_underlay_route_mode=1
host_as_route_disable=1
l3_ecmp_levels=2' -%}
{%- set map_prio = 'sai_remap_prio_on_tnl_egress=1' -%}
{%- endif %}
{%- endif %}
{%- endif %}
{%- if SYSTEM_DEFAULTS is defined and 'tunnel_qos_remap' in SYSTEM_DEFAULTS and SYSTEM_DEFAULTS['tunnel_qos_remap']['status'] == 'enabled' -%}
{%- set pfcwd_sock =
'hybrid_pfc_deadlock_enable=1
pfc_deadlock_seq_control=1
sai_pfc_dlr_init_capability=1' -%}
{%- endif %}
{# The following is the common soc properties that used to be named "th2-a7260cx3-64-64x40G.config.bcm" #}
l3_alpm_hit_skip=1
sai_adjust_acl_drop_in_rx_drop=1
{{ map_prio }}
{{ pfcwd_sock }}
PHY_AN_ALLOW_PLL_CHANGE=1
arl_clean_timeout_usec=15000000
asf_mem_profile=2
@ -1039,5 +1047,6 @@ serdes_preemphasis_116=0x105004
serdes_preemphasis_117=0x105004
{{ mmu_sock }}
sai_tunnel_support=1
{{ IPinIP_sock }}
phy_an_lt_msft=1

View File

@ -100,12 +100,6 @@
id: 8c24
name: 'Signal processing controller: Intel Corporation 8 Series Chipset Family Thermal
Management Controller (rev 05)'
- bus: '01'
dev: '00'
fn: '0'
id: '1682'
name: 'Ethernet controller: Broadcom Limited NetXtreme BCM57762 Gigabit Ethernet
PCIe (rev 20)'
- bus: '02'
dev: '00'
fn: '0'
@ -179,11 +173,6 @@
id: 6f37
name: 'Performance counters: Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon
D R3 QPI Link 0/1 (rev 03)'
- bus: ff
dev: 0b
fn: '3'
id: '0001'
name: 'System peripheral: Arastra Inc. Device 0001 (rev 03)'
- bus: ff
dev: 0c
fn: '0'

View File

@ -64,11 +64,6 @@
id: '1578'
name: 'Encryption controller: Advanced Micro Devices, Inc. [AMD] Carrizo Platform
Security Processor'
- bus: '00'
dev: 09
fn: '0'
id: '0001'
name: 'Host bridge: Arista Networks, Inc. Device 0001'
- bus: '00'
dev: 09
fn: '2'

View File

@ -1 +1,2 @@
SYNCD_SHM_SIZE=1gb
usemsi=1

View File

@ -0,0 +1,8 @@
{
"FABRIC_MONITOR_DATA": {
"monErrThreshCrcCells": 1,
"monErrThreshRxCells": 61035156,
"monPollThreshRecovery": 8,
"monPollThreshIsolation": 1
}
}

View File

@ -0,0 +1,193 @@
# name lanes isolateStatus
Fabric0 0 False
Fabric1 1 False
Fabric2 2 False
Fabric3 3 False
Fabric4 4 False
Fabric5 5 False
Fabric6 6 False
Fabric7 7 False
Fabric8 8 False
Fabric9 9 False
Fabric10 10 False
Fabric11 11 False
Fabric12 12 False
Fabric13 13 False
Fabric14 14 False
Fabric15 15 False
Fabric16 16 False
Fabric17 17 False
Fabric18 18 False
Fabric19 19 False
Fabric20 20 False
Fabric21 21 False
Fabric22 22 False
Fabric23 23 False
Fabric24 24 False
Fabric25 25 False
Fabric26 26 False
Fabric27 27 False
Fabric28 28 False
Fabric29 29 False
Fabric30 30 False
Fabric31 31 False
Fabric32 32 False
Fabric33 33 False
Fabric34 34 False
Fabric35 35 False
Fabric36 36 False
Fabric37 37 False
Fabric38 38 False
Fabric39 39 False
Fabric40 40 False
Fabric41 41 False
Fabric42 42 False
Fabric43 43 False
Fabric44 44 False
Fabric45 45 False
Fabric46 46 False
Fabric47 47 False
Fabric48 48 False
Fabric49 49 False
Fabric50 50 False
Fabric51 51 False
Fabric52 52 False
Fabric53 53 False
Fabric54 54 False
Fabric55 55 False
Fabric56 56 False
Fabric57 57 False
Fabric58 58 False
Fabric59 59 False
Fabric60 60 False
Fabric61 61 False
Fabric62 62 False
Fabric63 63 False
Fabric64 64 False
Fabric65 65 False
Fabric66 66 False
Fabric67 67 False
Fabric68 68 False
Fabric69 69 False
Fabric70 70 False
Fabric71 71 False
Fabric72 72 False
Fabric73 73 False
Fabric74 74 False
Fabric75 75 False
Fabric76 76 False
Fabric77 77 False
Fabric78 78 False
Fabric79 79 False
Fabric80 80 False
Fabric81 81 False
Fabric82 82 False
Fabric83 83 False
Fabric84 84 False
Fabric85 85 False
Fabric86 86 False
Fabric87 87 False
Fabric88 88 False
Fabric89 89 False
Fabric90 90 False
Fabric91 91 False
Fabric92 92 False
Fabric93 93 False
Fabric94 94 False
Fabric95 95 False
Fabric96 96 False
Fabric97 97 False
Fabric98 98 False
Fabric99 99 False
Fabric100 100 False
Fabric101 101 False
Fabric102 102 False
Fabric103 103 False
Fabric104 104 False
Fabric105 105 False
Fabric106 106 False
Fabric107 107 False
Fabric108 108 False
Fabric109 109 False
Fabric110 110 False
Fabric111 111 False
Fabric112 112 False
Fabric113 113 False
Fabric114 114 False
Fabric115 115 False
Fabric116 116 False
Fabric117 117 False
Fabric118 118 False
Fabric119 119 False
Fabric120 120 False
Fabric121 121 False
Fabric122 122 False
Fabric123 123 False
Fabric124 124 False
Fabric125 125 False
Fabric126 126 False
Fabric127 127 False
Fabric128 128 False
Fabric129 129 False
Fabric130 130 False
Fabric131 131 False
Fabric132 132 False
Fabric133 133 False
Fabric134 134 False
Fabric135 135 False
Fabric136 136 False
Fabric137 137 False
Fabric138 138 False
Fabric139 139 False
Fabric140 140 False
Fabric141 141 False
Fabric142 142 False
Fabric143 143 False
Fabric144 144 False
Fabric145 145 False
Fabric146 146 False
Fabric147 147 False
Fabric148 148 False
Fabric149 149 False
Fabric150 150 False
Fabric151 151 False
Fabric152 152 False
Fabric153 153 False
Fabric154 154 False
Fabric155 155 False
Fabric156 156 False
Fabric157 157 False
Fabric158 158 False
Fabric159 159 False
Fabric160 160 False
Fabric161 161 False
Fabric162 162 False
Fabric163 163 False
Fabric164 164 False
Fabric165 165 False
Fabric166 166 False
Fabric167 167 False
Fabric168 168 False
Fabric169 169 False
Fabric170 170 False
Fabric171 171 False
Fabric172 172 False
Fabric173 173 False
Fabric174 174 False
Fabric175 175 False
Fabric176 176 False
Fabric177 177 False
Fabric178 178 False
Fabric179 179 False
Fabric180 180 False
Fabric181 181 False
Fabric182 182 False
Fabric183 183 False
Fabric184 184 False
Fabric185 185 False
Fabric186 186 False
Fabric187 187 False
Fabric188 188 False
Fabric189 189 False
Fabric190 190 False
Fabric191 191 False

View File

@ -0,0 +1,8 @@
{
"FABRIC_MONITOR_DATA": {
"monErrThreshCrcCells": 1,
"monErrThreshRxCells": 61035156,
"monPollThreshRecovery": 8,
"monPollThreshIsolation": 1
}
}

View File

@ -0,0 +1,193 @@
# name lanes isolateStatus
Fabric0 0 False
Fabric1 1 False
Fabric2 2 False
Fabric3 3 False
Fabric4 4 False
Fabric5 5 False
Fabric6 6 False
Fabric7 7 False
Fabric8 8 False
Fabric9 9 False
Fabric10 10 False
Fabric11 11 False
Fabric12 12 False
Fabric13 13 False
Fabric14 14 False
Fabric15 15 False
Fabric16 16 False
Fabric17 17 False
Fabric18 18 False
Fabric19 19 False
Fabric20 20 False
Fabric21 21 False
Fabric22 22 False
Fabric23 23 False
Fabric24 24 False
Fabric25 25 False
Fabric26 26 False
Fabric27 27 False
Fabric28 28 False
Fabric29 29 False
Fabric30 30 False
Fabric31 31 False
Fabric32 32 False
Fabric33 33 False
Fabric34 34 False
Fabric35 35 False
Fabric36 36 False
Fabric37 37 False
Fabric38 38 False
Fabric39 39 False
Fabric40 40 False
Fabric41 41 False
Fabric42 42 False
Fabric43 43 False
Fabric44 44 False
Fabric45 45 False
Fabric46 46 False
Fabric47 47 False
Fabric48 48 False
Fabric49 49 False
Fabric50 50 False
Fabric51 51 False
Fabric52 52 False
Fabric53 53 False
Fabric54 54 False
Fabric55 55 False
Fabric56 56 False
Fabric57 57 False
Fabric58 58 False
Fabric59 59 False
Fabric60 60 False
Fabric61 61 False
Fabric62 62 False
Fabric63 63 False
Fabric64 64 False
Fabric65 65 False
Fabric66 66 False
Fabric67 67 False
Fabric68 68 False
Fabric69 69 False
Fabric70 70 False
Fabric71 71 False
Fabric72 72 False
Fabric73 73 False
Fabric74 74 False
Fabric75 75 False
Fabric76 76 False
Fabric77 77 False
Fabric78 78 False
Fabric79 79 False
Fabric80 80 False
Fabric81 81 False
Fabric82 82 False
Fabric83 83 False
Fabric84 84 False
Fabric85 85 False
Fabric86 86 False
Fabric87 87 False
Fabric88 88 False
Fabric89 89 False
Fabric90 90 False
Fabric91 91 False
Fabric92 92 False
Fabric93 93 False
Fabric94 94 False
Fabric95 95 False
Fabric96 96 False
Fabric97 97 False
Fabric98 98 False
Fabric99 99 False
Fabric100 100 False
Fabric101 101 False
Fabric102 102 False
Fabric103 103 False
Fabric104 104 False
Fabric105 105 False
Fabric106 106 False
Fabric107 107 False
Fabric108 108 False
Fabric109 109 False
Fabric110 110 False
Fabric111 111 False
Fabric112 112 False
Fabric113 113 False
Fabric114 114 False
Fabric115 115 False
Fabric116 116 False
Fabric117 117 False
Fabric118 118 False
Fabric119 119 False
Fabric120 120 False
Fabric121 121 False
Fabric122 122 False
Fabric123 123 False
Fabric124 124 False
Fabric125 125 False
Fabric126 126 False
Fabric127 127 False
Fabric128 128 False
Fabric129 129 False
Fabric130 130 False
Fabric131 131 False
Fabric132 132 False
Fabric133 133 False
Fabric134 134 False
Fabric135 135 False
Fabric136 136 False
Fabric137 137 False
Fabric138 138 False
Fabric139 139 False
Fabric140 140 False
Fabric141 141 False
Fabric142 142 False
Fabric143 143 False
Fabric144 144 False
Fabric145 145 False
Fabric146 146 False
Fabric147 147 False
Fabric148 148 False
Fabric149 149 False
Fabric150 150 False
Fabric151 151 False
Fabric152 152 False
Fabric153 153 False
Fabric154 154 False
Fabric155 155 False
Fabric156 156 False
Fabric157 157 False
Fabric158 158 False
Fabric159 159 False
Fabric160 160 False
Fabric161 161 False
Fabric162 162 False
Fabric163 163 False
Fabric164 164 False
Fabric165 165 False
Fabric166 166 False
Fabric167 167 False
Fabric168 168 False
Fabric169 169 False
Fabric170 170 False
Fabric171 171 False
Fabric172 172 False
Fabric173 173 False
Fabric174 174 False
Fabric175 175 False
Fabric176 176 False
Fabric177 177 False
Fabric178 178 False
Fabric179 179 False
Fabric180 180 False
Fabric181 181 False
Fabric182 182 False
Fabric183 183 False
Fabric184 184 False
Fabric185 185 False
Fabric186 186 False
Fabric187 187 False
Fabric188 188 False
Fabric189 189 False
Fabric190 190 False
Fabric191 191 False

View File

@ -0,0 +1,8 @@
{
"FABRIC_MONITOR_DATA": {
"monErrThreshCrcCells": 1,
"monErrThreshRxCells": 61035156,
"monPollThreshRecovery": 8,
"monPollThreshIsolation": 1
}
}

Some files were not shown because too many files have changed in this diff Show More