From 6fd729f12ccad6e8d3e08e1a2b81db1c07138d01 Mon Sep 17 00:00:00 2001 From: Alexander Kanevskiy Date: Fri, 23 Aug 2019 17:33:25 +0300 Subject: [PATCH] Cleanup and fixes for FPGA initcontainer - Simplify initcontainer, we don't need OPAE anymore - Remove old initcontainer related files --- .../intel-fpga-initcontainer.Dockerfile | 65 ++++++--------- .../fpga_plugin/build-initcontainer-image.sh | 32 -------- .../intel-fpga-initcontainer.Dockerfile | 82 ------------------- 3 files changed, 23 insertions(+), 156 deletions(-) delete mode 100755 deployments/fpga_plugin/build-initcontainer-image.sh delete mode 100644 deployments/fpga_plugin/intel-fpga-initcontainer.Dockerfile diff --git a/build/docker/intel-fpga-initcontainer.Dockerfile b/build/docker/intel-fpga-initcontainer.Dockerfile index 95c5e318..211f8e19 100644 --- a/build/docker/intel-fpga-initcontainer.Dockerfile +++ b/build/docker/intel-fpga-initcontainer.Dockerfile @@ -11,70 +11,51 @@ ARG CLEAR_LINUX_BASE=clearlinux/golang:latest FROM ${CLEAR_LINUX_BASE} as builder ARG CLEAR_LINUX_VERSION= -ARG OPAE_RElEASE=1.3.2-1 RUN swupd update --no-boot-update ${CLEAR_LINUX_VERSION} - -# Fetch dependencies and source code -RUN swupd bundle-add wget c-basic devpkg-json-c devpkg-util-linux devpkg-hwloc doxygen Sphinx && \ - mkdir -p /usr/src/opae && \ - cd /usr/src/opae && \ - wget https://github.com/OPAE/opae-sdk/archive/${OPAE_RElEASE}.tar.gz && \ - tar xf *.tar.gz - -# Build OPAE -RUN cd /usr/src/opae/opae-sdk-${OPAE_RElEASE} && \ - mkdir build && \ - cd build && \ - cmake .. -DBUILD_ASE=0 -DCMAKE_SKIP_BUILD_RPATH=1 -DCMAKE_INSTALL_PREFIX=/opt/intel/fpga-sw/opae && \ - make xfpga board_rc fpgaconf fpgainfo - -# Install clean os-core and rsync bundle in target directory RUN mkdir /install_root \ - && swupd os-install ${CLEAR_LINUX_VERSION} \ - --path /install_root --statedir /swupd-state \ - --bundles=os-core,rsync --no-boot-update \ + && swupd os-install \ + ${CLEAR_LINUX_VERSION} \ + --path /install_root \ + --statedir /swupd-state \ + --bundles=os-core,rsync \ + --no-boot-update \ && rm -rf /install_root/var/lib/swupd/* # Build CRI Hook ARG DIR=/go/src/github.com/intel/intel-device-plugins-for-kubernetes WORKDIR $DIR COPY . . -RUN cd cmd/fpga_crihook && go install && chmod a+x /go/bin/fpga_crihook +RUN cd $DIR/cmd/fpga_crihook && \ + go install && \ + chmod a+x /go/bin/fpga_crihook && \ + cd $DIR/cmd/fpga_tool && \ + go install && \ + chmod a+x /go/bin/fpga_tool && \ + install -D ${DIR}/LICENSE /install_root/usr/local/share/package-licenses/intel-device-plugins-for-kubernetes/LICENSE # Minimal result image FROM scratch as final COPY --from=builder /install_root / -ARG SRC_DIR=/opt/intel/fpga-sw.src +ARG SRC_DIR=/usr/local/fpga-sw.src ARG DST_DIR=/opt/intel/fpga-sw -# OPAE -# fpgaconf and fpgainfo -COPY --from=builder /usr/src/opae/opae-sdk-*/build/bin/fpga* $SRC_DIR/opae/bin/ -# libxfpga.so, libboard_rc.so, libopae-c.so*, libbitstream.so* -COPY --from=builder /usr/src/opae/opae-sdk-*/build/lib/lib*.so* $SRC_DIR/opae/lib/ -COPY --from=builder /usr/lib64/libjson-c.so* $SRC_DIR/opae/lib/ -COPY --from=builder /usr/lib64/libuuid.so* $SRC_DIR/opae/lib/ - -RUN echo -e "#!/bin/sh\n\ -export LD_LIBRARY_PATH=$DST_DIR/opae/lib\n\ -$DST_DIR/opae/bin/fpgaconf \"\$@\"">> $SRC_DIR/opae/fpgaconf-wrapper && \ - echo -e "#!/bin/sh\n\ -export LD_LIBRARY_PATH=$DST_DIR/opae/lib\n\ -$DST_DIR/opae/bin/fpgainfo \"\$@\"">> $SRC_DIR/opae/fpgainfo-wrapper && \ - chmod +x $SRC_DIR/opae/*-wrapper - - # CRI hook ARG CRI_HOOK=intel-fpga-crihook -ARG CRI_HOOK_SRC=$SRC_DIR/$CRI_HOOK -ARG CRI_HOOK_DST=$DST_DIR/$CRI_HOOK +ARG FPGA_TOOL=fpgatool ARG HOOK_CONF=$CRI_HOOK.json ARG HOOK_CONF_SRC=$SRC_DIR/$HOOK_CONF ARG HOOK_CONF_DST=$DST_DIR/$HOOK_CONF -COPY --from=builder /go/bin/fpga_crihook $CRI_HOOK_SRC +COPY --from=builder /go/bin/fpga_crihook $SRC_DIR/$CRI_HOOK +COPY --from=builder /go/bin/fpga_tool $SRC_DIR/$FPGA_TOOL + +RUN echo -e "{\n\ + \"hook\" : \"$DST_DIR/$CRI_HOOK\",\n\ + \"stage\" : [ \"prestart\" ],\n\ + \"annotation\": [ \"fpga.intel.com/region\" ]\n\ +}\n">>$HOOK_CONF_SRC RUN echo -e "#!/bin/sh\n\ rsync -a --delete $SRC_DIR/ $DST_DIR\n\ diff --git a/deployments/fpga_plugin/build-initcontainer-image.sh b/deployments/fpga_plugin/build-initcontainer-image.sh deleted file mode 100755 index b695fccd..00000000 --- a/deployments/fpga_plugin/build-initcontainer-image.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -e - -BUILDER=$1 - -# check if DCP tarball is present -DCP_TARBALL=a10_gx_pac_ias_1_2_pv_rte_installer.tar.gz -if [ ! -f ${DCP_TARBALL} ] ; then - echo "ERROR: 'Acceleration Stack for Runtime' tarball $DCP_TARBALL not present" - echo "ERROR: Please, download it from https://www.intel.com/content/www/us/en/programmable/solutions/acceleration-hub/downloads.html and run this script again" - exit 1 -fi - -# build CRI hook -HOOK=fpga_crihook -make -C ../../ $HOOK -cp ../../cmd/$HOOK/$HOOK ./intel-fpga-crihook - -# build initcontainer image -WORKSPACE=`realpath .` -IMG="intel-fpga-initcontainer" -TAG=$(git rev-parse HEAD) - -if [ -z "${BUILDER}" -o "${BUILDER}" = 'docker' ] ; then - docker build --rm -t $IMG:devel -f $WORKSPACE/$IMG.Dockerfile $WORKSPACE - docker tag $IMG:devel $IMG:$TAG -elif [ "${BUILDER}" = 'buildah' ] ; then - buildah bud -t $IMG:devel -f $WORKSPACE/$IMG.Dockerfile --layers $WORKSPACE - buildah tag $IMG:devel $IMG:$TAG -else - (>&2 echo "Unknown builder ${BUILDER}") - exit 1 -fi diff --git a/deployments/fpga_plugin/intel-fpga-initcontainer.Dockerfile b/deployments/fpga_plugin/intel-fpga-initcontainer.Dockerfile deleted file mode 100644 index a4d8f160..00000000 --- a/deployments/fpga_plugin/intel-fpga-initcontainer.Dockerfile +++ /dev/null @@ -1,82 +0,0 @@ -### 1. Temporary image to prepare AOCL and OPAE components -FROM centos:centos7.6.1810 as temporary - -# install aocl and opae deps -RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 -RUN yum -y install which perl uuid libuuid-devel json-c rsync - -ADD a10_gx_pac_ias_1_2_pv_rte_installer.tar.gz $WORKDIR - -# install opae -RUN tar -zxf a10_gx_pac_ias_1_2_pv_rte_installer/components/a10_gx_pac_ias_1_2_pv.tar.gz sw - -# RUN yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -# RUN yum -y install hwloc-libs -# --nodeps workarround just for libhwloc.so.5 dependency by fpga_dma_test in opae-tools-extra-1.1.2-1.x86_64 -RUN rpm -ihv --nodeps sw/opae-libs*.rpm sw/opae-tools*.rpm sw/opae-devel*.rpm - -# install aocl rte -RUN a10_gx_pac_ias_1_2_pv_rte_installer/components/aocl-pro-rte-17.1.1.273-linux.run --mode unattended --installdir / --accept_eula 1 - -# unpack opencl_bsp -RUN tar -zxf a10_gx_pac_ias_1_2_pv_rte_installer/components/a10_gx_pac_ias_1_2_pv.tar.gz opencl/opencl_bsp.tar.gz -RUN tar -zxf opencl/opencl_bsp.tar.gz && rm -rf opencl_bsp/hardware - -### 2. Final initcontainer image -FROM clearlinux:base as final - -ARG SRC_DIR=/opt/intel/fpga-sw.src -ARG DST_DIR=/opt/intel/fpga-sw - -# OpenCL -COPY --from=temporary aclrte-linux64 $SRC_DIR/opencl/aclrte-linux64 -COPY --from=temporary opencl_bsp $SRC_DIR/opencl/opencl_bsp - -RUN echo -e "#!/bin/sh\n\ -export INTEL_FPGA_ROOT=$DST_DIR\n\ -export FPGA_OPENCL_ROOT=\$INTEL_FPGA_ROOT/opencl\n\ -export AOCL_BOARD_PACKAGE_ROOT=\$FPGA_OPENCL_ROOT/opencl_bsp\n\ -export INTELFPGAOCLSDKROOT=\$FPGA_OPENCL_ROOT/aclrte-linux64\n\ -export LD_LIBRARY_PATH=\$AOCL_BOARD_PACKAGE_ROOT/linux64/lib:\$INTEL_FPGA_ROOT/opae/lib\n\ -\$INTELFPGAOCLSDKROOT/bin/aocl \"\$@\"" >> $SRC_DIR/opencl/aocl-wrapper -RUN chmod +x $SRC_DIR/opencl/aocl-wrapper - -# OPAE -COPY --from=temporary /usr/bin/fpgaconf $SRC_DIR/opae/bin/ -COPY --from=temporary /usr/bin/packager $SRC_DIR/opae/bin/ -COPY --from=temporary /usr/lib64/libopae-c.so* $SRC_DIR/opae/lib/ -COPY --from=temporary /usr/lib64/libjson-c.so* $SRC_DIR/opae/lib/ -COPY --from=temporary /usr/lib64/libuuid.so* $SRC_DIR/opae/lib/ - -RUN echo -e "#!/bin/sh\n\ -export LD_LIBRARY_PATH=$DST_DIR/opae/lib\n\ -$DST_DIR/opae/bin/fpgaconf \"\$@\"">> $SRC_DIR/opae/fpgaconf-wrapper -RUN chmod +x $SRC_DIR/opae/fpgaconf-wrapper - -# CRI hook - -ARG CRI_HOOK=intel-fpga-crihook -ARG CRI_HOOK_SRC=$SRC_DIR/$CRI_HOOK -ARG CRI_HOOK_DST=$DST_DIR/$CRI_HOOK -ARG HOOK_CONF=$CRI_HOOK.json -ARG HOOK_CONF_SRC=$SRC_DIR/$HOOK_CONF -ARG HOOK_CONF_DST=$DST_DIR/$HOOK_CONF - -COPY ./$CRI_HOOK $CRI_HOOK_SRC - -RUN echo -e "{\n\ - \"hook\" : \"$CRI_HOOK_DST\",\n\ - \"stage\" : [ \"prestart\" ],\n\ - \"annotation\": [ \"fpga.intel.com/region\" ]\n\ -}\n">>$HOOK_CONF_SRC - -# Setup - -COPY --from=temporary /usr/bin/rsync /usr/bin/rsync - -RUN echo -e "#!/bin/sh\n\ -rsync -a --delete $SRC_DIR/ $DST_DIR\n\ -ln -sf $HOOK_CONF_DST /etc/containers/oci/hooks.d/$HOOK_CONF\n\ -rm $DST_DIR/deploy.sh\n\ -">> $SRC_DIR/deploy.sh -RUN chmod +x $SRC_DIR/deploy.sh