summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-util/watchman/watchman-2023.06.19.00-r1.ebuild')
-rw-r--r--dev-util/watchman/watchman-2023.06.19.00-r1.ebuild250
1 files changed, 250 insertions, 0 deletions
diff --git a/dev-util/watchman/watchman-2023.06.19.00-r1.ebuild b/dev-util/watchman/watchman-2023.06.19.00-r1.ebuild
new file mode 100644
index 000000000000..21cf39c9d5d0
--- /dev/null
+++ b/dev-util/watchman/watchman-2023.06.19.00-r1.ebuild
@@ -0,0 +1,250 @@
+# Copyright 2020-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# These must be bumped together:
+# dev-cpp/edencommon
+# dev-cpp/folly
+# dev-util/watchman
+
+# TODO: Split into different variables then combine for each component?
+# Not all is in rust/ dir.
+# Rust components:
+# - thirdparty/deelevate_binding/Cargo.toml
+# - rust/watchman_client/Cargo.toml
+# - rust/serde_bser/Cargo.toml
+# - cli/Cargo.toml
+CRATES="
+ ahash@0.8.3
+ ansi_term@0.12.1
+ anyhow@1.0.71
+ atty@0.2.14
+ autocfg@1.1.0
+ bitflags@1.3.2
+ byteorder@1.4.3
+ bytes@1.4.0
+ cfg-if@1.0.0
+ clap@2.34.0
+ core-foundation-sys@0.8.4
+ crossbeam-channel@0.5.8
+ crossbeam-deque@0.8.3
+ crossbeam-epoch@0.9.15
+ crossbeam-queue@0.3.8
+ crossbeam-utils@0.8.16
+ crossbeam@0.8.2
+ duct@0.13.6
+ either@1.8.1
+ futures-channel@0.3.28
+ futures-core@0.3.28
+ futures-executor@0.3.28
+ futures-io@0.3.28
+ futures-macro@0.3.28
+ futures-sink@0.3.28
+ futures-task@0.3.28
+ futures-util@0.3.28
+ futures@0.1.31
+ futures@0.3.28
+ getrandom@0.2.10
+ heck@0.3.3
+ hermit-abi@0.1.19
+ hermit-abi@0.2.6
+ itoa@1.0.6
+ jwalk@0.6.2
+ lazy_static@1.4.0
+ libc@0.2.146
+ lock_api@0.4.10
+ log@0.4.19
+ maplit@1.0.2
+ memchr@2.5.0
+ memoffset@0.6.5
+ memoffset@0.9.0
+ mio@0.8.8
+ nix@0.25.1
+ ntapi@0.4.1
+ num_cpus@1.15.0
+ once_cell@1.18.0
+ os_pipe@1.1.4
+ parking_lot@0.12.1
+ parking_lot_core@0.9.8
+ pin-project-lite@0.2.9
+ pin-utils@0.1.0
+ proc-macro-error-attr@1.0.4
+ proc-macro-error@1.0.4
+ proc-macro2@1.0.60
+ quote@1.0.28
+ rayon-core@1.11.0
+ rayon@1.7.0
+ redox_syscall@0.3.5
+ ryu@1.0.13
+ scopeguard@1.1.0
+ serde@1.0.164
+ serde_bytes@0.11.9
+ serde_derive@1.0.164
+ serde_json@1.0.99
+ shared_child@1.0.0
+ signal-hook-registry@1.4.1
+ slab@0.4.8
+ smallvec@1.10.0
+ socket2@0.4.9
+ strsim@0.8.0
+ structopt-derive@0.4.18
+ structopt@0.3.26
+ syn@1.0.109
+ syn@2.0.20
+ sysinfo@0.26.9
+ tabular@0.2.0
+ textwrap@0.11.0
+ thiserror-impl@1.0.40
+ thiserror@1.0.40
+ tokio-macros@2.1.0
+ tokio-util@0.6.10
+ tokio@1.28.2
+ tracing-core@0.1.31
+ tracing@0.1.37
+ unicode-ident@1.0.9
+ unicode-segmentation@1.10.1
+ unicode-width@0.1.10
+ vec_map@0.8.2
+ version_check@0.9.4
+ wasi@0.11.0+wasi-snapshot-preview1
+ winapi-i686-pc-windows-gnu@0.4.0
+ winapi-x86_64-pc-windows-gnu@0.4.0
+ winapi@0.3.9
+ windows-sys@0.48.0
+ windows-targets@0.48.0
+ windows_aarch64_gnullvm@0.48.0
+ windows_aarch64_msvc@0.48.0
+ windows_i686_gnu@0.48.0
+ windows_i686_msvc@0.48.0
+ windows_x86_64_gnu@0.48.0
+ windows_x86_64_gnullvm@0.48.0
+ windows_x86_64_msvc@0.48.0
+"
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..12} )
+
+# stdsimd
+RUST_MAX_VER="1.77.1"
+
+inherit cargo cmake distutils-r1 tmpfiles
+
+DESCRIPTION="A file watching service"
+HOMEPAGE="https://facebook.github.io/watchman/"
+SRC_URI="https://github.com/facebook/watchman/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+SRC_URI+=" ${CARGO_CRATE_URIS}"
+
+LICENSE="Apache-2.0"
+# Dependent crate licenses
+LICENSE+="
+ MIT Unicode-DFS-2016
+ || ( Apache-2.0 Boost-1.0 )
+"
+SLOT="0"
+KEYWORDS="amd64"
+IUSE="llvm-libunwind python"
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+# See https://github.com/facebook/watchman/blob/main/CMakeLists.txt#L342 for libevent
+RDEPEND="
+ dev-libs/libevent:=
+ dev-libs/libpcre2
+ ~dev-cpp/edencommon-${PV}:=
+ ~dev-cpp/folly-${PV}:=
+ dev-cpp/glog:=
+ >=dev-libs/libfmt-8.1.1-r1:=
+ dev-libs/openssl:=
+ llvm-libunwind? ( sys-libs/llvm-libunwind:= )
+ !llvm-libunwind? ( sys-libs/libunwind:= )
+ python? ( ${PYTHON_DEPS} )
+"
+# TODO: Make gtest test-only (needs a fair bit of patching)
+DEPEND="
+ ${RDEPEND}
+ dev-cpp/gtest
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2023.01.16.00-python-working-dir.patch
+ "${FILESDIR}"/${PN}-2022.02.28.00-libatomic.patch
+ "${FILESDIR}"/${PN}-2022.08.08.00-musl-fsword-fix.patch
+ "${FILESDIR}"/${PN}-2023.06.19.00-rust-1.70-avoidance.patch
+ "${FILESDIR}"/${PN}-2023.06.19.00-unused.patch
+)
+
+# Rust utility
+QA_FLAGS_IGNORED="usr/bin/watchmanctl"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # Avoid cargo_src_prepare
+ cmake_src_prepare
+}
+
+src_configure() {
+ # https://github.com/facebook/watchman/blob/789678cf9855fb07b402afb75b01e4f8786deba2/build/fbcode_builder/CMake/RustStaticLibrary.cmake#L17
+ export RUST_VENDORED_CRATES_DIR="${ECARGO_VENDOR}"
+ export RUST_CARGO_HOME="${ECARGO_HOME}"
+ export CARGO_HOME="${ECARGO_HOME}"
+ # Build system already handles avoiding Rust-jobs-while-CMake-jobs-spawned issue
+ # https://github.com/facebook/watchman/blob/789678cf9855fb07b402afb75b01e4f8786deba2/build/fbcode_builder/CMake/RustStaticLibrary.cmake#L69
+ # so no need to force -j1 via cargo jobs
+
+ local mycmakeargs=(
+ # Rust wrangling
+ -DUSE_CARGO_VENDOR=ON
+ -DGENERATE_CARGO_VENDOR_CONFIG=OFF
+ -DRUST_CARGO_HOME="${RUST_CARGO_HOME}"
+
+ # General bits
+ -DWATCHMAN_STATE_DIR="${EPREFIX}"/run/watchman
+ -DWATCHMAN_VERSION_OVERRIDE=${PV}
+
+ # Fails to build against fbthrift for now in libatomic troubles
+ -DENABLE_EDEN_SUPPORT=OFF
+
+ # We handle this ourselves
+ -DCMAKE_DISABLE_FIND_PACKAGE_Python3=ON
+ )
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake_src_compile
+
+ if use python ; then
+ pushd watchman/python >/dev/null || die
+ distutils-r1_src_compile
+ popd >/dev/null || die
+ fi
+}
+
+src_test() {
+ cmake_src_test
+
+ if use python ; then
+ pushd watchman/python >/dev/null || die
+ distutils-r1_src_test
+ popd >/dev/null || die
+ fi
+}
+
+src_install() {
+ cmake_src_install
+
+ newtmpfiles "${FILESDIR}"/watchman.tmpfiles watchman.conf
+
+ if use python ; then
+ pushd watchman/python >/dev/null || die
+ distutils-r1_src_install
+ popd >/dev/null || die
+ fi
+}
+
+pkg_postinst() {
+ tmpfiles_process watchman.conf
+}