linux-firmware.lore.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Emil Velikov via B4 Relay <devnull+emil.l.velikov.gmail.com@kernel.org>
To: linux-firmware@kernel.org
Cc: Josh Boyer <jwboyer@kernel.org>, Adam Sampson <ats@offog.org>,
	 David Woodhouse <dwmw2@infradead.org>,
	 Emil Velikov <emil.l.velikov@gmail.com>
Subject: [PATCH RESEND v2 10/16] check_whence: error if symlinks are in-tree
Date: Wed, 01 Mar 2023 18:56:24 +0000	[thread overview]
Message-ID: <20230301-fixes-and-compression-v2-10-e2b71974e842@gmail.com> (raw)
In-Reply-To: <20230301-fixes-and-compression-v2-0-e2b71974e842@gmail.com>

From: Emil Velikov <emil.l.velikov@gmail.com>

Currently we have no symlinks in-tree. Add a simple check, ensuring they
don't get added in the future.

This allows us to remove the clunky symlink checking code in
copy-firmware.sh

v2:
 - tweak helper to produce link and target (based off Adam's patch)

Cc: Adam Sampson <ats@offog.org>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
---
Adam, you should be able to use this helper with your fixes.

Note that symlinks should not point to another symlink, so you might
want to tweak your patch to check and error out in such cases.

HTH o/
---
 check_whence.py | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/check_whence.py b/check_whence.py
index 92b104e..f94037d 100755
--- a/check_whence.py
+++ b/check_whence.py
@@ -32,6 +32,23 @@ def list_whence_files():
                 yield match.group(1).replace("\ ", " ")
                 continue
 
+def list_links_list():
+    with open('WHENCE', encoding='utf-8') as whence:
+        for line in whence:
+            match = re.match(r'Link:\s*(.*)', line)
+            if match:
+                linkname, target = match.group(1).split("->")
+
+                linkname = linkname.strip().replace("\ ", " ")
+                target = target.strip().replace("\ ", " ")
+
+                # Link target is relative to the link
+                target = os.path.join(os.path.dirname(linkname), target)
+                target = os.path.normpath(target)
+
+                yield (linkname, target)
+                continue
+
 def list_git():
     with os.popen('git ls-files') as git_files:
         for line in git_files:
@@ -41,6 +58,7 @@ def main():
     ret = 0
     whence_list = list(list_whence())
     whence_files = list(list_whence_files())
+    links_list = list(list_links_list())
     known_files = set(name for name in whence_list if not name.endswith('/')) | \
                   set(['check_whence.py', 'configure', 'Makefile',
                        'README', 'copy-firmware.sh', 'WHENCE'])
@@ -61,6 +79,10 @@ def main():
                          name)
         ret = 1
 
+    for name in set(link[0] for link in links_list if os.path.islink(link[0])):
+        sys.stderr.write('E: %s listed in WHENCE as Link, is in tree\n' % name)
+        ret = 1
+
     for name in sorted(list(known_files - git_files)):
         sys.stderr.write('E: %s listed in WHENCE does not exist\n' % name)
         ret = 1

-- 
2.39.2


  parent reply	other threads:[~2023-03-01 18:56 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-01 18:56 [PATCH RESEND v2 00/16] Misc fixes, sanity checks and xz/zstd compression Emil Velikov via B4 Relay
2023-03-01 18:56 ` [PATCH RESEND v2 01/16] WHENCE: remove trailing white space Emil Velikov via B4 Relay
2023-03-07 14:53   ` Josh Boyer
2023-03-01 18:56 ` [PATCH RESEND v2 02/16] WHENCE: remove unnecessary filename quotation Emil Velikov via B4 Relay
2023-03-07 14:56   ` Josh Boyer
2023-03-07 17:53     ` Emil Velikov
2023-03-07 18:01       ` Josh Boyer
2023-03-01 18:56 ` [PATCH RESEND v2 03/16] check_whence, WHENCE, copy-firmware: escape filenames with spaces Emil Velikov via B4 Relay
2023-03-07 14:58   ` Josh Boyer
2023-03-07 17:30     ` Emil Velikov
2023-03-07 18:00       ` Josh Boyer
2023-03-07 20:48         ` Emil Velikov
2023-03-01 18:56 ` [PATCH RESEND v2 04/16] WHENCE: remove duplicate File entries Emil Velikov via B4 Relay
2023-03-07 15:01   ` Josh Boyer
2023-03-01 18:56 ` [PATCH RESEND v2 05/16] WHENCE: comment out duplicate MediaTek firmware Emil Velikov via B4 Relay
2023-03-07 15:02   ` Josh Boyer
2023-03-07 17:19     ` Emil Velikov
2023-03-07 18:08       ` Josh Boyer
2023-03-07 20:57         ` Emil Velikov
2023-03-10 12:42           ` Josh Boyer
2023-03-01 18:56 ` [PATCH RESEND v2 06/16] check_whence: error on duplicate file entries Emil Velikov via B4 Relay
2023-03-07 18:12   ` Josh Boyer
2023-03-01 18:56 ` [PATCH RESEND v2 07/16] check_whence: error on directory listed as File Emil Velikov via B4 Relay
2023-03-13 20:24   ` Emil Velikov
2023-03-21 10:31     ` Emil Velikov
2023-03-29 14:47       ` Emil Velikov
2023-03-01 18:56 ` [PATCH RESEND v2 08/16] copy-firmware: remove non-applicable file presence test Emil Velikov via B4 Relay
2023-05-08 12:39   ` Josh Boyer
2023-03-01 18:56 ` [PATCH RESEND v2 09/16] check_whence: error if File: is actually a link Emil Velikov via B4 Relay
2023-05-08 12:41   ` Josh Boyer
2023-03-01 18:56 ` Emil Velikov via B4 Relay [this message]
2023-05-08 12:45   ` [PATCH RESEND v2 10/16] check_whence: error if symlinks are in-tree Josh Boyer
2023-03-01 18:56 ` [PATCH RESEND v2 11/16] copy-firmware: remove unreachable symlink workarounds Emil Velikov via B4 Relay
2023-03-01 18:56 ` [PATCH RESEND v2 12/16] copy-firmware: quote deskdir to prevent word splitting Emil Velikov via B4 Relay
2023-05-08 12:47   ` Josh Boyer
2023-03-01 18:56 ` [PATCH RESEND v2 13/16] copy-firmware: tweak sed invocation Emil Velikov via B4 Relay
2023-05-08 12:48   ` Josh Boyer
2023-03-01 18:56 ` [PATCH RESEND v2 14/16] copy-firmware: quote the output of dirname Emil Velikov via B4 Relay
2023-03-01 18:56 ` [PATCH RESEND v2 15/16] copy-firmware: silence the last shellcheck warnings Emil Velikov via B4 Relay
2023-03-01 18:56 ` [PATCH RESEND v2 16/16] Makefile, copy-firmware: support xz/zstd compressed firmware Emil Velikov via B4 Relay
2023-03-06 14:23   ` Emil Velikov
2023-05-08 12:51 ` [PATCH RESEND v2 00/16] Misc fixes, sanity checks and xz/zstd compression Josh Boyer
2023-05-20 11:05   ` Emil Velikov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230301-fixes-and-compression-v2-10-e2b71974e842@gmail.com \
    --to=devnull+emil.l.velikov.gmail.com@kernel.org \
    --cc=ats@offog.org \
    --cc=dwmw2@infradead.org \
    --cc=emil.l.velikov@gmail.com \
    --cc=jwboyer@kernel.org \
    --cc=linux-firmware@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).