From df84bd484cb813fc5ab76c81ac2c35fdd78c8235 Mon Sep 17 00:00:00 2001 From: Mark Johnston Date: Wed, 25 Jun 2025 12:57:26 +0000 Subject: [PATCH] release: Sort keys in generate-ucl.lua When writing out the UCL file containing a package's metadata, metadata values consisting of key-value pairs were not sorted. For instance, in the certctl package we could have either "deps": { "FreeBSD-openssl": { ... }, "FreeBSD-caroot": { ... }, } or "deps": { "FreeBSD-caroot": { ... }, "FreeBSD-openssl": { ... }, } This breaks reproducibility. Use the undocumented third parameter to libucl's to_format() to request recursive sorting of keys. Reviewed by: manu, bapt MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D51021 --- release/packages/generate-ucl.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/packages/generate-ucl.lua b/release/packages/generate-ucl.lua index de52802913f..ae6ee58dd84 100755 --- a/release/packages/generate-ucl.lua +++ b/release/packages/generate-ucl.lua @@ -31,5 +31,5 @@ if not f then os.exit(1) end local obj = parser:get_object() -f:write(ucl.to_format(obj, 'ucl')) +f:write(ucl.to_format(obj, 'ucl', true)) f:close()