* [PATCH 0/2] RFC: Integrating gitpkgv functionality @ 2015-01-31 14:06 Mike Looijmans 2015-01-31 14:06 ` [PATCH 1/2] fetch2/__init__.py: Make get_srcrev output configurable Mike Looijmans ` (2 more replies) 0 siblings, 3 replies; 7+ messages in thread From: Mike Looijmans @ 2015-01-31 14:06 UTC (permalink / raw) To: openembedded-core; +Cc: Mike Looijmans Follow-up on the discussion here: http://lists.openembedded.org/pipermail/openembedded-core/2015-January/100345.html This is a preliminary implementation of gitpkgv in OE-core. It modifies the fetcher to optionally provide an incremental numbering scheme for GIT repositories. These two patches implement this. The change in __init__ is basically ready for public consumption. The modification to git.py is a prototype that I've used to test feasibility. It imitates gitpkgv perfectly for the recipes I tried. To make this ready for production, we should provide better names and likely a GITPKGV or similarly named variable that can be used in recipes instead of "${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}". Mike Looijmans (2): fetch2/__init__.py: Make get_srcrev output configurable fetch2/git.py: Add gitpkgv_revision alternative version information lib/bb/fetch2/__init__.py | 9 ++++++--- lib/bb/fetch2/git.py | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) -- 1.7.9.5 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] fetch2/__init__.py: Make get_srcrev output configurable 2015-01-31 14:06 [PATCH 0/2] RFC: Integrating gitpkgv functionality Mike Looijmans @ 2015-01-31 14:06 ` Mike Looijmans 2015-02-02 20:50 ` Otavio Salvador 2015-01-31 14:06 ` [PATCH 2/2] fetch2/git.py: Add gitpkgv_revision alternative version information Mike Looijmans 2015-03-08 12:29 ` [PATCH 0/2] RFC: Integrating gitpkgv functionality Mike Looijmans 2 siblings, 1 reply; 7+ messages in thread From: Mike Looijmans @ 2015-01-31 14:06 UTC (permalink / raw) To: openembedded-core; +Cc: Mike Looijmans, Mike Looijmans From: Mike Looijmans <milo-software@users.sourceforge.net> The idea here is to support package version numbering similar to gitpkgv in meta-openembedded. This commit is the first step towards such functionality. The original plan was to add a "get_pretty_srcrev" method to the fetcher, as per Richard's suggestion [1]. While writing this, I noticed that it would become a copy of get_srcrev with only two lines changed. So to create something more Pythonic than a boolean argument and conditionals around the calls to the fetcher's sortable_revision, I just made the method to be called on the fetcher an argument to the method. Defaulting to 'sortable_revision' prevents affecting existing code. Now if the git fetcher were to implement, say 'gitpkgv_revision' one could set the following in a recipe: PKGV="1.2+${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" and this would yield the same result as gitpkgv's GITPKGV variable. See for the discussion leading to this change: [1] http://lists.openembedded.org/pipermail/openembedded-core/2015-January/100345.html Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> --- lib/bb/fetch2/__init__.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py index 599ea8c..0eb1a23 100644 --- a/lib/bb/fetch2/__init__.py +++ b/lib/bb/fetch2/__init__.py @@ -618,7 +618,7 @@ def get_autorev(d): d.setVar('__BB_DONT_CACHE', '1') return "AUTOINC" -def get_srcrev(d): +def get_srcrev(d, method_name='sortable_revision'): """ Return the revsion string, usually for use in the version string (PV) of the current package Most packages usually only have one SCM so we just pass on the call. @@ -627,6 +627,9 @@ def get_srcrev(d): The idea here is that we put the string "AUTOINC+" into return value if the revisions are not incremental, other code is then responsible for turning that into an increasing value (if needed) + + A method_name can be supplied to retrieve an alternatively formatted revision from a fetcher, if + that fetcher provides a method with the given name and the same signature as sortable_revision. """ scms = [] @@ -640,7 +643,7 @@ def get_srcrev(d): raise FetchError("SRCREV was used yet no valid SCM was found in SRC_URI") if len(scms) == 1 and len(urldata[scms[0]].names) == 1: - autoinc, rev = urldata[scms[0]].method.sortable_revision(urldata[scms[0]], d, urldata[scms[0]].names[0]) + autoinc, rev = getattr(urldata[scms[0]].method, method_name)(urldata[scms[0]], d, urldata[scms[0]].names[0]) if len(rev) > 10: rev = rev[:10] if autoinc: @@ -658,7 +661,7 @@ def get_srcrev(d): for scm in scms: ud = urldata[scm] for name in ud.names: - autoinc, rev = ud.method.sortable_revision(ud, d, name) + autoinc, rev = getattr(ud.method, method_name)(ud, d, name) seenautoinc = seenautoinc or autoinc if len(rev) > 10: rev = rev[:10] -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] fetch2/__init__.py: Make get_srcrev output configurable 2015-01-31 14:06 ` [PATCH 1/2] fetch2/__init__.py: Make get_srcrev output configurable Mike Looijmans @ 2015-02-02 20:50 ` Otavio Salvador 2015-02-03 6:17 ` Mike Looijmans 0 siblings, 1 reply; 7+ messages in thread From: Otavio Salvador @ 2015-02-02 20:50 UTC (permalink / raw) To: Mike Looijmans Cc: Mike Looijmans, Patches and discussions about the oe-core layer On Sat, Jan 31, 2015 at 12:06 PM, Mike Looijmans <mike.looijmans@topic.nl> wrote: > From: Mike Looijmans <milo-software@users.sourceforge.net> > > The idea here is to support package version numbering similar to gitpkgv in > meta-openembedded. This commit is the first step towards such functionality. > > The original plan was to add a "get_pretty_srcrev" method to the fetcher, as > per Richard's suggestion [1]. While writing this, I noticed that it would > become a copy of get_srcrev with only two lines changed. So to create something > more Pythonic than a boolean argument and conditionals around the calls to the > fetcher's sortable_revision, I just made the method to be called on the fetcher > an argument to the method. Defaulting to 'sortable_revision' prevents affecting > existing code. > > Now if the git fetcher were to implement, say 'gitpkgv_revision' one could > set the following in a recipe: > PKGV="1.2+${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" > and this would yield the same result as gitpkgv's GITPKGV variable. > > See for the discussion leading to this change: > [1] http://lists.openembedded.org/pipermail/openembedded-core/2015-January/100345.html > > Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> I do enjoyed all the design but the way to set the PKGV. Maybe we could have a way to do it more transparently? Any idea how? -- Otavio Salvador O.S. Systems http://www.ossystems.com.br http://code.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] fetch2/__init__.py: Make get_srcrev output configurable 2015-02-02 20:50 ` Otavio Salvador @ 2015-02-03 6:17 ` Mike Looijmans 2015-02-03 11:00 ` Otavio Salvador 0 siblings, 1 reply; 7+ messages in thread From: Mike Looijmans @ 2015-02-03 6:17 UTC (permalink / raw) To: Otavio Salvador Cc: Mike Looijmans, Patches and discussions about the oe-core layer On 02-02-15 21:50, Otavio Salvador wrote: > On Sat, Jan 31, 2015 at 12:06 PM, Mike Looijmans > <mike.looijmans@topic.nl> wrote: >> From: Mike Looijmans <milo-software@users.sourceforge.net> >> >> The idea here is to support package version numbering similar to gitpkgv in >> meta-openembedded. This commit is the first step towards such functionality. >> >> The original plan was to add a "get_pretty_srcrev" method to the fetcher, as >> per Richard's suggestion [1]. While writing this, I noticed that it would >> become a copy of get_srcrev with only two lines changed. So to create something >> more Pythonic than a boolean argument and conditionals around the calls to the >> fetcher's sortable_revision, I just made the method to be called on the fetcher >> an argument to the method. Defaulting to 'sortable_revision' prevents affecting >> existing code. >> >> Now if the git fetcher were to implement, say 'gitpkgv_revision' one could >> set the following in a recipe: >> PKGV="1.2+${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" >> and this would yield the same result as gitpkgv's GITPKGV variable. >> >> See for the discussion leading to this change: >> [1] http://lists.openembedded.org/pipermail/openembedded-core/2015-January/100345.html >> >> Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> > > I do enjoyed all the design but the way to set the PKGV. > > Maybe we could have a way to do it more transparently? Any idea how? Just setting GITPKGV="${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" globally (bitbake.conf for example) would basically mimic the gitpkgv syntax, then a recipe would just say: PKGV="1.2+${GITPKGV}" Without the need to inherit gitpkgv. Mike. Met vriendelijke groet / kind regards, Mike Looijmans System Expert TOPIC Embedded Systems Eindhovenseweg 32-C, NL-5683 KH Best Postbus 440, NL-5680 AK Best Telefoon: (+31) (0) 499 33 69 79 Telefax: (+31) (0) 499 33 69 70 E-mail: mike.looijmans@topic.nl Website: www.topic.nl Please consider the environment before printing this e-mail Visit us at Embedded World 2015 Nuernberg, 24.02.2015 till 26.02.2015, Hall 1, stand number 136. https://www.embedded-world.de/de/ausstellerprodukte/?focus=edb3exhibitor&focus2=14017667&focus3=embwld15&highlight=topic ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] fetch2/__init__.py: Make get_srcrev output configurable 2015-02-03 6:17 ` Mike Looijmans @ 2015-02-03 11:00 ` Otavio Salvador 0 siblings, 0 replies; 7+ messages in thread From: Otavio Salvador @ 2015-02-03 11:00 UTC (permalink / raw) To: Mike Looijmans Cc: Mike Looijmans, Patches and discussions about the oe-core layer On Tue, Feb 3, 2015 at 4:17 AM, Mike Looijmans <mike.looijmans@topic.nl> wrote: > On 02-02-15 21:50, Otavio Salvador wrote: >> >> On Sat, Jan 31, 2015 at 12:06 PM, Mike Looijmans >> <mike.looijmans@topic.nl> wrote: >>> >>> From: Mike Looijmans <milo-software@users.sourceforge.net> >>> >>> The idea here is to support package version numbering similar to gitpkgv >>> in >>> meta-openembedded. This commit is the first step towards such >>> functionality. >>> >>> The original plan was to add a "get_pretty_srcrev" method to the fetcher, >>> as >>> per Richard's suggestion [1]. While writing this, I noticed that it would >>> become a copy of get_srcrev with only two lines changed. So to create >>> something >>> more Pythonic than a boolean argument and conditionals around the calls >>> to the >>> fetcher's sortable_revision, I just made the method to be called on the >>> fetcher >>> an argument to the method. Defaulting to 'sortable_revision' prevents >>> affecting >>> existing code. >>> >>> Now if the git fetcher were to implement, say 'gitpkgv_revision' one >>> could >>> set the following in a recipe: >>> PKGV="1.2+${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" >>> and this would yield the same result as gitpkgv's GITPKGV variable. >>> >>> See for the discussion leading to this change: >>> [1] >>> http://lists.openembedded.org/pipermail/openembedded-core/2015-January/100345.html >>> >>> Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> >> >> >> I do enjoyed all the design but the way to set the PKGV. >> >> Maybe we could have a way to do it more transparently? Any idea how? > > > Just setting GITPKGV="${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" > globally (bitbake.conf for example) would basically mimic the gitpkgv > syntax, then a recipe would just say: > > PKGV="1.2+${GITPKGV}" > > Without the need to inherit gitpkgv. Awesome! Maybe you could add it on a v2? -- Otavio Salvador O.S. Systems http://www.ossystems.com.br http://code.ossystems.com.br Mobile: +55 (53) 9981-7854 Mobile: +1 (347) 903-9750 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] fetch2/git.py: Add gitpkgv_revision alternative version information 2015-01-31 14:06 [PATCH 0/2] RFC: Integrating gitpkgv functionality Mike Looijmans 2015-01-31 14:06 ` [PATCH 1/2] fetch2/__init__.py: Make get_srcrev output configurable Mike Looijmans @ 2015-01-31 14:06 ` Mike Looijmans 2015-03-08 12:29 ` [PATCH 0/2] RFC: Integrating gitpkgv functionality Mike Looijmans 2 siblings, 0 replies; 7+ messages in thread From: Mike Looijmans @ 2015-01-31 14:06 UTC (permalink / raw) To: openembedded-core; +Cc: Mike Looijmans, Mike Looijmans From: Mike Looijmans <milo-software@users.sourceforge.net> gitpkgv_revision returns a sortable revision number that can be used in the PKGV variable for example. To mimic meta-openembedded gitpkgv behaviour to provide a sortable revision numner, one could set the following: PKGV = "1.0+${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}" This would yield a package version like "1.0+69+fb5eb80". Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> --- lib/bb/fetch2/git.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py index 44fc271..3216ef4 100644 --- a/lib/bb/fetch2/git.py +++ b/lib/bb/fetch2/git.py @@ -394,6 +394,31 @@ class Git(FetchMethod): def _build_revision(self, ud, d, name): return ud.revisions[name] + def gitpkgv_revision(self, ud, d, name): + """ + Return a sortable revision number by counting commits in the history + Based on gitpkgv.bblass in meta-openembedded + """ + rev = self._build_revision(ud, d, name) + localpath = ud.localpath + rev_file = os.path.join(localpath, "oe-gitpkgv_" + rev) + if not os.path.exists(localpath): + commits = None + else: + if not os.path.exists(rev_file) or not os.path.getsize(rev_file): + from pipes import quote + commits = bb.fetch2.runfetchcmd( + "git rev-list %s -- | wc -l" % (quote(rev)), + d, quiet=True).strip().lstrip('0') + if commits: + open(rev_file, "w").write("%d\n" % int(commits)) + else: + commits = open(rev_file, "r").readline(128).strip() + if commits: + return False, "%s+%s" % (commits, rev[:7]) + else: + return True, str(rev) + def checkstatus(self, ud, d): fetchcmd = "%s ls-remote %s" % (ud.basecmd, ud.url) try: -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] RFC: Integrating gitpkgv functionality 2015-01-31 14:06 [PATCH 0/2] RFC: Integrating gitpkgv functionality Mike Looijmans 2015-01-31 14:06 ` [PATCH 1/2] fetch2/__init__.py: Make get_srcrev output configurable Mike Looijmans 2015-01-31 14:06 ` [PATCH 2/2] fetch2/git.py: Add gitpkgv_revision alternative version information Mike Looijmans @ 2015-03-08 12:29 ` Mike Looijmans 2 siblings, 0 replies; 7+ messages in thread From: Mike Looijmans @ 2015-03-08 12:29 UTC (permalink / raw) To: OE On 31-01-15 15:06, Mike Looijmans wrote: > Follow-up on the discussion here: > http://lists.openembedded.org/pipermail/openembedded-core/2015-January/100345.html > > This is a preliminary implementation of gitpkgv in OE-core. It modifies the > fetcher to optionally provide an incremental numbering scheme for GIT > repositories. > > These two patches implement this. The change in __init__ is basically ready for > public consumption. The modification to git.py is a prototype that I've used to > test feasibility. It imitates gitpkgv perfectly for the recipes I tried. > > To make this ready for production, we should provide better names and likely > a GITPKGV or similarly named variable that can be used in recipes instead of > "${@bb.fetch2.get_srcrev(d, 'gitpkgv_revision')}". > > Mike Looijmans (2): > fetch2/__init__.py: Make get_srcrev output configurable > fetch2/git.py: Add gitpkgv_revision alternative version information > > lib/bb/fetch2/__init__.py | 9 ++++++--- > lib/bb/fetch2/git.py | 25 +++++++++++++++++++++++++ > 2 files changed, 31 insertions(+), 3 deletions(-) > -- Mike Looijmans ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-03-08 12:29 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-01-31 14:06 [PATCH 0/2] RFC: Integrating gitpkgv functionality Mike Looijmans 2015-01-31 14:06 ` [PATCH 1/2] fetch2/__init__.py: Make get_srcrev output configurable Mike Looijmans 2015-02-02 20:50 ` Otavio Salvador 2015-02-03 6:17 ` Mike Looijmans 2015-02-03 11:00 ` Otavio Salvador 2015-01-31 14:06 ` [PATCH 2/2] fetch2/git.py: Add gitpkgv_revision alternative version information Mike Looijmans 2015-03-08 12:29 ` [PATCH 0/2] RFC: Integrating gitpkgv functionality Mike Looijmans
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.