mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-28 09:17:17 +00:00
generate filenames without using makepkg
This commit is contained in:
parent
393104f9fa
commit
12a3aa8573
@ -17,13 +17,14 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
from collections.abc import Generator
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from ahriman.core.build_tools.sources import Sources
|
from ahriman.core.build_tools.sources import Sources
|
||||||
from ahriman.core.configuration import Configuration
|
from ahriman.core.configuration import Configuration
|
||||||
from ahriman.core.exceptions import BuildError
|
from ahriman.core.exceptions import BuildError
|
||||||
from ahriman.core.log import LazyLogging
|
from ahriman.core.log import LazyLogging
|
||||||
from ahriman.core.utils import check_output
|
from ahriman.core.utils import check_output, package_like
|
||||||
from ahriman.models.package import Package
|
from ahriman.models.package import Package
|
||||||
from ahriman.models.pkgbuild_patch import PkgbuildPatch
|
from ahriman.models.pkgbuild_patch import PkgbuildPatch
|
||||||
from ahriman.models.repository_paths import RepositoryPaths
|
from ahriman.models.repository_paths import RepositoryPaths
|
||||||
@ -65,6 +66,36 @@ class Task(LazyLogging):
|
|||||||
self.makepkg_flags = configuration.getlist("build", "makepkg_flags", fallback=[])
|
self.makepkg_flags = configuration.getlist("build", "makepkg_flags", fallback=[])
|
||||||
self.makechrootpkg_flags = configuration.getlist("build", "makechrootpkg_flags", fallback=[])
|
self.makechrootpkg_flags = configuration.getlist("build", "makechrootpkg_flags", fallback=[])
|
||||||
|
|
||||||
|
def _package_archives(self, sources_dir: Path, source_files: list[Path]) -> list[Path]:
|
||||||
|
"""
|
||||||
|
extract package archives from the directory
|
||||||
|
|
||||||
|
Args:
|
||||||
|
sources_dir(Path): path to where sources are
|
||||||
|
source_files(list[Path]): list of files which were initially in the directory
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
list[Path]: list of file paths which looks like freshly generated archives
|
||||||
|
"""
|
||||||
|
def files() -> Generator[Path, None, None]:
|
||||||
|
for filepath in sources_dir.iterdir():
|
||||||
|
if filepath in source_files:
|
||||||
|
continue # skip files which were already there
|
||||||
|
if filepath.suffix == ".log":
|
||||||
|
continue # skip log files
|
||||||
|
if not package_like(filepath):
|
||||||
|
continue # path doesn't look like a package
|
||||||
|
yield filepath
|
||||||
|
|
||||||
|
# debug packages are always formed as package.base-debug
|
||||||
|
# see /usr/share/makepkg/util/pkgbuild.sh for more details
|
||||||
|
debug_package_prefix = f"{self.package.base}-debug-"
|
||||||
|
return [
|
||||||
|
package
|
||||||
|
for package in files()
|
||||||
|
if self.include_debug_packages or not package.name.startswith(debug_package_prefix)
|
||||||
|
]
|
||||||
|
|
||||||
def build(self, sources_dir: Path, **kwargs: str | None) -> list[Path]:
|
def build(self, sources_dir: Path, **kwargs: str | None) -> list[Path]:
|
||||||
"""
|
"""
|
||||||
run package build
|
run package build
|
||||||
@ -89,6 +120,7 @@ class Task(LazyLogging):
|
|||||||
}
|
}
|
||||||
self.logger.info("using environment variables %s", environment)
|
self.logger.info("using environment variables %s", environment)
|
||||||
|
|
||||||
|
source_files = list(sources_dir.iterdir())
|
||||||
check_output(
|
check_output(
|
||||||
*command,
|
*command,
|
||||||
exception=BuildError.from_process(self.package.base),
|
exception=BuildError.from_process(self.package.base),
|
||||||
@ -98,20 +130,7 @@ class Task(LazyLogging):
|
|||||||
environment=environment,
|
environment=environment,
|
||||||
)
|
)
|
||||||
|
|
||||||
package_list_command = ["makepkg", "--packagelist"]
|
return self._package_archives(sources_dir, source_files)
|
||||||
if not self.include_debug_packages:
|
|
||||||
package_list_command.append("OPTIONS=(!debug)") # disable debug flag manually
|
|
||||||
packages = check_output(
|
|
||||||
*package_list_command,
|
|
||||||
exception=BuildError.from_process(self.package.base),
|
|
||||||
cwd=sources_dir,
|
|
||||||
logger=self.logger,
|
|
||||||
environment=environment,
|
|
||||||
).splitlines()
|
|
||||||
# some dirty magic here
|
|
||||||
# the filter is applied in order to make sure that result will only contain packages which were actually built
|
|
||||||
# e.g. in some cases packagelist command produces debug packages which were not actually built
|
|
||||||
return list(filter(lambda path: path.is_file(), map(Path, packages)))
|
|
||||||
|
|
||||||
def init(self, sources_dir: Path, patches: list[PkgbuildPatch], local_version: str | None) -> str | None:
|
def init(self, sources_dir: Path, patches: list[PkgbuildPatch], local_version: str | None) -> str | None:
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user