Skip to content

Commit

Permalink
Merge pull request #1 from aboutcode-org/support-rust-binary
Browse files Browse the repository at this point in the history
Support rust binary parsing

Reference: aboutcode-org/scancode.io#1475
  • Loading branch information
AyanSinhaMahapatra authored Dec 30, 2024
2 parents 0c67387 + f02962c commit 9c92c8a
Show file tree
Hide file tree
Showing 34 changed files with 318,380 additions and 147 deletions.
7 changes: 4 additions & 3 deletions .github/workflows/docs-ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: CI Documentation
name: CI Documentation and Code style

on: [push, pull_request]

Expand All @@ -21,7 +21,7 @@ jobs:
python-version: ${{ matrix.python-version }}

- name: Install Dependencies
run: pip install -e .[docs]
run: pip install -e .[docs,testing]

- name: Check Sphinx Documentation build minimally
working-directory: ./docs
Expand All @@ -31,4 +31,5 @@ jobs:
working-directory: ./docs
run: ./scripts/doc8_style_check.sh


- name: Check for Code style errors
run: make check-ci
4 changes: 2 additions & 2 deletions .readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ version: 2

# Build in latest ubuntu/python
build:
os: ubuntu-22.04
os: ubuntu-24.04
tools:
python: "3.11"
python: "3.12"

# Build PDF & ePub
formats:
Expand Down
4 changes: 3 additions & 1 deletion AUTHORS.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
The following organizations or individuals have contributed to this repo:

-
- Ayan Sinha Mahapatra @AyanSinhaMahapatra
- nexB Inc.

11 changes: 8 additions & 3 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@ Changelog
=========


v0.0.0
------
v0.1.0 (30th December, 2024)
-----------------------------

*xxxx-xx-xx* -- Initial release.
Initial release with support for rust binary parsing to:

* Get packages and dependencies information from a rust binary
* Get parsed list of demangled and cleaned symbols from a rust binary
* A scancode-toolkit plugin for colelcting rust symbols with the option --rust-symbol
* A scancode-toolkit DatafileHandler to integrate getting package data from a rust binary
14 changes: 11 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,19 @@ valid: isort black

check:
@echo "-> Run pycodestyle (PEP8) validation"
@${ACTIVATE} pycodestyle --max-line-length=100 --exclude=.eggs,venv,lib,thirdparty,docs,migrations,settings.py,.cache .
@${ACTIVATE} pycodestyle --max-line-length=100 --exclude=.eggs,venv,lib,thirdparty,docs,scripts,tests,migrations,settings.py,.cache .
@echo "-> Run isort imports ordering validation"
@${ACTIVATE} isort --sl --check-only -l 100 setup.py src tests .
@${ACTIVATE} isort --sl -l 100 src tests setup.py --check-only
@echo "-> Run black validation"
@${ACTIVATE} black --check --check -l 100 src tests setup.py
@${ACTIVATE} black --check -l 100 src tests setup.py

check-ci:
@echo "-> Run pycodestyle (PEP8) validation"
pycodestyle --max-line-length=100 --exclude=.eggs,venv,lib,thirdparty,docs,scripts,tests,migrations,settings.py,.cache .
@echo "-> Run isort imports ordering validation"
isort --sl -l 100 src tests setup.py --check-only
@echo "-> Run black validation"
black --check -l 100 src tests setup.py

clean:
@echo "-> Clean the Python env"
Expand Down
174 changes: 130 additions & 44 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,62 +1,148 @@
A Simple Python Project Skeleton
rust-inspector
================================
This repo attempts to standardize the structure of the Python-based project's
repositories using modern Python packaging and configuration techniques.
Using this `blog post`_ as inspiration, this repository serves as the base for
all new Python projects and is mergeable in existing repositories as well.

.. _blog post: https://blog.jaraco.com/a-project-skeleton-for-python-projects/
rust-inspector is a utility to extract dependencies and symbols from Rust binaries.
It is designed to work as a ScanCode Toolkit plugin and integrated in ScanCode.io
pipelines.

To install and use:

Usage
=====
- Run ``pip install rust-inspector``
- Use with ``scancode --json-pp - --rust-symbol --verbose <PATH to a tree or file with Rust binaries>``

A brand new project
-------------------
.. code-block:: bash
The JSON output will contain binary symbols found in Rust binaries if any.

git init my-new-repo
cd my-new-repo
git pull [email protected]:nexB/skeleton
A Go compiler is required to build go-inspector. Install Go from
https://go.dev/doc/install or from a package manager.

# Create the new repo on GitHub, then update your remote
git remote set-url origin [email protected]:nexB/your-new-repo.git
- License: Apache-2.0 AND MIT
- Copyright (c) nexB Inc., AboutCode, OWASP Foundation and others.
- Homepage: https://github.com/aboutcode-org/rust-inspector

From here, you can make the appropriate changes to the files for your specific project.
Development
----------------

Update an existing project
---------------------------
.. code-block:: bash
- Install requirements and dependencies using ``./configure --clean && ./configure --dev``
- Then ``source venv/bin/activate``

cd my-existing-project
git remote add skeleton [email protected]:nexB/skeleton
git fetch skeleton
git merge skeleton/main --allow-unrelated-histories
Testing:

This is also the workflow to use when updating the skeleton files in any given repository.
- To run tests: ``pytest -vvs``
- To regen test fixtures: ``SCANCODE_REGEN_TEST_FIXTURES=yes pytest -vvs``

More usage instructions can be found in ``docs/skeleton-usage.rst``.
Acknowledgements, Funding, Support and Sponsoring
--------------------------------------------------------

This project is funded, supported and sponsored by:

Release Notes
=============
- Generous support and contributions from users like you!
- the European Commission NGI programme
- the NLnet Foundation
- the Swiss State Secretariat for Education, Research and Innovation (SERI)
- Google, including the Google Summer of Code and the Google Seasons of Doc programmes
- Mercedes-Benz Group
- Microsoft and Microsoft Azure
- AboutCode ASBL
- nexB Inc.

- 2023-07-18:
- Add macOS-13 job in azure-pipelines.yml
This project also uses some functions from other packages:

- 2022-03-04:
- Synchronize configure and configure.bat scripts for sanity
- Update CI operating system support with latest Azure OS images
- Streamline utility scripts in etc/scripts/ to create, fetch and manage third-party dependencies
There are now fewer scripts. See etc/scripts/README.rst for details
- blint (https://github.com/owasp-dep-scan/blint)
- symbolic (https://pypi.org/project/symbolic/)
- lief (https://pypi.org/project/lief/)

- 2021-09-03:
- ``configure`` now requires pinned dependencies via the use of ``requirements.txt`` and ``requirements-dev.txt``
- ``configure`` can now accept multiple options at once
- Add utility scripts from scancode-toolkit/etc/release/ for use in generating project files
- Rename virtual environment directory from ``tmp`` to ``venv``
- Update README.rst with instructions for generating ``requirements.txt`` and ``requirements-dev.txt``,
as well as collecting dependencies as wheels and generating ABOUT files for them.

- 2021-05-11:
- Adopt new configure scripts from ScanCode TK that allows correct configuration of which Python version is used.
|europa| |dgconnect|

|ngi| |nlnet|

|aboutcode| |nexb|



This project was funded through the NGI0 Entrust Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101069594.

|ngizeroentrust| https://nlnet.nl/project/Back2source/


This project was funded through the NGI0 Core Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101092990.

|ngizerocore| https://nlnet.nl/project/Back2source-next/


This project was funded through the NGI0 Entrust Fund, a fund established by NLnet with financial
support from the European Commission's Next Generation Internet programme, under the aegis of DG
Communications Networks, Content and Technology under grant agreement No 101069594.

|ngizeroentrust| https://nlnet.nl/project/purl2all/



.. |nlnet| image:: https://nlnet.nl/logo/banner.png
:target: https://nlnet.nl
:height: 50
:alt: NLnet foundation logo

.. |ngi| image:: https://ngi.eu/wp-content/uploads/thegem-logos/logo_8269bc6efcf731d34b6385775d76511d_1x.png
:target: https://ngi.eu35
:height: 50
:alt: NGI logo

.. |nexb| image:: https://nexb.com/wp-content/uploads/2022/04/nexB.svg
:target: https://nexb.com
:height: 30
:alt: nexB logo

.. |europa| image:: https://ngi.eu/wp-content/uploads/sites/77/2017/10/bandiera_stelle.png
:target: http://ec.europa.eu/index_en.htm
:height: 40
:alt: Europa logo

.. |aboutcode| image:: https://aboutcode.org/wp-content/uploads/2023/10/AboutCode.svg
:target: https://aboutcode.org/
:height: 30
:alt: AboutCode logo

.. |swiss| image:: https://www.sbfi.admin.ch/sbfi/en/_jcr_content/logo/image.imagespooler.png/1493119032540/logo.png
:target: https://www.sbfi.admin.ch/sbfi/en/home/seri/seri.html
:height: 40
:alt: Swiss logo

.. |dgconnect| image:: https://commission.europa.eu/themes/contrib/oe_theme/dist/ec/images/logo/positive/logo-ec--en.svg
:target: https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en
:height: 40
:alt: EC DG Connect logo

.. |ngizerocore| image:: https://nlnet.nl/image/logos/NGI0_tag.svg
:target: https://nlnet.nl/core
:height: 40
:alt: NGI Zero Core Logo

.. |ngizerocommons| image:: https://nlnet.nl/image/logos/NGI0_tag.svg
:target: https://nlnet.nl/commonsfund/
:height: 40
:alt: NGI Zero Commons Logo

.. |ngizeropet| image:: https://nlnet.nl/image/logos/NGI0PET_tag.svg
:target: https://nlnet.nl/PET
:height: 40
:alt: NGI Zero PET logo

.. |ngizeroentrust| image:: https://nlnet.nl/image/logos/NGI0Entrust_tag.svg
:target: https://nlnet.nl/entrust
:height: 38
:alt: NGI Zero Entrust logo

.. |ngiassure| image:: https://nlnet.nl/image/logos/NGIAssure_tag.svg
:target: https://nlnet.nl/image/logos/NGIAssure_tag.svg
:height: 32
:alt: NGI Assure logo

.. |ngidiscovery| image:: https://nlnet.nl/image/logos/NGI0Discovery_tag.svg
:target: https://nlnet.nl/discovery/
:height: 40
:alt: NGI Discovery logo
50 changes: 5 additions & 45 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,62 +11,22 @@ jobs:
parameters:
job_name: ubuntu20_cpython
image_name: ubuntu-20.04
python_versions: ['3.8', '3.9', '3.10', '3.11', '3.12']
python_versions: ['3.9', '3.10', '3.11', '3.12', '3.13']
test_suites:
all: venv/bin/pytest -n 2 -vvs

- template: etc/ci/azure-posix.yml
parameters:
job_name: ubuntu22_cpython
image_name: ubuntu-22.04
python_versions: ['3.8', '3.9', '3.10', '3.11', '3.12']
python_versions: ['3.9', '3.10', '3.11', '3.12', '3.13']
test_suites:
all: venv/bin/pytest -n 2 -vvs

- template: etc/ci/azure-posix.yml
parameters:
job_name: macos12_cpython
image_name: macOS-12
python_versions: ['3.8', '3.9', '3.10', '3.11', '3.12']
job_name: ubuntu24_cpython
image_name: ubuntu-24.04
python_versions: ['3.9', '3.10', '3.11', '3.12', '3.13']
test_suites:
all: venv/bin/pytest -n 2 -vvs

- template: etc/ci/azure-posix.yml
parameters:
job_name: macos13_cpython
image_name: macOS-13
python_versions: ['3.8', '3.9', '3.10', '3.11', '3.12']
test_suites:
all: venv/bin/pytest -n 2 -vvs

- template: etc/ci/azure-posix.yml
parameters:
job_name: macos14_cpython_arm64
image_name: macOS-14
python_versions: ['3.8', '3.9', '3.10', '3.11', '3.12']
test_suites:
all: venv/bin/pytest -n 2 -vvs

- template: etc/ci/azure-posix.yml
parameters:
job_name: macos14_cpython
image_name: macOS-14-large
python_versions: ['3.8', '3.8', '3.9', '3.10', '3.12']
test_suites:
all: venv/bin/pytest -n 2 -vvs

- template: etc/ci/azure-win.yml
parameters:
job_name: win2019_cpython
image_name: windows-2019
python_versions: ['3.8', '3.9', '3.10', '3.11', '3.12']
test_suites:
all: venv\Scripts\pytest -n 2 -vvs

- template: etc/ci/azure-win.yml
parameters:
job_name: win2022_cpython
image_name: windows-2022
python_versions: ['3.8', '3.9', '3.10', '3.11', '3.12']
test_suites:
all: venv\Scripts\pytest -n 2 -vvs
1 change: 1 addition & 0 deletions requirements-dev.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
scancode-toolkit==32.3.0
4 changes: 4 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# from blint v2.3.2
# https://github.com/owasp-dep-scan/blint/blob/1e1250a4bf6c25eccba8970bd877901ee56070c7/poetry.lock
lief==0.15.1
symbolic==10.2.1
21 changes: 15 additions & 6 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
[metadata]
name = skeleton
license = Apache-2.0
name = rust-inspector
license = Apache-2.0 AND MIT

# description must be on ONE line https://github.com/pypa/setuptools/issues/1390
description = skeleton
description = rust-inspector is a scancode plugin to extract symbols and dependencies found in Rust binaries.
long_description = file:README.rst
long_description_content_type = text/x-rst
url = https://github.com/aboutcode-org/skeleton
url = https://github.com/nexB/rust-inspector

author = nexB. Inc. and others
author_email = [email protected]
Expand Down Expand Up @@ -38,17 +38,27 @@ zip_safe = false

setup_requires = setuptools_scm[toml] >= 4

python_requires = >=3.8
python_requires = >=3.9

install_requires =
commoncode
plugincode
typecode
lief==0.15.1
symbolic==10.2.1

[options.entry_points]

scancode_scan =
rust_symbol = rust_inspector.plugin:RustSymbolScannerPlugin

[options.packages.find]
where = src


[options.extras_require]
testing =
scancode-toolkit
pytest >= 6, != 7.0.0
pytest-xdist >= 2
aboutcode-toolkit >= 7.0.2
Expand All @@ -65,4 +75,3 @@ docs =
sphinx-autobuild
sphinx-rtd-dark-mode>=1.3.0
sphinx-copybutton

Loading

0 comments on commit 9c92c8a

Please sign in to comment.