* [OE-core][PATCH 1/2] lib/oe/path.py: Add relsymlink()
@ 2023-12-20 18:01 Joshua Watt
2023-12-20 18:01 ` [OE-core][PATCH 2/2] lib/packagedata.py: Fix broken symlinks for providers with a '/' Joshua Watt
0 siblings, 1 reply; 2+ messages in thread
From: Joshua Watt @ 2023-12-20 18:01 UTC (permalink / raw)
To: openembedded-core; +Cc: Joshua Watt
Adds API to make a relative symbolic link between two directories. The
arguments are the same as oe.path.symlink()
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
meta/lib/oe/path.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/meta/lib/oe/path.py b/meta/lib/oe/path.py
index e2f1913a35c..5d21cdcbdff 100644
--- a/meta/lib/oe/path.py
+++ b/meta/lib/oe/path.py
@@ -172,6 +172,9 @@ def symlink(source, destination, force=False):
if e.errno != errno.EEXIST or os.readlink(destination) != source:
raise
+def relsymlink(target, name, force=False):
+ symlink(os.path.relpath(target, os.path.dirname(name)), name, force=force)
+
def find(dir, **walkoptions):
""" Given a directory, recurses into that directory,
returning all files as absolute paths. """
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [OE-core][PATCH 2/2] lib/packagedata.py: Fix broken symlinks for providers with a '/'
2023-12-20 18:01 [OE-core][PATCH 1/2] lib/oe/path.py: Add relsymlink() Joshua Watt
@ 2023-12-20 18:01 ` Joshua Watt
0 siblings, 0 replies; 2+ messages in thread
From: Joshua Watt @ 2023-12-20 18:01 UTC (permalink / raw)
To: openembedded-core; +Cc: Joshua Watt
If a package had a provider with a '/' in it (e.g. "/bin/sh",
"/bin/bash", etc.), the generated symlinks were broken due to being at a
hard coded depth. Use oe.path.relsymlink() instead to make a correct
relative symbolic link
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
meta/lib/oe/packagedata.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/lib/oe/packagedata.py b/meta/lib/oe/packagedata.py
index 162ff60d72f..d59f6f5a569 100644
--- a/meta/lib/oe/packagedata.py
+++ b/meta/lib/oe/packagedata.py
@@ -317,7 +317,7 @@ fi
for p in bb.utils.explode_deps(rprov):
subdata_sym = pkgdatadir + "/runtime-rprovides/%s/%s" % (p, pkg)
bb.utils.mkdirhier(os.path.dirname(subdata_sym))
- oe.path.symlink("../../runtime/%s" % pkg, subdata_sym, True)
+ oe.path.relsymlink(subdata_file, subdata_sym, True)
allow_empty = d.getVar('ALLOW_EMPTY:%s' % pkg)
if not allow_empty:
@@ -328,7 +328,7 @@ fi
if g or allow_empty == "1":
# Symlinks needed for reverse lookups (from the final package name)
subdata_sym = pkgdatadir + "/runtime-reverse/%s" % pkgval
- oe.path.symlink("../runtime/%s" % pkg, subdata_sym, True)
+ oe.path.relsymlink(subdata_file, subdata_sym, True)
packagedfile = pkgdatadir + '/runtime/%s.packaged' % pkg
open(packagedfile, 'w').close()
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-12-20 18:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-12-20 18:01 [OE-core][PATCH 1/2] lib/oe/path.py: Add relsymlink() Joshua Watt
2023-12-20 18:01 ` [OE-core][PATCH 2/2] lib/packagedata.py: Fix broken symlinks for providers with a '/' Joshua Watt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox