Your message dated Thu, 1 Jun 2023 10:51:56 +0200 with message-id <89374047-b66a-ef49-0741-3b6a96e92318@debian.org> and subject line Re: Bug#1036914: unblock: librem5-flash-image/0.0.3-1 has caused the Debian Bug report #1036914, regarding unblock: librem5-flash-image/0.0.3-1 to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 1036914: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1036914 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: unblock: librem5-flash-image/0.0.3-1
- From: Guido Günther <agx@sigxcpu.org>
- Date: Mon, 29 May 2023 13:15:31 +0200
- Message-id: <ZHSI6zKHnh2FVUYW@qwark.sigxcpu.org>
Package: release.debian.org Severity: normal User: release.debian.org@packages.debian.org Usertags: unblock X-Debbugs-Cc: librem5-flash-image@packages.debian.org Control: affects -1 + src:librem5-flash-image Please unblock package librem5-flash-image The tool is used to flash images to Librem 5 phones. [ Reason ] This adds support for stable image downloads (rather than always fetching the latest image to flash to the phone) hence it seems appropriate to have that in a stable relase. It also makes downloading a bit more robust by allowing for longer timeouts. [ Impact ] Users will have to manually go out and search for stable images. [ Tests ] - Tested flashing manually - CI tests (that download images) pass upstream in a Debian container [ Risks ] Risks should be low as the package is in use on other distros since some time. [ Checklist ] [x] all changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in testing [ Other info ] I apologize for being late here, I simply missed that the version is outdated. I could have backported the patch but just using the upstream version (which didn't bring any other features) seemed more reasonable here. unblock librem5-flash-image/0.0.3-1diff --git a/debian/changelog b/debian/changelog index 2c0f47f..d94dbf9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +librem5-flash-image (0.0.3-1) unstable; urgency=medium + + * New upstream release + + -- Guido Günther <agx@sigxcpu.org> Fri, 24 Feb 2023 17:53:10 +0100 + librem5-flash-image (0.0.2-1) unstable; urgency=medium * New upstream release 0.0.2 diff --git a/debian/gbp.conf b/debian/gbp.conf index 3d0bb65..b2eeae8 100644 --- a/debian/gbp.conf +++ b/debian/gbp.conf @@ -1,4 +1,17 @@ [DEFAULT] -debian-branch=debian/master +debian-branch = debian/master +debian-tag = debian/%(version)s +upstream-branch = upstream/latest +upstream-tag = upstream/%(version)s +upstream-vcs-tag = v%(version)s pristine-tar = True -upstream-tag = v%(version)s + +[tag] +sign-tags = true + +[dch] +multimaint-merge = True + +[import-orig] +postimport = dch -v%(version)s New upstream release; git add debian/changelog; debcommit +upstream-vcs-tag = v%(version%~%_)s diff --git a/scripts/librem5-flash-image b/scripts/librem5-flash-image index be28869..3896d8c 100755 --- a/scripts/librem5-flash-image +++ b/scripts/librem5-flash-image @@ -35,6 +35,12 @@ except ImportError: from urllib.parse import urljoin +IMAGES = { + 'stable': { + 'url': 'https://storage.puri.sm/librem5/images/', + } +} + JENKINS = 'https://arm01.puri.sm' BOARD_TYPE = 'librem5r4' VALID_PHONE_BOARD_TYPES = ['librem5r2', 'librem5r3', 'librem5r4'] @@ -130,7 +136,8 @@ def resuming_stream(url, expected_size, max_attempts): try: resp = requests.get(url, stream=True, - headers={'Range': 'bytes={}-'.format(position)} + headers={'Range': 'bytes={}-'.format(position)}, + timeout=10 ) resp.raise_for_status() @@ -145,7 +152,9 @@ def resuming_stream(url, expected_size, max_attempts): if position < expected_size: raise PrematureEndException() return - except (requests.exceptions.ConnectionError, PrematureEndException): + except (requests.exceptions.ConnectionError, + requests.exceptions.Timeout, + PrematureEndException): if i == max_attempts - 1: logging.error("Max connection errors reached, aborting") raise @@ -207,7 +216,7 @@ def download_image(url, target, attempts): verify_image(target, meta) -def find_image(jobname, type, variant, dist): +def find_image_jenkins(jobname, type, variant, dist): server = jenkins.Jenkins(JENKINS) logging.info("Looking for {} {} {} image".format(type, variant, dist)) try: @@ -219,6 +228,8 @@ def find_image(jobname, type, variant, dist): resp = requests.get(build['url'] + '/api/json') resp.raise_for_status() json = resp.json() + if json['description'] is None: + continue if (json['description'].startswith(variant + ' ' + type) and dist in json['description'] and json['result'] == 'SUCCESS'): @@ -229,6 +240,40 @@ def find_image(jobname, type, variant, dist): return found +def find_image_stable(board, variant, dist): + remote = IMAGES['stable'] + logging.info("Looking for {} {} {} image".format(board, variant, dist)) + found = None + + path = f"{dist}/latest/{board}/{variant}/" + url = urljoin(remote['url'], f"{path}/artifact/{IMAGE.format(board)}.xz") + try: + resp = requests.head(url, timeout=10) + if resp.ok: + d = datetime.datetime.strptime(resp.headers['Last-Modified'], + '%a, %d %b %Y %H:%M:%S %Z') + return { + 'url': urljoin(remote['url'], path), + 'timestamp': d.timestamp() * 1000, + 'id': '"stable"', + 'description': f"Last stable {board} build", + } + resp.raise_for_status() + + except (requests.exceptions.ConnectionError, + requests.exceptions.Timeout): + logging.error("Failed to find image at {} - connection failed".format(url)) + found = None + return found + + +def find_image(jobname, board, variant, dist, stable): + if stable: + return find_image_stable(board, variant, dist) + else: + return find_image_jenkins(jobname, board, variant, dist) + + def find_uboot(jobname): server = jenkins.Jenkins(JENKINS) @@ -378,6 +423,8 @@ def main(): parser.add_argument('--board', choices=VALID_DEVKIT_BOARD_TYPES + VALID_PHONE_BOARD_TYPES, default=None, help="Type of the board to download ( devkit, librem5r2, librem5r3, librem5r4 ) " "default is 'auto'") + parser.add_argument('--stable', action='store_true', default=False, + help="Whether to grab the latest stable image, otherwise the dev snapshot is fetched") group = parser.add_argument_group(title='Testing and debugging options') group.add_argument('--debug', action="store_true", default=False, @@ -405,7 +452,7 @@ def main(): # Check available downloads upfront so it's less likely we fail # later: - image_ref = find_image(args.image_job, board, args.variant, args.dist) + image_ref = find_image(args.image_job, board, args.variant, args.dist, args.stable) if image_ref: image_ref['ts'] = datetime.datetime.fromtimestamp(image_ref['timestamp'] / 1000).strftime('%c') logging.info("Found disk image Build {id} '{description}' from {ts}".format(**image_ref)) @@ -431,7 +478,8 @@ def main(): if board in ["librem5r3", 'librem5r4']: uuu_mods = "CFG: SDP: -chip MX8MQ -compatible MX8MQ -vid 0x316d -pid 0x4c05" - outdir = args.dir if args.dir is not None else tempfile.mkdtemp(prefix='devkit_image_', dir='.') + dirprefix = 'tmp_' + os.path.basename(sys.argv[0]) + '_' + outdir = args.dir if args.dir is not None else tempfile.mkdtemp(prefix=dirprefix, dir='.') try: logging.info("Downloading to {}".format(outdir)) if args.dir == outdir:
--- End Message ---
--- Begin Message ---
- To: Guido Günther <agx@sigxcpu.org>, 1036914-done@bugs.debian.org
- Subject: Re: Bug#1036914: unblock: librem5-flash-image/0.0.3-1
- From: Paul Gevers <elbrus@debian.org>
- Date: Thu, 1 Jun 2023 10:51:56 +0200
- Message-id: <89374047-b66a-ef49-0741-3b6a96e92318@debian.org>
- In-reply-to: <ZHSI6zKHnh2FVUYW@qwark.sigxcpu.org>
- References: <ZHSI6zKHnh2FVUYW@qwark.sigxcpu.org>
Hi, On 29-05-2023 13:15, Guido Günther wrote:I could have backported the patch but just using the upstream version (which didn't bring any other features) seemed more reasonable here.I understand this to read: this *is* a targeted fix. Please take more care about timing in the next release cycle for your packages, and it helps to file the unblock request earlier (after upload). Technically your request came after the deadline.Also, that diff looked like a lot of copy/paste, but it's not up to me to judge coding style ;)unblock librem5-flash-image/0.0.3-1Anyways, unblocked. PaulAttachment: OpenPGP_signature
Description: OpenPGP digital signature
--- End Message ---