diff options
124 files changed, 3151 insertions, 313 deletions
@@ -5,6 +5,23 @@ they are unavoidable. You should get into the habit of checking this file for changes each time you update your ports collection, before attempting any port upgrades. +20250520: + AFFECTS: users of databases/mongodb60 + AUTHOR: ronald@FreeBSD.org + + MongoDB version 6.0 is End of Life starting August 2025. + Please make sure you are running MongoDB version 7.0 or higher. + In-place upgrades are supported from version 6.0 to 7.0. + For an in-place upgrade it is important that the + 'featureCompatibilityVersion' is set to 6.0 before the upgrade. + See: https://www.mongodb.com/docs/v7.0/release-notes/7.0-upgrade-standalone/#feature-compatibility-version + + TL;DR, run these commands in mongodb60 before upgrading: + (see `pkg info -D mongodb60` how to install mongosh) + $ npx mongosh mongodb://127.0.0.1:27017/ # or use non-default port + > db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } ) + > exit + 20250519: AFFECTS: users of sysutils/screen AUTHOR: cy@FreeBSD.org diff --git a/biology/lamarc/Makefile b/biology/lamarc/Makefile index 46f4e102635a..d9758325fdc8 100644 --- a/biology/lamarc/Makefile +++ b/biology/lamarc/Makefile @@ -1,7 +1,7 @@ PORTNAME= lamarc PORTVERSION= 2.1.8 DISTVERSIONSUFFIX= -src -PORTREVISION= 1 +PORTREVISION= 2 PORTEPOCH= 1 CATEGORIES= biology MASTER_SITES= http://evolution.genetics.washington.edu/lamarc/download/ @@ -12,14 +12,14 @@ WWW= https://evolution.genetics.washington.edu/lamarc/ LICENSE= APACHE20 -BROKEN_FreeBSD_14= fails to compile: no matching function for call to 'make_pair' - USE_CXXSTD= c++98 GNU_CONFIGURE= yes WRKSRC= ${WRKDIR}/${DISTNAME:S,${DISTVERSIONSUFFIX},,} +CXXFLAGS+= -Wno-unused-parameter -Wno-mismatched-tags + PLIST_FILES= bin/${PORTNAME} PORTDOCS= * diff --git a/biology/lamarc/files/patch-src_control_chainmanager.cpp b/biology/lamarc/files/patch-src_control_chainmanager.cpp new file mode 100644 index 000000000000..bf21359154ab --- /dev/null +++ b/biology/lamarc/files/patch-src_control_chainmanager.cpp @@ -0,0 +1,11 @@ +--- src/control/chainmanager.cpp.orig 2025-05-18 23:57:13 UTC ++++ src/control/chainmanager.cpp +@@ -1631,7 +1631,7 @@ vector<pair<double, long int> > ChainManager::SortChai + unsigned long int i; + for (i = 0; i < temps.size(); ++i) + { +- orderedtemps.push_back(make_pair<double, long int>(temps[i].GetTemperature(), i)); ++ orderedtemps.push_back(make_pair(temps[i].GetTemperature(), i)); + } + std::sort(orderedtemps.begin(), orderedtemps.end()); + return orderedtemps; diff --git a/biology/lamarc/files/patch-src_tools_mathx.cpp b/biology/lamarc/files/patch-src_tools_mathx.cpp new file mode 100644 index 000000000000..527dfe4af344 --- /dev/null +++ b/biology/lamarc/files/patch-src_tools_mathx.cpp @@ -0,0 +1,11 @@ +--- src/tools/mathx.cpp.orig 2025-05-19 00:00:29 UTC ++++ src/tools/mathx.cpp +@@ -778,7 +778,7 @@ std::pair<DoubleVec1d, DoubleVec2d> EigenCalculator::E + { + eigvals[i] = a[i][i]; + } +- return std::make_pair<DoubleVec1d, DoubleVec2d>(eigvals, eigvecs); ++ return std::make_pair(eigvals, eigvecs); + } // Eigen + + //------------------------------------------------------------------------------------ diff --git a/biology/lamarc/files/patch-src_tools_stringx.h b/biology/lamarc/files/patch-src_tools_stringx.h index d1ded1a7d8da..04019393fbac 100644 --- a/biology/lamarc/files/patch-src_tools_stringx.h +++ b/biology/lamarc/files/patch-src_tools_stringx.h @@ -1,6 +1,6 @@ --- src/tools/stringx.h.orig 2011-04-23 02:02:49 UTC +++ src/tools/stringx.h -@@ -107,6 +107,26 @@ struct CIStringCompare : public std::bin +@@ -107,6 +107,26 @@ bool ciStringEqual(const std::string& s1, const std::s bool ciStringEqual(const std::string& s1, const std::string& s2); @@ -27,10 +27,11 @@ //------------------------------------------------------------------------------------ template <class T> -@@ -188,26 +208,6 @@ bool FromString(const std::string & in, +@@ -187,26 +207,6 @@ DoubleVec1d StringToDoubleVecOrBarf(const std::string& + bool FromString(const std::string & in, method_type& out); DoubleVec1d StringToDoubleVecOrBarf(const std::string& in); - +- -// functions for making xmltags and lines of xml -std::string MakeTag(const std::string& str); -std::string MakeCloseTag(const std::string& str); @@ -50,7 +51,6 @@ -std::string Pretty(long number, int width=DEFWIDTH); -std::string Pretty(unsigned long number, int width=DEFWIDTH); -std::string Pretty(std::string str, int width=DEFWIDTH); -- + bool StringCompare(const std::string&, const char*, long, long); bool StringCompare(const std::string&, const std::string&, long, long); - diff --git a/biology/lamarc/files/patch-src_tree_arrangervec.cpp b/biology/lamarc/files/patch-src_tree_arrangervec.cpp new file mode 100644 index 000000000000..ff3636f3a571 --- /dev/null +++ b/biology/lamarc/files/patch-src_tree_arrangervec.cpp @@ -0,0 +1,11 @@ +--- src/tree/arrangervec.cpp.orig 2025-05-18 23:55:20 UTC ++++ src/tree/arrangervec.cpp +@@ -116,7 +116,7 @@ void ArrangerVec::CopyAllMembers(const ArrangerVec & c + for(it = cp.arrangers.begin(); it != cp.arrangers.end(); it++) + { + Arranger* arr = (*it).second->Clone(); +- arrangers.insert(std::make_pair<string, Arranger*>(arr->GetName(), arr)); ++ arrangers.insert(std::make_pair(arr->GetName(), arr)); + } + } + } diff --git a/biology/lamarc/files/patch-src_tree_collector.cpp b/biology/lamarc/files/patch-src_tree_collector.cpp new file mode 100644 index 000000000000..bff56a70b261 --- /dev/null +++ b/biology/lamarc/files/patch-src_tree_collector.cpp @@ -0,0 +1,11 @@ +--- src/tree/collector.cpp.orig 2025-05-18 23:58:39 UTC ++++ src/tree/collector.cpp +@@ -204,7 +204,7 @@ void ParamCollector::AddParamSummary(ForceParameters f + + void ParamCollector::AddParamSummary(ForceParameters fp, long ncopy) + { +- m_paramsum.push_back(make_pair<ForceParameters, long>(fp, ncopy)); ++ m_paramsum.push_back(std::make_pair(fp, ncopy)); + } + + //------------------------------------------------------------------------------------ diff --git a/biology/lamarc/files/patch-src_tree_prior.cpp b/biology/lamarc/files/patch-src_tree_prior.cpp new file mode 100644 index 000000000000..a8dbf7ab04ed --- /dev/null +++ b/biology/lamarc/files/patch-src_tree_prior.cpp @@ -0,0 +1,17 @@ +--- src/tree/prior.cpp.orig 2025-05-18 23:58:05 UTC ++++ src/tree/prior.cpp +@@ -85,12 +85,12 @@ std::pair<double, double> Prior::RandomDraw() const + case LINEAR: + newparam = rnd.Float() * (m_upperbound - m_lowerbound) + m_lowerbound; + newlnparam = log(newparam); +- return std::make_pair<double, double>(newparam, newlnparam); ++ return std::make_pair(newparam, newlnparam); + break; + case LOGARITHMIC: + newlnparam = rnd.Float() * (m_lnupper - m_lnlower) + m_lnlower; + newparam = exp(newlnparam); +- return std::make_pair<double, double>(newparam, newlnparam); ++ return std::make_pair(newparam, newlnparam); + break; + } + string e = "Unknown prior type " + ToString(m_priortype) + diff --git a/databases/mongodb60/Makefile b/databases/mongodb60/Makefile index dd2d6b2e3a10..a9e63d9f1d60 100644 --- a/databases/mongodb60/Makefile +++ b/databases/mongodb60/Makefile @@ -1,6 +1,7 @@ PORTNAME= mongodb DISTVERSIONPREFIX= r DISTVERSION= 6.0.23 +PORTREVISION= 1 CATEGORIES= databases net MASTER_SITES= https://hg.mozilla.org/mozilla-central/raw-rev/:patches PKGNAMESUFFIX= ${DISTVERSION:R:S/.//} @@ -18,6 +19,9 @@ LICENSE_NAME_SSPLv1= Server Side Public License Version 1 LICENSE_FILE_SSPLv1= ${WRKSRC}/LICENSE-Community.txt LICENSE_PERMS_SSPLv1= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept +DEPRECATED= EOL starting August 2025, see https://www.mongodb.com/legal/support-policy/lifecycles, please use databases/mongodb60 +EXPIRATION_DATE= 2025-10-30 + ONLY_FOR_ARCHS= aarch64 amd64 powerpc64le ONLY_FOR_ARCHS_REASON= only ported to amd64, aarch64, and powerpc64le on FreeBSD; upstream supports arm64, ppc64le, s390x, and x86-64 @@ -121,7 +125,7 @@ MOZJS_ARCH= ${ARCH} .endif post-extract: - # Verify we downloaded the proper mozjs git tag. +# Verify we downloaded the proper mozjs git tag. ${SH} -xc "test \"X`grep -E '^LIB_GIT_REVISION=' ${WRKSRC}/src/third_party/mozjs/get-sources.sh`\" = \"XLIB_GIT_REVISION=${MOZJS_TAG}\"" post-patch: diff --git a/deskutils/xfce4-generic-slider/Makefile b/deskutils/xfce4-generic-slider/Makefile index b1921eee2d1e..4f4b3324f86e 100644 --- a/deskutils/xfce4-generic-slider/Makefile +++ b/deskutils/xfce4-generic-slider/Makefile @@ -1,5 +1,5 @@ PORTNAME= xfce4-generic-slider -PORTVERSION= 1.0.1 +PORTVERSION= 1.1.0 PORTEPOCH= 1 CATEGORIES= deskutils xfce MASTER_SITES= XFCE/panel-plugins @@ -12,19 +12,16 @@ WWW= https://docs.xfce.org/panel-plugins/xfce4-generic-slider/start LICENSE= GPLv3 LICENSE_FILE= ${WRKSRC}/COPYING -LIB_DEPENDS= libharfbuzz.so:print/harfbuzz - -USES= compiler:c11 gettext gmake gnome libtool pkgconfig tar:bzip2 xfce -USE_GNOME= cairo gdkpixbuf gtk30 +USES= compiler:c11 gettext gnome meson pkgconfig tar:xz xfce +USE_GNOME= gtk30 USE_XFCE= libmenu panel -GNU_CONFIGURE= yes -INSTALL_TARGET= install-strip +OPTIONS_DEFINE= NLS +OPTIONS_SUB= yes -OPTIONS_DEFINE= NLS -OPTIONS_SUB= yes +NLS_USES= gettext-runtime -NLS_CONFIGURE_ENABLE= nls -NLS_USES= gettext-runtime +post-patch-NLS-off: + @${REINPLACE_CMD} -e "/^subdir('po')/d" ${WRKSRC}/meson.build .include <bsd.port.mk> diff --git a/deskutils/xfce4-generic-slider/distinfo b/deskutils/xfce4-generic-slider/distinfo index dfaf3aca5bb9..e742a8554f9e 100644 --- a/deskutils/xfce4-generic-slider/distinfo +++ b/deskutils/xfce4-generic-slider/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1735163666 -SHA256 (xfce4/xfce4-generic-slider-1.0.1.tar.bz2) = 5f3f1da2fa1428ddc51dbbdcdf119f88b023260b605edd3d1d796261a047f0ec -SIZE (xfce4/xfce4-generic-slider-1.0.1.tar.bz2) = 424157 +TIMESTAMP = 1747675607 +SHA256 (xfce4/xfce4-generic-slider-1.1.0.tar.xz) = 0cef3174157621e14d123a9d246ee3b1d7c8ef89579377398305a4eb33636f5f +SIZE (xfce4/xfce4-generic-slider-1.1.0.tar.xz) = 51264 diff --git a/deskutils/xfce4-generic-slider/pkg-plist b/deskutils/xfce4-generic-slider/pkg-plist index eaa8a667797f..3604fe70b200 100644 --- a/deskutils/xfce4-generic-slider/pkg-plist +++ b/deskutils/xfce4-generic-slider/pkg-plist @@ -13,6 +13,7 @@ share/icons/hicolor/scalable/apps/org.xfce.panel.genericslider.svg %%NLS%%share/locale/de/LC_MESSAGES/xfce4-generic-slider.mo %%NLS%%share/locale/en_GB/LC_MESSAGES/xfce4-generic-slider.mo %%NLS%%share/locale/es/LC_MESSAGES/xfce4-generic-slider.mo +%%NLS%%share/locale/et/LC_MESSAGES/xfce4-generic-slider.mo %%NLS%%share/locale/eu/LC_MESSAGES/xfce4-generic-slider.mo %%NLS%%share/locale/fi/LC_MESSAGES/xfce4-generic-slider.mo %%NLS%%share/locale/fr/LC_MESSAGES/xfce4-generic-slider.mo diff --git a/devel/fatal/Makefile b/devel/fatal/Makefile index a894b53673d6..9019a276609a 100644 --- a/devel/fatal/Makefile +++ b/devel/fatal/Makefile @@ -1,6 +1,6 @@ PORTNAME= fatal DISTVERSIONPREFIX= v -DISTVERSION= 2025.05.12.00 +DISTVERSION= 2025.05.19.00 CATEGORIES= devel MAINTAINER= yuri@FreeBSD.org diff --git a/devel/fatal/distinfo b/devel/fatal/distinfo index 819a05beddae..9afc9423ea35 100644 --- a/devel/fatal/distinfo +++ b/devel/fatal/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1747102739 -SHA256 (facebook-fatal-v2025.05.12.00_GH0.tar.gz) = e2e98d8bf17eba550c336e8f7ffccf025bde3c4c6b87c30cd66b7ffac6fef692 -SIZE (facebook-fatal-v2025.05.12.00_GH0.tar.gz) = 656381 +TIMESTAMP = 1747730524 +SHA256 (facebook-fatal-v2025.05.19.00_GH0.tar.gz) = 94d0a8d8fae5b094d0e8928dc84d47688254dbb329a70a6d3b9a773002ba4e69 +SIZE (facebook-fatal-v2025.05.19.00_GH0.tar.gz) = 656391 diff --git a/devel/fbthrift/Makefile b/devel/fbthrift/Makefile index 88a7fedb5e1f..505908c30923 100644 --- a/devel/fbthrift/Makefile +++ b/devel/fbthrift/Makefile @@ -1,6 +1,6 @@ PORTNAME= fbthrift DISTVERSIONPREFIX= v -DISTVERSION= 2025.05.12.00 +DISTVERSION= 2025.05.19.00 CATEGORIES= devel MAINTAINER= yuri@FreeBSD.org diff --git a/devel/fbthrift/distinfo b/devel/fbthrift/distinfo index 4f8c90ce9e28..6211876e419e 100644 --- a/devel/fbthrift/distinfo +++ b/devel/fbthrift/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1747102737 -SHA256 (facebook-fbthrift-v2025.05.12.00_GH0.tar.gz) = 1686c6fe25998e651c1f4a565cec0035f6603141fc74a8495f1a72a332b18a62 -SIZE (facebook-fbthrift-v2025.05.12.00_GH0.tar.gz) = 15150629 +TIMESTAMP = 1747730523 +SHA256 (facebook-fbthrift-v2025.05.19.00_GH0.tar.gz) = 418aaaa695c843ccd0eb445e7b782e315783b5639d9ce5b40e4b5aa708c73245 +SIZE (facebook-fbthrift-v2025.05.19.00_GH0.tar.gz) = 15177653 diff --git a/devel/fbthrift/pkg-plist b/devel/fbthrift/pkg-plist index feafc98b716d..28dea75e4fe0 100644 --- a/devel/fbthrift/pkg-plist +++ b/devel/fbthrift/pkg-plist @@ -320,6 +320,7 @@ include/thrift/lib/cpp2/gen/module_data_cpp.h include/thrift/lib/cpp2/gen/module_data_h.h include/thrift/lib/cpp2/gen/module_metadata_cpp.h include/thrift/lib/cpp2/gen/module_metadata_h.h +include/thrift/lib/cpp2/gen/module_method_decorator_h.h include/thrift/lib/cpp2/gen/module_sinit_cpp.h include/thrift/lib/cpp2/gen/module_types_cpp.h include/thrift/lib/cpp2/gen/module_types_h.h diff --git a/devel/folly/Makefile b/devel/folly/Makefile index 93cb3a378f5c..3b459cde9177 100644 --- a/devel/folly/Makefile +++ b/devel/folly/Makefile @@ -1,6 +1,6 @@ PORTNAME= folly DISTVERSIONPREFIX= v -DISTVERSION= 2025.05.12.00 +DISTVERSION= 2025.05.19.00 CATEGORIES= devel MAINTAINER= yuri@FreeBSD.org diff --git a/devel/folly/distinfo b/devel/folly/distinfo index f502c79aa607..812b7a06f628 100644 --- a/devel/folly/distinfo +++ b/devel/folly/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1747102732 -SHA256 (facebook-folly-v2025.05.12.00_GH0.tar.gz) = 027e69150d86671c02824201f33b3a5fb945fb1b9d5561b48b43215b1a572152 -SIZE (facebook-folly-v2025.05.12.00_GH0.tar.gz) = 4466657 +TIMESTAMP = 1747730517 +SHA256 (facebook-folly-v2025.05.19.00_GH0.tar.gz) = c60daf2e709e0a3fd428d09a1e3439c1836189d4248189a1a45f33500de90eac +SIZE (facebook-folly-v2025.05.19.00_GH0.tar.gz) = 4466764 diff --git a/devel/fsx/Makefile b/devel/fsx/Makefile index dbe33a7a74be..92c1fb694633 100644 --- a/devel/fsx/Makefile +++ b/devel/fsx/Makefile @@ -1,6 +1,5 @@ PORTNAME= fsx -DISTVERSION= 0.2.0 -PORTREVISION= 11 +DISTVERSION= 0.3.0 CATEGORIES= devel MASTER_SITES= CRATESIO DISTFILES= ${CARGO_DIST_SUBDIR}/${DISTNAME}${CARGO_CRATE_EXT} diff --git a/devel/fsx/Makefile.crates b/devel/fsx/Makefile.crates index 37ee137577cc..606abc5c429a 100644 --- a/devel/fsx/Makefile.crates +++ b/devel/fsx/Makefile.crates @@ -1,59 +1,65 @@ CARGO_CRATES= aho-corasick-0.7.20 \ - assert_cmd-2.0.7 \ + anstream-0.6.13 \ + anstyle-1.0.6 \ + anstyle-parse-0.2.3 \ + anstyle-query-1.0.2 \ + anstyle-wincon-3.0.2 \ + assert_cmd-2.0.17 \ autocfg-1.1.0 \ bitflags-1.3.2 \ bitflags-2.4.1 \ bstr-1.1.0 \ cfg-if-1.0.0 \ - clap-4.1.11 \ + cfg_aliases-0.1.1 \ + clap-4.5.13 \ clap-verbosity-flag-2.1.1 \ - clap_derive-4.1.9 \ - clap_lex-0.3.0 \ + clap_builder-4.5.13 \ + clap_derive-4.5.13 \ + clap_lex-0.7.4 \ + colorchoice-1.0.0 \ const_panic-0.2.7 \ ctor-0.1.26 \ diff-0.1.13 \ difflib-0.4.0 \ doc-comment-0.3.3 \ - either-1.8.0 \ - env_logger-0.10.0 \ + env_filter-0.1.0 \ + env_logger-0.11.3 \ + equivalent-1.0.1 \ errno-0.3.8 \ fastrand-2.0.1 \ futures-0.3.27 \ - futures-channel-0.3.27 \ - futures-core-0.3.27 \ + futures-channel-0.3.31 \ + futures-core-0.3.31 \ futures-executor-0.3.27 \ - futures-io-0.3.27 \ - futures-macro-0.3.27 \ - futures-sink-0.3.27 \ - futures-task-0.3.27 \ + futures-io-0.3.31 \ + futures-macro-0.3.31 \ + futures-sink-0.3.31 \ + futures-task-0.3.31 \ futures-timer-3.0.2 \ - futures-util-0.3.27 \ + futures-util-0.3.31 \ getrandom-0.2.8 \ - heck-0.4.0 \ - hermit-abi-0.3.3 \ + hashbrown-0.14.3 \ + heck-0.5.0 \ humantime-2.1.0 \ - is-terminal-0.4.10 \ - itertools-0.10.5 \ + indexmap-2.2.5 \ konst_kernel-0.3.4 \ - libc-0.2.151 \ + libc-0.2.155 \ linux-raw-sys-0.4.12 \ - log-0.4.17 \ + log-0.4.21 \ + mdconfig-0.2.0 \ memchr-2.5.0 \ - nix-0.27.1 \ + nix-0.28.0 \ once_cell-1.17.0 \ - os_str_bytes-6.4.1 \ output_vt100-0.1.3 \ pin-project-lite-0.2.9 \ pin-utils-0.1.0 \ ppv-lite86-0.2.17 \ - predicates-2.1.5 \ - predicates-core-1.0.5 \ + predicates-3.1.3 \ + predicates-core-1.0.9 \ predicates-tree-1.0.7 \ pretty_assertions-1.3.0 \ - proc-macro-error-1.0.4 \ - proc-macro-error-attr-1.0.4 \ - proc-macro2-1.0.63 \ - quote-1.0.23 \ + proc-macro2-1.0.95 \ + quote-1.0.40 \ rand-0.8.5 \ rand_chacha-0.3.1 \ rand_core-0.6.4 \ @@ -67,24 +73,25 @@ CARGO_CRATES= aho-corasick-0.7.20 \ rstest_macros-0.16.0 \ rustc_version-0.4.0 \ rustix-0.38.28 \ - safemem-0.3.3 \ semver-1.0.16 \ serde-1.0.152 \ serde_derive-1.0.152 \ + serde_spanned-0.6.5 \ slab-0.4.8 \ - strsim-0.10.0 \ + strsim-0.11.1 \ syn-1.0.107 \ + syn-2.0.101 \ tempfile-3.9.0 \ - termcolor-1.1.3 \ termtree-0.4.0 \ - toml-0.5.11 \ + toml-0.8.11 \ + toml_datetime-0.6.5 \ + toml_edit-0.22.7 \ unicode-ident-1.0.6 \ - version_check-0.9.4 \ + utf8parse-0.2.1 \ wait-timeout-0.2.0 \ wasi-0.11.0+wasi-snapshot-preview1 \ winapi-0.3.9 \ winapi-i686-pc-windows-gnu-0.4.0 \ - winapi-util-0.1.5 \ winapi-x86_64-pc-windows-gnu-0.4.0 \ windows-sys-0.52.0 \ windows-targets-0.52.0 \ @@ -95,4 +102,5 @@ CARGO_CRATES= aho-corasick-0.7.20 \ windows_x86_64_gnu-0.52.0 \ windows_x86_64_gnullvm-0.52.0 \ windows_x86_64_msvc-0.52.0 \ + winnow-0.6.5 \ yansi-0.5.1 diff --git a/devel/fsx/distinfo b/devel/fsx/distinfo index 9968304b082e..805addc716cd 100644 --- a/devel/fsx/distinfo +++ b/devel/fsx/distinfo @@ -1,10 +1,20 @@ -TIMESTAMP = 1703884555 -SHA256 (rust/crates/fsx-0.2.0.crate) = f558c80900a8eab00083883913feca6384b9a7a275a95edcd6edb2d2394d45d3 -SIZE (rust/crates/fsx-0.2.0.crate) = 38027 +TIMESTAMP = 1747689030 +SHA256 (rust/crates/fsx-0.3.0.crate) = 7613cc330932cb586d1ecd01a3c304ee31733580ce1614cae36e4779a0caeb45 +SIZE (rust/crates/fsx-0.3.0.crate) = 39312 SHA256 (rust/crates/aho-corasick-0.7.20.crate) = cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac SIZE (rust/crates/aho-corasick-0.7.20.crate) = 111440 -SHA256 (rust/crates/assert_cmd-2.0.7.crate) = fa3d466004a8b4cb1bc34044240a2fd29d17607e2e3bd613eb44fd48e8100da3 -SIZE (rust/crates/assert_cmd-2.0.7.crate) = 23600 +SHA256 (rust/crates/anstream-0.6.13.crate) = d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb +SIZE (rust/crates/anstream-0.6.13.crate) = 30928 +SHA256 (rust/crates/anstyle-1.0.6.crate) = 8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc +SIZE (rust/crates/anstyle-1.0.6.crate) = 14604 +SHA256 (rust/crates/anstyle-parse-0.2.3.crate) = c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c +SIZE (rust/crates/anstyle-parse-0.2.3.crate) = 24699 +SHA256 (rust/crates/anstyle-query-1.0.2.crate) = e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648 +SIZE (rust/crates/anstyle-query-1.0.2.crate) = 8739 +SHA256 (rust/crates/anstyle-wincon-3.0.2.crate) = 1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7 +SIZE (rust/crates/anstyle-wincon-3.0.2.crate) = 11272 +SHA256 (rust/crates/assert_cmd-2.0.17.crate) = 2bd389a4b2970a01282ee455294913c0a43724daedcd1a24c3eb0ec1c1320b66 +SIZE (rust/crates/assert_cmd-2.0.17.crate) = 26914 SHA256 (rust/crates/autocfg-1.1.0.crate) = d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa SIZE (rust/crates/autocfg-1.1.0.crate) = 13272 SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a @@ -15,14 +25,20 @@ SHA256 (rust/crates/bstr-1.1.0.crate) = b45ea9b00a7b3f2988e9a65ad3917e62123c38db SIZE (rust/crates/bstr-1.1.0.crate) = 340878 SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934 -SHA256 (rust/crates/clap-4.1.11.crate) = 42dfd32784433290c51d92c438bb72ea5063797fc3cc9a21a8c4346bebbb2098 -SIZE (rust/crates/clap-4.1.11.crate) = 207841 +SHA256 (rust/crates/cfg_aliases-0.1.1.crate) = fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e +SIZE (rust/crates/cfg_aliases-0.1.1.crate) = 6009 +SHA256 (rust/crates/clap-4.5.13.crate) = 0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc +SIZE (rust/crates/clap-4.5.13.crate) = 56267 SHA256 (rust/crates/clap-verbosity-flag-2.1.1.crate) = 3c90e95e5bd4e8ac34fa6f37c774b0c6f8ed06ea90c79931fd448fcf941a9767 SIZE (rust/crates/clap-verbosity-flag-2.1.1.crate) = 12125 -SHA256 (rust/crates/clap_derive-4.1.9.crate) = fddf67631444a3a3e3e5ac51c36a5e01335302de677bd78759eaa90ab1f46644 -SIZE (rust/crates/clap_derive-4.1.9.crate) = 27888 -SHA256 (rust/crates/clap_lex-0.3.0.crate) = 0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8 -SIZE (rust/crates/clap_lex-0.3.0.crate) = 9671 +SHA256 (rust/crates/clap_builder-4.5.13.crate) = 64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99 +SIZE (rust/crates/clap_builder-4.5.13.crate) = 164093 +SHA256 (rust/crates/clap_derive-4.5.13.crate) = 501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0 +SIZE (rust/crates/clap_derive-4.5.13.crate) = 30132 +SHA256 (rust/crates/clap_lex-0.7.4.crate) = f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6 +SIZE (rust/crates/clap_lex-0.7.4.crate) = 12858 +SHA256 (rust/crates/colorchoice-1.0.0.crate) = acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7 +SIZE (rust/crates/colorchoice-1.0.0.crate) = 6857 SHA256 (rust/crates/const_panic-0.2.7.crate) = 58baae561b85ca19b3122a9ddd35c8ec40c3bcd14fe89921824eae73f7baffbf SIZE (rust/crates/const_panic-0.2.7.crate) = 48088 SHA256 (rust/crates/ctor-0.1.26.crate) = 6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096 @@ -33,62 +49,62 @@ SHA256 (rust/crates/difflib-0.4.0.crate) = 6184e33543162437515c2e2b48714794e3784 SIZE (rust/crates/difflib-0.4.0.crate) = 7638 SHA256 (rust/crates/doc-comment-0.3.3.crate) = fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10 SIZE (rust/crates/doc-comment-0.3.3.crate) = 4123 -SHA256 (rust/crates/either-1.8.0.crate) = 90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797 -SIZE (rust/crates/either-1.8.0.crate) = 15992 -SHA256 (rust/crates/env_logger-0.10.0.crate) = 85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0 -SIZE (rust/crates/env_logger-0.10.0.crate) = 36574 +SHA256 (rust/crates/env_filter-0.1.0.crate) = a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea +SIZE (rust/crates/env_filter-0.1.0.crate) = 11553 +SHA256 (rust/crates/env_logger-0.11.3.crate) = 38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9 +SIZE (rust/crates/env_logger-0.11.3.crate) = 29704 +SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5 +SIZE (rust/crates/equivalent-1.0.1.crate) = 6615 SHA256 (rust/crates/errno-0.3.8.crate) = a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245 SIZE (rust/crates/errno-0.3.8.crate) = 10645 SHA256 (rust/crates/fastrand-2.0.1.crate) = 25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5 SIZE (rust/crates/fastrand-2.0.1.crate) = 14664 SHA256 (rust/crates/futures-0.3.27.crate) = 531ac96c6ff5fd7c62263c5e3c67a603af4fcaee2e1a0ae5565ba3a11e69e549 SIZE (rust/crates/futures-0.3.27.crate) = 52816 -SHA256 (rust/crates/futures-channel-0.3.27.crate) = 164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac -SIZE (rust/crates/futures-channel-0.3.27.crate) = 32278 -SHA256 (rust/crates/futures-core-0.3.27.crate) = 86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd -SIZE (rust/crates/futures-core-0.3.27.crate) = 14709 +SHA256 (rust/crates/futures-channel-0.3.31.crate) = 2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10 +SIZE (rust/crates/futures-channel-0.3.31.crate) = 31971 +SHA256 (rust/crates/futures-core-0.3.31.crate) = 05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e +SIZE (rust/crates/futures-core-0.3.31.crate) = 14318 SHA256 (rust/crates/futures-executor-0.3.27.crate) = 1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83 SIZE (rust/crates/futures-executor-0.3.27.crate) = 17745 -SHA256 (rust/crates/futures-io-0.3.27.crate) = 89d422fa3cbe3b40dca574ab087abb5bc98258ea57eea3fd6f1fa7162c778b91 -SIZE (rust/crates/futures-io-0.3.27.crate) = 8912 -SHA256 (rust/crates/futures-macro-0.3.27.crate) = 3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6 -SIZE (rust/crates/futures-macro-0.3.27.crate) = 11255 -SHA256 (rust/crates/futures-sink-0.3.27.crate) = ec93083a4aecafb2a80a885c9de1f0ccae9dbd32c2bb54b0c3a65690e0b8d2f2 -SIZE (rust/crates/futures-sink-0.3.27.crate) = 7853 -SHA256 (rust/crates/futures-task-0.3.27.crate) = fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879 -SIZE (rust/crates/futures-task-0.3.27.crate) = 11854 +SHA256 (rust/crates/futures-io-0.3.31.crate) = 9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6 +SIZE (rust/crates/futures-io-0.3.31.crate) = 9047 +SHA256 (rust/crates/futures-macro-0.3.31.crate) = 162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650 +SIZE (rust/crates/futures-macro-0.3.31.crate) = 11341 +SHA256 (rust/crates/futures-sink-0.3.31.crate) = e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7 +SIZE (rust/crates/futures-sink-0.3.31.crate) = 7958 +SHA256 (rust/crates/futures-task-0.3.31.crate) = f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988 +SIZE (rust/crates/futures-task-0.3.31.crate) = 11217 SHA256 (rust/crates/futures-timer-3.0.2.crate) = e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c SIZE (rust/crates/futures-timer-3.0.2.crate) = 19879 -SHA256 (rust/crates/futures-util-0.3.27.crate) = 3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab -SIZE (rust/crates/futures-util-0.3.27.crate) = 158556 +SHA256 (rust/crates/futures-util-0.3.31.crate) = 9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81 +SIZE (rust/crates/futures-util-0.3.31.crate) = 162124 SHA256 (rust/crates/getrandom-0.2.8.crate) = c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31 SIZE (rust/crates/getrandom-0.2.8.crate) = 30553 -SHA256 (rust/crates/heck-0.4.0.crate) = 2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9 -SIZE (rust/crates/heck-0.4.0.crate) = 11161 -SHA256 (rust/crates/hermit-abi-0.3.3.crate) = d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7 -SIZE (rust/crates/hermit-abi-0.3.3.crate) = 14253 +SHA256 (rust/crates/hashbrown-0.14.3.crate) = 290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604 +SIZE (rust/crates/hashbrown-0.14.3.crate) = 141425 +SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea +SIZE (rust/crates/heck-0.5.0.crate) = 11517 SHA256 (rust/crates/humantime-2.1.0.crate) = 9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4 SIZE (rust/crates/humantime-2.1.0.crate) = 16749 -SHA256 (rust/crates/is-terminal-0.4.10.crate) = 0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455 -SIZE (rust/crates/is-terminal-0.4.10.crate) = 7683 -SHA256 (rust/crates/itertools-0.10.5.crate) = b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473 -SIZE (rust/crates/itertools-0.10.5.crate) = 115354 +SHA256 (rust/crates/indexmap-2.2.5.crate) = 7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4 +SIZE (rust/crates/indexmap-2.2.5.crate) = 81498 SHA256 (rust/crates/konst_kernel-0.3.4.crate) = 7771682454392dfe62a909aba2c6efc6674e2ad0b678fbc33b154e2e1bd59b89 SIZE (rust/crates/konst_kernel-0.3.4.crate) = 23365 -SHA256 (rust/crates/libc-0.2.151.crate) = 302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4 -SIZE (rust/crates/libc-0.2.151.crate) = 736640 +SHA256 (rust/crates/libc-0.2.155.crate) = 97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c +SIZE (rust/crates/libc-0.2.155.crate) = 743539 SHA256 (rust/crates/linux-raw-sys-0.4.12.crate) = c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456 SIZE (rust/crates/linux-raw-sys-0.4.12.crate) = 1465800 -SHA256 (rust/crates/log-0.4.17.crate) = abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e -SIZE (rust/crates/log-0.4.17.crate) = 38028 +SHA256 (rust/crates/log-0.4.21.crate) = 90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c +SIZE (rust/crates/log-0.4.21.crate) = 43442 +SHA256 (rust/crates/mdconfig-0.2.0.crate) = cff02ee7b2a0815081bdc7c3dc00681c30577072db35787ea392aef8857fe34b +SIZE (rust/crates/mdconfig-0.2.0.crate) = 11390 SHA256 (rust/crates/memchr-2.5.0.crate) = 2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d SIZE (rust/crates/memchr-2.5.0.crate) = 65812 -SHA256 (rust/crates/nix-0.27.1.crate) = 2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053 -SIZE (rust/crates/nix-0.27.1.crate) = 286494 +SHA256 (rust/crates/nix-0.28.0.crate) = ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4 +SIZE (rust/crates/nix-0.28.0.crate) = 311086 SHA256 (rust/crates/once_cell-1.17.0.crate) = 6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66 SIZE (rust/crates/once_cell-1.17.0.crate) = 32736 -SHA256 (rust/crates/os_str_bytes-6.4.1.crate) = 9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee -SIZE (rust/crates/os_str_bytes-6.4.1.crate) = 23101 SHA256 (rust/crates/output_vt100-0.1.3.crate) = 628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66 SIZE (rust/crates/output_vt100-0.1.3.crate) = 4473 SHA256 (rust/crates/pin-project-lite-0.2.9.crate) = e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116 @@ -97,22 +113,18 @@ SHA256 (rust/crates/pin-utils-0.1.0.crate) = 8b870d8c151b6f2fb93e84a13146138f05d SIZE (rust/crates/pin-utils-0.1.0.crate) = 7580 SHA256 (rust/crates/ppv-lite86-0.2.17.crate) = 5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de SIZE (rust/crates/ppv-lite86-0.2.17.crate) = 22242 -SHA256 (rust/crates/predicates-2.1.5.crate) = 59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd -SIZE (rust/crates/predicates-2.1.5.crate) = 24165 -SHA256 (rust/crates/predicates-core-1.0.5.crate) = 72f883590242d3c6fc5bf50299011695fa6590c2c70eac95ee1bdb9a733ad1a2 -SIZE (rust/crates/predicates-core-1.0.5.crate) = 7773 +SHA256 (rust/crates/predicates-3.1.3.crate) = a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573 +SIZE (rust/crates/predicates-3.1.3.crate) = 24063 +SHA256 (rust/crates/predicates-core-1.0.9.crate) = 727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa +SIZE (rust/crates/predicates-core-1.0.9.crate) = 8618 SHA256 (rust/crates/predicates-tree-1.0.7.crate) = 54ff541861505aabf6ea722d2131ee980b8276e10a1297b94e896dd8b621850d SIZE (rust/crates/predicates-tree-1.0.7.crate) = 8145 SHA256 (rust/crates/pretty_assertions-1.3.0.crate) = a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755 SIZE (rust/crates/pretty_assertions-1.3.0.crate) = 79441 -SHA256 (rust/crates/proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c -SIZE (rust/crates/proc-macro-error-1.0.4.crate) = 25293 -SHA256 (rust/crates/proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869 -SIZE (rust/crates/proc-macro-error-attr-1.0.4.crate) = 7971 -SHA256 (rust/crates/proc-macro2-1.0.63.crate) = 7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb -SIZE (rust/crates/proc-macro2-1.0.63.crate) = 44867 -SHA256 (rust/crates/quote-1.0.23.crate) = 8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b -SIZE (rust/crates/quote-1.0.23.crate) = 28058 +SHA256 (rust/crates/proc-macro2-1.0.95.crate) = 02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778 +SIZE (rust/crates/proc-macro2-1.0.95.crate) = 51820 +SHA256 (rust/crates/quote-1.0.40.crate) = 1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d +SIZE (rust/crates/quote-1.0.40.crate) = 31063 SHA256 (rust/crates/rand-0.8.5.crate) = 34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404 SIZE (rust/crates/rand-0.8.5.crate) = 87113 SHA256 (rust/crates/rand_chacha-0.3.1.crate) = e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88 @@ -139,32 +151,36 @@ SHA256 (rust/crates/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15 SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175 SHA256 (rust/crates/rustix-0.38.28.crate) = 72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316 SIZE (rust/crates/rustix-0.38.28.crate) = 365398 -SHA256 (rust/crates/safemem-0.3.3.crate) = ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072 -SIZE (rust/crates/safemem-0.3.3.crate) = 7778 SHA256 (rust/crates/semver-1.0.16.crate) = 58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a SIZE (rust/crates/semver-1.0.16.crate) = 29850 SHA256 (rust/crates/serde-1.0.152.crate) = bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb SIZE (rust/crates/serde-1.0.152.crate) = 77091 SHA256 (rust/crates/serde_derive-1.0.152.crate) = af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e SIZE (rust/crates/serde_derive-1.0.152.crate) = 55586 +SHA256 (rust/crates/serde_spanned-0.6.5.crate) = eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1 +SIZE (rust/crates/serde_spanned-0.6.5.crate) = 8349 SHA256 (rust/crates/slab-0.4.8.crate) = 6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d SIZE (rust/crates/slab-0.4.8.crate) = 16928 -SHA256 (rust/crates/strsim-0.10.0.crate) = 73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623 -SIZE (rust/crates/strsim-0.10.0.crate) = 11355 +SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f +SIZE (rust/crates/strsim-0.11.1.crate) = 14266 SHA256 (rust/crates/syn-1.0.107.crate) = 1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5 SIZE (rust/crates/syn-1.0.107.crate) = 237539 +SHA256 (rust/crates/syn-2.0.101.crate) = 8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf +SIZE (rust/crates/syn-2.0.101.crate) = 299250 SHA256 (rust/crates/tempfile-3.9.0.crate) = 01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa SIZE (rust/crates/tempfile-3.9.0.crate) = 32182 -SHA256 (rust/crates/termcolor-1.1.3.crate) = bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755 -SIZE (rust/crates/termcolor-1.1.3.crate) = 17242 SHA256 (rust/crates/termtree-0.4.0.crate) = 95059e91184749cb66be6dc994f67f182b6d897cb3df74a5bf66b5e709295fd8 SIZE (rust/crates/termtree-0.4.0.crate) = 4449 -SHA256 (rust/crates/toml-0.5.11.crate) = f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234 -SIZE (rust/crates/toml-0.5.11.crate) = 54910 +SHA256 (rust/crates/toml-0.8.11.crate) = af06656561d28735e9c1cd63dfd57132c8155426aa6af24f36a00a351f88c48e +SIZE (rust/crates/toml-0.8.11.crate) = 51146 +SHA256 (rust/crates/toml_datetime-0.6.5.crate) = 3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1 +SIZE (rust/crates/toml_datetime-0.6.5.crate) = 10910 +SHA256 (rust/crates/toml_edit-0.22.7.crate) = 18769cd1cec395d70860ceb4d932812a0b4d06b1a4bb336745a4d21b9496e992 +SIZE (rust/crates/toml_edit-0.22.7.crate) = 104001 SHA256 (rust/crates/unicode-ident-1.0.6.crate) = 84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc SIZE (rust/crates/unicode-ident-1.0.6.crate) = 42158 -SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f -SIZE (rust/crates/version_check-0.9.4.crate) = 14895 +SHA256 (rust/crates/utf8parse-0.2.1.crate) = 711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a +SIZE (rust/crates/utf8parse-0.2.1.crate) = 13435 SHA256 (rust/crates/wait-timeout-0.2.0.crate) = 9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6 SIZE (rust/crates/wait-timeout-0.2.0.crate) = 12441 SHA256 (rust/crates/wasi-0.11.0+wasi-snapshot-preview1.crate) = 9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423 @@ -173,8 +189,6 @@ SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe9399 SIZE (rust/crates/winapi-0.3.9.crate) = 1200382 SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6 SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815 -SHA256 (rust/crates/winapi-util-0.1.5.crate) = 70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178 -SIZE (rust/crates/winapi-util-0.1.5.crate) = 10164 SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998 SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d @@ -195,5 +209,7 @@ SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.0.crate) = 1a657e1e9d3f514745a57 SIZE (rust/crates/windows_x86_64_gnullvm-0.52.0.crate) = 430165 SHA256 (rust/crates/windows_x86_64_msvc-0.52.0.crate) = dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04 SIZE (rust/crates/windows_x86_64_msvc-0.52.0.crate) = 821600 +SHA256 (rust/crates/winnow-0.6.5.crate) = dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8 +SIZE (rust/crates/winnow-0.6.5.crate) = 159316 SHA256 (rust/crates/yansi-0.5.1.crate) = 09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec SIZE (rust/crates/yansi-0.5.1.crate) = 16525 diff --git a/devel/opengrok/Makefile b/devel/opengrok/Makefile index 6f19f96abffb..548bbae051ba 100644 --- a/devel/opengrok/Makefile +++ b/devel/opengrok/Makefile @@ -1,5 +1,5 @@ PORTNAME= opengrok -PORTVERSION= 1.13.27 +PORTVERSION= 1.13.30 CATEGORIES= devel java # Doesn't currently work with portscout, but the release tarball is required. MASTER_SITES= https://github.com/oracle/opengrok/releases/download/${PORTVERSION}/ diff --git a/devel/opengrok/distinfo b/devel/opengrok/distinfo index 9c3154e288cc..fc63a1890775 100644 --- a/devel/opengrok/distinfo +++ b/devel/opengrok/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1742764931 -SHA256 (opengrok-1.13.27.tar.gz) = 42bdf4fa96929f7237fad5a9cc02d32173fc9318ab78bf7aacaa290c38ffaa73 -SIZE (opengrok-1.13.27.tar.gz) = 89668007 +TIMESTAMP = 1747697644 +SHA256 (opengrok-1.13.30.tar.gz) = ba99a68326579780d49f80635346fbf93ecb630fc90bd711ca2cb5ebd35e77f5 +SIZE (opengrok-1.13.30.tar.gz) = 89954729 diff --git a/devel/opengrok/pkg-plist b/devel/opengrok/pkg-plist index 0c86492de886..01b3e1110c30 100644 --- a/devel/opengrok/pkg-plist +++ b/devel/opengrok/pkg-plist @@ -78,31 +78,27 @@ %%T%%/webapps/opengrok/WEB-INF/lib/HdrHistogram-2.2.2.jar %%T%%/webapps/opengrok/WEB-INF/lib/JavaEWAH-1.2.3.jar %%T%%/webapps/opengrok/WEB-INF/lib/LatencyUtils-2.0.3.jar -%%T%%/webapps/opengrok/WEB-INF/lib/affinity-3.21ea83.jar +%%T%%/webapps/opengrok/WEB-INF/lib/affinity-3.27ea0.jar %%T%%/webapps/opengrok/WEB-INF/lib/ant-1.10.14.jar %%T%%/webapps/opengrok/WEB-INF/lib/ant-launcher-1.10.14.jar %%T%%/webapps/opengrok/WEB-INF/lib/aopalliance-repackaged-3.0.6.jar %%T%%/webapps/opengrok/WEB-INF/lib/asm-7.1.jar -%%T%%/webapps/opengrok/WEB-INF/lib/asm-analysis-9.1.jar -%%T%%/webapps/opengrok/WEB-INF/lib/asm-commons-9.1.jar -%%T%%/webapps/opengrok/WEB-INF/lib/asm-tree-9.1.jar -%%T%%/webapps/opengrok/WEB-INF/lib/asm-util-9.1.jar %%T%%/webapps/opengrok/WEB-INF/lib/bcel-6.7.0.jar %%T%%/webapps/opengrok/WEB-INF/lib/cglib-3.3.0.jar -%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-algorithms-2.22.3.jar +%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-algorithms-2.27ea0.jar %%T%%/webapps/opengrok/WEB-INF/lib/chronicle-analytics-0.EMPTY.jar -%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-bytes-2.22.19.jar -%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-core-2.22.35.jar -%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-map-3.22.9.jar -%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-threads-2.22.16.jar -%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-values-2.22.2.jar -%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-wire-2.22.22.jar +%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-bytes-2.27ea0.jar +%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-core-2.27ea0.jar +%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-map-3.27ea0.jar +%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-threads-2.27ea0.jar +%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-values-2.27ea0.jar +%%T%%/webapps/opengrok/WEB-INF/lib/chronicle-wire-2.27ea0.jar %%T%%/webapps/opengrok/WEB-INF/lib/classgraph-4.8.173.jar %%T%%/webapps/opengrok/WEB-INF/lib/classmate-1.5.1.jar %%T%%/webapps/opengrok/WEB-INF/lib/commons-compress-1.26.0.jar %%T%%/webapps/opengrok/WEB-INF/lib/commons-io-2.14.0.jar %%T%%/webapps/opengrok/WEB-INF/lib/commons-lang3-3.13.0.jar -%%T%%/webapps/opengrok/WEB-INF/lib/compiler-2.21ea81.jar +%%T%%/webapps/opengrok/WEB-INF/lib/compiler-2.27ea0.jar %%T%%/webapps/opengrok/WEB-INF/lib/cron-utils-9.1.6.jar %%T%%/webapps/opengrok/WEB-INF/lib/expressly-5.0.0.jar %%T%%/webapps/opengrok/WEB-INF/lib/hibernate-validator-8.0.1.Final.jar @@ -141,13 +137,13 @@ %%T%%/webapps/opengrok/WEB-INF/lib/jersey-media-json-jackson-3.1.7.jar %%T%%/webapps/opengrok/WEB-INF/lib/jersey-server-3.1.7.jar %%T%%/webapps/opengrok/WEB-INF/lib/jettison-1.5.4.jar -%%T%%/webapps/opengrok/WEB-INF/lib/jffi-1.3.5-native.jar -%%T%%/webapps/opengrok/WEB-INF/lib/jffi-1.3.5.jar +%%T%%/webapps/opengrok/WEB-INF/lib/jffi-1.3.12-native.jar +%%T%%/webapps/opengrok/WEB-INF/lib/jffi-1.3.12.jar %%T%%/webapps/opengrok/WEB-INF/lib/jna-5.5.0.jar %%T%%/webapps/opengrok/WEB-INF/lib/jna-platform-5.5.0.jar %%T%%/webapps/opengrok/WEB-INF/lib/jnr-a64asm-1.0.0.jar -%%T%%/webapps/opengrok/WEB-INF/lib/jnr-constants-0.10.2.jar -%%T%%/webapps/opengrok/WEB-INF/lib/jnr-ffi-2.2.6.jar +%%T%%/webapps/opengrok/WEB-INF/lib/jnr-constants-0.10.4.jar +%%T%%/webapps/opengrok/WEB-INF/lib/jnr-ffi-2.2.15.jar %%T%%/webapps/opengrok/WEB-INF/lib/jnr-x86asm-1.0.2.jar %%T%%/webapps/opengrok/WEB-INF/lib/jquery-3.6.4.jar %%T%%/webapps/opengrok/WEB-INF/lib/lucene-analysis-common-9.9.2.jar @@ -167,12 +163,12 @@ %%T%%/webapps/opengrok/WEB-INF/lib/micrometer-registry-statsd-1.14.1.jar %%T%%/webapps/opengrok/WEB-INF/lib/modelmapper-3.1.1.jar %%T%%/webapps/opengrok/WEB-INF/lib/mxparser-1.2.2.jar -%%T%%/webapps/opengrok/WEB-INF/lib/opengrok-1.13.27.jar +%%T%%/webapps/opengrok/WEB-INF/lib/opengrok-1.13.30.jar %%T%%/webapps/opengrok/WEB-INF/lib/org.eclipse.jgit-6.6.1.202309021850-r.jar %%T%%/webapps/opengrok/WEB-INF/lib/org.suigeneris.jrcs.diff-0.4.2.jar %%T%%/webapps/opengrok/WEB-INF/lib/org.suigeneris.jrcs.rcs-0.4.2.jar %%T%%/webapps/opengrok/WEB-INF/lib/osgi-resource-locator-1.0.3.jar -%%T%%/webapps/opengrok/WEB-INF/lib/posix-2.22.9.jar +%%T%%/webapps/opengrok/WEB-INF/lib/posix-2.27ea0.jar %%T%%/webapps/opengrok/WEB-INF/lib/prometheus-metrics-config-1.3.3.jar %%T%%/webapps/opengrok/WEB-INF/lib/prometheus-metrics-core-1.3.3.jar %%T%%/webapps/opengrok/WEB-INF/lib/prometheus-metrics-exposition-formats-1.3.3.jar @@ -182,7 +178,7 @@ %%T%%/webapps/opengrok/WEB-INF/lib/slf4j-api-2.0.13.jar %%T%%/webapps/opengrok/WEB-INF/lib/slf4j-nop-1.7.30.jar %%T%%/webapps/opengrok/WEB-INF/lib/snakeyaml-2.2.jar -%%T%%/webapps/opengrok/WEB-INF/lib/suggester-1.13.27.jar +%%T%%/webapps/opengrok/WEB-INF/lib/suggester-1.13.30.jar %%T%%/webapps/opengrok/WEB-INF/lib/tablesorter-2.31.3.jar %%T%%/webapps/opengrok/WEB-INF/lib/txw2-3.0.2.jar %%T%%/webapps/opengrok/WEB-INF/lib/versioncompare-1.5.0.jar diff --git a/devel/p5-Devel-Cover/Makefile b/devel/p5-Devel-Cover/Makefile index 043b4fb68e81..b734bf01785f 100644 --- a/devel/p5-Devel-Cover/Makefile +++ b/devel/p5-Devel-Cover/Makefile @@ -1,5 +1,5 @@ PORTNAME= Devel-Cover -PORTVERSION= 1.48 +PORTVERSION= 1.49 CATEGORIES= devel perl5 MASTER_SITES= CPAN PKGNAMEPREFIX= p5- diff --git a/devel/p5-Devel-Cover/distinfo b/devel/p5-Devel-Cover/distinfo index 381226fcb98e..ddc8ecda1616 100644 --- a/devel/p5-Devel-Cover/distinfo +++ b/devel/p5-Devel-Cover/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1747205639 -SHA256 (Devel-Cover-1.48.tar.gz) = 063b81a5095a6ac241485c44e059fb1ee5543929bc4da82ac0574981c973e18d -SIZE (Devel-Cover-1.48.tar.gz) = 230964 +TIMESTAMP = 1747720912 +SHA256 (Devel-Cover-1.49.tar.gz) = 8dadcac44cfa3c2717af14bec50998cbe422823be670a5bf3d1629ae43d1b6b5 +SIZE (Devel-Cover-1.49.tar.gz) = 231190 diff --git a/devel/websvn/Makefile b/devel/websvn/Makefile index 667d7e51b37b..024d8d5d73a3 100644 --- a/devel/websvn/Makefile +++ b/devel/websvn/Makefile @@ -1,5 +1,5 @@ PORTNAME= websvn -PORTVERSION= 2.8.4 +PORTVERSION= 2.8.5 CATEGORIES= devel www PKGNAMESUFFIX= ${PHP_PKGNAMESUFFIX} diff --git a/devel/websvn/distinfo b/devel/websvn/distinfo index 103450249df8..bf99f8105780 100644 --- a/devel/websvn/distinfo +++ b/devel/websvn/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1710758315 -SHA256 (websvnphp-websvn-2.8.4_GH0.tar.gz) = 04324ba391c5dd79abaff9ecbbd06cfda979e15806438da780bde60ef64af43e -SIZE (websvnphp-websvn-2.8.4_GH0.tar.gz) = 254505 +TIMESTAMP = 1747745416 +SHA256 (websvnphp-websvn-2.8.5_GH0.tar.gz) = bc6eeeb873c9e0fdd18f4783b82532b7f6df070f2e027d3b26db271f8aaadbce +SIZE (websvnphp-websvn-2.8.5_GH0.tar.gz) = 254050 diff --git a/games/xfce4-eyes-plugin/Makefile b/games/xfce4-eyes-plugin/Makefile index 41c4703ae39d..c3a997e9e683 100644 --- a/games/xfce4-eyes-plugin/Makefile +++ b/games/xfce4-eyes-plugin/Makefile @@ -1,5 +1,5 @@ PORTNAME= xfce4-eyes-plugin -PORTVERSION= 4.6.2 +PORTVERSION= 4.7.0 CATEGORIES= games xfce MASTER_SITES= XFCE/panel-plugins @@ -9,18 +9,17 @@ WWW= https://docs.xfce.org/panel-plugins/xfce4-eyes-plugin LICENSE= GPLv2 -USES= gettext-tools gmake gnome libtool pkgconfig tar:bzip2 xfce xorg -USE_GNOME= cairo gtk30 +USES= gettext-tools gnome meson pkgconfig tar:xz xfce xorg +USE_GNOME= gtk30 USE_XFCE= libmenu panel USE_XORG= x11 -GNU_CONFIGURE= yes -INSTALL_TARGET= install-strip - OPTIONS_DEFINE= NLS OPTIONS_SUB= yes -NLS_USES= gettext-runtime -NLS_CONFIGURE_ENABLE= nls +NLS_USES= gettext-runtime + +post-patch-NLS-off: + @${REINPLACE_CMD} -e "/^subdir('po')/d" ${WRKSRC}/meson.build .include <bsd.port.mk> diff --git a/games/xfce4-eyes-plugin/distinfo b/games/xfce4-eyes-plugin/distinfo index 0e95c023a4a5..c5b824c83b14 100644 --- a/games/xfce4-eyes-plugin/distinfo +++ b/games/xfce4-eyes-plugin/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1735503814 -SHA256 (xfce4-eyes-plugin-4.6.2.tar.bz2) = 02b4ac637604a0b9262616cb9613e0fe6797fb6b0f1fc2889a77e1e0ad4a01a5 -SIZE (xfce4-eyes-plugin-4.6.2.tar.bz2) = 447028 +TIMESTAMP = 1747674642 +SHA256 (xfce4-eyes-plugin-4.7.0.tar.xz) = 87f9b978ca75abb3aa5edb1315eb65ef98654a662c14621847ddffe8aa6574ad +SIZE (xfce4-eyes-plugin-4.7.0.tar.xz) = 54108 diff --git a/games/xfce4-eyes-plugin/pkg-plist b/games/xfce4-eyes-plugin/pkg-plist index 95c4274d345e..d0ba9c633d98 100644 --- a/games/xfce4-eyes-plugin/pkg-plist +++ b/games/xfce4-eyes-plugin/pkg-plist @@ -71,8 +71,8 @@ share/xfce4/eyes/themes/Bizarre/config share/xfce4/eyes/themes/Bloodshot/Bloodshot-eye.png share/xfce4/eyes/themes/Bloodshot/Bloodshot-pupil.png share/xfce4/eyes/themes/Bloodshot/config -share/xfce4/eyes/themes/Chibi/chibi-eye.png -share/xfce4/eyes/themes/Chibi/chibi-pupil.png +share/xfce4/eyes/themes/Chibi/Chibi-eye.png +share/xfce4/eyes/themes/Chibi/Chibi-pupil.png share/xfce4/eyes/themes/Chibi/config share/xfce4/eyes/themes/Default-tiny/Default-tiny-eye.png share/xfce4/eyes/themes/Default-tiny/Default-tiny-pupil.png @@ -84,6 +84,6 @@ share/xfce4/eyes/themes/Horrid/Horrid-eye.png share/xfce4/eyes/themes/Horrid/Horrid-pupil.png share/xfce4/eyes/themes/Horrid/config share/xfce4/eyes/themes/Tango/config -share/xfce4/eyes/themes/Tango/tango-eye.png -share/xfce4/eyes/themes/Tango/tango-pupil.png +share/xfce4/eyes/themes/Tango/Tango-eye.png +share/xfce4/eyes/themes/Tango/Tango-pupil.png share/xfce4/panel/plugins/eyes.desktop diff --git a/math/xfce4-calculator-plugin/Makefile b/math/xfce4-calculator-plugin/Makefile index 53097e122358..f1b756249626 100644 --- a/math/xfce4-calculator-plugin/Makefile +++ b/math/xfce4-calculator-plugin/Makefile @@ -1,5 +1,5 @@ PORTNAME= xfce4-calculator-plugin -PORTVERSION= 0.7.3 +PORTVERSION= 0.8.0 CATEGORIES= math xfce MASTER_SITES= XFCE/panel-plugins DIST_SUBDIR= xfce4 @@ -10,21 +10,18 @@ WWW= https://docs.xfce.org/panel-plugins/xfce4-calculator-plugin/start LICENSE= GPLv2 -LIB_DEPENDS= libharfbuzz.so:print/harfbuzz - -USES= compiler:c11 gettext-tools gmake gnome libtool pkgconfig \ - tar:bz2 xfce xorg -USE_GNOME= cairo gdkpixbuf gtk30 +USES= compiler:c11 gettext-tools gnome meson pkgconfig tar:xz xfce \ + xorg +USE_GNOME= gtk30 USE_XFCE= libmenu panel USE_XORG= x11 -GNU_CONFIGURE= yes -INSTALL_TARGET= install-strip - OPTIONS_DEFINE= NLS OPTIONS_SUB= yes -NLS_CONFIGURE_ENABLE= nls -NLS_USES= gettext-runtime +NLS_USES= gettext-runtime + +post-patch-NLS-off: + @${REINPLACE_CMD} -e "/^subdir('po')/d" ${WRKSRC}/meson.build .include <bsd.port.mk> diff --git a/math/xfce4-calculator-plugin/distinfo b/math/xfce4-calculator-plugin/distinfo index 92d4c9278f2d..2cc0a4c5e89f 100644 --- a/math/xfce4-calculator-plugin/distinfo +++ b/math/xfce4-calculator-plugin/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1735047891 -SHA256 (xfce4/xfce4-calculator-plugin-0.7.3.tar.bz2) = 3feb5f56092ceef2858c3c1bd443317d4caf289a6409f9db506f49088e19a2e8 -SIZE (xfce4/xfce4-calculator-plugin-0.7.3.tar.bz2) = 481917 +TIMESTAMP = 1747672757 +SHA256 (xfce4/xfce4-calculator-plugin-0.8.0.tar.xz) = aaf3d7e9654ef6cf8ec442ad9e4316c481f9a6087a8e8949261140f5ae136aeb +SIZE (xfce4/xfce4-calculator-plugin-0.8.0.tar.xz) = 87640 diff --git a/math/xfce4-calculator-plugin/pkg-plist b/math/xfce4-calculator-plugin/pkg-plist index 757d696c120d..3e1d82ea66b3 100644 --- a/math/xfce4-calculator-plugin/pkg-plist +++ b/math/xfce4-calculator-plugin/pkg-plist @@ -12,6 +12,7 @@ share/icons/hicolor/64x64/apps/xfce4-calculator-plugin.png %%NLS%%share/locale/cs/LC_MESSAGES/xfce4-calculator-plugin.mo %%NLS%%share/locale/da/LC_MESSAGES/xfce4-calculator-plugin.mo %%NLS%%share/locale/de/LC_MESSAGES/xfce4-calculator-plugin.mo +%%NLS%%share/locale/el/LC_MESSAGES/xfce4-calculator-plugin.mo %%NLS%%share/locale/en_AU/LC_MESSAGES/xfce4-calculator-plugin.mo %%NLS%%share/locale/en_CA/LC_MESSAGES/xfce4-calculator-plugin.mo %%NLS%%share/locale/en_GB/LC_MESSAGES/xfce4-calculator-plugin.mo @@ -50,6 +51,7 @@ share/icons/hicolor/64x64/apps/xfce4-calculator-plugin.png %%NLS%%share/locale/sv/LC_MESSAGES/xfce4-calculator-plugin.mo %%NLS%%share/locale/tr/LC_MESSAGES/xfce4-calculator-plugin.mo %%NLS%%share/locale/uk/LC_MESSAGES/xfce4-calculator-plugin.mo +%%NLS%%share/locale/vi/LC_MESSAGES/xfce4-calculator-plugin.mo %%NLS%%share/locale/zh_CN/LC_MESSAGES/xfce4-calculator-plugin.mo %%NLS%%share/locale/zh_TW/LC_MESSAGES/xfce4-calculator-plugin.mo share/xfce4/panel/plugins/calculator.desktop diff --git a/net/fb303/Makefile b/net/fb303/Makefile index 9c94cf75845d..ae209abacb64 100644 --- a/net/fb303/Makefile +++ b/net/fb303/Makefile @@ -1,6 +1,6 @@ PORTNAME= fb303 DISTVERSIONPREFIX= v -DISTVERSION= 2025.05.12.00 +DISTVERSION= 2025.05.19.00 CATEGORIES= net MAINTAINER= yuri@FreeBSD.org diff --git a/net/fb303/distinfo b/net/fb303/distinfo index bfc0edc35811..e2e85af48148 100644 --- a/net/fb303/distinfo +++ b/net/fb303/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1747102742 -SHA256 (facebook-fb303-v2025.05.12.00_GH0.tar.gz) = fafae635c104056f3db94cee30b3159017dcf427a635a656bdeed33edead7dfa -SIZE (facebook-fb303-v2025.05.12.00_GH0.tar.gz) = 265966 +TIMESTAMP = 1747730526 +SHA256 (facebook-fb303-v2025.05.19.00_GH0.tar.gz) = 860d4589886265b7a280c8a9b8ba0acd21717b1f1c94d5b28fc0e535fbf356b2 +SIZE (facebook-fb303-v2025.05.19.00_GH0.tar.gz) = 264164 diff --git a/net/mvfst/Makefile b/net/mvfst/Makefile index 6eb2201bf0ba..655b656c6c5c 100644 --- a/net/mvfst/Makefile +++ b/net/mvfst/Makefile @@ -1,6 +1,6 @@ PORTNAME= mvfst DISTVERSIONPREFIX= v -DISTVERSION= 2025.05.12.00 +DISTVERSION= 2025.05.19.00 CATEGORIES= net MAINTAINER= yuri@FreeBSD.org diff --git a/net/mvfst/distinfo b/net/mvfst/distinfo index c75bb6cb8893..618b518d67b7 100644 --- a/net/mvfst/distinfo +++ b/net/mvfst/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1747102743 -SHA256 (facebook-mvfst-v2025.05.12.00_GH0.tar.gz) = 4e2b9cb907bab79219e08259fd8f828f2aaf8ca86186c605e99c8a605516889b -SIZE (facebook-mvfst-v2025.05.12.00_GH0.tar.gz) = 2085536 +TIMESTAMP = 1747730527 +SHA256 (facebook-mvfst-v2025.05.19.00_GH0.tar.gz) = 01a636b7f5ad7c9cd57f07a7d8c1f74875be74720e1df1bd8029833ee0874e49 +SIZE (facebook-mvfst-v2025.05.19.00_GH0.tar.gz) = 2087389 diff --git a/net/mvfst/pkg-plist b/net/mvfst/pkg-plist index 59c1a9c2f644..2c394edcc3d7 100644 --- a/net/mvfst/pkg-plist +++ b/net/mvfst/pkg-plist @@ -59,7 +59,7 @@ include/quic/common/IntervalSet.h include/quic/common/NetworkData.h include/quic/common/Optional.h include/quic/common/QuicBuffer.h -include/quic/common/SmallCollections.h +include/quic/common/QuicRange.h include/quic/common/SocketUtil.h include/quic/common/TimePoints.h include/quic/common/TimeUtil.h diff --git a/net/wangle/Makefile b/net/wangle/Makefile index 15299000c89f..ef02ceda0936 100644 --- a/net/wangle/Makefile +++ b/net/wangle/Makefile @@ -1,6 +1,6 @@ PORTNAME= wangle DISTVERSIONPREFIX= v -DISTVERSION= 2025.05.12.00 +DISTVERSION= 2025.05.19.00 CATEGORIES= net MAINTAINER= yuri@FreeBSD.org diff --git a/net/wangle/distinfo b/net/wangle/distinfo index bec90b8a7d3e..dbc32d05d8d2 100644 --- a/net/wangle/distinfo +++ b/net/wangle/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1747102734 -SHA256 (facebook-wangle-v2025.05.12.00_GH0.tar.gz) = a5f0b6c8aa533ecfd41311bd70cfe3fd968d768c28f1f2643dba4c287ea59045 -SIZE (facebook-wangle-v2025.05.12.00_GH0.tar.gz) = 368610 +TIMESTAMP = 1747730519 +SHA256 (facebook-wangle-v2025.05.19.00_GH0.tar.gz) = 770cbec72dc27e9ada048afbd14d29976e569bbc70fefa197d1315898b555916 +SIZE (facebook-wangle-v2025.05.19.00_GH0.tar.gz) = 368630 diff --git a/security/Makefile b/security/Makefile index 2e976acf904a..b742b84e77e2 100644 --- a/security/Makefile +++ b/security/Makefile @@ -462,6 +462,7 @@ SUBDIR += openvpn SUBDIR += openvpn-admin SUBDIR += openvpn-auth-ldap + SUBDIR += openvpn-auth-oauth2 SUBDIR += openvpn-auth-radius SUBDIR += openvpn-auth-script SUBDIR += openvpn-devel diff --git a/security/fizz/Makefile b/security/fizz/Makefile index 69356dd3585d..58cb52d68aeb 100644 --- a/security/fizz/Makefile +++ b/security/fizz/Makefile @@ -1,6 +1,6 @@ PORTNAME= fizz DISTVERSIONPREFIX= v -DISTVERSION= 2025.05.12.00 +DISTVERSION= 2025.05.19.00 CATEGORIES= security MAINTAINER= yuri@FreeBSD.org diff --git a/security/fizz/distinfo b/security/fizz/distinfo index b92c50f7c07e..74e44fafe591 100644 --- a/security/fizz/distinfo +++ b/security/fizz/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1747102733 -SHA256 (facebookincubator-fizz-v2025.05.12.00_GH0.tar.gz) = d3608b4595fff4e0d59585b1b12bead6f6ce4bf2d3bee41fb084f7128a28e4b2 -SIZE (facebookincubator-fizz-v2025.05.12.00_GH0.tar.gz) = 754096 +TIMESTAMP = 1747730518 +SHA256 (facebookincubator-fizz-v2025.05.19.00_GH0.tar.gz) = 83ce2e22c993cad1c5cbc5f3ee1aff4c44af99eeeb3dd3d539f1017a7af18647 +SIZE (facebookincubator-fizz-v2025.05.19.00_GH0.tar.gz) = 754906 diff --git a/security/openvpn-auth-oauth2/Makefile b/security/openvpn-auth-oauth2/Makefile new file mode 100644 index 000000000000..c342db717442 --- /dev/null +++ b/security/openvpn-auth-oauth2/Makefile @@ -0,0 +1,27 @@ +PORTNAME= openvpn-auth-oauth2 +DISTVERSIONPREFIX= v +DISTVERSION= 1.23.0 +CATEGORIES= security net net-vpn + +MAINTAINER= otis@FreeBSD.org +COMMENT= Management client for OpenVPN that handles SSO authentication +WWW= https://github.com/jkroepke/openvpn-auth-oauth2 + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE.txt + +EXTRACT_DEPENDS= ${BUILD_DEPENDS} + +USES= go:1.24,modules + +GO_MODULE= github.com/jkroepke/openvpn-auth-oauth2 + +SUB_FILES= openvpn_auth_oauth2 + +do-install: + ${INSTALL_PROGRAM} ${WRKDIR}/bin/openvpn-auth-oauth2 ${STAGEDIR}${PREFIX}/sbin + ${MKDIR} ${STAGEDIR}${ETCDIR} + ${INSTALL_DATA} ${WRKSRC}/config.example.yaml ${STAGEDIR}${ETCDIR}/openvpn-auth-oauth2.yml.sample + ${INSTALL_SCRIPT} ${WRKDIR}/openvpn_auth_oauth2 ${STAGEDIR}${PREFIX}/etc/rc.d + +.include <bsd.port.mk> diff --git a/security/openvpn-auth-oauth2/distinfo b/security/openvpn-auth-oauth2/distinfo new file mode 100644 index 000000000000..c69fcf7f3670 --- /dev/null +++ b/security/openvpn-auth-oauth2/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1747749448 +SHA256 (go/security_openvpn-auth-oauth2/openvpn-auth-oauth2-v1.23.0/v1.23.0.mod) = 3cfe3d6fcb9c2dadd04584a4dee41a867c33b720a91127efaaa501fd11726f2b +SIZE (go/security_openvpn-auth-oauth2/openvpn-auth-oauth2-v1.23.0/v1.23.0.mod) = 1899 +SHA256 (go/security_openvpn-auth-oauth2/openvpn-auth-oauth2-v1.23.0/v1.23.0.zip) = 984bf33860740e9d4f3896db38bfea064a2b21553c85c8c0ea98856933c64b71 +SIZE (go/security_openvpn-auth-oauth2/openvpn-auth-oauth2-v1.23.0/v1.23.0.zip) = 1850633 diff --git a/security/openvpn-auth-oauth2/files/openvpn_auth_oauth2.in b/security/openvpn-auth-oauth2/files/openvpn_auth_oauth2.in new file mode 100644 index 000000000000..40015f4a8e4a --- /dev/null +++ b/security/openvpn-auth-oauth2/files/openvpn_auth_oauth2.in @@ -0,0 +1,148 @@ +#!/bin/sh + +# PROVIDE: openvpn_auth_oauth2 +# REQUIRE: FILESYSTEMS defaultroute netwait resolv +# BEFORE: NETWORKING +# KEYWORD: shutdown + +# Add the following line to /etc/rc.conf to enable openvpn_auth_oauth2: +# +# openvpn_auth_oauth2_enable="YES" +# +# You also can set alternative config with +# openvpn_auth_oauth2_config="/path/to/config" +# +# Multiple profiles are supported with +# +# openvpn_auth_oauth2_profiles="name1 name2" +# openvpn_auth_oauth2_name1_enable="YES" +# openvpn_auth_oauth2_name1_config="/path/to/config1" +# openvpn_auth_oauth2_name2_enable="YES" +# openvpn_auth_oauth2_name2_config="/path/to/config2" +# + +. /etc/rc.subr + +name=openvpn_auth_oauth2 +rcvar=openvpn_auth_oauth2_enable +desc="Single sign-on for OpenVPN" + +eval ": \${${name}_enable:=\"NO\"}" +eval ": \${${name}_config:=%%ETCDIR%%/openvpn-auth-oauth2.yml}" +load_rc_config "${name}" + +_openvpn_auth_oauth2="%%PREFIX%%/sbin/openvpn-auth-oauth2" +_common_daemon_args=-Sfc +_piddir=/var/run/openvpn-auth-oauth2 + +# Set PID file +pidfile="${_piddir}/openvpn-auth-oauth2.pid" + +required_files=${openvpn_auth_oauth2_config} +command=/usr/sbin/daemon +command_args="${_common_daemon_args} -p ${pidfile} -t ${name} \ +${_openvpn_auth_oauth2} --config ${openvpn_auth_oauth2_config}" +procname="${_openvpn_auth_oauth2}" +extra_commands=reload +reload_cmd=openvpn_auth_oauth2_reload +start_precmd="[ -d ${_piddir} ] || /usr/bin/install -d ${_piddir}" + +openvpn_auth_oauth2_reload() +{ + if [ "x${openvpn_auth_oauth2_profiles}" != "x" -a "x$1" != "x" ]; then + for profile in ${openvpn_auth_oauth2_profiles}; do + eval _enable="\${openvpn_auth_oauth2_${profile}_enable}" + case "x${_enable:-${openvpn_auth_oauth2_enable}}" in + x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee]) + continue + ;; + x[Yy][Ee][Ss]) + ;; + *) + if test -z "$_enable"; then + _var=openvpn_auth_oauth2_enable + else + _var=openvpn_auth_oauth2_"${profile}"_enable + fi + echo "Bad value" \ + "'${_enable:-${openvpn_auth_oauth2_enable}}'" \ + "for ${_var}. " \ + "Profile ${profile} skipped." + continue + ;; + esac + echo "===> openvpn-auth-oauth2 profile: ${profile}" + pidfile="${_piddir}/openvpn-auth-oauth2-${profile}.pid" + kill -HUP `cat ${pidfile}` + retcode="$?" + if [ "0${retcode}" -ne 0 ]; then + failed="${profile} (${retcode}) ${failed:-}" + else + success="${profile} ${success:-}" + fi + done + exit 0 + else + echo "===> openvpn-auth-outh2 profile ${profile} reloading" + kill -HUP `cat ${pidfile}` + fi +} + +if [ -n "$2" ]; then + profile="$2" + if [ "x${openvpn_auth_oauth2_profiles}" != "x" ]; then + eval openvpn_auth_oauth2_config="\${openvpn_auth_oauth2_${profile}_config:-%%ETCDIR%%/openvpn-auth-oauth2-${profile}.yml}" + if [ "x${openvpn_auth_oauth2_config}" = "x" ]; then + echo "You must define a configuration file (openvpn_auth_oauth2_${profile}_config)" + exit 1 + fi + + pidfile="${_piddir}/openvpn-auth-oauth2-${profile}.pid" + + [ -f ${pidfile} ] || /usr/bin/install /dev/null "${pidfile}" + + required_files="${openvpn_auth_oauth2_config}" + eval openvpn_auth_oauth2_enable="\${openvpn_auth_oauth2_${profile}_enable:-${openvpn_auth_oauth2_enable}}" + command_args="${_common_daemon_args} -t ${name}-${profile} -p ${pidfile} \ + ${_openvpn_auth_oauth2} \ + --config ${openvpn_auth_oauth2_config}" + else + echo "$0: extra argument ignored" + fi +else + if [ "x${openvpn_auth_oauth2_profiles}" != "x" -a "x$1" != "x" ]; then + for profile in ${openvpn_auth_oauth2_profiles}; do + eval _enable="\${openvpn_auth_oauth2_${profile}_enable}" + case "x${_enable:-${openvpn_auth_oauth2_enable}}" in + x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee]) + continue + ;; + x[Yy][Ee][Ss]) + ;; + *) + if test -z "$_enable"; then + _var=openvpn_auth_oauth2_enable + else + _var=openvpn_auth_oauth2_"${profile}"_enable + fi + echo "Bad value" \ + "'${_enable:-${openvpn_auth_oauth2_enable}}'" \ + "for ${_var}. " \ + "Profile ${profile} skipped." + continue + ;; + esac + echo "===> openvpn-auth-oauth2 profile: ${profile}" + %%PREFIX%%/etc/rc.d/openvpn_auth_oauth2 $1 ${profile} + retcode="$?" + if [ "0${retcode}" -ne 0 ]; then + failed="${profile} (${retcode}) ${failed:-}" + else + success="${profile} ${success:-}" + fi + done + exit 0 + fi +fi + +run_rc_command "$1" diff --git a/security/openvpn-auth-oauth2/pkg-descr b/security/openvpn-auth-oauth2/pkg-descr new file mode 100644 index 000000000000..52e575e966a1 --- /dev/null +++ b/security/openvpn-auth-oauth2/pkg-descr @@ -0,0 +1,15 @@ +openvpn-auth-oauth2 is a management client for OpenVPN that handles the single +sign-on (SSO) authentication against various OIDC providers. This project aims +to simplify the process of integrating OpenVPN with OIDC providers such as: + +- Microsoft Entra ID (Azure AD) +- GitHub +- Okta +- Google Workspace +- Zittal +- Digitalocean +- Keycloak +- any other OIDC compatible auth server + +For comprehensive documentation, point the browser to: +https://github.com/jkroepke/openvpn-auth-oauth2/wiki/Configuration diff --git a/security/openvpn-auth-oauth2/pkg-plist b/security/openvpn-auth-oauth2/pkg-plist new file mode 100644 index 000000000000..c96f261f8393 --- /dev/null +++ b/security/openvpn-auth-oauth2/pkg-plist @@ -0,0 +1,3 @@ +@sample %%ETCDIR%%/openvpn-auth-oauth2.yml.sample +etc/rc.d/openvpn_auth_oauth2 +sbin/openvpn-auth-oauth2 diff --git a/sysutils/sysinfo/Makefile b/sysutils/sysinfo/Makefile index d156a808fcd6..09e297a84a87 100644 --- a/sysutils/sysinfo/Makefile +++ b/sysutils/sysinfo/Makefile @@ -1,5 +1,6 @@ PORTNAME= sysinfo PORTVERSION= 1.0.4 +PORTREVISION= 1 CATEGORIES= sysutils MASTER_SITES= https://codeberg.org/BSDforge/${PORTNAME}/archive/${DISTVERSION}${EXTRACT_SUFX}?dummy=/ diff --git a/sysutils/sysinfo/pkg-plist b/sysutils/sysinfo/pkg-plist index 1529371c5fc0..366eb2d24880 100644 --- a/sysutils/sysinfo/pkg-plist +++ b/sysutils/sysinfo/pkg-plist @@ -1,4 +1,4 @@ -%%ETCDIR%%.conf.sample +@sample %%ETCDIR%%.conf.sample sbin/sysinfo share/man/man5/sysinfo.conf.5.gz share/man/man8/sysinfo.8.gz diff --git a/sysutils/xfce4-battery-plugin/Makefile b/sysutils/xfce4-battery-plugin/Makefile index ae3977149806..d83e7d9c7978 100644 --- a/sysutils/xfce4-battery-plugin/Makefile +++ b/sysutils/xfce4-battery-plugin/Makefile @@ -1,5 +1,5 @@ PORTNAME= xfce4-battery-plugin -PORTVERSION= 1.1.6 +PORTVERSION= 1.2.0 CATEGORIES= sysutils xfce MASTER_SITES= XFCE/panel-plugins DIST_SUBDIR= xfce4 @@ -12,22 +12,19 @@ LICENSE= GPLv2 ONLY_FOR_ARCHS= amd64 i386 -LIB_DEPENDS= libharfbuzz.so:print/harfbuzz - -USES= alias gettext-tools gmake gnome libtool pkgconfig tar:bzip2 \ - xfce -USE_GNOME= cairo gdkpixbuf glib20 gtk30 +USES= alias gettext-tools gnome meson pkgconfig tar:xz xfce +USE_GNOME= glib20 gtk30 USE_LDCONFIG= yes USE_XFCE= libmenu panel -GNU_CONFIGURE= yes -INSTALL_TARGET= install-strip SSP_UNSAFE= yes OPTIONS_DEFINE= NLS OPTIONS_SUB= yes -NLS_USES= gettext-runtime -NLS_CONFIGURE_ENABLE= nls +NLS_USES= gettext-runtime + +post-patch-NLS-off: + @${REINPLACE_CMD} -e "/^subdir('po')/d" ${WRKSRC}/meson.build .include <bsd.port.mk> diff --git a/sysutils/xfce4-battery-plugin/distinfo b/sysutils/xfce4-battery-plugin/distinfo index d379d4d0e7a9..22fe0eec62a3 100644 --- a/sysutils/xfce4-battery-plugin/distinfo +++ b/sysutils/xfce4-battery-plugin/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1735047695 -SHA256 (xfce4/xfce4-battery-plugin-1.1.6.tar.bz2) = 327d7304dded8411cd1a48da4f46bac248b44d8b27ffbc2036e0268cb37c3676 -SIZE (xfce4/xfce4-battery-plugin-1.1.6.tar.bz2) = 569701 +TIMESTAMP = 1747672610 +SHA256 (xfce4/xfce4-battery-plugin-1.2.0.tar.xz) = 1dba8f470d2b12517e7b86d83cd2ebf13eb57ff1a01a4f2d2d156cf5194d97b6 +SIZE (xfce4/xfce4-battery-plugin-1.2.0.tar.xz) = 111360 diff --git a/sysutils/xfce4-cpugraph-plugin/Makefile b/sysutils/xfce4-cpugraph-plugin/Makefile index 3c377c7ad296..61c0ee7d8198 100644 --- a/sysutils/xfce4-cpugraph-plugin/Makefile +++ b/sysutils/xfce4-cpugraph-plugin/Makefile @@ -1,5 +1,5 @@ PORTNAME= xfce4-cpugraph-plugin -PORTVERSION= 1.2.11 +PORTVERSION= 1.3.0 CATEGORIES= sysutils xfce MASTER_SITES= XFCE/panel-plugins DIST_SUBDIR= xfce4 @@ -10,21 +10,18 @@ WWW= https://docs.xfce.org/panel-plugins/xfce4-cpugraph-plugin/start LICENSE= GPLv2 -LIB_DEPENDS= libharfbuzz.so:print/harfbuzz - -USES= compiler:c++17-lang gettext-tools gmake gnome libtool pkgconfig \ - tar:bzip2 xfce +USES= compiler:c++17-lang gettext-tools gnome meson pkgconfig tar:xz \ + xfce USE_CXXSTD= c++17 -USE_GNOME= cairo gdkpixbuf gtk30 +USE_GNOME= gtk30 USE_XFCE= libmenu panel xfconf -GNU_CONFIGURE= yes -INSTALL_TARGET= install-strip - OPTIONS_DEFINE= NLS OPTIONS_SUB= yes -NLS_USES= gettext-runtime -NLS_CONFIGURE_ENABLE= nls +NLS_USES= gettext-runtime + +post-patch-NLS-off: + @${REINPLACE_CMD} -e "/^subdir('po')/d" ${WRKSRC}/meson.build .include <bsd.port.mk> diff --git a/sysutils/xfce4-cpugraph-plugin/distinfo b/sysutils/xfce4-cpugraph-plugin/distinfo index d26b524cec82..3a7a615a32d2 100644 --- a/sysutils/xfce4-cpugraph-plugin/distinfo +++ b/sysutils/xfce4-cpugraph-plugin/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1735164388 -SHA256 (xfce4/xfce4-cpugraph-plugin-1.2.11.tar.bz2) = 58aa31df1934afc2a352744754a730a3d796b1246e12c7a5e86f7b6a403ca20d -SIZE (xfce4/xfce4-cpugraph-plugin-1.2.11.tar.bz2) = 569026 +TIMESTAMP = 1747673776 +SHA256 (xfce4/xfce4-cpugraph-plugin-1.3.0.tar.xz) = c3305edea13ae785ea8b7ce8efbb40b5d5cac69a6f8bf790e4f2efaa780ca097 +SIZE (xfce4/xfce4-cpugraph-plugin-1.3.0.tar.xz) = 94824 diff --git a/sysutils/xfce4-fsguard-plugin/Makefile b/sysutils/xfce4-fsguard-plugin/Makefile index cf391607e146..1f4f41d95e7b 100644 --- a/sysutils/xfce4-fsguard-plugin/Makefile +++ b/sysutils/xfce4-fsguard-plugin/Makefile @@ -1,5 +1,5 @@ PORTNAME= xfce4-fsguard-plugin -PORTVERSION= 1.1.4 +PORTVERSION= 1.2.0 CATEGORIES= sysutils xfce MASTER_SITES= XFCE/panel-plugins DIST_SUBDIR= xfce4 @@ -11,21 +11,18 @@ WWW= https://docs.xfce.org/panel-plugins/xfce4-fsguard-plugin/start # COPYING file is wrong compared to license header LICENSE= BSD2CLAUSE -LIB_DEPENDS= libharfbuzz.so:print/harfbuzz - -USES= compiler:c11 gettext-tools gmake gnome libtool pkgconfig \ - tar:bzip2 xfce xorg -USE_GNOME= cairo gdkpixbuf gtk30 +USES= compiler:c11 gettext-tools gnome meson pkgconfig tar:xz xfce \ + xorg +USE_GNOME= gdkpixbuf gtk30 USE_XFCE= libmenu panel USE_XORG= x11 -GNU_CONFIGURE= yes -INSTALL_TARGET= install-strip - OPTIONS_DEFINE= NLS OPTIONS_SUB= yes -NLS_USES= gettext-runtime -NLS_CONFIGURE_ENABLE= nls +NLS_USES= gettext-runtime + +post-patch-NLS-off: + @${REINPLACE_CMD} -e "/^subdir('po')/d" ${WRKSRC}/meson.build .include <bsd.port.mk> diff --git a/sysutils/xfce4-fsguard-plugin/distinfo b/sysutils/xfce4-fsguard-plugin/distinfo index a4a7f2e25da8..551b71263d1d 100644 --- a/sysutils/xfce4-fsguard-plugin/distinfo +++ b/sysutils/xfce4-fsguard-plugin/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1735162861 -SHA256 (xfce4/xfce4-fsguard-plugin-1.1.4.tar.bz2) = 24b3789be6de92678e7036678530c4da4b3838aa3cda428439aa8d140704a4a6 -SIZE (xfce4/xfce4-fsguard-plugin-1.1.4.tar.bz2) = 468762 +TIMESTAMP = 1747675372 +SHA256 (xfce4/xfce4-fsguard-plugin-1.2.0.tar.xz) = 9e40cf3ce7b34e1c27d6b442f3a067886c35154b5d0c4d644a239038611da64f +SIZE (xfce4/xfce4-fsguard-plugin-1.2.0.tar.xz) = 64096 diff --git a/textproc/p5-Text-FindIndent/Makefile b/textproc/p5-Text-FindIndent/Makefile index 7c946767c83f..d46be2acdcff 100644 --- a/textproc/p5-Text-FindIndent/Makefile +++ b/textproc/p5-Text-FindIndent/Makefile @@ -1,6 +1,5 @@ PORTNAME= Text-FindIndent -PORTVERSION= 0.10 -PORTREVISION= 1 +DISTVERSION= 0.12 CATEGORIES= textproc perl5 MASTER_SITES= CPAN MASTER_SITE_SUBDIR= CPAN:SMUELLER @@ -8,7 +7,7 @@ PKGNAMEPREFIX= p5- MAINTAINER= bofh@FreeBSD.org COMMENT= Perl5 module to heuristically determine the indent style of a file -WWW= https://metacpan.org/release/Text-FindIndent +WWW= https://metacpan.org/dist/Text-FindIndent LICENSE= ART10 GPLv1+ LICENSE_COMB= dual @@ -16,4 +15,6 @@ LICENSE_COMB= dual USES= perl5 USE_PERL5= configure +NO_ARCH= yes + .include <bsd.port.mk> diff --git a/textproc/p5-Text-FindIndent/distinfo b/textproc/p5-Text-FindIndent/distinfo index 28b19d88e301..fbcc162706d6 100644 --- a/textproc/p5-Text-FindIndent/distinfo +++ b/textproc/p5-Text-FindIndent/distinfo @@ -1,2 +1,3 @@ -SHA256 (Text-FindIndent-0.10.tar.gz) = 492c37e7bb5a4fca665e03728c0affe39c1235f65d85f27136f487af29797a30 -SIZE (Text-FindIndent-0.10.tar.gz) = 34541 +TIMESTAMP = 1747755988 +SHA256 (Text-FindIndent-0.12.tar.gz) = 93cf7c74b313ac842108f272cd00cd6f705aa711a997d8a6345e3b4cae9242ca +SIZE (Text-FindIndent-0.12.tar.gz) = 16906 diff --git a/www/chromium/Makefile b/www/chromium/Makefile index 1dd3e43c87a9..023f8f9f95f5 100644 --- a/www/chromium/Makefile +++ b/www/chromium/Makefile @@ -1,5 +1,6 @@ PORTNAME= chromium PORTVERSION= 136.0.7103.113 +PORTREVISION= 1 PULSEMV= 16 PULSEV= ${PULSEMV}.1 CATEGORIES= www wayland diff --git a/www/chromium/files/patch-build_rust_allocator_BUILD.gn b/www/chromium/files/patch-build_rust_allocator_BUILD.gn new file mode 100644 index 000000000000..cb1633140dcc --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_BUILD.gn @@ -0,0 +1,109 @@ +--- build/rust/allocator/BUILD.gn.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/BUILD.gn +@@ -0,0 +1,106 @@ ++# Copyright 2025 The Chromium Authors ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/buildflag_header.gni") ++import("//build/config/rust.gni") ++import("//build/rust/rust_static_library.gni") ++ ++rust_allocator_uses_partition_alloc = false ++if (build_with_chromium) { ++ import("//base/allocator/partition_allocator/partition_alloc.gni") ++ rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc ++} ++ ++# In ASAN builds, PartitionAlloc-Everywhere is disabled, meaning malloc() and ++# friends in C++ do not go to PartitionAlloc. So we also don't point the Rust ++# allocation functions at PartitionAlloc. Generally, this means we just direct ++# them to the Standard Library's allocator. ++# ++# However, on Windows the Standard Library uses HeapAlloc() and Windows ASAN ++# does *not* hook that method, so ASAN does not get to hear about allocations ++# made in Rust. To resolve this, we redirect allocation to _aligned_malloc ++# which Windows ASAN *does* hook. ++# ++# Note that there is a runtime option to make ASAN hook HeapAlloc() but ++# enabling it breaks Win32 APIs like CreateProcess: ++# https://crbug.com/368070343#comment29 ++rust_allocator_uses_aligned_malloc = false ++if (!rust_allocator_uses_partition_alloc && is_win && is_asan) { ++ rust_allocator_uses_aligned_malloc = true ++} ++ ++rust_allocator_uses_allocator_impls_h = ++ rust_allocator_uses_partition_alloc || rust_allocator_uses_aligned_malloc ++ ++buildflag_header("buildflags") { ++ header = "buildflags.h" ++ flags = [ ++ "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc", ++ "RUST_ALLOCATOR_USES_ALIGNED_MALLOC=$rust_allocator_uses_aligned_malloc", ++ ] ++ visibility = [ ":*" ] ++} ++ ++if (toolchain_has_rust) { ++ # All targets which depend on Rust code but are not linked by rustc must ++ # depend on this. Usually, this dependency will come from the rust_target() GN ++ # template. However, cargo_crate() does *not* include this dependency so any ++ # C++ targets which directly depend on a cargo_crate() must depend on this. ++ rust_static_library("allocator") { ++ sources = [ "lib.rs" ] ++ crate_root = "lib.rs" ++ cxx_bindings = [ "lib.rs" ] ++ ++ deps = [ ":alloc_error_handler_impl" ] ++ if (rust_allocator_uses_allocator_impls_h) { ++ deps += [ ":allocator_impls" ] ++ } ++ ++ no_chromium_prelude = true ++ no_allocator_crate = true ++ allow_unsafe = true ++ ++ rustflags = [] ++ if (rust_allocator_uses_allocator_impls_h) { ++ rustflags += [ "--cfg=rust_allocator_uses_allocator_impls_h" ] ++ cxx_bindings += [ "allocator_impls_ffi.rs" ] ++ sources += [ "allocator_impls_ffi.rs" ] ++ } ++ ++ # TODO(https://crbug.com/410596442): Stop using unstable features here. ++ configs -= [ "//build/config/compiler:disallow_unstable_features" ] ++ } ++ ++ if (rust_allocator_uses_allocator_impls_h) { ++ static_library("allocator_impls") { ++ public_deps = [] ++ if (rust_allocator_uses_partition_alloc) { ++ public_deps += ++ [ "//base/allocator/partition_allocator:partition_alloc" ] ++ } ++ ++ sources = [ ++ "allocator_impls.cc", ++ "allocator_impls.h", ++ ] ++ deps = [ ":buildflags" ] ++ visibility = [ ":*" ] ++ } ++ } ++ ++ static_library("alloc_error_handler_impl") { ++ sources = [ ++ # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been ++ # copied from `//base`. ++ # TODO(crbug.com/40279749): Avoid duplication / reuse code. ++ "alias.cc", ++ "alias.h", ++ "alloc_error_handler_impl.cc", ++ "alloc_error_handler_impl.h", ++ "compiler_specific.h", ++ "immediate_crash.h", ++ ] ++ visibility = [ ":*" ] ++ } ++} diff --git a/www/chromium/files/patch-build_rust_allocator_DEPS b/www/chromium/files/patch-build_rust_allocator_DEPS new file mode 100644 index 000000000000..74bb2d6c2421 --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_DEPS @@ -0,0 +1,12 @@ +--- build/rust/allocator/DEPS.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/DEPS +@@ -0,0 +1,9 @@ ++include_rules = [ ++ "-base", ++] ++ ++specific_include_rules = { ++ "allocator_impls.cc" : [ ++ "+partition_alloc" ++ ] ++} diff --git a/www/chromium/files/patch-build_rust_allocator_alias.cc b/www/chromium/files/patch-build_rust_allocator_alias.cc new file mode 100644 index 000000000000..5280641f27e1 --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_alias.cc @@ -0,0 +1,25 @@ +--- build/rust/allocator/alias.cc.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alias.cc +@@ -0,0 +1,22 @@ ++// Copyright 2023 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/debug/alias.cc ( additionally the APIs ++// were moved into the `build_rust_std` namespace). ++// ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#include "build/rust/allocator/alias.h" ++ ++#include "build/rust/allocator/compiler_specific.h" ++ ++namespace build_rust_std { ++namespace debug { ++ ++// This file/function should be excluded from LTO/LTCG to ensure that the ++// compiler can't see this function's implementation when compiling calls to it. ++NOINLINE void Alias(const void* var) {} ++ ++} // namespace debug ++} // namespace build_rust_std diff --git a/www/chromium/files/patch-build_rust_allocator_alias.h b/www/chromium/files/patch-build_rust_allocator_alias.h new file mode 100644 index 000000000000..6530c6ae8779 --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_alias.h @@ -0,0 +1,40 @@ +--- build/rust/allocator/alias.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alias.h +@@ -0,0 +1,37 @@ ++// Copyright 2023 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/debug/alias.h (and then trimmed to just ++// the APIs / macros needed by //build/rust/std; additionally the APIs were ++// moved into the `build_rust_std` namespace). ++// ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#ifndef BUILD_RUST_ALLOCATOR_ALIAS_H_ ++#define BUILD_RUST_ALLOCATOR_ALIAS_H_ ++ ++#include <stddef.h> ++ ++namespace build_rust_std { ++namespace debug { ++ ++// Make the optimizer think that |var| is aliased. This can be used to prevent a ++// local variable from being optimized out (which is something that ++// `NO_CODE_FOLDING` macro definition below depends on). See ++// //base/debug/alias.h for more details. ++void Alias(const void* var); ++ ++} // namespace debug ++ ++} // namespace build_rust_std ++ ++// Prevent code folding (where a linker identifies functions that are ++// bit-identical and overlays them, which saves space but it leads to confusing ++// call stacks because multiple symbols are at the same address). See ++// //base/debug/alias.h for more details. ++#define NO_CODE_FOLDING() \ ++ const int line_number = __LINE__; \ ++ build_rust_std::debug::Alias(&line_number) ++ ++#endif // BUILD_RUST_ALLOCATOR_ALIAS_H_ diff --git a/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc b/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc new file mode 100644 index 000000000000..048c267abefa --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc @@ -0,0 +1,20 @@ +--- build/rust/allocator/alloc_error_handler_impl.cc.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alloc_error_handler_impl.cc +@@ -0,0 +1,17 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "build/rust/allocator/alloc_error_handler_impl.h" ++ ++#include "build/rust/allocator/alias.h" ++#include "build/rust/allocator/immediate_crash.h" ++ ++namespace rust_allocator_internal { ++ ++void alloc_error_handler_impl() { ++ NO_CODE_FOLDING(); ++ IMMEDIATE_CRASH(); ++} ++ ++} // namespace rust_allocator_internal diff --git a/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h b/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h new file mode 100644 index 000000000000..887ea602b027 --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h @@ -0,0 +1,24 @@ +--- build/rust/allocator/alloc_error_handler_impl.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alloc_error_handler_impl.h +@@ -0,0 +1,21 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_ ++#define BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_ ++ ++// This header exposes to Rust a C++ implementation of quickly crashing after an ++// allocation error. (The API below is called from `__rust_alloc_error_handler` ++// in `lib.rs`.) ++// ++// TODO(lukasza): Investigate if we can delete this `.h` / `.cc` and just call ++// `std::process::abort()` (or something else?) directly from `.rs`. The main ++// open question is how much we care about `NO_CODE_FOLDING`. ++namespace rust_allocator_internal { ++ ++void alloc_error_handler_impl(); ++ ++} // namespace rust_allocator_internal ++ ++#endif // BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_ diff --git a/www/chromium/files/patch-build_rust_allocator_allocator__impls.cc b/www/chromium/files/patch-build_rust_allocator_allocator__impls.cc new file mode 100644 index 000000000000..94e04d7b966a --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_allocator__impls.cc @@ -0,0 +1,108 @@ +--- build/rust/allocator/allocator_impls.cc.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/allocator_impls.cc +@@ -0,0 +1,105 @@ ++// Copyright 2021 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "build/rust/allocator/allocator_impls.h" ++ ++#ifdef UNSAFE_BUFFERS_BUILD ++// TODO(crbug.com/390223051): Remove C-library calls to fix the errors. ++#pragma allow_unsafe_libc_calls ++#endif ++ ++#include <cstddef> ++#include <cstring> ++ ++#include "build/build_config.h" ++#include "build/rust/allocator/buildflags.h" ++ ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++#include "partition_alloc/partition_alloc_constants.h" // nogncheck ++#include "partition_alloc/shim/allocator_shim.h" // nogncheck ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++#include <cstdlib> ++#endif ++ ++namespace rust_allocator_internal { ++ ++unsigned char* alloc(size_t size, size_t align) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++ // PartitionAlloc will crash if given an alignment larger than this. ++ if (align > partition_alloc::internal::kMaxSupportedAlignment) { ++ return nullptr; ++ } ++ ++ // We use unchecked allocation paths in PartitionAlloc rather than going ++ // through its shims in `malloc()` etc so that we can support fallible ++ // allocation paths such as Vec::try_reserve without crashing on allocation ++ // failure. ++ if (align <= alignof(std::max_align_t)) { ++ return static_cast<unsigned char*>(allocator_shim::UncheckedAlloc(size)); ++ } else { ++ return static_cast<unsigned char*>( ++ allocator_shim::UncheckedAlignedAlloc(size, align)); ++ } ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ return static_cast<unsigned char*>(_aligned_malloc(size, align)); ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++void dealloc(unsigned char* p, size_t size, size_t align) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++ if (align <= alignof(std::max_align_t)) { ++ allocator_shim::UncheckedFree(p); ++ } else { ++ allocator_shim::UncheckedAlignedFree(p); ++ } ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ return _aligned_free(p); ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++unsigned char* realloc(unsigned char* p, ++ size_t old_size, ++ size_t align, ++ size_t new_size) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++ // We use unchecked allocation paths in PartitionAlloc rather than going ++ // through its shims in `malloc()` etc so that we can support fallible ++ // allocation paths such as Vec::try_reserve without crashing on allocation ++ // failure. ++ if (align <= alignof(std::max_align_t)) { ++ return static_cast<unsigned char*>( ++ allocator_shim::UncheckedRealloc(p, new_size)); ++ } else { ++ return static_cast<unsigned char*>( ++ allocator_shim::UncheckedAlignedRealloc(p, new_size, align)); ++ } ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ return static_cast<unsigned char*>(_aligned_realloc(p, new_size, align)); ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++unsigned char* alloc_zeroed(size_t size, size_t align) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) || \ ++ BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ // TODO(danakj): When RUST_ALLOCATOR_USES_PARTITION_ALLOC is true, it's ++ // possible that a partition_alloc::UncheckedAllocZeroed() call would perform ++ // better than partition_alloc::UncheckedAlloc() + memset. But there is no ++ // such API today. See b/342251590. ++ unsigned char* p = alloc(size, align); ++ if (p) { ++ memset(p, 0, size); ++ } ++ return p; ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++} // namespace rust_allocator_internal diff --git a/www/chromium/files/patch-build_rust_allocator_allocator__impls.h b/www/chromium/files/patch-build_rust_allocator_allocator__impls.h new file mode 100644 index 000000000000..9249cdc938d2 --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_allocator__impls.h @@ -0,0 +1,27 @@ +--- build/rust/allocator/allocator_impls.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/allocator_impls.h +@@ -0,0 +1,24 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_ ++#define BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_ ++ ++#include <cstddef> ++ ++// This header exposes a C++ allocator (e.g. PartitionAlloc) to Rust. ++// The APIs below are called from `impl GlobalAlloc` in `lib.rs`. ++namespace rust_allocator_internal { ++ ++unsigned char* alloc(size_t size, size_t align); ++void dealloc(unsigned char* p, size_t size, size_t align); ++unsigned char* realloc(unsigned char* p, ++ size_t old_size, ++ size_t align, ++ size_t new_size); ++unsigned char* alloc_zeroed(size_t size, size_t align); ++ ++} // namespace rust_allocator_internal ++ ++#endif // BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_ diff --git a/www/chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs b/www/chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs new file mode 100644 index 000000000000..8f0baf1576ce --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs @@ -0,0 +1,22 @@ +--- build/rust/allocator/allocator_impls_ffi.rs.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/allocator_impls_ffi.rs +@@ -0,0 +1,19 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++//! FFI for `allocator_impls.h` is in a separate `.rs` file/module to ++//! better support conditional compilation (these functions are only ++//! used under `#[cfg(rust_allocator_uses_allocator_impls_h)]`. ++ ++#[cxx::bridge(namespace = "rust_allocator_internal")] ++pub mod ffi { ++ extern "C++" { ++ include!("build/rust/allocator/allocator_impls.h"); ++ ++ unsafe fn alloc(size: usize, align: usize) -> *mut u8; ++ unsafe fn dealloc(p: *mut u8, size: usize, align: usize); ++ unsafe fn realloc(p: *mut u8, old_size: usize, align: usize, new_size: usize) -> *mut u8; ++ unsafe fn alloc_zeroed(size: usize, align: usize) -> *mut u8; ++ } ++} diff --git a/www/chromium/files/patch-build_rust_allocator_compiler__specific.h b/www/chromium/files/patch-build_rust_allocator_compiler__specific.h new file mode 100644 index 000000000000..7feb0c739d79 --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_compiler__specific.h @@ -0,0 +1,41 @@ +--- build/rust/allocator/compiler_specific.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/compiler_specific.h +@@ -0,0 +1,38 @@ ++// Copyright 2023 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/compiler_specific.h (and then ++// significantly trimmed to just the APIs / macros needed by //build/rust/std). ++// ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#ifndef BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_ ++#define BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_ ++ ++#include "build/build_config.h" ++ ++#if defined(COMPILER_MSVC) && !defined(__clang__) ++#error "Only clang-cl is supported on Windows, see https://crbug.com/988071" ++#endif ++ ++#if defined(__has_attribute) ++#define HAS_ATTRIBUTE(x) __has_attribute(x) ++#else ++#define HAS_ATTRIBUTE(x) 0 ++#endif ++ ++// Annotate a function indicating it should not be inlined. ++// Use like: ++// NOINLINE void DoStuff() { ... } ++#if defined(__clang__) && HAS_ATTRIBUTE(noinline) ++#define NOINLINE [[clang::noinline]] ++#elif defined(COMPILER_GCC) && HAS_ATTRIBUTE(noinline) ++#define NOINLINE __attribute__((noinline)) ++#elif defined(COMPILER_MSVC) ++#define NOINLINE __declspec(noinline) ++#else ++#define NOINLINE ++#endif ++ ++#endif // BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_ diff --git a/www/chromium/files/patch-build_rust_allocator_immediate__crash.h b/www/chromium/files/patch-build_rust_allocator_immediate__crash.h new file mode 100644 index 000000000000..7ab0f9d9c34c --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_immediate__crash.h @@ -0,0 +1,174 @@ +--- build/rust/allocator/immediate_crash.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/immediate_crash.h +@@ -0,0 +1,171 @@ ++// Copyright 2021 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/immediate_crash.h. ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#ifndef BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_ ++#define BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_ ++ ++#include "build/build_config.h" ++ ++// Crashes in the fastest possible way with no attempt at logging. ++// There are several constraints; see http://crbug.com/664209 for more context. ++// ++// - TRAP_SEQUENCE_() must be fatal. It should not be possible to ignore the ++// resulting exception or simply hit 'continue' to skip over it in a debugger. ++// - Different instances of TRAP_SEQUENCE_() must not be folded together, to ++// ensure crash reports are debuggable. Unlike __builtin_trap(), asm volatile ++// blocks will not be folded together. ++// Note: TRAP_SEQUENCE_() previously required an instruction with a unique ++// nonce since unlike clang, GCC folds together identical asm volatile ++// blocks. ++// - TRAP_SEQUENCE_() must produce a signal that is distinct from an invalid ++// memory access. ++// - TRAP_SEQUENCE_() must be treated as a set of noreturn instructions. ++// __builtin_unreachable() is used to provide that hint here. clang also uses ++// this as a heuristic to pack the instructions in the function epilogue to ++// improve code density. ++// ++// Additional properties that are nice to have: ++// - TRAP_SEQUENCE_() should be as compact as possible. ++// - The first instruction of TRAP_SEQUENCE_() should not change, to avoid ++// shifting crash reporting clusters. As a consequence of this, explicit ++// assembly is preferred over intrinsics. ++// Note: this last bullet point may no longer be true, and may be removed in ++// the future. ++ ++// Note: TRAP_SEQUENCE Is currently split into two macro helpers due to the fact ++// that clang emits an actual instruction for __builtin_unreachable() on certain ++// platforms (see https://crbug.com/958675). In addition, the int3/bkpt/brk will ++// be removed in followups, so splitting it up like this now makes it easy to ++// land the followups. ++ ++#if defined(COMPILER_GCC) ++ ++#if BUILDFLAG(IS_NACL) ++ ++// Crash report accuracy is not guaranteed on NaCl. ++#define TRAP_SEQUENCE1_() __builtin_trap() ++#define TRAP_SEQUENCE2_() asm volatile("") ++ ++#elif defined(ARCH_CPU_X86_FAMILY) ++ ++// TODO(crbug.com/40625592): In theory, it should be possible to use just ++// int3. However, there are a number of crashes with SIGILL as the exception ++// code, so it seems likely that there's a signal handler that allows execution ++// to continue after SIGTRAP. ++#define TRAP_SEQUENCE1_() asm volatile("int3") ++ ++#if BUILDFLAG(IS_APPLE) ++// Intentionally empty: __builtin_unreachable() is always part of the sequence ++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Mac. ++#define TRAP_SEQUENCE2_() asm volatile("") ++#else ++#define TRAP_SEQUENCE2_() asm volatile("ud2") ++#endif // BUILDFLAG(IS_APPLE) ++ ++#elif defined(ARCH_CPU_ARMEL) ++ ++// bkpt will generate a SIGBUS when running on armv7 and a SIGTRAP when running ++// as a 32 bit userspace app on arm64. There doesn't seem to be any way to ++// cause a SIGTRAP from userspace without using a syscall (which would be a ++// problem for sandboxing). ++// TODO(crbug.com/40625592): Remove bkpt from this sequence. ++#define TRAP_SEQUENCE1_() asm volatile("bkpt #0") ++#define TRAP_SEQUENCE2_() asm volatile("udf #0") ++ ++#elif defined(ARCH_CPU_ARM64) ++ ++// This will always generate a SIGTRAP on arm64. ++// TODO(crbug.com/40625592): Remove brk from this sequence. ++#define TRAP_SEQUENCE1_() asm volatile("brk #0") ++#define TRAP_SEQUENCE2_() asm volatile("hlt #0") ++ ++#else ++ ++// Crash report accuracy will not be guaranteed on other architectures, but at ++// least this will crash as expected. ++#define TRAP_SEQUENCE1_() __builtin_trap() ++#define TRAP_SEQUENCE2_() asm volatile("") ++ ++#endif // ARCH_CPU_* ++ ++#elif defined(COMPILER_MSVC) ++ ++#if !defined(__clang__) ++ ++// MSVC x64 doesn't support inline asm, so use the MSVC intrinsic. ++#define TRAP_SEQUENCE1_() __debugbreak() ++#define TRAP_SEQUENCE2_() ++ ++#elif defined(ARCH_CPU_ARM64) ++ ++// Windows ARM64 uses "BRK #F000" as its breakpoint instruction, and ++// __debugbreak() generates that in both VC++ and clang. ++#define TRAP_SEQUENCE1_() __debugbreak() ++// Intentionally empty: __builtin_unreachable() is always part of the sequence ++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Win64, ++// https://crbug.com/958373 ++#define TRAP_SEQUENCE2_() __asm volatile("") ++ ++#else ++ ++#define TRAP_SEQUENCE1_() asm volatile("int3") ++#define TRAP_SEQUENCE2_() asm volatile("ud2") ++ ++#endif // __clang__ ++ ++#else ++ ++#error No supported trap sequence! ++ ++#endif // COMPILER_GCC ++ ++#define TRAP_SEQUENCE_() \ ++ do { \ ++ TRAP_SEQUENCE1_(); \ ++ TRAP_SEQUENCE2_(); \ ++ } while (false) ++ ++// CHECK() and the trap sequence can be invoked from a constexpr function. ++// This could make compilation fail on GCC, as it forbids directly using inline ++// asm inside a constexpr function. However, it allows calling a lambda ++// expression including the same asm. ++// The side effect is that the top of the stacktrace will not point to the ++// calling function, but to this anonymous lambda. This is still useful as the ++// full name of the lambda will typically include the name of the function that ++// calls CHECK() and the debugger will still break at the right line of code. ++#if !defined(COMPILER_GCC) || defined(__clang__) ++ ++#define WRAPPED_TRAP_SEQUENCE_() TRAP_SEQUENCE_() ++ ++#else ++ ++#define WRAPPED_TRAP_SEQUENCE_() \ ++ do { \ ++ [] { TRAP_SEQUENCE_(); }(); \ ++ } while (false) ++ ++#endif // !defined(COMPILER_GCC) || defined(__clang__) ++ ++#if defined(__clang__) || defined(COMPILER_GCC) ++ ++// __builtin_unreachable() hints to the compiler that this is noreturn and can ++// be packed in the function epilogue. ++#define IMMEDIATE_CRASH() \ ++ ({ \ ++ WRAPPED_TRAP_SEQUENCE_(); \ ++ __builtin_unreachable(); \ ++ }) ++ ++#else ++ ++// This is supporting non-chromium user of logging.h to build with MSVC, like ++// pdfium. On MSVC there is no __builtin_unreachable(). ++#define IMMEDIATE_CRASH() WRAPPED_TRAP_SEQUENCE_() ++ ++#endif // defined(__clang__) || defined(COMPILER_GCC) ++ ++#endif // BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_ diff --git a/www/chromium/files/patch-build_rust_allocator_lib.rs b/www/chromium/files/patch-build_rust_allocator_lib.rs new file mode 100644 index 000000000000..89fddf278294 --- /dev/null +++ b/www/chromium/files/patch-build_rust_allocator_lib.rs @@ -0,0 +1,122 @@ +--- build/rust/allocator/lib.rs.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/lib.rs +@@ -0,0 +1,119 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++//! Define the allocator that Rust code in Chrome should use. ++//! ++//! Any final artifact that depends on this crate, even transitively, will use ++//! the allocator defined here. ++//! ++//! List of known issues: ++//! ++//! 1. We'd like to use PartitionAlloc on Windows, but the stdlib uses Windows ++//! heap functions directly that PartitionAlloc can not intercept. ++//! 2. We'd like `Vec::try_reserve` to fail at runtime on Linux instead of ++//! crashing in malloc() where PartitionAlloc replaces that function. ++ ++// Required to apply weak linkage to symbols. ++// ++// TODO(https://crbug.com/410596442): Stop using unstable features here. ++// https://github.com/rust-lang/rust/issues/29603 tracks stabilization of the `linkage` feature. ++#![feature(linkage)] ++// Required to apply `#[rustc_std_internal_symbol]` to our alloc error handler ++// so the name is correctly mangled as rustc expects. ++// ++// TODO(https://crbug.com/410596442): Stop using internal features here. ++#![allow(internal_features)] ++#![feature(rustc_attrs)] ++ ++// This module is in a separate source file to avoid having to teach `cxxbridge` ++// about conditional compilation. ++#[cfg(rust_allocator_uses_allocator_impls_h)] ++mod allocator_impls_ffi; ++ ++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for ++/// using an allocator from C++. ++#[cfg(rust_allocator_uses_allocator_impls_h)] ++mod cpp_allocator { ++ use super::allocator_impls_ffi::ffi; ++ use std::alloc::{GlobalAlloc, Layout}; ++ ++ struct Allocator; ++ ++ unsafe impl GlobalAlloc for Allocator { ++ unsafe fn alloc(&self, layout: Layout) -> *mut u8 { ++ unsafe { ffi::alloc(layout.size(), layout.align()) } ++ } ++ ++ unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { ++ unsafe { ++ ffi::dealloc(ptr, layout.size(), layout.align()); ++ } ++ } ++ ++ unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 { ++ unsafe { ffi::alloc_zeroed(layout.size(), layout.align()) } ++ } ++ ++ unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 { ++ unsafe { ffi::realloc(ptr, layout.size(), layout.align(), new_size) } ++ } ++ } ++ ++ #[global_allocator] ++ static GLOBAL: Allocator = Allocator; ++} ++ ++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for ++/// using the default Rust allocator. ++#[cfg(not(rust_allocator_uses_allocator_impls_h))] ++mod rust_allocator { ++ #[global_allocator] ++ static GLOBAL: std::alloc::System = std::alloc::System; ++} ++ ++/// Module that provides global symbols that are needed both by `cpp_allocator` ++/// and `rust_allocator`. ++/// ++/// When `rustc` drives linking, then it will define the symbols below. But ++/// Chromium only uses `rustc` to link Rust-only executables (e.g. `build.rs` ++/// scripts) and otherwise uses a non-Rust linker. This is why we have to ++/// manually define a few symbols below. We define those symbols ++/// as "weak" symbols, so that Rust-provided symbols "win" in case where Rust ++/// actually does drive the linking. This hack works (not only for Chromium, ++/// but also for google3 and other projects), but isn't officially supported by ++/// `rustc`. ++/// ++/// TODO(https://crbug.com/410596442): Stop using internal features here. ++mod both_allocators { ++ /// As part of rustc's contract for using `#[global_allocator]` without ++ /// rustc-generated shims we must define this symbol, since we are opting in ++ /// to unstable functionality. See https://github.com/rust-lang/rust/issues/123015 ++ #[no_mangle] ++ #[linkage = "weak"] ++ static __rust_no_alloc_shim_is_unstable: u8 = 0; ++ ++ // Mangle the symbol name as rustc expects. ++ #[rustc_std_internal_symbol] ++ #[allow(non_upper_case_globals)] ++ #[linkage = "weak"] ++ static __rust_alloc_error_handler_should_panic: u8 = 0; ++ ++ // Mangle the symbol name as rustc expects. ++ #[rustc_std_internal_symbol] ++ #[allow(non_upper_case_globals)] ++ #[linkage = "weak"] ++ fn __rust_alloc_error_handler(_size: usize, _align: usize) { ++ // TODO(lukasza): Investigate if we can just call `std::process::abort()` here. ++ // (Not really _needed_, but it could simplify code a little bit.) ++ unsafe { ffi::alloc_error_handler_impl() } ++ } ++ ++ #[cxx::bridge(namespace = "rust_allocator_internal")] ++ mod ffi { ++ extern "C++" { ++ include!("build/rust/allocator/alloc_error_handler_impl.h"); ++ unsafe fn alloc_error_handler_impl(); ++ } ++ } ++} diff --git a/www/chromium/files/patch-build_rust_cargo__crate.gni b/www/chromium/files/patch-build_rust_cargo__crate.gni new file mode 100644 index 000000000000..a1590f727aa3 --- /dev/null +++ b/www/chromium/files/patch-build_rust_cargo__crate.gni @@ -0,0 +1,25 @@ +--- build/rust/cargo_crate.gni.orig 2025-05-20 09:16:26 UTC ++++ build/rust/cargo_crate.gni +@@ -259,6 +259,12 @@ template("cargo_crate") { + # Don't import the `chromium` crate into third-party code. + no_chromium_prelude = true + ++ # Don't depend on the chrome-specific #[global_allocator] crate from ++ # third-party code. This avoids some dependency cycle issues. The allocator ++ # crate will still be used if it exists anywhere in the dependency graph for ++ # a given linked artifact. ++ no_allocator_crate = true ++ + rustc_metadata = _rustc_metadata + + # TODO(crbug.com/40259764): don't default to true. This requires changes to +@@ -482,6 +488,9 @@ template("cargo_crate") { + + # Don't import the `chromium` crate into third-party code. + no_chromium_prelude = true ++ ++ # Build scripts do not need to link to chrome's allocator. ++ no_allocator_crate = true + + # The ${_build_script_name}_output target looks for the exe in this + # location. Due to how the Windows component build works, this has to diff --git a/www/chromium/files/patch-build_rust_rust__macro.gni b/www/chromium/files/patch-build_rust_rust__macro.gni new file mode 100644 index 000000000000..0dafc3819aa1 --- /dev/null +++ b/www/chromium/files/patch-build_rust_rust__macro.gni @@ -0,0 +1,12 @@ +--- build/rust/rust_macro.gni.orig 2025-05-20 09:16:26 UTC ++++ build/rust/rust_macro.gni +@@ -16,6 +16,9 @@ template("rust_macro") { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + proc_macro_configs = invoker.configs + target_type = "rust_proc_macro" ++ ++ # Macros are loaded by rustc and shouldn't use chrome's allocation routines. ++ no_allocator_crate = true + } + } + diff --git a/www/chromium/files/patch-build_rust_rust__target.gni b/www/chromium/files/patch-build_rust_rust__target.gni new file mode 100644 index 000000000000..f4ad6f04fc45 --- /dev/null +++ b/www/chromium/files/patch-build_rust_rust__target.gni @@ -0,0 +1,13 @@ +--- build/rust/rust_target.gni.orig 2025-05-20 09:16:26 UTC ++++ build/rust/rust_target.gni +@@ -339,6 +339,10 @@ template("rust_target") { + _rust_deps += [ "//build/rust/std" ] + } + ++ if (!defined(invoker.no_allocator_crate) || !invoker.no_allocator_crate) { ++ _rust_deps += [ "//build/rust/allocator" ] ++ } ++ + if (_build_unit_tests) { + _unit_test_target = "${_target_name}_unittests" + if (defined(invoker.unit_test_target)) { diff --git a/www/chromium/files/patch-build_rust_std_BUILD.gn b/www/chromium/files/patch-build_rust_std_BUILD.gn index 0a5335d58d48..c6c2801bd47d 100644 --- a/www/chromium/files/patch-build_rust_std_BUILD.gn +++ b/www/chromium/files/patch-build_rust_std_BUILD.gn @@ -1,6 +1,58 @@ ---- build/rust/std/BUILD.gn.orig 2025-04-05 13:54:50 UTC +--- build/rust/std/BUILD.gn.orig 2025-05-20 09:16:26 UTC +++ build/rust/std/BUILD.gn -@@ -89,13 +89,20 @@ if (toolchain_has_rust) { +@@ -15,51 +15,12 @@ + # allocator functions to PartitionAlloc when `use_partition_alloc_as_malloc` is + # true, so that Rust and C++ use the same allocator backend. + +-import("//build/buildflag_header.gni") + import("//build/config/compiler/compiler.gni") + import("//build/config/coverage/coverage.gni") + import("//build/config/rust.gni") + import("//build/config/sanitizers/sanitizers.gni") + +-rust_allocator_uses_partition_alloc = false +-if (build_with_chromium) { +- import("//base/allocator/partition_allocator/partition_alloc.gni") +- rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc +-} +- +-buildflag_header("buildflags") { +- header = "buildflags.h" +- flags = [ +- "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc", +- ] +- visibility = [ ":*" ] +-} +- + if (toolchain_has_rust) { +- # If clang performs the link step, we need to provide the allocator symbols +- # that are normally injected by rustc during linking. +- # +- # We also "happen to" use this to redirect allocations to PartitionAlloc, +- # though that would be better done through a #[global_allocator] crate (see +- # above). +- source_set("remap_alloc") { +- public_deps = [] +- if (rust_allocator_uses_partition_alloc) { +- public_deps += [ "//base/allocator/partition_allocator:partition_alloc" ] +- } +- deps = [ ":buildflags" ] +- sources = [ +- # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been +- # copied from `//base`. +- # TODO(crbug.com/40279749): Avoid duplication / reuse code. +- "alias.cc", +- "alias.h", +- "compiler_specific.h", +- "immediate_crash.h", +- "remap_alloc.cc", +- ] +- } +- + # List of Rust stdlib rlibs which are present in the official Rust toolchain + # we are using from the Android team. This is usually a version or two behind + # nightly. Generally this matches the toolchain we build ourselves, but if +@@ -89,13 +50,20 @@ if (toolchain_has_rust) { # These are no longer present in the Windows toolchain. stdlib_files += [ "addr2line", @@ -22,7 +74,7 @@ } if (toolchain_for_rust_host_build_tools) { -@@ -115,7 +122,6 @@ if (toolchain_has_rust) { +@@ -115,7 +83,6 @@ if (toolchain_has_rust) { # don't need to pass to the C++ linker because they're used for specialized # purposes. skip_stdlib_files = [ @@ -30,3 +82,25 @@ "rustc_std_workspace_alloc", "rustc_std_workspace_core", "rustc_std_workspace_std", +@@ -269,8 +236,6 @@ if (toolchain_has_rust) { + foreach(libname, stdlib_files + skip_stdlib_files) { + deps += [ "rules:$libname" ] + } +- +- public_deps = [ ":remap_alloc" ] + } + } else { + action("find_stdlib") { +@@ -396,12 +361,6 @@ if (toolchain_has_rust) { + ":stdlib_public_dependent_libs", + ] + deps = [ ":prebuilt_rustc_copy_to_sysroot" ] +- +- # The host builds tools toolchain supports Rust only and does not use +- # the allocator remapping to point it to PartitionAlloc. +- if (!toolchain_for_rust_host_build_tools) { +- deps += [ ":remap_alloc" ] +- } + } + } + } diff --git a/www/gohugo/Makefile b/www/gohugo/Makefile index a998c60d116c..864d6c3004f2 100644 --- a/www/gohugo/Makefile +++ b/www/gohugo/Makefile @@ -1,6 +1,6 @@ PORTNAME= hugo DISTVERSIONPREFIX= v -DISTVERSION= 0.147.3 +DISTVERSION= 0.147.4 PORTEPOCH= 1 CATEGORIES= www PKGNAMEPREFIX= go diff --git a/www/gohugo/distinfo b/www/gohugo/distinfo index 550828130a87..844026f970c7 100644 --- a/www/gohugo/distinfo +++ b/www/gohugo/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1747057537 -SHA256 (go/www_gohugo/hugo-v0.147.3/v0.147.3.mod) = cb41ea476364590e46adc72d923c617f69d99544d2a78c743ae4608f4c43ea25 -SIZE (go/www_gohugo/hugo-v0.147.3/v0.147.3.mod) = 8036 -SHA256 (go/www_gohugo/hugo-v0.147.3/v0.147.3.zip) = 36a1eb90054d1cef4aa8f74a9951e44c211d0d68d0d3fe90a8af4764fa6a0117 -SIZE (go/www_gohugo/hugo-v0.147.3/v0.147.3.zip) = 5734808 +TIMESTAMP = 1747741364 +SHA256 (go/www_gohugo/hugo-v0.147.4/v0.147.4.mod) = cb41ea476364590e46adc72d923c617f69d99544d2a78c743ae4608f4c43ea25 +SIZE (go/www_gohugo/hugo-v0.147.4/v0.147.4.mod) = 8036 +SHA256 (go/www_gohugo/hugo-v0.147.4/v0.147.4.zip) = e723aac853ffa451bac32b823192d8fcb78d18e378437f277e0e4c214bc126c2 +SIZE (go/www_gohugo/hugo-v0.147.4/v0.147.4.zip) = 5736653 diff --git a/www/iridium/Makefile b/www/iridium/Makefile index 40178f0ec7ba..5c87dc11671a 100644 --- a/www/iridium/Makefile +++ b/www/iridium/Makefile @@ -1,5 +1,6 @@ PORTNAME= iridium PORTVERSION= 2025.05.136.2 +PORTREVISION= 1 PULSEMV= 16 PULSEV= ${PULSEMV}.1 CATEGORIES= www wayland diff --git a/www/iridium/files/patch-build_rust_allocator_BUILD.gn b/www/iridium/files/patch-build_rust_allocator_BUILD.gn new file mode 100644 index 000000000000..cb1633140dcc --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_BUILD.gn @@ -0,0 +1,109 @@ +--- build/rust/allocator/BUILD.gn.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/BUILD.gn +@@ -0,0 +1,106 @@ ++# Copyright 2025 The Chromium Authors ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/buildflag_header.gni") ++import("//build/config/rust.gni") ++import("//build/rust/rust_static_library.gni") ++ ++rust_allocator_uses_partition_alloc = false ++if (build_with_chromium) { ++ import("//base/allocator/partition_allocator/partition_alloc.gni") ++ rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc ++} ++ ++# In ASAN builds, PartitionAlloc-Everywhere is disabled, meaning malloc() and ++# friends in C++ do not go to PartitionAlloc. So we also don't point the Rust ++# allocation functions at PartitionAlloc. Generally, this means we just direct ++# them to the Standard Library's allocator. ++# ++# However, on Windows the Standard Library uses HeapAlloc() and Windows ASAN ++# does *not* hook that method, so ASAN does not get to hear about allocations ++# made in Rust. To resolve this, we redirect allocation to _aligned_malloc ++# which Windows ASAN *does* hook. ++# ++# Note that there is a runtime option to make ASAN hook HeapAlloc() but ++# enabling it breaks Win32 APIs like CreateProcess: ++# https://crbug.com/368070343#comment29 ++rust_allocator_uses_aligned_malloc = false ++if (!rust_allocator_uses_partition_alloc && is_win && is_asan) { ++ rust_allocator_uses_aligned_malloc = true ++} ++ ++rust_allocator_uses_allocator_impls_h = ++ rust_allocator_uses_partition_alloc || rust_allocator_uses_aligned_malloc ++ ++buildflag_header("buildflags") { ++ header = "buildflags.h" ++ flags = [ ++ "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc", ++ "RUST_ALLOCATOR_USES_ALIGNED_MALLOC=$rust_allocator_uses_aligned_malloc", ++ ] ++ visibility = [ ":*" ] ++} ++ ++if (toolchain_has_rust) { ++ # All targets which depend on Rust code but are not linked by rustc must ++ # depend on this. Usually, this dependency will come from the rust_target() GN ++ # template. However, cargo_crate() does *not* include this dependency so any ++ # C++ targets which directly depend on a cargo_crate() must depend on this. ++ rust_static_library("allocator") { ++ sources = [ "lib.rs" ] ++ crate_root = "lib.rs" ++ cxx_bindings = [ "lib.rs" ] ++ ++ deps = [ ":alloc_error_handler_impl" ] ++ if (rust_allocator_uses_allocator_impls_h) { ++ deps += [ ":allocator_impls" ] ++ } ++ ++ no_chromium_prelude = true ++ no_allocator_crate = true ++ allow_unsafe = true ++ ++ rustflags = [] ++ if (rust_allocator_uses_allocator_impls_h) { ++ rustflags += [ "--cfg=rust_allocator_uses_allocator_impls_h" ] ++ cxx_bindings += [ "allocator_impls_ffi.rs" ] ++ sources += [ "allocator_impls_ffi.rs" ] ++ } ++ ++ # TODO(https://crbug.com/410596442): Stop using unstable features here. ++ configs -= [ "//build/config/compiler:disallow_unstable_features" ] ++ } ++ ++ if (rust_allocator_uses_allocator_impls_h) { ++ static_library("allocator_impls") { ++ public_deps = [] ++ if (rust_allocator_uses_partition_alloc) { ++ public_deps += ++ [ "//base/allocator/partition_allocator:partition_alloc" ] ++ } ++ ++ sources = [ ++ "allocator_impls.cc", ++ "allocator_impls.h", ++ ] ++ deps = [ ":buildflags" ] ++ visibility = [ ":*" ] ++ } ++ } ++ ++ static_library("alloc_error_handler_impl") { ++ sources = [ ++ # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been ++ # copied from `//base`. ++ # TODO(crbug.com/40279749): Avoid duplication / reuse code. ++ "alias.cc", ++ "alias.h", ++ "alloc_error_handler_impl.cc", ++ "alloc_error_handler_impl.h", ++ "compiler_specific.h", ++ "immediate_crash.h", ++ ] ++ visibility = [ ":*" ] ++ } ++} diff --git a/www/iridium/files/patch-build_rust_allocator_DEPS b/www/iridium/files/patch-build_rust_allocator_DEPS new file mode 100644 index 000000000000..74bb2d6c2421 --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_DEPS @@ -0,0 +1,12 @@ +--- build/rust/allocator/DEPS.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/DEPS +@@ -0,0 +1,9 @@ ++include_rules = [ ++ "-base", ++] ++ ++specific_include_rules = { ++ "allocator_impls.cc" : [ ++ "+partition_alloc" ++ ] ++} diff --git a/www/iridium/files/patch-build_rust_allocator_alias.cc b/www/iridium/files/patch-build_rust_allocator_alias.cc new file mode 100644 index 000000000000..5280641f27e1 --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_alias.cc @@ -0,0 +1,25 @@ +--- build/rust/allocator/alias.cc.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alias.cc +@@ -0,0 +1,22 @@ ++// Copyright 2023 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/debug/alias.cc ( additionally the APIs ++// were moved into the `build_rust_std` namespace). ++// ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#include "build/rust/allocator/alias.h" ++ ++#include "build/rust/allocator/compiler_specific.h" ++ ++namespace build_rust_std { ++namespace debug { ++ ++// This file/function should be excluded from LTO/LTCG to ensure that the ++// compiler can't see this function's implementation when compiling calls to it. ++NOINLINE void Alias(const void* var) {} ++ ++} // namespace debug ++} // namespace build_rust_std diff --git a/www/iridium/files/patch-build_rust_allocator_alias.h b/www/iridium/files/patch-build_rust_allocator_alias.h new file mode 100644 index 000000000000..6530c6ae8779 --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_alias.h @@ -0,0 +1,40 @@ +--- build/rust/allocator/alias.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alias.h +@@ -0,0 +1,37 @@ ++// Copyright 2023 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/debug/alias.h (and then trimmed to just ++// the APIs / macros needed by //build/rust/std; additionally the APIs were ++// moved into the `build_rust_std` namespace). ++// ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#ifndef BUILD_RUST_ALLOCATOR_ALIAS_H_ ++#define BUILD_RUST_ALLOCATOR_ALIAS_H_ ++ ++#include <stddef.h> ++ ++namespace build_rust_std { ++namespace debug { ++ ++// Make the optimizer think that |var| is aliased. This can be used to prevent a ++// local variable from being optimized out (which is something that ++// `NO_CODE_FOLDING` macro definition below depends on). See ++// //base/debug/alias.h for more details. ++void Alias(const void* var); ++ ++} // namespace debug ++ ++} // namespace build_rust_std ++ ++// Prevent code folding (where a linker identifies functions that are ++// bit-identical and overlays them, which saves space but it leads to confusing ++// call stacks because multiple symbols are at the same address). See ++// //base/debug/alias.h for more details. ++#define NO_CODE_FOLDING() \ ++ const int line_number = __LINE__; \ ++ build_rust_std::debug::Alias(&line_number) ++ ++#endif // BUILD_RUST_ALLOCATOR_ALIAS_H_ diff --git a/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc b/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc new file mode 100644 index 000000000000..048c267abefa --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc @@ -0,0 +1,20 @@ +--- build/rust/allocator/alloc_error_handler_impl.cc.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alloc_error_handler_impl.cc +@@ -0,0 +1,17 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "build/rust/allocator/alloc_error_handler_impl.h" ++ ++#include "build/rust/allocator/alias.h" ++#include "build/rust/allocator/immediate_crash.h" ++ ++namespace rust_allocator_internal { ++ ++void alloc_error_handler_impl() { ++ NO_CODE_FOLDING(); ++ IMMEDIATE_CRASH(); ++} ++ ++} // namespace rust_allocator_internal diff --git a/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.h b/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.h new file mode 100644 index 000000000000..887ea602b027 --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_alloc__error__handler__impl.h @@ -0,0 +1,24 @@ +--- build/rust/allocator/alloc_error_handler_impl.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alloc_error_handler_impl.h +@@ -0,0 +1,21 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_ ++#define BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_ ++ ++// This header exposes to Rust a C++ implementation of quickly crashing after an ++// allocation error. (The API below is called from `__rust_alloc_error_handler` ++// in `lib.rs`.) ++// ++// TODO(lukasza): Investigate if we can delete this `.h` / `.cc` and just call ++// `std::process::abort()` (or something else?) directly from `.rs`. The main ++// open question is how much we care about `NO_CODE_FOLDING`. ++namespace rust_allocator_internal { ++ ++void alloc_error_handler_impl(); ++ ++} // namespace rust_allocator_internal ++ ++#endif // BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_ diff --git a/www/iridium/files/patch-build_rust_allocator_allocator__impls.cc b/www/iridium/files/patch-build_rust_allocator_allocator__impls.cc new file mode 100644 index 000000000000..94e04d7b966a --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_allocator__impls.cc @@ -0,0 +1,108 @@ +--- build/rust/allocator/allocator_impls.cc.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/allocator_impls.cc +@@ -0,0 +1,105 @@ ++// Copyright 2021 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "build/rust/allocator/allocator_impls.h" ++ ++#ifdef UNSAFE_BUFFERS_BUILD ++// TODO(crbug.com/390223051): Remove C-library calls to fix the errors. ++#pragma allow_unsafe_libc_calls ++#endif ++ ++#include <cstddef> ++#include <cstring> ++ ++#include "build/build_config.h" ++#include "build/rust/allocator/buildflags.h" ++ ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++#include "partition_alloc/partition_alloc_constants.h" // nogncheck ++#include "partition_alloc/shim/allocator_shim.h" // nogncheck ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++#include <cstdlib> ++#endif ++ ++namespace rust_allocator_internal { ++ ++unsigned char* alloc(size_t size, size_t align) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++ // PartitionAlloc will crash if given an alignment larger than this. ++ if (align > partition_alloc::internal::kMaxSupportedAlignment) { ++ return nullptr; ++ } ++ ++ // We use unchecked allocation paths in PartitionAlloc rather than going ++ // through its shims in `malloc()` etc so that we can support fallible ++ // allocation paths such as Vec::try_reserve without crashing on allocation ++ // failure. ++ if (align <= alignof(std::max_align_t)) { ++ return static_cast<unsigned char*>(allocator_shim::UncheckedAlloc(size)); ++ } else { ++ return static_cast<unsigned char*>( ++ allocator_shim::UncheckedAlignedAlloc(size, align)); ++ } ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ return static_cast<unsigned char*>(_aligned_malloc(size, align)); ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++void dealloc(unsigned char* p, size_t size, size_t align) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++ if (align <= alignof(std::max_align_t)) { ++ allocator_shim::UncheckedFree(p); ++ } else { ++ allocator_shim::UncheckedAlignedFree(p); ++ } ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ return _aligned_free(p); ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++unsigned char* realloc(unsigned char* p, ++ size_t old_size, ++ size_t align, ++ size_t new_size) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++ // We use unchecked allocation paths in PartitionAlloc rather than going ++ // through its shims in `malloc()` etc so that we can support fallible ++ // allocation paths such as Vec::try_reserve without crashing on allocation ++ // failure. ++ if (align <= alignof(std::max_align_t)) { ++ return static_cast<unsigned char*>( ++ allocator_shim::UncheckedRealloc(p, new_size)); ++ } else { ++ return static_cast<unsigned char*>( ++ allocator_shim::UncheckedAlignedRealloc(p, new_size, align)); ++ } ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ return static_cast<unsigned char*>(_aligned_realloc(p, new_size, align)); ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++unsigned char* alloc_zeroed(size_t size, size_t align) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) || \ ++ BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ // TODO(danakj): When RUST_ALLOCATOR_USES_PARTITION_ALLOC is true, it's ++ // possible that a partition_alloc::UncheckedAllocZeroed() call would perform ++ // better than partition_alloc::UncheckedAlloc() + memset. But there is no ++ // such API today. See b/342251590. ++ unsigned char* p = alloc(size, align); ++ if (p) { ++ memset(p, 0, size); ++ } ++ return p; ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++} // namespace rust_allocator_internal diff --git a/www/iridium/files/patch-build_rust_allocator_allocator__impls.h b/www/iridium/files/patch-build_rust_allocator_allocator__impls.h new file mode 100644 index 000000000000..9249cdc938d2 --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_allocator__impls.h @@ -0,0 +1,27 @@ +--- build/rust/allocator/allocator_impls.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/allocator_impls.h +@@ -0,0 +1,24 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_ ++#define BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_ ++ ++#include <cstddef> ++ ++// This header exposes a C++ allocator (e.g. PartitionAlloc) to Rust. ++// The APIs below are called from `impl GlobalAlloc` in `lib.rs`. ++namespace rust_allocator_internal { ++ ++unsigned char* alloc(size_t size, size_t align); ++void dealloc(unsigned char* p, size_t size, size_t align); ++unsigned char* realloc(unsigned char* p, ++ size_t old_size, ++ size_t align, ++ size_t new_size); ++unsigned char* alloc_zeroed(size_t size, size_t align); ++ ++} // namespace rust_allocator_internal ++ ++#endif // BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_ diff --git a/www/iridium/files/patch-build_rust_allocator_allocator__impls__ffi.rs b/www/iridium/files/patch-build_rust_allocator_allocator__impls__ffi.rs new file mode 100644 index 000000000000..8f0baf1576ce --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_allocator__impls__ffi.rs @@ -0,0 +1,22 @@ +--- build/rust/allocator/allocator_impls_ffi.rs.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/allocator_impls_ffi.rs +@@ -0,0 +1,19 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++//! FFI for `allocator_impls.h` is in a separate `.rs` file/module to ++//! better support conditional compilation (these functions are only ++//! used under `#[cfg(rust_allocator_uses_allocator_impls_h)]`. ++ ++#[cxx::bridge(namespace = "rust_allocator_internal")] ++pub mod ffi { ++ extern "C++" { ++ include!("build/rust/allocator/allocator_impls.h"); ++ ++ unsafe fn alloc(size: usize, align: usize) -> *mut u8; ++ unsafe fn dealloc(p: *mut u8, size: usize, align: usize); ++ unsafe fn realloc(p: *mut u8, old_size: usize, align: usize, new_size: usize) -> *mut u8; ++ unsafe fn alloc_zeroed(size: usize, align: usize) -> *mut u8; ++ } ++} diff --git a/www/iridium/files/patch-build_rust_allocator_compiler__specific.h b/www/iridium/files/patch-build_rust_allocator_compiler__specific.h new file mode 100644 index 000000000000..7feb0c739d79 --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_compiler__specific.h @@ -0,0 +1,41 @@ +--- build/rust/allocator/compiler_specific.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/compiler_specific.h +@@ -0,0 +1,38 @@ ++// Copyright 2023 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/compiler_specific.h (and then ++// significantly trimmed to just the APIs / macros needed by //build/rust/std). ++// ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#ifndef BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_ ++#define BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_ ++ ++#include "build/build_config.h" ++ ++#if defined(COMPILER_MSVC) && !defined(__clang__) ++#error "Only clang-cl is supported on Windows, see https://crbug.com/988071" ++#endif ++ ++#if defined(__has_attribute) ++#define HAS_ATTRIBUTE(x) __has_attribute(x) ++#else ++#define HAS_ATTRIBUTE(x) 0 ++#endif ++ ++// Annotate a function indicating it should not be inlined. ++// Use like: ++// NOINLINE void DoStuff() { ... } ++#if defined(__clang__) && HAS_ATTRIBUTE(noinline) ++#define NOINLINE [[clang::noinline]] ++#elif defined(COMPILER_GCC) && HAS_ATTRIBUTE(noinline) ++#define NOINLINE __attribute__((noinline)) ++#elif defined(COMPILER_MSVC) ++#define NOINLINE __declspec(noinline) ++#else ++#define NOINLINE ++#endif ++ ++#endif // BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_ diff --git a/www/iridium/files/patch-build_rust_allocator_immediate__crash.h b/www/iridium/files/patch-build_rust_allocator_immediate__crash.h new file mode 100644 index 000000000000..7ab0f9d9c34c --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_immediate__crash.h @@ -0,0 +1,174 @@ +--- build/rust/allocator/immediate_crash.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/immediate_crash.h +@@ -0,0 +1,171 @@ ++// Copyright 2021 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/immediate_crash.h. ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#ifndef BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_ ++#define BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_ ++ ++#include "build/build_config.h" ++ ++// Crashes in the fastest possible way with no attempt at logging. ++// There are several constraints; see http://crbug.com/664209 for more context. ++// ++// - TRAP_SEQUENCE_() must be fatal. It should not be possible to ignore the ++// resulting exception or simply hit 'continue' to skip over it in a debugger. ++// - Different instances of TRAP_SEQUENCE_() must not be folded together, to ++// ensure crash reports are debuggable. Unlike __builtin_trap(), asm volatile ++// blocks will not be folded together. ++// Note: TRAP_SEQUENCE_() previously required an instruction with a unique ++// nonce since unlike clang, GCC folds together identical asm volatile ++// blocks. ++// - TRAP_SEQUENCE_() must produce a signal that is distinct from an invalid ++// memory access. ++// - TRAP_SEQUENCE_() must be treated as a set of noreturn instructions. ++// __builtin_unreachable() is used to provide that hint here. clang also uses ++// this as a heuristic to pack the instructions in the function epilogue to ++// improve code density. ++// ++// Additional properties that are nice to have: ++// - TRAP_SEQUENCE_() should be as compact as possible. ++// - The first instruction of TRAP_SEQUENCE_() should not change, to avoid ++// shifting crash reporting clusters. As a consequence of this, explicit ++// assembly is preferred over intrinsics. ++// Note: this last bullet point may no longer be true, and may be removed in ++// the future. ++ ++// Note: TRAP_SEQUENCE Is currently split into two macro helpers due to the fact ++// that clang emits an actual instruction for __builtin_unreachable() on certain ++// platforms (see https://crbug.com/958675). In addition, the int3/bkpt/brk will ++// be removed in followups, so splitting it up like this now makes it easy to ++// land the followups. ++ ++#if defined(COMPILER_GCC) ++ ++#if BUILDFLAG(IS_NACL) ++ ++// Crash report accuracy is not guaranteed on NaCl. ++#define TRAP_SEQUENCE1_() __builtin_trap() ++#define TRAP_SEQUENCE2_() asm volatile("") ++ ++#elif defined(ARCH_CPU_X86_FAMILY) ++ ++// TODO(crbug.com/40625592): In theory, it should be possible to use just ++// int3. However, there are a number of crashes with SIGILL as the exception ++// code, so it seems likely that there's a signal handler that allows execution ++// to continue after SIGTRAP. ++#define TRAP_SEQUENCE1_() asm volatile("int3") ++ ++#if BUILDFLAG(IS_APPLE) ++// Intentionally empty: __builtin_unreachable() is always part of the sequence ++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Mac. ++#define TRAP_SEQUENCE2_() asm volatile("") ++#else ++#define TRAP_SEQUENCE2_() asm volatile("ud2") ++#endif // BUILDFLAG(IS_APPLE) ++ ++#elif defined(ARCH_CPU_ARMEL) ++ ++// bkpt will generate a SIGBUS when running on armv7 and a SIGTRAP when running ++// as a 32 bit userspace app on arm64. There doesn't seem to be any way to ++// cause a SIGTRAP from userspace without using a syscall (which would be a ++// problem for sandboxing). ++// TODO(crbug.com/40625592): Remove bkpt from this sequence. ++#define TRAP_SEQUENCE1_() asm volatile("bkpt #0") ++#define TRAP_SEQUENCE2_() asm volatile("udf #0") ++ ++#elif defined(ARCH_CPU_ARM64) ++ ++// This will always generate a SIGTRAP on arm64. ++// TODO(crbug.com/40625592): Remove brk from this sequence. ++#define TRAP_SEQUENCE1_() asm volatile("brk #0") ++#define TRAP_SEQUENCE2_() asm volatile("hlt #0") ++ ++#else ++ ++// Crash report accuracy will not be guaranteed on other architectures, but at ++// least this will crash as expected. ++#define TRAP_SEQUENCE1_() __builtin_trap() ++#define TRAP_SEQUENCE2_() asm volatile("") ++ ++#endif // ARCH_CPU_* ++ ++#elif defined(COMPILER_MSVC) ++ ++#if !defined(__clang__) ++ ++// MSVC x64 doesn't support inline asm, so use the MSVC intrinsic. ++#define TRAP_SEQUENCE1_() __debugbreak() ++#define TRAP_SEQUENCE2_() ++ ++#elif defined(ARCH_CPU_ARM64) ++ ++// Windows ARM64 uses "BRK #F000" as its breakpoint instruction, and ++// __debugbreak() generates that in both VC++ and clang. ++#define TRAP_SEQUENCE1_() __debugbreak() ++// Intentionally empty: __builtin_unreachable() is always part of the sequence ++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Win64, ++// https://crbug.com/958373 ++#define TRAP_SEQUENCE2_() __asm volatile("") ++ ++#else ++ ++#define TRAP_SEQUENCE1_() asm volatile("int3") ++#define TRAP_SEQUENCE2_() asm volatile("ud2") ++ ++#endif // __clang__ ++ ++#else ++ ++#error No supported trap sequence! ++ ++#endif // COMPILER_GCC ++ ++#define TRAP_SEQUENCE_() \ ++ do { \ ++ TRAP_SEQUENCE1_(); \ ++ TRAP_SEQUENCE2_(); \ ++ } while (false) ++ ++// CHECK() and the trap sequence can be invoked from a constexpr function. ++// This could make compilation fail on GCC, as it forbids directly using inline ++// asm inside a constexpr function. However, it allows calling a lambda ++// expression including the same asm. ++// The side effect is that the top of the stacktrace will not point to the ++// calling function, but to this anonymous lambda. This is still useful as the ++// full name of the lambda will typically include the name of the function that ++// calls CHECK() and the debugger will still break at the right line of code. ++#if !defined(COMPILER_GCC) || defined(__clang__) ++ ++#define WRAPPED_TRAP_SEQUENCE_() TRAP_SEQUENCE_() ++ ++#else ++ ++#define WRAPPED_TRAP_SEQUENCE_() \ ++ do { \ ++ [] { TRAP_SEQUENCE_(); }(); \ ++ } while (false) ++ ++#endif // !defined(COMPILER_GCC) || defined(__clang__) ++ ++#if defined(__clang__) || defined(COMPILER_GCC) ++ ++// __builtin_unreachable() hints to the compiler that this is noreturn and can ++// be packed in the function epilogue. ++#define IMMEDIATE_CRASH() \ ++ ({ \ ++ WRAPPED_TRAP_SEQUENCE_(); \ ++ __builtin_unreachable(); \ ++ }) ++ ++#else ++ ++// This is supporting non-chromium user of logging.h to build with MSVC, like ++// pdfium. On MSVC there is no __builtin_unreachable(). ++#define IMMEDIATE_CRASH() WRAPPED_TRAP_SEQUENCE_() ++ ++#endif // defined(__clang__) || defined(COMPILER_GCC) ++ ++#endif // BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_ diff --git a/www/iridium/files/patch-build_rust_allocator_lib.rs b/www/iridium/files/patch-build_rust_allocator_lib.rs new file mode 100644 index 000000000000..89fddf278294 --- /dev/null +++ b/www/iridium/files/patch-build_rust_allocator_lib.rs @@ -0,0 +1,122 @@ +--- build/rust/allocator/lib.rs.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/lib.rs +@@ -0,0 +1,119 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++//! Define the allocator that Rust code in Chrome should use. ++//! ++//! Any final artifact that depends on this crate, even transitively, will use ++//! the allocator defined here. ++//! ++//! List of known issues: ++//! ++//! 1. We'd like to use PartitionAlloc on Windows, but the stdlib uses Windows ++//! heap functions directly that PartitionAlloc can not intercept. ++//! 2. We'd like `Vec::try_reserve` to fail at runtime on Linux instead of ++//! crashing in malloc() where PartitionAlloc replaces that function. ++ ++// Required to apply weak linkage to symbols. ++// ++// TODO(https://crbug.com/410596442): Stop using unstable features here. ++// https://github.com/rust-lang/rust/issues/29603 tracks stabilization of the `linkage` feature. ++#![feature(linkage)] ++// Required to apply `#[rustc_std_internal_symbol]` to our alloc error handler ++// so the name is correctly mangled as rustc expects. ++// ++// TODO(https://crbug.com/410596442): Stop using internal features here. ++#![allow(internal_features)] ++#![feature(rustc_attrs)] ++ ++// This module is in a separate source file to avoid having to teach `cxxbridge` ++// about conditional compilation. ++#[cfg(rust_allocator_uses_allocator_impls_h)] ++mod allocator_impls_ffi; ++ ++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for ++/// using an allocator from C++. ++#[cfg(rust_allocator_uses_allocator_impls_h)] ++mod cpp_allocator { ++ use super::allocator_impls_ffi::ffi; ++ use std::alloc::{GlobalAlloc, Layout}; ++ ++ struct Allocator; ++ ++ unsafe impl GlobalAlloc for Allocator { ++ unsafe fn alloc(&self, layout: Layout) -> *mut u8 { ++ unsafe { ffi::alloc(layout.size(), layout.align()) } ++ } ++ ++ unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { ++ unsafe { ++ ffi::dealloc(ptr, layout.size(), layout.align()); ++ } ++ } ++ ++ unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 { ++ unsafe { ffi::alloc_zeroed(layout.size(), layout.align()) } ++ } ++ ++ unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 { ++ unsafe { ffi::realloc(ptr, layout.size(), layout.align(), new_size) } ++ } ++ } ++ ++ #[global_allocator] ++ static GLOBAL: Allocator = Allocator; ++} ++ ++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for ++/// using the default Rust allocator. ++#[cfg(not(rust_allocator_uses_allocator_impls_h))] ++mod rust_allocator { ++ #[global_allocator] ++ static GLOBAL: std::alloc::System = std::alloc::System; ++} ++ ++/// Module that provides global symbols that are needed both by `cpp_allocator` ++/// and `rust_allocator`. ++/// ++/// When `rustc` drives linking, then it will define the symbols below. But ++/// Chromium only uses `rustc` to link Rust-only executables (e.g. `build.rs` ++/// scripts) and otherwise uses a non-Rust linker. This is why we have to ++/// manually define a few symbols below. We define those symbols ++/// as "weak" symbols, so that Rust-provided symbols "win" in case where Rust ++/// actually does drive the linking. This hack works (not only for Chromium, ++/// but also for google3 and other projects), but isn't officially supported by ++/// `rustc`. ++/// ++/// TODO(https://crbug.com/410596442): Stop using internal features here. ++mod both_allocators { ++ /// As part of rustc's contract for using `#[global_allocator]` without ++ /// rustc-generated shims we must define this symbol, since we are opting in ++ /// to unstable functionality. See https://github.com/rust-lang/rust/issues/123015 ++ #[no_mangle] ++ #[linkage = "weak"] ++ static __rust_no_alloc_shim_is_unstable: u8 = 0; ++ ++ // Mangle the symbol name as rustc expects. ++ #[rustc_std_internal_symbol] ++ #[allow(non_upper_case_globals)] ++ #[linkage = "weak"] ++ static __rust_alloc_error_handler_should_panic: u8 = 0; ++ ++ // Mangle the symbol name as rustc expects. ++ #[rustc_std_internal_symbol] ++ #[allow(non_upper_case_globals)] ++ #[linkage = "weak"] ++ fn __rust_alloc_error_handler(_size: usize, _align: usize) { ++ // TODO(lukasza): Investigate if we can just call `std::process::abort()` here. ++ // (Not really _needed_, but it could simplify code a little bit.) ++ unsafe { ffi::alloc_error_handler_impl() } ++ } ++ ++ #[cxx::bridge(namespace = "rust_allocator_internal")] ++ mod ffi { ++ extern "C++" { ++ include!("build/rust/allocator/alloc_error_handler_impl.h"); ++ unsafe fn alloc_error_handler_impl(); ++ } ++ } ++} diff --git a/www/iridium/files/patch-build_rust_cargo__crate.gni b/www/iridium/files/patch-build_rust_cargo__crate.gni new file mode 100644 index 000000000000..a1590f727aa3 --- /dev/null +++ b/www/iridium/files/patch-build_rust_cargo__crate.gni @@ -0,0 +1,25 @@ +--- build/rust/cargo_crate.gni.orig 2025-05-20 09:16:26 UTC ++++ build/rust/cargo_crate.gni +@@ -259,6 +259,12 @@ template("cargo_crate") { + # Don't import the `chromium` crate into third-party code. + no_chromium_prelude = true + ++ # Don't depend on the chrome-specific #[global_allocator] crate from ++ # third-party code. This avoids some dependency cycle issues. The allocator ++ # crate will still be used if it exists anywhere in the dependency graph for ++ # a given linked artifact. ++ no_allocator_crate = true ++ + rustc_metadata = _rustc_metadata + + # TODO(crbug.com/40259764): don't default to true. This requires changes to +@@ -482,6 +488,9 @@ template("cargo_crate") { + + # Don't import the `chromium` crate into third-party code. + no_chromium_prelude = true ++ ++ # Build scripts do not need to link to chrome's allocator. ++ no_allocator_crate = true + + # The ${_build_script_name}_output target looks for the exe in this + # location. Due to how the Windows component build works, this has to diff --git a/www/iridium/files/patch-build_rust_rust__macro.gni b/www/iridium/files/patch-build_rust_rust__macro.gni new file mode 100644 index 000000000000..0dafc3819aa1 --- /dev/null +++ b/www/iridium/files/patch-build_rust_rust__macro.gni @@ -0,0 +1,12 @@ +--- build/rust/rust_macro.gni.orig 2025-05-20 09:16:26 UTC ++++ build/rust/rust_macro.gni +@@ -16,6 +16,9 @@ template("rust_macro") { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + proc_macro_configs = invoker.configs + target_type = "rust_proc_macro" ++ ++ # Macros are loaded by rustc and shouldn't use chrome's allocation routines. ++ no_allocator_crate = true + } + } + diff --git a/www/iridium/files/patch-build_rust_rust__target.gni b/www/iridium/files/patch-build_rust_rust__target.gni new file mode 100644 index 000000000000..f4ad6f04fc45 --- /dev/null +++ b/www/iridium/files/patch-build_rust_rust__target.gni @@ -0,0 +1,13 @@ +--- build/rust/rust_target.gni.orig 2025-05-20 09:16:26 UTC ++++ build/rust/rust_target.gni +@@ -339,6 +339,10 @@ template("rust_target") { + _rust_deps += [ "//build/rust/std" ] + } + ++ if (!defined(invoker.no_allocator_crate) || !invoker.no_allocator_crate) { ++ _rust_deps += [ "//build/rust/allocator" ] ++ } ++ + if (_build_unit_tests) { + _unit_test_target = "${_target_name}_unittests" + if (defined(invoker.unit_test_target)) { diff --git a/www/iridium/files/patch-build_rust_std_BUILD.gn b/www/iridium/files/patch-build_rust_std_BUILD.gn index d0b722a2cab3..c6c2801bd47d 100644 --- a/www/iridium/files/patch-build_rust_std_BUILD.gn +++ b/www/iridium/files/patch-build_rust_std_BUILD.gn @@ -1,6 +1,58 @@ ---- build/rust/std/BUILD.gn.orig 2025-05-07 06:48:23 UTC +--- build/rust/std/BUILD.gn.orig 2025-05-20 09:16:26 UTC +++ build/rust/std/BUILD.gn -@@ -89,13 +89,20 @@ if (toolchain_has_rust) { +@@ -15,51 +15,12 @@ + # allocator functions to PartitionAlloc when `use_partition_alloc_as_malloc` is + # true, so that Rust and C++ use the same allocator backend. + +-import("//build/buildflag_header.gni") + import("//build/config/compiler/compiler.gni") + import("//build/config/coverage/coverage.gni") + import("//build/config/rust.gni") + import("//build/config/sanitizers/sanitizers.gni") + +-rust_allocator_uses_partition_alloc = false +-if (build_with_chromium) { +- import("//base/allocator/partition_allocator/partition_alloc.gni") +- rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc +-} +- +-buildflag_header("buildflags") { +- header = "buildflags.h" +- flags = [ +- "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc", +- ] +- visibility = [ ":*" ] +-} +- + if (toolchain_has_rust) { +- # If clang performs the link step, we need to provide the allocator symbols +- # that are normally injected by rustc during linking. +- # +- # We also "happen to" use this to redirect allocations to PartitionAlloc, +- # though that would be better done through a #[global_allocator] crate (see +- # above). +- source_set("remap_alloc") { +- public_deps = [] +- if (rust_allocator_uses_partition_alloc) { +- public_deps += [ "//base/allocator/partition_allocator:partition_alloc" ] +- } +- deps = [ ":buildflags" ] +- sources = [ +- # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been +- # copied from `//base`. +- # TODO(crbug.com/40279749): Avoid duplication / reuse code. +- "alias.cc", +- "alias.h", +- "compiler_specific.h", +- "immediate_crash.h", +- "remap_alloc.cc", +- ] +- } +- + # List of Rust stdlib rlibs which are present in the official Rust toolchain + # we are using from the Android team. This is usually a version or two behind + # nightly. Generally this matches the toolchain we build ourselves, but if +@@ -89,13 +50,20 @@ if (toolchain_has_rust) { # These are no longer present in the Windows toolchain. stdlib_files += [ "addr2line", @@ -22,7 +74,7 @@ } if (toolchain_for_rust_host_build_tools) { -@@ -115,7 +122,6 @@ if (toolchain_has_rust) { +@@ -115,7 +83,6 @@ if (toolchain_has_rust) { # don't need to pass to the C++ linker because they're used for specialized # purposes. skip_stdlib_files = [ @@ -30,3 +82,25 @@ "rustc_std_workspace_alloc", "rustc_std_workspace_core", "rustc_std_workspace_std", +@@ -269,8 +236,6 @@ if (toolchain_has_rust) { + foreach(libname, stdlib_files + skip_stdlib_files) { + deps += [ "rules:$libname" ] + } +- +- public_deps = [ ":remap_alloc" ] + } + } else { + action("find_stdlib") { +@@ -396,12 +361,6 @@ if (toolchain_has_rust) { + ":stdlib_public_dependent_libs", + ] + deps = [ ":prebuilt_rustc_copy_to_sysroot" ] +- +- # The host builds tools toolchain supports Rust only and does not use +- # the allocator remapping to point it to PartitionAlloc. +- if (!toolchain_for_rust_host_build_tools) { +- deps += [ ":remap_alloc" ] +- } + } + } + } diff --git a/www/moin2/Makefile b/www/moin2/Makefile index f9cfdc0b4cf6..73c81803afa8 100644 --- a/www/moin2/Makefile +++ b/www/moin2/Makefile @@ -4,7 +4,7 @@ CATEGORIES= www python MASTER_SITES= https://github.com/moinwiki/moin/releases/download/${DISTVERSION}/ PKGNAMESUFFIX= 2 -MAINTAINER= bofh@FreeBSD.org +MAINTAINER= ports@FreeBSD.org COMMENT= Easy to use, full-featured and extensible wiki software package WWW= https://moinmo.in/ diff --git a/www/proxygen/Makefile b/www/proxygen/Makefile index a97fe5968f2a..e29bf0e39b54 100644 --- a/www/proxygen/Makefile +++ b/www/proxygen/Makefile @@ -1,6 +1,6 @@ PORTNAME= proxygen DISTVERSIONPREFIX= v -DISTVERSION= 2025.05.12.00 +DISTVERSION= 2025.05.19.00 CATEGORIES= www MAINTAINER= yuri@FreeBSD.org diff --git a/www/proxygen/distinfo b/www/proxygen/distinfo index ea2c88d06979..8ff6ca192308 100644 --- a/www/proxygen/distinfo +++ b/www/proxygen/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1747102739 -SHA256 (facebook-proxygen-v2025.05.12.00_GH0.tar.gz) = 1503c296970790e79a543c524185886296e51a01ca27e649c639cb2de9283650 -SIZE (facebook-proxygen-v2025.05.12.00_GH0.tar.gz) = 1217212 +TIMESTAMP = 1747730524 +SHA256 (facebook-proxygen-v2025.05.19.00_GH0.tar.gz) = 9f228584d42be9381bdc044a8289f2a6db34fae2e8f23239e9748fb37938edc6 +SIZE (facebook-proxygen-v2025.05.19.00_GH0.tar.gz) = 1217144 diff --git a/www/typo3-12/Makefile b/www/typo3-12/Makefile index a1edb26741b0..debae5bfffd5 100644 --- a/www/typo3-12/Makefile +++ b/www/typo3-12/Makefile @@ -30,7 +30,7 @@ WRKSRC= ${WRKDIR}/${PORTNAME}_src-${DISTVERSION} PORT_V_MAJOR= 12 PORT_V_MINOR= 4 -PORT_V_PATCH= 28 +PORT_V_PATCH= 31 TYPO3DIR= www/${PORTNAME}-${PORT_V_MAJOR} diff --git a/www/typo3-12/distinfo b/www/typo3-12/distinfo index 7ecfc3395f59..8ba5a3b50a56 100644 --- a/www/typo3-12/distinfo +++ b/www/typo3-12/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1742309083 -SHA256 (typo3_src-12.4.28.tar.gz) = 000c7dd6cb940592ce83c683837862086d29d8809aca7bd5cc92180c8e94b2cc -SIZE (typo3_src-12.4.28.tar.gz) = 26593637 +TIMESTAMP = 1747746945 +SHA256 (typo3_src-12.4.31.tar.gz) = 69e71c0be15291eb56db09ab305c942b499da434a9d9042b9e0662b1a9783681 +SIZE (typo3_src-12.4.31.tar.gz) = 26607292 diff --git a/www/typo3-13/Makefile b/www/typo3-13/Makefile index 651851cca9e2..7ed4243700ca 100644 --- a/www/typo3-13/Makefile +++ b/www/typo3-13/Makefile @@ -1,6 +1,6 @@ PORTNAME= typo3 DISTVERSION= ${PORT_V_MAJOR}.${PORT_V_MINOR}.${PORT_V_PATCH} -PORTREVISION= 1 +#PORTREVISION= 1 CATEGORIES= www MASTER_SITES= https://cdn.typo3.com/typo3/${DISTVERSION}/ PKGNAMESUFFIX= -${PORT_V_MAJOR}${PHP_PKGNAMESUFFIX} @@ -32,7 +32,7 @@ SUB_LIST+= PREFIX=${PREFIX} \ PORT_V_MAJOR= 13 PORT_V_MINOR= 4 -PORT_V_PATCH= 8 +PORT_V_PATCH= 12 TYPO3DIR= www/${PORTNAME}-${PORT_V_MAJOR} diff --git a/www/typo3-13/distinfo b/www/typo3-13/distinfo index e0f4de0680f6..2b6bd6c63362 100644 --- a/www/typo3-13/distinfo +++ b/www/typo3-13/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1742309756 -SHA256 (typo3_src-13.4.8.tar.gz) = f851dc46e54d3997c5de16133a41d32283ccc49049882a4d8b97a60e87aa02cf -SIZE (typo3_src-13.4.8.tar.gz) = 25531952 +TIMESTAMP = 1747749336 +SHA256 (typo3_src-13.4.12.tar.gz) = 6d6cbf20c0941592a0c4d85aa540e25564e06de05b33b77f322fee7d42396481 +SIZE (typo3_src-13.4.12.tar.gz) = 25573553 diff --git a/www/ungoogled-chromium/Makefile b/www/ungoogled-chromium/Makefile index 11d2fde1f6f1..1c0da59d7a65 100644 --- a/www/ungoogled-chromium/Makefile +++ b/www/ungoogled-chromium/Makefile @@ -1,5 +1,6 @@ PORTNAME= ungoogled-chromium PORTVERSION= 136.0.7103.113 +PORTREVISION= 1 PULSEMV= 16 PULSEV= ${PULSEMV}.1 UGVERSION= ${DISTVERSION}-1 diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_BUILD.gn b/www/ungoogled-chromium/files/patch-build_rust_allocator_BUILD.gn new file mode 100644 index 000000000000..cb1633140dcc --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_BUILD.gn @@ -0,0 +1,109 @@ +--- build/rust/allocator/BUILD.gn.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/BUILD.gn +@@ -0,0 +1,106 @@ ++# Copyright 2025 The Chromium Authors ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/buildflag_header.gni") ++import("//build/config/rust.gni") ++import("//build/rust/rust_static_library.gni") ++ ++rust_allocator_uses_partition_alloc = false ++if (build_with_chromium) { ++ import("//base/allocator/partition_allocator/partition_alloc.gni") ++ rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc ++} ++ ++# In ASAN builds, PartitionAlloc-Everywhere is disabled, meaning malloc() and ++# friends in C++ do not go to PartitionAlloc. So we also don't point the Rust ++# allocation functions at PartitionAlloc. Generally, this means we just direct ++# them to the Standard Library's allocator. ++# ++# However, on Windows the Standard Library uses HeapAlloc() and Windows ASAN ++# does *not* hook that method, so ASAN does not get to hear about allocations ++# made in Rust. To resolve this, we redirect allocation to _aligned_malloc ++# which Windows ASAN *does* hook. ++# ++# Note that there is a runtime option to make ASAN hook HeapAlloc() but ++# enabling it breaks Win32 APIs like CreateProcess: ++# https://crbug.com/368070343#comment29 ++rust_allocator_uses_aligned_malloc = false ++if (!rust_allocator_uses_partition_alloc && is_win && is_asan) { ++ rust_allocator_uses_aligned_malloc = true ++} ++ ++rust_allocator_uses_allocator_impls_h = ++ rust_allocator_uses_partition_alloc || rust_allocator_uses_aligned_malloc ++ ++buildflag_header("buildflags") { ++ header = "buildflags.h" ++ flags = [ ++ "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc", ++ "RUST_ALLOCATOR_USES_ALIGNED_MALLOC=$rust_allocator_uses_aligned_malloc", ++ ] ++ visibility = [ ":*" ] ++} ++ ++if (toolchain_has_rust) { ++ # All targets which depend on Rust code but are not linked by rustc must ++ # depend on this. Usually, this dependency will come from the rust_target() GN ++ # template. However, cargo_crate() does *not* include this dependency so any ++ # C++ targets which directly depend on a cargo_crate() must depend on this. ++ rust_static_library("allocator") { ++ sources = [ "lib.rs" ] ++ crate_root = "lib.rs" ++ cxx_bindings = [ "lib.rs" ] ++ ++ deps = [ ":alloc_error_handler_impl" ] ++ if (rust_allocator_uses_allocator_impls_h) { ++ deps += [ ":allocator_impls" ] ++ } ++ ++ no_chromium_prelude = true ++ no_allocator_crate = true ++ allow_unsafe = true ++ ++ rustflags = [] ++ if (rust_allocator_uses_allocator_impls_h) { ++ rustflags += [ "--cfg=rust_allocator_uses_allocator_impls_h" ] ++ cxx_bindings += [ "allocator_impls_ffi.rs" ] ++ sources += [ "allocator_impls_ffi.rs" ] ++ } ++ ++ # TODO(https://crbug.com/410596442): Stop using unstable features here. ++ configs -= [ "//build/config/compiler:disallow_unstable_features" ] ++ } ++ ++ if (rust_allocator_uses_allocator_impls_h) { ++ static_library("allocator_impls") { ++ public_deps = [] ++ if (rust_allocator_uses_partition_alloc) { ++ public_deps += ++ [ "//base/allocator/partition_allocator:partition_alloc" ] ++ } ++ ++ sources = [ ++ "allocator_impls.cc", ++ "allocator_impls.h", ++ ] ++ deps = [ ":buildflags" ] ++ visibility = [ ":*" ] ++ } ++ } ++ ++ static_library("alloc_error_handler_impl") { ++ sources = [ ++ # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been ++ # copied from `//base`. ++ # TODO(crbug.com/40279749): Avoid duplication / reuse code. ++ "alias.cc", ++ "alias.h", ++ "alloc_error_handler_impl.cc", ++ "alloc_error_handler_impl.h", ++ "compiler_specific.h", ++ "immediate_crash.h", ++ ] ++ visibility = [ ":*" ] ++ } ++} diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_DEPS b/www/ungoogled-chromium/files/patch-build_rust_allocator_DEPS new file mode 100644 index 000000000000..74bb2d6c2421 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_DEPS @@ -0,0 +1,12 @@ +--- build/rust/allocator/DEPS.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/DEPS +@@ -0,0 +1,9 @@ ++include_rules = [ ++ "-base", ++] ++ ++specific_include_rules = { ++ "allocator_impls.cc" : [ ++ "+partition_alloc" ++ ] ++} diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.cc b/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.cc new file mode 100644 index 000000000000..5280641f27e1 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.cc @@ -0,0 +1,25 @@ +--- build/rust/allocator/alias.cc.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alias.cc +@@ -0,0 +1,22 @@ ++// Copyright 2023 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/debug/alias.cc ( additionally the APIs ++// were moved into the `build_rust_std` namespace). ++// ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#include "build/rust/allocator/alias.h" ++ ++#include "build/rust/allocator/compiler_specific.h" ++ ++namespace build_rust_std { ++namespace debug { ++ ++// This file/function should be excluded from LTO/LTCG to ensure that the ++// compiler can't see this function's implementation when compiling calls to it. ++NOINLINE void Alias(const void* var) {} ++ ++} // namespace debug ++} // namespace build_rust_std diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.h new file mode 100644 index 000000000000..6530c6ae8779 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_alias.h @@ -0,0 +1,40 @@ +--- build/rust/allocator/alias.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alias.h +@@ -0,0 +1,37 @@ ++// Copyright 2023 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/debug/alias.h (and then trimmed to just ++// the APIs / macros needed by //build/rust/std; additionally the APIs were ++// moved into the `build_rust_std` namespace). ++// ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#ifndef BUILD_RUST_ALLOCATOR_ALIAS_H_ ++#define BUILD_RUST_ALLOCATOR_ALIAS_H_ ++ ++#include <stddef.h> ++ ++namespace build_rust_std { ++namespace debug { ++ ++// Make the optimizer think that |var| is aliased. This can be used to prevent a ++// local variable from being optimized out (which is something that ++// `NO_CODE_FOLDING` macro definition below depends on). See ++// //base/debug/alias.h for more details. ++void Alias(const void* var); ++ ++} // namespace debug ++ ++} // namespace build_rust_std ++ ++// Prevent code folding (where a linker identifies functions that are ++// bit-identical and overlays them, which saves space but it leads to confusing ++// call stacks because multiple symbols are at the same address). See ++// //base/debug/alias.h for more details. ++#define NO_CODE_FOLDING() \ ++ const int line_number = __LINE__; \ ++ build_rust_std::debug::Alias(&line_number) ++ ++#endif // BUILD_RUST_ALLOCATOR_ALIAS_H_ diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc b/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc new file mode 100644 index 000000000000..048c267abefa --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.cc @@ -0,0 +1,20 @@ +--- build/rust/allocator/alloc_error_handler_impl.cc.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alloc_error_handler_impl.cc +@@ -0,0 +1,17 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "build/rust/allocator/alloc_error_handler_impl.h" ++ ++#include "build/rust/allocator/alias.h" ++#include "build/rust/allocator/immediate_crash.h" ++ ++namespace rust_allocator_internal { ++ ++void alloc_error_handler_impl() { ++ NO_CODE_FOLDING(); ++ IMMEDIATE_CRASH(); ++} ++ ++} // namespace rust_allocator_internal diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h new file mode 100644 index 000000000000..887ea602b027 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_alloc__error__handler__impl.h @@ -0,0 +1,24 @@ +--- build/rust/allocator/alloc_error_handler_impl.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/alloc_error_handler_impl.h +@@ -0,0 +1,21 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_ ++#define BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_ ++ ++// This header exposes to Rust a C++ implementation of quickly crashing after an ++// allocation error. (The API below is called from `__rust_alloc_error_handler` ++// in `lib.rs`.) ++// ++// TODO(lukasza): Investigate if we can delete this `.h` / `.cc` and just call ++// `std::process::abort()` (or something else?) directly from `.rs`. The main ++// open question is how much we care about `NO_CODE_FOLDING`. ++namespace rust_allocator_internal { ++ ++void alloc_error_handler_impl(); ++ ++} // namespace rust_allocator_internal ++ ++#endif // BUILD_RUST_ALLOCATOR_ALLOC_ERROR_HANDLER_IMPL_H_ diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.cc b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.cc new file mode 100644 index 000000000000..94e04d7b966a --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.cc @@ -0,0 +1,108 @@ +--- build/rust/allocator/allocator_impls.cc.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/allocator_impls.cc +@@ -0,0 +1,105 @@ ++// Copyright 2021 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "build/rust/allocator/allocator_impls.h" ++ ++#ifdef UNSAFE_BUFFERS_BUILD ++// TODO(crbug.com/390223051): Remove C-library calls to fix the errors. ++#pragma allow_unsafe_libc_calls ++#endif ++ ++#include <cstddef> ++#include <cstring> ++ ++#include "build/build_config.h" ++#include "build/rust/allocator/buildflags.h" ++ ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++#include "partition_alloc/partition_alloc_constants.h" // nogncheck ++#include "partition_alloc/shim/allocator_shim.h" // nogncheck ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++#include <cstdlib> ++#endif ++ ++namespace rust_allocator_internal { ++ ++unsigned char* alloc(size_t size, size_t align) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++ // PartitionAlloc will crash if given an alignment larger than this. ++ if (align > partition_alloc::internal::kMaxSupportedAlignment) { ++ return nullptr; ++ } ++ ++ // We use unchecked allocation paths in PartitionAlloc rather than going ++ // through its shims in `malloc()` etc so that we can support fallible ++ // allocation paths such as Vec::try_reserve without crashing on allocation ++ // failure. ++ if (align <= alignof(std::max_align_t)) { ++ return static_cast<unsigned char*>(allocator_shim::UncheckedAlloc(size)); ++ } else { ++ return static_cast<unsigned char*>( ++ allocator_shim::UncheckedAlignedAlloc(size, align)); ++ } ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ return static_cast<unsigned char*>(_aligned_malloc(size, align)); ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++void dealloc(unsigned char* p, size_t size, size_t align) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++ if (align <= alignof(std::max_align_t)) { ++ allocator_shim::UncheckedFree(p); ++ } else { ++ allocator_shim::UncheckedAlignedFree(p); ++ } ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ return _aligned_free(p); ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++unsigned char* realloc(unsigned char* p, ++ size_t old_size, ++ size_t align, ++ size_t new_size) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) ++ // We use unchecked allocation paths in PartitionAlloc rather than going ++ // through its shims in `malloc()` etc so that we can support fallible ++ // allocation paths such as Vec::try_reserve without crashing on allocation ++ // failure. ++ if (align <= alignof(std::max_align_t)) { ++ return static_cast<unsigned char*>( ++ allocator_shim::UncheckedRealloc(p, new_size)); ++ } else { ++ return static_cast<unsigned char*>( ++ allocator_shim::UncheckedAlignedRealloc(p, new_size, align)); ++ } ++#elif BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ return static_cast<unsigned char*>(_aligned_realloc(p, new_size, align)); ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++unsigned char* alloc_zeroed(size_t size, size_t align) { ++#if BUILDFLAG(RUST_ALLOCATOR_USES_PARTITION_ALLOC) || \ ++ BUILDFLAG(RUST_ALLOCATOR_USES_ALIGNED_MALLOC) ++ // TODO(danakj): When RUST_ALLOCATOR_USES_PARTITION_ALLOC is true, it's ++ // possible that a partition_alloc::UncheckedAllocZeroed() call would perform ++ // better than partition_alloc::UncheckedAlloc() + memset. But there is no ++ // such API today. See b/342251590. ++ unsigned char* p = alloc(size, align); ++ if (p) { ++ memset(p, 0, size); ++ } ++ return p; ++#else ++#error This configuration is not supported. ++#endif ++} ++ ++} // namespace rust_allocator_internal diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.h new file mode 100644 index 000000000000..9249cdc938d2 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls.h @@ -0,0 +1,27 @@ +--- build/rust/allocator/allocator_impls.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/allocator_impls.h +@@ -0,0 +1,24 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_ ++#define BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_ ++ ++#include <cstddef> ++ ++// This header exposes a C++ allocator (e.g. PartitionAlloc) to Rust. ++// The APIs below are called from `impl GlobalAlloc` in `lib.rs`. ++namespace rust_allocator_internal { ++ ++unsigned char* alloc(size_t size, size_t align); ++void dealloc(unsigned char* p, size_t size, size_t align); ++unsigned char* realloc(unsigned char* p, ++ size_t old_size, ++ size_t align, ++ size_t new_size); ++unsigned char* alloc_zeroed(size_t size, size_t align); ++ ++} // namespace rust_allocator_internal ++ ++#endif // BUILD_RUST_ALLOCATOR_ALLOCATOR_IMPLS_H_ diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs new file mode 100644 index 000000000000..8f0baf1576ce --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_allocator__impls__ffi.rs @@ -0,0 +1,22 @@ +--- build/rust/allocator/allocator_impls_ffi.rs.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/allocator_impls_ffi.rs +@@ -0,0 +1,19 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++//! FFI for `allocator_impls.h` is in a separate `.rs` file/module to ++//! better support conditional compilation (these functions are only ++//! used under `#[cfg(rust_allocator_uses_allocator_impls_h)]`. ++ ++#[cxx::bridge(namespace = "rust_allocator_internal")] ++pub mod ffi { ++ extern "C++" { ++ include!("build/rust/allocator/allocator_impls.h"); ++ ++ unsafe fn alloc(size: usize, align: usize) -> *mut u8; ++ unsafe fn dealloc(p: *mut u8, size: usize, align: usize); ++ unsafe fn realloc(p: *mut u8, old_size: usize, align: usize, new_size: usize) -> *mut u8; ++ unsafe fn alloc_zeroed(size: usize, align: usize) -> *mut u8; ++ } ++} diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_compiler__specific.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_compiler__specific.h new file mode 100644 index 000000000000..7feb0c739d79 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_compiler__specific.h @@ -0,0 +1,41 @@ +--- build/rust/allocator/compiler_specific.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/compiler_specific.h +@@ -0,0 +1,38 @@ ++// Copyright 2023 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/compiler_specific.h (and then ++// significantly trimmed to just the APIs / macros needed by //build/rust/std). ++// ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#ifndef BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_ ++#define BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_ ++ ++#include "build/build_config.h" ++ ++#if defined(COMPILER_MSVC) && !defined(__clang__) ++#error "Only clang-cl is supported on Windows, see https://crbug.com/988071" ++#endif ++ ++#if defined(__has_attribute) ++#define HAS_ATTRIBUTE(x) __has_attribute(x) ++#else ++#define HAS_ATTRIBUTE(x) 0 ++#endif ++ ++// Annotate a function indicating it should not be inlined. ++// Use like: ++// NOINLINE void DoStuff() { ... } ++#if defined(__clang__) && HAS_ATTRIBUTE(noinline) ++#define NOINLINE [[clang::noinline]] ++#elif defined(COMPILER_GCC) && HAS_ATTRIBUTE(noinline) ++#define NOINLINE __attribute__((noinline)) ++#elif defined(COMPILER_MSVC) ++#define NOINLINE __declspec(noinline) ++#else ++#define NOINLINE ++#endif ++ ++#endif // BUILD_RUST_ALLOCATOR_COMPILER_SPECIFIC_H_ diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_immediate__crash.h b/www/ungoogled-chromium/files/patch-build_rust_allocator_immediate__crash.h new file mode 100644 index 000000000000..7ab0f9d9c34c --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_immediate__crash.h @@ -0,0 +1,174 @@ +--- build/rust/allocator/immediate_crash.h.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/immediate_crash.h +@@ -0,0 +1,171 @@ ++// Copyright 2021 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// This file has been copied from //base/immediate_crash.h. ++// TODO(crbug.com/40279749): Avoid code duplication / reuse code. ++ ++#ifndef BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_ ++#define BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_ ++ ++#include "build/build_config.h" ++ ++// Crashes in the fastest possible way with no attempt at logging. ++// There are several constraints; see http://crbug.com/664209 for more context. ++// ++// - TRAP_SEQUENCE_() must be fatal. It should not be possible to ignore the ++// resulting exception or simply hit 'continue' to skip over it in a debugger. ++// - Different instances of TRAP_SEQUENCE_() must not be folded together, to ++// ensure crash reports are debuggable. Unlike __builtin_trap(), asm volatile ++// blocks will not be folded together. ++// Note: TRAP_SEQUENCE_() previously required an instruction with a unique ++// nonce since unlike clang, GCC folds together identical asm volatile ++// blocks. ++// - TRAP_SEQUENCE_() must produce a signal that is distinct from an invalid ++// memory access. ++// - TRAP_SEQUENCE_() must be treated as a set of noreturn instructions. ++// __builtin_unreachable() is used to provide that hint here. clang also uses ++// this as a heuristic to pack the instructions in the function epilogue to ++// improve code density. ++// ++// Additional properties that are nice to have: ++// - TRAP_SEQUENCE_() should be as compact as possible. ++// - The first instruction of TRAP_SEQUENCE_() should not change, to avoid ++// shifting crash reporting clusters. As a consequence of this, explicit ++// assembly is preferred over intrinsics. ++// Note: this last bullet point may no longer be true, and may be removed in ++// the future. ++ ++// Note: TRAP_SEQUENCE Is currently split into two macro helpers due to the fact ++// that clang emits an actual instruction for __builtin_unreachable() on certain ++// platforms (see https://crbug.com/958675). In addition, the int3/bkpt/brk will ++// be removed in followups, so splitting it up like this now makes it easy to ++// land the followups. ++ ++#if defined(COMPILER_GCC) ++ ++#if BUILDFLAG(IS_NACL) ++ ++// Crash report accuracy is not guaranteed on NaCl. ++#define TRAP_SEQUENCE1_() __builtin_trap() ++#define TRAP_SEQUENCE2_() asm volatile("") ++ ++#elif defined(ARCH_CPU_X86_FAMILY) ++ ++// TODO(crbug.com/40625592): In theory, it should be possible to use just ++// int3. However, there are a number of crashes with SIGILL as the exception ++// code, so it seems likely that there's a signal handler that allows execution ++// to continue after SIGTRAP. ++#define TRAP_SEQUENCE1_() asm volatile("int3") ++ ++#if BUILDFLAG(IS_APPLE) ++// Intentionally empty: __builtin_unreachable() is always part of the sequence ++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Mac. ++#define TRAP_SEQUENCE2_() asm volatile("") ++#else ++#define TRAP_SEQUENCE2_() asm volatile("ud2") ++#endif // BUILDFLAG(IS_APPLE) ++ ++#elif defined(ARCH_CPU_ARMEL) ++ ++// bkpt will generate a SIGBUS when running on armv7 and a SIGTRAP when running ++// as a 32 bit userspace app on arm64. There doesn't seem to be any way to ++// cause a SIGTRAP from userspace without using a syscall (which would be a ++// problem for sandboxing). ++// TODO(crbug.com/40625592): Remove bkpt from this sequence. ++#define TRAP_SEQUENCE1_() asm volatile("bkpt #0") ++#define TRAP_SEQUENCE2_() asm volatile("udf #0") ++ ++#elif defined(ARCH_CPU_ARM64) ++ ++// This will always generate a SIGTRAP on arm64. ++// TODO(crbug.com/40625592): Remove brk from this sequence. ++#define TRAP_SEQUENCE1_() asm volatile("brk #0") ++#define TRAP_SEQUENCE2_() asm volatile("hlt #0") ++ ++#else ++ ++// Crash report accuracy will not be guaranteed on other architectures, but at ++// least this will crash as expected. ++#define TRAP_SEQUENCE1_() __builtin_trap() ++#define TRAP_SEQUENCE2_() asm volatile("") ++ ++#endif // ARCH_CPU_* ++ ++#elif defined(COMPILER_MSVC) ++ ++#if !defined(__clang__) ++ ++// MSVC x64 doesn't support inline asm, so use the MSVC intrinsic. ++#define TRAP_SEQUENCE1_() __debugbreak() ++#define TRAP_SEQUENCE2_() ++ ++#elif defined(ARCH_CPU_ARM64) ++ ++// Windows ARM64 uses "BRK #F000" as its breakpoint instruction, and ++// __debugbreak() generates that in both VC++ and clang. ++#define TRAP_SEQUENCE1_() __debugbreak() ++// Intentionally empty: __builtin_unreachable() is always part of the sequence ++// (see IMMEDIATE_CRASH below) and already emits a ud2 on Win64, ++// https://crbug.com/958373 ++#define TRAP_SEQUENCE2_() __asm volatile("") ++ ++#else ++ ++#define TRAP_SEQUENCE1_() asm volatile("int3") ++#define TRAP_SEQUENCE2_() asm volatile("ud2") ++ ++#endif // __clang__ ++ ++#else ++ ++#error No supported trap sequence! ++ ++#endif // COMPILER_GCC ++ ++#define TRAP_SEQUENCE_() \ ++ do { \ ++ TRAP_SEQUENCE1_(); \ ++ TRAP_SEQUENCE2_(); \ ++ } while (false) ++ ++// CHECK() and the trap sequence can be invoked from a constexpr function. ++// This could make compilation fail on GCC, as it forbids directly using inline ++// asm inside a constexpr function. However, it allows calling a lambda ++// expression including the same asm. ++// The side effect is that the top of the stacktrace will not point to the ++// calling function, but to this anonymous lambda. This is still useful as the ++// full name of the lambda will typically include the name of the function that ++// calls CHECK() and the debugger will still break at the right line of code. ++#if !defined(COMPILER_GCC) || defined(__clang__) ++ ++#define WRAPPED_TRAP_SEQUENCE_() TRAP_SEQUENCE_() ++ ++#else ++ ++#define WRAPPED_TRAP_SEQUENCE_() \ ++ do { \ ++ [] { TRAP_SEQUENCE_(); }(); \ ++ } while (false) ++ ++#endif // !defined(COMPILER_GCC) || defined(__clang__) ++ ++#if defined(__clang__) || defined(COMPILER_GCC) ++ ++// __builtin_unreachable() hints to the compiler that this is noreturn and can ++// be packed in the function epilogue. ++#define IMMEDIATE_CRASH() \ ++ ({ \ ++ WRAPPED_TRAP_SEQUENCE_(); \ ++ __builtin_unreachable(); \ ++ }) ++ ++#else ++ ++// This is supporting non-chromium user of logging.h to build with MSVC, like ++// pdfium. On MSVC there is no __builtin_unreachable(). ++#define IMMEDIATE_CRASH() WRAPPED_TRAP_SEQUENCE_() ++ ++#endif // defined(__clang__) || defined(COMPILER_GCC) ++ ++#endif // BUILD_RUST_ALLOCATOR_IMMEDIATE_CRASH_H_ diff --git a/www/ungoogled-chromium/files/patch-build_rust_allocator_lib.rs b/www/ungoogled-chromium/files/patch-build_rust_allocator_lib.rs new file mode 100644 index 000000000000..89fddf278294 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_allocator_lib.rs @@ -0,0 +1,122 @@ +--- build/rust/allocator/lib.rs.orig 2025-05-20 09:16:26 UTC ++++ build/rust/allocator/lib.rs +@@ -0,0 +1,119 @@ ++// Copyright 2025 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++//! Define the allocator that Rust code in Chrome should use. ++//! ++//! Any final artifact that depends on this crate, even transitively, will use ++//! the allocator defined here. ++//! ++//! List of known issues: ++//! ++//! 1. We'd like to use PartitionAlloc on Windows, but the stdlib uses Windows ++//! heap functions directly that PartitionAlloc can not intercept. ++//! 2. We'd like `Vec::try_reserve` to fail at runtime on Linux instead of ++//! crashing in malloc() where PartitionAlloc replaces that function. ++ ++// Required to apply weak linkage to symbols. ++// ++// TODO(https://crbug.com/410596442): Stop using unstable features here. ++// https://github.com/rust-lang/rust/issues/29603 tracks stabilization of the `linkage` feature. ++#![feature(linkage)] ++// Required to apply `#[rustc_std_internal_symbol]` to our alloc error handler ++// so the name is correctly mangled as rustc expects. ++// ++// TODO(https://crbug.com/410596442): Stop using internal features here. ++#![allow(internal_features)] ++#![feature(rustc_attrs)] ++ ++// This module is in a separate source file to avoid having to teach `cxxbridge` ++// about conditional compilation. ++#[cfg(rust_allocator_uses_allocator_impls_h)] ++mod allocator_impls_ffi; ++ ++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for ++/// using an allocator from C++. ++#[cfg(rust_allocator_uses_allocator_impls_h)] ++mod cpp_allocator { ++ use super::allocator_impls_ffi::ffi; ++ use std::alloc::{GlobalAlloc, Layout}; ++ ++ struct Allocator; ++ ++ unsafe impl GlobalAlloc for Allocator { ++ unsafe fn alloc(&self, layout: Layout) -> *mut u8 { ++ unsafe { ffi::alloc(layout.size(), layout.align()) } ++ } ++ ++ unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { ++ unsafe { ++ ffi::dealloc(ptr, layout.size(), layout.align()); ++ } ++ } ++ ++ unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 { ++ unsafe { ffi::alloc_zeroed(layout.size(), layout.align()) } ++ } ++ ++ unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, new_size: usize) -> *mut u8 { ++ unsafe { ffi::realloc(ptr, layout.size(), layout.align(), new_size) } ++ } ++ } ++ ++ #[global_allocator] ++ static GLOBAL: Allocator = Allocator; ++} ++ ++/// Module that provides `#[global_allocator]` / `GlobalAlloc` interface for ++/// using the default Rust allocator. ++#[cfg(not(rust_allocator_uses_allocator_impls_h))] ++mod rust_allocator { ++ #[global_allocator] ++ static GLOBAL: std::alloc::System = std::alloc::System; ++} ++ ++/// Module that provides global symbols that are needed both by `cpp_allocator` ++/// and `rust_allocator`. ++/// ++/// When `rustc` drives linking, then it will define the symbols below. But ++/// Chromium only uses `rustc` to link Rust-only executables (e.g. `build.rs` ++/// scripts) and otherwise uses a non-Rust linker. This is why we have to ++/// manually define a few symbols below. We define those symbols ++/// as "weak" symbols, so that Rust-provided symbols "win" in case where Rust ++/// actually does drive the linking. This hack works (not only for Chromium, ++/// but also for google3 and other projects), but isn't officially supported by ++/// `rustc`. ++/// ++/// TODO(https://crbug.com/410596442): Stop using internal features here. ++mod both_allocators { ++ /// As part of rustc's contract for using `#[global_allocator]` without ++ /// rustc-generated shims we must define this symbol, since we are opting in ++ /// to unstable functionality. See https://github.com/rust-lang/rust/issues/123015 ++ #[no_mangle] ++ #[linkage = "weak"] ++ static __rust_no_alloc_shim_is_unstable: u8 = 0; ++ ++ // Mangle the symbol name as rustc expects. ++ #[rustc_std_internal_symbol] ++ #[allow(non_upper_case_globals)] ++ #[linkage = "weak"] ++ static __rust_alloc_error_handler_should_panic: u8 = 0; ++ ++ // Mangle the symbol name as rustc expects. ++ #[rustc_std_internal_symbol] ++ #[allow(non_upper_case_globals)] ++ #[linkage = "weak"] ++ fn __rust_alloc_error_handler(_size: usize, _align: usize) { ++ // TODO(lukasza): Investigate if we can just call `std::process::abort()` here. ++ // (Not really _needed_, but it could simplify code a little bit.) ++ unsafe { ffi::alloc_error_handler_impl() } ++ } ++ ++ #[cxx::bridge(namespace = "rust_allocator_internal")] ++ mod ffi { ++ extern "C++" { ++ include!("build/rust/allocator/alloc_error_handler_impl.h"); ++ unsafe fn alloc_error_handler_impl(); ++ } ++ } ++} diff --git a/www/ungoogled-chromium/files/patch-build_rust_cargo__crate.gni b/www/ungoogled-chromium/files/patch-build_rust_cargo__crate.gni new file mode 100644 index 000000000000..a1590f727aa3 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_cargo__crate.gni @@ -0,0 +1,25 @@ +--- build/rust/cargo_crate.gni.orig 2025-05-20 09:16:26 UTC ++++ build/rust/cargo_crate.gni +@@ -259,6 +259,12 @@ template("cargo_crate") { + # Don't import the `chromium` crate into third-party code. + no_chromium_prelude = true + ++ # Don't depend on the chrome-specific #[global_allocator] crate from ++ # third-party code. This avoids some dependency cycle issues. The allocator ++ # crate will still be used if it exists anywhere in the dependency graph for ++ # a given linked artifact. ++ no_allocator_crate = true ++ + rustc_metadata = _rustc_metadata + + # TODO(crbug.com/40259764): don't default to true. This requires changes to +@@ -482,6 +488,9 @@ template("cargo_crate") { + + # Don't import the `chromium` crate into third-party code. + no_chromium_prelude = true ++ ++ # Build scripts do not need to link to chrome's allocator. ++ no_allocator_crate = true + + # The ${_build_script_name}_output target looks for the exe in this + # location. Due to how the Windows component build works, this has to diff --git a/www/ungoogled-chromium/files/patch-build_rust_rust__macro.gni b/www/ungoogled-chromium/files/patch-build_rust_rust__macro.gni new file mode 100644 index 000000000000..0dafc3819aa1 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_rust__macro.gni @@ -0,0 +1,12 @@ +--- build/rust/rust_macro.gni.orig 2025-05-20 09:16:26 UTC ++++ build/rust/rust_macro.gni +@@ -16,6 +16,9 @@ template("rust_macro") { + forward_variables_from(invoker, TESTONLY_AND_VISIBILITY) + proc_macro_configs = invoker.configs + target_type = "rust_proc_macro" ++ ++ # Macros are loaded by rustc and shouldn't use chrome's allocation routines. ++ no_allocator_crate = true + } + } + diff --git a/www/ungoogled-chromium/files/patch-build_rust_rust__target.gni b/www/ungoogled-chromium/files/patch-build_rust_rust__target.gni new file mode 100644 index 000000000000..f4ad6f04fc45 --- /dev/null +++ b/www/ungoogled-chromium/files/patch-build_rust_rust__target.gni @@ -0,0 +1,13 @@ +--- build/rust/rust_target.gni.orig 2025-05-20 09:16:26 UTC ++++ build/rust/rust_target.gni +@@ -339,6 +339,10 @@ template("rust_target") { + _rust_deps += [ "//build/rust/std" ] + } + ++ if (!defined(invoker.no_allocator_crate) || !invoker.no_allocator_crate) { ++ _rust_deps += [ "//build/rust/allocator" ] ++ } ++ + if (_build_unit_tests) { + _unit_test_target = "${_target_name}_unittests" + if (defined(invoker.unit_test_target)) { diff --git a/www/ungoogled-chromium/files/patch-build_rust_std_BUILD.gn b/www/ungoogled-chromium/files/patch-build_rust_std_BUILD.gn index 0a5335d58d48..c6c2801bd47d 100644 --- a/www/ungoogled-chromium/files/patch-build_rust_std_BUILD.gn +++ b/www/ungoogled-chromium/files/patch-build_rust_std_BUILD.gn @@ -1,6 +1,58 @@ ---- build/rust/std/BUILD.gn.orig 2025-04-05 13:54:50 UTC +--- build/rust/std/BUILD.gn.orig 2025-05-20 09:16:26 UTC +++ build/rust/std/BUILD.gn -@@ -89,13 +89,20 @@ if (toolchain_has_rust) { +@@ -15,51 +15,12 @@ + # allocator functions to PartitionAlloc when `use_partition_alloc_as_malloc` is + # true, so that Rust and C++ use the same allocator backend. + +-import("//build/buildflag_header.gni") + import("//build/config/compiler/compiler.gni") + import("//build/config/coverage/coverage.gni") + import("//build/config/rust.gni") + import("//build/config/sanitizers/sanitizers.gni") + +-rust_allocator_uses_partition_alloc = false +-if (build_with_chromium) { +- import("//base/allocator/partition_allocator/partition_alloc.gni") +- rust_allocator_uses_partition_alloc = use_partition_alloc_as_malloc +-} +- +-buildflag_header("buildflags") { +- header = "buildflags.h" +- flags = [ +- "RUST_ALLOCATOR_USES_PARTITION_ALLOC=$rust_allocator_uses_partition_alloc", +- ] +- visibility = [ ":*" ] +-} +- + if (toolchain_has_rust) { +- # If clang performs the link step, we need to provide the allocator symbols +- # that are normally injected by rustc during linking. +- # +- # We also "happen to" use this to redirect allocations to PartitionAlloc, +- # though that would be better done through a #[global_allocator] crate (see +- # above). +- source_set("remap_alloc") { +- public_deps = [] +- if (rust_allocator_uses_partition_alloc) { +- public_deps += [ "//base/allocator/partition_allocator:partition_alloc" ] +- } +- deps = [ ":buildflags" ] +- sources = [ +- # `alias.*`, `compiler_specific.h`, and `immediate_crash.*` have been +- # copied from `//base`. +- # TODO(crbug.com/40279749): Avoid duplication / reuse code. +- "alias.cc", +- "alias.h", +- "compiler_specific.h", +- "immediate_crash.h", +- "remap_alloc.cc", +- ] +- } +- + # List of Rust stdlib rlibs which are present in the official Rust toolchain + # we are using from the Android team. This is usually a version or two behind + # nightly. Generally this matches the toolchain we build ourselves, but if +@@ -89,13 +50,20 @@ if (toolchain_has_rust) { # These are no longer present in the Windows toolchain. stdlib_files += [ "addr2line", @@ -22,7 +74,7 @@ } if (toolchain_for_rust_host_build_tools) { -@@ -115,7 +122,6 @@ if (toolchain_has_rust) { +@@ -115,7 +83,6 @@ if (toolchain_has_rust) { # don't need to pass to the C++ linker because they're used for specialized # purposes. skip_stdlib_files = [ @@ -30,3 +82,25 @@ "rustc_std_workspace_alloc", "rustc_std_workspace_core", "rustc_std_workspace_std", +@@ -269,8 +236,6 @@ if (toolchain_has_rust) { + foreach(libname, stdlib_files + skip_stdlib_files) { + deps += [ "rules:$libname" ] + } +- +- public_deps = [ ":remap_alloc" ] + } + } else { + action("find_stdlib") { +@@ -396,12 +361,6 @@ if (toolchain_has_rust) { + ":stdlib_public_dependent_libs", + ] + deps = [ ":prebuilt_rustc_copy_to_sysroot" ] +- +- # The host builds tools toolchain supports Rust only and does not use +- # the allocator remapping to point it to PartitionAlloc. +- if (!toolchain_for_rust_host_build_tools) { +- deps += [ ":remap_alloc" ] +- } + } + } + } diff --git a/x11/arcan-trayicon/Makefile b/x11/arcan-trayicon/Makefile index e45b709f465a..dde5291d640a 100644 --- a/x11/arcan-trayicon/Makefile +++ b/x11/arcan-trayicon/Makefile @@ -1,8 +1,8 @@ PORTNAME= arcan-trayicon -DISTVERSION= 0.6.3.3 +DISTVERSION= 0.7.0.1 CATEGORIES= x11 -MAINTAINER= ports@FreeBSD.org +MAINTAINER= hoanga@gmail.com COMMENT= Generic wrapper for registering Arcan clients as tray icons WWW= https://arcan-fe.com/ diff --git a/x11/arcan-trayicon/distinfo b/x11/arcan-trayicon/distinfo index 305276508059..a866c228580c 100644 --- a/x11/arcan-trayicon/distinfo +++ b/x11/arcan-trayicon/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1722779595 -SHA256 (letoram-arcan-0.6.3.3_GH0.tar.gz) = 38c2d02802389b15e5c24b6b8cf53f946cb3e5f15a1d7af95ad04ffcc9101914 -SIZE (letoram-arcan-0.6.3.3_GH0.tar.gz) = 12949697 +TIMESTAMP = 1747584654 +SHA256 (letoram-arcan-0.7.0.1_GH0.tar.gz) = 63d925d100389e7a1074a8746a080a01d94739df487c2f8e311eb49adc006c6e +SIZE (letoram-arcan-0.7.0.1_GH0.tar.gz) = 12978670 diff --git a/x11/xfce4-clipman-plugin/Makefile b/x11/xfce4-clipman-plugin/Makefile index db856729d340..01745547aa2a 100644 --- a/x11/xfce4-clipman-plugin/Makefile +++ b/x11/xfce4-clipman-plugin/Makefile @@ -1,5 +1,5 @@ PORTNAME= xfce4-clipman-plugin -PORTVERSION= 1.6.7 +PORTVERSION= 1.7.0 CATEGORIES= x11 xfce MASTER_SITES= XFCE/panel-plugins DIST_SUBDIR= xfce4 @@ -10,16 +10,14 @@ WWW= https://docs.xfce.org/panel-plugins/xfce4-clipman-plugin/start LICENSE= GPLv2 -LIB_DEPENDS= libharfbuzz.so:print/harfbuzz - -USES= compiler:c11 gettext-tools gmake gnome libtool pkgconfig \ - tar:bzip2 xfce xorg -USE_GNOME= cairo gdkpixbuf glib20 gtk30 +USES= compiler:c11 gettext-tools gnome meson pkgconfig tar:xz xfce \ + xorg +USE_GNOME= glib20 gtk30 USE_XFCE= libmenu panel xfconf USE_XORG= ice sm x11 xorgproto xtst -GNU_CONFIGURE= yes -INSTALL_TARGET= install-strip +MESON_ARGS= -Dx11=enabled \ + -Dxtst=enabled OPTIONS_DEFINE= NLS QRCODE WAYLAND OPTIONS_DEFAULT=WAYLAND @@ -27,14 +25,16 @@ OPTIONS_SUB= yes QRCODE_DESC= QR Code support -NLS_USES= gettext-runtime -NLS_CONFIGURE_ENABLE= nls +NLS_USES= gettext-runtime QRCODE_LIB_DEPENDS= libqrencode.so:graphics/libqrencode -QRCODE_CONFIGURE_ENABLE=libqrencode +QRCODE_MESON_ENABLED= qrencode WAYLAND_CATEGORIES= wayland WAYLAND_LIB_DEPENDS= libwayland-client.so:graphics/wayland -WAYLAND_CONFIGURE_ENABLE=wayland +WAYLAND_MESON_ENABLED= wayland + +post-patch-NLS-off: + @${REINPLACE_CMD} -e "/^subdir('po')/d" ${WRKSRC}/meson.build .include <bsd.port.mk> diff --git a/x11/xfce4-clipman-plugin/distinfo b/x11/xfce4-clipman-plugin/distinfo index d399c9181ffd..b379751c6d5d 100644 --- a/x11/xfce4-clipman-plugin/distinfo +++ b/x11/xfce4-clipman-plugin/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1735048481 -SHA256 (xfce4/xfce4-clipman-plugin-1.6.7.tar.bz2) = 9bae27808a50e959e0912b7202ea5d651ed7401a6fc227f811d9bdaf2e44178c -SIZE (xfce4/xfce4-clipman-plugin-1.6.7.tar.bz2) = 637572 +TIMESTAMP = 1747673074 +SHA256 (xfce4/xfce4-clipman-plugin-1.7.0.tar.xz) = 903302c3070a951d44ee17a84fa3cf21d36c6787678af8fbfc79e469fd00cb46 +SIZE (xfce4/xfce4-clipman-plugin-1.7.0.tar.xz) = 184276 |