From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 7194774660571987968 X-Received: by 2002:a5d:8798:0:b0:704:5916:5290 with SMTP id f24-20020a5d8798000000b0070459165290mr5472950ion.10.1675164015658; Tue, 31 Jan 2023 03:20:15 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a92:130a:0:b0:310:ee19:6758 with SMTP id 10-20020a92130a000000b00310ee196758ls2259882ilt.8.-pod-prod-gmail; Tue, 31 Jan 2023 03:20:15 -0800 (PST) X-Google-Smtp-Source: AK7set/VOrJMdUsjSHOMUfb+0ylLgPzpsO+wrhpGUPlN7MzkOu9NW0yRklpxX7OagfdFALjzx5vD X-Received: by 2002:a05:6e02:1b05:b0:310:fa98:25cf with SMTP id i5-20020a056e021b0500b00310fa9825cfmr4851195ilv.19.1675164015123; Tue, 31 Jan 2023 03:20:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675164015; cv=none; d=google.com; s=arc-20160816; b=xzNFlV6uy5NHcVvhmBx65Bhm7BQe7i0HmLFDc1nWsr2oTUDfmX2/ntLybPtdIF9U3q aHBhUibfvgSN8YCnoBHK7Jh5kda4xqFP/B3qNDQjEHs07b0DfekCi9T0JblVBQbp9UW6 whuT5QOs3lzLjYGfk7I2hyYQty/OcJY+B79YbMm9X8WrkIodUFNv85LpHkVNIH9Rdrdu +MIGWuWguUTpB57Hcs8tFg0w3Ye80JYFw+NzjWvsb1OeDk/LIgXlowinUCsC+V4eZmeG 1PNFl0su/cmosWdQTpaPbdy4rzDh9oVrnZIHjXrhmxGBnh7CmanuyN0UiLauXpVkOPlJ e1pg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from; bh=R8D3Th8I1IO9TqpPetc9B+2xxYVanal7MHUmoT086jY=; b=gWcoA9hKyCCnyqPUAcki5WDWHY1i2DqfBYBOtsChGU+ro1vaSqpMOBsGw4YGrClPNI QYvRKHNYcKhQQs/9Muect2ugRoTw6poCDD5k5uz9Cyx1Wb+rlH3PdVcYGT8bH+5J455G pegKIeCSomYbbW2UUHMAbqwzRjwOqNEDFvxo8XltokyWk/xE7g1bsqVbIURnJ+jmPfaU 1AOVi8+OYh1UYRTkJ5MO8E25ZHrnz2DkWHWTLYePrgsrT0449h9taL8q5O5+y5rautk6 cvt00UdB77DLRDboD1vKPd9iMwgvsITvcAGd8CFct/kbcaW+0T1pFYeAW3sP+VhcsNBz uSwg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Return-Path: Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id p5-20020a056e02144500b0030d885207eesi1024502ilo.3.2023.01.31.03.20.14 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 31 Jan 2023 03:20:14 -0800 (PST) Received-SPF: pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of ubely@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=ubely@ilbers.de Received: from baighyz.m.ilbers.de (host-80-81-17-52.static.customer.m-online.net [80.81.17.52]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 30VBKCiJ021003 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 31 Jan 2023 12:20:13 +0100 From: Uladzimir Bely To: isar-users@googlegroups.com Subject: [PATCH] deb-dl-dir: Fallback to copying when import-export Date: Tue, 31 Jan 2023 12:20:12 +0100 Message-Id: <20230131112012.24054-1-ubely@ilbers.de> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-TUID: jJfC6bznaPGF By default, hardlinks are used when doing DL_DIR import and export. This fails if DL_DIR's filesystem differs from TMPDIR's one. Fallback to file copying (with lower performance and huge disk usage) in this case. Signed-off-by: Uladzimir Bely --- meta/classes/deb-dl-dir.bbclass | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/meta/classes/deb-dl-dir.bbclass b/meta/classes/deb-dl-dir.bbclass index 7db25251..d572e6fb 100644 --- a/meta/classes/deb-dl-dir.bbclass +++ b/meta/classes/deb-dl-dir.bbclass @@ -80,13 +80,20 @@ deb_dl_dir_import() { export pc="${DEBDIR}/${2}" export rootfs="${1}" sudo mkdir -p "${rootfs}"/var/cache/apt/archives/ + + # Use hardlinks with fallback to `cp` if different filesystems + export cmd="ln -Pf -t" + if [ "$(stat -c %m ${pc})" != "$(stat -c %m ${rootfs})" ]; then + export cmd="cp -n --no-preserve=owner" + fi + [ ! -d "${pc}" ] && return 0 flock -s "${pc}".lock -c ' set -e printenv | grep -q BB_VERBOSE_LOGS && set -x sudo find "${pc}" -type f -iname "*\.deb" -exec \ - ln -Pf -t "${rootfs}"/var/cache/apt/archives/ {} + + ${cmd} "${rootfs}"/var/cache/apt/archives/ {} + ' } @@ -94,6 +101,13 @@ deb_dl_dir_export() { export pc="${DEBDIR}/${2}" export rootfs="${1}" mkdir -p "${pc}" + + # Use hardlinks with fallback to `cp` if different filesystems + export cmd="ln -Pf" + if [ "$(stat -c %m ${pc})" != "$(stat -c %m ${rootfs})" ]; then + export cmd="cp -n" + fi + flock "${pc}".lock -c ' set -e printenv | grep -q BB_VERBOSE_LOGS && set -x @@ -109,7 +123,7 @@ deb_dl_dir_export() { if [ -n "$package" ]; then cmp --silent "$package" "$p" && continue fi - sudo ln -Pf "${p}" "${pc}" + sudo ${cmd} "${p}" "${pc}" done sudo chown -R $(id -u):$(id -g) "${pc}" ' -- 2.20.1