diff --git a/.github/workflows/ci-py-only.yml b/.github/workflows/ci-py-only.yml new file mode 100644 index 0000000000..a312244159 --- /dev/null +++ b/.github/workflows/ci-py-only.yml @@ -0,0 +1,95 @@ +name: ci + +on: + push: + paths: + - 'src/**' + - 'test/**' + - 'conda/**' + - 'cmake/**' + - '.github/workflows/ci.yml' + pull_request: + +jobs: + activate: + runs-on: ubuntu-latest + if: | + github.repository == 'IfcOpenShell/IfcOpenShell' && + !contains(github.event.head_commit.message, 'skip ci') + steps: + - run: echo ok go + + build: + runs-on: ubuntu-20.04 + needs: activate + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + - name: Install C++ dependencies + run: | + sudo apt update + sudo apt-get install --no-install-recommends \ + git cmake gcc g++ \ + libboost-date-time-dev \ + libboost-filesystem-dev \ + libboost-iostreams-dev \ + libboost-program-options-dev \ + libboost-regex-dev \ + libboost-system-dev \ + libboost-thread-dev \ + python3-all-dev python3-pip \ + swig libpcre3-dev libxml2-dev \ + libtbb-dev nlohmann-json3-dev \ + libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev libocct-data-exchange-dev \ + libhdf5-dev libcgal-dev + + - name: ccache + uses: hendrikmuhs/ccache-action@v1 + + - name: Build ifcopenshell + run: | + mkdir build && cd build + cmake \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH=/usr \ + -DCMAKE_SYSTEM_PREFIX_PATH=/usr \ + -DOCC_INCLUDE_DIR=/usr/include/opencascade \ + -DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \ + -DPYTHON_EXECUTABLE:FILEPATH=/usr/bin/python3 \ + -DPYTHON_INCLUDE_DIR:PATH=/usr/include/python3.8 \ + -DPYTHON_LIBRARY:FILEPATH=/usr/lib/x86_64-linux-gnu/libpython3.8.so \ + -DCOLLADA_SUPPORT=Off \ + "-DSCHEMA_VERSIONS=2x3;4" \ + -DBUILD_CONVERT=Off \ + -DGLTF_SUPPORT=On \ + -DJSON_INCLUDE_DIR=/usr/include \ + -DCGAL_INCLUDE_DIR=/usr/include \ + -DGMP_INCLUDE_DIR=/usr/include \ + -DMPFR_INCLUDE_DIR=/usr/include \ + -DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \ + -DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \ + -DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \ + ../cmake + sudo make -j $(nproc) + sudo make install + + - name: Install Python dependencies + run: | + sudo /usr/bin/python -m pip install -U pip + sudo /usr/bin/python -m pip install xmlschema numpy lxml + sudo /usr/bin/python -m pip install src/bcf + sudo /usr/bin/python -m pip install pytest + sudo /usr/bin/python -m pip install isodate + sudo /usr/bin/python -m pip install lark + sudo /usr/bin/python -m pip install networkx + + - name: Test + run: | + cd test + sudo /usr/bin/python tests.py + cd ../src/ifcopenshell-python + mv ifcopenshell ifcopenshell-local # Force testing on installed module + make test