From nobody Thu Feb 5 03:45:08 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4f635J1DyZz6R7C5 for ; Thu, 05 Feb 2026 03:45:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4f635J0dtWz3yjM for ; Thu, 05 Feb 2026 03:45:08 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770263108; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GA7l6YMZasX+lPe1+3W6dWv+RXWpecIp9me15KBW9BY=; b=e5CNLDkSan+NwuVeIWpixAOOGb96ol/kaHQGYA4BenVgDDMXmGJzBnAmsVv+5hltEJnwRN 8EvrpLNsFsOR+suIftzVYvqyMkgwjonbzRxLDkF1vqznM4Ul0Ctsu5FnPEGmnlYSQrP9b9 T3saJd8pecn6JttcHCWPUmQIzFR/nw/RYoEOAOyGnqQGHyIejHBrGwADjTswpg9G2DR55L xwm3MSSfn/vH7VYNBVF/UD5QGnrsJxKJHYukhY+Ox8h5i1Z4DPCI0h6BHPkkVOT/cqpJEG JsOPzme1HFITr7n1QRc5arwWucSMp7+JZtnhwAzFtzG2MSflK9pbhxXt3Ndvvg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1770263108; a=rsa-sha256; cv=none; b=r0814OpMl2AsdpJAW0rbx2oh0pOMjjMiZOh3Buz/jYAA6zkDI+5N1273Dy71klMnboBsLL qm/pN5MrIleNOurWaEtlNO6Ts3v2+fkoiXKceeH2jhyxh1oqco1ymua1JYMeZLXnIvolSy rSDIBYAIn1GTi1jLH85kefGeHCegFNPoIgrCu8b/p4ZwcnUkOtzIa/wjKqTKSqe694ULhk OtpKtLgw+z8ri1ncAjaFtO3jYNzBzdfh3jlJ+xyv1kMrdtFsdFrHyON/7bjTYb9iMH15Nd YieiIFI1QfKrNd1PqopsL2PBf35LFoiSj6ELxqJWQVJl9NskE3ycODuB0sn+IA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1770263108; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=GA7l6YMZasX+lPe1+3W6dWv+RXWpecIp9me15KBW9BY=; b=TQyHIBkqDS8xp7mzTYQf1yoDCJDpys4H6WIVuwVbMg3lBZKs8XeMMwQ7eB8BCy2p6sHHqF LenUyPqLHIoKLKAzmoU8hXx36C0+oD/TAFi+9st+zST2A0zNfKVrK17noo71NzirpA5DnM cREdjKlO+nq9EOnI6AKBNV4Tw75Xwk6JEN90RyGYghA0r0pceUYv3X9TaCyFAdK+auGjgo TTIm7qr5KHy33Iymyf/2aBHCFiVzOEE3TDNOa+q/k9HmpOjsw36nDm/1R3YzqmVOIYdR0L +G77JRt6/tC1Ioy7w6p7Hl+Lz2sMefOeOicm+KIoGJ8Q6ijC1ZvX9Rqqlu075g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4f635J07Xyz1RMD for ; Thu, 05 Feb 2026 03:45:08 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 459f0 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 05 Feb 2026 03:45:08 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Xin LI Subject: git: 4f7336a93cb8 - main - etcupdate: Do not ignore empty files. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: delphij X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4f7336a93cb84a0633ca9aa715e474625b4adce5 Auto-Submitted: auto-generated Date: Thu, 05 Feb 2026 03:45:08 +0000 Message-Id: <69841244.459f0.6543ed67@gitrepo.freebsd.org> The branch main has been updated by delphij: URL: https://cgit.FreeBSD.org/src/commit/?id=4f7336a93cb84a0633ca9aa715e474625b4adce5 commit 4f7336a93cb84a0633ca9aa715e474625b4adce5 Author: Xin LI AuthorDate: 2026-01-29 03:23:15 +0000 Commit: Xin LI CommitDate: 2026-02-05 03:44:26 +0000 etcupdate: Do not ignore empty files. PR: bin/292773 Reviewed by: markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D54935 --- usr.sbin/etcupdate/etcupdate.sh | 4 -- usr.sbin/etcupdate/tests/Makefile | 1 + usr.sbin/etcupdate/tests/empty_file_test.sh | 86 +++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 4 deletions(-) diff --git a/usr.sbin/etcupdate/etcupdate.sh b/usr.sbin/etcupdate/etcupdate.sh index 7bddd6593b56..8f4737136d72 100755 --- a/usr.sbin/etcupdate/etcupdate.sh +++ b/usr.sbin/etcupdate/etcupdate.sh @@ -242,10 +242,6 @@ build_tree() (cd $1 && printf '%s\n' $autogenfiles >> $metatmp && \ rm -f $autogenfiles) || return 1 - # Remove empty files. These just clutter the output of 'diff'. - (cd $1 && find . -type f -size 0 -delete -print >> $metatmp) || \ - return 1 - # Trim empty directories. (cd $1 && find . -depth -type d -empty -delete -print >> $metatmp) || \ return 1 diff --git a/usr.sbin/etcupdate/tests/Makefile b/usr.sbin/etcupdate/tests/Makefile index ba0b6223576b..8dc9bef0eb25 100644 --- a/usr.sbin/etcupdate/tests/Makefile +++ b/usr.sbin/etcupdate/tests/Makefile @@ -1,6 +1,7 @@ PLAIN_TESTS_SH= .for test in always_test \ conflicts_test \ + empty_file_test \ fbsdid_test \ ignore_test \ preworld_test \ diff --git a/usr.sbin/etcupdate/tests/empty_file_test.sh b/usr.sbin/etcupdate/tests/empty_file_test.sh new file mode 100755 index 000000000000..5fe7a5ffb2b3 --- /dev/null +++ b/usr.sbin/etcupdate/tests/empty_file_test.sh @@ -0,0 +1,86 @@ +#!/bin/sh + +# Regression test for "etcupdate: Do not ignore empty files" + +FAILED=no +WORKDIR=$(pwd)/work + +usage() +{ + echo "Usage: empty_file_test.sh [-s script] [-w workdir]" + exit 1 +} + +COMMAND=etcupdate +while getopts "s:w:" option; do + case $option in + s) + COMMAND="sh $OPTARG" + ;; + w) + WORKDIR=$OPTARG + ;; + *) + echo + usage + ;; + esac +done +shift $((OPTIND - 1)) +if [ $# -ne 0 ]; then + usage +fi + +SRC=$WORKDIR/src +DEST=$WORKDIR/dest +TEST=$WORKDIR/test + +# Clean up +rm -rf $WORKDIR + +# Create a mock source tree +mkdir -p $SRC +touch $SRC/empty_file + +# Create a mock make script +cat > $WORKDIR/mock_make.sh < "\$DESTDIR/METALOG" + fi + ;; + esac +done +exit 0 +EOF +chmod +x $WORKDIR/mock_make.sh + +# Run etcupdate +# Use -B to skip build targets +# Use -N to run without root privileges +# Use 'extract' command to bypass root check in 'update' command +$COMMAND extract -N -B -s $SRC -d $WORKDIR -m $WORKDIR/mock_make.sh > $WORKDIR/test.out 2>&1 + +if [ -f $WORKDIR/current/etc/empty_file ]; then + echo "Empty file preserved." +else + echo "Empty file missing from current tree." + FAILED=yes +fi + +[ "${FAILED}" = no ]