From patchwork Fri Jan 26 13:32:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yegor Yefremov X-Patchwork-Id: 866316 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.133; helo=hemlock.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zSfx10LWHz9s0g for ; Sat, 27 Jan 2018 00:33:05 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 068E889CD7; Fri, 26 Jan 2018 13:33:02 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id kZNL66sqQI+D; Fri, 26 Jan 2018 13:32:59 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id B2FC38A44B; Fri, 26 Jan 2018 13:32:59 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 2A61B1CE7F4 for ; Fri, 26 Jan 2018 13:32:59 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 258EC89E30 for ; Fri, 26 Jan 2018 13:32:59 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id g0XiKuhYDzAk for ; Fri, 26 Jan 2018 13:32:58 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail.visionsystems.de (mail.visionsystems.de [213.209.99.202]) by whitealder.osuosl.org (Postfix) with ESMTP id B67DC89E2F for ; Fri, 26 Jan 2018 13:32:57 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.visionsystems.de (Postfix) with ESMTP id C7C883641F3; Fri, 26 Jan 2018 14:32:57 +0100 (CET) Received: from mail.visionsystems.de ([127.0.0.1]) by localhost (mail.visionsystems.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 16866-01; Fri, 26 Jan 2018 14:32:57 +0100 (CET) Received: from visionsystems.de (kallisto.visionsystems.local [192.168.1.3]) by mail.visionsystems.de (Postfix) with ESMTP id A7501363A1A; Fri, 26 Jan 2018 14:32:57 +0100 (CET) Received: from development1.visionsystems.de ([192.168.1.36]) by visionsystems.de with Microsoft SMTPSVC(6.0.3790.4675); Fri, 26 Jan 2018 14:32:55 +0100 From: yegorslists@googlemail.com To: buildroot@buildroot.org Date: Fri, 26 Jan 2018 14:32:50 +0100 Message-Id: <1516973570-7732-1-git-send-email-yegorslists@googlemail.com> X-Mailer: git-send-email 2.1.4 X-OriginalArrivalTime: 26 Jan 2018 13:32:55.0336 (UTC) FILETIME=[2C28E280:01D396AA] X-Virus-Scanned: amavisd-new at visionsystems.de Subject: [Buildroot] [RFC] scanpypi: handle packages with wrong metadata X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.24 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" From: Yegor Yefremov Some packages like python-adafruit-ads1x15 have different values in PyPI metadata and setup.py or tar file name. Use package name (self.pkg_name) derived from tar file name instead of metadata_name taken from JSON. Also output the missing key when trying to setup arguments. Signed-off-by: Yegor Yefremov --- utils/scanpypi | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/utils/scanpypi b/utils/scanpypi index 7392c50..0add12b 100755 --- a/utils/scanpypi +++ b/utils/scanpypi @@ -130,6 +130,7 @@ class BuildrootPackage(): self.md5_sum = None self.metadata = None self.metadata_name = None + self.pkg_name = None self.metadata_url = None self.pkg_req = None self.setup_metadata = None @@ -249,10 +250,12 @@ class BuildrootPackage(): os.makedirs(tmp_pkg) as_tarfile.extractall(tmp_pkg) + index_of_pkg_version = self.filename.index(self.version) - 1 + self.pkg_name = self.filename[:index_of_pkg_version] tmp_extract = '{folder}/{name}-{version}' self.tmp_extract = tmp_extract.format( folder=tmp_pkg, - name=self.metadata_name, + name=self.pkg_name, version=self.version) def load_setup(self): @@ -265,14 +268,15 @@ class BuildrootPackage(): s_file, s_path, s_desc = imp.find_module('setup', [self.tmp_extract]) setup = imp.load_module('setup', s_file, s_path, s_desc) try: - self.setup_metadata = self.setup_args[self.metadata_name] - except KeyError: + self.setup_metadata = self.setup_args[self.pkg_name] + except KeyError as err: + print('Following key is missing: {}'.format(err)) # This means setup was not called which most likely mean that it is # called through the if __name__ == '__main__' directive. # In this case, we can only pray that it is called through a # function called main() in setup.py. setup.main() # Will raise AttributeError if not found - self.setup_metadata = self.setup_args[self.metadata_name] + self.setup_metadata = self.setup_args[self.pkg_name] # Here we must remove the module the hard way. # We must do this because of a very specific case: if a package calls # setup from the __main__ but does not come with a 'main()' function,