public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [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

* Re: [OE-core] [PATCH] dpkg: Fix ADMINDIR
  2026-01-19 21:53     ` Mark Hatle
@ 2026-01-20 17:18       ` Alexander Kanavin
  0 siblings, 0 replies; 5+ messages in thread
From: Alexander Kanavin @ 2026-01-20 17:18 UTC (permalink / raw)
  To: Mark Hatle; +Cc: richard.purdie, openembedded-core

On Mon, 19 Jan 2026 at 22:53, Mark Hatle <mark.hatle@kernel.crashing.org> wrote:
>
> 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"

Thanks! It has now appeared, and the patch to oe-core hasn't yet
merged. Can you send a v2, replacing Pending with Submitted
[https://lists.debian.org/debian-dpkg/2026/01/maillist.html] ?

Alex


^ 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