* [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
* [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 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
* 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox