From c8306aa4b7ae43ba13325baa3b4eb1829a36b675 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Tue, 31 Aug 2021 13:06:14 +0200 Subject: [PATCH 01/34] ci: remove Travis --- .travis.yml | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 24d66a6..0000000 --- a/.travis.yml +++ /dev/null @@ -1,30 +0,0 @@ -dist: bionic -language: python -sudo: enabled -notifications: - email: false -python: - - "3.5" - - "3.6" - - "3.7" - - "3.8" - -before_install: - # install libvmi dependencies - - sudo apt-get update -qq - - > - sudo apt-get install -qq cmake bison flex check libjson-c-dev libglib2.0-dev - libxenstore3.0 libxen-dev - libvirt-dev - # clone, compile and install libvmi - - git clone https://github.com/libvmi/libvmi /tmp/libvmi - # avoid changing directory - - (mkdir /tmp/libvmi/build && cd /tmp/libvmi/build && cmake .. -DCMAKE_INSTALL_PREFIX=/usr && make && sudo make install) - -install: - - pip install . - - pip install flake8 - -script: - - flake8 --show-source --statistics --max-line-length=127 - - python -c 'from libvmi import Libvmi' From e0d4435e2b013aa3e003cf658d455ddc7c5f9582 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Tue, 31 Aug 2021 13:17:21 +0200 Subject: [PATCH 02/34] ci: switch to github actions --- .github/workflows/ci.yml | 83 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..2b5ec42 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,83 @@ +# Main CI +name: CI + +on: + push: + branches: + - master + tags: + - '*' + pull_request: + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Set up Python 3.7 🐍 + uses: actions/setup-python@v1 + with: + python-version: '3.7' + + - name: install flake8 + run: pip install flake8 + + - name: lint + run: flake8 --show-source --statistics --max-line-length=127 + + build: + runs-on: ubuntu-latest + strategy: + matrix: + python: ['3.6', '3.7', '3.8', '3.9'] + + steps: + - uses: actions/checkout@v2 + with: + path: python-libvmi + + - name: Set up Python 🐍 + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python }} + + - name: install dependencies + run: sudo apt-get install -qq cmake bison flex check libjson-c-dev libglib2.0-dev libxenstore3.0 libxen-dev libvirt-dev + + - name: clone libvmi + uses: actions/checkout@v2 + with: + repository: libvmi/libvmi + path: libvmi + + - name: install libvmi + run: | + cmake -B build -DCMAKE_INSTALL_PREFIX=/usr . + cmake --build build + sudo cmake --build build --target install + working-directory: libvmi + + - name: install python-libvmi 🔨 + run: | + pip install . + working-directory: python-libvmi + + - name: smoke test + run: python -c 'from libvmi import Libvmi' + + - name: build sdist and bdist_wheel + run: | + python -m pip install wheel + python setup.py sdist + python setup.py bdist_wheel + working-directory: python-libvmi + + - name: publish on PyPI 🚀 + # push on master and tag is 'v*' + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + uses: pypa/gh-action-pypi-publish@v1.3.1 + with: + user: __token__ + password: ${{ secrets.ACCESS_TOKEN }} + packages_dir: python-libvmi/dist/ \ No newline at end of file From c12b7755293b9f6883fd1edcd17aa9b0af646d23 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Wed, 1 Dec 2021 08:54:21 +0100 Subject: [PATCH 03/34] fix VMI_EVENTS_VERSION to 0x8 --- .github/workflows/ci.yml | 2 +- libvmi/events_cdef.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2b5ec42..558c5a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,4 +80,4 @@ jobs: with: user: __token__ password: ${{ secrets.ACCESS_TOKEN }} - packages_dir: python-libvmi/dist/ \ No newline at end of file + packages_dir: python-libvmi/dist/ diff --git a/libvmi/events_cdef.h b/libvmi/events_cdef.h index 0e77161..89eb0b4 100644 --- a/libvmi/events_cdef.h +++ b/libvmi/events_cdef.h @@ -1,4 +1,4 @@ -#define VMI_EVENTS_VERSION 0x00000007 +#define VMI_EVENTS_VERSION 0x00000008 typedef uint16_t vmi_event_type_t; From 80c2d75935c6cd1f35728b7509cdec094951a970 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Wed, 1 Dec 2021 09:01:33 +0100 Subject: [PATCH 04/34] README: add Github Actions CI status badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5cd3106..1352105 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Libvmi Python bindings [![Join the chat at https://gitter.im/libvmi/python](https://badges.gitter.im/libvmi/python.svg)](https://gitter.im/libvmi/python?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![Build Status](https://travis-ci.org/libvmi/python.svg?branch=master)](https://travis-ci.org/libvmi/python) +[![CI](https://github.com/libvmi/python/actions/workflows/ci.yml/badge.svg)](https://github.com/libvmi/python/actions/workflows/ci.yml) If you'd rather perform introspection using Python instead of C, then these bindings will help get you going. From 1287b9a2a2c3074424e98cd9a3c894f9fa598003 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Wed, 1 Dec 2021 09:07:06 +0100 Subject: [PATCH 05/34] ci: fix installing dependencies --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 558c5a3..6493cf0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -43,7 +43,7 @@ jobs: python-version: ${{ matrix.python }} - name: install dependencies - run: sudo apt-get install -qq cmake bison flex check libjson-c-dev libglib2.0-dev libxenstore3.0 libxen-dev libvirt-dev + run: sudo apt-get update && sudo apt-get install -qq cmake bison flex check libjson-c-dev libglib2.0-dev libxenstore3.0 libxen-dev libvirt-dev - name: clone libvmi uses: actions/checkout@v2 From b8c1fb28097793bbb59d694458e1130c0c00b136 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Wed, 1 Dec 2021 08:54:44 +0100 Subject: [PATCH 06/34] setup: release 3.5 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 532f4dc..94d3a13 100755 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ def read_file(filename): setup( name='libvmi', - version='3.4', + version='3.5', description='Python interface to LibVMI', long_description=read_file('README.md'), long_description_content_type='text/markdown', From 81eee648e1c4b9cfe12fed806c62b1a0bc92ea81 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 8 Apr 2022 10:29:25 +0200 Subject: [PATCH 07/34] ci: add publish job to publish package on PyPI --- .github/workflows/ci.yml | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6493cf0..88f4355 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -73,11 +73,28 @@ jobs: python setup.py bdist_wheel working-directory: python-libvmi - - name: publish on PyPI 🚀 - # push on master and tag is 'v*' - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + publish: + needs: build + runs-on: ubuntu-latest + + # if push on master and tag is 'v*' + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + steps: + - uses: actions/checkout@v1 + + - name: Set up Python 3.7 🐍 + uses: actions/setup-python@v1 + with: + python-version: '3.7' + + - name: Build 🔨 + run: | + python -m pip install wheel + python setup.py sdist + python setup.py bdist_wheel + + - name: Publish on PyPI 🚀 uses: pypa/gh-action-pypi-publish@v1.3.1 with: user: __token__ password: ${{ secrets.ACCESS_TOKEN }} - packages_dir: python-libvmi/dist/ From 4776a85b2a8fa89840b8b9ce2a77d65df1a2f3e1 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 8 Apr 2022 10:34:21 +0200 Subject: [PATCH 08/34] ci: pin libvmi to a specific commit to avoid CI breakage --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 88f4355..47f9df4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,6 +50,8 @@ jobs: with: repository: libvmi/libvmi path: libvmi + # pinned to a specific commit to avoid breakage + ref: 'f9db2f45670b08c0f142a1d2d31e0b15e724815c' - name: install libvmi run: | From 16e3fd366bfc29b62d468b9e4876d062948d07b6 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 8 Apr 2022 10:42:16 +0200 Subject: [PATCH 09/34] ci: add libvmi-setup common action for workflows --- .github/actions/libvmi-setup/action.yml | 25 +++++++++++++++++++++++++ .github/workflows/ci.yml | 24 ++++++------------------ 2 files changed, 31 insertions(+), 18 deletions(-) create mode 100644 .github/actions/libvmi-setup/action.yml diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml new file mode 100644 index 0000000..b58feff --- /dev/null +++ b/.github/actions/libvmi-setup/action.yml @@ -0,0 +1,25 @@ +name: 'Libvmi setup' +description: 'This actions installs LibVMI on the system' +author: 'Mathieu Tarral' +runs: + using: 'composite' + steps: + - name: install dependencies + shell: bash + run: sudo apt-get update && sudo apt-get install -qq cmake bison flex check libjson-c-dev libglib2.0-dev libxenstore3.0 libxen-dev libvirt-dev + + - name: clone libvmi + uses: actions/checkout@v2 + with: + repository: libvmi/libvmi + path: libvmi + # pinned to a specific commit to avoid breakage + ref: 'f9db2f45670b08c0f142a1d2d31e0b15e724815c' + + - name: install libvmi + shell: bash + run: | + cmake -B build -DCMAKE_INSTALL_PREFIX=/usr . + cmake --build build + sudo cmake --build build --target install + working-directory: libvmi diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 47f9df4..590cde1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,29 +37,14 @@ jobs: with: path: python-libvmi + - name: Install Libvmi + uses: ./python-libvmi/.github/actions/libvmi-setup + - name: Set up Python 🐍 uses: actions/setup-python@v1 with: python-version: ${{ matrix.python }} - - name: install dependencies - run: sudo apt-get update && sudo apt-get install -qq cmake bison flex check libjson-c-dev libglib2.0-dev libxenstore3.0 libxen-dev libvirt-dev - - - name: clone libvmi - uses: actions/checkout@v2 - with: - repository: libvmi/libvmi - path: libvmi - # pinned to a specific commit to avoid breakage - ref: 'f9db2f45670b08c0f142a1d2d31e0b15e724815c' - - - name: install libvmi - run: | - cmake -B build -DCMAKE_INSTALL_PREFIX=/usr . - cmake --build build - sudo cmake --build build --target install - working-directory: libvmi - - name: install python-libvmi 🔨 run: | pip install . @@ -84,6 +69,9 @@ jobs: steps: - uses: actions/checkout@v1 + - name: Install Libvmi + uses: ./.github/actions/libvmi-setup + - name: Set up Python 3.7 🐍 uses: actions/setup-python@v1 with: From 26573c497a668f31c9aa9d6d6625a8d64189c182 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 8 Apr 2022 11:08:50 +0200 Subject: [PATCH 10/34] update events_cdef.h to match latest libvmi ABI --- .github/actions/libvmi-setup/action.yml | 2 +- libvmi/events_cdef.h | 85 ++++++++++++++++++------- 2 files changed, 62 insertions(+), 25 deletions(-) diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml index b58feff..cb546ab 100644 --- a/.github/actions/libvmi-setup/action.yml +++ b/.github/actions/libvmi-setup/action.yml @@ -14,7 +14,7 @@ runs: repository: libvmi/libvmi path: libvmi # pinned to a specific commit to avoid breakage - ref: 'f9db2f45670b08c0f142a1d2d31e0b15e724815c' + ref: '45b32c0f0003b4037700a1b534879b7d8bee5de0' - name: install libvmi shell: bash diff --git a/libvmi/events_cdef.h b/libvmi/events_cdef.h index 89eb0b4..12ecab1 100644 --- a/libvmi/events_cdef.h +++ b/libvmi/events_cdef.h @@ -1,17 +1,19 @@ -#define VMI_EVENTS_VERSION 0x00000008 +#define VMI_EVENTS_VERSION 0x00000009 typedef uint16_t vmi_event_type_t; -#define VMI_EVENT_INVALID 0 -#define VMI_EVENT_MEMORY 1 -#define VMI_EVENT_REGISTER 2 -#define VMI_EVENT_SINGLESTEP 3 -#define VMI_EVENT_INTERRUPT 4 -#define VMI_EVENT_GUEST_REQUEST 5 -#define VMI_EVENT_CPUID 6 -#define VMI_EVENT_DEBUG_EXCEPTION 7 -#define VMI_EVENT_PRIVILEGED_CALL 8 -#define VMI_EVENT_DESCRIPTOR_ACCESS 9 +#define VMI_EVENT_INVALID 0 +#define VMI_EVENT_MEMORY 1 /**< Read/write/execute on a region of memory */ +#define VMI_EVENT_REGISTER 2 /**< Read/write of a specific register */ +#define VMI_EVENT_SINGLESTEP 3 /**< Instructions being executed on a set of VCPUs */ +#define VMI_EVENT_INTERRUPT 4 /**< Interrupts being delivered */ +#define VMI_EVENT_GUEST_REQUEST 5 /**< Guest-requested event */ +#define VMI_EVENT_CPUID 6 /**< CPUID event */ +#define VMI_EVENT_DEBUG_EXCEPTION 7 /**< Debug exception event */ +#define VMI_EVENT_PRIVILEGED_CALL 8 /**< Privileged call (ie. SMC on ARM) */ +#define VMI_EVENT_DESCRIPTOR_ACCESS 9 /**< A descriptor table register was accessed */ +#define VMI_EVENT_FAILED_EMULATION 10 /**< Emulation failed when requested by VMI_EVENT_RESPONSE_EMULATE */ +#define VMI_EVENT_DOMAIN_WATCH 11 /**< Watch create/destroy events */ typedef uint8_t vmi_reg_access_t; @@ -30,12 +32,11 @@ typedef struct { uint8_t onchange; vmi_reg_access_t in_access; vmi_reg_access_t out_access; - uint32_t _pad; + ...; reg_t value; - union { - reg_t previous; - uint32_t msr; - }; + reg_t previous; + uint32_t msr; + ...; } reg_event_t; @@ -61,7 +62,7 @@ typedef struct { vmi_mem_access_t out_access; uint8_t gptw; uint8_t gla_valid; - uint8_t _pad[3]; + ...; addr_t gla; addr_t offset; } mem_access_event_t; @@ -75,20 +76,41 @@ typedef uint8_t interrupts_t; // interrupt_event_t typedef struct { interrupts_t intr; + ...; union { /* INT3 */ struct { - ...; + /* IN/OUT */ + uint32_t insn_length; /**< The instruction length to be used when reinjecting */ + + /** + * OUT + * + * Toggle, controls whether interrupt is re-injected after callback. + * Set reinject to 1 to deliver it to guest ("pass through" mode) + * Set reinject to 0 to swallow it silently without + */ int8_t reinject; ...; + + addr_t gla; /**< (Global Linear Address) == RIP of the trapped instruction */ + addr_t gfn; /**< (Guest Frame Number) == 'physical' page where trap occurred */ + addr_t offset; /**< Offset in bytes (relative to GFN) */ + + ...; }; - ...; - }; - addr_t gla; - addr_t gfn; - addr_t offset; + /* INT_NEXT */ + struct { + /* OUT */ + uint32_t vector; + uint32_t type; + uint32_t error_code; + ...; + uint64_t cr2; + }; + }; } interrupt_event_t; // single_step_event_t @@ -114,11 +136,24 @@ typedef struct { // cpuid_event_t typedef struct { + uint32_t insn_length; /**< Length of the reported instruction */ + uint32_t leaf; + uint32_t subleaf; ...; } cpuid_event_t; // descriptor_event_t typedef struct desriptor_event { + union { + struct { + uint32_t instr_info; /* VMX: VMCS Instruction-Information */ + ...; + uint64_t exit_qualification; /* VMX: VMCS Exit Qualification */ + }; + uint64_t exit_info; /* SVM: VMCB EXITINFO */ + }; + uint8_t descriptor; /* VMI_DESCRIPTOR_* */ + uint8_t is_write; ...; } descriptor_event_t; @@ -152,10 +187,12 @@ struct vmi_event { uint32_t version; vmi_event_type_t type; uint16_t slat_id; + uint16_t next_slat_id; + ...; void *data; event_callback_t callback; uint32_t vcpu_id; - ...; + page_mode_t page_mode; union { reg_event_t reg_event; mem_access_event_t mem_event; From 18f01359707f437556c72085879bb4740c429074 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 8 Apr 2022 11:15:50 +0200 Subject: [PATCH 11/34] release v3.6 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 94d3a13..6590a2d 100755 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ def read_file(filename): setup( name='libvmi', - version='3.5', + version='3.6', description='Python interface to LibVMI', long_description=read_file('README.md'), long_description_content_type='text/markdown', From b98758e2dc99c2ff6ffb5cab6feaa89781930211 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 8 Apr 2022 11:27:16 +0200 Subject: [PATCH 12/34] ci: fix publish on PyPI --- .github/workflows/ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 590cde1..bc85e88 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,9 +68,11 @@ jobs: if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/checkout@v1 + with: + path: python-libvmi - name: Install Libvmi - uses: ./.github/actions/libvmi-setup + uses: ./python-libvmi/.github/actions/libvmi-setup - name: Set up Python 3.7 🐍 uses: actions/setup-python@v1 @@ -82,9 +84,12 @@ jobs: python -m pip install wheel python setup.py sdist python setup.py bdist_wheel + working-directory: python-libvmi - name: Publish on PyPI 🚀 uses: pypa/gh-action-pypi-publish@v1.3.1 with: user: __token__ password: ${{ secrets.ACCESS_TOKEN }} + packages_dir: python-libvmi/dist + From cc959af5f19542bc031b8b7c6b4a6c0272b53abe Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 8 Apr 2022 11:27:28 +0200 Subject: [PATCH 13/34] release v3.6.1 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 6590a2d..20d9752 100755 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ def read_file(filename): setup( name='libvmi', - version='3.6', + version='3.6.1', description='Python interface to LibVMI', long_description=read_file('README.md'), long_description_content_type='text/markdown', From 86879373934a5e747983a7c80c2cfceca898f7e1 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 8 Apr 2022 11:36:58 +0200 Subject: [PATCH 14/34] ci: produce manylinux compliant package --- .github/actions/libvmi-setup/action.yml | 7 +++++ .github/workflows/ci.yml | 38 +++++++++++++++---------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml index cb546ab..3f13a0e 100644 --- a/.github/actions/libvmi-setup/action.yml +++ b/.github/actions/libvmi-setup/action.yml @@ -4,6 +4,13 @@ author: 'Mathieu Tarral' runs: using: 'composite' steps: + - name: Ensure sudo is available (manylinux container compat) + shell: bash + run: | + if [ "$EUID" -eq 0 ]; then + apt-get update && apt-get install -y sudo + fi + - name: install dependencies shell: bash run: sudo apt-get update && sudo apt-get install -qq cmake bison flex check libjson-c-dev libglib2.0-dev libxenstore3.0 libxen-dev libvirt-dev diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc85e88..18a9245 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,36 +60,44 @@ jobs: python setup.py bdist_wheel working-directory: python-libvmi + - name: upload build artifact + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.python }} + path: "python-libvmi/dist/*.whl" + + publish: - needs: build runs-on: ubuntu-latest + needs: [build] + container: quay.io/pypa/manylinux_2_24_x86_64 + strategy: + matrix: + python: ['3.6', '3.7', '3.8', '3.9'] - # if push on master and tag is 'v*' - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 with: path: python-libvmi - name: Install Libvmi uses: ./python-libvmi/.github/actions/libvmi-setup - - name: Set up Python 3.7 🐍 - uses: actions/setup-python@v1 + # download artifact in current directory + - name: download build artifact + uses: actions/download-artifact@v3 with: - python-version: '3.7' + name: ${{ matrix.python }} - - name: Build 🔨 + - name: Repair Wheels run: | - python -m pip install wheel - python setup.py sdist - python setup.py bdist_wheel - working-directory: python-libvmi + for whl in *.whl; do + auditwheel repair "$whl" -w manylinux + done - name: Publish on PyPI 🚀 - uses: pypa/gh-action-pypi-publish@v1.3.1 + uses: pypa/gh-action-pypi-publish@v1.5.0 with: user: __token__ password: ${{ secrets.ACCESS_TOKEN }} - packages_dir: python-libvmi/dist - + packages_dir: manylinux From 290ab4210250d146358556ac52c5fea69c2174a3 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Sun, 17 Apr 2022 00:26:09 +0200 Subject: [PATCH 15/34] release v3.6.2 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 20d9752..72cbea7 100755 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ def read_file(filename): setup( name='libvmi', - version='3.6.1', + version='3.6.2', description='Python interface to LibVMI', long_description=read_file('README.md'), long_description_content_type='text/markdown', From f55e86b071cb72cf616a9e86a6df9a2acd78af3c Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 29 Sep 2023 17:07:10 +0200 Subject: [PATCH 16/34] CI: fix libvmi build --- .github/actions/libvmi-setup/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml index 3f13a0e..62e2f11 100644 --- a/.github/actions/libvmi-setup/action.yml +++ b/.github/actions/libvmi-setup/action.yml @@ -13,7 +13,7 @@ runs: - name: install dependencies shell: bash - run: sudo apt-get update && sudo apt-get install -qq cmake bison flex check libjson-c-dev libglib2.0-dev libxenstore3.0 libxen-dev libvirt-dev + run: sudo apt-get update && sudo apt-get install -qq cmake flex bison libglib2.0-dev libvirt-dev libjson-c-dev libyajl-dev - name: clone libvmi uses: actions/checkout@v2 From 0fc8dcdf12971c906a4dc641c30d9a868ff70319 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 29 Sep 2023 17:09:14 +0200 Subject: [PATCH 17/34] CI: deprecate Python 3.6 --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 18a9245..173ac62 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python: ['3.6', '3.7', '3.8', '3.9'] + python: ['3.7', '3.8', '3.9', '3.10', '3.11'] steps: - uses: actions/checkout@v2 @@ -73,7 +73,7 @@ jobs: container: quay.io/pypa/manylinux_2_24_x86_64 strategy: matrix: - python: ['3.6', '3.7', '3.8', '3.9'] + python: ['3.7', '3.8', '3.9', '3.10', '3.11'] steps: - uses: actions/checkout@v2 From 5b165b05f0bd7457632654b9408b134ad06c7cab Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 29 Sep 2023 17:11:44 +0200 Subject: [PATCH 18/34] CI: upgrade actions/checkout --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 173ac62..3c896eb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: Set up Python 3.7 🐍 uses: actions/setup-python@v1 @@ -33,7 +33,7 @@ jobs: python: ['3.7', '3.8', '3.9', '3.10', '3.11'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: path: python-libvmi From ddff860f728ec5ea70eac68afc0977d1da9f7e08 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 29 Sep 2023 17:12:33 +0200 Subject: [PATCH 19/34] CI: use setup-python@v4 --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c896eb..4b50c73 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@v4 - name: Set up Python 3.7 🐍 - uses: actions/setup-python@v1 + uses: actions/setup-python@v4 with: python-version: '3.7' @@ -41,7 +41,7 @@ jobs: uses: ./python-libvmi/.github/actions/libvmi-setup - name: Set up Python 🐍 - uses: actions/setup-python@v1 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} From e7562212308eb703a9c636f0f6b50778d6bf3523 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Fri, 29 Sep 2023 17:25:20 +0200 Subject: [PATCH 20/34] CI: use manylinux2014_x86_64 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4b50c73..e487a1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,7 @@ jobs: publish: runs-on: ubuntu-latest needs: [build] - container: quay.io/pypa/manylinux_2_24_x86_64 + container: quay.io/pypa/manylinux2014_x86_64 strategy: matrix: python: ['3.7', '3.8', '3.9', '3.10', '3.11'] From 3ddda0957bf73ed1369739437173ff28c635c019 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Tue, 5 Dec 2023 10:40:47 +0100 Subject: [PATCH 21/34] ci: fix libvmi-setup compatibility with manylinux container --- .github/actions/libvmi-setup/action.yml | 87 +++++++++++++++++-------- .github/workflows/ci.yml | 2 +- 2 files changed, 61 insertions(+), 28 deletions(-) diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml index 62e2f11..c5039a2 100644 --- a/.github/actions/libvmi-setup/action.yml +++ b/.github/actions/libvmi-setup/action.yml @@ -1,32 +1,65 @@ -name: 'Libvmi setup' -description: 'This actions installs LibVMI on the system' -author: 'Mathieu Tarral' +name: "Libvmi setup" +description: "This actions installs LibVMI on the system" +author: "Mathieu Tarral" runs: - using: 'composite' - steps: - - name: Ensure sudo is available (manylinux container compat) - shell: bash - run: | - if [ "$EUID" -eq 0 ]; then - apt-get update && apt-get install -y sudo - fi + using: "composite" + steps: + - name: Detect OS and Set Environment Variable + id: detect-os + shell: bash + run: | + . /etc/os-release + if [ "$ID" = "ubuntu" ]; then + echo "OS_TYPE=Ubuntu" >> $GITHUB_ENV + elif [ "$ID" = "almalinux" ]; then + echo "OS_TYPE=CentOS" >> $GITHUB_ENV + else + echo "Unsupported OS: $ID" + exit 1 + fi - - name: install dependencies - shell: bash - run: sudo apt-get update && sudo apt-get install -qq cmake flex bison libglib2.0-dev libvirt-dev libjson-c-dev libyajl-dev + - name: install dependencies + shell: bash + run: | + if [ "${{ env.OS_TYPE }}" = "Ubuntu" ]; then + sudo apt-get update && sudo apt-get install -qq cmake flex bison libglib2.0-dev libvirt-dev libjson-c-dev libyajl-dev + elif [ "${{ env.OS_TYPE }}" = "CentOS" ]; then + yum update && yum install -y cmake flex bison glib2-devel libvirt-devel json-c-devel yajl-devel + else + echo "Unknown OS" + fi - - name: clone libvmi - uses: actions/checkout@v2 - with: - repository: libvmi/libvmi - path: libvmi - # pinned to a specific commit to avoid breakage - ref: '45b32c0f0003b4037700a1b534879b7d8bee5de0' + - name: install Xen headers for CentOS + shell: bash + run: | + if [ "${{ env.OS_TYPE }}" = "CentOS" ]; then + yum groupinstall -y "Development Tools" + yum install -y python3-devel iasl libuuid-devel ncurses-devel pixman-devel yajl-devel ninja-build + git clone --depth 1 https://github.com/xen-project/xen.git -b RELEASE-4.18.0 + cd xen + ./configure --disable-docs --disable-stubdom + make -j $(nproc) + make install + fi - - name: install libvmi - shell: bash - run: | - cmake -B build -DCMAKE_INSTALL_PREFIX=/usr . - cmake --build build + - name: clone libvmi + uses: actions/checkout@v2 + with: + repository: libvmi/libvmi + path: libvmi + # pinned to a specific commit to avoid breakage + ref: "45b32c0f0003b4037700a1b534879b7d8bee5de0" + + - name: install libvmi + shell: bash + run: | + cmake -B build -DCMAKE_INSTALL_PREFIX=/usr . + cmake --build build + if [ "${{ env.OS_TYPE }}" = "Ubuntu" ]; then sudo cmake --build build --target install - working-directory: libvmi + elif [ "${{ env.OS_TYPE }}" = "CentOS" ] || [ "${{ env.OS_TYPE }}" = "Debian" ]; then + cmake --build build --target install + else + echo "Unknown OS" + fi + working-directory: libvmi diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e487a1c..8a55d9f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,7 +70,7 @@ jobs: publish: runs-on: ubuntu-latest needs: [build] - container: quay.io/pypa/manylinux2014_x86_64 + container: quay.io/pypa/manylinux_2_28_x86_64 strategy: matrix: python: ['3.7', '3.8', '3.9', '3.10', '3.11'] From 98e19001a9cbfa997c374d0a1ccf7c1f14185c56 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Tue, 5 Dec 2023 13:38:11 +0100 Subject: [PATCH 22/34] ci: pin latest libvmi master --- .github/actions/libvmi-setup/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml index c5039a2..67e6148 100644 --- a/.github/actions/libvmi-setup/action.yml +++ b/.github/actions/libvmi-setup/action.yml @@ -48,7 +48,7 @@ runs: repository: libvmi/libvmi path: libvmi # pinned to a specific commit to avoid breakage - ref: "45b32c0f0003b4037700a1b534879b7d8bee5de0" + ref: "e7074407fc3b98db1aa73f918b3720bd4438734b" - name: install libvmi shell: bash From ce9caa7ab37e4da296141482a219bc87583c0c82 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Tue, 5 Dec 2023 13:53:17 +0100 Subject: [PATCH 23/34] ci: restrict publishing --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8a55d9f..2eae3ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,3 +101,4 @@ jobs: user: __token__ password: ${{ secrets.ACCESS_TOKEN }} packages_dir: manylinux + if: startsWith(github.ref, 'refs/tags/v') From 7098de478ba1a7805d43b84188cd55458aa0a2cd Mon Sep 17 00:00:00 2001 From: IridiumXOR Date: Thu, 16 Nov 2023 01:24:47 +0100 Subject: [PATCH 24/34] wrong type for cs_arbytes --- libvmi/libvmi_cdef.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libvmi/libvmi_cdef.h b/libvmi/libvmi_cdef.h index cb68f57..b3d058b 100644 --- a/libvmi/libvmi_cdef.h +++ b/libvmi/libvmi_cdef.h @@ -302,7 +302,7 @@ typedef struct x86_regs { uint64_t msr_lstar; uint64_t fs_base; uint64_t gs_base; - uint32_t cs_arbytes; + uint64_t cs_arbytes; ...; } x86_registers_t; From 4b1e816b1e8cfa441183df30a326b9b9bfcc8470 Mon Sep 17 00:00:00 2001 From: netanelc305 Date: Thu, 28 Sep 2023 10:52:44 +0300 Subject: [PATCH 25/34] libvmi:libvmi_cdef: Add `vmi_pagecache_flush` --- libvmi/libvmi.py | 3 +++ libvmi/libvmi_cdef.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/libvmi/libvmi.py b/libvmi/libvmi.py index 1798b40..b71c215 100644 --- a/libvmi/libvmi.py +++ b/libvmi/libvmi.py @@ -955,6 +955,9 @@ def pidcache_flush(self): def pidcache_add(self, pid, dtb): lib.vmi_pidcache_add(self.vmi, pid, dtb) + def pagecache_flush(self): + lib.vmi_pagecache_flush(self.vmi) + # events def register_event(self, event): event.vmi = self diff --git a/libvmi/libvmi_cdef.h b/libvmi/libvmi_cdef.h index b3d058b..0dba2d2 100644 --- a/libvmi/libvmi_cdef.h +++ b/libvmi/libvmi_cdef.h @@ -981,3 +981,6 @@ void vmi_pidcache_add( vmi_instance_t vmi, vmi_pid_t pid, addr_t dtb); + +void vmi_pagecache_flush( + vmi_instance_t vmi); \ No newline at end of file From e364ccdf018915fcf8d6da36aa9e2906d2d42628 Mon Sep 17 00:00:00 2001 From: netanelc305 Date: Thu, 21 Dec 2023 10:02:48 +0200 Subject: [PATCH 26/34] libvmi: libvmi_cdef: Add `JSON` and `FILE_PATH` config options --- libvmi/libvmi.py | 6 ++++-- libvmi/libvmi_cdef.h | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libvmi/libvmi.py b/libvmi/libvmi.py index b71c215..6d02da5 100644 --- a/libvmi/libvmi.py +++ b/libvmi/libvmi.py @@ -150,6 +150,8 @@ class VMIConfig(Enum): GLOBAL_FILE_ENTRY = lib.VMI_CONFIG_GLOBAL_FILE_ENTRY STRING = lib.VMI_CONFIG_STRING DICT = lib.VMI_CONFIG_GHASHTABLE + JSON_PATH = lib.VMI_CONFIG_JSON_PATH + FILE_PATH = lib.VMI_CONFIG_FILE_PATH class VMIStatus(Enum): @@ -318,8 +320,8 @@ def __init__(self, domain, init_flags=INIT_DOMAINNAME, init_data=None, # from str to bytes if init_flags & INIT_DOMAINNAME or init_flags & INIT_DOMAINID: domain = domain.encode() - # same for VMI_CONFIG_STRING - if config_mode == VMIConfig.STRING: + # same for VMI_CONFIG_STRING | VMI_CONFIG_FILE_PATH | VMI_CONFIG_JSON_PATH + if config_mode in [VMIConfig.STRING, VMIConfig.FILE_PATH, VMIConfig.JSON_PATH]: config = config.encode() elif config_mode == VMIConfig.DICT: # need to convert config to a GHashTable diff --git a/libvmi/libvmi_cdef.h b/libvmi/libvmi_cdef.h index 0dba2d2..102d693 100644 --- a/libvmi/libvmi_cdef.h +++ b/libvmi/libvmi_cdef.h @@ -122,6 +122,10 @@ typedef enum vmi_config { VMI_CONFIG_STRING, /**< config string provided */ VMI_CONFIG_GHASHTABLE, /**< config GHashTable provided */ + + VMI_CONFIG_JSON_PATH, /**< config in json file at the location provided */ + + VMI_CONFIG_FILE_PATH, /**< config file path provided */ } vmi_config_t; // vmi_mode From 5f854c8b73266d1c3c2046e4d5a6380efc125a9a Mon Sep 17 00:00:00 2001 From: netanelc305 Date: Wed, 27 Dec 2023 12:28:54 +0200 Subject: [PATCH 27/34] libvmi: Add `__str__` method to `Registers` --- libvmi/libvmi.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libvmi/libvmi.py b/libvmi/libvmi.py index 6d02da5..77af1e2 100644 --- a/libvmi/libvmi.py +++ b/libvmi/libvmi.py @@ -139,6 +139,22 @@ def __setitem__(self, index, value): raise_from(RuntimeError('Unknown field {} in regs.x86' .format(index.name.lower())), e) + def __str__(self): + # Heuristic to determine the architecture + if hasattr(self.cffi_regs.x86, 'rip') or hasattr(self.cffi_regs.x86, 'eip'): + regs_to_print = self.cffi_regs.x86 + elif hasattr(self.cffi_regs.arm, 'pc'): + regs_to_print = self.cffi_regs.arm + else: + raise RuntimeError("Unable to determine architecture") + attributes = [] + for attr in dir(regs_to_print): + if not attr.startswith('_'): + value = getattr(regs_to_print, attr) + attributes.append(f"{attr.lower()} = {value:#x}") + + return '\n'.join(attributes) + class VMIMode(Enum): XEN = lib.VMI_XEN From 027d9ba9ad5ed20f294a3520eb66b82fe19ab667 Mon Sep 17 00:00:00 2001 From: Netanel Cohen Date: Thu, 8 Aug 2024 11:19:50 +0300 Subject: [PATCH 28/34] libvmi: Change to `vmi_get_max_physical_address` --- libvmi/libvmi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libvmi/libvmi.py b/libvmi/libvmi.py index 77af1e2..ab20887 100644 --- a/libvmi/libvmi.py +++ b/libvmi/libvmi.py @@ -908,8 +908,8 @@ def get_kernel_struct_offset(self, struct_name, member): def get_memsize(self): return lib.vmi_get_memsize(self.vmi) - def get_max_physical_memory_address(self): - return lib.vmi_get_max_physical_memory_address(self.vmi) + def get_max_physical_address(self): + return lib.vmi_get_max_physical_address(self.vmi) def get_num_vcpus(self): return lib.vmi_get_num_vcpus(self.vmi) From 7b7d28f3d10393dbd579efcc1a40365904bf33eb Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Mon, 28 Oct 2024 15:43:36 +0100 Subject: [PATCH 29/34] ci: confirm yum update --- .github/actions/libvmi-setup/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml index 67e6148..49fe806 100644 --- a/.github/actions/libvmi-setup/action.yml +++ b/.github/actions/libvmi-setup/action.yml @@ -24,7 +24,7 @@ runs: if [ "${{ env.OS_TYPE }}" = "Ubuntu" ]; then sudo apt-get update && sudo apt-get install -qq cmake flex bison libglib2.0-dev libvirt-dev libjson-c-dev libyajl-dev elif [ "${{ env.OS_TYPE }}" = "CentOS" ]; then - yum update && yum install -y cmake flex bison glib2-devel libvirt-devel json-c-devel yajl-devel + yum update -y && yum install -y cmake flex bison glib2-devel libvirt-devel json-c-devel yajl-devel else echo "Unknown OS" fi From ee40deebbf41ddb28ecdf9791a31106392a6573a Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Mon, 28 Oct 2024 15:46:38 +0100 Subject: [PATCH 30/34] ci: upgrade deprecated actions --- .github/actions/libvmi-setup/action.yml | 2 +- .github/workflows/ci.yml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml index 49fe806..d635e98 100644 --- a/.github/actions/libvmi-setup/action.yml +++ b/.github/actions/libvmi-setup/action.yml @@ -43,7 +43,7 @@ runs: fi - name: clone libvmi - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: repository: libvmi/libvmi path: libvmi diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2eae3ba..88709ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ jobs: - uses: actions/checkout@v4 - name: Set up Python 3.7 🐍 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.7' @@ -41,7 +41,7 @@ jobs: uses: ./python-libvmi/.github/actions/libvmi-setup - name: Set up Python 🐍 - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} @@ -61,7 +61,7 @@ jobs: working-directory: python-libvmi - name: upload build artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: ${{ matrix.python }} path: "python-libvmi/dist/*.whl" @@ -76,7 +76,7 @@ jobs: python: ['3.7', '3.8', '3.9', '3.10', '3.11'] steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: path: python-libvmi @@ -85,7 +85,7 @@ jobs: # download artifact in current directory - name: download build artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: ${{ matrix.python }} From 3d90fb64f3d088ea4018a287f0ec6924596c58c4 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Tue, 29 Oct 2024 12:26:21 +0100 Subject: [PATCH 31/34] ci: disable seabios build for Xen custom git-checkout script fail to clone seabios --- .github/actions/libvmi-setup/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml index d635e98..afe4635 100644 --- a/.github/actions/libvmi-setup/action.yml +++ b/.github/actions/libvmi-setup/action.yml @@ -37,7 +37,7 @@ runs: yum install -y python3-devel iasl libuuid-devel ncurses-devel pixman-devel yajl-devel ninja-build git clone --depth 1 https://github.com/xen-project/xen.git -b RELEASE-4.18.0 cd xen - ./configure --disable-docs --disable-stubdom + ./configure --disable-docs --disable-stubdom --disable-seabios make -j $(nproc) make install fi From cbdbbc4991e3e0621e2ce576c1ddd18ce0a7e923 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Wed, 30 Oct 2024 11:59:41 +0100 Subject: [PATCH 32/34] setup.py: release 3.7 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 72cbea7..1a33e88 100755 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ def read_file(filename): setup( name='libvmi', - version='3.6.2', + version='3.7', description='Python interface to LibVMI', long_description=read_file('README.md'), long_description_content_type='text/markdown', From d397afd998fa45ff6237ad591d55c3652292ad14 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Wed, 13 Nov 2024 14:56:42 +0100 Subject: [PATCH 33/34] ci: pin latest Libvmi master commit --- .github/actions/libvmi-setup/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/libvmi-setup/action.yml b/.github/actions/libvmi-setup/action.yml index afe4635..abe5ca2 100644 --- a/.github/actions/libvmi-setup/action.yml +++ b/.github/actions/libvmi-setup/action.yml @@ -48,7 +48,7 @@ runs: repository: libvmi/libvmi path: libvmi # pinned to a specific commit to avoid breakage - ref: "e7074407fc3b98db1aa73f918b3720bd4438734b" + ref: "8f9b010b0261dbc11e2dda5e718b0e9507109232" - name: install libvmi shell: bash From c21af83ab402798697f8117908ef706aa3f230d4 Mon Sep 17 00:00:00 2001 From: Mathieu Tarral Date: Wed, 13 Nov 2024 15:45:33 +0100 Subject: [PATCH 34/34] setup: release v3.7.1 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1a33e88..213d61d 100755 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ def read_file(filename): setup( name='libvmi', - version='3.7', + version='3.7.1', description='Python interface to LibVMI', long_description=read_file('README.md'), long_description_content_type='text/markdown',