mirror of
https://github.com/BioArchLinux/bioarchlinux-tools.git
synced 2025-03-09 22:53:31 +00:00
change arch if needscompilation
changes
This commit is contained in:
parent
f114ec8574
commit
ba0c7a1ad5
2 changed files with 48 additions and 19 deletions
|
@ -16,6 +16,7 @@ from typing import Optional
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from dbmanager import get_bioc_versions, EXCLUDED_PKGS
|
from dbmanager import get_bioc_versions, EXCLUDED_PKGS
|
||||||
from pkg_archiver import archive_pkg_yaml, archive_pkg_pkgbuild, unarchive_cran
|
from pkg_archiver import archive_pkg_yaml, archive_pkg_pkgbuild, unarchive_cran
|
||||||
|
import re
|
||||||
|
|
||||||
|
|
||||||
class PkgInfo:
|
class PkgInfo:
|
||||||
|
@ -220,22 +221,12 @@ class PkgInfo:
|
||||||
for i, line in enumerate(lines):
|
for i, line in enumerate(lines):
|
||||||
if line.strip().startswith("depends"):
|
if line.strip().startswith("depends"):
|
||||||
depends_interval[0] = i
|
depends_interval[0] = i
|
||||||
elif line.strip().startswith("optdepends"):
|
|
||||||
optdepends_interval[0] = i
|
|
||||||
|
|
||||||
if depends_interval[0] > -1 and depends_interval[1] == -1:
|
if depends_interval[0] > -1 and depends_interval[1] == -1:
|
||||||
if ')' in line:
|
if line.strip().endswith(")"):
|
||||||
# end depends
|
# end depends
|
||||||
depends_interval[1] = i
|
depends_interval[1] = i
|
||||||
if optdepends_interval[0] > -1 and optdepends_interval[1] == -1:
|
break
|
||||||
if ')' in line:
|
|
||||||
# end optdepends
|
|
||||||
optdepends_interval[1] = i
|
|
||||||
if not (depends_interval[1] < optdepends_interval[0] or optdepends_interval[1] < depends_interval[0]):
|
|
||||||
logging.error(
|
|
||||||
"depends and optdepends overlap, please fix it manually")
|
|
||||||
return
|
|
||||||
|
|
||||||
if self.depends_changed:
|
if self.depends_changed:
|
||||||
for i in range(depends_interval[0], depends_interval[1]):
|
for i in range(depends_interval[0], depends_interval[1]):
|
||||||
lines[i] = ''
|
lines[i] = ''
|
||||||
|
@ -243,6 +234,16 @@ class PkgInfo:
|
||||||
['depends=(', '\n'.join([' ' + _ for _ in self.new_depends]), ')\n'])
|
['depends=(', '\n'.join([' ' + _ for _ in self.new_depends]), ')\n'])
|
||||||
|
|
||||||
# new lines for new optdepends
|
# new lines for new optdepends
|
||||||
|
new_optdepends_line = ""
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
if line.strip().startswith("optdepends"):
|
||||||
|
optdepends_interval[0] = i
|
||||||
|
|
||||||
|
if optdepends_interval[0] > -1 and optdepends_interval[1] == -1:
|
||||||
|
if line.strip().endswith(")"):
|
||||||
|
# end optdepends
|
||||||
|
optdepends_interval[1] = i
|
||||||
|
break
|
||||||
if self.new_optdepends:
|
if self.new_optdepends:
|
||||||
new_optdepends_line = '\n'.join(
|
new_optdepends_line = '\n'.join(
|
||||||
['optdepends=(', '\n'.join(
|
['optdepends=(', '\n'.join(
|
||||||
|
@ -256,14 +257,17 @@ class PkgInfo:
|
||||||
optdepends_interval[1] = depends_interval[1]+1
|
optdepends_interval[1] = depends_interval[1]+1
|
||||||
|
|
||||||
# has old,
|
# has old,
|
||||||
for i in range(optdepends_interval[0], optdepends_interval[1]):
|
else:
|
||||||
lines[i] = ''
|
for i in range(optdepends_interval[0], optdepends_interval[1]):
|
||||||
if self.new_optdepends:
|
lines[i] = ''
|
||||||
lines[optdepends_interval[1]] = new_optdepends_line
|
lines[optdepends_interval[1]] = ""
|
||||||
|
if self.new_optdepends:
|
||||||
|
lines[optdepends_interval[1]] = new_optdepends_line
|
||||||
|
|
||||||
logging.info(f"Writing new PKGBUILD for {self.pkgname}")
|
logging.info(f"Writing new PKGBUILD for {self.pkgname}")
|
||||||
with open("PKGBUILD", "w") as f:
|
with open("PKGBUILD", "w") as f:
|
||||||
f.writelines(lines)
|
f.writelines(lines)
|
||||||
|
change_arch(self.desc)
|
||||||
return self.added_depends
|
return self.added_depends
|
||||||
|
|
||||||
def update_yaml(self, yaml_file='lilac.yaml'):
|
def update_yaml(self, yaml_file='lilac.yaml'):
|
||||||
|
@ -292,6 +296,29 @@ def create_temporary_copy(path):
|
||||||
return tmp.name
|
return tmp.name
|
||||||
|
|
||||||
|
|
||||||
|
def change_arch(desc: str):
|
||||||
|
# change any to x86_64 in PKGBUILD or vice versa
|
||||||
|
need_compile = re.search("NeedsCompilation: (.*)", desc)
|
||||||
|
if not need_compile:
|
||||||
|
return
|
||||||
|
need_compile = need_compile.group(1)
|
||||||
|
with open("PKGBUILD", "r") as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
started = False
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
if line.strip().startswith("arch"):
|
||||||
|
started = True
|
||||||
|
if started:
|
||||||
|
if need_compile.lower() == 'no':
|
||||||
|
lines[i] = line.replace('x86_64', 'any')
|
||||||
|
elif need_compile.lower() == 'yes':
|
||||||
|
lines[i] = line.replace('any', 'x86_64')
|
||||||
|
if started and line.strip().endswith(')'):
|
||||||
|
break
|
||||||
|
with open("PKGBUILD", "w") as f:
|
||||||
|
f.writelines(lines)
|
||||||
|
|
||||||
|
|
||||||
def update_depends_by_file(file, bioarch_path="BioArchLinux", db="sqlite.db",
|
def update_depends_by_file(file, bioarch_path="BioArchLinux", db="sqlite.db",
|
||||||
auto_archive=False, auto_unarchive=True,
|
auto_archive=False, auto_unarchive=True,
|
||||||
bioc_min_ver="3.0", bioc_meta_mirror="https://bioconductor.org", output_file="added_depends.txt"):
|
bioc_min_ver="3.0", bioc_meta_mirror="https://bioconductor.org", output_file="added_depends.txt"):
|
||||||
|
@ -315,10 +342,10 @@ def update_depends_by_file(file, bioarch_path="BioArchLinux", db="sqlite.db",
|
||||||
added_deps = []
|
added_deps = []
|
||||||
with open(file, "r") as f:
|
with open(file, "r") as f:
|
||||||
for pkgname in f:
|
for pkgname in f:
|
||||||
|
logging.debug(f"Dealing with {pkgname}")
|
||||||
pkgname = pkgname.strip()
|
pkgname = pkgname.strip()
|
||||||
if not pkgname.strip().startswith("r-"):
|
if not pkgname.strip().startswith("r-"):
|
||||||
pkgname = "r-"+pkgname.lower()
|
pkgname = "r-"+pkgname.lower()
|
||||||
logging.info(f"Updating {pkgname}")
|
|
||||||
os.chdir(f"{bioarch_path}/{pkgname}")
|
os.chdir(f"{bioarch_path}/{pkgname}")
|
||||||
temp_pkgbuild = create_temporary_copy("PKGBUILD")
|
temp_pkgbuild = create_temporary_copy("PKGBUILD")
|
||||||
temp_lilac = create_temporary_copy("lilac.yaml")
|
temp_lilac = create_temporary_copy("lilac.yaml")
|
||||||
|
@ -331,13 +358,15 @@ def update_depends_by_file(file, bioarch_path="BioArchLinux", db="sqlite.db",
|
||||||
archive_pkg_yaml(bioconductor_version=pkginfo.bioc_ver)
|
archive_pkg_yaml(bioconductor_version=pkginfo.bioc_ver)
|
||||||
archive_pkg_pkgbuild(bioconductor_version=pkginfo.bioc_ver)
|
archive_pkg_pkgbuild(bioconductor_version=pkginfo.bioc_ver)
|
||||||
# if PKGBUILD changed, bump pkgrel
|
# if PKGBUILD changed, bump pkgrel
|
||||||
if auto_unarchive:
|
if auto_unarchive and pkginfo.desc:
|
||||||
unarchive_cran()
|
unarchive_cran()
|
||||||
if not filecmp.cmp(temp_pkgbuild, "PKGBUILD"):
|
if not filecmp.cmp(temp_pkgbuild, "PKGBUILD"):
|
||||||
lilac.update_pkgrel()
|
lilac.update_pkgrel()
|
||||||
|
logging.info(f"Updating {pkgname}")
|
||||||
else:
|
else:
|
||||||
# else revert changes to lilac.yaml
|
# else revert changes to lilac.yaml
|
||||||
shutil.copy2(temp_lilac, "lilac.yaml")
|
shutil.copy2(temp_lilac, "lilac.yaml")
|
||||||
|
logging.debug(f"No changes to {pkgname}")
|
||||||
os.remove(temp_pkgbuild)
|
os.remove(temp_pkgbuild)
|
||||||
os.remove(temp_lilac)
|
os.remove(temp_lilac)
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ def archive_pkg_pkgbuild(bioconductor_version=3.15, _pkgname="_pkgname"):
|
||||||
# https://cran.r-project.org/src/contrib/Archive/${_pkgname}/${_pkgname}_${pkgver}.tar.gz
|
# https://cran.r-project.org/src/contrib/Archive/${_pkgname}/${_pkgname}_${pkgver}.tar.gz
|
||||||
new_line = lines[i].replace(
|
new_line = lines[i].replace(
|
||||||
"src/contrib", "src/contrib/Archive/${_pkgname}")
|
"src/contrib", "src/contrib/Archive/${_pkgname}")
|
||||||
elif '//bioconductor.org' in lines[i]:
|
elif '//bioconductor.org' in lines[i] and bioconductor_version != None:
|
||||||
# https://bioconductor.org/packages/release/bioc/src/contrib/${_pkgname}_${_pkgver}.tar.gz
|
# https://bioconductor.org/packages/release/bioc/src/contrib/${_pkgname}_${_pkgver}.tar.gz
|
||||||
# to
|
# to
|
||||||
# https://bioconductor.org/packages/3.14/bioc/src/contrib/ABAEnrichment_1.24.0.tar.gz
|
# https://bioconductor.org/packages/3.14/bioc/src/contrib/ABAEnrichment_1.24.0.tar.gz
|
||||||
|
|
Loading…
Add table
Reference in a new issue