3bbfaa1ee8
* Upgrade docker-sonic-vs and docker-syncd-vs to Bullseye Signed-off-by: Saikrishna Arcot <sarcot@microsoft.com> * iproute2: Force a new version and timestamp to be used for the package There is an issue with Docker's overlay2 storage driver when not using native diffs (and thus falling back to naive diff mode), which is the case in the CI builds. The way the naive diff mode detects changes is by comparing the file size and comparing the timestamps (specifically, I believe it's the modification timestamp), and if there's a change there, then it's considered a change that needs to be recorded as part of that layer. The problem is that with the code being added in the patch, the file size remains the same, and the timestamp of binary files appear to be the same timestamp as the changelog entry (likely for reproducible build purposes). The file size remains the same likely due to extra padding within the file introduced by relro. Because of this, Docker doesn't detect this file has changed, and doesn't save the new file as part of this layer. To work around this, create a new changelog entry (with a new version as well) with a new timestamp. This will result in the binary files having a different timestamp, and thus will get saved by Docker as part of that layer. Signed-off-by: Saikrishna Arcot <sarcot@microsoft.com> --------- Signed-off-by: Saikrishna Arcot <sarcot@microsoft.com>
179 lines
7.6 KiB
Django/Jinja
179 lines
7.6 KiB
Django/Jinja
FROM docker-swss-layer-bullseye-{{DOCKER_USERNAME}}:{{DOCKER_USERTAG}}
|
|
|
|
ARG docker_container_name
|
|
|
|
COPY ["etc/rsyslog.conf", "/etc/rsyslog.conf"]
|
|
RUN [ -f /etc/rsyslog.conf ] && sed -ri "s/%syslogtag%/$docker_container_name#%syslogtag%/;" /etc/rsyslog.conf
|
|
|
|
## Make apt-get non-interactive
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get install -y gnupg
|
|
COPY ["sonic-dev.gpg.key", "/etc/apt/"]
|
|
RUN apt-key add /etc/apt/sonic-dev.gpg.key
|
|
RUN echo "deb http://packages.microsoft.com/repos/sonic-dev/ jessie main" >> /etc/apt/sources.list
|
|
RUN apt-get update
|
|
|
|
RUN apt-get install -y net-tools \
|
|
arping \
|
|
ndisc6 \
|
|
ethtool \
|
|
tcpdump \
|
|
ifupdown \
|
|
bridge-utils \
|
|
python-ply \
|
|
libqt5core5a \
|
|
libqt5network5 \
|
|
libgmp10 \
|
|
libjudydebian1 \
|
|
openssh-client \
|
|
openssh-server \
|
|
libc-ares2 \
|
|
iproute2 \
|
|
grub2-common \
|
|
bash-completion \
|
|
libelf1 \
|
|
libmnl0 \
|
|
logrotate \
|
|
apt-utils \
|
|
psmisc \
|
|
python3-scapy \
|
|
conntrack \
|
|
iptables \
|
|
jq \
|
|
libzmq5 \
|
|
libzmq3-dev \
|
|
uuid-dev \
|
|
# For installing Python m2crypto package
|
|
# (these can be uninstalled after installation)
|
|
build-essential \
|
|
python3-dev \
|
|
libssl-dev \
|
|
swig \
|
|
# For using Python m2crypto package
|
|
openssl \
|
|
# For installing dependent Python packages of sonic-host-services
|
|
# (these can be uninstalled after installation)
|
|
libcairo2-dev \
|
|
libdbus-1-dev \
|
|
libgirepository1.0-dev \
|
|
libsystemd-dev \
|
|
pkg-config \
|
|
# For installing dependent Python packages of sonic-host-services
|
|
# these packages are needed at runtime
|
|
gir1.2-glib-2.0 \
|
|
libdbus-1-3 \
|
|
libgirepository-1.0-1 \
|
|
{%- if ENABLE_ASAN == "y" %}
|
|
libasan6 \
|
|
{%- endif %}
|
|
dbus \
|
|
redis-server
|
|
|
|
# For sonic-config-engine Python 3 package
|
|
# Install pyangbind here, outside sonic-config-engine dependencies, as pyangbind causes enum34 to be installed.
|
|
# Then immediately uninstall enum34, as enum34 should not be installed for Python >= 3.4, as it causes a
|
|
# conflict with the new 'enum' module in the standard library
|
|
# https://github.com/robshakir/pyangbind/issues/232
|
|
RUN pip3 install pyangbind==0.8.1
|
|
RUN pip3 uninstall -y enum34
|
|
|
|
# Dependencies of restore_neighbors.py
|
|
RUN pip3 install \
|
|
scapy==2.4.4 \
|
|
pyroute2==0.5.14 \
|
|
netifaces==0.10.9
|
|
|
|
{% if docker_sonic_vs_debs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
COPY {%- for deb in docker_sonic_vs_debs.split(' ') %} debs/{{ deb }}{%- endfor %} /debs/
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; {%- for deb in docker_sonic_vs_debs.split(' ') %} dpkg_apt /debs/{{ deb }};{%- endfor %}
|
|
{%- endif %}
|
|
|
|
{% if docker_sonic_vs_pydebs.strip() -%}
|
|
# Copy locally-built Debian package dependencies
|
|
COPY {%- for deb in docker_sonic_vs_pydebs.split(' ') %} python-debs/{{ deb }}{%- endfor %} /debs/
|
|
|
|
# Install locally-built Debian packages and implicitly install their dependencies
|
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; {%- for deb in docker_sonic_vs_pydebs.split(' ') %} dpkg_apt /debs/{{ deb }};{%- endfor %}
|
|
{%- endif %}
|
|
|
|
{% if docker_sonic_vs_whls.strip() %}
|
|
# copy all whl PKGs first,
|
|
copy {%- for whl in docker_sonic_vs_whls.split(' ') %} python-wheels/{{ whl }}{%- endfor %} python-wheels/
|
|
|
|
# install PKGs after copying all PKGs to avoid dependency failure
|
|
# use py3 to find python3 package, which is forced by wheel as of now
|
|
{%- for whl in docker_sonic_vs_whls.split(' ') %}
|
|
RUN pip{% if 'py3' in whl %}3{% else %}2{% endif %} install python-wheels/{{ whl }}
|
|
{%- endfor %}
|
|
{% endif %}
|
|
|
|
# Clean up
|
|
RUN apt-get purge -y build-essential libssl-dev swig
|
|
RUN apt-get purge -y python3-dev
|
|
RUN apt-get purge -y libcairo2-dev libdbus-1-dev libgirepository1.0-dev libsystemd-dev pkg-config
|
|
RUN apt-get clean -y
|
|
RUN apt-get autoclean -y
|
|
RUN apt-get autoremove -y
|
|
RUN rm -rf /debs ~/.cache
|
|
|
|
RUN sed -ri 's/^(save .*$)/# \1/g; \
|
|
s/^daemonize yes$/daemonize no/; \
|
|
s/^logfile .*$/logfile ""/; \
|
|
s/^# syslog-enabled no$/syslog-enabled no/; \
|
|
s/^# unixsocket/unixsocket/; \
|
|
s/notify-keyspace-events ""/notify-keyspace-events AKE/; \
|
|
s/redis-server.sock/redis.sock/g; \
|
|
s/^client-output-buffer-limit pubsub [0-9]+mb [0-9]+mb [0-9]+/client-output-buffer-limit pubsub 0 0 0/ \
|
|
' /etc/redis/redis.conf
|
|
|
|
COPY ["50-default.conf", "/etc/rsyslog.d/"]
|
|
COPY ["start.sh", "orchagent.sh", "files/update_chassisdb_config", "/usr/bin/"]
|
|
COPY ["supervisord.conf.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["files/configdb-load.sh", "/usr/bin/"]
|
|
COPY ["files/arp_update", "/usr/bin/"]
|
|
COPY ["files/buffers_config.j2", "files/qos_config.j2", "files/arp_update_vars.j2", "files/copp_cfg.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["files/sonic_version.yml", "/etc/sonic/"]
|
|
COPY ["port_breakout_config_db.json", "/etc/sonic/"]
|
|
COPY ["database_config.json", "/etc/default/sonic-db/"]
|
|
COPY ["hostname.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["init_cfg.json.j2", "/usr/share/sonic/templates/"]
|
|
COPY ["default_chassis_cfg.json", "/etc/default/sonic-db/"]
|
|
COPY ["asic_table.json", "/etc/sonic/"]
|
|
COPY ["zero_profiles.json", "/etc/sonic"]
|
|
COPY ["buffermgrd.sh", "/usr/bin/"]
|
|
|
|
COPY ["platform.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/"]
|
|
COPY ["hwsku.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/Force10-S6000/"]
|
|
COPY ["hwsku.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/brcm_gearbox_vs/"]
|
|
COPY ["hwsku.json", "/usr/share/sonic/device/x86_64-kvm_x86_64-r0/Mellanox-SN2700/"]
|
|
|
|
RUN mkdir -p /etc/supervisor/conf.d/
|
|
RUN sonic-cfggen -a "{\"ENABLE_ASAN\":\"{{ENABLE_ASAN}}\"}" -t /usr/share/sonic/templates/supervisord.conf.j2 > /etc/supervisor/conf.d/supervisord.conf
|
|
RUN rm -f /usr/share/sonic/templates/supervisord.conf.j2
|
|
|
|
{%- if ENABLE_ASAN == "y" %}
|
|
RUN mkdir -p /var/log/asan
|
|
{%- endif %}
|
|
|
|
RUN echo "docker-sonic-vs" > /etc/hostname
|
|
RUN mkdir -p /etc/quagga
|
|
RUN touch /etc/quagga/zebra.conf
|
|
|
|
# disable integrated vtysh config
|
|
RUN rm /etc/frr/frr.conf
|
|
|
|
COPY ["frr/zebra.conf", "/etc/frr/"]
|
|
|
|
# Create /var/warmboot/teamd folder for teammgrd
|
|
RUN mkdir -p /var/warmboot/teamd
|
|
|
|
# Set PLATFORM and HWSKU environment variables
|
|
ENV PLATFORM=x86_64-kvm_x86_64-r0
|
|
ENV HWSKU=Force10-S6000
|
|
|
|
ENTRYPOINT ["/usr/local/bin/supervisord"]
|