diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 9dae719618..872f112289 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -30,6 +30,7 @@ jobs: matrix: os: [windows-latest, macOS-latest] build_type: [full] + fail-fast: false runs-on: ${{matrix.os}} if: github.event.action != 'labeled' || github.event.label.name == 'rebuild' steps: @@ -94,3 +95,27 @@ jobs: working-directory: ${{runner.workspace}}/build shell: bash run: cmake --build . --config $BUILD_TYPE --target package + + build_full_linux: + runs-on: ubuntu-latest + if: github.event.action != 'labeled' || github.event.label.name == 'rebuild' + steps: + - uses: actions/checkout@v1 + with: + submodules: true + fetch-depth: 1 + - name: Install apt packages + run: sudo apt install -y mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 + - name: Install python modules + shell: bash + run: pip install boto3 PyGithub + - name: Create Build Environment + run: cmake -E make_directory ${{runner.workspace}}/build + - name: Configure CMake + working-directory: ${{runner.workspace}}/build + shell: bash + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DBUILD_TOOLS:BOOLEAN=FALSE + - name: + shell: bash + working-directory: ${{runner.workspace}}/build + run: cmake --build . -- -j3 diff --git a/assignment-client/CMakeLists.txt b/assignment-client/CMakeLists.txt index b4042cf294..31d8c9e5a8 100644 --- a/assignment-client/CMakeLists.txt +++ b/assignment-client/CMakeLists.txt @@ -18,21 +18,23 @@ link_hifi_libraries( ) include_hifi_library_headers(procedural) -add_dependencies(${TARGET_NAME} oven) +if (BUILD_TOOLS) + add_dependencies(${TARGET_NAME} oven) -if (WIN32) - add_custom_command( - TARGET ${TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - $ - $) -else() - add_custom_command( - TARGET ${TARGET_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink - $ - $/oven) -endif() + if (WIN32) + add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + $ + $) + else() + add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink + $ + $/oven) + endif() +endif (BUILD_TOOLS) if (WIN32) package_libraries_for_deployment() diff --git a/cmake/macros/TargetPolyvox.cmake b/cmake/macros/TargetPolyvox.cmake index 576b454f57..1779ab21f7 100644 --- a/cmake/macros/TargetPolyvox.cmake +++ b/cmake/macros/TargetPolyvox.cmake @@ -21,6 +21,23 @@ macro(TARGET_POLYVOX) list(APPEND POLYVOX_LIBRARY_DEBUG ${POLYVOX_UTIL_LIBRARY_DEBUG}) select_library_configurations(POLYVOX) list(APPEND POLYVOX_INCLUDE_DIRS ${VCPKG_INSTALL_ROOT}/include) + if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + set(_LIB_GLOBS) + if(${CMAKE_BUILD_TYPE} STREQUAL "Debug") + set(_PV_LIBRARIES ${POLYVOX_LIBRARY_DEBUG}) + else() + set(_PV_LIBRARIES ${POLYVOX_LIBRARY_RELEASE}) + endif() + foreach(_lib ${_PV_LIBRARIES}) + list(APPEND _LIB_GLOBS ${_lib}*) + endforeach() + add_custom_command( + TARGET ${TARGET_NAME} + POST_BUILD + COMMAND cp + ARGS -d ${_LIB_GLOBS} ${CMAKE_BINARY_DIR} + ) + endif() endif() target_link_libraries(${TARGET_NAME} ${POLYVOX_LIBRARIES}) target_include_directories(${TARGET_NAME} PUBLIC ${POLYVOX_INCLUDE_DIRS}) diff --git a/cmake/macros/TargetQuazip.cmake b/cmake/macros/TargetQuazip.cmake index ee57fb4af3..fa05ec55eb 100644 --- a/cmake/macros/TargetQuazip.cmake +++ b/cmake/macros/TargetQuazip.cmake @@ -10,4 +10,4 @@ macro(TARGET_QUAZIP) find_library(QUAZIP_LIBRARY_DEBUG quazip5 PATHS ${VCPKG_INSTALL_ROOT}/debug/lib NO_DEFAULT_PATH) select_library_configurations(QUAZIP) target_link_libraries(${TARGET_NAME} ${QUAZIP_LIBRARIES}) -endmacro() \ No newline at end of file +endmacro() diff --git a/tools/ci-scripts/linux-gha/Dockerfile b/tools/ci-scripts/linux-gha/Dockerfile new file mode 100644 index 0000000000..6809ec0460 --- /dev/null +++ b/tools/ci-scripts/linux-gha/Dockerfile @@ -0,0 +1,32 @@ +FROM simonwalton1/hifi_base_ubuntu:1.1 +MAINTAINER DevOps Team (devops@highfidelity.io) + +EXPOSE 40100 40101 40102 +EXPOSE 40100/udp 40101/udp 40102/udp +EXPOSE 48000/udp 48001/udp 48002/udp 48003/udp 48004/udp 48005/udp 48006/udp + +RUN mkdir -p /etc/hifi/server/plugins /etc/hifi/server/resources /etc/hifi/server/imageformats/ && \ + ln -s /usr/local/Qt5.12.3/5.12.3/gcc_64/plugins/imageformats/* /etc/hifi/server/imageformats/ +COPY ./assignment-client /etc/hifi/server/ +#COPY ./oven /etc/hifi/server/ +COPY ./domain-server /etc/hifi/server/ +COPY ./plugins/hifiCodec/libhifiCodec.so /etc/hifi/server/plugins/ +RUN true +COPY ./plugins/pcmCodec/libpcmCodec.so /etc/hifi/server/plugins/ +# Dummy statement +RUN true +COPY ./*.so /lib/ +RUN ln -sf /lib/libquazip5.so /lib/libquazip5.so.1 +COPY ./domain-server/resources/ /etc/hifi/server/resources/ +RUN true +COPY ./hifi.conf /etc/supervisor/conf.d/hifi.conf +RUN for fn in /usr/local/Qt5.12.3/5.12.3/gcc_64/plugins/imageformats/*.so; do \ + if [ ! -x $fn ]; then ln -s $fn /etc/hifi/server/imageformats; fi; done +RUN chmod +x /etc/hifi/server/domain-server +RUN chmod +x /etc/hifi/server/assignment-client + +# Ensure `domain-server` and `assignment-client` execute. +RUN /etc/hifi/server/domain-server --version > /etc/hifi/server/version && \ + /etc/hifi/server/assignment-client --version >> /etc/hifi/server/version + +CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/hifi.conf"] diff --git a/tools/ci-scripts/linux-gha/Dockerfile_linuxbase b/tools/ci-scripts/linux-gha/Dockerfile_linuxbase new file mode 100644 index 0000000000..be38fef91a --- /dev/null +++ b/tools/ci-scripts/linux-gha/Dockerfile_linuxbase @@ -0,0 +1,24 @@ +# Docker file for hifi_base_ubuntu:1.1 +FROM ubuntu:18.04 +MAINTAINER DevOps Team (devops@highfidelity.io) + +EXPOSE 40100 40101 40102 +EXPOSE 40100/udp 40101/udp 40102/udp +EXPOSE 48000/udp 48001/udp 48002/udp 48003/udp 48004/udp 48005/udp 48006/udp + +RUN apt-get update && apt-get install -y software-properties-common apt-utils curl +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 15FF1AAE && add-apt-repository "deb http://debian.highfidelity.com stable main" +RUN echo UTC >/etc/timezone +# Installing via dependency causes interactive hang: +RUN apt-get -y install tzdata +RUN curl http://archive.ubuntu.com/ubuntu/pool/main/b/bison/libbison-dev_3.0.4.dfsg-1build1_amd64.deb >/tmp/libbison-dev.deb +RUN dpkg -i /tmp/libbison-dev.deb && rm /tmp/libbison-dev.deb +RUN apt-get update && apt-get -y --allow-unauthenticated install libglib2.0-0 libgl1-mesa-dev gdb python-pip build-essential \ + openssl libssl-dev libssl1.0.0 unzip flex bison gperf perl libsqlite3-dev \ + libfontconfig1-dev libicu-dev libfreetype6 libssl-dev libpng-dev libjpeg-dev \ + python libx11-dev libxext-dev libtbb2 hifiqt5.12.3 \ + ntp unzip libwww-perl libdatetime-perl make pkg-config libnss3 libxi6 \ + libxcursor1 libxcomposite1 libasound2 libxtst6 libxslt1.1 supervisor +# Additional packages for v1.1: +RUN apt-get -y --allow-unauthenticated install mesa-common-dev libegl1 libglvnd-dev \ + libdouble-conversion1 libpulse0 diff --git a/tools/ci-scripts/linux-gha/hifi.conf b/tools/ci-scripts/linux-gha/hifi.conf new file mode 100644 index 0000000000..32066617d6 --- /dev/null +++ b/tools/ci-scripts/linux-gha/hifi.conf @@ -0,0 +1,60 @@ +[supervisord] +user=root +nodaemon=true + +[program:domain-server] +command=/etc/hifi/server/domain-server +autorestart=unexpected +directory=/etc/hifi/server +stderr_logfile=/var/log/hifi-err.log +stdout_logfile=/var/log/hifi-out.log + +[program:audio-mixer] +command=/etc/hifi/server/assignment-client -t 0 -a localhost -p 48000 +autorestart=unexpected +directory=/etc/hifi/server +stderr_logfile=/var/log/hifi-err.log +stdout_logfile=/var/log/hifi-out.log + +[program:avatar-mixer] +command=/etc/hifi/server/assignment-client -t 1 -a localhost -p 48001 +autorestart=unexpected +directory=/etc/hifi/server +stderr_logfile=/var/log/hifi-err.log +stdout_logfile=/var/log/hifi-out.log + +[program:entities-server] +command=/etc/hifi/server/assignment-client -t 6 -a localhost -p 48006 +autorestart=unexpected +directory=/etc/hifi/server +stderr_logfile=/var/log/hifi-err.log +stdout_logfile=/var/log/hifi-out.log + +[program:asset-server] +command=/etc/hifi/server/assignment-client -t 3 -a localhost -p 48003 +autorestart=unexpected +directory=/etc/hifi/server +stderr_logfile=/var/log/hifi-err.log +stdout_logfile=/var/log/hifi-out.log + +[program:entity-script-server] +command=/etc/hifi/server/assignment-client -t 5 -a localhost -p 48005 +autorestart=unexpected +directory=/etc/hifi/server +stderr_logfile=/var/log/hifi-err.log +stdout_logfile=/var/log/hifi-out.log + +[program:messages-mixer] +command=/etc/hifi/server/assignment-client -t 4 -a localhost -p 48004 +autorestart=unexpected +directory=/etc/hifi/server +stderr_logfile=/var/log/hifi-err.log +stdout_logfile=/var/log/hifi-out.log + +[program:scripted-agent] +command=/etc/hifi/server/assignment-client -t 2 -a localhost --max 100 +autorestart=unexpected +directory=/etc/hifi/server +stderr_logfile=/var/log/hifi-err.log +stdout_logfile=/var/log/hifi-out.log +