Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp13665rdb; Mon, 4 Dec 2023 18:16:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IG6+4nH3qozSJaAFw7cI33ZntUHusNvjrLkYMJdn5AEO9q0USdINbgGNy6DbU3yDoRwjNFS X-Received: by 2002:a17:902:ecc5:b0:1d0:5357:f1ad with SMTP id a5-20020a170902ecc500b001d05357f1admr963537plh.18.1701742605858; Mon, 04 Dec 2023 18:16:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701742605; cv=none; d=google.com; s=arc-20160816; b=ls9a7tvaClAOt6aEm3vPvtkJy+ROnMG5hbNy01cebh1EbCeCSFSexh6p/yN1P6hJBy zGkpPo2mMz/WX081soRyV3hCXO05RcLXRSvm4p3shEb1Ei3+4S6SGZIiO/JaXjHqMQok uZXYAMWqxsMGn3szPkBYHhgmWSS1G+oRhna5wFEqodHhjVm6rt9Hx/Exfl8PyNdRgiv2 OZUoKgoW3zZYIUQvAQt1DsfEI9h4saOSWSJmfqFVoKrr5s7yMHlFeGzu/VQcjDEALS8X /lDgp/fTr81t3gze2AY74d6LlrZi/J0DURLcWxFk9KIOMMOIt37KVxHLKgzBYJyvJmdC MyLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=5DAsanKGmiFNWr5XZy37wdEGraen/ixJrNiOihTeFto=; fh=iDTMswFojAadJa4VYNwto8pifEmoyZ0RWDXgH92jm7g=; b=eMfBGVnKJPkA+2j+POJorwMOsr8SXbYBNuFkssbNCz9vF/XvpVTlIfJY2XW1Gie8sl x1oJdz+ZE/JdlGtgf6999D/uhrZgMa1FdYl2MusE2OGzTYSXh82+SD6BJ//bPByM2F6+ QuQVjXvccaImBbqkuAJnQhhDCT12AOyqZ+syGDFIiOMqKa8fxFqoi27W0mdt/qJ6Zodx smjYOKaKA2phdOwVXtyX7dVc4ZC9exp77EH4Q9zMbVEZ1vrKSZA3TSH73WmaIE1UDteJ U0gc2vmGGLzV161IEyKiNZ5LuUC9lzatZXHDCZzefyMaKEuFShGiokLjnQ98/EABC5h7 ufKw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from howler.vger.email (howler.vger.email. [2620:137:e000::3:4]) by mx.google.com with ESMTPS id r5-20020a1709028bc500b001cf68d533fasi4128116plo.633.2023.12.04.18.16.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 18:16:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) client-ip=2620:137:e000::3:4; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:4 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 51A8080BAAB4; Mon, 4 Dec 2023 18:16:43 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231574AbjLECQ1 (ORCPT + 99 others); Mon, 4 Dec 2023 21:16:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229575AbjLECQ0 (ORCPT ); Mon, 4 Dec 2023 21:16:26 -0500 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E0FEFA0 for ; Mon, 4 Dec 2023 18:16:31 -0800 (PST) X-QQ-mid: bizesmtp73t1701742571t27qvrey Received: from localhost.localdomain ( [219.147.26.62]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 05 Dec 2023 10:16:10 +0800 (CST) X-QQ-SSF: 01200000000000B0J000000A0000000 X-QQ-FEAT: BrDpOp69VIgh1LmmdXWe5hrHwbYknXgT+5PK4U/K0/Zz0fGEzR5KRtl4jA2fW VMX5zZA4o8O/7oiZRokHJCAnKxURkkg414BSDsX8VgcYnVWLiDjS+PQ/ZO/bEa3zM4dLmPF qjTWbRa07+Ty/KaH3M8cCOodNi77BwRu8Mx5BOaOyMAE1sinxGLoRAv/3BkjJrjU3PwQjch tTKx62wx+expabBQCgf0Geaj8y5merMhXEW6DJ4YsCaYv/Cl2HozGRtJjCmvF/Qm0jYAOGI Vr/hLXzW9mxXD9S8Bar5uLbGIJu4Xx8D1j/LQlrwlCYNGauyjk69tEaYmm74x/MgmHrA== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 13659466830325708100 From: Jialu Xu To: nathan@kernel.org, ndesaulniers@google.com, morbo@google.com, justinstitt@google.com Cc: llvm@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Date: Tue, 5 Dec 2023 10:15:23 +0800 Message-Id: <20231205021523.4152128-1-xujialu@vimux.org> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231204165920.GA16980@dev-arch.thelio-3990X> References: <20231204165920.GA16980@dev-arch.thelio-3990X> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:vimux.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Mon, 04 Dec 2023 18:16:43 -0800 (PST) >On Mon, Dec 04, 2023 at 06:41:42PM +0800, Jialu Xu wrote: >> When symbolic links are involved in the path, os.path.abspath might not >> resolve the symlinks and instead return the absolute path with the >> symlinks intact. > >Can you provide an example or more detailed description of how this >behavior is currently broken? I can't really understand how having >symlinks in the path after normalization would break anything but I am >potentially missing something :) Glad to show my situation: Say "drivers/hdf/" has some symlinks: # ls -l drivers/hdf/ total 364 drwxrwxr-x 2 ... 4096 ... evdev lrwxrwxrwx 1 ... 44 ... framework -> ../../../../../../drivers/hdf_core/framework -rw-rw-r-- 1 ... 359010 ... hdf_macro_test.h lrwxrwxrwx 1 ... 55 ... inner_api -> ../../../../../../drivers/hdf_core/interfaces/inner_api lrwxrwxrwx 1 ... 53 ... khdf -> ../../../../../../drivers/hdf_core/adapter/khdf/linux -rw-r--r-- 1 ... 74 ... Makefile drwxrwxr-x 3 ... 4096 ... wifi One .cmd file records that: # head -1 ./framework/core/manager/src/.devmgr_service.o.cmd cmd_drivers/hdf/khdf/manager/../../../../framework/core/manager/src/devmgr_service.o := ... \ /path/to/out/drivers/hdf/khdf/manager/../../../../framework/core/manager/src/devmgr_service.c os.path.abspath returns "/path/to/out/framework/core/manager/src/devmgr_service.c", not correct: # ./scripts/clang-tools/gen_compile_commands.py INFO: Could not add line from ./framework/core/manager/src/.devmgr_service.o.cmd: File \ /path/to/out/framework/core/manager/src/devmgr_service.c not found Use pathlib.Path resolve() instead, got the correct path # cat compile_commands.json ... { "command": ... "directory": ... "file": "/path/to/blabla/drivers/hdf_core/framework/core/manager/src/devmgr_service.c" }, ... >> - # Use os.path.abspath() to normalize the path resolving '.' and '..' . >> - abs_path = os.path.abspath(os.path.join(root_directory, file_path)) >> + # Make the path absolute, resolving all symlinks on the way and also normalizing it. >> + abs_path = str(Path(os.path.join(root_directory, file_path)).resolve()) > >I think this can be more simply: > > abs_path = str(Path(root_directory, file_path).resolve()) > >I think there should be a comment around why we are creating a Path >object then creating a string from it, rather than using the Path object >directly, namely that PosixPath is not JSON serializable. Nice, update as yours, thanks. >> if not os.path.exists(abs_path): >> raise ValueError('File %s not found' % abs_path) >> return { >> -- >> 2.39.2 >>