From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 20 Aug 2026 15:42:19 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lj1-f185.google.com (mail-lj1-f185.google.com [209.85.208.185]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 67KDgILt014326 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 20 Aug 2026 15:42:18 +0200 Received: by mail-lj1-f185.google.com with SMTP id 38308e7fff4ca-3a19a366cbesf3961151fa.3 for ; Thu, 20 Aug 2026 06:42:18 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1787233333; cv=pass; d=google.com; s=arc-20260327; b=EuXZT0b/J7F9ZNy9U5MxllgPgDYpcqsL5lw4VJmTcGh7BLh74+9NKoa0azu7okUijG u/yzaNHREYedi5st7wwNrQbyt9he3dwbHTsn3M76JwHOEk1BLU4tdTYVyA79VY0ba806 Fpz8a6LziuAIye8ngLCSIf23RNIydp3d+x5J/fSQi1b/ix+moAKFNbOWNQOWx9qFfwB+ DUEwfRhhhmtVfVT0iBHxg7WqCragkqqrjj3mG58ZL8MXX9Go3OEP4WdtH3f1Rge9n2Df dIsEGXHO+JBgXiLIQNMEnDoywn5lgUSnG+i4O0k5GDytvDhqhig1YA0W/xvEvbFeVxho PHTA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=lz/7MwgXGsmgw8pMzsbqE/8L1uY6ZguZZkvzG7jQfJk=; fh=ldKlEg2bGYV3jmgfgzfCXQgYMZUgN4hOFWy2tEH24ZU=; b=cmSvdy4PtGAf7uOYP1O5ahLU+/B7475dN9it0Utd/bNRsgWvmEtpWAQAkVqlpLd+lg NTM7o6AzOmVQnpvExlkvaymlcD1zcyVcutkrPhR5ziuSK/8humpvYUGmbRDUrUJ95/dY tKQGIlUrvuTWmF7s/UsX94PxG+0mHXuNh1KjvB5toxyBauKpi0GU/RE3Ob7IgLhaIatS V3VyYLU8mfwiZW2y+uN3SinkVRlrVl6Wl1b14V+ZIV7BYBjgNXPwYqK3UOaZEue1Vad+ qfx9/yxFNCgJM1dcG0LReRW5Ndnqd74XUVIQya5Rlj61vzRZjNkL62+clK+0WeARMuFC VYTQ==; darn=ilbers.de ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of akarpovich@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=akarpovich@ilbers.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20251104; t=1787233333; x=1787838133; darn=ilbers.de; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:content-type :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :from:to:cc:subject:date:message-id:reply-to:content-type; bh=lz/7MwgXGsmgw8pMzsbqE/8L1uY6ZguZZkvzG7jQfJk=; b=dTonhMbKTcIV2vDmURnUI7tIRRQfgJd4gK4uUwiZIgw4qyX+GiJ3yBWFmDQZxt3qzu yheZia0N6SfA/7mz+hepVK3GONh0EWH5wVkA28PAUSZNuXRTDWD7N2B5vpKH3Z8m8RSP xnkasevJP7Nh9dyUoRjxvL6rtfpJjTglJdCYnp/xLCOcIEdOmFCJucIPDL3z1N3jipBh kaV1+Du5+oWG1/O7Iy2s/rjiilwjCb0Kt0J1VhB1fNoCuiMiXcwNCTry+B+Rufzehb2k YQgpk00xeUrX5zENID8qZHce7LRXdznrPVyKthBj5kSTUbym0y1MKTkHTYnFiXApTno9 36tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787233333; x=1787838133; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :content-type:x-original-authentication-results:x-original-sender :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to:content-type; bh=lz/7MwgXGsmgw8pMzsbqE/8L1uY6ZguZZkvzG7jQfJk=; b=EiS0SAmfpB78WsSSlxniQll0dR6vgCIRzMFmVrhp84z0etrE6gdvUqxKYZjMQYc5Xn ihha9gRtaaX1QjVocSieLwZOrDgGkkATY2y/hRCwKGMn3UHuEet3tYZ0FgkJXqV/WcF9 WO7trrmF1K27Tujy300J3Se5g8MqvUQHvjj/71XcAOJM3AaMEzp7kqiZjJDJQpWea2f3 IPPP/NS8m9urXQ6HRQYdMZDsr6N++Jbhl/iS1pAwFmour45dJudLAM/4SLHWaX1mr3Wu 8kfmBnvHoSP6gCnG7A0ETq5G8lrxuK1ZGjYupVi8/rJOkSqCUJcwOEnQjBcV3UhNXYbs IV2A== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AHgh+Rr4z59pgkGZBYc5NfUwww1Fy+1e17UFopBOyIRaRbpupr1dWiVO8fgFncS0w2zCEptZ4dvk@ilbers.de X-Gm-Message-State: AOJu0Yzn2v6HzVpIzJesjzCXJIzeoVZlCIwqc7NnR5NAHHsYK7GCku20 M2m0Nz1VQ7ojxJK9JY47PEV0yT1NookNnQViU6evcuDt1jjbCzfa/DtN X-Received: by 2002:a05:651c:199f:b0:3a1:1d3b:67f1 with SMTP id 38308e7fff4ca-3a1896d9d67mr27275841fa.7.1787233331740; Thu, 20 Aug 2026 06:42:11 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com; h="ATskLddGAINbVX7laIT2MK+rshcGmpu0PsnwNdC1Z8EVJFLCuw==" Received: by 2002:a2e:9ec9:0:b0:3a1:7b4d:5835 with SMTP id 38308e7fff4ca-3a1964217eals3657311fa.2.-pod-prod-02-eu; Thu, 20 Aug 2026 06:42:09 -0700 (PDT) X-Received: by 2002:a05:651c:a20c:10b0:3a1:8dd6:aad9 with SMTP id 38308e7fff4ca-3a18dd6add5mr21035851fa.2.1787233329491; Thu, 20 Aug 2026 06:42:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1787233329; cv=none; d=google.com; s=arc-20260327; b=Nk8E9dRU0whLW7teaPvPCw9Srfq9jEqyrInxl6UWf8bZ7tfCKJ6aisXA5FB/jTnsDc Ya8yyi9H07SagliVs/InHJsGaqQ/YMTj7jqQVpv3tw0Hxl7u68NfBEpY/O9BCS5WjUek urUl2H81nwSXCjfK5+w2tJ4at7orH0xOGV9KA0VmytiGwZNLxVlgKDmbfSu01YNXet95 OOnwPEYOoZ4Xi1N+XI2RKdI44hqxvu31D6wkvWY+kEO7QmsC4vZS0YJ2pq/QISqQu16L 847A7mFoJqRhxj/AmWzEuGeUxdFxSj3a82OYstz0Vdl2Qc+FoNdnVlCGTPWrYmMyQ4YH ngvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=fXV59MW+wfucag7p9lyuoIU9KCdjvsnT1Rffr5ejkLk=; fh=u+3kXEMzY4uVhDBiujW2QUo7NnpMLrGEgMQBYpCTRN4=; b=Op2qzlb1vH+QuCE9u3RkneMRN0pne9B4yofFGKgZT0PJGjUliUwk9dZDuUwzcoznrz BGtup0ITv4Bc+cvkoSn4/2li70EmAWc+CuFdPacgjo1KvN+JnALHrU7KrC/5T+AqTcNB j6NNoBUFZZ/CT3+KlN8Zo76Zp7QVeRVhXqB09T3cVJHL4fz1/ZGOJ951+ykXeg8GJopw FxX2mPr8AmKPdMMjMG0akMhcO29t1a2+TuEhKH2OtpRIOlrBJMX5hQY74Y6ypGb6oGsR eF7cwZEMCPpF9gvlebvaBFHh/iWp3FZAv1rAHecnIyifzM7wKe/nlDaSfKG+DiXieXxU gnyw==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of akarpovich@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=akarpovich@ilbers.de Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id 38308e7fff4ca-3a189e3ba41si898601fa.5.2026.08.20.06.42.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Thu, 20 Aug 2026 06:42:09 -0700 (PDT) Received-SPF: pass (google.com: domain of akarpovich@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Received: from akarpovich-Victus-by-HP-Laptop-16-e0xxx.promwad.corp (62.122.174.6.serverel.net [62.122.174.6] (may be forged)) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 67KDf8lZ013513 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 20 Aug 2026 15:42:07 +0200 From: Aliaksei Karpovich To: isar-users@googlegroups.com Cc: Aliaksei Karpovich Subject: [v9 12/13] debrepo: Add override for reprepro Date: Thu, 20 Aug 2026 15:29:27 +0200 Message-ID: <20260820133934.383231-13-akarpovich@ilbers.de> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260820133934.383231-1-akarpovich@ilbers.de> References: <20260820133934.383231-1-akarpovich@ilbers.de> MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2, RCVD_IN_RP_CERTIFIED,RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-Original-Sender: akarpovich@ilbers.de X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of akarpovich@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=akarpovich@ilbers.de Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-TUID: Zo6TeRo5garx It fixes an issue when bootstrap image in case of offline build is different than online. It happens because some packages has different Priority field because of override. F.e. libtext-wrapi18n-perl in trixie: - inside deb package: 'Priority: required' - inside Packages from deb repo: 'Priority: optional' Solution: download the override file from repo and pass it to reprepro. Signed-off-by: Aliaksei Karpovich --- scripts/deb-repo | 97 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 88 insertions(+), 9 deletions(-) diff --git a/scripts/deb-repo b/scripts/deb-repo index 23de0461..99913fb4 100755 --- a/scripts/deb-repo +++ b/scripts/deb-repo @@ -89,6 +89,8 @@ import shutil import subprocess import pickle import urllib.parse +import urllib.request +import gzip import apt_pkg import apt.progress.base @@ -96,8 +98,38 @@ import apt.progress.base REPREPRO_TIMEOUT = 1200 +def parse_aptsources_list_line(source_list_line): + import re + + s = source_list_line.strip() + + if not s or s.startswith("#"): + return None + + type, s = re.split(r"\s+", s, maxsplit=1) + if type not in ["deb", "deb-src"]: + return None + + options = "" + options_match = re.match(r"\[\s*(\S+=\S+(?=\s))*\s*(\S+=\S+)\s*\]\s+", s) + if options_match: + options = options_match.group(0).strip() + s = s[options_match.end():] + + source, s = re.split(r"\s+", s, maxsplit=1) + + if s.startswith("/"): + suite = "" + else: + suite, s = re.split(r"\s+", s, maxsplit=1) + + components = " ".join(s.split()) + + return [type, options, source, suite, components] class DebRepo(object): + BOOTSTRAP_LIST = "/etc/apt/sources.list.d/bootstrap.list" + class DebRepoCtx(object): def __init__(self, workdir): self.distro = "debian" @@ -181,9 +213,9 @@ class DebRepo(object): with open(f"{self.workdir}/var/lib/dpkg/status", "w"): pass - os.makedirs(f"{self.workdir}/etc/apt/sources.list.d", exist_ok=True) + srcfile = f"{self.workdir}{self.BOOTSTRAP_LIST}" + os.makedirs(os.path.dirname(srcfile), exist_ok=True) - srcfile = f"{self.workdir}/etc/apt/sources.list.d/bootstrap.list" if aptsrcsfile and os.path.exists(aptsrcsfile): shutil.copy(aptsrcsfile, srcfile) else: @@ -201,13 +233,60 @@ class DebRepo(object): def create_repo_dist(self): conf_dir = f"{self.ctx.repodir}/{self.ctx.distro}/conf" os.makedirs(conf_dir, exist_ok=True) - if not os.path.exists(f"{conf_dir}/distributions"): - with open(f"{conf_dir}/distributions", "w") as f: - f.write(f"Codename: {self.ctx.codename}\n") - f.write( - "Architectures: " - "i386 armhf arm64 amd64 mipsel riscv64 source\n") - f.write("Components: main\n") + override_fname = "override" + self.create_override(f"{conf_dir}/{override_fname}") + with open(f"{conf_dir}/distributions", "w") as f: + f.write(f"Codename: {self.ctx.codename}\n") + f.write( + "Architectures: " + "i386 armhf arm64 amd64 mipsel riscv64 source\n") + f.write("Components: main\n") + f.write(f"DebOverride: {override_fname}\n") + + def create_override(self, override_file): + deb_override_name = f"override.{self.ctx.codename}.main" + deb_override_file = f"{self.workdir}/tmp/{deb_override_name}" + if (not os.path.exists(deb_override_file) or + os.path.getsize(deb_override_file) < 1): + # Extract source URL + srcfile = f"{self.workdir}{self.BOOTSTRAP_LIST}" + with open(srcfile, "r") as f: + for line in f: + entry = parse_aptsources_list_line(line) + if entry: + source_url = entry[2] + # Download override file + self.fetch_file(f"{source_url}/indices/{deb_override_name}") + if (os.path.exists(deb_override_file) and + os.path.getsize(deb_override_file) > 1): + break + # Download packet override file + self.fetch_file(f"{source_url}/indices/{deb_override_name}.gz") + # Unpack override file + with gzip.open(f"{deb_override_file}.gz", "r") as f_in, open(deb_override_file, "wb") as f_out: + for line in f_in: + f_out.write(line) + break + + with open(override_file, "w") as f_out: + # Unpack deb override file + with open(deb_override_file, "r") as f: + # Convert deb override to reprepro override + for line in f: + fields = line.strip().split() + + if len(fields) < 3: + continue + + package = fields[0] + priority = fields[1] + section = fields[2] + + f_out.write(f"{package} Priority {priority}\n") + f_out.write(f"{package} Section {section}\n") + + if f_out.tell() < 1: + print("WARNING: override file is empty!") def apt_config(self, init, crossbuild): if not init and self.ctx.compatarch: -- 2.43.0 -- You received this message because you are subscribed to the Google Groups "isar-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260820133934.383231-13-akarpovich%40ilbers.de.