114 lines
4.8 KiB
Diff
114 lines
4.8 KiB
Diff
--- a/flavor.in
|
|
+++ b/flavor.in
|
|
@@ -41,49 +41,6 @@
|
|
%__#FLAVOR# %{py_setup} %{?py_setup_args} install \\\
|
|
-O1 --skip-build --force --root %{buildroot} --prefix %{_prefix}
|
|
|
|
-##### PEP517/PEP518 macros #####
|
|
-
|
|
-%#FLAVOR#_pyproject_wheel(+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-=) \
|
|
-%{_python_use_flavor #FLAVOR#} \
|
|
-myargs="%{**}" \
|
|
-if [ -f %{_pyproject_anywheeldir}/*-none-any.whl ]; then \
|
|
- echo "Already found a compatible wheel in %{_pyproject_anywheeldir}" \
|
|
- mkdir -p %{_pyproject_wheeldir} \
|
|
- cp %{_pyproject_anywheeldir}/*-none-any.whl %{_pyproject_wheeldir}/ \
|
|
-else \
|
|
- %__#FLAVOR# -mpip wheel %{pyproject_wheel_args} ${myargs:-.}\
|
|
- if [ -f %{_pyproject_wheeldir}/*-none-any.whl ]; then \
|
|
- mkdir -p %{_pyproject_anywheeldir} \
|
|
- cp %{_pyproject_wheeldir}/*-none-any.whl %{_pyproject_anywheeldir}/ \
|
|
- fi \
|
|
-fi
|
|
-
|
|
-%#FLAVOR#_pyproject_install(+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-=) \
|
|
-%{_python_use_flavor #FLAVOR#} \
|
|
-myargs="%{**}" \
|
|
-havereq=0 \
|
|
-if [ -n "${myargs}" ]; then \
|
|
- for a in ${myargs}; do \
|
|
- pep440req=$(echo $(basename -- ${a}) | sed -E 's/([^-]+)-([^-]+)-.+\\.whl/\\1==\\2/') \
|
|
- if [ -f ${a} -a $(basename -- ${a}) != "${pep440req}" ]; then \
|
|
- myargs=$(echo ${myargs} | sed "s|${a}|${pep440req}|") \
|
|
- mkdir -p %{_pyproject_wheeldir} \
|
|
- cp $a %{_pyproject_wheeldir} \
|
|
- havereq=1 \
|
|
- fi \
|
|
- done \
|
|
-fi \
|
|
-if [ $havereq -eq 0 ]; then \
|
|
- # Fallback for old macro usages which expect a wheel in the current directory \
|
|
- ls %{_pyproject_wheeldir}/*.whl || (mkdir -p %{_pyproject_wheeldir}/; cp *.whl %{_pyproject_wheeldir}/) \
|
|
- for w in %{_pyproject_wheeldir}/*.whl; do \
|
|
- myargs="$myargs $(echo $(basename ${w}) | sed -E 's/([^-]+)-([^-]+)-.+\\.whl/\\1==\\2/')" \
|
|
- done \
|
|
-fi \
|
|
-%__#FLAVOR# -mpip install %{pyproject_install_args} $myargs \
|
|
-%#FLAVOR#_compile \
|
|
-%#FLAVOR#_fix_shebang
|
|
-
|
|
%#FLAVOR#_compile \
|
|
for d in %{buildroot}%{#FLAVOR#_sitelib} %{buildroot}%{#FLAVOR#_sitearch}; do \
|
|
if [ -d $d ]; then \
|
|
--- a/macros/010-common-defs
|
|
+++ b/macros/010-common-defs
|
|
@@ -170,6 +170,35 @@
|
|
print(rpm.expand(intro .. args .. "}")) \
|
|
}
|
|
|
|
+##### PEP-518 macros #####
|
|
+%pyproject_wheel(+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-=) %{lua:\
|
|
+ local args = rpm.expand("%**"); \
|
|
+ local pyexpandstart = "%{python_expand # \\n"; \
|
|
+ local buildwheel = "$python -mpip wheel --no-deps %{?py_setup_args:--build-option %{py_setup_args}}"; \
|
|
+ buildwheel = buildwheel .. " --disable-pip-version-check --use-pep517 --no-build-isolation --progress-bar off --verbose . -w build/ "; \
|
|
+ -- remove abi and platform tags from filename in case the package does define them incorrectly (see PEP427 for valid filenames) \
|
|
+ -- single percent for shell out of four percent by rpm.expand \
|
|
+ local renamewheel = "fn=(build/*.whl); fn2=${fn%%%%-*-*.whl}-none-any.whl; if [ ! $fn -ef $fn2 ]; then mv $fn $fn2; fi"; \
|
|
+ local pyexpandend = "}"; \
|
|
+ print(rpm.expand(pyexpandstart .. buildwheel .. args .. "\\n " .. renamewheel .. pyexpandend)) \
|
|
+}
|
|
+
|
|
+# No such option: --strip-file-prefix %%{buildroot}
|
|
+%pyproject_install(+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-=) %{lua:\
|
|
+ local args = rpm.expand("%**"); \
|
|
+ local broot = rpm.expand("--root %buildroot"); \
|
|
+ local pyexpandstart = "%{python_expand # \\n"; \
|
|
+ local findwheel = "wheelinargs=0 \\n"; \
|
|
+ if args ~= "" then \
|
|
+ findwheel = findwheel .. "for a in " .. args .. "; do if [ -f $a -a ${a: -3} = 'whl' ]; then wheelinargs=1; break; fi; done \\n"; \
|
|
+ end \
|
|
+ findwheel = findwheel .. "if [ $wheelinargs -eq 0 ]; then if [ -f build/*.whl ]; then wheelname=build/*.whl; else wheelname=*.whl; fi; fi \\n"; \
|
|
+ local installwheel = "$python -mpip install " .. broot .. " --disable-pip-version-check --no-compile --no-deps --progress-bar off " .. args .. " $wheelname"; \
|
|
+ local pyexpandend = "}"; \
|
|
+ print(rpm.expand(pyexpandstart .. findwheel .. installwheel .. pyexpandend)) \
|
|
+ print(rpm.expand("%python_compileall")) \
|
|
+}
|
|
+
|
|
##### Find language files #####
|
|
|
|
%python_find_lang() \
|
|
--- a/macros.lua
|
|
+++ b/macros.lua
|
|
@@ -446,20 +446,6 @@
|
|
end
|
|
end
|
|
|
|
-function pyproject_wheel(+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-=)
|
|
- rpm.expand("%_python_macro_init")
|
|
- for _, python in ipairs(pythons) do
|
|
- print(rpm.expand("%" .. python .. "_pyproject_wheel %**"))
|
|
- end
|
|
-end
|
|
-
|
|
-function pyproject_install(+abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-=)
|
|
- rpm.expand("%_python_macro_init")
|
|
- for _, python in ipairs(pythons) do
|
|
- print(rpm.expand("%" .. python .. "_pyproject_install %**"))
|
|
- end
|
|
-end
|
|
-
|
|
function python_compileall()
|
|
rpm.expand("%_python_macro_init")
|
|
for _, python in ipairs(pythons) do
|