The package rpms/folly.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/folly.git/commit/?id=5c246e648980e8e....
Change: +%ifarch aarch64
Thanks.
Full change: ============
commit f0ec5d97219c652332057497b3c6583c9c3124f2 Author: Michel Alexandre Salim salimma@fedoraproject.org Date: Tue Apr 25 11:13:00 2023 -0500
Fix obsolete declaration for Python subpackage
Signed-off-by: Michel Alexandre Salim salimma@fedoraproject.org
diff --git a/folly.spec b/folly.spec index c15d372..72c218f 100644 --- a/folly.spec +++ b/folly.spec @@ -152,7 +152,7 @@ Requires: snappy-devel%{?_isa} Requires: xz-devel%{?_isa} Requires: zlib-devel%{?_isa} %if %{without python} -Obsoletes: %{name}-python < 2023.04.24.00-1 +Obsoletes: python3-%{name} < 2023.04.24.00-1 %endif Obsoletes: %{name}-static < 2022.02.28.00-1
commit 50e06aa8a0fab04e2b4604a4bdbc2eefcaa7baad Author: Michel Alexandre Salim salimma@fedoraproject.org Date: Mon Apr 24 20:53:34 2023 -0500
Disable flaky FBString test on x86_64 too
Signed-off-by: Michel Alexandre Salim salimma@fedoraproject.org
diff --git a/folly.spec b/folly.spec index f18c5da..c15d372 100644 --- a/folly.spec +++ b/folly.spec @@ -259,6 +259,8 @@ EXCLUDED_TESTS= # flaky tests # from https://koji.fedoraproject.org/koji/taskinfo?taskID=89703014 EXCLUDED_TESTS='-E glog_test.LogEveryMs.basic' +# from https://koji.fedoraproject.org/koji/taskinfo?taskID=100358727 +EXCLUDED_TESTS+='|fbstring_test.FBString.testAllClauses' %endif
%ifarch aarch64
commit 5c246e648980e8e4a41d0d339eb1b0f1899684d8 Author: Michel Alexandre Salim salimma@fedoraproject.org Date: Mon Apr 24 16:55:01 2023 -0500
Update to 2023.04.24.00
Signed-off-by: Michel Alexandre Salim salimma@fedoraproject.org
diff --git a/folly-fix_async_udp_socket_integration_test.patch b/folly-fix_async_udp_socket_integration_test.patch deleted file mode 100644 index 31aff4e..0000000 --- a/folly-fix_async_udp_socket_integration_test.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff '--color=auto' -ruN folly-2022.02.28.00/folly/io/async/test/AsyncUDPSocketTest.cpp folly-2022.02.28.00-fix_async_udp_socket_integration_test/folly/io/async/test/AsyncUDPSocketTest.cpp ---- folly-2022.02.28.00/folly/io/async/test/AsyncUDPSocketTest.cpp 2022-02-26 12:09:52.000000000 -0800 -+++ folly-2022.02.28.00-fix_async_udp_socket_integration_test/folly/io/async/test/AsyncUDPSocketTest.cpp 2022-03-03 12:25:36.026916878 -0800 -@@ -568,7 +568,7 @@ - auto pingClient = - performPingPongNotifyMmsgTest(server->address(), 10, folly::none); - // This should succeed. -- ASSERT_EQ(pingClient->pongRecvd(), 10); -+ // ASSERT_EQ(pingClient->pongRecvd(), 10); - ASSERT_TRUE(pingClient->notifyInvoked); - } - diff --git a/folly-fix_codel_test.patch b/folly-fix_codel_test.patch deleted file mode 100644 index 90b2790..0000000 --- a/folly-fix_codel_test.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff '--color=auto' -ruN folly-2022.02.28.00/folly/executors/test/CodelTest.cpp folly-2022.02.28.00-fix_codel_test/folly/executors/test/CodelTest.cpp ---- folly-2022.02.28.00/folly/executors/test/CodelTest.cpp 2022-02-26 12:09:52.000000000 -0800 -+++ folly-2022.02.28.00-fix_codel_test/folly/executors/test/CodelTest.cpp 2022-03-03 12:24:39.694605860 -0800 -@@ -41,7 +41,7 @@ - EXPECT_FALSE(c.overloaded(milliseconds(2))); - std::this_thread::sleep_for(milliseconds(90)); - // 20 ms > target interval * 2 -- EXPECT_TRUE(c.overloaded(milliseconds(20))); -+ // EXPECT_TRUE(c.overloaded(milliseconds(20))); - } - - TEST(CodelTest, highLoad) { diff --git a/folly-fix_splitstring_aarch64.diff b/folly-fix_splitstring_aarch64.diff new file mode 100644 index 0000000..6def81c --- /dev/null +++ b/folly-fix_splitstring_aarch64.diff @@ -0,0 +1,11 @@ +--- a/folly/detail/test/SplitStringSimdTest.cpp ++++ b/folly/detail/test/SplitStringSimdTest.cpp +@@ -157,7 +157,7 @@ void runTestStringSplitOneType(folly::St + + #if FOLLY_AARCH64 + actuals.emplace_back(); +- PlatformSimdSplitChar<StringSplitAarch64Platform, ignoreEmpty>{}( ++ PlatformSimdSplitByChar<StringSplitAarch64Platform, ignoreEmpty>{}( + ',', s, actuals.back()); + #endif + diff --git a/folly-gate_pico_spin_lock_64bit_only.patch b/folly-gate_pico_spin_lock_64bit_only.patch deleted file mode 100644 index 3d70e09..0000000 --- a/folly-gate_pico_spin_lock_64bit_only.patch +++ /dev/null @@ -1,118 +0,0 @@ -diff '--color=auto' -ruN folly-2022.03.07.00/folly/synchronization/PicoSpinLock.h folly-2022.03.07.00-gate_pico_spin_lock_64bit_only/folly/synchronization/PicoSpinLock.h ---- folly-2022.03.07.00/folly/synchronization/PicoSpinLock.h 2022-03-05 22:02:58.000000000 -0800 -+++ folly-2022.03.07.00-gate_pico_spin_lock_64bit_only/folly/synchronization/PicoSpinLock.h 2022-03-07 14:09:34.628747021 -0800 -@@ -31,6 +31,16 @@ - */ - - #pragma once -+#if !FOLLY_X64 && !FOLLY_PPC64 && !FOLLY_AARCH64 -+/* -+ * make_atomic_ref requires sizeof and alignof to match, but -+ * on x86: -+ * alignof(unsigned long long): 4 -+ * alignof(std::atomic<unsigned long long>): 8 -+ */ -+#error "PicoSpinLock is x64, ppc64 or aarch64 specific code." -+#endif -+#define FOLLY_PICO_SPIN_LOCK_H_ - - /* - * @author Keith Adams kma@fb.com -diff '--color=auto' -ruN folly-2022.03.07.00/folly/synchronization/SmallLocks.h folly-2022.03.07.00-gate_pico_spin_lock_64bit_only/folly/synchronization/SmallLocks.h ---- folly-2022.03.07.00/folly/synchronization/SmallLocks.h 2022-03-05 22:02:58.000000000 -0800 -+++ folly-2022.03.07.00-gate_pico_spin_lock_64bit_only/folly/synchronization/SmallLocks.h 2022-03-07 14:04:05.648102652 -0800 -@@ -36,4 +36,6 @@ - #include <folly/MicroLock.h> - #include <folly/Portability.h> - #include <folly/synchronization/MicroSpinLock.h> -+#if FOLLY_X64 || FOLLY_AARCH64 || FOLLY_PPC64 - #include <folly/synchronization/PicoSpinLock.h> -+#endif -diff '--color=auto' -ruN folly-2022.03.07.00/folly/synchronization/test/SmallLocksTest.cpp folly-2022.03.07.00-gate_pico_spin_lock_64bit_only/folly/synchronization/test/SmallLocksTest.cpp ---- folly-2022.03.07.00/folly/synchronization/test/SmallLocksTest.cpp 2022-03-05 22:02:58.000000000 -0800 -+++ folly-2022.03.07.00-gate_pico_spin_lock_64bit_only/folly/synchronization/test/SmallLocksTest.cpp 2022-03-07 14:15:06.452286338 -0800 -@@ -40,7 +40,9 @@ - using folly::MicroLock; - using folly::MicroSpinLock; - using folly::MSLGuard; -+#ifdef FOLLY_PICO_SPIN_LOCK_H_ - using folly::PicoSpinLock; -+#endif - - DEFINE_int64( - stress_test_seconds, 2, "Number of seconds for which to run stress tests"); -@@ -66,11 +68,13 @@ - } FOLLY_PACK_ATTR; - static_assert(sizeof(ignore1) == 3, "Size check failed"); - static_assert(sizeof(MicroSpinLock) == 1, "Size check failed"); -+#ifdef FOLLY_PICO_SPIN_LOCK_H_ - struct ignore2 { - PicoSpinLock<uint32_t> psl; - int16_t foo; - } FOLLY_PACK_ATTR; - static_assert(sizeof(ignore2) == 6, "Size check failed"); -+#endif - FOLLY_PACK_POP - - LockedVal v; -@@ -88,6 +92,7 @@ - } - } - -+#ifdef FOLLY_PICO_SPIN_LOCK_H_ - template <class T> - struct PslTest { - PicoSpinLock<T> lock; -@@ -121,6 +126,7 @@ - t.join(); - } - } -+#endif - - struct TestClobber { - TestClobber() { lock_.init(); } -@@ -151,6 +157,7 @@ - } - } - -+#ifdef FOLLY_PICO_SPIN_LOCK_H_ - TEST(SmallLocks, PicoSpinCorrectness) { - doPslTest<int16_t>(); - doPslTest<uint16_t>(); -@@ -202,6 +209,7 @@ - } - } - } -+#endif - - TEST(SmallLocks, RegClobber) { - TestClobber().go(); -@@ -394,6 +402,7 @@ - simpleStressTest<MicroSpinLock>(duration, threads); - } - -+#ifdef FOLLY_PICO_SPIN_LOCK_H_ - TEST(SmallLocks, PicoSpinLockStressTestLockTwoThreads) { - auto duration = std::chrono::seconds{FLAGS_stress_test_seconds}; - simpleStressTest<PicoSpinLockstd::uint16_t>(duration, 2); -@@ -404,6 +413,7 @@ - auto threads = std::thread::hardware_concurrency(); - simpleStressTest<PicoSpinLockstd::uint16_t>(duration, threads); - } -+#endif - - namespace { - template <typename Mutex> -@@ -494,6 +504,7 @@ - } - } - -+#ifdef FOLLY_PICO_SPIN_LOCK_H_ - TEST(SmallLocks, PicoSpinLockStressTestTryLockTwoThreads) { - auto duration = std::chrono::seconds{FLAGS_stress_test_seconds}; - simpleStressTestTryLock<PicoSpinLockstd::uint16_t>(duration, 2); -@@ -504,3 +515,4 @@ - auto threads = std::thread::hardware_concurrency(); - simpleStressTestTryLock<PicoSpinLockstd::uint16_t>(duration, threads); - } -+#endif diff --git a/folly-gcc-pr106230-workaround.patch b/folly-gcc-pr106230-workaround.patch deleted file mode 100644 index 5e8510e..0000000 --- a/folly-gcc-pr106230-workaround.patch +++ /dev/null @@ -1,62 +0,0 @@ ---- folly-2022.07.11.00/folly/synchronization/test/AtomicUtilTest.cpp.workaround 2022-07-10 07:10:55.000000000 +0900 -+++ folly-2022.07.11.00/folly/synchronization/test/AtomicUtilTest.cpp 2022-08-15 17:20:34.469823272 +0900 -@@ -164,7 +164,8 @@ - constexpr auto Size = 8 / (sizeof(Integer) % 16); - static_assert(Size > 0); - -- for (ref_ atomic : std::array<obj_, Size>{}) { -+ auto array1_ = std::array<obj_, Size>{}; -+ for (ref_ atomic : array1_) { - atomic.store(0b0); - EXPECT_EQ(fetch_set(atomic, 0), false); - EXPECT_EQ(fetch_set(atomic, 1), false); -@@ -173,7 +174,8 @@ - EXPECT_EQ(atomic.load(), 0b111); - } - -- for (ref_ atomic : std::array<obj_, Size>{}) { -+ auto array2_ = std::array<obj_, Size>{}; -+ for (ref_ atomic : array2_) { - atomic.store(0b1); - EXPECT_EQ(fetch_set(atomic, 0), true); - EXPECT_EQ(fetch_set(atomic, 0), true); -@@ -211,7 +213,8 @@ - constexpr auto Size = 8 / (sizeof(Integer) % 16); - static_assert(Size > 0); - -- for (ref_ atomic : std::array<obj_, Size>{}) { -+ auto array1_ = std::array<obj_, Size>{}; -+ for (ref_ atomic : array1_) { - EXPECT_EQ(fetch_reset(atomic, 0), false); - EXPECT_EQ(fetch_reset(atomic, 1), false); - atomic.store(0b11); -@@ -220,7 +223,8 @@ - EXPECT_EQ(atomic.load(), 0); - } - -- for (ref_ atomic : std::array<obj_, Size>{}) { -+ auto array2_ = std::array<obj_, Size>{}; -+ for (ref_ atomic : array2_) { - EXPECT_EQ(fetch_reset(atomic, 0), false); - EXPECT_EQ(fetch_reset(atomic, 1), false); - atomic.store(0b11); -@@ -238,7 +242,8 @@ - constexpr auto Size = 8 / (sizeof(Integer) % 16); - static_assert(Size > 0); - -- for (ref_ atomic : std::array<obj_, Size>{}) { -+ auto array1_ = std::array<obj_, Size>{}; -+ for (ref_ atomic : array1_) { - EXPECT_EQ(fetch_flip(atomic, 0), false); - EXPECT_EQ(fetch_flip(atomic, 1), false); - atomic.store(0b11); -@@ -247,7 +252,8 @@ - EXPECT_EQ(atomic.load(), 0); - } - -- for (ref_ atomic : std::array<obj_, Size>{}) { -+ auto array2_ = std::array<obj_, Size>{}; -+ for (ref_ atomic : array2_) { - EXPECT_EQ(fetch_flip(atomic, 0), false); - EXPECT_EQ(fetch_flip(atomic, 1), false); - atomic.store(0b10); diff --git a/folly-skip_eliasfanocoding_test_non_x64.patch b/folly-skip_eliasfanocoding_test_non_x64.patch deleted file mode 100644 index ee3d6dc..0000000 --- a/folly-skip_eliasfanocoding_test_non_x64.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff '--color=auto' -ruN folly-2022.02.28.00/folly/experimental/test/EliasFanoCodingTest.cpp folly-2022.02.28.00-skip_eliasfanocoding_test_non_x64/folly/experimental/test/EliasFanoCodingTest.cpp ---- folly-2022.02.28.00/folly/experimental/test/EliasFanoCodingTest.cpp 2022-02-26 12:09:52.000000000 -0800 -+++ folly-2022.02.28.00-skip_eliasfanocoding_test_non_x64/folly/experimental/test/EliasFanoCodingTest.cpp 2022-03-03 15:13:40.842081789 -0800 -@@ -20,6 +20,8 @@ - #include <random> - #include <vector> - -+#include <folly/Portability.h> -+#if FOLLY_X64 - #include <folly/Benchmark.h> - #include <folly/Random.h> - #include <folly/experimental/EliasFanoCoding.h> -@@ -414,3 +416,4 @@ - - return ret; - } -+#endif diff --git a/folly-typeinfotest-gtest1_12.patch b/folly-typeinfotest-gtest1_12.patch deleted file mode 100644 index 6fd990b..0000000 --- a/folly-typeinfotest-gtest1_12.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff '--color=auto' -ruN folly-2022.07.11.00/folly/lang/test/TypeInfoTest.cpp folly-2022.07.11.00-fix-typeinfotest-printto/folly/lang/test/TypeInfoTest.cpp ---- folly-2022.07.11.00/folly/lang/test/TypeInfoTest.cpp 2022-07-09 17:10:55.000000000 -0500 -+++ folly-2022.07.11.00-fix-typeinfotest-printto/folly/lang/test/TypeInfoTest.cpp 2022-07-14 16:46:39.131022116 -0500 -@@ -20,11 +20,9 @@ - - class TypeInfoTest : public testing::Test {}; - --namespace std { --static void PrintTo(type_info const& ti, std::ostream* out) { -+static void PrintTo(std::type_info const& ti, std::ostream* out) { - *out << ti.name(); - } --} // namespace std - - namespace { - struct Foo {}; diff --git a/folly-workaround-gcc-strlen-not-constant_expr.patch b/folly-workaround-gcc-strlen-not-constant_expr.patch deleted file mode 100644 index 1c0773b..0000000 --- a/folly-workaround-gcc-strlen-not-constant_expr.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- folly-2022.03.14.00/folly/portability/Constexpr.h.gcc 2022-03-13 13:18:37.000000000 +0900 -+++ folly-2022.03.14.00/folly/portability/Constexpr.h 2022-07-16 14:07:53.162390109 +0900 -@@ -98,7 +98,11 @@ - - template <typename Char> - constexpr std::size_t constexpr_strlen(const Char* s) noexcept { -+#if __GNUC_PREREQ(11, 0) -+ return detail::constexpr_strlen_internal(s, 0u); -+#else - return detail::constexpr_strlen_internal(s, 0); -+#endif - } - - template <typename Char> diff --git a/folly.spec b/folly.spec index 723ad73..f18c5da 100644 --- a/folly.spec +++ b/folly.spec @@ -15,6 +15,24 @@ # use this to re-test running all tests %bcond_with all_tests
+%ifarch aarch64 +# In file included from /builddir/build/BUILD/folly-2023.04.24.00/folly/detail/SplitStringSimd.cpp:18: +# /builddir/build/BUILD/folly-2023.04.24.00/folly/detail/SplitStringSimdImpl.h: In static member function 'static uint64_t folly::detail::StringSplitAarch64Platform::equal(reg_t, char)': +# /builddir/build/BUILD/folly-2023.04.24.00/folly/detail/SplitStringSimdImpl.h:129:25: note: use '-flax-vector-conversions' to permit conversions between vectors with differing element types or numbers of subparts +# 129 | return vget_lane_u64(vmovn_u16(u16s), 0); +# | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~ +# /builddir/build/BUILD/folly-2023.04.24.00/folly/detail/SplitStringSimdImpl.h:129:35: error: cannot convert 'uint8x8_t' to 'uint64x1_t' +# 129 | return vget_lane_u64(vmovn_u16(u16s), 0); +# | ~~~~~~~~~^~~~~~ +# | | +# | uint8x8_t +# In file included from /builddir/build/BUILD/folly-2023.04.24.00/folly/detail/SplitStringSimdImpl.h:29: +# /usr/lib/gcc/aarch64-redhat-linux/13/include/arm_neon.h:2725:27: note: initializing argument 1 of 'uint64_t vget_lane_u64(uint64x1_t, int)' +# 2725 | vget_lane_u64 (uint64x1_t __a, const int __b) +# | ~~~~~~~~~~~^~~ +%global optflags %optflags -flax-vector-conversions +%endif + %if 0%{?el9} # pandoc is not in CS9 # https://bugzilla.redhat.com/show_bug.cgi?id=2035151 @@ -23,32 +41,28 @@ %bcond_without docs %endif
-%bcond_without python +# Python bindings not buildable with CMake +# folly/iobuf.cpp:20:10: fatal error: folly/python/iobuf_api.h: No such file or directory +%bcond_with python + +%global liburing_min_version 2.1 +%if 0%{?fedora} || 0%{?rhel} >= 10 +%bcond_without uring +%else +# liburing too old: IORING_CQE_F_MORE added in +# 674d092f634e61ab1ec72c190a29bc9bde0f5076 included in 2.1+ +%bcond_with uring +%endif
Name: folly -Version: 2022.07.11.00 +Version: 2023.04.24.00 Release: %{autorelease} Summary: An open-source C++ library developed and used at Facebook
License: ASL 2.0 URL: https://github.com/facebook/folly Source: %{url}/archive/v%{version}/folly-%{version}.tar.gz -Patch: %{name}-fix_codel_test.patch -Patch: %{name}-fix_async_udp_socket_integration_test.patch -Patch: %{name}-skip_eliasfanocoding_test_non_x64.patch -Patch: %{name}-gate_pico_spin_lock_64bit_only.patch -# gcc considers __builtin_strlen not constant expression, don't use it -Patch: %{name}-workaround-gcc-strlen-not-constant_expr.patch -# TypeInfoTest with gtest 1.12 -Patch: %{name}-typeinfotest-gtest1_12.patch -# Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106230 -# Fixed in gcc-12.1.1-4 (not in -3) -# /builddir/build/BUILD/folly-2022.07.11.00/folly/synchronization/test/AtomicUtilTest.cpp:241:3: internal compiler error: in pop_local_binding, at cp/name-lookup.cc:2474 -# 241 | for (ref_ atomic : std::array<obj_, Size>{}) { -# | ^~~ -%if 0%{?fedora} <= 37 -Patch: %{name}-gcc-pr106230-workaround.patch -%endif +Patch: folly-fix_splitstring_aarch64.diff
ExclusiveArch: x86_64 aarch64 ppc64le
@@ -81,8 +95,10 @@ BuildRequires: libdwarf-devel BuildRequires: libevent-devel BuildRequires: libsodium-devel BuildRequires: libunwind-devel +%if %{with uring} # 0.7-3 fixes build on armv7hl -BuildRequires: liburing-devel >= 0.7-3 +BuildRequires: liburing-devel >= %{liburing_min_version} +%endif BuildRequires: libzstd-devel BuildRequires: lz4-devel BuildRequires: openssl-devel @@ -126,13 +142,18 @@ Requires: libdwarf-devel%{?_isa} Requires: libevent-devel%{?_isa} Requires: libsodium-devel%{?_isa} Requires: libunwind-devel%{?_isa} -Requires: liburing-devel%{?_isa} >= 0.7-3 +%if %{with uring} +Requires: liburing-devel%{?_isa} >= %{liburing_min_version} +%endif Requires: libzstd-devel%{?_isa} Requires: lz4-devel%{?_isa} Requires: openssl-devel%{?_isa} Requires: snappy-devel%{?_isa} Requires: xz-devel%{?_isa} Requires: zlib-devel%{?_isa} +%if %{without python} +Obsoletes: %{name}-python < 2023.04.24.00-1 +%endif Obsoletes: %{name}-static < 2022.02.28.00-1
%description devel %{_description} @@ -243,6 +264,7 @@ EXCLUDED_TESTS='-E glog_test.LogEveryMs.basic' %ifarch aarch64 # from https://copr.fedorainfracloud.org/coprs/salimma/folly-testing/build/4642135/ EXCLUDED_TESTS='-E cache_locality_test.Getcpu.VdsoGetcpu' +EXCLUDED_TESTS+='|AsyncUDPSocketTest.AsyncSocketIntegrationTest.PingPongNotifyMmsg' EXCLUDED_TESTS+='|HHWheelTimerTest.HHWheelTimerTest.FireOnce' EXCLUDED_TESTS+='|HHWheelTimerTest.HHWheelTimerTest.CancelTimeout' EXCLUDED_TESTS+='|HHWheelTimerTest.HHWheelTimerTest.DestroyTimeoutSet' diff --git a/sources b/sources index f006d42..1afe4df 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (folly-2022.07.11.00.tar.gz) = b6f8ac8ad482bdb7102fe76b20e0482941e0abb3789eba8277e8460365cb39d640e4b5336a7c96e26ea4db8b7ba2d7239b4d3b230e7688c130492087abc2268f +SHA512 (folly-2023.04.24.00.tar.gz) = 88eacb8349e43c7b49bb5821c31868756f3711860db5465265edf24257aa5c53cd2a04a2767fd21a069cf73cbd35a2abd59aadefd306ba5c7d24e3a327d50fd6
commit daefe5b7f647f09cbfa4729f00a4a75248c6614d Author: Fedora Release Engineering releng@fedoraproject.org Date: Thu Jan 19 03:42:02 2023 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering releng@fedoraproject.org
arch-excludes@lists.fedoraproject.org