public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Matt Jolly" <kangie@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: eclass/
Date: Sat,  9 Nov 2024 06:26:40 +0000 (UTC)	[thread overview]
Message-ID: <1731130288.542e055db9a8c762714d3870816f8a5c6e52f853.kangie@gentoo> (raw)

commit:     542e055db9a8c762714d3870816f8a5c6e52f853
Author:     Matt Jolly <kangie <AT> gentoo <DOT> org>
AuthorDate: Sun Nov  3 00:15:32 2024 +0000
Commit:     Matt Jolly <kangie <AT> gentoo <DOT> org>
CommitDate: Sat Nov  9 05:31:28 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=542e055d

rust.eclass: Introduce new eclass for slotted Rust

The rust eclass acts similarly to the llvm eclass.

It works with optional `RUST_{MAX,MIN}_SLOT` variables to
enable ebuilds to trivially dependencies on appropriate
Rust SLOTs.

A `RUST_NEEDS_LLVM` variable can be set to have the eclass read
`LLVM_COMPAT` and generate an llvm-r1-USE-gated dependency string.

`RUST_USEDEP`, if set will be included in the dependency string
and checks against installed packages.

In either case these are stored in `RUST_DEPEND` for consumpion
in the ebuild, and added to BDEPEND unless unless `RUST_OPTIONAL`
is set. `RUST_DEPEND` will only ever include in-tree slots; there
is no need to set `RUST_MIN_VER` if all in-tree versions are suitable.
If `RUST_MIN_VER` is set to a value older than the oldest in-tree slot
it is treated as if it is set to the lowest available.

The default `rust_pkg_setup` will prefix the selected slot to
`PATH` and export `RUSTC` and `CARGO` variables pointing to that
slot for ease-of-use.

This should prevent issues like:

Bug: https://bugs.gentoo.org/907492
Bug: https://bugs.gentoo.org/942444
Signed-off-by: Matt Jolly <kangie <AT> gentoo.org>

 eclass/rust.eclass | 464 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 464 insertions(+)

diff --git a/eclass/rust.eclass b/eclass/rust.eclass
new file mode 100644
index 000000000000..12ef4b90a7ac
--- /dev/null
+++ b/eclass/rust.eclass
@@ -0,0 +1,464 @@
+# Copyright 2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: rust.eclass
+# @MAINTAINER:
+# Matt Jolly <kangie@gentoo.org>
+# @AUTHOR:
+# Matt Jolly <kangie@gentoo.org>
+# @SUPPORTED_EAPIS: 8
+# @BLURB: Utility functions to build against slotted Rust
+# @DESCRIPTION:
+# An eclass to reliably depend on a Rust or Rust/LLVM combination for
+# a given Rust slot. To use the eclass:
+#
+# 1. If required, set RUST_{MAX,MIN}_SLOT to the range of supported slots.
+# 2. If rust is optional, set RUST_OPTIONAL to a non-empty value then
+#     appropriately gate ${RUST_DEPEND}
+# 3. Use rust_pkg_setup, get_rust_prefix or RUST_SLOT.
+
+# Example use for a package supporting Rust 1.72.0 to 1.82.0:
+# @CODE
+#
+# RUST_MAX_VER="1.82.0"
+# RUST_MIN_VER="1.72.0"
+#
+# inherit meson rust
+#
+# # only if you need to define one explicitly
+# pkg_setup() {
+#	rust_pkg_setup
+#	do-something-else
+# }
+# @CODE
+#
+# Example for a package needing Rust w/ a specific target:
+# @CODE
+# RUST_USEDEP='clippy,${MULTILIB_USEDEP}'
+#
+# inherit multilib-minimal meson rust
+#
+# @CODE
+
+case ${EAPI} in
+	8) ;;
+	*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
+esac
+
+if [[ -z ${_RUST_ECLASS} ]]; then
+_RUST_ECLASS=1
+
+if [[ -n ${RUST_NEEDS_LLVM} ]]; then
+	if [[ -z ${_LLVM_R1_ECLASS} ]]; then
+		die "Please inherit llvm-r1.eclass before rust.eclass when using RUST_NEEDS_LLVM"
+	fi
+fi
+
+# == internal control knobs ==
+
+# @ECLASS_VARIABLE: _RUST_LLVM_MAP
+# @INTERNAL
+# @DESCRIPTION:
+# Definitive list of Rust slots and the associated LLVM slot, newest first.
+declare -A -g -r _RUST_LLVM_MAP=(
+	["1.82.0"]=19
+	["1.81.0"]=18
+	["1.80.1"]=18
+	["1.79.0"]=18
+	["1.77.1"]=17
+	["1.75.0"]=17
+	["1.74.1"]=17
+	["1.71.1"]=16
+)
+
+# @ECLASS_VARIABLE: _RUST_SLOTS_ORDERED
+# @INTERNAL
+# @DESCRIPTION:
+# Array of Rust slots, newest first.
+# While _RUST_LLVM_MAP stores useful info about the relationship between Rust and LLVM slots,
+# this array is used to store the Rust slots in a more convenient order for iteration.
+declare -a -g -r _RUST_SLOTS_ORDERED=(
+	"1.82.0"
+	"1.81.0"
+	"1.80.1"
+	"1.79.0"
+	"1.77.1"
+	"1.75.0"
+	"1.74.1"
+	"1.71.1"
+)
+
+# == control variables ==
+
+# @ECLASS_VARIABLE: RUST_MAX_VER
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Highest Rust slot supported by the package. Needs to be set before
+# rust_pkg_setup is called. If unset, no upper bound is assumed.
+
+# @ECLASS_VARIABLE: RUST_MIN_VER
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Lowest Rust slot supported by the package. Needs to be set before
+# rust_pkg_setup is called. If unset, no lower bound is assumed.
+
+# @eclass-variable: RUST_NEEDS_LLVM
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# If set to a non-empty value generate a llvm_slot_${llvm_slot}? gated
+# dependency block for rust slots in LLVM_COMPAT. This is useful for
+# packages that need a tight coupling between Rust and LLVM but don't
+# really care _which_ version of Rust is selected. Combine with
+# RUST_MAX_VER and RUST_MIN_VER to limit the range of Rust versions
+# that are acceptable. Will `die` if llvm-r1 is not inherited or
+# an invalid combination of RUST and LLVM slots is detected; this probably
+# means that a LLVM slot in LLVM_COMPAT has had all of its Rust slots filtered.
+
+# @ECLASS_VARIABLE: RUST_DEPEND
+# @OUTPUT_VARIABLE
+# @DESCRIPTION:
+# This is an eclass-generated Rust dependency string, filtered by
+# RUST_MAX_VER and RUST_MIN_VER. If RUST_NEEDS_LLVM is set, this
+# is gropeda and gated by an appropriate `llvm_slot_x` USE for all
+# implementations listed in LLVM_COMPAT.
+
+# @ECLASS_VARIABLE: RUST_OPTIONAL
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# If set to a non-empty value, the Rust dependency will not be added
+# to BDEPEND. This is useful for where packages need to gate rust behind
+# certain USE themselves.
+
+# @ECLASS_VARIABLE: RUST_USEDEP
+# @DEFAULT_UNSET
+# @DESCRIPTION:
+# Additional USE-dependencies to be added to the Rust dependency.
+# This is useful for packages that need to depend on specific Rust
+# features, like clippy or rustfmt. The variable is expanded before
+# being used in the Rust dependency.
+
+# == global metadata ==
+
+_rust_set_globals() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	# If RUST_MIN_VER is older than our oldest slot we'll just set it to that
+	# internally so we don't have to worry about it later.
+	if ! ver_test "${_RUST_SLOTS_ORDERED[-1]}" -gt "${RUST_MIN_VER:-0}"; then
+		RUST_MIN_VER="${_RUST_SLOTS_ORDERED[-1]}"
+	fi
+
+	# and if it falls between slots we'll set it to the next highest slot
+	# We can skip this we match a slot exactly.
+	if ! [[ "${_RUST_SLOTS_ORDERED[@]}" == *"${RUST_MIN_VER}"* ]]; then
+		local i
+		for (( i=${#_RUST_SLOTS_ORDERED[@]}-1 ; i>=0 ; i-- )); do
+			if ver_test "${_RUST_SLOTS_ORDERED[$i]}" -gt "${RUST_MIN_VER}"; then
+				RUST_MIN_VER="${_RUST_SLOTS_ORDERED[$i]}"
+				break
+			fi
+		done
+	fi
+
+	if [[ -n "${RUST_MAX_VER}" && -n "${RUST_MIN_VER}" ]]; then
+		if ! ver_test "${RUST_MAX_VER}" -ge "${RUST_MIN_VER}"; then
+			die "RUST_MAX_VER must not be older than RUST_MIN_VER"
+		fi
+	fi
+
+	local slot
+	# Try to keep this in order of newest to oldest
+	for slot in "${_RUST_SLOTS_ORDERED[@]}"; do
+		if ver_test "${slot}" -le "${RUST_MAX_VER:-9999}" && \
+			ver_test "${slot}" -ge "${RUST_MIN_VER:-0}"; then
+			_RUST_SLOTS+=( "${slot}" )
+		fi
+	done
+
+	_RUST_SLOTS=( "${_RUST_SLOTS[@]}" )
+
+	# We may have been passed a variable like ${MULTILIB_USEDEP}; expand it.
+	if [[ -n "${RUST_USEDEP}" ]]; then
+		eval $(echo RUST_USEDEP="${RUST_USEDEP}")
+		[[ -z "${RUST_USEDEP}" ]] && die "When evaluated, RUST_USEDEP is empty"
+	fi
+
+	readonly _RUST_SLOTS
+
+	local rust_dep=()
+	local llvm_slot
+	local rust_slot
+	local usedep
+
+	# If we're not using LLVM, we can just generate a simple Rust dependency
+	if [[ -z "${RUST_NEEDS_LLVM}" ]]; then
+		rust_dep=( "|| (" )
+		for slot in "${_RUST_SLOTS[@]}"; do
+				usedep="${RUST_USEDEP+[${RUST_USEDEP}]}"
+				rust_dep+=(
+					"dev-lang/rust:${slot}${usedep}"
+					"dev-lang/rust-bin:${slot}${usedep}"
+				)
+		done
+		rust_dep+=( ")" )
+		RUST_DEPEND="${rust_dep[*]}"
+	else
+		for llvm_slot in "${LLVM_COMPAT[@]}"; do
+			# Quick sanity check to make sure that the llvm slot is valid for Rust.
+			if [[ "${_RUST_LLVM_MAP[@]}" == *"${llvm_slot}"* ]]; then
+				# We're working a bit backwards here; iterate over _RUST_LLVM_MAP, check the
+				# LLVM slot, and if it matches add this to a new array because it may (and likely will)
+				# match multiple Rust slots. We already filtered Rust max/min slots.
+				# We always have a usedep for the LLVM slot, append `,RUST_USEDEP` if it's set
+				usedep="[llvm_slot_${llvm_slot}${RUST_USEDEP+,${RUST_USEDEP}}]"
+				local slot_dep_content=()
+				for rust_slot in "${_RUST_SLOTS[@]}"; do
+					if [[ "${_RUST_LLVM_MAP[${rust_slot}]}" == "${llvm_slot}" ]]; then
+						slot_dep_content+=(
+							"dev-lang/rust:${rust_slot}${usedep}"
+							"dev-lang/rust-bin:${rust_slot}${usedep}"
+						)
+					fi
+				done
+				if [ ${#slot_dep_content[@]} -ne 0 ]; then
+					rust_dep+=( "llvm_slot_${llvm_slot}? ( || ( ${slot_dep_content[*]} ) )" )
+				else
+					die "${FUNCNAME}: no Rust slots found for LLVM slot ${llvm_slot}"
+				fi
+			fi
+		done
+		RUST_DEPEND="${rust_dep[*]}"
+	fi
+
+	readonly RUST_DEPEND
+	if [[ -z ${RUST_OPTIONAL} ]]; then
+		BDEPEND="${RUST_DEPEND}"
+	fi
+}
+_rust_set_globals
+unset -f _rust_set_globals
+
+# == ebuild helpers ==
+
+# @FUNCTION: get_rust_slot
+# @USAGE: [-b|-d]
+# @DESCRIPTION:
+# Find the newest Rust install that is acceptable for the package,
+# and print its version number (i.e. SLOT) and type (source or bin[ary]).
+#
+# If -b is specified, the checks are performed relative to BROOT,
+# and BROOT-path is returned.
+#
+# If -d is specified, the checks are performed relative to ESYSROOT,
+# and ESYSROOT-path is returned. -d is the default.
+#
+# If RUST_M{AX,IN}_SLOT is non-zero, then only Rust versions that
+# are not newer or older than the specified slot(s) will be considered.
+# Otherwise, all Rust versions are be considered acceptable.
+#
+# If the `rust_check_deps()` function is defined within the ebuild, it
+# will be called to verify whether a particular slot is accepable.
+# Within the function scope, RUST_SLOT and LLVM_SLOT will be defined.
+#
+# The function should return a true status if the slot is acceptable,
+# false otherwise. If rust_check_deps() is not defined, the function
+# defaults to checking whether a suitable Rust package is installed.
+get_rust_slot() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	local hv_switch=-d
+	while [[ ${1} == -* ]]; do
+		case ${1} in
+			-b|-d) hv_switch="${1}";;
+			*) break;;
+		esac
+		shift
+	done
+
+	local max_slot
+	if [[ -z "${RUST_MAX_VER}" ]]; then
+		max_slot=
+	else
+		max_slot="${RUST_MAX_VER}"
+	fi
+	local slot
+	local llvm_slot
+
+	if [[ -n "${RUST_NEEDS_LLVM}" ]]; then
+		local unique_slots=()
+		local llvm_r1_slot
+		# Associative array keys are unique, so let's use that to our advantage
+		for llvm_slot in "${_RUST_LLVM_MAP[@]}"; do
+			unique_slots["${llvm_slot}"]="1"
+		done
+		for llvm_slot in "${!unique_slots[@]}"; do
+			if [[ "${LLVM_COMPAT[@]}" == *"${llvm_slot}"* ]]; then
+				# We can check for the USE
+				use "llvm_slot_${llvm_slot}" && llvm_r1_slot="${llvm_slot}"
+			else
+				continue
+			fi
+		done
+		if [[ -z "${llvm_r1_slot}" ]]; then
+			die "${FUNCNAME}: no LLVM slot found"
+		fi
+	fi
+
+	# iterate over known slots, newest first
+	for slot in "${_RUST_SLOTS_ORDERED[@]}"; do
+		llvm_slot="${_RUST_LLVM_MAP[${slot}]}"
+		# skip higher slots
+		if [[ -n "${max_slot}" ]]; then
+			if ver_test "${slot}" -eq "${max_slot}"; then
+				max_slot=
+			elif ver_test "${slot}" -gt "${max_slot}"; then
+				continue
+			fi
+		fi
+
+		# If we're in LLVM mode we can skip any slots that don't match the selected USE
+		if [[ -n "${RUST_NEEDS_LLVM}" ]]; then
+			if [[ "${llvm_slot}" != "${llvm_r1_slot}" ]]; then
+				continue
+			fi
+		fi
+
+		if declare -f rust_check_deps >/dev/null; then
+			local RUST_SLOT="${slot}"
+			local LLVM_SLOT="${_RUST_LLVM_MAP[${slot}]}"
+			rust_check_deps && return
+		else
+			local rust_usedep="${RUST_USEDEP+[${RUST_USEDEP}]}"
+			# When checking for installed packages prefer the non `-bin` package
+			# if effort was put into building it we should use it.
+			local rust_pkgs=(
+				"dev-lang/rust:${slot}${rust_usedep}"
+				"dev-lang/rust-bin:${slot}${rust_usedep}"
+			)
+			local _pkg
+			for _pkg in "${rust_pkgs[@]}"
+				do
+					if has_version "${hv_switch}" "${_pkg}"; then
+						echo "${slot}"
+						if [[ "${_pkg}" == "dev-lang/rust:${slot}${rust_usedep}" ]]; then
+							echo source
+						else
+							echo binary
+						fi
+						return
+					fi
+				done
+		fi
+
+		# We want to process the slot before escaping the loop if we've hit the minimum slot
+		if ver_test "${slot}" -eq "${RUST_MIN_VER}"; then
+			break
+		fi
+
+	done
+
+	# max_slot should have been unset in the iteration
+	if [[ -n "${max_slot}" ]]; then
+		die "${FUNCNAME}: invalid max_slot=${max_slot}"
+	fi
+
+	die "No Rust slot${1:+ <= ${1}} satisfying the package's dependencies found installed!"
+}
+
+# @FUNCTION: get_rust_path
+# @USAGE: prefix slot rust_type 
+# @DESCRIPTION:
+# Given argument of slot and rust_type, return an appropriate path
+# for the Rust install. The rust_type should be either "source"
+# or "binary". If the rust_type is not one of these, the function
+# will die.
+get_rust_path() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	local prefix="${1}"
+	local slot="${2}"
+	local rust_type="${3}"
+
+	if [[ ${#} -ne 3 ]]; then
+		die "${FUNCNAME}: invalid number of arguments"
+	fi
+
+	if [[ "${rust_type}" != "source" && "${rust_type}" != "binary" ]]; then
+		die "${FUNCNAME}: invalid rust_type=${rust_type}"
+	fi
+
+	if [[ "${rust_type}" == "source" ]]; then
+		echo "${prefix}/usr/lib/rust/${slot}/"
+	else
+		echo "${prefix}opt/rust-bin-${slot}/"
+	fi
+}
+
+# @FUNCTION: get_rust_prefix
+# @USAGE: [-b|-d]
+# @DESCRIPTION:
+# Find the newest Rust install that is acceptable for the package,
+# and print an absolute path to it. If both -bin and regular Rust
+# are installed, the regular Rust is preferred.
+#
+# The options and behavior are the same as get_rust_slot.
+get_rust_prefix() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	local prefix=${BROOT}
+	[[ ${1} == -d ]] && prefix=${ESYSROOT}
+
+	local slot rust_type
+	{ read -r slot; read -r rust_type; } <<< $(get_rust_slot)
+	echo $(get_rust_path "${prefix}" "${slot}" "${rust_type}")
+}
+
+# @FUNCTION: rust_prepend_path
+# @USAGE: <slot> <type>
+# @DESCRIPTION:
+# Prepend the path to the specified Rust to PATH and re-export it.
+rust_prepend_path() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	[[ ${#} -ne 2 ]] && die "Usage: ${FUNCNAME} <slot> <type>"
+	local slot="${1}"
+	local type="${2}"
+	export PATH="$(get_rust_path "${BROOT}" "${slot}" "${type}")/bin:${PATH}"
+}
+
+# @FUNCTION: rust_pkg_setup
+# @DESCRIPTION:
+# Prepend the appropriate executable directory for the newest
+# acceptable Rust slot to the PATH. If used with LLVM, an appropriate
+# `llvm_pkg_setup` call should be made in addition to this function.
+# For path determination logic, please see the get_rust_prefix documentation.
+#
+# The highest acceptable Rust slot can be set in RUST_MAX_VER variable.
+# If it is unset or empty, any slot is acceptable.
+#
+# The lowest acceptable Rust slot can be set in RUST_MIN_VER variable.
+# If it is unset or empty, any slot is acceptable.
+#
+# `CARGO` and `RUSTC` variables are set for the selected slot and exported.
+#
+# The PATH manipulation is only done for source builds. The function
+# is a no-op when installing a binary package.
+#
+# If any other behavior is desired, the contents of the function
+# should be inlined into the ebuild and modified as necessary.
+rust_pkg_setup() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	if [[ ${MERGE_TYPE} != binary ]]; then
+		{ read -r RUST_SLOT; read -r RUST_TYPE; } <<< $(get_rust_slot)
+		rust_prepend_path "${RUST_SLOT}" "${RUST_TYPE}"
+		CARGO="$(get_rust_prefix)bin/cargo"
+		RUSTC="$(get_rust_prefix)bin/rustc"
+		export CARGO RUSTC
+		einfo "Using Rust ${RUST_SLOT} (${RUST_TYPE})"
+	fi
+}
+
+fi
+
+EXPORT_FUNCTIONS pkg_setup


             reply	other threads:[~2024-11-09  6:26 UTC|newest]

Thread overview: 6500+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-09  6:26 Matt Jolly [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-06-21 10:07 [gentoo-commits] repo/gentoo:master commit in: eclass/ David Seifert
2025-06-21 10:07 David Seifert
2025-06-18  7:26 Sam James
2025-06-15 17:39 Andreas Sturmlechner
2025-06-14 14:26 Sam James
2025-06-14 14:26 Sam James
2025-06-14  9:06 Nowa Ammerlaan
2025-06-14  9:06 Nowa Ammerlaan
2025-06-13 23:11 Mike Gilbert
2025-06-12 19:20 Andreas K. Hüttel
2025-06-12 11:58 Sam James
2025-06-11 15:30 Andreas Sturmlechner
2025-06-11  1:48 Sam James
2025-06-10  8:02 Ionen Wolkens
2025-06-09 20:47 Andreas Sturmlechner
2025-06-09 20:30 James Le Cuirot
2025-06-09  8:07 Ionen Wolkens
2025-06-08 12:03 Sam James
2025-06-07 18:05 Michał Górny
2025-06-07 18:05 Michał Górny
2025-06-07 11:18 Ionen Wolkens
2025-06-05 11:11 James Le Cuirot
2025-06-05 11:11 James Le Cuirot
2025-06-05 10:56 James Le Cuirot
2025-06-05 10:56 James Le Cuirot
2025-06-05 10:56 James Le Cuirot
2025-06-05 10:56 James Le Cuirot
2025-06-05 10:56 James Le Cuirot
2025-06-05 10:56 James Le Cuirot
2025-06-04  8:48 Hans de Graaff
2025-06-03 17:01 Andreas Sturmlechner
2025-06-03 17:01 Andreas Sturmlechner
2025-06-03 17:01 Andreas Sturmlechner
2025-06-03  1:32 Sam James
2025-06-01 15:13 Ionen Wolkens
2025-05-30  6:33 Hans de Graaff
2025-05-29 12:24 Sam James
2025-05-29  2:47 Ionen Wolkens
2025-05-28 11:54 Michał Górny
2025-05-28 11:54 Michał Górny
2025-05-28  3:36 Sam James
2025-05-27 18:17 Mike Gilbert
2025-05-27 18:17 Mike Gilbert
2025-05-27 18:17 Mike Gilbert
2025-05-26  9:43 Sam James
2025-05-25 16:41 Mike Gilbert
2025-05-24 23:50 Mike Gilbert
2025-05-24 17:08 Mike Gilbert
2025-05-24 11:56 Michał Górny
2025-05-24 11:11 Andreas K. Hüttel
2025-05-23 15:42 Ionen Wolkens
2025-05-22 19:39 Mike Gilbert
2025-05-20 22:55 Ionen Wolkens
2025-05-19 15:22 Matt Turner
2025-05-17 12:59 Michał Górny
2025-05-17 12:59 Michał Górny
2025-05-16  9:59 Sam James
2025-05-16  9:31 Michał Górny
2025-05-16  2:00 Ionen Wolkens
2025-05-15  7:11 Sam James
2025-05-15  7:11 Arsen Arsenović
2025-05-15  7:11 Arsen Arsenović
2025-05-11  4:34 Sam James
2025-05-10 20:04 Sam James
2025-05-10 13:03 Michał Górny
2025-05-10 12:57 Michał Górny
2025-05-10 12:57 Michał Górny
2025-05-10  1:54 Sam James
2025-05-08 12:35 Michał Górny
2025-05-08 12:35 Michał Górny
2025-05-08 12:35 Michał Górny
2025-05-08 12:35 Michał Górny
2025-05-06 17:41 Eli Schwartz
2025-05-05 15:56 Sam James
2025-05-05 15:45 Sam James
2025-05-05 15:32 Sam James
2025-05-03 19:42 Michał Górny
2025-05-03  5:28 Sam James
2025-05-02 16:01 Michał Górny
2025-05-01 11:36 Michał Górny
2025-04-27 22:53 Sam James
2025-04-27 13:17 Ionen Wolkens
2025-04-27 10:52 Ionen Wolkens
2025-04-27  8:27 Ionen Wolkens
2025-04-27  8:27 Ionen Wolkens
2025-04-26 18:09 Sam James
2025-04-26 18:03 Sam James
2025-04-26 17:52 Sam James
2025-04-24 20:44 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:18 Sam James
2025-04-23 15:09 Ulrich Müller
2025-04-23 11:37 Matt Jolly
2025-04-22 11:24 Ionen Wolkens
2025-04-21  2:38 Ionen Wolkens
2025-04-20 11:50 Michał Górny
2025-04-19 19:16 Sam James
2025-04-19 10:28 Michał Górny
2025-04-19  8:37 Hans de Graaff
2025-04-19  1:31 Sam James
2025-04-19  1:31 Sam James
2025-04-17  1:27 Sam James
2025-04-16  2:42 Sam James
2025-04-15 14:24 Michał Górny
2025-04-15 14:24 Michał Górny
2025-04-15 14:24 Michał Górny
2025-04-15 14:24 Michał Górny
2025-04-15 14:24 Michał Górny
2025-04-15 14:24 Michał Górny
2025-04-15 10:15 Michał Górny
2025-04-14 16:07 Sam James
2025-04-13 11:45 Sam James
2025-04-13  9:14 Sam James
2025-04-12 16:34 Sam James
2025-04-12 16:34 Sam James
2025-04-12  8:59 Michał Górny
2025-04-10 14:23 Sam James
2025-04-10  9:28 Sam James
2025-04-10  9:18 Sam James
2025-04-07 20:48 Sam James
2025-04-05 12:24 Michał Górny
2025-04-04 17:08 Sam James
2025-04-02  7:06 Michał Górny
2025-04-02  7:06 Michał Górny
2025-04-02  7:06 Michał Górny
2025-04-02  7:06 Michał Górny
2025-04-02  7:06 Michał Górny
2025-04-02  7:06 Michał Górny
2025-04-02  7:06 Michał Górny
2025-04-02  7:06 Michał Górny
2025-04-01 13:58 Florian Schmaus
2025-03-29 15:58 James Le Cuirot
2025-03-29 10:27 Michał Górny
2025-03-28 15:06 Sam James
2025-03-28  9:24 Nowa Ammerlaan
2025-03-26 22:54 Sam James
2025-03-25  8:15 Sam James
2025-03-24  6:55 Sam James
2025-03-24  6:53 Sam James
2025-03-22 10:43 Michał Górny
2025-03-22  0:52 Sam James
2025-03-17 20:13 Michał Górny
2025-03-14  2:50 Sam James
2025-03-13 18:11 Sam James
2025-03-13 18:02 Sam James
2025-03-13 17:21 Sam James
2025-03-13 13:18 Sam James
2025-03-12 20:02 Sam James
2025-03-12 10:14 Ionen Wolkens
2025-03-11 22:15 Sam James
2025-03-11 14:56 Michał Górny
2025-03-11 13:23 Sam James
2025-03-11 13:23 Sam James
2025-03-11  9:04 Ionen Wolkens
2025-03-10  1:55 Sam James
2025-03-08 16:59 Michał Górny
2025-03-08 14:02 Arthur Zamarin
2025-03-08 14:02 Arthur Zamarin
2025-03-08 14:02 Arthur Zamarin
2025-03-08 14:02 Arthur Zamarin
2025-03-08 14:02 Arthur Zamarin
2025-03-07 18:32 Sam James
2025-03-07  1:25 Sam James
2025-03-07  1:23 Sam James
2025-03-07  1:23 Sam James
2025-03-07  0:58 Sam James
2025-03-04 22:32 Andreas Sturmlechner
2025-03-04 22:32 Andreas Sturmlechner
2025-03-04 22:09 Sam James
2025-03-03 19:27 Sam James
2025-03-03 19:27 Sam James
2025-03-03 17:47 Nowa Ammerlaan
2025-03-03 17:47 Nowa Ammerlaan
2025-03-01 12:58 Michał Górny
2025-02-26 22:05 Andreas Sturmlechner
2025-02-26  8:47 Ionen Wolkens
2025-02-25 16:36 Florian Schmaus
2025-02-25 16:36 Florian Schmaus
2025-02-25 14:03 Michał Górny
2025-02-25  9:16 Matt Jolly
2025-02-22 22:08 Matt Jolly
2025-02-22 15:19 Michał Górny
2025-02-21 11:14 Arthur Zamarin
2025-02-21 11:14 Arthur Zamarin
2025-02-21  7:25 Petr Vaněk
2025-02-17 21:52 Mike Gilbert
2025-02-16 18:41 Mike Gilbert
2025-02-15  9:04 Hans de Graaff
2025-02-15  9:04 Hans de Graaff
2025-02-15  9:04 Hans de Graaff
2025-02-15  7:38 Michał Górny
2025-02-13 17:51 Sam James
2025-02-13 17:18 Ulrich Müller
2025-02-13  8:49 Patrick Lauer
2025-02-11 11:29 Michał Górny
2025-02-11  8:39 Sam James
2025-02-10  6:43 Sam James
2025-02-09 19:13 Andreas Sturmlechner
2025-02-09 19:13 Andreas Sturmlechner
2025-02-09 19:13 Andreas Sturmlechner
2025-02-08 11:51 Michał Górny
2025-02-07 18:33 Sam James
2025-02-07 18:04 Sam James
2025-02-06 16:40 Sam James
2025-02-05 20:37 Sam James
2025-02-01 13:14 Michał Górny
2025-02-01  0:40 Ionen Wolkens
2025-01-31 21:51 Michał Górny
2025-01-31 21:51 Michał Górny
2025-01-30  1:31 Sam James
2025-01-29 23:22 Matt Jolly
2025-01-28 12:15 Sam James
2025-01-28  7:22 Sam James
2025-01-25 13:33 Michał Górny
2025-01-22 19:15 Michał Górny
2025-01-22 19:15 Michał Górny
2025-01-21 23:13 Sam James
2025-01-20  9:44 Petr Vaněk
2025-01-20  9:44 Petr Vaněk
2025-01-19  1:16 Sam James
2025-01-18 23:51 Sam James
2025-01-18 23:51 Sam James
2025-01-18 23:51 Sam James
2025-01-18 15:09 Michał Górny
2025-01-18  8:21 Michał Górny
2025-01-16 14:06 Michał Górny
2025-01-16  8:21 Sam James
2025-01-15 19:38 Sam James
2025-01-15 14:39 Ulrich Müller
2025-01-14 17:07 Maciej Barć
2025-01-14  4:53 Sam James
2025-01-11 18:12 Michał Górny
2025-01-11  8:10 Arthur Zamarin
2025-01-10 16:44 Nowa Ammerlaan
2025-01-10 13:15 Michał Górny
2025-01-08  6:33 Joonas Niilola
2025-01-08  2:18 Ionen Wolkens
2025-01-07 11:34 Miroslav Šulc
2025-01-06 20:25 Nowa Ammerlaan
2025-01-06 20:25 Nowa Ammerlaan
2025-01-06 20:25 Nowa Ammerlaan
2025-01-06 14:37 Nowa Ammerlaan
2025-01-05 13:39 Nowa Ammerlaan
2025-01-05 13:39 Nowa Ammerlaan
2025-01-04 21:34 Sam James
2025-01-04 21:34 Sam James
2025-01-04 15:28 Michał Górny
2025-01-04 15:28 Michał Górny
2025-01-03 17:54 James Le Cuirot
2025-01-03  0:59 Sam James
2025-01-02 23:34 Sam James
2025-01-02 23:32 Sam James
2025-01-02 18:33 Sam James
2025-01-02 17:08 Michał Górny
2025-01-02 17:08 Michał Górny
2025-01-02 17:08 Michał Górny
2025-01-01 15:45 Miroslav Šulc
2025-01-01 10:06 James Le Cuirot
2024-12-30 11:35 Michał Górny
2024-12-30 11:35 Michał Górny
2024-12-30 11:35 Michał Górny
2024-12-30 11:35 Michał Górny
2024-12-30 11:35 Michał Górny
2024-12-30 11:35 Michał Górny
2024-12-30 11:35 Michał Górny
2024-12-30 11:35 Michał Górny
2024-12-30 11:35 Michał Górny
2024-12-30 11:35 Michał Górny
2024-12-29  9:22 Ulrich Müller
2024-12-28 19:43 Alfredo Tupone
2024-12-28 14:51 Sam James
2024-12-27 21:25 Michał Górny
2024-12-26 10:59 Sam James
2024-12-25 15:08 Hans de Graaff
2024-12-23 17:10 Andreas Sturmlechner
2024-12-22 19:41 Sam James
2024-12-22  3:20 Matt Jolly
2024-12-22  1:30 Sam James
2024-12-21 10:28 Michał Górny
2024-12-18  3:00 Matt Turner
2024-12-18  3:00 Matt Turner
2024-12-18  2:46 Sam James
2024-12-17 22:14 Andreas Sturmlechner
2024-12-17 21:44 Andreas Sturmlechner
2024-12-17 17:34 Sam James
2024-12-17 17:14 Sam James
2024-12-16 18:45 Ulrich Müller
2024-12-16 18:45 Ulrich Müller
2024-12-16 15:17 Sam James
2024-12-16  5:57 Michał Górny
2024-12-15 12:48 Sam James
2024-12-15  9:47 Sam James
2024-12-15  3:08 Sam James
2024-12-14 18:43 Sam James
2024-12-14 16:33 Sam James
2024-12-14 12:47 Sam James
2024-12-13 13:11 Hans de Graaff
2024-12-13 10:02 Florian Schmaus
2024-12-12 17:03 Florian Schmaus
2024-12-12 17:03 Florian Schmaus
2024-12-12 17:03 Florian Schmaus
2024-12-12  7:47 Sam James
2024-12-12  7:47 Sam James
2024-12-12  7:47 Sam James
2024-12-11 11:52 Ionen Wolkens
2024-12-11 11:52 Ionen Wolkens
2024-12-11 11:52 Ionen Wolkens
2024-12-10  5:21 Ionen Wolkens
2024-12-09 18:49 Ulrich Müller
2024-12-08 23:34 Matt Jolly
2024-12-08 23:34 Matt Jolly
2024-12-08  1:11 Sam James
2024-12-07 23:23 Sam James
2024-12-06 21:55 Sam James
2024-12-06 11:33 Nowa Ammerlaan
2024-12-06  7:44 Miroslav Šulc
2024-12-06  7:43 Miroslav Šulc
2024-12-06  7:43 Miroslav Šulc
2024-12-06  5:10 Ionen Wolkens
2024-12-04 11:34 Matt Jolly
2024-12-04 11:33 Matt Jolly
2024-12-02  8:46 Matt Jolly
2024-12-02  8:46 Matt Jolly
2024-12-01 12:12 Sam James
2024-12-01  9:25 Sam James
2024-12-01  8:53 Sam James
2024-11-30  7:17 Michał Górny
2024-11-30  7:17 Michał Górny
2024-11-30  5:10 Sam James
2024-11-30  5:10 Sam James
2024-11-29 21:18 Eli Schwartz
2024-11-29 21:18 Eli Schwartz
2024-11-29 21:18 Eli Schwartz
2024-11-26 17:28 Florian Schmaus
2024-11-26  1:45 Maciej Barć
2024-11-26  1:45 Maciej Barć
2024-11-24 19:01 Michał Górny
2024-11-23 13:15 Michał Górny
2024-11-22 19:25 Sam James
2024-11-20 12:37 Sam James
2024-11-20 12:20 Sam James
2024-11-20 12:15 Sam James
2024-11-20 12:05 Sam James
2024-11-19 15:01 Sam James
2024-11-19 14:50 Sam James
2024-11-18 19:32 Michał Górny
2024-11-18 16:44 Mike Gilbert
2024-11-18 11:11 Sam James
2024-11-18  9:28 Sam James
2024-11-17  5:27 Matt Jolly
2024-11-17  5:27 Matt Jolly
2024-11-14  0:36 Sam James
2024-11-13 19:22 Sam James
2024-11-13 18:21 Michał Górny
2024-11-13  6:16 Matt Jolly
2024-11-12 19:19 Sam James
2024-11-12  9:09 Matt Jolly
2024-11-12  8:09 Andrew Ammerlaan
2024-11-11 23:48 Matt Jolly
2024-11-11 23:48 Matt Jolly
2024-11-11 19:28 Sam James
2024-11-11  8:53 Matt Jolly
2024-11-11  8:53 Matt Jolly
2024-11-10 17:24 Sam James
2024-11-09 10:50 Matt Jolly
2024-11-09  9:02 Matt Jolly
2024-11-09  7:31 Matt Jolly
2024-11-09  7:21 Sam James
2024-11-09  6:26 Matt Jolly
2024-11-09  6:26 Matt Jolly
2024-11-07  5:28 Michał Górny
2024-11-07  5:28 Michał Górny
2024-11-06 11:27 Sam James
2024-11-05 10:47 Florian Schmaus
2024-11-05 10:47 Florian Schmaus
2024-11-03  9:35 Sam James
2024-11-01  9:03 Michał Górny
2024-10-30 20:50 Sam James
2024-10-30 11:43 Miroslav Šulc
2024-10-30  2:27 Sam James
2024-10-29 23:22 Maciej Barć
2024-10-29 23:22 Maciej Barć
2024-10-29 13:01 Michał Górny
2024-10-23 12:18 Michał Górny
2024-10-21  9:32 Sam James
2024-10-19 13:47 Ionen Wolkens
2024-10-18 17:54 Ulrich Müller
2024-10-18 17:54 Ulrich Müller
2024-10-18 17:54 Ulrich Müller
2024-10-16 16:13 Andreas Sturmlechner
2024-10-16  4:54 Michał Górny
2024-10-16  4:54 Michał Górny
2024-10-16  4:54 Michał Górny
2024-10-15 13:13 Michał Górny
2024-10-15  7:17 Michał Górny
2024-10-10 14:47 Andrew Ammerlaan
2024-10-09 11:45 Michał Górny
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:32 David Seifert
2024-10-08 15:29 Ulrich Müller
2024-10-08 15:29 Ulrich Müller
2024-10-08  7:09 Florian Schmaus
2024-10-07  4:13 Sam James
2024-10-07  4:13 Sam James
2024-10-07  4:13 Sam James
2024-10-07  4:13 Sam James
2024-10-07  2:40 Sam James
2024-10-04 11:49 Sam James
2024-10-03  4:02 Sam James
2024-10-03  3:43 Sam James
2024-10-02  9:01 Miroslav Šulc
2024-10-02  9:01 Miroslav Šulc
2024-10-02  9:01 Miroslav Šulc
2024-10-02  9:01 Miroslav Šulc
2024-10-02  0:57 Sam James
2024-10-01 23:13 Eli Schwartz
2024-10-01 23:13 Eli Schwartz
2024-10-01 20:40 James Le Cuirot
2024-10-01 19:38 Eli Schwartz
2024-10-01 10:18 Sam James
2024-10-01  7:47 Sam James
2024-10-01  6:59 Sam James
2024-10-01  2:16 Sam James
2024-10-01  2:14 Sam James
2024-10-01  2:06 Sam James
2024-10-01  1:58 Sam James
2024-10-01  1:58 Sam James
2024-10-01  1:46 Sam James
2024-10-01  1:11 Sam James
2024-09-30  5:57 Sam James
2024-09-30  3:03 Sam James
2024-09-30  3:02 Sam James
2024-09-30  2:20 Sam James
2024-09-30  2:15 Sam James
2024-09-30  2:15 Sam James
2024-09-30  2:02 Sam James
2024-09-30  2:02 Sam James
2024-09-30  2:02 Sam James
2024-09-30  1:52 Sam James
2024-09-30  1:52 Sam James
2024-09-30  1:52 Sam James
2024-09-30  1:52 Sam James
2024-09-29 11:28 Sam James
2024-09-29 11:22 Sam James
2024-09-29 11:22 Sam James
2024-09-29 11:22 Sam James
2024-09-29  1:13 Sam James
2024-09-29  1:13 Sam James
2024-09-29  1:07 Sam James
2024-09-29  1:07 Sam James
2024-09-29  0:18 Sam James
2024-09-29  0:18 Sam James
2024-09-29  0:18 Sam James
2024-09-25 19:29 Eli Schwartz
2024-09-25 11:12 Sam James
2024-09-25 11:12 Sam James
2024-09-25 11:12 Sam James
2024-09-25  4:51 Ulrich Müller
2024-09-25  4:39 Michał Górny
2024-09-24 18:02 Michał Górny
2024-09-24 18:02 Michał Górny
2024-09-24 11:52 Sam James
2024-09-24  6:41 Michał Górny
2024-09-23 15:11 Michał Górny
2024-09-23 12:06 Ulrich Müller
2024-09-19 22:57 Sam James
2024-09-18 15:51 Sam James
2024-09-17 12:13 Michał Górny
2024-09-17 11:58 Andrew Ammerlaan
2024-09-12 22:08 Sam James
2024-09-11 22:21 Sam James
2024-09-10 19:11 Miroslav Šulc
2024-09-10 12:58 Michał Górny
2024-09-10  8:54 Michał Górny
2024-09-10  6:46 Miroslav Šulc
2024-09-09 18:20 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-08 18:21 Sam James
2024-09-07 18:23 Sam James
2024-09-07 18:21 Sam James
2024-09-05 12:10 Sam James
2024-09-04 20:33 Michał Górny
2024-09-03  9:40 Sam James
2024-09-03  8:58 Sam James
2024-09-03  4:22 Ionen Wolkens
2024-09-01 11:05 Sam James
2024-09-01 11:05 Sam James
2024-09-01 11:05 Sam James
2024-09-01 11:05 Sam James
2024-09-01  9:59 Miroslav Šulc
2024-09-01  9:59 Miroslav Šulc
2024-09-01  9:59 Miroslav Šulc
2024-09-01  9:59 Miroslav Šulc
2024-08-31  8:33 Michał Górny
2024-08-30 19:43 Andrew Ammerlaan
2024-08-30 19:10 Andrew Ammerlaan
2024-08-26 13:04 Ulrich Müller
2024-08-26 13:04 Ulrich Müller
2024-08-26 13:04 Ulrich Müller
2024-08-26 13:04 Ulrich Müller
2024-08-26  6:34 Andreas Sturmlechner
2024-08-25 15:37 Andrew Ammerlaan
2024-08-25  0:49 Jason Zaman
2024-08-23 19:25 Michał Górny
2024-08-23 19:25 Michał Górny
2024-08-22 17:00 Andreas Sturmlechner
2024-08-22 11:23 Michał Górny
2024-08-21 21:51 Andreas Sturmlechner
2024-08-20 20:17 Mike Gilbert
2024-08-20 20:07 Mike Gilbert
2024-08-19 18:17 Robin H. Johnson
2024-08-19  6:02 Viorel Munteanu
2024-08-18 17:44 Arsen Arsenović
2024-08-18 17:44 Arsen Arsenović
2024-08-18 17:44 Arsen Arsenović
2024-08-16 17:21 Sam James
2024-08-16 17:21 Sam James
2024-08-16 17:21 Sam James
2024-08-16 17:21 Sam James
2024-08-16 17:21 Sam James
2024-08-16 17:21 Sam James
2024-08-16 17:21 Sam James
2024-08-16 17:21 Sam James
2024-08-16 10:15 Arthur Zamarin
2024-08-16  5:55 Arthur Zamarin
2024-08-15 21:24 Sam James
2024-08-15 21:18 Sam James
2024-08-15 20:01 Michał Górny
2024-08-15 17:48 Andreas Sturmlechner
2024-08-15 17:48 Andreas Sturmlechner
2024-08-15 17:48 Andreas Sturmlechner
2024-08-15 17:48 Andreas Sturmlechner
2024-08-15 17:48 Andreas Sturmlechner
2024-08-15 17:48 Andreas Sturmlechner
2024-08-15 17:48 Andreas Sturmlechner
2024-08-15 17:48 Andreas Sturmlechner
2024-08-12 19:02 Ulrich Müller
2024-08-12 19:02 Ulrich Müller
2024-08-12  1:19 Sam James
2024-08-12  1:19 Sam James
2024-08-12  1:19 Sam James
2024-08-12  1:19 Sam James
2024-08-11 20:56 Sam James
2024-08-10 17:24 Sam James
2024-08-10 14:06 Fabian Groffen
2024-08-09 15:50 Andrew Ammerlaan
2024-08-09 14:30 Sam James
2024-08-09 11:50 Sam James
2024-08-09 11:39 Sam James
2024-08-08 19:26 Michał Górny
2024-08-08 16:46 Andrew Ammerlaan
2024-08-08 14:38 James Le Cuirot
2024-08-08 10:49 Sam James
2024-08-08 10:30 Sam James
2024-08-08 10:30 Sam James
2024-08-08 10:05 Sam James
2024-08-08  9:00 James Le Cuirot
2024-08-07 15:13 Sam James
2024-08-07  9:41 Sam James
2024-08-07  9:25 Sam James
2024-08-07  9:21 Sam James
2024-08-07  8:58 Andrew Ammerlaan
2024-08-07  8:58 Andrew Ammerlaan
2024-08-07  3:03 Sam James
2024-08-06 16:39 Florian Schmaus
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  8:47 Michał Górny
2024-08-06  1:46 Sam James
2024-08-04  8:28 Sam James
2024-08-04  7:30 Andrew Ammerlaan
2024-08-04  7:27 Sam James
2024-08-01 20:20 Michał Górny
2024-08-01  7:32 Miroslav Šulc
2024-07-31  0:02 Sam James
2024-07-28 17:40 Florian Schmaus
2024-07-27 22:00 Andrew Ammerlaan
2024-07-27  7:27 Michał Górny
2024-07-26 17:18 Ulrich Müller
2024-07-26  9:00 Miroslav Šulc
2024-07-24 17:18 Andrew Ammerlaan
2024-07-24 17:18 Andrew Ammerlaan
2024-07-24 17:18 Andrew Ammerlaan
2024-07-24  8:58 Florian Schmaus
2024-07-24  8:58 Florian Schmaus
2024-07-23 14:13 Michał Górny
2024-07-23 14:07 Michał Górny
2024-07-23 14:07 Michał Górny
2024-07-23 14:07 Michał Górny
2024-07-23 10:03 Miroslav Šulc
2024-07-22 15:09 Michał Górny
2024-07-22 15:09 Michał Górny
2024-07-22 15:09 Michał Górny
2024-07-21 15:45 Andrew Ammerlaan
2024-07-21 15:14 Andrew Ammerlaan
2024-07-21 13:31 Andrew Ammerlaan
2024-07-21 13:31 Andrew Ammerlaan
2024-07-21 13:31 Andrew Ammerlaan
2024-07-20 12:09 Ulrich Müller
2024-07-18 16:15 Michał Górny
2024-07-16  9:16 James Le Cuirot
2024-07-16  9:16 James Le Cuirot
2024-07-16  9:16 James Le Cuirot
2024-07-16  9:16 James Le Cuirot
2024-07-16  9:16 James Le Cuirot
2024-07-16  9:16 James Le Cuirot
2024-07-16  9:16 James Le Cuirot
2024-07-15 19:18 Andrew Ammerlaan
2024-07-15 19:18 Andrew Ammerlaan
2024-07-15 19:18 Andrew Ammerlaan
2024-07-15 19:18 Andrew Ammerlaan
2024-07-15 19:18 Andrew Ammerlaan
2024-07-15  7:17 David Seifert
2024-07-15  7:17 David Seifert
2024-07-15  7:17 David Seifert
2024-07-14 17:45 Florian Schmaus
2024-07-14 17:45 Florian Schmaus
2024-07-13 14:14 Michał Górny
2024-07-13  7:46 Michał Górny
2024-07-12 17:43 Ulrich Müller
2024-07-12  7:38 Sam James
2024-07-12  6:27 Sam James
2024-07-11 20:54 Ulrich Müller
2024-07-11 20:54 Ulrich Müller
2024-07-11 14:35 Michał Górny
2024-07-09 16:44 Ulrich Müller
2024-07-08 10:03 Ulrich Müller
2024-07-08 10:03 Ulrich Müller
2024-07-08 10:03 Ulrich Müller
2024-07-08 10:03 Ulrich Müller
2024-07-07  6:45 Matthew Smith
2024-07-06 11:19 Michał Górny
2024-07-05 20:50 Luca Barbato
2024-07-05 11:03 Arthur Zamarin
2024-07-05 11:03 Arthur Zamarin
2024-07-05 11:03 Arthur Zamarin
2024-07-03  5:30 Joonas Niilola
2024-07-03  0:59 Sam James
2024-07-03  0:54 Sam James
2024-07-02 17:49 Sam James
2024-06-30 18:27 Sam James
2024-06-29  8:39 Andrew Ammerlaan
2024-06-29  8:39 Andrew Ammerlaan
2024-06-29  8:39 Andrew Ammerlaan
2024-06-28  8:23 Miroslav Šulc
2024-06-27  7:33 Andrew Ammerlaan
2024-06-26  6:24 Florian Schmaus
2024-06-24 11:58 Ulrich Müller
2024-06-23 17:33 Michał Górny
2024-06-23  1:00 Ionen Wolkens
2024-06-20  9:57 Sam James
2024-06-20  7:29 Florian Schmaus
2024-06-20  7:29 Florian Schmaus
2024-06-19  3:16 Andreas K. Hüttel
2024-06-17 17:13 Andreas Sturmlechner
2024-06-17  9:39 James Le Cuirot
2024-06-17  0:53 Sam James
2024-06-15 11:01 Michał Górny
2024-06-15  7:58 Sam James
2024-06-14 12:26 Michał Górny
2024-06-14 12:26 Michał Górny
2024-06-14 12:26 Michał Górny
2024-06-14 12:26 Michał Górny
2024-06-14 12:26 Michał Górny
2024-06-14 12:26 Michał Górny
2024-06-14 12:26 Michał Górny
2024-06-14 12:26 Michał Górny
2024-06-14 12:19 Miroslav Šulc
2024-06-14 10:00 Miroslav Šulc
2024-06-14 10:00 Miroslav Šulc
2024-06-14 10:00 Miroslav Šulc
2024-06-14 10:00 Miroslav Šulc
2024-06-14 10:00 Miroslav Šulc
2024-06-13 20:43 Andreas Sturmlechner
2024-06-13 18:35 Ulrich Müller
2024-06-13 18:35 Ulrich Müller
2024-06-13 13:21 Miroslav Šulc
2024-06-12 17:13 James Le Cuirot
2024-06-12 16:36 Patrick Lauer
2024-06-12 14:27 Patrick Lauer
2024-06-12 13:20 James Le Cuirot
2024-06-12 13:20 James Le Cuirot
2024-06-12 10:24 Arthur Zamarin
2024-06-10 14:23 Ulrich Müller
2024-06-10 14:23 Ulrich Müller
2024-06-10 12:46 Joonas Niilola
2024-06-08 15:47 Michał Górny
2024-06-08 10:29 Michał Górny
2024-06-08  3:53 Ulrich Müller
2024-06-08  3:53 Ulrich Müller
2024-06-06 20:37 Mike Gilbert
2024-06-02  8:22 Ionen Wolkens
2024-06-01 21:34 Alfredo Tupone
2024-06-01 21:11 Alfredo Tupone
2024-06-01  6:19 Hans de Graaff
2024-06-01  6:19 Hans de Graaff
2024-06-01  6:19 Hans de Graaff
2024-05-31 12:42 Michał Górny
2024-05-26  8:18 Miroslav Šulc
2024-05-25  8:35 Michał Górny
2024-05-25  5:55 Sam James
2024-05-22  1:44 Sam James
2024-05-21  8:58 Florian Schmaus
2024-05-21  8:58 Florian Schmaus
2024-05-21  8:58 Florian Schmaus
2024-05-20 17:02 Michał Górny
2024-05-20 17:02 Michał Górny
2024-05-20 17:02 Michał Górny
2024-05-20 17:02 Michał Górny
2024-05-20 17:02 Michał Górny
2024-05-20 17:02 Michał Górny
2024-05-20 17:02 Michał Górny
2024-05-20 17:02 Michał Górny
2024-05-18 13:25 Michał Górny
2024-05-18  3:50 Benda XU
2024-05-17 23:05 Ionen Wolkens
2024-05-17 23:05 Ionen Wolkens
2024-05-17 12:07 Andrew Ammerlaan
2024-05-17 12:07 Andrew Ammerlaan
2024-05-17 12:07 Andrew Ammerlaan
2024-05-17  6:25 Michał Górny
2024-05-15 18:02 Michał Górny
2024-05-15 14:20 Michał Górny
2024-05-14  9:19 Florian Schmaus
2024-05-14  8:20 Florian Schmaus
2024-05-13 21:53 Sam James
2024-05-13 13:22 Michael Orlitzky
2024-05-13 13:22 Michael Orlitzky
2024-05-13 13:22 Michael Orlitzky
2024-05-13 13:22 Michael Orlitzky
2024-05-13  8:35 Florian Schmaus
2024-05-13  7:07 Miroslav Šulc
2024-05-12  4:51 Sam James
2024-05-11 13:39 Michał Górny
2024-05-11  6:44 Joonas Niilola
2024-05-11  6:21 Hans de Graaff
2024-05-11  1:58 Sam James
2024-05-11  0:55 Sam James
2024-05-10 17:28 Sam James
2024-05-10 17:28 Sam James
2024-05-10 17:28 Sam James
2024-05-10 17:28 Sam James
2024-05-10 17:28 Sam James
2024-05-09 19:54 Conrad Kostecki
2024-05-09 19:54 Conrad Kostecki
2024-05-08  8:06 Ulrich Müller
2024-05-07  7:57 Andreas K. Hüttel
2024-05-06 17:28 Ulrich Müller
2024-05-06 17:28 Ulrich Müller
2024-05-06 17:11 Ionen Wolkens
2024-05-06  4:39 Sam James
2024-05-04 19:57 Michał Górny
2024-05-04 19:57 Michał Górny
2024-05-03 11:43 Sam James
2024-05-03 11:43 Sam James
2024-05-03 11:43 Sam James
2024-05-03  2:48 Sam James
2024-05-03  2:48 Sam James
2024-05-02 17:44 Florian Schmaus
2024-05-02  0:24 Sam James
2024-05-01  3:02 Sam James
2024-05-01  0:27 Sam James
2024-05-01  0:27 Sam James
2024-04-30 19:25 Alfredo Tupone
2024-04-30 19:19 Alfredo Tupone
2024-04-30 18:34 Michał Górny
2024-04-30 18:34 Michał Górny
2024-04-30  5:58 Sam James
2024-04-29 17:31 Florian Schmaus
2024-04-28 15:54 Michał Górny
2024-04-28  9:47 Hans de Graaff
2024-04-27 10:42 Michał Górny
2024-04-25 20:43 Andreas Sturmlechner
2024-04-25 20:43 Andreas Sturmlechner
2024-04-23 21:43 Sam James
2024-04-22  3:14 Sam James
2024-04-20 14:20 Ionen Wolkens
2024-04-20 14:20 Ionen Wolkens
2024-04-20  9:41 Michał Górny
2024-04-20  5:40 Michał Górny
2024-04-19 23:11 Mike Gilbert
2024-04-19 18:46 Michał Górny
2024-04-19 18:46 Michał Górny
2024-04-17 23:34 Sam James
2024-04-16  1:40 Sam James
2024-04-16  1:40 Sam James
2024-04-16  1:40 Sam James
2024-04-13 20:03 Miroslav Šulc
2024-04-13 18:41 Sam James
2024-04-13 18:32 Ulrich Müller
2024-04-11  7:48 Miroslav Šulc
2024-04-10 17:56 Ulrich Müller
2024-04-10 11:10 Michał Górny
2024-04-10  8:11 Miroslav Šulc
2024-04-09 20:17 Ulrich Müller
2024-04-08  7:15 Miroslav Šulc
2024-04-06 13:44 Michał Górny
2024-04-06  9:13 Michał Górny
2024-04-05 16:06 Florian Schmaus
2024-04-05  9:45 Hans de Graaff
2024-04-04 17:33 Ulrich Müller
2024-04-04 17:33 Ulrich Müller
2024-04-04  8:18 Florian Schmaus
2024-04-04  1:07 Sam James
2024-04-04  1:07 Sam James
2024-04-03 17:38 Florian Schmaus
2024-04-03 17:38 Florian Schmaus
2024-04-01  9:40 Michał Górny
2024-04-01  9:40 Michał Górny
2024-04-01  9:40 Michał Górny
2024-04-01  9:40 Michał Górny
2024-04-01  9:40 Michał Górny
2024-04-01  9:40 Michał Górny
2024-04-01  9:40 Michał Górny
2024-04-01  9:40 Michał Górny
2024-04-01  9:40 Michał Górny
2024-03-30 10:27 Michał Górny
2024-03-29 18:47 Sam James
2024-03-24 17:47 Sam James
2024-03-24 14:05 Sam James
2024-03-24  9:32 Sam James
2024-03-24  9:09 Sam James
2024-03-23 20:19 Sam James
2024-03-23 19:01 Sam James
2024-03-23 17:04 Sam James
2024-03-23 17:03 Michał Górny
2024-03-23 16:05 Sam James
2024-03-23 15:43 Sam James
2024-03-23 15:43 Sam James
2024-03-23 15:42 Sam James
2024-03-23 15:42 Sam James
2024-03-23 15:42 Sam James
2024-03-23 15:42 Sam James
2024-03-23 14:52 Sam James
2024-03-23 14:49 Sam James
2024-03-23 14:49 Sam James
2024-03-23 14:35 Arthur Zamarin
2024-03-23 10:25 Michał Górny
2024-03-23  8:28 Arthur Zamarin
2024-03-23  8:28 Arthur Zamarin
2024-03-19 14:12 Florian Schmaus
2024-03-18 13:02 Sam James
2024-03-17  9:18 Andreas K. Hüttel
2024-03-16 16:25 Michał Górny
2024-03-16  4:44 Sam James
2024-03-16  4:44 Sam James
2024-03-15 20:45 Sam James
2024-03-12  5:13 Michał Górny
2024-03-12  0:38 Mike Gilbert
2024-03-12  0:34 Mike Gilbert
2024-03-11 23:05 Andreas K. Hüttel
2024-03-11 19:20 Sam James
2024-03-10 21:10 Miroslav Šulc
2024-03-10 21:10 Miroslav Šulc
2024-03-09 15:52 Michał Górny
2024-03-08  5:40 Michał Górny
2024-03-08  5:40 Michał Górny
2024-03-08  5:40 Michał Górny
2024-03-08  5:40 Michał Górny
2024-03-08  5:40 Michał Górny
2024-03-08  5:40 Michał Górny
2024-03-08  5:40 Michał Górny
2024-03-07 18:04 Sam James
2024-03-06 17:03 Michał Górny
2024-03-02 13:24 Michał Górny
2024-03-01 20:50 Sam James
2024-03-01 19:25 Sam James
2024-03-01 19:25 Sam James
2024-03-01 19:25 Sam James
2024-02-28 20:40 Michał Górny
2024-02-28 13:56 Andreas Sturmlechner
2024-02-28 13:56 Andreas Sturmlechner
2024-02-27 23:54 Sam James
2024-02-27 23:54 Sam James
2024-02-24 14:54 Michał Górny
2024-02-24 12:57 Jakov Smolić
2024-02-23  7:46 Sam James
2024-02-22  4:23 Michał Górny
2024-02-19  5:08 Sam James
2024-02-19  5:06 Sam James
2024-02-18 20:22 Michał Górny
2024-02-18 13:23 Michał Górny
2024-02-18 13:23 Michał Górny
2024-02-18 13:23 Michał Górny
2024-02-18 13:23 Michał Górny
2024-02-12 16:25 Sam James
2024-02-11 12:11 Andrew Ammerlaan
2024-02-11 12:11 Andrew Ammerlaan
2024-02-11 12:11 Andrew Ammerlaan
2024-02-10 17:27 Michał Górny
2024-02-10 16:24 Maciej Barć
2024-02-10 16:24 Maciej Barć
2024-02-10 16:24 Maciej Barć
2024-02-10 16:24 Maciej Barć
2024-02-10 16:24 Maciej Barć
2024-02-10 16:24 Maciej Barć
2024-02-10 16:24 Maciej Barć
2024-02-07 15:10 Andreas Sturmlechner
2024-02-06  3:07 Michał Górny
2024-02-06  3:07 Michał Górny
2024-02-05  0:20 Sam James
2024-02-03 14:07 Sam James
2024-02-02  6:28 Andrew Ammerlaan
2024-02-01 23:52 Sam James
2024-02-01 23:52 Sam James
2024-02-01 19:22 Sam James
2024-01-31 13:59 Michał Górny
2024-01-30 21:21 Michał Górny
2024-01-30 11:28 Florian Schmaus
2024-01-30 11:09 Andrew Ammerlaan
2024-01-27 20:33 Michał Górny
2024-01-27 17:18 Sam James
2024-01-24 15:57 Michael Orlitzky
2024-01-24 14:35 Andrew Ammerlaan
2024-01-24 11:44 Michał Górny
2024-01-23  6:00 Sam James
2024-01-23  6:00 Sam James
2024-01-23  5:32 Sam James
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-22 11:29 Michael Orlitzky
2024-01-20 21:22 Conrad Kostecki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1731130288.542e055db9a8c762714d3870816f8a5c6e52f853.kangie@gentoo \
    --to=kangie@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox