Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
N
nvidia-patch
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
nvidia-patch
Commits
f0edc612
Commit
f0edc612
authored
May 30, 2020
by
Vladislav Yarmak
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ipfs: use relative paths in driver database; add customizable repo root to link generator
parent
688029e3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
310 additions
and
314 deletions
+310
-314
drivers.json
drivers.json
+277
-277
tools/readme-autogen/add_driver.py
tools/readme-autogen/add_driver.py
+8
-25
tools/readme-autogen/constants.py
tools/readme-autogen/constants.py
+1
-1
tools/readme-autogen/readme_autogen.py
tools/readme-autogen/readme_autogen.py
+24
-11
No files found.
drivers.json
View file @
f0edc612
This source diff could not be displayed because it is too large. You can
view the blob
instead.
tools/readme-autogen/add_driver.py
View file @
f0edc612
...
@@ -9,7 +9,6 @@ from string import Template
...
@@ -9,7 +9,6 @@ from string import Template
from
itertools
import
groupby
from
itertools
import
groupby
from
functools
import
partial
from
functools
import
partial
import
urllib.request
import
urllib.request
import
urllib.parse
from
constants
import
OSKind
,
Product
,
WinSeries
,
DATAFILE_PATH
,
\
from
constants
import
OSKind
,
Product
,
WinSeries
,
DATAFILE_PATH
,
\
DRIVER_URL_TEMPLATE
,
DRIVER_DIR_PREFIX
,
BASE_PATH
,
REPO_BASE
DRIVER_URL_TEMPLATE
,
DRIVER_DIR_PREFIX
,
BASE_PATH
,
REPO_BASE
...
@@ -54,13 +53,11 @@ def parse_args():
...
@@ -54,13 +53,11 @@ def parse_args():
default
=
WinSeries
.
win10
,
default
=
WinSeries
.
win10
,
help
=
"Windows series"
)
help
=
"Windows series"
)
win_opts
.
add_argument
(
"--patch32"
,
win_opts
.
add_argument
(
"--patch32"
,
default
=
"https://raw.githubusercontent.com/keylase/"
default
=
"win/${winseries}_x64/"
"nvidia-patch/master/win/${winseries}_x64/"
"${drvprefix}${version}/nvencodeapi.1337"
,
"${drvprefix}${version}/nvencodeapi.1337"
,
help
=
"template for Windows 32bit patch URL"
)
help
=
"template for Windows 32bit patch URL"
)
win_opts
.
add_argument
(
"--patch64"
,
win_opts
.
add_argument
(
"--patch64"
,
default
=
"https://raw.githubusercontent.com/keylase/"
default
=
"win/${winseries}_x64/"
"nvidia-patch/master/win/${winseries}_x64/"
"${drvprefix}${version}/nvencodeapi64.1337"
,
"${drvprefix}${version}/nvencodeapi64.1337"
,
help
=
"template for Windows 64bit patch URL"
)
help
=
"template for Windows 64bit patch URL"
)
win_opts
.
add_argument
(
"--skip-patch-check"
,
win_opts
.
add_argument
(
"--skip-patch-check"
,
...
@@ -97,30 +94,16 @@ def validate_url(url):
...
@@ -97,30 +94,16 @@ def validate_url(url):
def
validate_patch
(
patch64
,
patch32
):
def
validate_patch
(
patch64
,
patch32
):
wc_base
=
os
.
path
.
abspath
(
os
.
path
.
join
(
BASE_PATH
,
".."
,
".."
))
wc_base
=
os
.
path
.
abspath
(
os
.
path
.
join
(
BASE_PATH
,
".."
,
".."
))
base_parse
=
urllib
.
parse
.
urlsplit
(
REPO_BASE
,
scheme
=
'http'
)
p64_filepath
=
os
.
path
.
join
(
wc_base
,
patch64
)
p64_parse
=
urllib
.
parse
.
urlsplit
(
patch64
,
scheme
=
'http'
)
p32_filepath
=
os
.
path
.
join
(
wc_base
,
patch32
)
p32_parse
=
urllib
.
parse
.
urlsplit
(
patch32
,
scheme
=
'http'
)
if
not
(
p64_parse
[
0
]
==
p32_parse
[
0
]
==
base_parse
[
0
]):
raise
Exception
(
"URL scheme doesn't match repo base URL scheme"
)
if
not
(
p64_parse
[
1
]
==
p32_parse
[
1
]
==
base_parse
[
1
]):
raise
Exception
(
"URL network location doesn't match repo base URL network location"
)
if
posixpath
.
commonpath
((
base_parse
[
2
],
p64_parse
[
2
],
p32_parse
[
2
]))
!=
\
posixpath
.
commonpath
((
base_parse
[
2
],)):
raise
Exception
(
"URL is not subpath of repo base path"
)
p64_posix_relpath
=
posixpath
.
relpath
(
p64_parse
[
2
],
base_parse
[
2
])
p32_posix_relpath
=
posixpath
.
relpath
(
p32_parse
[
2
],
base_parse
[
2
])
p64_comp
=
posixpath_components
(
p64_posix_relpath
)
p32_comp
=
posixpath_components
(
p32_posix_relpath
)
p64_filepath
=
os
.
path
.
join
(
wc_base
,
*
p64_comp
)
p32_filepath
=
os
.
path
.
join
(
wc_base
,
*
p32_comp
)
if
not
os
.
path
.
exists
(
p64_filepath
):
if
not
os
.
path
.
exists
(
p64_filepath
):
raise
Exception
(
"File
%
s not found!"
%
p64_filepath
)
raise
Exception
(
"File
%
s not found!"
%
p
atch
64_filepath
)
if
not
os
.
path
.
exists
(
p32_filepath
):
if
not
os
.
path
.
exists
(
p32_filepath
):
raise
Exception
(
"File
%
s not found!"
%
p32_filepath
)
raise
Exception
(
"File
%
s not found!"
%
p
atch
32_filepath
)
if
os
.
path
.
getsize
(
p64_filepath
)
==
0
:
if
os
.
path
.
getsize
(
p64_filepath
)
==
0
:
raise
Exception
(
"File
%
s empty!"
%
p64_filepath
)
raise
Exception
(
"File
%
s empty!"
%
p
atch
64_filepath
)
if
os
.
path
.
exists
(
p32_filepath
)
==
0
:
if
os
.
path
.
exists
(
p32_filepath
)
==
0
:
raise
Exception
(
"File
%
s empty!"
%
p32_filepath
)
raise
Exception
(
"File
%
s empty!"
%
p
atch
32_filepath
)
def
validate_unique
(
drivers
,
new_driver
,
kf
):
def
validate_unique
(
drivers
,
new_driver
,
kf
):
if
find_driver
(
drivers
,
kf
(
new_driver
),
kf
)
is
not
None
:
if
find_driver
(
drivers
,
kf
(
new_driver
),
kf
)
is
not
None
:
...
...
tools/readme-autogen/constants.py
View file @
f0edc612
...
@@ -56,4 +56,4 @@ DRIVER_DIR_PREFIX = {
...
@@ -56,4 +56,4 @@ DRIVER_DIR_PREFIX = {
(
Product
.
Quadro
,
''
):
'quadro_'
,
(
Product
.
Quadro
,
''
):
'quadro_'
,
}
}
REPO_BASE
=
"https://raw.githubusercontent.com/keylase/nvidia-patch/master"
REPO_BASE
=
"https://raw.githubusercontent.com/keylase/nvidia-patch/master
/
"
tools/readme-autogen/readme_autogen.py
View file @
f0edc612
#!/usr/bin/env python3
#!/usr/bin/env python3
import
argparse
import
json
import
json
import
os.path
import
os.path
from
itertools
import
groupby
from
itertools
import
groupby
from
constants
import
Product
,
WinSeries
,
DATAFILE_PATH
,
LINUX_README_PATH
,
\
from
constants
import
Product
,
WinSeries
,
DATAFILE_PATH
,
LINUX_README_PATH
,
\
WINDOWS_README_PATH
,
ENCODING
WINDOWS_README_PATH
,
ENCODING
,
REPO_BASE
from
utils
import
template
,
find_driver
,
linux_driver_key
,
windows_driver_key
,
\
from
utils
import
template
,
find_driver
,
linux_driver_key
,
windows_driver_key
,
\
version_key_fun
version_key_fun
...
@@ -53,7 +54,7 @@ def linux_readme(data):
...
@@ -53,7 +54,7 @@ def linux_readme(data):
example_driver_version
=
example_driver
[
'version'
],
example_driver_version
=
example_driver
[
'version'
],
example_driver_file
=
os
.
path
.
basename
(
example_driver_url
))
example_driver_file
=
os
.
path
.
basename
(
example_driver_url
))
def
windows_driver_rows
(
drivers
):
def
windows_driver_rows
(
drivers
,
repo_base
):
driver_row_tmpl
=
template
(
'windows_driver_row.tmpl'
,
True
)
driver_row_tmpl
=
template
(
'windows_driver_row.tmpl'
,
True
)
markdown_link_tmpl
=
template
(
'markdown_link.tmpl'
,
True
)
markdown_link_tmpl
=
template
(
'markdown_link.tmpl'
,
True
)
def
row_gen
():
def
row_gen
():
...
@@ -62,8 +63,8 @@ def windows_driver_rows(drivers):
...
@@ -62,8 +63,8 @@ def windows_driver_rows(drivers):
variant
=
d
.
get
(
'variant'
)
variant
=
d
.
get
(
'variant'
)
version_variant
=
d
[
'version'
]
version_variant
=
d
[
'version'
]
version_variant
+=
(
" "
+
variant
)
if
variant
else
''
version_variant
+=
(
" "
+
variant
)
if
variant
else
''
patch64_url
=
d
.
get
(
'patch64_url'
)
patch64_url
=
repo_base
+
d
.
get
(
'patch64_url'
)
patch32_url
=
d
.
get
(
'patch32_url'
)
patch32_url
=
repo_base
+
d
.
get
(
'patch32_url'
)
driver_url
=
d
.
get
(
'driver_url'
)
driver_url
=
d
.
get
(
'driver_url'
)
patch64_link
=
markdown_link_tmpl
.
substitute
(
text
=
"x64 library patch"
,
patch64_link
=
markdown_link_tmpl
.
substitute
(
text
=
"x64 library patch"
,
url
=
patch64_url
)
if
patch64_url
else
''
url
=
patch64_url
)
if
patch64_url
else
''
...
@@ -78,28 +79,28 @@ def windows_driver_rows(drivers):
...
@@ -78,28 +79,28 @@ def windows_driver_rows(drivers):
driver_link
=
driver_link
)
driver_link
=
driver_link
)
return
"
\n
"
.
join
(
row_gen
())
return
"
\n
"
.
join
(
row_gen
())
def
windows_product_sections
(
drivers
):
def
windows_product_sections
(
drivers
,
repo_base
):
product_section_tmpl
=
template
(
'windows_product_section.tmpl'
)
product_section_tmpl
=
template
(
'windows_product_section.tmpl'
)
def
section_gen
():
def
section_gen
():
for
k
,
g
in
groupby
(
drivers
,
lambda
d
:
Product
[
d
[
'product'
]]):
for
k
,
g
in
groupby
(
drivers
,
lambda
d
:
Product
[
d
[
'product'
]]):
driver_rows
=
windows_driver_rows
(
g
)
driver_rows
=
windows_driver_rows
(
g
,
repo_base
)
yield
product_section_tmpl
.
substitute
(
driver_rows
=
driver_rows
)
yield
product_section_tmpl
.
substitute
(
driver_rows
=
driver_rows
)
return
'
\n\n
'
.
join
(
section_gen
())
return
'
\n\n
'
.
join
(
section_gen
())
def
windows_driver_table
(
drivers
):
def
windows_driver_table
(
drivers
,
repo_base
):
os_section_tmpl
=
template
(
'windows_os_section.tmpl'
,
True
)
os_section_tmpl
=
template
(
'windows_os_section.tmpl'
,
True
)
def
section_gen
():
def
section_gen
():
for
k
,
g
in
groupby
(
drivers
,
lambda
d
:
WinSeries
[
d
[
'os'
]]):
for
k
,
g
in
groupby
(
drivers
,
lambda
d
:
WinSeries
[
d
[
'os'
]]):
os
=
WIN_SERIES_LABELS
[
k
]
os
=
WIN_SERIES_LABELS
[
k
]
product_sections
=
windows_product_sections
(
g
)
product_sections
=
windows_product_sections
(
g
,
repo_base
)
yield
os_section_tmpl
.
substitute
(
os
=
os
,
yield
os_section_tmpl
.
substitute
(
os
=
os
,
product_sections
=
product_sections
)
product_sections
=
product_sections
)
return
'
\n\n
'
.
join
(
section_gen
())
return
'
\n\n
'
.
join
(
section_gen
())
def
windows_readme
(
data
):
def
windows_readme
(
data
,
repo_base
):
master_tmpl
=
template
(
'windows_readme_master.tmpl'
)
master_tmpl
=
template
(
'windows_readme_master.tmpl'
)
drivers
=
sorted
(
data
[
'drivers'
],
key
=
windows_driver_key
)
drivers
=
sorted
(
data
[
'drivers'
],
key
=
windows_driver_key
)
version_table
=
windows_driver_table
(
drivers
)
version_table
=
windows_driver_table
(
drivers
,
repo_base
)
geforce_drivers
=
filter
(
lambda
d
:
Product
[
d
[
'product'
]]
is
Product
.
GeForce
,
drivers
)
geforce_drivers
=
filter
(
lambda
d
:
Product
[
d
[
'product'
]]
is
Product
.
GeForce
,
drivers
)
quadro_drivers
=
filter
(
lambda
d
:
Product
[
d
[
'product'
]]
is
Product
.
Quadro
,
drivers
)
quadro_drivers
=
filter
(
lambda
d
:
Product
[
d
[
'product'
]]
is
Product
.
Quadro
,
drivers
)
latest_geforce_version
=
max
(
geforce_drivers
,
default
=
'xxx.xx'
,
latest_geforce_version
=
max
(
geforce_drivers
,
default
=
'xxx.xx'
,
...
@@ -110,13 +111,25 @@ def windows_readme(data):
...
@@ -110,13 +111,25 @@ def windows_readme(data):
latest_geforce_version
=
latest_geforce_version
,
latest_geforce_version
=
latest_geforce_version
,
latest_quadro_version
=
latest_quadro_version
)
latest_quadro_version
=
latest_quadro_version
)
def
parse_args
():
parser
=
argparse
.
ArgumentParser
(
description
=
"Generates markdown pages from repo data"
,
formatter_class
=
argparse
.
ArgumentDefaultsHelpFormatter
)
parser
.
add_argument
(
"-R"
,
"--repo-root"
,
help
=
"repository web root URL"
,
default
=
REPO_BASE
)
args
=
parser
.
parse_args
()
return
args
def
main
():
def
main
():
args
=
parse_args
()
with
open
(
DATAFILE_PATH
)
as
data_file
:
with
open
(
DATAFILE_PATH
)
as
data_file
:
data
=
json
.
load
(
data_file
)
data
=
json
.
load
(
data_file
)
res
=
linux_readme
(
data
[
'linux'
][
'x86_64'
])
res
=
linux_readme
(
data
[
'linux'
][
'x86_64'
])
with
open
(
LINUX_README_PATH
,
'w'
,
encoding
=
ENCODING
)
as
out
:
with
open
(
LINUX_README_PATH
,
'w'
,
encoding
=
ENCODING
)
as
out
:
out
.
write
(
res
)
out
.
write
(
res
)
res
=
windows_readme
(
data
[
'win'
][
'x86_64'
])
res
=
windows_readme
(
data
[
'win'
][
'x86_64'
]
,
args
.
repo_root
)
with
open
(
WINDOWS_README_PATH
,
'w'
,
encoding
=
ENCODING
)
as
out
:
with
open
(
WINDOWS_README_PATH
,
'w'
,
encoding
=
ENCODING
)
as
out
:
out
.
write
(
res
)
out
.
write
(
res
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment