Compare commits

..

No commits in common. "rawhide" and "f37" have entirely different histories.

12 changed files with 332 additions and 1 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
/watchman-2021.05.10.00.tar.gz

3
README.md Normal file
View file

@ -0,0 +1,3 @@
# watchman
The watchman package

78
changelog Normal file
View file

@ -0,0 +1,78 @@
* Tue Dec 28 2021 Michel Alexandre Salim <salimma@fedoraproject.org> - 2021.05.10.00-7
- Rebuilt with Folly 2021.12.20.00
- Opt in to rpmautospec
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 2021.05.10.00-6
- Rebuilt with OpenSSL 3.0.0
* Mon Sep 13 2021 Mamoru TASAKA <mtasaka@fedoraproject.org> - 2021.05.10.00-5
- Patch for folly API deprecation change
- Patch for build issue on 32bit arch
- Disable tests with gtest 1.11 for now
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2021.05.10.00-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Mon Jul 05 2021 Richard Shaw <hobbes1069@gmail.com> - 2021.05.10.00-3
- Rebuild for new fmt version.
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 2021.05.10.00-2
- Rebuilt for Python 3.10
* Mon May 10 2021 Michel Alexandre Salim <michel@michel-slm.name> - 2021.05.10.00-1
- Update to 2021.05.10.00
* Mon Apr 26 2021 Michel Alexandre Salim <michel@michel-slm.name> - 2021.04.26.00-1
- Update to 2021.04.26.00
* Fri Apr 16 2021 Michel Alexandre Salim <salimma@fedoraproject.org> - 2021.04.12.00-1
- Update to 2021.04.12.00
* Tue Mar 30 2021 Jonathan Wakely <jwakely@redhat.com> - 2021.03.29.00-2
- Rebuilt for removed libstdc++ symbol (#1937698)
* Mon Mar 29 2021 Michel Alexandre Salim <michel@michel-slm.name> - 2021.03.29.00-1
- Update to 2021.03.29.00
* Wed Mar 24 2021 Michel Alexandre Salim <michel@michel-slm.name> - 2021.03.22.00-1
- Update to 2021.03.22.00
* Mon Mar 15 2021 Michel Alexandre Salim <salimma@fedoraproject.org> - 2021.03.15.00-1
- Update to 2021.03.15.00
* Wed Feb 03 2021 Michel Alexandre Salim <salimma@fedoraproject.org> - 2021.02.01.00-1
- Update to 2021.02.01.00
* Tue Jan 26 17:51:20 PST 2021 Michel Alexandre Salim <salimma@fedoraproject.org> - 2021.01.25.00-1
- Update to 2021.01.25.00
* Tue Dec 29 12:16:46 PST 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 2020.12.28.00-1
- Update to 2020.12.28.00
* Tue Dec 22 20:48:10 PST 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 2020.12.21.00-1
- Update to 2020.12.21.00
* Tue Dec 1 12:26:55 PST 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 2020.09.21.00-7
- Recreate state directory with tmpfiles (bz #1903141)
* Mon Nov 30 16:23:46 PST 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 2020.09.21.00-6
- Rebuild for folly-2020.11.30.00
* Mon Nov 23 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 2020.09.21.00-5
- Rebuild for folly-2020.11.23.00
* Mon Nov 16 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 2020.09.21.00-4
- Rebuild for folly-2020.11.16.00
* Thu Nov 12 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 2020.09.21.00-3
- Also install Watchman's state directory
* Wed Nov 11 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 2020.09.21.00-2
- Support enabling tests
- Add ExcludeArch on s390x for Folly dependency
- Rename Python subpackage
- Fix version number and licensing for Python subpackage
- Move Python scripts to the Python subpackage
* Tue Nov 10 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 2020.09.21.00-1
- Initial package

View file

@ -1 +0,0 @@
FTBFS; need to be repackaged after the Rust rewrite anyway

1
sources Normal file
View file

@ -0,0 +1 @@
SHA512 (watchman-2021.05.10.00.tar.gz) = 4ed14bf520afefc04a1bb742eb0a6cdee921aa2a8ab9f2a0fee18d5a7e1f48224fc9372a313dc5bf57883759a12710d2459232ed35e6c5e89e4ef0c5cfd02c23

1
tmpfiles-watchman.conf Normal file
View file

@ -0,0 +1 @@
d /run/watchman 02777 root root

View file

@ -0,0 +1,36 @@
--- watchman-2021.05.10.00/PendingCollection.cpp.folly 2021-05-09 08:48:24.000000000 +0900
+++ watchman-2021.05.10.00/PendingCollection.cpp 2021-09-09 15:58:07.886372886 +0900
@@ -301,9 +301,9 @@ PendingCollection::LockedPtr PendingColl
}
if (timeoutms.count() == -1) {
- cond_.wait(lock.getUniqueLock());
+ cond_.wait(lock.as_lock());
} else {
- cond_.wait_for(lock.getUniqueLock(), timeoutms);
+ cond_.wait_for(lock.as_lock(), timeoutms);
}
pinged = lock->checkAndResetPinged();
--- watchman-2021.05.10.00/perf.cpp.folly 2021-05-09 08:48:24.000000000 +0900
+++ watchman-2021.05.10.00/perf.cpp 2021-09-09 15:59:22.202231238 +0900
@@ -221,7 +221,7 @@ void PerfLogThread::loop() noexcept {
// No samples remaining, and we have been asked to quit.
return;
}
- cond_.wait(state.getUniqueLock());
+ cond_.wait(state.as_lock());
}
samples = nullptr;
--- watchman-2021.05.10.00/state.cpp.folly 2021-05-09 08:48:24.000000000 +0900
+++ watchman-2021.05.10.00/state.cpp 2021-09-09 15:59:59.626159910 +0900
@@ -42,7 +42,7 @@ static void state_saver() noexcept {
{
auto state = saveState.lock();
if (!state->needsSave) {
- stateCond.wait(state.getUniqueLock());
+ stateCond.wait(state.as_lock());
}
do_save = state->needsSave;
state->needsSave = false;

View file

@ -0,0 +1,14 @@
--- watchman-2021.05.10.00/InMemoryView.h.wordsize 2021-05-09 08:48:24.000000000 +0900
+++ watchman-2021.05.10.00/InMemoryView.h 2021-09-09 19:55:39.910101746 +0900
@@ -362,7 +362,11 @@ class InMemoryView : public QueryableVie
time_t mtime;
};
+#if __WORDSIZE == 32
+ static_assert(80 == sizeof(PendingChangeLogEntry));
+#else
static_assert(88 == sizeof(PendingChangeLogEntry));
+#endif
// If set, paths processed by processPending are logged here.
std::unique_ptr<folly::LockFreeRingBuffer<PendingChangeLogEntry>>

45
watchman-destdir.patch Normal file
View file

@ -0,0 +1,45 @@
From 433938a3a6f03b144151895e23c98906af1d4d7a Mon Sep 17 00:00:00 2001
From: Michel Alexandre Salim <michel@michel-slm.name>
Date: Tue, 26 Jan 2021 22:32:56 -0800
Subject: [PATCH] watchman: use DESTDIR consistently
Delay `DESTDIR` evaluation in invocation of `python setup.py` so it uses
the value passed when installing, not when configuring.
Also use don't prepend `CMAKE_INSTALL_PREFIX` for `WATCHMAN_STATE_DIR`.
It will pick up `DESTDIR` automatically
Note: when building on Fedora, `DESTDIR` is set to the build root and
`PREFIX` set to `/usr`, so adding the `PREFIX` would result in Python files
being seen in `%{buildroot}/usr/usr`
Signed-off-by: Michel Alexandre Salim <michel@michel-slm.name>
---
CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3dbcd68a..2c197bcd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -136,7 +136,7 @@ endfunction()
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/config.h.new" "#pragma once\n")
if(NOT WIN32)
- set(WATCHMAN_STATE_DIR "${CMAKE_INSTALL_PREFIX}/var/run/watchman" CACHE STRING
+ set(WATCHMAN_STATE_DIR "/var/run/watchman" CACHE STRING
"Run-time path of the persistent state directory")
set(INSTALL_WATCHMAN_STATE_DIR OFF CACHE BOOL
"Whether WATCHMAN_STATE_DIR should be created by the cmake install
@@ -418,7 +418,7 @@ else()
${CMAKE_COMMAND} -E env
CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}
${PYTHON3} ${SETUP_PY} install
- --root $ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}
+ --root \$ENV{DESTDIR}
RESULT_VARIABLE STATUS)
if (NOT STATUS STREQUAL 0)
message(FATAL_ERROR \"pywatchman install failed\")
--
2.29.2

View file

@ -0,0 +1,22 @@
--- a/json.cpp
+++ b/json.cpp
@@ -443,7 +443,7 @@ bool watchman_json_buffer::streamPdu(w_s
return streamN(stm, len, jerr);
}
default:
- logf(FATAL, "not streaming for pdu type {}\n", pdu_type);
+ logf(FATAL, "not streaming for pdu type {}\n", static_cast<int>(pdu_type));
return false;
}
}
--- a/bser.cpp
+++ b/bser.cpp
@@ -388,7 +388,7 @@ int w_bser_dump(const bser_ctx_t* ctx, c
case W_STRING_MIXED:
return bser_mixedstring(ctx, wstr, data);
default:
- w_assert(false, "unknown string type 0x%02x", wstr.type());
+ w_assert(false, "unknown string type 0x%02x", static_cast<int>(wstr.type()));
return -1;
}
}

View file

@ -0,0 +1,23 @@
--- a/build/fbcode_builder/CMake/fb_py_test_main.py
+++ b/build/fbcode_builder/CMake/fb_py_test_main.py
@@ -24,11 +24,6 @@ import traceback
import unittest
import warnings
-# Hide warning about importing "imp"; remove once python2 is gone.
-with warnings.catch_warnings():
- warnings.filterwarnings("ignore", category=DeprecationWarning)
- import imp
-
try:
from StringIO import StringIO
except ImportError:
@@ -195,7 +190,7 @@ class CallbackStream(object):
return self._fileno
-class BuckTestResult(unittest._TextTestResult):
+class BuckTestResult(unittest.TextTestResult):
"""
Our own TestResult class that outputs data in a format that can be easily
parsed by buck's test runner.

108
watchman.spec Normal file
View file

@ -0,0 +1,108 @@
# some Python tests are failing
# The following tests FAILED:
# 40 - CacheTest.future (Child aborted)
# 290 - test_py::tests.integration.test_site_spawn.TestSiteSpawn.test_failingSpawner (Failed)
# 292 - test_py::tests.integration.test_site_spawn.TestSiteSpawn.test_spawner (Failed)
# Errors while running CTest
%bcond_with tests
Name: watchman
Version: 2021.05.10.00
Release: %autorelease
Summary: File alteration monitoring service
%global stripped_version %(echo %{version} | sed -r 's/\\.0([[:digit:]])/.\\1/g')
License: Apache-2.0
URL: https://facebook.github.io/%{name}/
Source0: https://github.com/facebook/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: tmpfiles-%{name}.conf
Patch0: %{name}-destdir.patch
# https://github.com/facebook/folly/commit/b65ef9f8b5f9b495370b1e651732214cde8abc7d
Patch1: watchman-2021.05.10.00-folly-new.patch
# Fix build failure on 32bit arch
Patch2: watchman-2021.05.10.00-wordsize.patch
# Fix build failure with Python 3.12
Patch3: watchman-fix-for-py3_12.diff
# Fix build failure with fmt 10
Patch4: watchman-fix-for-fmt10.diff
ExclusiveArch: x86_64 aarch64 ppc64le
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: folly-devel
BuildRequires: pcre-devel
# for %%{_tmpfilesdir}
BuildRequires: systemd-rpm-macros
# Optional dependencies
BuildRequires: valgrind-devel
# Test dependencies
# TODO this shouldn't be needed if tests are not enabled
BuildRequires: gmock-devel
BuildRequires: gtest-devel
%description
Watchman exists to watch files and record when they actually change. It can also
trigger actions (such as rebuilding assets) when matching files change.
%package -n python3-py%{name}
Summary: Python bindings for %{name}
License: BSD-3-Clause and MIT
BuildRequires: procps-ng
BuildRequires: python3-devel
BuildRequires: python3-setuptools
Requires: %{name}%{?_isa} = %{version}-%{release}
# watchman-diag shells out to ps
Requires: procps-ng
%description -n python3-py%{name}
The python3-py%{name} package contains Python bindings for %{name}.
%prep
%autosetup -p1
# Fix pywatchman version.
sed -i "s|version=\"1.4.1\"|version=\"%{version}\"|" python/setup.py
# testsuite does not seem to compile with gtest 1.11....
# disabling for now on rawhide
%if 0%{?fedora} >= 36
sed -i CMakeLists.txt -e 's|^t_test|#t_test|'
%endif
%build
%cmake \
-DINSTALL_WATCHMAN_STATE_DIR=ON
%cmake_build
%install
%cmake_install
mkdir -p %{buildroot}%{_tmpfilesdir}
cp -p %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf
%if %{with tests}
%check
%ctest
%endif
%files
%license LICENSE
%doc CODE_OF_CONDUCT.md README.markdown
%attr(02777,root,root) %dir %{_var}/run/%{name}
%{_bindir}/%{name}
%{_tmpfilesdir}/%{name}.conf
%files -n python3-py%{name}
%license python/LICENSE
%{_bindir}/%{name}-*
%{python3_sitearch}/py%{name}
%{python3_sitearch}/py%{name}-%{stripped_version}-py%{python3_version}.egg-info
%changelog
%autochangelog