From bec7a0f2f187157c43b549b964a9c1b5698a5997 Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Mon, 1 Jun 2020 06:27:02 +0000 Subject: [PATCH 01/14] convert simple-update-robot to python --- gitee.py | 106 ++++++++++++++++++++++++++++++++++++ known-issues/hyphen.yaml | 9 ++++ simple-update-robot.py | 109 ++++++++++++++++++++++++++++++++++++++ upstream-info/hyphen.yaml | 4 -- 4 files changed, 224 insertions(+), 4 deletions(-) create mode 100755 gitee.py create mode 100644 known-issues/hyphen.yaml create mode 100755 simple-update-robot.py delete mode 100644 upstream-info/hyphen.yaml diff --git a/gitee.py b/gitee.py new file mode 100755 index 00000000..ce7b69d4 --- /dev/null +++ b/gitee.py @@ -0,0 +1,106 @@ +#!/usr/bin/python3 +""" +This is a simple script to query that contact person for specific package +""" + +import urllib +import urllib.request +import argparse +import yaml +import re +import os.path +import json + + +class Gitee: + def __init__(self): + self.secret = open(os.path.expanduser("~/.gitee_token.json"), "r") + self.token = json.load(self.secret) + + self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW 64; rv:23.0) Gecko/20100101 Firefox/23.0'} + self.specfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{specfile}" + self.yamlfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{package}.yaml" + self.advisor_url_template = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/upstream-info/{package}.yaml" + self.specfile_exception_url = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/helper/specfile_exceptions.yaml" + + def get_gitee(self, url, headers=None): + if headers == None: + req = urllib.request.Request(url=url, headers=self.headers) + else: + req = urllib.request.Request(url=url, headers=headers) + u = urllib.request.urlopen(req) + return u.read().decode("utf-8") + + def get_gitee_json(self, url): + resp = self.get_gitee(url) + return json.loads(resp) + + def get_spec_exception(self): + resp = self.get_gitee(self.specfile_exception_url) + exps = yaml.load(resp, Loader=yaml.Loader) + return exps + + def get_spec(self, pkg): + exp = self.get_spec_exception() + if pkg in exp: + dir_name = exp[pkg]["dir"] + file_name = exp[pkg]["file"] + specurl = self.specfile_url_template.format(package=pkg, specfile=dir_name + "/" + file_name) + else: + specurl = self.specfile_url_template.format(package=pkg, specfile=pkg+".spec") + + return self.get_gitee(specurl) + + def get_yaml(self, pkg): + yamlurl = self.advisor_url_template.format(package=pkg) + resp = self.get_gitee(yamlurl) + if re.match("Not found", resp): + yamlurl = self.yamlfile_url_template.format(package=pkg) + resp = self.get_gitee(yamlurl) + if re.match("Not found", resp): + print("Cannot find upstream metadata") + return False + else: + return resp + else: + return False + + +class openEuler_TC: + def __init__(self): + self.gitee = Gitee() + self.list_url = "https://gitee.com/api/v5/repos/openeuler/community/pulls?access_token={token}&state=open&sort=created&direction=desc&page=1&per_page=100" + self.desc_url = "https://gitee.com/api/v5/repos/openeuler/community/pulls/{number}/comments?access_token={token}&page=1&per_page=100" + self.tc_members = ["myeuler", "cynthia_xh", "shinwell_hu", "dream0819", "hanjun-guo", "xiexiuqi", "zhanghai_lucky"] + + + def get_prs(self): + url = self.list_url.format(token=self.token["access_token"]) + return self.gitee.get_gitee(url) + + def get_pr_comments(self, number): + url = self.desc_url.format(number=number, token=self.token["access_token"]) + return self.gitee.get_gitee(url) + + def filter_out_tc(self, users): + return [x for x in self.tc_members if x in users] + +if __name__ == "__main__": + par = argparse.ArgumentParser() + + args = par.parse_args() + + oe_tc = openEuler_TC() + PRs = oe_tc.get_prs() + for pr in PRs: + print("URL: https://gitee.com/openeuler/community/pulls/{number}".format(number=pr["number"])) + print("Title: "+pr["title"]) + comm = oe_tc.get_pr_comments(pr["number"]) + users = [] + for c in comm: + users.append(c["user"]["login"]) + tc = oe_tc.filter_out_tc(users) + print("Currently involved TC members: " + ", ".join(tc)) + print("\n") + + diff --git a/known-issues/hyphen.yaml b/known-issues/hyphen.yaml new file mode 100644 index 00000000..e87d1dac --- /dev/null +++ b/known-issues/hyphen.yaml @@ -0,0 +1,9 @@ +--- +version_control: github +src_repo: hunspell/hyphen +tag_prefix: "^v" +seperator: "." +last_query: + time_stamp: 2020-06-01 05:35:19.023933660 +00:00 + raw_data: '' +query_type: git-ls diff --git a/simple-update-robot.py b/simple-update-robot.py new file mode 100755 index 00000000..778c6b61 --- /dev/null +++ b/simple-update-robot.py @@ -0,0 +1,109 @@ +#!/usr/bin/python3 +# process +# 1. get URL to download updated version +# so far we know the URL in spec is not reliable +# 2. Change Version to new one +# 3. Change Source or Source0 if needed +# 4. Update %changelog +# 5. try rpmbuild -bb +# 6. fork on gitee +# 7. git clone, git add, git commit, git push +# 8. PR on gitee + +from pyrpm.spec import Spec, replace_macros +import yaml +import argparse +import gitee +import sys +import subprocess +import os.path +import re +import datetime + +def download_source_url(spec, o_ver, n_ver): + source = replace_macros(spec.sources[0], spec).replace(o_ver, n_ver) + if re.match(r"%{.*?}", source): + print("Extra macros in URL which failed to be expanded") + return False + elif source.startswith("http") or source.startswith("ftp"): + fn = os.path.basename(source) + subprocess.call(["curl", "-L", source, "-o", fn]) + return fn + else: + print("Not valid URL for Source code") + return False + +def download_upstream_url(gt, repo, o_ver, n_ver): + upstream_yaml = gt.get_yaml(repo) + if not upstream_yaml: + return False + + rp_yaml = yaml.loads(upstream_yaml, Loader=yaml.Loader) + if rp_yaml["version_control"] == "github": + url = "https://github.com/{rp}/archive/{nv}.tar.gz".format(rp=rp_yaml["src_repo"], nv=n_ver) + fn = "{rp}.{nv}.tar.gz".format(rp=repo, nv=n_ver) + subprocess.call(["curl", "-L", url, "-o", fn]) + return fn + else: + print("Handling {vc} is still under developing".format(vc=rp_yaml["version_control"])) + return False + +def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None): + fn = open(repo+".spec", "w") + in_changelog = False + for l in spec_str.splitlines(): + if l.startswith("Release:"): + fn.write("Release:\t\t0\n") + continue + if l.startswith("Source:") or l.startswith("Source0:"): + if src_fn: + fn.write("Source: {src_fn}\n".format(src_fn=src_fn)) + else: + fn.write(l+"\n") + continue + if not in_changelog: + nl = l.replace(o_ver, n_ver) + else: + nl = l + fn.write(nl+"\n") + + if nl.startswith("%changelog"): + in_changelog = True + d = datetime.date.today() + fn.write(d.strftime("* %a %b %d %Y SimpleUpdate Robot \n")) + fn.write("- Update to version {ver}\n".format(ver=n_ver)) + fn.write("\n") + fn.close() + +if __name__ == "__main__": + pars = argparse.ArgumentParser() + pars.add_argument("pkg", type=str, help="The package to be upgraded") + pars.add_argument("-o", "--old_version", type=str, help="Current upstream version of package") + pars.add_argument("-n", "--new_version", type=str, help="New upstream version of package will be upgrade to") + args = pars.parse_args() + + gt = gitee.Gitee() + spec_string= gt.get_spec(args.pkg) + + spec = Spec.from_string(spec_string) + if len(spec.patches) >= 1: + print("I'm too naive to handle complicated package.") + print("This package has multiple in-house patches.") + sys.exit(1) + + source_file = download_source_url(spec, args.old_version, args.new_version) + if source_file: + print(source_file) + else: + source_file = download_upstream_url(gt, args.pkg, args.old_version, args.new_version) + if source_file: + print(source_file) + else: + print("Failed to download the latest source code.") + sys.exit(1) + + create_spec(args.pkg, spec_string, args.old_version, args.new_version) + +""" + +""" diff --git a/upstream-info/hyphen.yaml b/upstream-info/hyphen.yaml deleted file mode 100644 index 72a96f17..00000000 --- a/upstream-info/hyphen.yaml +++ /dev/null @@ -1,4 +0,0 @@ -version_control: github -src_repo: hunspell/hyphen -tag_prefix: ^v -seperator: . -- Gitee From 98955a2180d96f82c7aeb99c01c6bac6f96e46eb Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Mon, 1 Jun 2020 15:31:03 +0000 Subject: [PATCH 02/14] alpha version of simple-update-robot --- gitee.py | 61 +++++++++++++++++++++++++++++++++++++++--- simple-update-robot.py | 30 +++++++++++++-------- 2 files changed, 77 insertions(+), 14 deletions(-) diff --git a/gitee.py b/gitee.py index ce7b69d4..3f2f97c3 100755 --- a/gitee.py +++ b/gitee.py @@ -5,24 +5,59 @@ This is a simple script to query that contact person for specific package import urllib import urllib.request +import urllib.parse +import urllib.error import argparse import yaml import re import os.path import json +import pprint class Gitee: def __init__(self): - self.secret = open(os.path.expanduser("~/.gitee_token.json"), "r") + self.secret = open(os.path.expanduser("~/.gitee_personal_token.json"), "r") self.token = json.load(self.secret) - self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW 64; rv:23.0) Gecko/20100101 Firefox/23.0'} + self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW 64; rv:50.0) Gecko/20100101 Firefox/50.0'} self.specfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{specfile}" self.yamlfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{package}.yaml" self.advisor_url_template = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/upstream-info/{package}.yaml" self.specfile_exception_url = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/helper/specfile_exceptions.yaml" + def post_gitee(self, url, values, headers = None): + if headers == None: + headers = self.headers.copy() + data = urllib.parse.urlencode(values).encode('utf-8') + req = urllib.request.Request(url = url, data = data, headers=headers, method="POST") + try: + u = urllib.request.urlopen(req) + except urllib.error.HTTPError as err: + print("WARNING:"+str(err.code)) + print("WARNING:"+str(err.headers)) + return u.read().decode("utf-8") + + def fork_repo(self, repo): + url = "https://gitee.com/api/v5/repos/src-openeuler/{repo}/forks".format(repo=repo) + values = {} + values["access_token"] = self.token["access_token"] + # headers["User-Agent"] = "curl/7.66.0" + #headers["Content-Type"] = "application/json;charset=UTF-8" + #headers["HOST"] = "gitee.com" + #headers["Accept"] = "*/*" + return self.post_gitee(url, values) + + def create_pr(self, head, repo): + url = "https://gitee.com/api/v5/repos/src-openeuler/{repo}/pulls".format(repo=repo) + values = {} + values["access_token"] = self.token["access_token"] + values["title"] = "Upgrade to latest version of {repo}".format(repo=repo) + values["head"] = "{head}:master".format(head=head) + values["base"] = "master" + values["body"] = "This is a automatically created PR from openEuler-Advisor" + return self.post_gitee(url, values) + def get_gitee(self, url, headers=None): if headers == None: req = urllib.request.Request(url=url, headers=self.headers) @@ -32,7 +67,10 @@ class Gitee: return u.read().decode("utf-8") def get_gitee_json(self, url): - resp = self.get_gitee(url) + #headers = self.headers.copy() + headers = {} + headers["Content-Type"] = "application/json;charset=UTF-8" + resp = self.get_gitee(url, headers) return json.loads(resp) def get_spec_exception(self): @@ -65,6 +103,22 @@ class Gitee: else: return False +class Advisor: + def __init__(self): + self.gitee = Gitee() + + """ + def new_issue(owner, repo, title, body): + @param["access_token"] = @token["access_token"] + @param["repo"] = repo + @param["title"] = title + @param["body"] = body + @cmd += " 'https://gitee.com/api/v5/repos/#{owner}/issues'" + @cmd += " -d '" + @param.to_json + "'" + #puts @cmd + resp = %x[#{@cmd}] + #puts resp + """ class openEuler_TC: def __init__(self): @@ -104,3 +158,4 @@ if __name__ == "__main__": print("\n") + diff --git a/simple-update-robot.py b/simple-update-robot.py index 778c6b61..0084f5a5 100755 --- a/simple-update-robot.py +++ b/simple-update-robot.py @@ -53,7 +53,7 @@ def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None): in_changelog = False for l in spec_str.splitlines(): if l.startswith("Release:"): - fn.write("Release:\t\t0\n") + fn.write("Release:\t0\n") continue if l.startswith("Source:") or l.startswith("Source0:"): if src_fn: @@ -80,6 +80,10 @@ if __name__ == "__main__": pars.add_argument("pkg", type=str, help="The package to be upgraded") pars.add_argument("-o", "--old_version", type=str, help="Current upstream version of package") pars.add_argument("-n", "--new_version", type=str, help="New upstream version of package will be upgrade to") + pars.add_argument("-s", "--create_spec", help="Create spec file", action="store_true") + pars.add_argument("-d", "--download", help="Download upstream source code", action="store_true") + pars.add_argument("-f", "--fork", help="fork src-openeuler repo into users", action="store_true") + pars.add_argument("-p", "--PR", help="Create upgrade PR", action="store_true") args = pars.parse_args() gt = gitee.Gitee() @@ -91,19 +95,23 @@ if __name__ == "__main__": print("This package has multiple in-house patches.") sys.exit(1) - source_file = download_source_url(spec, args.old_version, args.new_version) - if source_file: - print(source_file) - else: - source_file = download_upstream_url(gt, args.pkg, args.old_version, args.new_version) + if args.download: + source_file = download_source_url(spec, args.old_version, args.new_version) if source_file: print(source_file) else: - print("Failed to download the latest source code.") - sys.exit(1) + source_file = download_upstream_url(gt, args.pkg, args.old_version, args.new_version) + if source_file: + print(source_file) + else: + print("Failed to download the latest source code.") + sys.exit(1) - create_spec(args.pkg, spec_string, args.old_version, args.new_version) + if args.create_spec: + create_spec(args.pkg, spec_string, args.old_version, args.new_version) -""" + if args.fork: + gt.fork_repo(args.pkg) -""" + if args.PR: + gt.create_pr("shinwell_hu", args.pkg) -- Gitee From 1937ed3f9b2f6648dd23b8ba29839d1a22048115 Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Tue, 2 Jun 2020 01:33:29 +0000 Subject: [PATCH 03/14] update PR message body --- gitee.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitee.py b/gitee.py index 3f2f97c3..cf0f3e75 100755 --- a/gitee.py +++ b/gitee.py @@ -55,7 +55,7 @@ class Gitee: values["title"] = "Upgrade to latest version of {repo}".format(repo=repo) values["head"] = "{head}:master".format(head=head) values["base"] = "master" - values["body"] = "This is a automatically created PR from openEuler-Advisor" + values["body"] = "This is a (mostly) automatically created PR by openEuler-Advisor.\nPlease be noted that it's not throughly tested.\nReview carefully before accept this PR.\nThanks.\nYours openEuler-Advisor.\n" return self.post_gitee(url, values) def get_gitee(self, url, headers=None): -- Gitee From 8091fd80bacbb10202503503640951d7233332ff Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Tue, 2 Jun 2020 05:22:23 +0000 Subject: [PATCH 04/14] add yaml for mpg123 --- upstream-info/mpg123.yaml | 158 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 upstream-info/mpg123.yaml diff --git a/upstream-info/mpg123.yaml b/upstream-info/mpg123.yaml new file mode 100644 index 00000000..6af822fa --- /dev/null +++ b/upstream-info/mpg123.yaml @@ -0,0 +1,158 @@ +--- +version_control: svn +src_repo: svn://scm.orgis.org/mpg123 +tag_prefix: '' +seperator: "." +last_query: + time_stamp: 2020-06-02 05:05:43.996596950 +00:00 + raw_data: |2 + 4730 thor May 30 12:03 ./ + 2 thor Feb 20 2006 0.54/ + 4 thor Feb 20 2006 0.55/ + 6 thor Feb 20 2006 0.57/ + 8 thor Feb 20 2006 0.59/ + 10 thor Feb 20 2006 0.59d/ + 12 thor Feb 20 2006 0.59e/ + 14 thor Feb 20 2006 0.59g/ + 16 thor Feb 20 2006 0.59h/ + 18 thor Feb 20 2006 0.59i/ + 20 thor Feb 20 2006 0.59j/ + 22 thor Feb 20 2006 0.59k/ + 24 thor Feb 20 2006 0.59l/ + 26 thor Feb 20 2006 0.59m/ + 28 thor Feb 20 2006 0.59n/ + 30 thor Feb 20 2006 0.59o/ + 32 thor Feb 20 2006 0.59p/ + 34 thor Feb 20 2006 0.59q/ + 36 thor Feb 20 2006 0.59r/ + 2801 thor Oct 26 2010 0.59r-buildfix/ + 93 thor Feb 20 2006 0.59r-thor4/ + 2803 thor Oct 27 2010 0.59r-thor4-buildfix/ + 92 thor Feb 20 2006 0.59r-thor5/ + 195 thor Jul 04 2006 0.59r-thor6/ + 3349 thor May 13 2013 0.59r-thor6-buildfix/ + 467 thor Aug 29 2006 0.60/ + 277 thor Jul 24 2006 0.60-beta1/ + 282 thor Jul 24 2006 0.60-beta2/ + 316 thor Jul 29 2006 0.60-beta3/ + 428 thor Aug 22 2006 0.60-beta4/ + 445 thor Aug 25 2006 0.60-beta5/ + 455 thor Aug 27 2006 0.60-beta6/ + 525 thor Nov 11 2006 0.61/ + 541 thor Dec 24 2006 0.62/ + 550 thor Jan 14 2007 0.63/ + 556 thor Jan 15 2007 0.64/ + 569 thor Feb 07 2007 0.65/ + 696 thor Jun 03 2007 0.66/ + 894 thor Aug 07 2007 0.67/ + 1063 thor Oct 28 2007 0.68/ + 1114 thor Nov 18 2007 0.69/ + 1308 thor Dec 23 2007 1.0.0/ + 1318 thor Dec 28 2007 1.0.1/ + 1237 thor Dec 05 2007 1.0rc1/ + 1280 thor Dec 09 2007 1.0rc2/ + 1295 thor Dec 18 2007 1.0rc3/ + 1336 thor Jan 15 2008 1.1.0/ + 2769 thor Aug 16 2010 1.10.0/ + 2595 thor Feb 25 2010 1.10.1/ + 2626 thor Mar 21 2010 1.11.0/ + 2646 thor Mar 31 2010 1.12.0/ + 2680 thor May 16 2010 1.12.1/ + 2745 thor Jun 20 2010 1.12.2/ + 2758 thor Jul 04 2010 1.12.3/ + 2781 thor Oct 04 2010 1.12.4/ + 2784 thor Oct 04 2010 1.12.5/ + 2814 thor Dec 08 2010 1.13.0/ + 2822 thor Jan 06 2011 1.13.1/ + 2885 thor Feb 19 2011 1.13.2/ + 2943 thor Apr 17 2011 1.13.3/ + 2976 thor Sep 07 2011 1.13.4/ + 3052 thor Mar 04 2012 1.13.5/ + 3058 thor Mar 11 2012 1.13.6/ + 3073 thor Mar 25 2012 1.13.7/ + 3108 thor Apr 07 2012 1.13.8/ + 3264 thor Feb 04 2013 1.14-beta1/ + 3101 thor Apr 06 2012 1.14-beta2/ + 3165 thor Apr 30 2012 1.14.0/ + 3175 thor May 06 2012 1.14.1/ + 3182 thor May 12 2012 1.14.2/ + 3202 thor Jun 21 2012 1.14.3/ + 3230 thor Jul 26 2012 1.14.4/ + 3277 thor Feb 13 2013 1.15.0/ + 3285 thor Feb 23 2013 1.15.1/ + 3295 thor Mar 17 2013 1.15.2/ + 3318 thor Apr 02 2013 1.15.3/ + 3364 thor May 20 2013 1.15.4/ + 3425 thor Oct 06 2013 1.16.0/ + 3448 thor Dec 26 2013 1.17.0/ + 3481 thor Jan 30 2014 1.18.0/ + 3496 thor Feb 15 2014 1.18.1/ + 3528 thor Mar 08 2014 1.19.0/ + 1365 thor Jan 31 2008 1.2.0/ + 1379 thor Feb 19 2008 1.2.1/ + 3564 thor May 25 2014 1.20.0/ + 3576 thor Jun 17 2014 1.20.1/ + 3584 thor Sep 28 2014 1.21.0/ + 3597 thor Feb 24 2015 1.22.0/ + 3615 thor Apr 01 2015 1.22.1/ + 3640 thor May 24 2015 1.22.2/ + 3683 thor Aug 03 2015 1.22.3/ + 3691 thor Aug 12 2015 1.22.4/ + 3935 thor Jan 29 2016 1.23.0/ + 3987 thor Feb 14 2016 1.23.1/ + 4000 thor Feb 23 2016 1.23.2/ + 4016 thor Mar 22 2016 1.23.3/ + 4044 thor May 11 2016 1.23.4/ + 4065 thor Jun 26 2016 1.23.5/ + 4073 thor Jun 30 2016 1.23.6/ + 4093 thor Sep 24 2016 1.23.7/ + 4100 thor Sep 26 2016 1.23.8/ + 4196 thor Mar 02 2017 1.24.0/ + 4243 thor May 28 2017 1.25.0/ + 4264 thor Jul 02 2017 1.25.1/ + 4434 thor Feb 27 2018 1.25.10/ + 4487 thor Jul 18 2019 1.25.11/ + 4512 thor Aug 22 2019 1.25.12/ + 4550 thor Oct 26 2019 1.25.13/ + 4281 thor Jul 11 2017 1.25.2/ + 4299 thor Jul 18 2017 1.25.3/ + 4309 thor Jul 24 2017 1.25.4/ + 4319 thor Aug 08 2017 1.25.5/ + 4325 thor Aug 11 2017 1.25.6/ + 4359 thor Sep 25 2017 1.25.7/ + 4384 thor Nov 30 2017 1.25.8/ + 4430 thor Feb 27 2018 1.25.9/ + 4722 thor May 24 21:46 1.26.0/ + 4730 thor May 30 12:03 1.26.1/ + 4690 thor May 08 12:04 1.26rc1/ + 4697 thor May 08 19:39 1.26rc2/ + 4718 thor May 16 05:56 1.26rc3/ + 1406 thor Mar 02 2008 1.3.0/ + 1418 thor Mar 08 2008 1.3.1/ + 1452 thor Apr 06 2008 1.4.0/ + 1457 thor Apr 07 2008 1.4.1/ + 1471 thor Apr 20 2008 1.4.2/ + 1490 thor May 20 2008 1.4.3/ + 1542 thor Aug 02 2008 1.5.0/ + 1561 thor Aug 29 2008 1.5.1/ + 1683 thor Nov 04 2008 1.6.0/ + 1719 thor Nov 09 2008 1.6.1/ + 1731 thor Nov 10 2008 1.6.2/ + 1785 thor Dec 20 2008 1.6.3/ + 1797 thor Jan 10 2009 1.6.4/ + 1880 thor Mar 25 2009 1.7.0/ + 1903 thor Apr 03 2009 1.7.1/ + 1920 thor Apr 05 2009 1.7.2/ + 1978 thor Apr 27 2009 1.7.3/ + 2169 thor Jun 10 2009 1.8.0/ + 2194 thor Jun 14 2009 1.8.1/ + 2084 thor May 21 2009 1.8rc1/ + 2092 thor May 24 2009 1.8rc2/ + 2135 thor Jun 02 2009 1.8rc3/ + 2149 thor Jun 06 2009 1.8rc4/ + 2156 thor Jun 08 2009 1.8rc5/ + 2290 thor Aug 13 2009 1.9.0/ + 2415 thor Oct 08 2009 1.9.1/ + 2442 thor Nov 19 2009 1.9.2/ + 75 thor Feb 20 2006 pre0.59s/ + 114 thor 152 Jun 01 2006 updiff.pl -- Gitee From 5b01b1c345cea7e68bcdf86a85d7c3f206cc19fb Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Tue, 2 Jun 2020 06:06:24 +0000 Subject: [PATCH 05/14] improve simple-update-robot.py --- gitee.py | 19 +------------------ simple-update-robot.py | 12 +++++++----- upstream-info/arptables.yaml | 8 ++++++++ upstream-info/nano.yaml | 8 ++++++++ 4 files changed, 24 insertions(+), 23 deletions(-) create mode 100644 upstream-info/arptables.yaml create mode 100644 upstream-info/nano.yaml diff --git a/gitee.py b/gitee.py index cf0f3e75..c7c76fb5 100755 --- a/gitee.py +++ b/gitee.py @@ -140,22 +140,5 @@ class openEuler_TC: return [x for x in self.tc_members if x in users] if __name__ == "__main__": - par = argparse.ArgumentParser() - - args = par.parse_args() - - oe_tc = openEuler_TC() - PRs = oe_tc.get_prs() - for pr in PRs: - print("URL: https://gitee.com/openeuler/community/pulls/{number}".format(number=pr["number"])) - print("Title: "+pr["title"]) - comm = oe_tc.get_pr_comments(pr["number"]) - users = [] - for c in comm: - users.append(c["user"]["login"]) - tc = oe_tc.filter_out_tc(users) - print("Currently involved TC members: " + ", ".join(tc)) - print("\n") - - + pass diff --git a/simple-update-robot.py b/simple-update-robot.py index 0084f5a5..1f728849 100755 --- a/simple-update-robot.py +++ b/simple-update-robot.py @@ -57,9 +57,9 @@ def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None): continue if l.startswith("Source:") or l.startswith("Source0:"): if src_fn: - fn.write("Source: {src_fn}\n".format(src_fn=src_fn)) + fn.write("Source: {src_fn}\n".format(src_fn=src_fn).replace(o_ver, n_ver)) else: - fn.write(l+"\n") + fn.write(l.replace(o_ver, n_ver)+"\n") continue if not in_changelog: nl = l.replace(o_ver, n_ver) @@ -95,6 +95,11 @@ if __name__ == "__main__": print("This package has multiple in-house patches.") sys.exit(1) + if args.fork: + gt.fork_repo(args.pkg) + subprocess.call(["git", "clone", "git@gitee.com:shinwell_hu/"+args.pkg]) + os.chdir(args.pkg) + if args.download: source_file = download_source_url(spec, args.old_version, args.new_version) if source_file: @@ -110,8 +115,5 @@ if __name__ == "__main__": if args.create_spec: create_spec(args.pkg, spec_string, args.old_version, args.new_version) - if args.fork: - gt.fork_repo(args.pkg) - if args.PR: gt.create_pr("shinwell_hu", args.pkg) diff --git a/upstream-info/arptables.yaml b/upstream-info/arptables.yaml new file mode 100644 index 00000000..0d61497d --- /dev/null +++ b/upstream-info/arptables.yaml @@ -0,0 +1,8 @@ +--- +version_control: git +src_repo: git://git.netfilter.org/arptables +tag_prefix: arptables- +seperator: "." +last_query: + time_stamp: 2020-06-02 05:33:16.015357390 +00:00 + raw_data: "6db62a995e5ff6905e6b1e47e07d4411af0546f7\trefs/tags/arptables-0.0.4\n9f4f6be880eaae9323c3ca65f3fcd22d36501ad2\trefs/tags/arptables-0.0.4^{}\nefae8949e31f8b2eb6290f377a28384cecaf105a\trefs/tags/arptables-0.0.5\n" diff --git a/upstream-info/nano.yaml b/upstream-info/nano.yaml new file mode 100644 index 00000000..f357a5b8 --- /dev/null +++ b/upstream-info/nano.yaml @@ -0,0 +1,8 @@ +--- +version_control: git +src_repo: git://git.savannah.gnu.org/nano.git +tag_prefix: "^v" +seperator: "." +last_query: + time_stamp: 2020-05-30 05:11:26.582996850 +00:00 + raw_data: "4da1fc65f0c58842c86a276870c6a619b95f81f1\trefs/tags/v0.9.11\n688fc032b3a78a16d4bf2d0fd92e7a0ee241c411\trefs/tags/v0.9.12\nedebbe60394674d7afdff095e445122c33d91013\trefs/tags/v0.9.13\na1a55c79c89a1da0a61eeec63a44b3eb4a70f100\trefs/tags/v0.9.14\ncf037ba969000252cb11ae4b87ce3cfd053284c3\trefs/tags/v0.9.14pre1\n1f2a072e33b7c813fb7f99c02fc06f25237c9a81\trefs/tags/v0.9.15\n5286ccbaf9a0c59582ff5486a7703394e57329cb\trefs/tags/v0.9.16\n423cbfd743d09e165d6a91734ea00447eaff948c\trefs/tags/v0.9.17\n629edad237199f2bb3ef48815a8c02be7b1ee26a\trefs/tags/v0.9.18\n35d90259eda5591965f993627abc39a44b9ed1a7\trefs/tags/v0.9.19\n6da149adf972937395e6240d2128ce4707f8a918\trefs/tags/v0.9.20\nca7a21d358e1c7495edc60e4f7d6fa968404a45d\trefs/tags/v0.9.21\nd2cd65c967ffad8ae36382d002e316ee782930e0\trefs/tags/v0.9.22\nb29550e58df6e692e3bd3679114f0d2e9ac75738\trefs/tags/v0.9.23\nc7ccb873f191ed6fb84277ad7a800a03486f97c3\trefs/tags/v0.9.24\n4ca160f78408d8eba3fa58b355f810b348279dd9\trefs/tags/v0.9.25\n9faa3f13e25cf97b36827ffacba2bf55ce382204\trefs/tags/v0.9.99pre1\n34318edba29b9fa6594de6ab124c4afc544f7e18\trefs/tags/v0.9.99pre2\na4a222d1d7f6d4bd12b384be110b61f14dd4964c\trefs/tags/v0.9.99pre3\n2bfbda0fd73102e3d0b33a90238ed17e7354d50f\trefs/tags/v1.0.0\n38068cd152b8f492beb6841e5134b555c71d4665\trefs/tags/v1.0.1\n7062991fea2d5e2ba7135ab03e231e5f269e12fe\trefs/tags/v1.0.2\n6137dfd69fe570a3e586cbe17642f31bf5de8107\trefs/tags/v1.0.3\nbb8eacf71fc4ef0c2c7c1e5371a02a1c3fb40dee\trefs/tags/v1.0.4\n344fcc42d7d22744c52ff6643836481f55e45db8\trefs/tags/v1.0.5\n22efd06ddeade60bca11ead3817c7ecb137bbb4f\trefs/tags/v1.0.6\na52d956f45cb40803be6ce1c94ade670eec28c30\trefs/tags/v1.0.7\n2d093ed2abe143bca17f6d9fa2ac104e5ae5ffb1\trefs/tags/v1.0.8\n8ed47f574ab2f83ac23227eeea53c12653400da1\trefs/tags/v1.0.9\n9a74860957a414a77a770e4b816b51227de05486\trefs/tags/v1.1.0\n0e8c8d8cdcea1e708bbe88ebaffefb405fb42ce2\trefs/tags/v1.1.1\n720a9e0f8a61ae76b18190b050b69afe874367f0\trefs/tags/v1.1.10\n6866f6fb7d16da3564b32b527a9f23fb372b39a0\trefs/tags/v1.1.11\n2257893ac262236420aca1c0cde435bf25995c44\trefs/tags/v1.1.12\n03260b40fa254bb3ca950ae750ce1a7b1bad608c\trefs/tags/v1.1.2\ndc57bbab7a9964234fe78482d8b223e73023a46b\trefs/tags/v1.1.3\n7bf2509a70a2187e1a563d375c92a8a29e3bc7e0\trefs/tags/v1.1.4\n110927bbc5ec13c1fdb0ea7c0493d5f46e3ae8a3\trefs/tags/v1.1.5\n491029ed8db50203379478a6488837c2d6a3c002\trefs/tags/v1.1.6\n97489d211f4a1d3e868de8f50e693ba756cec8c3\trefs/tags/v1.1.7\n4ceb30cfe7effe1a905685231fb3b6d0db028a63\trefs/tags/v1.1.8\n8b75a78f6f193aa7e37614ce4ed6d36a35a1aec2\trefs/tags/v1.1.9\nf426c9edbf4c1e4bea88e2c9a71da746ea7d3b25\trefs/tags/v1.1.99pre1\n5c8c27662232091ddd936e1ad175e1d03d8ee24a\trefs/tags/v1.1.99pre2\n7ba3279073787454c86cf3df2609e3bae467172f\trefs/tags/v1.1.99pre3\n2b4ead9cb81b9285de5841f80335ed96a6932dba\trefs/tags/v1.2.0\naa4593124db8b2f3c73a43cbc7e9094311544ee8\trefs/tags/v1.2.1\n3364214200c3e50021745e185763d20de25b7287\trefs/tags/v1.2.2\n9ced843d32f30f95b92a3e3ea5df9e630609f915\trefs/tags/v1.2.3\ne88782ec8c5323d0443779d4ba11ce66b4c248a9\trefs/tags/v1.2.4\nd1861019a1b68c7c18929b27832e2c780d1f7795\trefs/tags/v1.2.5\n133f7b16ead600ade325765c0297a5a0b895a8f6\trefs/tags/v1.3.0\nfa1497b38f786d498b727feab27cb7f185b4b514\trefs/tags/v1.3.1\n2cd986cdef8aca32a98895233414b51fb08d9261\trefs/tags/v1.3.10\nfb7a6bde7b9a4733bcb81bd478e608d9887562c2\trefs/tags/v1.3.11\ndb5b54767cbfd9c822d0c970302ae96924783f34\trefs/tags/v1.3.12\nf70f0cf6bd977774ba2a183f1ab597235eb4f83c\trefs/tags/v1.3.2\ne1151561ad6f80e988e8b5f3b284f57a284c73ad\trefs/tags/v1.3.3\nc6718cf209cfa4319a861fce37dccfece865a839\trefs/tags/v1.3.4\n2c86dc6dc9ba2feac50ff31809c2aba1a7993858\trefs/tags/v1.3.5\nbec01bd97d3aca0b0268f46f59ab6e762985491e\trefs/tags/v1.3.6\nc32a5e7b4eeeee889c08588931da318870b393e8\trefs/tags/v1.3.7\n665b1fbac6f1c1b32cab4b954ecb78e021b27c85\trefs/tags/v1.3.8\n5a9d4935ebccfe89b7878ba78d42887ad0e0ae2a\trefs/tags/v1.3.9\n890ea443d746c0c922bb2ed6da0b80dc7ce55bd8\trefs/tags/v1.9.99pre1\n2953f783e32180a64f442db3756e97ffd14805ec\trefs/tags/v1.9.99pre2\n1295699d031952f11ba449497b7ff84807a21835\trefs/tags/v1.9.99pre3\nf8df4a0fcb008eda6f0ff87681b3a5147349026f\trefs/tags/v2.0.0\n16fd49b8543918ec758c3805e1cd89ebbbf8b645\trefs/tags/v2.0.1\n518b7fac9df6fb6653cbdfb2b2aebdc5a5cb4f2c\trefs/tags/v2.0.2\n8a890962f8f17b01edb5b8b86547be44ceb69183\trefs/tags/v2.0.3\n3daef94f8fe5ec5fa61a3929d59fb50c8869900d\trefs/tags/v2.0.4\nbe60a898b0afbeb97b828523cb1cabbb76a22759\trefs/tags/v2.0.5\n6a296f495926313a387fee338fecf145111de948\trefs/tags/v2.0.6\nffac080149a0b25f3d63836508d16b7d15aff712\trefs/tags/v2.0.7\n6390ba4cba7c5561018b1014e3e9ebd834c42a57\trefs/tags/v2.0.8\ndf7397eebc58350c52d37b2ff66db7907de91ba7\trefs/tags/v2.0.9\n595d6e098912d257b380f4344caeeba34495fb62\trefs/tags/v2.1.0\na24a29c1af9bb326325b1c33ec3013a5138d07e2\trefs/tags/v2.1.1\n7f38820fba682e5ce7a4fd13d575b14453db9823\trefs/tags/v2.1.10\n1f218fa859a869baad3d646cd708114c3c717c51\trefs/tags/v2.1.11\n2c367bff01e0994805402e717d69b2fa4a36a039\trefs/tags/v2.1.2\nfcb9a5b012a14520bd0608ac0f9355e6bb76fff5\trefs/tags/v2.1.3\nd2780eca94399e92794299b2ef720eedc81f82f9\trefs/tags/v2.1.4\n566635ec16f2f3be2e9ce788fb239f9765cc8dae\trefs/tags/v2.1.5\n8f0a921fc1360aa810b23ab2e2542803a3b3c431\trefs/tags/v2.1.6\n2f2f4d3ca91674370e047557d680be57810da70a\trefs/tags/v2.1.7\n1658d4d14fbea9807974dda6c793d1f34fe31b47\trefs/tags/v2.1.8\nfbdc8b9b9207ccc738940fd1e5c96a0fa440dbae\trefs/tags/v2.1.9\n2cd2d4b9aea1c6ef997604e02b7228e4a11d93c0\trefs/tags/v2.1.99pre1\n6c3d886424d1c4e15c816a210c086679f948b124\trefs/tags/v2.1.99pre2\ncb9a5bed8e31ac63dd2cf4a99695133d1b010872\trefs/tags/v2.2.0\n560a8cd0eca6ff4ba7c25822834f8aa1d3a23a25\trefs/tags/v2.2.1\n3eacb857a16dc4103474f2f7778b8fa0161b42a6\trefs/tags/v2.2.2\nf81d6fe8d35b1bfeb1d1e33195320c46bcc7d2da\trefs/tags/v2.2.3\na2c5172db39e50d53387bec90ec4cb0c5d0f3893\trefs/tags/v2.2.4\n9b1c868326bc9bb6246e6339aad27def846cf74f\trefs/tags/v2.2.5\n934576df5eb988b049070896ee62d77ccfbedd66\trefs/tags/v2.2.6\n946b2f4aceba7aa9a9c6e87dbf3a7506c6f5fe6c\trefs/tags/v2.3.0\n8d7402f470d854220c3ef21298a6a286b977ed9a\trefs/tags/v2.3.1\n2b4e433687f1fe2d65bca4b884c27eacf2882248\trefs/tags/v2.3.2\nde8dbf5a210bdda380ddab37dcea6740c1d77dea\trefs/tags/v2.3.3\nac1508c49e11df9a0d3cb9b012fa4c9734217318\trefs/tags/v2.3.4\nc45d5f4bb3912f74c88b8640590768b423a19e87\trefs/tags/v2.3.5\n0dfd5f7f6797973fed515e8e6045d0dbd501fa96\trefs/tags/v2.3.6\n170679294b4040f01143d1c89b2fb7fe09f4bf0f\trefs/tags/v2.3.99pre1\n651bb5009f2e3a2c570af2232c9c69a4068ccbd9\trefs/tags/v2.3.99pre2\n98485c96d837f68f6c1c03964e8e1ac6f17913bb\trefs/tags/v2.3.99pre3\n9007c58bdd578ac9d488ab70884e2ce45412b41e\trefs/tags/v2.4.0\n4d2b198403bdd06a3032f2b90d80ae6672249c17\trefs/tags/v2.4.1\n5190ab9c9b3185181b102efb8e7563a8b26475db\trefs/tags/v2.4.2\nf6a1ed1b85d46fa72d158db380125aedc79be017\trefs/tags/v2.4.3\nfa695744fda1b4c19f525b65732cb3fb984becce\trefs/tags/v2.5.0\nc26a9401676322f1c26efb8d3187c53858d19a83\trefs/tags/v2.5.1\n0f45b26cb9d529b7364940ed6ee516bffd2ed01e\trefs/tags/v2.5.2\n162d534ff68465296ca15b0cb45bceb4b63ebbe7\trefs/tags/v2.5.3\n27480b6ec24182da4c0bd3f8b28ee4168e0199d0\trefs/tags/v2.6.0\n49cb559c5bad6fa79702a5d642d456c8f40de248\trefs/tags/v2.6.0^{}\nba0be8204271614a49f11f4b732a688c2e684706\trefs/tags/v2.6.1\nc14b581e0a84fc0984dc4720c16f6fb6a7684a09\trefs/tags/v2.6.1^{}\n27d235b3e5cdd305698b7122c3efedf423dd71ab\trefs/tags/v2.6.2\n2b5d29b8c67d3227068a98533dc809ea2e36b774\trefs/tags/v2.6.2^{}\nebdbe979a206d383dc77ef3e95a6e88599179876\trefs/tags/v2.6.3\nf85648db68682cced1bc99b2c97592cac89a0581\trefs/tags/v2.6.3^{}\n9a6280bc68c09cf2a3202ba30954a6ca4a85d952\trefs/tags/v2.7.0\n244de605a7dbf2ae7402b94115d50aa0cd87a033\trefs/tags/v2.7.0^{}\n2c635d0afe7d9f8bebe5d6b0c3a52e4a22c1dcce\trefs/tags/v2.7.1\nea1afac9db67fc20cda552f7d44f8d7e614fabc9\trefs/tags/v2.7.1^{}\n83d6b75008463964f014eace99a98211db654313\trefs/tags/v2.7.2\n29e094cd21fb2eaae4dde70a4363a9cc33168094\trefs/tags/v2.7.2^{}\nfcff6d31b019def283e156df18f35ff0ab8e55b3\trefs/tags/v2.7.3\n9f92fb3ec4914d2ca2b1f00f2ee72885a66b811a\trefs/tags/v2.7.3^{}\na9ed22b5e6a346e50580165f27dbc249b22e532c\trefs/tags/v2.7.4\n59edef55dcc6d2e5a427e97f4ef93aeece920011\trefs/tags/v2.7.4^{}\nf4249c136a764a5897ded5d36b6f8814af7084a7\trefs/tags/v2.7.5\n4474bc0970377c13f6a9518e208426d82f732632\trefs/tags/v2.7.5^{}\n2ab56b4e3a40e6cd68ba1b95f900b7d4b14ba00a\trefs/tags/v2.8.0\nbe62368d54db5e1e910fa3942b37bc997ac50eb5\trefs/tags/v2.8.0^{}\nedafbe005a5e86c98a5c1c61bfcc7b722330b15c\trefs/tags/v2.8.1\nb7166d5c06f6d41b603a129710e6d9848e32a59d\trefs/tags/v2.8.1^{}\nabf3d05852a8682007876e7d33b82a6fe63070ba\trefs/tags/v2.8.2\n492166a3f710de95cbb285560c5555d631d0ba04\trefs/tags/v2.8.2^{}\n1c8d2d3bc96a68a9fb71c7d5792036bef5ccb6aa\trefs/tags/v2.8.3\nc1b08302df2d89e3eb1f534938794d8e5b4fff01\trefs/tags/v2.8.3^{}\na155441c4ee9b22c381119171010b76b395c7f8c\trefs/tags/v2.8.4\n3db2beefd3ce61f34911fdf7dbbaa9bea1990591\trefs/tags/v2.8.4^{}\n03cd0d3846bcd23173848d71b70c3bdf073dc17b\trefs/tags/v2.8.5\nfd8ce7af8e9eb01ae54c75bb32db84954dc3d7ee\trefs/tags/v2.8.5^{}\n9d78f3570b380d0709fad77ccc2f35d8bf72abba\trefs/tags/v2.8.6\n4d5423196708a4c7a699c85def2d474f8fb68b96\trefs/tags/v2.8.6^{}\nf970e5a2ac8866e6e8fd20421583f15b47696f34\trefs/tags/v2.8.7\n758b4e66dbd719187aafa9d5f492b6948e54da8f\trefs/tags/v2.8.7^{}\n9047da1a59e4feebd0757612c226fc73ed411107\trefs/tags/v2.9.0\n11a3bc484c7f60657402ab80f649f4356f0ad11e\trefs/tags/v2.9.0^{}\nca72088a493a78028a81e15b6b737460666383d0\trefs/tags/v2.9.1\nd646a3b97b7d2fddcc1c98a59db0c753edf5e4c8\trefs/tags/v2.9.1^{}\n6ef89d8fafbd1fe4e4e164dfde022c578b0f08f2\trefs/tags/v2.9.2\n084dda383732d7290cb4c7a730740af27d0cd769\trefs/tags/v2.9.2^{}\n54d52c5f8771f66506080db725435725d144ccf9\trefs/tags/v2.9.3\n361267cf256d33c45bcf55cdbe9e3022afb823b5\trefs/tags/v2.9.3^{}\n16e3fc8fc73e1632d04640ab3212496dcebddf40\trefs/tags/v2.9.4\na7b1f0f03f2509c6add97a15004548cf9b725be3\trefs/tags/v2.9.4^{}\n5b0930d32c366b5e1a4ffe40a2e929a5ae47f7b6\trefs/tags/v2.9.5\n9fcfee18e87e8eed8e15077bc91717b1ce9c5ade\trefs/tags/v2.9.5^{}\n0499c39efb4c2e0ce242b097febf0183e9e8889f\trefs/tags/v2.9.6\n21a54a3cf63e06e8d05e919379152f7e1b053cb7\trefs/tags/v2.9.6^{}\n05797e81e9b581e78f6117ea4927d3b88dcbbb6a\trefs/tags/v2.9.7\n06c3e1acde8c7d885ccdae801507a5fc5c255b4b\trefs/tags/v2.9.7^{}\n8081a82be6d0a5865cd61dcf6e04cca402d19811\trefs/tags/v2.9.8\n78dc7b8f0addd01fb23ab9c6edbf1cf845d361ea\trefs/tags/v2.9.8^{}\nf208ae40e75a4976f75ddefdbd367ed986621b80\trefs/tags/v3.0\n5b1229599e320235c8c7822481b881df8f85cfe6\trefs/tags/v3.0^{}\nb843ddde7241e369bba0ba21b332aacb0ee8fff6\trefs/tags/v3.1\nce94cb1dc62b0c99382e699a6f2b66f004dd7043\trefs/tags/v3.1^{}\n174138ef67300c1b72fa76cb5f4f9116f6ce5350\trefs/tags/v3.2\n8a049e3233c77dd7e511d3e834b1f8231329bdfe\trefs/tags/v3.2^{}\ne229a3166a96559b555f6e6a911eafd2d2656819\trefs/tags/v4.0\nd7a5bacf15b0e5164afefdb01c85c25e4a02e80a\trefs/tags/v4.0^{}\n792790130b90674a1963fa231aace2943a0eca87\trefs/tags/v4.1\n576c20c4e49a740f6284a1648b5226be10df8802\trefs/tags/v4.1^{}\n78d506bdf4838aff83f04d25092345987efec529\trefs/tags/v4.2\ne92c3110a1d5e1c98334efaccb5849c1aae6282d\trefs/tags/v4.2^{}\n0791bee61de910b214a130e112a25fbef9a5afca\trefs/tags/v4.3\nb8987a1e4081a11c8b945743bfdafbd9ffc1a4ad\trefs/tags/v4.3^{}\nf9b0387b36f929cd22a3ba7df4959f4f8ef9e178\trefs/tags/v4.4\n7d9ad31cd96cd414d76031d027ee1e194a599858\trefs/tags/v4.4^{}\ne5c8e2d6fb0cf63b137386eec047054983b524f4\trefs/tags/v4.5\n72b13adeff680332cdbf4964373e72aa496d7fea\trefs/tags/v4.5^{}\nb4732752d0d5993626d6e546bb7d78b2f72fddd5\trefs/tags/v4.6\nfdf095c32fe1a2d396f4608ec40c25c47e65ec6c\trefs/tags/v4.6^{}\n86205c36c82bdad94a3861286c7bde68dc61af9d\trefs/tags/v4.7\n075b7e75bc95699ccf1c3ee8bbcdb240311d7b63\trefs/tags/v4.7^{}\nee4c890597dcd44b7380314d1694253f639ce45b\trefs/tags/v4.8\nf8d2f552bdd65f3855dfb505b739a19103c521d5\trefs/tags/v4.8^{}\n3e2c5b9a1d8724662a45016e35d1e80c18b4234e\trefs/tags/v4.9\ne7fa43d600653c1cecf387ea56b1c5ed9d04ab35\trefs/tags/v4.9^{}\nf947aee665ee3d08b5d5ee555fa56c3a44a8201b\trefs/tags/v4.9.1\ne8ab61fc87cdc44d5f5777ef6d136318f58690f0\trefs/tags/v4.9.1^{}\n4d565b7c418160a3a77d834a7e5e36d193ecf09b\trefs/tags/v4.9.2\nbbf5f4db687756b4a6cce05f0a7facb1e8817f80\trefs/tags/v4.9.2^{}\n4ecb840b60c0aeb86da6e2bbb094ee521278c7b4\trefs/tags/v4.9.3\n0338cd40a82ad7b9c359580a8738e9fb8b549059\trefs/tags/v4.9.3^{}\n" -- Gitee From 71560ee5118633053fc8ec2c624f471d51812a5f Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Tue, 2 Jun 2020 13:33:59 +0000 Subject: [PATCH 06/14] fix lint issues --- gitee.py | 102 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 50 deletions(-) diff --git a/gitee.py b/gitee.py index c7c76fb5..8c06e2ca 100755 --- a/gitee.py +++ b/gitee.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 """ -This is a simple script to query that contact person for specific package +This is a helper script for working with gitee.com """ import urllib @@ -15,30 +15,44 @@ import json import pprint -class Gitee: +class Gitee(object): + """ + Gitee is a helper class to abstract gitee.com api + """ def __init__(self): self.secret = open(os.path.expanduser("~/.gitee_personal_token.json"), "r") self.token = json.load(self.secret) self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW 64; rv:50.0) Gecko/20100101 Firefox/50.0'} - self.specfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{specfile}" - self.yamlfile_url_template = "https://gitee.com/src-openeuler/{package}/raw/master/{package}.yaml" - self.advisor_url_template = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/upstream-info/{package}.yaml" - self.specfile_exception_url = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/helper/specfile_exceptions.yaml" - - def post_gitee(self, url, values, headers = None): - if headers == None: + self.gitee_url = "https://gitee.com/" + self.src_openeuler_url = self.gitee_url+"src-openeuler/{package}/raw/master/" + self.advisor_url = self.gitee_url + "openeuler/openEuler-Advisor/raw/master/" + self.specfile_url_template = self.src_openeuler_url + "{specfile}" + self.yamlfile_url_template = self.src_openeuler_url + "{package}.yaml" + #self.advisor_url_template = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/upstream-info/{package}.yaml" + self.advisor_url_template = self.advisor_url + "upstream-info/{package}.yaml" + #self.specfile_exception_url = "https://gitee.com/openeuler/openEuler-Advisor/raw/master/helper/specfile_exceptions.yaml" + self.specfile_exception_url = self.advisor_url + "helper/specfile_exceptions.yaml" + + def post_gitee(self, url, values, headers=None): + """ + POST into gitee API + """ + if headers is None: headers = self.headers.copy() data = urllib.parse.urlencode(values).encode('utf-8') - req = urllib.request.Request(url = url, data = data, headers=headers, method="POST") + req = urllib.request.Request(url=url, data=data, headers=headers, method="POST") try: u = urllib.request.urlopen(req) except urllib.error.HTTPError as err: - print("WARNING:"+str(err.code)) - print("WARNING:"+str(err.headers)) + print("WARNING:" + str(err.code)) + print("WARNING:" + str(err.headers)) return u.read().decode("utf-8") def fork_repo(self, repo): + """ + Fork repository in gitee + """ url = "https://gitee.com/api/v5/repos/src-openeuler/{repo}/forks".format(repo=repo) values = {} values["access_token"] = self.token["access_token"] @@ -49,17 +63,29 @@ class Gitee: return self.post_gitee(url, values) def create_pr(self, head, repo): + """ + Create PR in gitee + """ url = "https://gitee.com/api/v5/repos/src-openeuler/{repo}/pulls".format(repo=repo) values = {} values["access_token"] = self.token["access_token"] values["title"] = "Upgrade to latest version of {repo}".format(repo=repo) values["head"] = "{head}:master".format(head=head) values["base"] = "master" - values["body"] = "This is a (mostly) automatically created PR by openEuler-Advisor.\nPlease be noted that it's not throughly tested.\nReview carefully before accept this PR.\nThanks.\nYours openEuler-Advisor.\n" + values["body"] = """ + This is a (mostly) automatically created PR by openEuler-Advisor. + Please be noted that it's not throughly tested. + Review carefully before accept this PR. + Thanks. + Yours openEuler-Advisor. + """ return self.post_gitee(url, values) def get_gitee(self, url, headers=None): - if headers == None: + """ + GET from gitee api + """ + if headers is None: req = urllib.request.Request(url=url, headers=self.headers) else: req = urllib.request.Request(url=url, headers=headers) @@ -67,6 +93,9 @@ class Gitee: return u.read().decode("utf-8") def get_gitee_json(self, url): + """ + get and load gitee json response + """ #headers = self.headers.copy() headers = {} headers["Content-Type"] = "application/json;charset=UTF-8" @@ -74,11 +103,17 @@ class Gitee: return json.loads(resp) def get_spec_exception(self): + """ + get well known spec file exceptions + """ resp = self.get_gitee(self.specfile_exception_url) exps = yaml.load(resp, Loader=yaml.Loader) return exps def get_spec(self, pkg): + """ + get openeuler spec file for specific package + """ exp = self.get_spec_exception() if pkg in exp: dir_name = exp[pkg]["dir"] @@ -90,6 +125,9 @@ class Gitee: return self.get_gitee(specurl) def get_yaml(self, pkg): + """ + get upstream yaml metadata for specific package + """ yamlurl = self.advisor_url_template.format(package=pkg) resp = self.get_gitee(yamlurl) if re.match("Not found", resp): @@ -102,42 +140,6 @@ class Gitee: return resp else: return False - -class Advisor: - def __init__(self): - self.gitee = Gitee() - - """ - def new_issue(owner, repo, title, body): - @param["access_token"] = @token["access_token"] - @param["repo"] = repo - @param["title"] = title - @param["body"] = body - @cmd += " 'https://gitee.com/api/v5/repos/#{owner}/issues'" - @cmd += " -d '" + @param.to_json + "'" - #puts @cmd - resp = %x[#{@cmd}] - #puts resp - """ - -class openEuler_TC: - def __init__(self): - self.gitee = Gitee() - self.list_url = "https://gitee.com/api/v5/repos/openeuler/community/pulls?access_token={token}&state=open&sort=created&direction=desc&page=1&per_page=100" - self.desc_url = "https://gitee.com/api/v5/repos/openeuler/community/pulls/{number}/comments?access_token={token}&page=1&per_page=100" - self.tc_members = ["myeuler", "cynthia_xh", "shinwell_hu", "dream0819", "hanjun-guo", "xiexiuqi", "zhanghai_lucky"] - - - def get_prs(self): - url = self.list_url.format(token=self.token["access_token"]) - return self.gitee.get_gitee(url) - - def get_pr_comments(self, number): - url = self.desc_url.format(number=number, token=self.token["access_token"]) - return self.gitee.get_gitee(url) - - def filter_out_tc(self, users): - return [x for x in self.tc_members if x in users] if __name__ == "__main__": pass -- Gitee From ee8e867983609c5a9747e68d1484eb7e4b1800c6 Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Tue, 2 Jun 2020 13:35:10 +0000 Subject: [PATCH 07/14] fix lint issues --- gitee.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gitee.py b/gitee.py index 8c06e2ca..50fe5e05 100755 --- a/gitee.py +++ b/gitee.py @@ -25,7 +25,7 @@ class Gitee(object): self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW 64; rv:50.0) Gecko/20100101 Firefox/50.0'} self.gitee_url = "https://gitee.com/" - self.src_openeuler_url = self.gitee_url+"src-openeuler/{package}/raw/master/" + self.src_openeuler_url = self.gitee_url + "src-openeuler/{package}/raw/master/" self.advisor_url = self.gitee_url + "openeuler/openEuler-Advisor/raw/master/" self.specfile_url_template = self.src_openeuler_url + "{specfile}" self.yamlfile_url_template = self.src_openeuler_url + "{package}.yaml" @@ -120,7 +120,7 @@ class Gitee(object): file_name = exp[pkg]["file"] specurl = self.specfile_url_template.format(package=pkg, specfile=dir_name + "/" + file_name) else: - specurl = self.specfile_url_template.format(package=pkg, specfile=pkg+".spec") + specurl = self.specfile_url_template.format(package=pkg, specfile=pkg + ".spec") return self.get_gitee(specurl) -- Gitee From 5c5efc15e9b0ebb9786699d0bb050049fd830d28 Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Tue, 2 Jun 2020 13:39:10 +0000 Subject: [PATCH 08/14] fix lint issue --- simple-update-robot.py | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/simple-update-robot.py b/simple-update-robot.py index 1f728849..d05ca334 100755 --- a/simple-update-robot.py +++ b/simple-update-robot.py @@ -1,14 +1,16 @@ #!/usr/bin/python3 -# process -# 1. get URL to download updated version -# so far we know the URL in spec is not reliable -# 2. Change Version to new one -# 3. Change Source or Source0 if needed -# 4. Update %changelog -# 5. try rpmbuild -bb -# 6. fork on gitee -# 7. git clone, git add, git commit, git push -# 8. PR on gitee +""" +This is a robot to do package upgrade automation +Expected process: + 1. get URL to download updated version + 2. Change Version to new one + 3. Change Source or Source0 if needed + 4. Update %changelog + 5. try rpmbuild -bb (not yet) + 6. fork on gitee + 7. git clone, git add, git commit, git push (manually now) + 8. PR on gitee +""" from pyrpm.spec import Spec, replace_macros import yaml @@ -21,6 +23,9 @@ import re import datetime def download_source_url(spec, o_ver, n_ver): + """ + Download source file from Source or Source0 URL + """ source = replace_macros(spec.sources[0], spec).replace(o_ver, n_ver) if re.match(r"%{.*?}", source): print("Extra macros in URL which failed to be expanded") @@ -33,7 +38,11 @@ def download_source_url(spec, o_ver, n_ver): print("Not valid URL for Source code") return False + def download_upstream_url(gt, repo, o_ver, n_ver): + """ + Download source from upstream metadata URL + """ upstream_yaml = gt.get_yaml(repo) if not upstream_yaml: return False @@ -48,8 +57,12 @@ def download_upstream_url(gt, repo, o_ver, n_ver): print("Handling {vc} is still under developing".format(vc=rp_yaml["version_control"])) return False + def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None): - fn = open(repo+".spec", "w") + """ + Create new spec file for upgraded package + """ + fn = open(repo + ".spec", "w") in_changelog = False for l in spec_str.splitlines(): if l.startswith("Release:"): @@ -65,7 +78,7 @@ def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None): nl = l.replace(o_ver, n_ver) else: nl = l - fn.write(nl+"\n") + fn.write(nl + "\n") if nl.startswith("%changelog"): in_changelog = True -- Gitee From 5b6d70dcd72c87b70ce7ee46f968c76fe60bfd87 Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Tue, 2 Jun 2020 14:42:04 +0000 Subject: [PATCH 09/14] fix lint --- gitee.py | 16 +- simple-update-robot.py | 3 + upstream-info/acl.yaml | 8 + upstream-info/libnet.yaml | 903 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 922 insertions(+), 8 deletions(-) create mode 100644 upstream-info/acl.yaml create mode 100644 upstream-info/libnet.yaml diff --git a/gitee.py b/gitee.py index 50fe5e05..455fb052 100755 --- a/gitee.py +++ b/gitee.py @@ -44,10 +44,11 @@ class Gitee(object): req = urllib.request.Request(url=url, data=data, headers=headers, method="POST") try: u = urllib.request.urlopen(req) + return u.read().decode("utf-8") except urllib.error.HTTPError as err: print("WARNING:" + str(err.code)) print("WARNING:" + str(err.headers)) - return u.read().decode("utf-8") + return False def fork_repo(self, repo): """ @@ -72,13 +73,12 @@ class Gitee(object): values["title"] = "Upgrade to latest version of {repo}".format(repo=repo) values["head"] = "{head}:master".format(head=head) values["base"] = "master" - values["body"] = """ - This is a (mostly) automatically created PR by openEuler-Advisor. - Please be noted that it's not throughly tested. - Review carefully before accept this PR. - Thanks. - Yours openEuler-Advisor. - """ + values["body"] = """This is a (mostly) automatically created PR by openEuler-Advisor. +Please be noted that it's not throughly tested. +Review carefully before accept this PR. +Thanks. +Yours openEuler-Advisor. +""" return self.post_gitee(url, values) def get_gitee(self, url, headers=None): diff --git a/simple-update-robot.py b/simple-update-robot.py index d05ca334..8d58d5f8 100755 --- a/simple-update-robot.py +++ b/simple-update-robot.py @@ -96,6 +96,7 @@ if __name__ == "__main__": pars.add_argument("-s", "--create_spec", help="Create spec file", action="store_true") pars.add_argument("-d", "--download", help="Download upstream source code", action="store_true") pars.add_argument("-f", "--fork", help="fork src-openeuler repo into users", action="store_true") + pars.add_argument("-c", "--clone", help="clone privatge repo to local", action="store_true") pars.add_argument("-p", "--PR", help="Create upgrade PR", action="store_true") args = pars.parse_args() @@ -110,6 +111,8 @@ if __name__ == "__main__": if args.fork: gt.fork_repo(args.pkg) + + if args.clone: subprocess.call(["git", "clone", "git@gitee.com:shinwell_hu/"+args.pkg]) os.chdir(args.pkg) diff --git a/upstream-info/acl.yaml b/upstream-info/acl.yaml new file mode 100644 index 00000000..a74dba59 --- /dev/null +++ b/upstream-info/acl.yaml @@ -0,0 +1,8 @@ +--- +version_control: git +src_repo: https://git.savannah.nongnu.org/git/acl.git +tag_prefix: "^v" +seperator: "." +last_query: + time_stamp: 2020-06-02 13:43:22.567974230 +00:00 + raw_data: "545b91ea3954f6947f249d123654f24bec91c960\trefs/tags/v2.2.48\nfbda9a016a9e2d9391ae8a23d344b688ce7b1b8e\trefs/tags/v2.2.48^{}\n9071990b42461746e484e6a9d290af06a193defa\trefs/tags/v2.2.49\n05c5bdcb4dc865c5822d7da7d0043daf2076ed46\trefs/tags/v2.2.49^{}\n3fd085b41cba7826c2190964f8d5570a0cd1c7c8\trefs/tags/v2.2.50\nb1f432b59b658069187c2af913729c9b9be06f5a\trefs/tags/v2.2.50^{}\n3be4b7c5eb811829305242a7bc1e943a5949a1dc\trefs/tags/v2.2.51\n088bcbb414116ba7e0432e4cb90a8102ea14a959\trefs/tags/v2.2.51^{}\nf13e09bd54fd4a501c4952f002ed2752bdd9f93b\trefs/tags/v2.2.52\n80a5dd99233d69f18c6a6ec78aebc35652dd84f2\trefs/tags/v2.2.53\n65ff056ac4c25141cc06e484bce040635e4abd3d\trefs/tags/v2.2.53^{}\n" diff --git a/upstream-info/libnet.yaml b/upstream-info/libnet.yaml new file mode 100644 index 00000000..2223bc2f --- /dev/null +++ b/upstream-info/libnet.yaml @@ -0,0 +1,903 @@ +--- +version_control: github +src_repo: libnet/libnet +tag_prefix: "^v" +seperator: "." +last_query: + time_stamp: 2020-06-02 14:01:49.300687660 +00:00 + raw_data: | + [ + { + "url": "https://api.github.com/repos/libnet/libnet/releases/20744818", + "assets_url": "https://api.github.com/repos/libnet/libnet/releases/20744818/assets", + "upload_url": "https://uploads.github.com/repos/libnet/libnet/releases/20744818/assets{?name,label}", + "html_url": "https://github.com/libnet/libnet/releases/tag/v1.2", + "id": 20744818, + "node_id": "MDc6UmVsZWFzZTIwNzQ0ODE4", + "tag_name": "v1.2", + "target_commitish": "master", + "name": "libnet v1.2", + "draft": false, + "author": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-10-16T14:16:38Z", + "published_at": "2019-10-16T14:19:50Z", + "assets": [ + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15517807", + "id": 15517807, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1NTE3ODA3", + "name": "libnet-1.2.tar.gz", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 649191, + "download_count": 1813, + "created_at": "2019-10-16T14:19:46Z", + "updated_at": "2019-10-16T14:19:47Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2/libnet-1.2.tar.gz" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15517811", + "id": 15517811, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1NTE3ODEx", + "name": "libnet-1.2.tar.gz.md5", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 52, + "download_count": 16, + "created_at": "2019-10-16T14:19:47Z", + "updated_at": "2019-10-16T14:19:48Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2/libnet-1.2.tar.gz.md5" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15517808", + "id": 15517808, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1NTE3ODA4", + "name": "libnet-1.2.zip", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 879876, + "download_count": 152, + "created_at": "2019-10-16T14:19:46Z", + "updated_at": "2019-10-16T14:19:48Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2/libnet-1.2.zip" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15517809", + "id": 15517809, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1NTE3ODA5", + "name": "libnet-1.2.zip.md5", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 49, + "download_count": 7, + "created_at": "2019-10-16T14:19:46Z", + "updated_at": "2019-10-16T14:19:48Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2/libnet-1.2.zip.md5" + } + ], + "tarball_url": "https://api.github.com/repos/libnet/libnet/tarball/v1.2", + "zipball_url": "https://api.github.com/repos/libnet/libnet/zipball/v1.2", + "body": "Release curated by Sam Roberts and Joachim Nilsson.\r\n\r\n### Changes\r\n\r\n- Removed Lua bindings from repo and dist files, now available separately\r\n- Removed generated HTML and Nroff (man pages) documentation files, must be regenerated with Doxygen using `make doc`\r\n- Add `pkg-config` support with `libnet.pc`, replaces `libnet-config` tool, although it is kept for compatibility for now\r\n- Factorize socket setup code for socket opening to provide output device selection for IPv4\r\n- Make `libnet_get_hwaddr()` work with 802.1q interfaces in bpf (BSD)\r\n- New API for OSPF HELLO messages, with neighbor\r\n\r\n### Fixes\r\n\r\n- Use `getifaddrs()` on OpnBSD and Linux\r\n- For samples, `netinet/in.h` is not on windows\r\n- Fix errors with missing `IPPROTO_MH` on windows\r\n- Fix build error on Mac OS X\r\n- Fix #34 checksum caculation when IPv6 extension headers being used\r\n- Remove unneeded trailing `-Wl` from `-version-info` line\r\n- `libnet_build_snmp()` fix warning\r\n- Use `LIBNET_*RESOLVE` const in `libnet_name2addr*`\r\n- Fix i486 sample synflood6 warning\r\n- Some samples need `#include` for `IPPROTO_*` on OpenBSD 5.2\r\n- Fix gcc warnings\r\n- Check for `socklen_t`. Suggested by g.esp and Stefanos Harhalakis\r\n- libnet: update for obsolete INCLUDE directive\r\n- Fix warning inside comment\r\n- Automatic link options `#pragma comment(lib, ...)` are only for MSVC\r\n- Fix several warnings for MS C/C++ compiler\r\n- `libnet_open_raw4()` doesn't return a SOCKET on win32\r\n- Fixes error messages sometimes include newline, sometimes not\r\n- Properly set `l->err_buf` if `libnet_ifaddrlist()` fails\r\n- dlpi: Try harder to find the device for the interface\r\n- dlpi: Correctly extract unit number from devices with numbers in their name\r\n- Make interface selection work for interfaces with multiple addresses\r\n- Fix memory leak, device list needs to freed after use\r\n- Fix file descriptor leak in `libnet_ifaddrlist()`\r\n- Fix `libnet_get_hwaddr()` for large(!) number of interfaces\r\n- Fix to support musl libc, removes support for GLIBC <2.1\r\n- Fix win32 buffer overrun in `libnet_get_ipaddr4()`\r\n- Interface selection was ignoring interfaces with IPv6\r\n- Use `LIBNET_API` on public functions, instead of an export file\r\n- Add Visual Studio 2010 project files, with build instructions\r\n- Define INET6 on IRIX, making libnet compile cleanly\r\n- Check for FreeBSD pre-11 before enabling `LIBNET_BSD_BYTE_SWAP`\r\n- Use `LIBNET_BSDISH_OS` and `LIBNET_BSD_BYTE_SWAP` on Darwin\r\n- Add BSD byteswap for Darwin. Otherwise `sendto(` returns `EINVAL`\r\n- `netinet/in.h` is needed for `IPPROTO_` and `sockaddr_in`\r\n" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/20568047", + "assets_url": "https://api.github.com/repos/libnet/libnet/releases/20568047/assets", + "upload_url": "https://uploads.github.com/repos/libnet/libnet/releases/20568047/assets{?name,label}", + "html_url": "https://github.com/libnet/libnet/releases/tag/v1.2-rc4", + "id": 20568047, + "node_id": "MDc6UmVsZWFzZTIwNTY4MDQ3", + "tag_name": "v1.2-rc4", + "target_commitish": "master", + "name": "libnet v1.2-rc4", + "draft": false, + "author": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2019-10-09T05:42:30Z", + "published_at": "2019-10-09T05:48:31Z", + "assets": [ + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15373287", + "id": 15373287, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MzczMjg3", + "name": "libnet-1.2-rc4.tar.gz", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 615726, + "download_count": 109, + "created_at": "2019-10-09T05:48:24Z", + "updated_at": "2019-10-09T05:48:27Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2-rc4/libnet-1.2-rc4.tar.gz" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15373289", + "id": 15373289, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MzczMjg5", + "name": "libnet-1.2-rc4.tar.gz.md5", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 56, + "download_count": 5, + "created_at": "2019-10-09T05:48:24Z", + "updated_at": "2019-10-09T05:48:28Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2-rc4/libnet-1.2-rc4.tar.gz.md5" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15373286", + "id": 15373286, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MzczMjg2", + "name": "libnet-1.2-rc4.zip", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 840226, + "download_count": 21, + "created_at": "2019-10-09T05:48:23Z", + "updated_at": "2019-10-09T05:48:26Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2-rc4/libnet-1.2-rc4.zip" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15373288", + "id": 15373288, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MzczMjg4", + "name": "libnet-1.2-rc4.zip.md5", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 53, + "download_count": 4, + "created_at": "2019-10-09T05:48:24Z", + "updated_at": "2019-10-09T05:48:27Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2-rc4/libnet-1.2-rc4.zip.md5" + } + ], + "tarball_url": "https://api.github.com/repos/libnet/libnet/tarball/v1.2-rc4", + "zipball_url": "https://api.github.com/repos/libnet/libnet/zipball/v1.2-rc4", + "body": "Release curated by Sam Roberts and Joachim Nilsson.\r\n\r\n### Changes\r\n\r\n- Removed Lua bindings from repo and dist files, now available separately\r\n- Removed generated HTML and Nroff (man pages) documentation files, must be regenerated with Doxygen using `make doc`\r\n- Add `pkg-config` support with `libnet.pc`, replaces `libnet-config` tool, although it is kept for compatibility for now\r\n- Factorize socket setup code for socket opening to provide output device selection for IPv4\r\n- Make `libnet_get_hwaddr()` work with 802.1q interfaces in bpf (BSD)\r\n- New API for OSPF HELLO messages, with neighbor\r\n\r\n### Fixes\r\n\r\n- Use `getifaddrs()` on OpnBSD and Linux\r\n- For samples, `netinet/in.h` is not on windows\r\n- Fix errors with missing `IPPROTO_MH` on windows\r\n- Fix build error on Mac OS X\r\n- Fix #34 checksum caculation when IPv6 extension headers being used\r\n- Remove unneeded trailing `-Wl` from `-version-info` line\r\n- `libnet_build_snmp()` fix warning\r\n- Use `LIBNET_*RESOLVE` const in `libnet_name2addr*`\r\n- Fix i486 sample synflood6 warning\r\n- Some samples need `#include` for `IPPROTO_*` on OpenBSD 5.2\r\n- Fix gcc warnings\r\n- Check for `socklen_t`. Suggested by g.esp and Stefanos Harhalakis\r\n- libnet: update for obsolete INCLUDE directive\r\n- Fix warning inside comment\r\n- Automatic link options `#pragma comment(lib, ...)` are only for MSVC\r\n- Fix several warnings for MS C/C++ compiler\r\n- `libnet_open_raw4()` doesn't return a SOCKET on win32\r\n- Fixes error messages sometimes include newline, sometimes not\r\n- Properly set `l->err_buf` if `libnet_ifaddrlist()` fails\r\n- dlpi: Try harder to find the device for the interface\r\n- dlpi: Correctly extract unit number from devices with numbers in their name\r\n- Make interface selection work for interfaces with multiple addresses\r\n- Fix memory leak, device list needs to freed after use\r\n- Fix file descriptor leak in `libnet_ifaddrlist()`\r\n- Fix `libnet_get_hwaddr()` for large(!) number of interfaces\r\n- Fix to support musl libc, removes support for GLIBC <2.1\r\n- Fix win32 buffer overrun in `libnet_get_ipaddr4()`\r\n- Interface selection was ignoring interfaces with IPv6\r\n- Use `LIBNET_API` on public functions, instead of an export file\r\n- Add Visual Studio 2010 project files, with build instructions\r\n- Define INET6 on IRIX, making libnet compile cleanly\r\n- Check for FreeBSD pre-11 before enabling `LIBNET_BSD_BYTE_SWAP`\r\n- Use `LIBNET_BSDISH_OS` and `LIBNET_BSD_BYTE_SWAP` on Darwin\r\n- Add BSD byteswap for Darwin. Otherwise `sendto(` returns `EINVAL`\r\n- `netinet/in.h` is needed for `IPPROTO_` and `sockaddr_in`\r\n" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/20336094", + "assets_url": "https://api.github.com/repos/libnet/libnet/releases/20336094/assets", + "upload_url": "https://uploads.github.com/repos/libnet/libnet/releases/20336094/assets{?name,label}", + "html_url": "https://github.com/libnet/libnet/releases/tag/v1.2-rc3", + "id": 20336094, + "node_id": "MDc6UmVsZWFzZTIwMzM2MDk0", + "tag_name": "v1.2-rc3", + "target_commitish": "master", + "name": "libnet v1.2-rc3", + "draft": false, + "author": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2014-01-30T05:58:30Z", + "published_at": "2019-09-29T17:24:11Z", + "assets": [ + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194620", + "id": 15194620, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NjIw", + "name": "libnet-1.2-rc3.tar.gz", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 676205, + "download_count": 19, + "created_at": "2019-09-29T17:24:08Z", + "updated_at": "2019-09-29T17:24:09Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2-rc3/libnet-1.2-rc3.tar.gz" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194619", + "id": 15194619, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NjE5", + "name": "libnet-1.2-rc3.tar.gz.md5", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 56, + "download_count": 5, + "created_at": "2019-09-29T17:24:08Z", + "updated_at": "2019-09-29T17:24:09Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.2-rc3/libnet-1.2-rc3.tar.gz.md5" + } + ], + "tarball_url": "https://api.github.com/repos/libnet/libnet/tarball/v1.2-rc3", + "zipball_url": "https://api.github.com/repos/libnet/libnet/zipball/v1.2-rc3", + "body": "- Prepare for 1.2 release candidate 3 (Sam Roberts)\r\n- Remove obsolete SYMBOL_CACHE_SIZE from doxygen.conf (Sam Roberts)\r\n- For samples, netinet/in.h is not on windows (Sam Roberts)\r\n- Fix errors with missing IPPROTO_MH on windows (Sam Roberts)\r\n- Factorize socket setup code for socket opening (Eric Leblond)\r\n- Fix build error in Mac OS X (allfro)\r\n- Insource comments and whitespace cleanups (Sam Roberts)\r\n- Fix #34 correct checksum caculation when IPv6 extension headers being used (Alexander Koeppe)\r\n- Make libnet_get_hwaddr() work with 802.1q interfaces in bpf (BSD). (Thomas Habets)\r\n- Update libnet_dll.c (dlwdlw)\r\n- Update libnet_raw.c (dlwdlw)\r\n- Update CHANGELOG (Sam Roberts)\r\n- libnet: Remove unneeded trailing -Wl from -version-info line (Gilles Espinasse)\r\n- Prepare for 1.2 release candidate 2 (Sam Roberts)\r\n- libnet: libnet_build_snmp fix warning (Gilles Espinasse)\r\n- libnet: use LIBNET_*RESOLVE const in libnet_name2addr* (Gilles Espinasse)\r\n- libnet: fix i486 sample synflood6 warning (Gilles Espinasse)\r\n- Some samples need #include for IPPROTO_* on OpenBSD 5.2 (Thomas Habets)\r\n- Better description of .so revioning. (Sam Roberts)\r\n- Fix gcc warnings. (Stefanos Harhalakis)\r\n- Use @retval for correct man page formatting. (Sam Roberts)\r\n- Hide undocumented in auto-generated documentation. (Sam Roberts)\r\n- Check for socklen_t (suggested by g.esp and Stefanos Harhalakis) (Sam Roberts)\r\n- Update to doxygen 1.8 (Sam Roberts)\r\n- Only distribute man pages for libnet headers. (Reported by g.esp) (Sam Roberts)\r\n- libnet: update for obsolete INCLUDE directive (Gilles Espinasse)\r\n- Fix warning inside comment (Gilles Espinasse)\r\n- Prepare for 1.2 release candidate. (Sam Roberts)\r\n- Bump libnet versions in preparation for 1.2 release. (Sam Roberts)\r\n- Cleaned up references to win32 pre-generated headers (Sam Roberts)\r\n- VERSION is ancient and unused (Barak A. Pearlmutter)\r\n- autoupdate configure.ac (Barak A. Pearlmutter)\r\n- Simplify autogen.sh (suggested by Barak A. Pearlmutter) (Sam Roberts)\r\n- Ignore doxygen javascript output (Sam Roberts)\r\n- remove autoreconf-installed file (Barak A. Pearlmutter)\r\n- Use +AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER (Sam Roberts)\r\n- Automatic link options (\"#pragma comment(lib, ...)\") are only for MSVC (ThomasVolkert)\r\n- Added guards around definitions of _GNU_SOURCE to avoid redefinitions (ThomasVolkert)\r\n- Avoids several warnings for MS C/C++ compiler (ThomasVolkert)\r\n- libnet_open_raw4 doesn't return a SOCKET on win32 (Sam Roberts)\r\n- Remove unused STDOUT_FILENO, and dead code that used to use it. (Sam Roberts)\r\n- Removed references to removed win32/in_systm.h (Sam Roberts)\r\n- git ignore doxygen output (Sam Roberts)\r\n- Remove automake reference to win32 header that has been removed. (Sam Roberts)\r\n- Fixes error messages sometimes include newline, sometimes not. (Sam Roberts)\r\n- Properly set l->err_buf if libnet_ifaddrlist() fails. (Thomas Habets)\r\n- Pass build errors to caller of batch files. (Sam Roberts)\r\n- dlpi: Try harder to find the device for the interface. (Thomas Habets)\r\n- dlpi: Correctly extract the unit number from devices with numbers in their name. (Thomas Habets)\r\n- Make interface selection work for interfaces with multiple addresses on them. (Sam Roberts)\r\n- memory leak fixed, device list needs to freed after use (Sam Roberts)\r\n- uint32 address properly initialized with an address (Sam Roberts)\r\n- Reformatted and commented win32 specific code. (Sam Roberts)\r\n- Interface selection was ignoring interfaces with ipv6. (Sam Roberts)\r\n- Use simple batch file to build for win32. (Sam Roberts)\r\n- Use LIBNET_API on public functions, instead of an export file. (Sam Roberts)\r\n- Note about libnet_get_prand being secure only on windows. (Sam Roberts)\r\n- ignore visual studio output artifacts (Sam Roberts)\r\n- Don't need iphlpapi.h included. (Sam Roberts)\r\n- Libnet.vcxproj file gained a ProjectGUID property. Hm. (Sam Roberts)\r\n- visual studio 2010 project files (Sam Roberts)\r\n- Convert uses of non-standard uint to uint32_t. (Sam Roberts)\r\n- Compiled on win32 with Visual Studio 2010. (Sam Roberts)\r\n- Add build instructions for Visual Studio 2010 (Sam Roberts)\r\n- Documentation typo, valid should be invalid. (Sam Roberts)\r\n- Replace usage of non-standard uint type with uint32_t. (Sam Roberts)\r\n- define INET6 on IRIX, making libnet compile cleanly. (Thomas Habets)\r\n- Use LIBNET_BSDISH_OS and LIBNET_BSD_BYTE_SWAP on all darwin architectures. (Kimmo Suominen)\r\n- Added BSD byteswap for Darwin. Otherwise sendto() returns EINVAL (Emilio Escobar)\r\n- Use a common header to trim cut and paste include blocks. (Sam Roberts)\r\n- netinet/in.h is needed for IPPROTO_ and sockaddr_in (reported by Dirk Meyer) (Sam Roberts)\r\n" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/20336084", + "assets_url": "https://api.github.com/repos/libnet/libnet/releases/20336084/assets", + "upload_url": "https://uploads.github.com/repos/libnet/libnet/releases/20336084/assets{?name,label}", + "html_url": "https://github.com/libnet/libnet/releases/tag/v1.1.3", + "id": 20336084, + "node_id": "MDc6UmVsZWFzZTIwMzM2MDg0", + "tag_name": "v1.1.3", + "target_commitish": "master", + "name": "libnet v1.1.3", + "draft": false, + "author": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2009-05-12T00:27:12Z", + "published_at": "2019-09-29T17:22:53Z", + "assets": [ + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194618", + "id": 15194618, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NjE4", + "name": "libnet-1.1.3.tar.gz", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 1204575, + "download_count": 8, + "created_at": "2019-09-29T17:22:31Z", + "updated_at": "2019-09-29T17:22:33Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.1.3/libnet-1.1.3.tar.gz" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194617", + "id": 15194617, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NjE3", + "name": "libnet-1.1.3.tar.gz.md5", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 54, + "download_count": 3, + "created_at": "2019-09-29T17:22:31Z", + "updated_at": "2019-09-29T17:22:31Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.1.3/libnet-1.1.3.tar.gz.md5" + } + ], + "tarball_url": "https://api.github.com/repos/libnet/libnet/tarball/v1.1.3", + "zipball_url": "https://api.github.com/repos/libnet/libnet/zipball/v1.1.3", + "body": "Merged 1.1.3 release candidate from packet factory, 1.1.2, debian patches, and\r\nmy own fixes, including bugs causing memory corruption:\r\n\r\n- Fixed various errors, including memory corruption, when IPv4 options are\r\n modified. (Sam Roberts)\r\n- Convert from latin-1 to utf-8, from Robert Scheck. (Sam Roberts)\r\n- Fixed doxygen errors and warnings, and added a deveoper script to prepare\r\n libnet. (Sam Roberts)\r\n- Removed CVS crud, again. (Sam Roberts)\r\n- Applied autotools cleanup patch from Stefanos. (Sam Roberts)\r\n- Applied patch from Stefanos to remove the autotools ephemera that leaked\r\n back in. (Sam Roberts)\r\n- Patches from Stefanos. (Sam Roberts)\r\n- Updated .so revision to be one backwards compatible interface after\r\n 1.1.2.1-fork's. (Sam Roberts)\r\n- Fix for debian bug# 418975, IPv6 wasn't updating ip_offset. See\r\n http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=418975 and sample\r\n test_ipv6_icmpv4.c for more information, and reproduction. (Sam Roberts)\r\n- merged autogen.sh from 1.1.3, now ltmain.sh comes from autogen.sh (Sam\r\n Roberts)\r\n- 802.1Q and 802.1X header documentation was incorrectly using /** /** is\r\n reserved for doxygen documentation comments, and they didn't have any.\r\n That those packet headers, and no others, were marked that way was\r\n causing man pages to be generated for them, incomplete man pages that\r\n then were being hacked by debian patches 02- and 03-. (Sam Roberts)\r\n- Update .so version to be one src change past the last debian release.\r\n Debian patches to v1.1.2.1 used 4:0:3, in error, so we use 5:0:4, as per\r\n the rules. See Makefile.am comments for reference. (Sam Roberts)\r\n- Bug fixes and reproduction code for ip_offset accounting problem in\r\n libnet_build_ipv4 (Sam Roberts)\r\n- doxygen configuration updated, html seems fine - I don't know about the\r\n man pages. (Sam Roberts)\r\n- autotools merged from v1.1.3 to v1.1.2 (Sam Roberts)\r\n- Remove autotools. And some garbage local files that should not have been\r\n in upstream tarball. (Sam Roberts)\r\n- Removed object files and cvs conflict residue contained in original\r\n package. (Sam Roberts)\r\n- debian patch 06 attempts to free the wrong pointer, and also leaks memory\r\n from the inner loop. (Sam Roberts)\r\n- libnet (inconsistently) uses various signed and/or unsigned typedefs\r\n instead of char ANSI C uses char for string literals and the standard\r\n library, so this generates many warnings. I've fixed a number of the\r\n places where types representing null-terminated strings weren't typed\r\n correctly. (Sam Roberts)\r\n- 09-fix_hurd-i386_build.patch from debian source package See\r\n http://packages.debian.org/source/sid/libnet (Sam Roberts)\r\n- 08-fix_libnet_checksum.c.patch from debian source package See\r\n http://packages.debian.org/source/sid/libnet (Sam Roberts)\r\n- 07-add_libnet-cq-end-loop.patch from debian source package See\r\n http://packages.debian.org/source/sid/libnet (Sam Roberts)\r\n- 06-fix_libnet_pblock_coalesce_leak.patch from debian source package See\r\n http://packages.debian.org/source/sid/libnet (Sam Roberts)\r\n- 04-fix_libnet_build_ntp.patch from debian source package See\r\n http://packages.debian.org/source/sid/libnet (Sam Roberts)\r\n- 03-fix_libnet_802_1x_hdr.3.patch from debian source package See\r\n http://packages.debian.org/source/sid/libnet (Sam Roberts)\r\n- 02-fix_libnet_802_1q_hdr.3.patch See\r\n http://packages.debian.org/source/sid/libnet (Sam Roberts)\r\n- 01-fix_libnet-functions.h.3.patch from debian source package See\r\n http://packages.debian.org/source/sid/libnet (Sam Roberts)\r\n- strip CVS subdirectories from upstream package (Sam Roberts)\r\n- Added a libnet_version() function\r\n- Fixed a bug in libnet_build_ntp() where two arguments werent used due to a typo\r\n- Fixed a bug ln libnet_name2addr4 in which it didnt call hstrerror\r\n- Fixed a memory leak in libnet_if_addr.c\r\n- Internals:\r\n - added a payload builder macro\r\n - Added an HSRP builder\r\n- Fixed the cdp.c sample code\r\n- Added AC_PREREQ(2.50) to configure.in to come correct\r\n- Added a libnet udp header prototype. We need to add an entire exported\r\n interface for the sole purpose of casting captured packets, this will\r\n presumably be a part of the pcap integration.\r\n- Added libnet_adv_write_raw_ipv4()\r\n- Fixed the checksum function\r\n- Updated the autoconf/automake stuff to be up to date with the latest\r\n versions. We now use libtool.\r\n- Fixed a signed/unsigned comparison warning in the LIBNET_DO_PAYLOAD() macro\r\n- Changed all empty function prototypes to contain the void keyword\r\n- Removed all C++ style comments\r\n- Removed the configure.in check for strerror() \r\n" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/20336058", + "assets_url": "https://api.github.com/repos/libnet/libnet/releases/20336058/assets", + "upload_url": "https://uploads.github.com/repos/libnet/libnet/releases/20336058/assets{?name,label}", + "html_url": "https://github.com/libnet/libnet/releases/tag/v1.1.4", + "id": 20336058, + "node_id": "MDc6UmVsZWFzZTIwMzM2MDU4", + "tag_name": "v1.1.4", + "target_commitish": "master", + "name": "libnet v1.1.4", + "draft": false, + "author": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2009-06-09T23:22:50Z", + "published_at": "2019-09-29T17:19:28Z", + "assets": [ + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194591", + "id": 15194591, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NTkx", + "name": "libnet-1.1.4.tar.gz", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 1204502, + "download_count": 7, + "created_at": "2019-09-29T17:19:25Z", + "updated_at": "2019-09-29T17:19:27Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.1.4/libnet-1.1.4.tar.gz" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194590", + "id": 15194590, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NTkw", + "name": "libnet-1.1.4.tar.gz.md5", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 54, + "download_count": 4, + "created_at": "2019-09-29T17:19:25Z", + "updated_at": "2019-09-29T17:19:26Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.1.4/libnet-1.1.4.tar.gz.md5" + } + ], + "tarball_url": "https://api.github.com/repos/libnet/libnet/tarball/v1.1.4", + "zipball_url": "https://api.github.com/repos/libnet/libnet/zipball/v1.1.4", + "body": "- Strip CRLF from files not in win32/ (Robert Scheck)\r\n- libnet was using HAVE_CONFIG_H in a public header in order to deal with platform types. \r\n https://bugzilla.redhat.com/show_bug.cgi?id=501633\r\n- Patch to libnet.h.in for compilation on HURD (David Paleino)" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/20336048", + "assets_url": "https://api.github.com/repos/libnet/libnet/releases/20336048/assets", + "upload_url": "https://uploads.github.com/repos/libnet/libnet/releases/20336048/assets{?name,label}", + "html_url": "https://github.com/libnet/libnet/releases/tag/v1.1.5", + "id": 20336048, + "node_id": "MDc6UmVsZWFzZTIwMzM2MDQ4", + "tag_name": "v1.1.5", + "target_commitish": "master", + "name": "libnet v1.1.5", + "draft": false, + "author": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2010-11-03T20:44:39Z", + "published_at": "2019-09-29T17:18:30Z", + "assets": [ + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194577", + "id": 15194577, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NTc3", + "name": "libnet-1.1.5.tar.gz", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 1190258, + "download_count": 8, + "created_at": "2019-09-29T17:18:26Z", + "updated_at": "2019-09-29T17:18:28Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.1.5/libnet-1.1.5.tar.gz" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194576", + "id": 15194576, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NTc2", + "name": "libnet-1.1.5.tar.gz.md5", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 54, + "download_count": 5, + "created_at": "2019-09-29T17:18:26Z", + "updated_at": "2019-09-29T17:18:27Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.1.5/libnet-1.1.5.tar.gz.md5" + } + ], + "tarball_url": "https://api.github.com/repos/libnet/libnet/tarball/v1.1.5", + "zipball_url": "https://api.github.com/repos/libnet/libnet/zipball/v1.1.5", + "body": "- IRIX: Get MAC address from ioctl(), not by spawning shell. (Thomas Habets)\r\n- Compile fix for IRIX (added includes) (Thomas Habets)\r\n- Don't explicitly check for UID 0, we may have capabilities even if not root. (Thomas Habets) (Sam Roberts)\r\n- Cleaned up implementations of libnet_get_hwaddr(), some leaked memory, one returned a pointer to data on the stack, and the others return a pointer to static data. I'm settling on the non-reentrant static data form. (Sam Roberts)\r\n- Visual C++ compiler(v9.0) uses bitfield type as a hint to pad the bitfield, so struct was too long. (Sam Roberts)\r\n- Further simplify autogen.sh (Sam Roberts)\r\n- Removed dependency on net/bpf.h, and on pcap.h. (Sam Roberts)\r\n- LBL_ALIGN check is unused, removing. (Sam Roberts)\r\n- Don't include pcap.h if we've already got net/bpf.h, pcap has it's own bpf. (Sam Roberts)\r\n- Make libnet_get_hwaddr work in the last few releases of OpenBSD (stu@spacehopper.org) (Sam Roberts)\r\n- Get DLT types from the source, . (Sam Roberts)\r\n- Use autoconf -ivf in autogen.sh (suggested by alon.barlev@gmail.com) (Sam Roberts)\r\n- Don't distribute libnet.h, it is generated by configure (alon.barlev@gmail.com) (Sam Roberts)\r\n- AIX build failures fixed, cause was inclusion of system headers libnet no longer uses (alon.barlev@gmail.com) (Sam Roberts)\r\n- Add a link to the old docs. (Sam Roberts)\r\n- Added links to github and sourceforge. (Sam Roberts)\r\n- Replace C99/C++ comments with traditional C comments. (alon.barlev@gmail.com) (Sam Roberts)\r\n- checksum would segfault if a IP checksum was requested for a non-ipv4 header (Sam Roberts)\r\n- Closer backwards compat, assume its ipv4 if it's not ipv6. This seems totally wrong, but so it goes. (Sam Roberts)\r\n- Try using the ip_len header field to guess the input buffer's size. (Sam Roberts)\r\n- libnet_do_checksum(), despite being \"internal\", is used by external code. libnet needs to maintain backwards API compatibility, tcpsic from the isic package is an example of a binary failing when calling the new API with the old arguments. (Sam Roberts)\r\n- merged icmpv6 patch in, but I believe either it or the sample/icmp6_unreach generates the cksum incorrectly (victor@inliniac.net) (Sam Roberts)\r\n- Use libtool-1 or libtool-2 whatever available (alon.barlev@gmail.com) (Sam Roberts)\r\n- Avoid looking at /dev and /usr/include when cross-compiling (alon.barlev@gmail.com) Alon: The following code support cross compiling: 1. You CANNOT check for /usr/include stuff as cross compiler is installed else-where. Autoconf know how to do this, use its header detection logic and ask the result. 2. Testing for /dev/ can be done only when not cross compiling... (Sam Roberts)\r\n- Corrected target_os check, it was broke for linuxgnu, and m4 syntax was invalid (alon.barlev@gmail.com) Alon:The following change is needed in order to solve two issues: 1. linuxgnu and such target os. 2. You cannot set variable with space before '=' as it tries to execute the variable... 3. Print result of test in case of linux (Sam Roberts)\r\n- --with-link-layer broken, was using wrong macro name, and didn't include all link types (Sam Roberts)\r\n- ac_cv_c_bigendian is yes, not \"big\" (alon.barlev@gmail.com) (Sam Roberts)\r\n- Remove dead code. (Sam Roberts)\r\n- h_len is calculated for ip, udp, tcp, icmp, and igmp, so is allowed to be zero. (Sam Roberts)\r\n- libnet_t's fd should be initialized to an invalid value, or libnet_destroy() will close stdin. (Sam Roberts)\r\n- Alon's use of AC_CHECK_HEADERS fails to detect headers. Reverted part of 57acd56f09158decb69f301e7547ce8cde6ac63f (Sam Roberts)\r\n- With link_none, the link apis were failing with not error message. (Sam Roberts)\r\n- man doc makefile wasn't correctly referring to the srcdir (alon.barlev@gmail.com) (Sam Roberts)\r\n- Avoid mallocing zero bytes, it perturbs electric fence. (Sam Roberts)\r\n- autotools patches for cross compiling and seperate builddir (alon.barlev@gmail.com) (Sam Roberts)\r\n- html doc makefile wasn't correctly referring to the srcdir (alon.barlev@gmail.com) (Sam Roberts)\r\n- ip_offset is now calculated on the fly, and UDP and TCP no longer use h_len (Sam Roberts)\r\n- IP offset calculation should allow nesting of IP protocols. (Sam Roberts)\r\n- Remove gccisms in bitfield definitions. (Sam Roberts)\r\n- injection type of LIBNET_NONE, for packet construction without injection (also, more const correctness) (Sam Roberts)\r\n- Notes about checksumming. (Sam Roberts)\r\n- libnet_build_tcp was not returning the ptag. (Sam Roberts)\r\n- Packet boundaries are now passed to _do_checksum(), so it can validate its input. Hopefully, this will end the recurring segmentation faults due to buffer overruns. (Sam Roberts)\r\n- TCP building is triggering memory overwrites; closer examination shows the link list manipulation to be wrong, and the checksumming approach to be incapable of working. I reworked code to simplify and clarify how it works currently, in preparation to fixing it. (Sam Roberts)\r\n- Updated comments and notes. (Sam Roberts)\r\n- Null the pointer in the about-to-be-freed structure, not the one on the stack. (Sam Roberts)\r\n- Added missing pblock types, and made strings consistent with definitions. (Sam Roberts)\r\n- Change version policy, we will be 1.1.4 until 1.1.5 is released. (Sam Roberts)\r\n- Bring CHANGELOG up to date with today, and script used to generated it. (Sam Roberts)\r\n- Begin implementation and tests for repairing pblocks after an update. (Sam Roberts)\r\n- libnet_pblock_insert_before() didn't remove ptag2 from old location (Sam Roberts)\r\n- Clarifications in document comments. (Sam Roberts)\r\n- Don't doxygen process internal header libnet-headers.h (Sam Roberts)\r\n- Declared many constant arguments as const, const-correct code spews warnings when built against libnet. (Sam Roberts)\r\n- Include pcap DLT_ types from correct header, was using an internal one before. (Sam Roberts)\r\n- Declared many constant arguments as const, const-correct code spews warnings when built against libnet. (Sam Roberts)\r\n- Note about build_data, which doesn't update ip_offset, among other problems. (Sam Roberts)\r\n- libnet_clear_packet() wasn't clearing all packet context. (Sam Roberts)\r\n- Why don't TCP and UDP use the DATA pblock type? (Sam Roberts)\r\n- whitespace cleanup (Sam Roberts)\r\n- Add libnet_dll.c as extra, so its there for win32, and build libnet_link.c (Sam Roberts)\r\n- This file wasn't being built, and needed to include bpf to build. (Sam Roberts)\r\n- Forgot to make device a const string here, too. (Sam Roberts)\r\n- make string argument constant (Sam Roberts)\r\n- only ignore Makefile in libnet/ (Sam Roberts)\r\n- Replace u_intX_t with C99 uintX_t. (Thomas Habets)\r\n- pclose() following popen(), not fclose() (Thomas Habets)\r\n- snoof & dlpi: don't free on libnet_link_close() (Thomas Habets)\r\n- Summarize changes for log. (Sam Roberts)\r\n- Reindented, removing hard tabs, and using consistent brace positioning. (Sam Roberts)\r\n- The non-standard types are no longer used. (Sam Roberts)\r\n- /sw/.. path doesn't always exist (Sam Roberts)\r\n- src/libnet_link_snoop.c: Only fclose if f!=NULL (Thomas Habets)\r\n- src/libnet_link_snoop.c: fixed snoop-based backend. Works on IRIX. (Thomas Habets)\r\n- Use uint64_t, not u_int64_t (Thomas Habets)\r\n- define a lying gethostbyname2() if it's not defined (Thomas Habets)\r\n- define STDOUT_FILENO if it's not defined (Thomas Habets)\r\n- configure.in: check for gethostbyname2 (Thomas Habets)\r\n- configure.in: Check for uint{16,32,64}_t (Thomas Habets)\r\n- Configure switch to install samples (Sam Roberts)\r\n- Attempt at applying a patch to get installable samples, which doesn't work. (Sam Roberts)\r\n- Pointers not cleared after free could lead to double deallocation. (Sam Roberts)\r\n- Convert CRLF to LF. (Sam Roberts)\r\n- Auto* changes to work on OS X from git checkout. (Sam Roberts)\r\n- Update autobuild endianness and unaligned checks. (Mike Frysinger) (Sam Roberts)\r\n- Add srcdir to include path. (Sam Roberts)\r\n- Adjust srcdir and builddir so libnet can build out-of-tree (Robin Getz/Mike Frysinger) (Sam Roberts)\r\n- Beginning 1.1.5 development. (Sam Roberts)\r\n" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/20336031", + "assets_url": "https://api.github.com/repos/libnet/libnet/releases/20336031/assets", + "upload_url": "https://uploads.github.com/repos/libnet/libnet/releases/20336031/assets{?name,label}", + "html_url": "https://github.com/libnet/libnet/releases/tag/v1.1.6", + "id": 20336031, + "node_id": "MDc6UmVsZWFzZTIwMzM2MDMx", + "tag_name": "v1.1.6", + "target_commitish": "master", + "name": "libnet v1.1.6", + "draft": false, + "author": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2012-03-29T21:22:09Z", + "published_at": "2019-09-29T17:16:51Z", + "assets": [ + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194559", + "id": 15194559, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NTU5", + "name": "libnet-1.1.6.tar.gz", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/gzip", + "state": "uploaded", + "size": 1202970, + "download_count": 73, + "created_at": "2019-09-29T17:16:17Z", + "updated_at": "2019-09-29T17:16:18Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.1.6/libnet-1.1.6.tar.gz" + }, + { + "url": "https://api.github.com/repos/libnet/libnet/releases/assets/15194564", + "id": 15194564, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1MTk0NTY0", + "name": "libnet-1.1.6.tar.gz.md5", + "label": null, + "uploader": { + "login": "troglobit", + "id": 183517, + "node_id": "MDQ6VXNlcjE4MzUxNw==", + "avatar_url": "https://avatars0.githubusercontent.com/u/183517?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/troglobit", + "html_url": "https://github.com/troglobit", + "followers_url": "https://api.github.com/users/troglobit/followers", + "following_url": "https://api.github.com/users/troglobit/following{/other_user}", + "gists_url": "https://api.github.com/users/troglobit/gists{/gist_id}", + "starred_url": "https://api.github.com/users/troglobit/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/troglobit/subscriptions", + "organizations_url": "https://api.github.com/users/troglobit/orgs", + "repos_url": "https://api.github.com/users/troglobit/repos", + "events_url": "https://api.github.com/users/troglobit/events{/privacy}", + "received_events_url": "https://api.github.com/users/troglobit/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/octet-stream", + "state": "uploaded", + "size": 54, + "download_count": 7, + "created_at": "2019-09-29T17:16:49Z", + "updated_at": "2019-09-29T17:16:50Z", + "browser_download_url": "https://github.com/libnet/libnet/releases/download/v1.1.6/libnet-1.1.6.tar.gz.md5" + } + ], + "tarball_url": "https://api.github.com/repos/libnet/libnet/tarball/v1.1.6", + "zipball_url": "https://api.github.com/repos/libnet/libnet/zipball/v1.1.6", + "body": "- Note about why including libnet.h breaks dnet.h/dumbnet.h (Sam Roberts)\r\n- Prepare for 1.1.6-rc3. (Sam Roberts)\r\n- Only use getifaddrs() if it exists. (reported by Dagobert Michelsen) (Sam Roberts)\r\n- Clean up use of single and bracket quotes. (Sam Roberts)\r\n- FreeBSD and Solaris volunteers to contibute. (Sam Roberts)\r\n- ICMPv6 struct is too long, so use length macro (sickmind@lavabit.com) (Sam Roberts)\r\n- ICMPv6 pblock sizes are needed to calculate IPv6's ip_len (reported by sickmind@lavabit.com) (Sam Roberts)\r\n- Prep for 1.1.6 release, such as bumping version (Sam Roberts)\r\n- Add people who have volunteered to check release candidates. (Sam Roberts)\r\n- Rework libnet_autobuild_ipv6() to eliminate code duplication. (Sam Roberts)\r\n- Implemented libnet_autobuild_ipv6() (repolho)\r\n- Implemented unix version of libnet_get_ipaddr6() (repolho)\r\n- Reintroduce libnet_pblock_record_ip_offset() which is empty. (Sam Roberts)\r\n- Make clear that all contributions are under libnet copyright. (Sam Roberts)\r\n- Fix doc comment format errors reported by doxygen. (Sam Roberts)\r\n- Update for doxygen 1.7.4. (Sam Roberts)\r\n- Note that PORTED is no longer maintained. (Sam Roberts)\r\n- Note that CONTRIB is no longer maintained. (Sam Roberts)\r\n- Prep for upcoming 1.1.6 release. (Sam Roberts)\r\n- Remove BUGS, it referred to non-existent code. (Sam Roberts)\r\n- Reworked icmpv6 patch to parallel the form of icmpv4 support. (Sam Roberts)\r\n- Don't depend on netinet/ip.h. (Sam Roberts)\r\n- Remove unused variable. (Sam Roberts)\r\n- Support building ICMPv6 packets. (someone)\r\n- Fixed typo in error message. (Thomas Habets)\r\n- Use SO_BINDTODEVICE to force packets out opened device. (someone)\r\n- Always use an IPPROTO of TCP when calculating TCP checksums. (Sam Roberts)\r\n- Use correct addr type for addrlen calculation. (someone)\r\n- libnet_build_igmp reserved field was mistakenly called 'code' (Sam Roberts)\r\n- Documentation doesn't include any gif files. (Sam Roberts)\r\n- Enable IPV6 support on Solaris 11. (Rich Burridge)\r\n- Trying to fix write errors (Víctor Martínez)\r\n- Presence of linux's PF_PACKET sockets is now detected. The acinclude.m4 merged in from packetfactory's 1.1.3-rc branch mysteriously assumed that that there was no PF_PACKET if the target OS was linux, which is the opposite of what we want. (Sam Roberts)\r\n- Fix libnet_build_igmp() to not reverse the order of the ip address. libnet APIs that take IP addresses as a uint32_t expect them to already be in network byte order. (Sam Roberts)\r\n- pblock_append deals with raw memory and structs, so declare it correctly (Sam Roberts)\r\n- Clarified types and sizes of DHCP/BOOTP chaddr, sname, and file. chaddr is a hardware address, with size specified seperately, whereas sname and file are null terminated strings. (Sam Roberts)\r\n- Explicitly ignore return value of write (some systems now warn about this). (Sam Roberts)\r\n- Synchronize comment about h_len with parameter name in function. (Sam Roberts)\r\n- Fixes a buffer overflow issue when copying chaddr, file, and sname fields to the DHCP header. (allfro)\r\n- Fixes improper calculation of header size when libnet_pblock_probe is called. payload_s must be added to the header length in order to accommodate for the existence of a non-NULL payload. Otherwise the user is prompted with a 'memcpy would cause overflow' error and the program exits. (allfro)\r\n- Fixes incorrect memory block size set in the timeexceed and redirect builders. The n variable does not add the size of the payload (payload_s) for proper allocation of the buffer when payload is not NULL and payload_s is greater than 0. This results in a memcpy buffer overflow error when libnet_pblock_append is called exiting the program. (allfro)\r\n- Fixes a bug that incorrectly converts the addr, mask, and next_hop fields to network byte order. Users will usually call libnet_name2addr4 to fill these fields and this function already provides a network byte-ordered value. (allfro)\r\n- snap parameter was getting copied into the dhost field. (Sam Roberts)\r\n- h_len is no longer used, so pass zero. Coverity noticed that stack garbage was being passed instead of a valid value, its just that the value isn't used, and incluing l->total_size is wrong when the pblock is being updated (though it will work on pblock creation). (Sam Roberts)\r\n- Length n should include the value_hdr. (Sam Roberts)\r\n- Coverity: UNINIT (Jiri Popelka)\r\n- Coverity: REVERSE_INULL (Jiri Popelka)\r\n- Coverity: RESOURCE_LEAK (Jiri Popelka)\r\n- Coverity: OVERRUN_STATIC (Jiri Popelka)\r\n- Coverity: OVERRUN_STATIC (Jiri Popelka)\r\n- Coverity: OVERRUN_STATIC (Jiri Popelka)\r\n- Coverity: FORWARD_NULL (Jiri Popelka)\r\n- Coverity: FORWARD_NULL (Jiri Popelka)\r\n- Coverity: CHECKED_RETURN (Jiri Popelka)\r\n- mkinstalldirs is replaced by autogen.sh. Maybe it shouldn't be checked in? (Sam Roberts)\r\n- autogen retries if /sw/... doesn't exist (Sam Roberts)\r\n- build_ipv6: set higher traffic class bits (Ulrich Weber)\r\n- Fix missing uint instead of u_int (Dagobert Michelsen)\r\n" + } + ] +query_type: api.github.releases -- Gitee From 192444c0ce3ede4f3d602416a3fc17d112878c4f Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Wed, 3 Jun 2020 09:33:32 +0000 Subject: [PATCH 10/14] fix lint issue --- upstream-info/bcc.yaml | 484 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 484 insertions(+) create mode 100644 upstream-info/bcc.yaml diff --git a/upstream-info/bcc.yaml b/upstream-info/bcc.yaml new file mode 100644 index 00000000..a663d3c5 --- /dev/null +++ b/upstream-info/bcc.yaml @@ -0,0 +1,484 @@ +--- +version_control: github +src_repo: iovisor/bcc +tag_prefix: "^v" +seperator: "." +last_query: + time_stamp: 2020-06-03 01:08:07.148763000 +00:00 + raw_data: | + [ + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/25706598", + "assets_url": "https://api.github.com/repos/iovisor/bcc/releases/25706598/assets", + "upload_url": "https://uploads.github.com/repos/iovisor/bcc/releases/25706598/assets{?name,label}", + "html_url": "https://github.com/iovisor/bcc/releases/tag/v0.14.0", + "id": 25706598, + "node_id": "MDc6UmVsZWFzZTI1NzA2NTk4", + "tag_name": "v0.14.0", + "target_commitish": "master", + "name": "bcc release v0.14.0", + "draft": false, + "author": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2020-04-21T02:35:51Z", + "published_at": "2020-04-21T02:48:41Z", + "assets": [ + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/assets/20012140", + "id": 20012140, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDEyMTQw", + "name": "bcc-src-with-submodule.tar.gz", + "label": null, + "uploader": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-gzip", + "state": "uploaded", + "size": 4284735, + "download_count": 1135, + "created_at": "2020-04-21T02:48:23Z", + "updated_at": "2020-04-21T02:48:32Z", + "browser_download_url": "https://github.com/iovisor/bcc/releases/download/v0.14.0/bcc-src-with-submodule.tar.gz" + }, + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/assets/20012142", + "id": 20012142, + "node_id": "MDEyOlJlbGVhc2VBc3NldDIwMDEyMTQy", + "name": "bcc-src-with-submodule.zip", + "label": null, + "uploader": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5503066, + "download_count": 41, + "created_at": "2020-04-21T02:48:32Z", + "updated_at": "2020-04-21T02:48:36Z", + "browser_download_url": "https://github.com/iovisor/bcc/releases/download/v0.14.0/bcc-src-with-submodule.zip" + } + ], + "tarball_url": "https://api.github.com/repos/iovisor/bcc/tarball/v0.14.0", + "zipball_url": "https://api.github.com/repos/iovisor/bcc/zipball/v0.14.0", + "body": " * Support for kernel up to 5.6\r\n * new tools: biolatpcts.py\r\n * libbpf-tools: tools based on CORE and libbpf library directly\r\n * add --cgroupmap to various tools, filtering based cgroup\r\n * support kfunc (faster kprobe) for vfsstat, klockstat and opensnoop\r\n * lots of bug fixes and a few additional arguments for tools" + }, + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/23828053", + "assets_url": "https://api.github.com/repos/iovisor/bcc/releases/23828053/assets", + "upload_url": "https://uploads.github.com/repos/iovisor/bcc/releases/23828053/assets{?name,label}", + "html_url": "https://github.com/iovisor/bcc/releases/tag/v0.13.0", + "id": 23828053, + "node_id": "MDc6UmVsZWFzZTIzODI4MDUz", + "tag_name": "v0.13.0", + "target_commitish": "master", + "name": "bcc release v0.13.0", + "draft": false, + "author": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2020-02-20T05:00:09Z", + "published_at": "2020-02-20T05:03:11Z", + "assets": [ + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/assets/18163825", + "id": 18163825, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE4MTYzODI1", + "name": "bcc-src-with-submodule.tar.gz", + "label": null, + "uploader": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-gzip", + "state": "uploaded", + "size": 4188783, + "download_count": 1499, + "created_at": "2020-02-20T06:28:53Z", + "updated_at": "2020-02-20T06:29:02Z", + "browser_download_url": "https://github.com/iovisor/bcc/releases/download/v0.13.0/bcc-src-with-submodule.tar.gz" + }, + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/assets/18163828", + "id": 18163828, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE4MTYzODI4", + "name": "bcc-src-with-submodule.zip", + "label": null, + "uploader": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 5369609, + "download_count": 30, + "created_at": "2020-02-20T06:29:02Z", + "updated_at": "2020-02-20T06:29:06Z", + "browser_download_url": "https://github.com/iovisor/bcc/releases/download/v0.13.0/bcc-src-with-submodule.zip" + } + ], + "tarball_url": "https://api.github.com/repos/iovisor/bcc/tarball/v0.13.0", + "zipball_url": "https://api.github.com/repos/iovisor/bcc/zipball/v0.13.0", + "body": "* Support for kernel up to 5.5\r\n* bindsnoop tool to track tcp/udp bind information\r\n* added compile-once run-everywhere based libbpf-tools, currently\r\n only runqslower is implemented.\r\n * new map support: sockhash, sockmap, sk_storage, cgroup_storage\r\n* enable to run github actions on the diff\r\n* cgroupmap based cgroup filtering for opensnoop, execsnoop and bindsnoop.\r\n * lots of bug fixes." + }, + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/22129931", + "assets_url": "https://api.github.com/repos/iovisor/bcc/releases/22129931/assets", + "upload_url": "https://uploads.github.com/repos/iovisor/bcc/releases/22129931/assets{?name,label}", + "html_url": "https://github.com/iovisor/bcc/releases/tag/v0.12.0", + "id": 22129931, + "node_id": "MDc6UmVsZWFzZTIyMTI5OTMx", + "tag_name": "v0.12.0", + "target_commitish": "master", + "name": "bcc release v0.12.0", + "draft": false, + "author": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-12-11T01:19:36Z", + "published_at": "2019-12-11T01:21:33Z", + "assets": [ + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/assets/16723025", + "id": 16723025, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2NzIzMDI1", + "name": "bcc-src-with-submodule.tar.gz", + "label": null, + "uploader": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-gzip", + "state": "uploaded", + "size": 2862854, + "download_count": 628, + "created_at": "2019-12-11T01:33:31Z", + "updated_at": "2019-12-11T01:33:39Z", + "browser_download_url": "https://github.com/iovisor/bcc/releases/download/v0.12.0/bcc-src-with-submodule.tar.gz" + }, + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/assets/16723026", + "id": 16723026, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE2NzIzMDI2", + "name": "bcc-src-with-submodule.zip", + "label": null, + "uploader": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3418871, + "download_count": 38, + "created_at": "2019-12-11T01:33:31Z", + "updated_at": "2019-12-11T01:33:41Z", + "browser_download_url": "https://github.com/iovisor/bcc/releases/download/v0.12.0/bcc-src-with-submodule.zip" + } + ], + "tarball_url": "https://api.github.com/repos/iovisor/bcc/tarball/v0.12.0", + "zipball_url": "https://api.github.com/repos/iovisor/bcc/zipball/v0.12.0", + "body": " the main changes from v0.11.0 to v0.12.0 tag:\r\n * Support for kernel up to 5.4\r\n * klockstat tool to track kernel mutex lock statistics\r\n * cmake option CMAKE_USE_LIBBPF_PACKAGE to build a bcc shared library\r\n linking with distro libbpf_static.a\r\n * new map.lookup_or_try_init() API to remove hidden return in\r\n map.lookup_or_init()\r\n * BPF_ARRAY_OF_MAPS and BPF_HASH_OF_MAPS support\r\n * support symbol offset for uprobe in both C++ and python API,\r\n kprobe already has the support\r\n * bug fixes for trace.py, tcpretrans.py, runqslower.py, etc." + }, + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/20450992", + "assets_url": "https://api.github.com/repos/iovisor/bcc/releases/20450992/assets", + "upload_url": "https://uploads.github.com/repos/iovisor/bcc/releases/20450992/assets{?name,label}", + "html_url": "https://github.com/iovisor/bcc/releases/tag/v0.11.0", + "id": 20450992, + "node_id": "MDc6UmVsZWFzZTIwNDUwOTky", + "tag_name": "v0.11.0", + "target_commitish": "master", + "name": "bcc release v0.11.0", + "draft": false, + "author": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": false, + "created_at": "2019-10-03T16:10:36Z", + "published_at": "2019-10-03T16:14:02Z", + "assets": [ + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/assets/15459715", + "id": 15459715, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1NDU5NzE1", + "name": "bcc-src-with-submodule.tar.gz", + "label": null, + "uploader": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/x-gzip", + "state": "uploaded", + "size": 2771630, + "download_count": 190, + "created_at": "2019-10-14T00:09:14Z", + "updated_at": "2019-10-14T00:09:37Z", + "browser_download_url": "https://github.com/iovisor/bcc/releases/download/v0.11.0/bcc-src-with-submodule.tar.gz" + }, + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/assets/15459714", + "id": 15459714, + "node_id": "MDEyOlJlbGVhc2VBc3NldDE1NDU5NzE0", + "name": "bcc-src-with-submodule.zip", + "label": null, + "uploader": { + "login": "yonghong-song", + "id": 12237474, + "node_id": "MDQ6VXNlcjEyMjM3NDc0", + "avatar_url": "https://avatars0.githubusercontent.com/u/12237474?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/yonghong-song", + "html_url": "https://github.com/yonghong-song", + "followers_url": "https://api.github.com/users/yonghong-song/followers", + "following_url": "https://api.github.com/users/yonghong-song/following{/other_user}", + "gists_url": "https://api.github.com/users/yonghong-song/gists{/gist_id}", + "starred_url": "https://api.github.com/users/yonghong-song/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/yonghong-song/subscriptions", + "organizations_url": "https://api.github.com/users/yonghong-song/orgs", + "repos_url": "https://api.github.com/users/yonghong-song/repos", + "events_url": "https://api.github.com/users/yonghong-song/events{/privacy}", + "received_events_url": "https://api.github.com/users/yonghong-song/received_events", + "type": "User", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 3339502, + "download_count": 40, + "created_at": "2019-10-14T00:07:59Z", + "updated_at": "2019-10-14T00:08:31Z", + "browser_download_url": "https://github.com/iovisor/bcc/releases/download/v0.11.0/bcc-src-with-submodule.zip" + } + ], + "tarball_url": "https://api.github.com/repos/iovisor/bcc/tarball/v0.11.0", + "zipball_url": "https://api.github.com/repos/iovisor/bcc/zipball/v0.11.0", + "body": " the main changes from v0.10.0 to v0.11.0 tag:\r\n * Support for kernel up to 5.3\r\n * Corresponding libbpf submodule release is v0.0.5\r\n * Fix USDT issue with multi-threaded applications\r\n * Fixed the early return behavior of lookup_or_init\r\n * Support for nic hardware offload\r\n * Fixed and Enabled Travis CI\r\n * A lot of tools change with added new options, etc." + }, + { + "url": "https://api.github.com/repos/iovisor/bcc/releases/1387155", + "assets_url": "https://api.github.com/repos/iovisor/bcc/releases/1387155/assets", + "upload_url": "https://uploads.github.com/repos/iovisor/bcc/releases/1387155/assets{?name,label}", + "html_url": "https://github.com/iovisor/bcc/releases/tag/v0.1", + "id": 1387155, + "node_id": "MDc6UmVsZWFzZTEzODcxNTU=", + "tag_name": "v0.1", + "target_commitish": "734a3ecbc6c88353938b684fd9503f96868673d0", + "name": "Initial tag", + "draft": false, + "author": { + "login": "drzaeus77", + "id": 3770556, + "node_id": "MDQ6VXNlcjM3NzA1NTY=", + "avatar_url": "https://avatars2.githubusercontent.com/u/3770556?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/drzaeus77", + "html_url": "https://github.com/drzaeus77", + "followers_url": "https://api.github.com/users/drzaeus77/followers", + "following_url": "https://api.github.com/users/drzaeus77/following{/other_user}", + "gists_url": "https://api.github.com/users/drzaeus77/gists{/gist_id}", + "starred_url": "https://api.github.com/users/drzaeus77/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/drzaeus77/subscriptions", + "organizations_url": "https://api.github.com/users/drzaeus77/orgs", + "repos_url": "https://api.github.com/users/drzaeus77/repos", + "events_url": "https://api.github.com/users/drzaeus77/events{/privacy}", + "received_events_url": "https://api.github.com/users/drzaeus77/received_events", + "type": "User", + "site_admin": false + }, + "prerelease": true, + "created_at": "2015-06-05T20:35:39Z", + "published_at": "2015-06-08T05:38:36Z", + "assets": [ + + ], + "tarball_url": "https://api.github.com/repos/iovisor/bcc/tarball/v0.1", + "zipball_url": "https://api.github.com/repos/iovisor/bcc/zipball/v0.1", + "body": "" + } + ] +query_type: api.github.releases -- Gitee From 13226e0e522900849d5c992e1f1f82bca409cd66 Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Wed, 3 Jun 2020 09:34:54 +0000 Subject: [PATCH 11/14] fix lint issue --- simple-update-robot.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/simple-update-robot.py b/simple-update-robot.py index 8d58d5f8..5a1c7744 100755 --- a/simple-update-robot.py +++ b/simple-update-robot.py @@ -39,7 +39,7 @@ def download_source_url(spec, o_ver, n_ver): return False -def download_upstream_url(gt, repo, o_ver, n_ver): +def download_upstream_url(gt, repo, n_ver): """ Download source from upstream metadata URL """ @@ -100,28 +100,24 @@ if __name__ == "__main__": pars.add_argument("-p", "--PR", help="Create upgrade PR", action="store_true") args = pars.parse_args() - gt = gitee.Gitee() - spec_string= gt.get_spec(args.pkg) + my_gitee = gitee.Gitee() + spec_string= my_gitee.get_spec(args.pkg) - spec = Spec.from_string(spec_string) - if len(spec.patches) >= 1: - print("I'm too naive to handle complicated package.") - print("This package has multiple in-house patches.") - sys.exit(1) + s_spec = Spec.from_string(spec_string) if args.fork: - gt.fork_repo(args.pkg) + my_gitee.fork_repo(args.pkg) if args.clone: - subprocess.call(["git", "clone", "git@gitee.com:shinwell_hu/"+args.pkg]) + subprocess.call(["git", "clone", "git@gitee.com:shinwell_hu/" + args.pkg]) os.chdir(args.pkg) if args.download: - source_file = download_source_url(spec, args.old_version, args.new_version) + source_file = download_source_url(s_spec, args.old_version, args.new_version) if source_file: print(source_file) else: - source_file = download_upstream_url(gt, args.pkg, args.old_version, args.new_version) + source_file = download_upstream_url(my_gitee, args.pkg, args.new_version) if source_file: print(source_file) else: @@ -129,7 +125,11 @@ if __name__ == "__main__": sys.exit(1) if args.create_spec: + if len(spec.patches) >= 1: + print("I'm too naive to handle complicated package.") + print("This package has multiple in-house patches.") + sys.exit(1) create_spec(args.pkg, spec_string, args.old_version, args.new_version) if args.PR: - gt.create_pr("shinwell_hu", args.pkg) + my_gitee.create_pr("shinwell_hu", args.pkg) -- Gitee From 5de7bc4b676ebd252e0b192a9d0d593b021b9b10 Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Wed, 3 Jun 2020 10:03:49 +0000 Subject: [PATCH 12/14] move user into json --- simple-update-robot.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/simple-update-robot.py b/simple-update-robot.py index 5a1c7744..e966f3ac 100755 --- a/simple-update-robot.py +++ b/simple-update-robot.py @@ -109,7 +109,8 @@ if __name__ == "__main__": my_gitee.fork_repo(args.pkg) if args.clone: - subprocess.call(["git", "clone", "git@gitee.com:shinwell_hu/" + args.pkg]) + user=my_gitee.token["user"] + subprocess.call(["git", "clone", "git@gitee.com:{user}/{pkg}".format(user=user, pkg=args.pkg)]) os.chdir(args.pkg) if args.download: @@ -132,4 +133,4 @@ if __name__ == "__main__": create_spec(args.pkg, spec_string, args.old_version, args.new_version) if args.PR: - my_gitee.create_pr("shinwell_hu", args.pkg) + my_gitee.create_pr(my_gitee.token["user"], args.pkg) -- Gitee From f1b65e9701ee370b7c8368d8e8a35e0efe060d54 Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Thu, 4 Jun 2020 01:21:30 +0000 Subject: [PATCH 13/14] fix lint issues --- simple-update-robot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simple-update-robot.py b/simple-update-robot.py index e966f3ac..2a05aa11 100755 --- a/simple-update-robot.py +++ b/simple-update-robot.py @@ -126,7 +126,7 @@ if __name__ == "__main__": sys.exit(1) if args.create_spec: - if len(spec.patches) >= 1: + if len(s_spec.patches) >= 1: print("I'm too naive to handle complicated package.") print("This package has multiple in-house patches.") sys.exit(1) -- Gitee From 9b8e77f43f9bd3f43c404f99b730e6f71d361bdf Mon Sep 17 00:00:00 2001 From: Shinwell Hu Date: Sat, 6 Jun 2020 08:27:23 +0000 Subject: [PATCH 14/14] update changelog format --- simple-update-robot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simple-update-robot.py b/simple-update-robot.py index 2a05aa11..fff62082 100755 --- a/simple-update-robot.py +++ b/simple-update-robot.py @@ -83,7 +83,7 @@ def create_spec(repo, spec_str, o_ver, n_ver, src_fn=None): if nl.startswith("%changelog"): in_changelog = True d = datetime.date.today() - fn.write(d.strftime("* %a %b %d %Y SimpleUpdate Robot \n")) + fn.write(d.strftime("* %a %b %d %Y SimpleUpdate Robot - {ver}-0\n").format(ver=n_ver)) fn.write("- Update to version {ver}\n".format(ver=n_ver)) fn.write("\n") fn.close() -- Gitee