Linux Kernel CXL Feature Tracker
- Steve Scargall
- Projects
- May 13, 2024
I’m always watching the Linux Kernel for new and exciting features that are merged for Compute Express Link (CXL). There’s some great notes from the monthly developer meetup here
, but the devil is always in the details, and not every commit is discussed in the meeting. So I wrote a simple Python script, called cxl_feature_tracker.py
that looks in all commits to the Linus Torvalds Linux Kernel GitHub repository
, and extracts any that mention “CXL” or “DAX”, or that make changes to the drivers/cxl
or drivers/dax
directories. The output is a very long list, but it has some gems amongst the list of fixes.
Description
This Python script tracks changes related to Compute Express Link (CXL) in the Linux kernel. It fetches commit messages from the Linux GitHub repository that are pertinent to CXL, specifically focusing on the drivers/cxl and drivers/dax directories. Users can specify the range of kernel versions to check, control the verbosity of the output, and decide on the output format and destination.
Installation
Prerequisites
- Python 3.6 or higher
- Python requests library
venv
orconda
Python Virtual Environment (Optional)
Setup
Here’s a quick setup guide if you want to run the script locally:
- Install Python 3.x.
- Create a Virtual Environment. It’s a good practice to use a virtual environment for Python projects to manage dependencies separately from the global Python environment. You can create a virtual environment using
venv
orconda
:
Using venv
python -m venv env
source env/bin/activate # On Windows use env\Scripts\activate
Using Conda
conda create --name myenv python=3.8
conda activate myenv
- Install the required dependencies:
pip install -r requirements.txt
Download
Clone the repository
git clone https://github.com/sscargal/linux-cxl-tracker
or download the script directly:
git clone https://github.com/sscargal/linux-cxl-tracker/linux-cxl-tracker.git
Usage
Command-Line Options
--ghtoken
: Specifies the GitHub API token for authenticated requests (optional but recommended to avoid rate limits).--start-version
: Specifies the starting kernel version to track changes from.--end-version
: Specifies the ending kernel version to track changes to.--output
: Specifies the filename where the output should be written. If not provided, output is printed to the terminal.--format
: Specifies the format of the output file. Options include txt, md, json. Default is terminal output.--verbose
: When set, the script will display detailed commit messages. By default, only commit titles are shown.
Examples
Track Changes with Default Options:
./cxl_feature_tracker.py --start-version v6.8 --end-version v6.9
Track Changes with Verbose Output:
./cxl_feature_tracker.py --start-version v6.8 --end-version v6.9 --verbose
Track Changes and Write to a Text File:
./cxl_feature_tracker.py --start-version v6.8 --end-version v6.9 --output changes.txt --format txt
Track Changes and Write to a Markdown File with Verbose Output:
./cxl_feature_tracker.py --start-version v6.8 --end-version v6.9 --output changes.md --format md --verbose
Track Changes Using GitHub Token: GitHub API has a rate limit, especially for unauthenticated requests (default). For more frequent usage or large data, use authentication by adding a token in the request headers.
./cxl_feature_tracker.py --ghtoken YOUR_GITHUB_TOKEN --start-version v6.8 --end-version v6.9
Track Changes and Write to a JSON File:
./cxl_feature_tracker.py --start-version v6.8 --end-version v6.9 --output changes.json --format json
Contributing
Contributions are welcome! Please fork the repository and submit a pull request with your improvements. See CONTRIBUTING for more information and instructions.
License
This project is open source and available under the MIT License.