From: "André Erdmann" <dywi@mailerd.de> To: gentoo-commits@lists.gentoo.org Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/pkgdir/ Date: Wed, 10 Jul 2013 16:16:56 +0000 (UTC) [thread overview] Message-ID: <1373468836.d0803a228f07e2c535dac48b21d07499d0a6e8db.dywi@gentoo> (raw) commit: d0803a228f07e2c535dac48b21d07499d0a6e8db Author: André Erdmann <dywi <AT> mailerd <DOT> de> AuthorDate: Wed Jul 10 15:07:16 2013 +0000 Commit: André Erdmann <dywi <AT> mailerd <DOT> de> CommitDate: Wed Jul 10 15:07:16 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=d0803a22 remove portagemanifest --- .../overlay/pkgdir/packagedir_portagemanifest.py | 183 --------------------- 1 file changed, 183 deletions(-) diff --git a/roverlay/overlay/pkgdir/packagedir_portagemanifest.py b/roverlay/overlay/pkgdir/packagedir_portagemanifest.py deleted file mode 100644 index f4527a1..0000000 --- a/roverlay/overlay/pkgdir/packagedir_portagemanifest.py +++ /dev/null @@ -1,183 +0,0 @@ -# R overlay -- overlay package, package directory (portage manifest) -# -*- coding: utf-8 -*- -# Copyright (C) 2013 André Erdmann <dywi@mailerd.de> -# Distributed under the terms of the GNU General Public License; -# either version 2 of the License, or (at your option) any later version. - -__all__ = [ 'PackageDir', ] - -import os -import shlex - -import portage.manifest -import portage.exception - -import logging -logging.getLogger ( __name__ ).warning ( - "experimental code, importing ebuilds doesn't work!" -) -del logging - -import roverlay.config -import roverlay.strutil -import roverlay.packageinfo -import roverlay.overlay.pkgdir.packagedir_base -import roverlay.overlay.pkgdir.distroot - -class PackageDir ( roverlay.overlay.pkgdir.packagedir_base.PackageDirBase ): - # FIXME: portagemanifest is broken, it cannot create Manifest files for - # package dirs with imported ebuilds - - MANIFEST_THREADSAFE = True - - def import_ebuilds ( self, *args, **kwargs ): - raise NotImplementedError ( - "ebuild imports not supported by portagemanifest!" - ) - # --- end of import_ebuilds (...) --- - - def _scan_add_package ( self, efile, pvr ): - """Called for each ebuild that is found during scan(). - Creates a PackageInfo for the ebuild and adds it to self._packages. - - arguments: - * efile -- full path to the ebuild file - * pvr -- version ($PVR) of the ebuild - """ - - # read SRC_URI from the ebuild file which is the only way to get - # the correct package name - src_uri = None - with open ( efile, 'r' ) as FH: - reader = shlex.shlex ( FH ) - reader.whitespace_split = False - reader.wordchars += ' ,./$()[]:+-@*~<>' - - # assumption: only one SRC_URI= statement per ebuild - # (true for roverlay ebuilds) - mode = 0 - token = reader.get_token() - while token: - if mode == 0 and token == 'SRC_URI': - mode = 1 - elif mode == 1 and token == '=': - mode = 2 - elif mode == 2: - mode = 3 - src_uri = tuple ( - roverlay.strutil.split_whitespace ( - roverlay.strutil.unquote ( token ) - ) - ) - - # break loop if SRC_URI parsed - token = reader.get_token() if mode < 3 else None - # --- while; - del token, reader, mode - # --- with; - - # another assumption: - # name of the R package is src_uri[2] if src_uri[1] == '->', else [0] - # - if src_uri: - # > 2, > 1? ebuild would be broken if $SRC_URI ends with '->' - #if len ( src_uri ) > 2 and src_uri [1] == '->': - if len ( src_uri ) > 1 and src_uri [1] == '->': - package_filename = src_uri[2] - else: - package_filename = src_uri[0].rpartition ( '/' ) [2] - - p = roverlay.packageinfo.PackageInfo ( - physical_only=True, pvr=pvr, ebuild_file=efile, - package_filename=package_filename - ) - else: - p = roverlay.packageinfo.PackageInfo ( - physical_only=True, pvr=pvr, ebuild_file=efile - ) - # --- if; - - self._packages [ p ['ebuild_verstr'] ] = p - # --- end of _scan_add_package (...) --- - - def _write_manifest ( self, pkgs_for_manifest ): - """Generates and writes the Manifest file for this package. - - expects: called after writing metadata/ebuilds - - returns: True - """ - - # TODO: this needs proper testing - # * the written Manifest file must not differ from the one generated by - # ebuild(1) (the order of the entries is not important, though) - # * safe for incremental usage? - # * correct usage of the portage libs (also see other comments below) - # * what happens if an ebuild has been removed? - # * ... - # - - distdir = self.DISTROOT.get_distdir ( self.name ) - - # allow_missing=True -- don't write empty Manifest files - manifest = portage.manifest.Manifest ( - self.physical_location, - distdir.get_root(), - allow_missing=True, - ) - - # metadata.xml - #os.path.basename ( self._metadata.filepath ) - try: - manifest.addFile ( 'MISC', 'metadata.xml' ) - except portage.exception.FileNotFound as f404: - # package dir has no metadata.xml file - # - # This happens for a few package dirs that dont contain any package - # with enough information required for metadata creation - # - # packagedir_ebuildmanifest accepts this case without complaining, - # so ignore it here, too. - # - pass - - - for p in pkgs_for_manifest: - - ebuild_filename = p ['ebuild_filename'] - package_filename = p ['package_src_destpath'] - - if not manifest.hasFile ( 'EBUILD', ebuild_filename ): - manifest.addFile ( 'EBUILD', ebuild_filename ) - - if not manifest.hasFile ( 'DIST', package_filename ): - distdir.add ( p ['package_file'], package_filename, p ) - manifest.addFile ( - 'DIST', - package_filename, - # TODO: - # ignoreMissing for DIST files, else addFile raises - # FileNotFound -- is this the correct way to add DIST files? - ignoreMissing=True - ) - else: - # ebuildmanifest adds all package files to the distdir without - # doing the check above (if hasFile()) - # be "fully compatible" and do that here, too - try: - distdir.add ( p ['package_file'], package_filename, p ) - except Exception as err: - self.logger.exception ( err ) - - # ??? FIXME: (read) portage api docs - # - # manifest.create -- recreate from scratch (required?) - # -> assumeDistHashesSometimes: - # use existing checksums for non-existent DIST files (required?) - # - #manifest.create ( assumeDistHashesSometimes=True ) - #manifest.create ( assumeDistHashesSometimes=False ) - - manifest.write() - return True - # --- end of write_manifest (...) ---
WARNING: multiple messages have this Message-ID (diff)
From: "André Erdmann" <dywi@mailerd.de> To: gentoo-commits@lists.gentoo.org Subject: [gentoo-commits] proj/R_overlay:gsoc13/next commit in: roverlay/overlay/pkgdir/ Date: Wed, 10 Jul 2013 15:10:44 +0000 (UTC) [thread overview] Message-ID: <1373468836.d0803a228f07e2c535dac48b21d07499d0a6e8db.dywi@gentoo> (raw) Message-ID: <20130710151044.LNMV7uD7eg-BFTVl2kUM9Hs1-IQAquAwgIRmZ-U5hBY@z> (raw) commit: d0803a228f07e2c535dac48b21d07499d0a6e8db Author: André Erdmann <dywi <AT> mailerd <DOT> de> AuthorDate: Wed Jul 10 15:07:16 2013 +0000 Commit: André Erdmann <dywi <AT> mailerd <DOT> de> CommitDate: Wed Jul 10 15:07:16 2013 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=d0803a22 remove portagemanifest --- .../overlay/pkgdir/packagedir_portagemanifest.py | 183 --------------------- 1 file changed, 183 deletions(-) diff --git a/roverlay/overlay/pkgdir/packagedir_portagemanifest.py b/roverlay/overlay/pkgdir/packagedir_portagemanifest.py deleted file mode 100644 index f4527a1..0000000 --- a/roverlay/overlay/pkgdir/packagedir_portagemanifest.py +++ /dev/null @@ -1,183 +0,0 @@ -# R overlay -- overlay package, package directory (portage manifest) -# -*- coding: utf-8 -*- -# Copyright (C) 2013 André Erdmann <dywi@mailerd.de> -# Distributed under the terms of the GNU General Public License; -# either version 2 of the License, or (at your option) any later version. - -__all__ = [ 'PackageDir', ] - -import os -import shlex - -import portage.manifest -import portage.exception - -import logging -logging.getLogger ( __name__ ).warning ( - "experimental code, importing ebuilds doesn't work!" -) -del logging - -import roverlay.config -import roverlay.strutil -import roverlay.packageinfo -import roverlay.overlay.pkgdir.packagedir_base -import roverlay.overlay.pkgdir.distroot - -class PackageDir ( roverlay.overlay.pkgdir.packagedir_base.PackageDirBase ): - # FIXME: portagemanifest is broken, it cannot create Manifest files for - # package dirs with imported ebuilds - - MANIFEST_THREADSAFE = True - - def import_ebuilds ( self, *args, **kwargs ): - raise NotImplementedError ( - "ebuild imports not supported by portagemanifest!" - ) - # --- end of import_ebuilds (...) --- - - def _scan_add_package ( self, efile, pvr ): - """Called for each ebuild that is found during scan(). - Creates a PackageInfo for the ebuild and adds it to self._packages. - - arguments: - * efile -- full path to the ebuild file - * pvr -- version ($PVR) of the ebuild - """ - - # read SRC_URI from the ebuild file which is the only way to get - # the correct package name - src_uri = None - with open ( efile, 'r' ) as FH: - reader = shlex.shlex ( FH ) - reader.whitespace_split = False - reader.wordchars += ' ,./$()[]:+-@*~<>' - - # assumption: only one SRC_URI= statement per ebuild - # (true for roverlay ebuilds) - mode = 0 - token = reader.get_token() - while token: - if mode == 0 and token == 'SRC_URI': - mode = 1 - elif mode == 1 and token == '=': - mode = 2 - elif mode == 2: - mode = 3 - src_uri = tuple ( - roverlay.strutil.split_whitespace ( - roverlay.strutil.unquote ( token ) - ) - ) - - # break loop if SRC_URI parsed - token = reader.get_token() if mode < 3 else None - # --- while; - del token, reader, mode - # --- with; - - # another assumption: - # name of the R package is src_uri[2] if src_uri[1] == '->', else [0] - # - if src_uri: - # > 2, > 1? ebuild would be broken if $SRC_URI ends with '->' - #if len ( src_uri ) > 2 and src_uri [1] == '->': - if len ( src_uri ) > 1 and src_uri [1] == '->': - package_filename = src_uri[2] - else: - package_filename = src_uri[0].rpartition ( '/' ) [2] - - p = roverlay.packageinfo.PackageInfo ( - physical_only=True, pvr=pvr, ebuild_file=efile, - package_filename=package_filename - ) - else: - p = roverlay.packageinfo.PackageInfo ( - physical_only=True, pvr=pvr, ebuild_file=efile - ) - # --- if; - - self._packages [ p ['ebuild_verstr'] ] = p - # --- end of _scan_add_package (...) --- - - def _write_manifest ( self, pkgs_for_manifest ): - """Generates and writes the Manifest file for this package. - - expects: called after writing metadata/ebuilds - - returns: True - """ - - # TODO: this needs proper testing - # * the written Manifest file must not differ from the one generated by - # ebuild(1) (the order of the entries is not important, though) - # * safe for incremental usage? - # * correct usage of the portage libs (also see other comments below) - # * what happens if an ebuild has been removed? - # * ... - # - - distdir = self.DISTROOT.get_distdir ( self.name ) - - # allow_missing=True -- don't write empty Manifest files - manifest = portage.manifest.Manifest ( - self.physical_location, - distdir.get_root(), - allow_missing=True, - ) - - # metadata.xml - #os.path.basename ( self._metadata.filepath ) - try: - manifest.addFile ( 'MISC', 'metadata.xml' ) - except portage.exception.FileNotFound as f404: - # package dir has no metadata.xml file - # - # This happens for a few package dirs that dont contain any package - # with enough information required for metadata creation - # - # packagedir_ebuildmanifest accepts this case without complaining, - # so ignore it here, too. - # - pass - - - for p in pkgs_for_manifest: - - ebuild_filename = p ['ebuild_filename'] - package_filename = p ['package_src_destpath'] - - if not manifest.hasFile ( 'EBUILD', ebuild_filename ): - manifest.addFile ( 'EBUILD', ebuild_filename ) - - if not manifest.hasFile ( 'DIST', package_filename ): - distdir.add ( p ['package_file'], package_filename, p ) - manifest.addFile ( - 'DIST', - package_filename, - # TODO: - # ignoreMissing for DIST files, else addFile raises - # FileNotFound -- is this the correct way to add DIST files? - ignoreMissing=True - ) - else: - # ebuildmanifest adds all package files to the distdir without - # doing the check above (if hasFile()) - # be "fully compatible" and do that here, too - try: - distdir.add ( p ['package_file'], package_filename, p ) - except Exception as err: - self.logger.exception ( err ) - - # ??? FIXME: (read) portage api docs - # - # manifest.create -- recreate from scratch (required?) - # -> assumeDistHashesSometimes: - # use existing checksums for non-existent DIST files (required?) - # - #manifest.create ( assumeDistHashesSometimes=True ) - #manifest.create ( assumeDistHashesSometimes=False ) - - manifest.write() - return True - # --- end of write_manifest (...) ---
next reply other threads:[~2013-07-10 16:17 UTC|newest] Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-07-10 16:16 André Erdmann [this message] 2013-07-10 15:10 ` [gentoo-commits] proj/R_overlay:gsoc13/next commit in: roverlay/overlay/pkgdir/ André Erdmann -- strict thread matches above, loose matches on Subject: below -- 2016-02-18 16:33 [gentoo-commits] proj/R_overlay:master " André Erdmann 2015-01-26 17:41 André Erdmann 2014-08-23 19:03 André Erdmann 2014-07-29 18:29 ` André Erdmann 2014-07-18 16:20 André Erdmann 2014-07-18 2:28 [gentoo-commits] proj/R_overlay:wip/addition_control " André Erdmann 2014-07-18 16:20 ` [gentoo-commits] proj/R_overlay:master " André Erdmann 2013-09-17 13:49 André Erdmann 2013-09-03 15:51 André Erdmann 2013-08-30 15:28 André Erdmann 2013-08-29 12:36 André Erdmann 2013-08-29 12:36 André Erdmann 2013-08-29 12:36 André Erdmann 2013-08-28 15:54 André Erdmann 2013-08-28 9:38 André Erdmann 2013-08-07 16:10 André Erdmann 2013-08-06 16:02 André Erdmann 2013-07-10 16:16 André Erdmann 2013-07-10 16:16 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann 2013-07-10 16:16 ` [gentoo-commits] proj/R_overlay:master " André Erdmann 2013-07-10 16:16 [gentoo-commits] proj/R_overlay:gsoc13/next " André Erdmann 2013-07-10 16:16 ` [gentoo-commits] proj/R_overlay:master " André Erdmann 2013-06-13 16:34 André Erdmann 2013-04-25 16:44 André Erdmann 2013-02-09 20:45 André Erdmann 2013-02-05 20:39 André Erdmann 2013-01-28 23:54 André Erdmann 2013-01-28 23:54 André Erdmann
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1373468836.d0803a228f07e2c535dac48b21d07499d0a6e8db.dywi@gentoo \ --to=dywi@mailerd.de \ --cc=gentoo-commits@lists.gentoo.org \ --cc=gentoo-dev@lists.gentoo.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox