def get_ebuild(self): ebuild = Ebuild() ebuild.homepage = 'https://www.website.com' ebuild.description = 'an ebuild' ebuild.src_uri = 'https://www.website.com/download/foo/archive/foo/release/lunar/0.0.0.tar.gz' ebuild.name = 'foo' ebuild.distro = 'lunar' return ebuild
def _gen_ebuild_for_package( distro, pkg_name, pkg, repo, ros_pkg, pkg_rosinstall ): pkg_ebuild = Ebuild() pkg_ebuild.distro = distro.name pkg_ebuild.src_uri = pkg_rosinstall[0]['tar']['uri'] pkg_names = get_package_names(distro) pkg_dep_walker = DependencyWalker(distro) pkg_buildtool_deps = pkg_dep_walker.get_depends(pkg_name, "buildtool") pkg_build_deps = pkg_dep_walker.get_depends(pkg_name, "build") pkg_run_deps = pkg_dep_walker.get_depends(pkg_name, "run") pkg_test_deps = pkg_dep_walker.get_depends(pkg_name, "test") pkg_keywords = ['x86', 'amd64', 'arm', 'arm64'] # add run dependencies for rdep in pkg_run_deps: pkg_ebuild.add_run_depend(rdep, rdep in pkg_names[0]) # add build dependencies for bdep in pkg_build_deps: pkg_ebuild.add_build_depend(bdep, bdep in pkg_names[0]) # add build tool dependencies for tdep in pkg_buildtool_deps: pkg_ebuild.add_build_depend(tdep, tdep in pkg_names[0]) # add test dependencies for test_dep in pkg_test_deps: pkg_ebuild.add_test_depend(test_dep, test_dep in pkg_names[0]) # add keywords for key in pkg_keywords: pkg_ebuild.add_keyword(key) # parse throught package xml try: pkg_xml = ros_pkg.get_package_xml(distro.name) except Exception: warn("fetch metadata for package {}".format(pkg_name)) return pkg_ebuild pkg = PackageMetadata(pkg_xml) pkg_ebuild.upstream_license = pkg.upstream_license pkg_ebuild.description = pkg.description pkg_ebuild.homepage = pkg.homepage pkg_ebuild.build_type = pkg.build_type return pkg_ebuild
def _gen_ebuild_for_package(distro, pkg_name, pkg, repo, ros_pkg, pkg_rosinstall): pkg_ebuild = Ebuild() pkg_ebuild.distro = distro.name pkg_ebuild.src_uri = pkg_rosinstall[0]['tar']['uri'] pkg_names = get_package_names(distro) pkg_dep_walker = DependencyWalker(distro) pkg_buildtool_deps = pkg_dep_walker.get_depends(pkg_name, "buildtool") pkg_build_deps = pkg_dep_walker.get_depends(pkg_name, "build") pkg_run_deps = pkg_dep_walker.get_depends(pkg_name, "run") pkg_keywords = ['x86', 'amd64', 'arm', 'arm64'] # add run dependencies for rdep in pkg_run_deps: pkg_ebuild.add_run_depend(rdep, rdep in pkg_names[0]) # add build dependencies for bdep in pkg_build_deps: pkg_ebuild.add_build_depend(bdep, bdep in pkg_names[0]) # add build tool dependencies for tdep in pkg_buildtool_deps: pkg_ebuild.add_build_depend(tdep, tdep in pkg_names[0]) # add keywords for key in pkg_keywords: pkg_ebuild.add_keyword(key) # parse throught package xml try: pkg_xml = ros_pkg.get_package_xml(distro.name) except Exception as e: warn("fetch metadata for package {}".format(pkg_name)) return pkg_ebuild pkg_fields = xmltodict.parse(pkg_xml) pkg_ebuild.upstream_license = pkg_fields['package']['license'] pkg_ebuild.description = pkg_fields['package']['description'] if isinstance(pkg_ebuild.description, str): pkg_ebuild.description = pkg_ebuild.description.replace('`', "") if len(pkg_ebuild.description) > 80: pkg_ebuild.description = pkg_ebuild.description[:80] try: if 'url' not in pkg_fields['package']: warn("no website field for package {}".format(pkg_name)) elif isinstance(pkg_fields['package']['url'], str): pkg_ebuild.homepage = pkg_fields['package']['url'] elif '@type' in pkg_fields['package']['url']: if pkg_fields['package']['url']['@type'] == 'website': if '#text' in pkg_fields['package']['url']: pkg_ebuild.homepage = pkg_fields['package']['url']['#text'] else: warn("failed to parse website for package {}".format(pkg_name)) except TypeError as e: warn("failed to parse website package {}: {}".format(pkg_name, e)) return pkg_ebuild