{"id":1715,"date":"2025-08-08T13:57:41","date_gmt":"2025-08-08T12:57:41","guid":{"rendered":"https:\/\/dominique.leuenberger.net\/blog\/?p=1715"},"modified":"2025-08-08T13:57:41","modified_gmt":"2025-08-08T12:57:41","slug":"tumbleweed-review-of-the-weeks-2025-31-32","status":"publish","type":"post","link":"https:\/\/dominique.leuenberger.net\/blog\/2025\/08\/tumbleweed-review-of-the-weeks-2025-31-32\/","title":{"rendered":"Tumbleweed \u2013 Review of the weeks 2025\/31 &amp; 32"},"content":{"rendered":"\n<p><strong>Dear Tumbleweed users and hackers,<\/strong><\/p>\n\n\n\n<p>Because August 1st is Switzerland\u2019s national holiday, I took the day off last Friday \u2014 which is my excuse for skipping last week\u2019s review. The most noteworthy technical change was mostly invisible: we switched FTP tree generation from <em>product-builder<\/em> to <em>product-composer<\/em>. This is essentially a rewrite, trimming years of accumulated features back to a more manageable set. One side effect is that product descriptions are now in YAML instead of XML \u2014 easier on the eyes.<\/p>\n\n\n\n<p>The published FTP tree looks largely unchanged, aside from a brief bug where appstream metadata wasn\u2019t registered, causing software centers like Discover and GNOME Software to miss it (now fixed). The main visible change affects ARM users: we merged the FTP trees for <code>armv6<\/code>, <code>armv7<\/code>, and <code>aarch64<\/code> into a single tree under the <code>ports\/aarch64<\/code> namespace. This saves several gigabytes on our mirrors by sharing large <code>noarch<\/code> packages.<\/p>\n\n\n\n<p>Since this results in bigger <code>repodata<\/code> containing all architectures, the new product composer supports \u201csplit repodata for merged trees\u201d \u2014 also used in Leap 16.0. ARM users who prefer smaller metadata can append <code>\/$basearch<\/code> to the end of their OSS repo URL, and <code>zypp<\/code> will then only refresh the relevant subset.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Other than that rather technical-only change, we of course also published nine snapshots (0725, 0727, 0728, 0730, 0801, 0803, 0804, 0805, and 0806)  for your updating fun, containing these changes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Apache 2.4.65<\/li>\n\n\n\n<li>pipewire 1.4.7<\/li>\n\n\n\n<li>Mozilla Firefox 141.0<\/li>\n\n\n\n<li>GStreamer 1.26.4<\/li>\n\n\n\n<li>Linux kernel 6.15.8<\/li>\n\n\n\n<li>mozilla-nss 3.113<\/li>\n\n\n\n<li>mozjs 128.13.0 (javascript engine used by e.g GNOME)<\/li>\n\n\n\n<li>Virtualbox 7.1.12a<\/li>\n\n\n\n<li>nvme-cli 2.15 (if you have scripts using the short parameter &#8211;output, you will need to change that to &#8211;output-format)<\/li>\n\n\n\n<li>Mesa 25.1.7<\/li>\n\n\n\n<li>libvirt 11.6.0<\/li>\n\n\n\n<li>GCC 15.2 RC<\/li>\n\n\n\n<li>gnutls 3.8.10<\/li>\n\n\n\n<li>container-selinux 2.240.0: containers no longer have the implicit right to change SELinux labels. If you require this, you will need to enable the new boolean <code>container_modify_selinux_labels<\/code><\/li>\n\n\n\n<li>gnome-shell 48.4<\/li>\n<\/ul>\n\n\n\n<p>The next changes being prepared and tested currently are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mozilla Firefox 141.0.2<\/li>\n\n\n\n<li>KDE Plasma 6.4.4<\/li>\n\n\n\n<li>Linux kernel 6.16.0<\/li>\n\n\n\n<li>openSSL 3.5.2<\/li>\n\n\n\n<li>Mesa 25.2<\/li>\n\n\n\n<li>python pytest 8.4.1<\/li>\n\n\n\n<li>glibc 2.42<\/li>\n\n\n\n<li>openSUSE-welcome: prepare infra to have different &#8216;welcome apps&#8217; per desktop (e.g gnome-tour on gnome)<\/li>\n\n\n\n<li>GNU gettext 0.25.1<\/li>\n\n\n\n<li>nftables 1.1.4: issues detected by openQA in combination with netavark<\/li>\n\n\n\n<li>Bash 5.3<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dear Tumbleweed users and hackers, Because August 1st is Switzerland\u2019s national holiday, I took the day off last Friday \u2014 which is my excuse for skipping last week\u2019s review. The most noteworthy technical change was mostly invisible: we switched FTP tree generation from product-builder to product-composer. This is essentially a rewrite, trimming years of accumulated [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1715","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/posts\/1715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/comments?post=1715"}],"version-history":[{"count":1,"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/posts\/1715\/revisions"}],"predecessor-version":[{"id":1716,"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/posts\/1715\/revisions\/1716"}],"wp:attachment":[{"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/media?parent=1715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/categories?post=1715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dominique.leuenberger.net\/blog\/wp-json\/wp\/v2\/tags?post=1715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}