From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id ED8751381F3 for ; Thu, 18 Jul 2013 22:29:29 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 81BF0E0ABA; Thu, 18 Jul 2013 22:29:27 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 08355E0ABA for ; Thu, 18 Jul 2013 22:29:26 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id AE8D933E627 for ; Thu, 18 Jul 2013 22:29:25 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 2C86EE468F for ; Thu, 18 Jul 2013 22:29:24 +0000 (UTC) From: "Jauhien Piatlicki" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Jauhien Piatlicki" Message-ID: <1374186547.01ba09173a010a2ac8d9b7f0a2d165ad3319b4e1.jauhien@gentoo> Subject: [gentoo-commits] proj/g-sorcery:master commit in: gs_ctan/ X-VCS-Repository: proj/g-sorcery X-VCS-Files: gs_ctan/ctan_db.py X-VCS-Directories: gs_ctan/ X-VCS-Committer: jauhien X-VCS-Committer-Name: Jauhien Piatlicki X-VCS-Revision: 01ba09173a010a2ac8d9b7f0a2d165ad3319b4e1 X-VCS-Branch: master Date: Thu, 18 Jul 2013 22:29:24 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: e262b58d-09f5-49ee-9327-a488a6666be8 X-Archives-Hash: c544c6c267fa382b040bb3a9e9bcae42 commit: 01ba09173a010a2ac8d9b7f0a2d165ad3319b4e1 Author: Jauhien Piatlicki (jauhien) gmail com> AuthorDate: Thu Jul 18 22:29:07 2013 +0000 Commit: Jauhien Piatlicki gmail com> CommitDate: Thu Jul 18 22:29:07 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/g-sorcery.git;a=commit;h=01ba0917 gs_ctan/ctan_db: generation of ebuild data implemented --- gs_ctan/ctan_db.py | 94 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 85 insertions(+), 9 deletions(-) diff --git a/gs_ctan/ctan_db.py b/gs_ctan/ctan_db.py index a85488e..99c16c6 100644 --- a/gs_ctan/ctan_db.py +++ b/gs_ctan/ctan_db.py @@ -13,13 +13,30 @@ import itertools import os +import re +import sys +import portage + +from g_sorcery.g_collections import Dependency, Package, serializable_elist +from g_sorcery.logger import Logger from g_sorcery.package_db import PackageDB from g_sorcery.exceptions import SyncError class CtanDB(PackageDB): def __init__(self, directory, repo_uri="", db_uri=""): super(CtanDB, self).__init__(directory, repo_uri, db_uri) + + logger = Logger() + gentoo_arch = portage.settings['ARCH'] + self.arch = "" + if gentoo_arch == "x86": + self.arch = "i386-linux" + elif gentoo_arch == "amd64": + self.arch = "x86_64-linux" + else: + logger.warning("not supported arch: " + gentoo_arch) + def get_download_uries(self): tlpdb_uri = self.repo_uri + "/tlpkg/texlive.tlpdb.xz" @@ -44,7 +61,7 @@ class CtanDB(PackageDB): VALUE = 1 FILES_LENGTH = len("files") - for entry in data: + for entry in data: res_entry = {} previous_key = "" current_key = "" @@ -71,16 +88,30 @@ class CtanDB(PackageDB): res_entry[line[KEY]] = " ".join(line[VALUE:]) previous_key = line[KEY] current_key = "" + + parts = res_entry["name"].split(".") + if len(parts) > 1: + if parts[1] != self.arch: + continue + result.append(res_entry) return result def process_data(self, data): + + category = "dev-tex" + + self.add_category(category) + + ARCH_LENGTH = len("ARCH") - self.add_category('dev-tex') + data = data["texlive.tlpdb"] - for entry in data["texlive.tlpdb"]: + self.number_of_packages = len(data) + self.written_number = 0 + for entry in data: realname = entry["name"] #todo: work on common data vars processing: external deps, filtering etc. @@ -103,6 +134,10 @@ class CtanDB(PackageDB): if "catalogue-version" in entry: version = entry["catalogue-version"] + #todo better version checking and processing + match_object = re.match("^[0-9\.]+[a-z]?$", version) + if not match_object: + version = entry["revision"] else: version = entry["revision"] @@ -121,9 +156,50 @@ class CtanDB(PackageDB): base_src_uri = "http://mirror.ctan.org/systems/texlive/tlnet/archive" catalogue = "" - print("dev-tex/" + realname + "-" + version) - print(" license: " + license) - print(" " + description) - print - print(" " + longdescription) - print + dependencies = serializable_elist(separator="\n\t") + + if "depend" in entry: + for dependency in entry["depend"]: + if dependency[-ARCH_LENGTH:] == "ARCH": + dependency = dependency[:-ARCH_LENGTH] + self.arch + dependencies.append(Dependency(category, dependency)) + + ebuild_data = {"realname" : realname, + "description" : description, + "homepage" : "http://tug.org/texlive/", + "license" : license, + "source_type" : source_type, + "base_src_uri" : base_src_uri, + "catalogue" : catalogue, + "dependencies" : dependencies, + "depend" : dependencies, + "rdepend" : dependencies, + #eclass entry + #'eclasses' : ['gs-ctan'], + #metadata entries + 'maintainer' : [{'email' : 'piatlicki@gmail.com', + 'name' : 'Jauhien Piatlicki'}], + 'longdescription' : longdescription + } + + self.add_package(Package(category, realname, version), ebuild_data) + + logger = Logger() + logger.info("writing database") + + def additional_write_version(self, category, package, version): + chars = ['-','\\','|','/'] + show = chars[self.written_number % 4] + percent = (self.written_number * 100)/self.number_of_packages + length = 20 + progress = (percent * 20)/100 + blank = 20 - progress + + sys.stdout.write("\r %s [%s%s] %s%%" % (show, "#" * progress, " " * blank, percent)) + sys.stdout.flush() + self.written_number += 1 + + def additional_write_category(self, category): + sys.stdout.write("\r %s [%s] %s%%" % ("-", "#" * 20, 100)) + sys.stdout.flush() + print("")