* [PATCH] dpkg: Fix ADMINDIR
@ 2026-01-17 20:57 Mark Hatle
2026-01-19 12:30 ` [OE-core] " Alexander Kanavin
0 siblings, 1 reply; 5+ messages in thread
From: Mark Hatle @ 2026-01-17 20:57 UTC (permalink / raw)
To: openembedded-core
dpkg has a hard coded path (from build time) for the ADMINDIR, for some
reason the "set_root" function was using this hard coded value instead
of the value from apt.conf or the environment.
Follow the example of db_dir.c and use the environment if set.
Adjust the matching oe package_manager functions to set the ADMINDIR,
even though the apt.conf sets --admindir. Note it's unclear if the
--admindir value that is set is reasonable or not.
Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
---
Recent pseudo work pointed out that this path was not working properly.
Clearly it wasn't causing any functional issues since the value being
used was incorrect and pseudo was masking the path issue.
With the realpath fix in pseudo, deb rootfs was failing with:
dpkg: error: cannot canonicalize pathname /srv/pokybuild/yocto-worker/pkgman-non-rpm/build/build/tmp/work/qemux86_64-poky-linux/core-image-minimal/1.0/sdk/image/usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86-64-v3-poky-linux/srv/pokybuild/yocto-worker/meta-aws/build/build/tmp/work/x86_64-linux/dpkg-native/1.22.21/recipe-sysroot-native/var/lib/dpkg: Invalid argument
Someone with more knowledge then me should probably review the YP/deb
side of things and ensure this is really correct. But this does fix
the problem for me.
meta/lib/oe/package_manager/deb/__init__.py | 4 ++
...-dirs.c-set_rootfs-was-not-checking-.patch | 46 +++++++++++++++++++
meta/recipes-devtools/dpkg/dpkg_1.22.21.bb | 1 +
3 files changed, 51 insertions(+)
create mode 100644 meta/recipes-devtools/dpkg/dpkg/0001-lib-dpkg-options-dirs.c-set_rootfs-was-not-checking-.patch
diff --git a/meta/lib/oe/package_manager/deb/__init__.py b/meta/lib/oe/package_manager/deb/__init__.py
index eb48f3f982..cdb58bee10 100644
--- a/meta/lib/oe/package_manager/deb/__init__.py
+++ b/meta/lib/oe/package_manager/deb/__init__.py
@@ -213,6 +213,7 @@ class DpkgPM(OpkgDpkgPM):
def update(self):
os.environ['APT_CONFIG'] = self.apt_conf_file
+ os.environ['DPKG_ADMINDIR'] = '/var/lib/dpkg'
self.deploy_dir_lock()
@@ -231,6 +232,7 @@ class DpkgPM(OpkgDpkgPM):
return
os.environ['APT_CONFIG'] = self.apt_conf_file
+ os.environ['DPKG_ADMINDIR'] = '/var/lib/dpkg'
extra_args = ""
if hard_depends_only:
@@ -282,6 +284,7 @@ class DpkgPM(OpkgDpkgPM):
os.environ['IPKG_OFFLINE_ROOT'] = self.target_rootfs
os.environ['OPKG_OFFLINE_ROOT'] = self.target_rootfs
os.environ['INTERCEPT_DIR'] = self.intercepts_dir
+ os.environ['DPKG_ADMINDIR'] = '/var/lib/dpkg'
if with_dependencies:
os.environ['APT_CONFIG'] = self.apt_conf_file
@@ -424,6 +427,7 @@ class DpkgPM(OpkgDpkgPM):
def fix_broken_dependencies(self):
os.environ['APT_CONFIG'] = self.apt_conf_file
+ os.environ['DPKG_ADMINDIR'] = '/var/lib/dpkg'
cmd = "%s %s --allow-unauthenticated -f install" % (self.apt_get_cmd, self.apt_args)
diff --git a/meta/recipes-devtools/dpkg/dpkg/0001-lib-dpkg-options-dirs.c-set_rootfs-was-not-checking-.patch b/meta/recipes-devtools/dpkg/dpkg/0001-lib-dpkg-options-dirs.c-set_rootfs-was-not-checking-.patch
new file mode 100644
index 0000000000..3901b739a6
--- /dev/null
+++ b/meta/recipes-devtools/dpkg/dpkg/0001-lib-dpkg-options-dirs.c-set_rootfs-was-not-checking-.patch
@@ -0,0 +1,46 @@
+From c036cfa1ee53a900b4ed45bc91e45a0792547eea Mon Sep 17 00:00:00 2001
+From: Mark Hatle <mark.hatle@kernel.crashing.org>
+Date: Sat, 17 Jan 2026 20:20:23 +0000
+Subject: [PATCH] lib/dpkg/options-dirs.c: set_rootfs was not checking
+ environment
+
+The set_rootfs function was using the hardcoded ADMINDIR (define). It
+should be checking the environment, and then falling back to the define
+if not set.
+
+This matches the behavior in db_dir.c.
+
+Upstream-Status: Pending
+
+Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
+---
+ lib/dpkg/options-dirs.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/lib/dpkg/options-dirs.c b/lib/dpkg/options-dirs.c
+index 9b7a122fe..34869d792 100644
+--- a/lib/dpkg/options-dirs.c
++++ b/lib/dpkg/options-dirs.c
+@@ -49,13 +49,18 @@ set_admindir(const struct cmdinfo *cip, const char *value)
+ void
+ set_root(const struct cmdinfo *cip, const char *value)
+ {
++ const char *env;
+ char *db_dir;
+
+ /* Initialize the root directory. */
+ dpkg_fsys_set_dir(value);
+
+ /* Set the database directory based on the new root directory. */
+- db_dir = dpkg_fsys_get_path(ADMINDIR);
++ env = getenv("DPKG_ADMINDIR");
++ if (env)
++ db_dir = dpkg_fsys_get_path(env);
++ else
++ db_dir = dpkg_fsys_get_path(ADMINDIR);
+ dpkg_db_set_dir(db_dir);
+ free(db_dir);
+ }
+--
+2.30.2
+
diff --git a/meta/recipes-devtools/dpkg/dpkg_1.22.21.bb b/meta/recipes-devtools/dpkg/dpkg_1.22.21.bb
index d793c26d57..20f98d5d2d 100644
--- a/meta/recipes-devtools/dpkg/dpkg_1.22.21.bb
+++ b/meta/recipes-devtools/dpkg/dpkg_1.22.21.bb
@@ -14,6 +14,7 @@ SRC_URI = "git://salsa.debian.org/dpkg-team/dpkg.git;protocol=https;branch=1.22.
file://0007-dpkg-deb-build.c-Remove-usage-of-clamp-mtime-in-tar.patch \
file://0001-dpkg-Support-muslx32-build.patch \
file://0001-Add-support-for-riscv32-CPU.patch \
+ file://0001-lib-dpkg-options-dirs.c-set_rootfs-was-not-checking-.patch \
"
SRC_URI:append:class-native = " file://0001-build.c-ignore-return-of-1-from-tar-cf.patch"
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [OE-core] [PATCH] dpkg: Fix ADMINDIR
2026-01-17 20:57 [PATCH] dpkg: Fix ADMINDIR Mark Hatle
@ 2026-01-19 12:30 ` Alexander Kanavin
2026-01-19 14:38 ` Richard Purdie
0 siblings, 1 reply; 5+ messages in thread
From: Alexander Kanavin @ 2026-01-19 12:30 UTC (permalink / raw)
To: mark.hatle; +Cc: openembedded-core
On Sat, 17 Jan 2026 at 21:57, Mark Hatle via lists.openembedded.org
<mark.hatle=kernel.crashing.org@lists.openembedded.org> wrote:
> +Subject: [PATCH] lib/dpkg/options-dirs.c: set_rootfs was not checking
> + environment
> +
> +The set_rootfs function was using the hardcoded ADMINDIR (define). It
> +should be checking the environment, and then falling back to the define
> +if not set.
> +
> +This matches the behavior in db_dir.c.
> +
> +Upstream-Status: Pending
Please no pending patches without a reason. This should be submitted
upstream first.
Alex
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [OE-core] [PATCH] dpkg: Fix ADMINDIR
2026-01-19 12:30 ` [OE-core] " Alexander Kanavin
@ 2026-01-19 14:38 ` Richard Purdie
2026-01-19 21:53 ` Mark Hatle
0 siblings, 1 reply; 5+ messages in thread
From: Richard Purdie @ 2026-01-19 14:38 UTC (permalink / raw)
To: alex.kanavin, mark.hatle; +Cc: openembedded-core
On Mon, 2026-01-19 at 13:30 +0100, Alexander Kanavin via lists.openembedded.org wrote:
> On Sat, 17 Jan 2026 at 21:57, Mark Hatle via lists.openembedded.org
> <mark.hatle=kernel.crashing.org@lists.openembedded.org> wrote:
> > +Subject: [PATCH] lib/dpkg/options-dirs.c: set_rootfs was not checking
> > + environment
> > +
> > +The set_rootfs function was using the hardcoded ADMINDIR (define). It
> > +should be checking the environment, and then falling back to the define
> > +if not set.
> > +
> > +This matches the behavior in db_dir.c.
> > +
> > +Upstream-Status: Pending
>
> Please no pending patches without a reason. This should be submitted
> upstream first.
I understand the sentiment however I should mention this is blocking
pseudo getting updated to resolve several bugs. I did queue and test
this overnight and can confirm it does fix problems in dpkg once we
merge the pseudo fixes...
Cheers,
Richard
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [OE-core] [PATCH] dpkg: Fix ADMINDIR
2026-01-19 14:38 ` Richard Purdie
@ 2026-01-19 21:53 ` Mark Hatle
2026-01-20 17:18 ` Alexander Kanavin
0 siblings, 1 reply; 5+ messages in thread
From: Mark Hatle @ 2026-01-19 21:53 UTC (permalink / raw)
To: richard.purdie, alex.kanavin; +Cc: openembedded-core
This has been sent to the upstream dpkg mailing list, and should eventually
appear in the index at "https://lists.debian.org/debian-dpkg/2026/01/maillist.html"
--Mark
On 1/19/26 8:38 AM, Richard Purdie via lists.openembedded.org wrote:
> On Mon, 2026-01-19 at 13:30 +0100, Alexander Kanavin via lists.openembedded.org wrote:
>> On Sat, 17 Jan 2026 at 21:57, Mark Hatle via lists.openembedded.org
>> <mark.hatle=kernel.crashing.org@lists.openembedded.org> wrote:
>>> +Subject: [PATCH] lib/dpkg/options-dirs.c: set_rootfs was not checking
>>> + environment
>>> +
>>> +The set_rootfs function was using the hardcoded ADMINDIR (define). It
>>> +should be checking the environment, and then falling back to the define
>>> +if not set.
>>> +
>>> +This matches the behavior in db_dir.c.
>>> +
>>> +Upstream-Status: Pending
>>
>> Please no pending patches without a reason. This should be submitted
>> upstream first.
>
> I understand the sentiment however I should mention this is blocking
> pseudo getting updated to resolve several bugs. I did queue and test
> this overnight and can confirm it does fix problems in dpkg once we
> merge the pseudo fixes...
>
> Cheers,
>
> Richard
>
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#229622): https://lists.openembedded.org/g/openembedded-core/message/229622
> Mute This Topic: https://lists.openembedded.org/mt/117320584/3616948
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [mark.hatle@kernel.crashing.org]
> -=-=-=-=-=-=-=-=-=-=-=-
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-01-20 17:18 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-17 20:57 [PATCH] dpkg: Fix ADMINDIR Mark Hatle
2026-01-19 12:30 ` [OE-core] " Alexander Kanavin
2026-01-19 14:38 ` Richard Purdie
2026-01-19 21:53 ` Mark Hatle
2026-01-20 17:18 ` Alexander Kanavin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox