mirror of
https://github.com/keylase/nvidia-patch.git
synced 2024-08-30 18:32:50 +00:00
Merge pull request #734 from jailuthra/linux_action
GH Actions: Add workflow for linux autopatch
This commit is contained in:
commit
c56db4a520
153
.github/workflows/gen_linux_patches.yml
vendored
Normal file
153
.github/workflows/gen_linux_patches.yml
vendored
Normal file
@ -0,0 +1,153 @@
|
||||
name: Generate Linux patches
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: 'Driver Version'
|
||||
required: true
|
||||
type: string
|
||||
old_version:
|
||||
description: 'Old Driver Version'
|
||||
required: false
|
||||
type: string
|
||||
driver_url:
|
||||
description: 'Driver URL'
|
||||
required: false
|
||||
type: string
|
||||
mode:
|
||||
description: 'Mode'
|
||||
required: true
|
||||
type: choice
|
||||
default: search
|
||||
options:
|
||||
- copy
|
||||
- search
|
||||
description:
|
||||
description: 'Commit description'
|
||||
required: false
|
||||
type: string
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
steps:
|
||||
- name: Check Input
|
||||
id: check_input
|
||||
run: |
|
||||
version="${{ inputs.version }}"
|
||||
mode="${{ inputs.mode }}"
|
||||
driver_url="${{ inputs.driver_url }}"
|
||||
|
||||
echo "Version: $version"
|
||||
echo "Mode: $mode"
|
||||
|
||||
if [[ $version =~ ([0-9]+\.[0-9]+(-[a-zA-Z]+)?)(-.+)? ]]; then
|
||||
echo "Valid version"
|
||||
else
|
||||
echo "Invalid driver version."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -n $driver_url ]]; then
|
||||
driver_url="http://international.download.nvidia.com/XFree86/Linux-x86_64/$version/NVIDIA-Linux-x86_64-$version.run"
|
||||
fi
|
||||
echo "Driver URL: $driver_url"
|
||||
|
||||
echo "DRIVER_URL=$driver_url" >> $GITHUB_ENV
|
||||
echo "VERSION=$version" >> $GITHUB_ENV
|
||||
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: master
|
||||
|
||||
- name: Find Bytecode
|
||||
if: ${{ inputs.mode == 'search' }}
|
||||
run: |
|
||||
|
||||
echo "Running find_bytecode.sh for version ${{ env.VERSION }}"
|
||||
|
||||
cd "${{ github.workspace }}/tools/autopatch"
|
||||
./find_bytecode.sh ${{ env.VERSION }} ${{ env.DRIVER_URL }}
|
||||
|
||||
echo "find_bytecode.sh executed successfully"
|
||||
|
||||
- name: Update NVENC
|
||||
run: |
|
||||
|
||||
echo "Running update_patch.sh for version ${{ env.VERSION }}"
|
||||
cd "${{ github.workspace }}/tools/autopatch"
|
||||
|
||||
old_version="${{ inputs.old_version }}"
|
||||
|
||||
case "${{ inputs.mode }}" in
|
||||
search)
|
||||
if [[ -z $old_version ]]; then
|
||||
./update_patch.sh -f ../../patch.sh -b $(./find_bytecode.sh ${{ env.VERSION }} ${{ env.DRIVER_URL }})
|
||||
else
|
||||
./update_patch.sh -f ../../patch.sh -b $(./find_bytecode.sh ${{ env.VERSION }} ${{ env.DRIVER_URL }}) -o $old_version
|
||||
fi
|
||||
;;
|
||||
copy)
|
||||
if [[ -z $old_version ]]; then
|
||||
./update_patch.sh -f ../../patch.sh -v ${{ env.VERSION }}
|
||||
else
|
||||
./update_patch.sh -f ../../patch.sh -v ${{ env.VERSION }} -o $old_version
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: Wrong mode"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "update_patch.sh executed successfully"
|
||||
|
||||
- name: Update NVFBC
|
||||
run: |
|
||||
|
||||
echo "Running update_patch.sh for FBC for version ${{ env.VERSION }}"
|
||||
cd "${{ github.workspace }}/tools/autopatch"
|
||||
|
||||
old_version="${{ inputs.old_version }}"
|
||||
|
||||
if [[ -z $old_version ]]; then
|
||||
./update_patch.sh -f ../../patch-fbc.sh -v ${{ env.VERSION }}
|
||||
else
|
||||
./update_patch.sh -f ../../patch-fbc.sh -v ${{ env.VERSION }} -o $old_version
|
||||
fi
|
||||
|
||||
echo "update_patch.sh for FBC executed successfully"
|
||||
|
||||
- name: Run add_driver.py
|
||||
run: |
|
||||
echo "Running add_driver.py with version ${{ env.VERSION }}"
|
||||
cd "${{ github.workspace }}/tools/readme-autogen"
|
||||
python add_driver.py -L -U ${{ env.DRIVER_URL }} ${{ env.VERSION }}
|
||||
echo "add_driver.py executed successfully"
|
||||
|
||||
- name: Run readme_autogen.py
|
||||
run: |
|
||||
echo "Running readme_autogen.py"
|
||||
cd "${{ github.workspace }}/tools/readme-autogen"
|
||||
python readme_autogen.py
|
||||
echo "readme_autogen.py executed successfully"
|
||||
|
||||
- name: Commit and push changes
|
||||
run: |
|
||||
echo "Committing and pushing changes"
|
||||
branch=autopatch_${{ env.VERSION }}
|
||||
cd "${{ github.workspace }}"
|
||||
git config --local user.email "action@github.com"
|
||||
git config --local user.name "GitHub Action"
|
||||
git checkout -b $branch
|
||||
git add -A
|
||||
git diff --quiet --exit-code --cached || git commit -m "linux: add support for driver ${{ env.VERSION }}" -m "${{ inputs.description }}"
|
||||
git push origin $branch
|
||||
echo "Committed and pushed changes"
|
@ -13,19 +13,22 @@ driver_url=$2
|
||||
driver_file=NVIDIA-Linux-x86_64-$driver_version.run
|
||||
|
||||
download_driver() {
|
||||
wget -c $driver_url -O $driver_file 1>&2
|
||||
wget -nv -c $driver_url -O $driver_file 1>&2
|
||||
chmod +x $driver_file
|
||||
>&2 echo "Successfully Downloaded Driver $driver_file"
|
||||
}
|
||||
|
||||
extract_driver() {
|
||||
if [[ ! -e ${driver_file%".run"} ]]; then
|
||||
./$driver_file -x
|
||||
fi
|
||||
>&2 echo "Successfully Extracted Driver $driver_file"
|
||||
}
|
||||
|
||||
search_bytecode() {
|
||||
nvenc_file=${driver_file%".run"}/libnvidia-encode.so.$driver_version
|
||||
bytecode=$(xxd -c0 -ps $nvenc_file | grep -oP ".{0,6}$MATCH_STR")
|
||||
bytecode=$(xxd -c10000000 -ps $nvenc_file | grep -oP ".{0,6}$MATCH_STR")
|
||||
>&2 echo "Found bytecode $bytecode"
|
||||
echo $bytecode
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user