forked from pool/python-cramjam
- Update to 2.11.0
* Initial impl zero-copy Buffer by @milesgranger in #209 * Buffer: Fix extended and negative int reads by @milesgranger in #210 * Initial Type/JavaScript support by @milesgranger in #217 * Fix lz4.decompress_block_into w/o prepended size by @milesgranger in #219 * Add typing stub files and proper docs site by @milesgranger in #220 * Ban mutating immutable buffers on the free-threaded build by @ngoldbaum in #214 * zstd: store size by @milesgranger in #225 * Add Python 3.14/t - Drop Python 3.8 by @milesgranger in #226 - Release 2.10.0 * Remove experimental codecs in default builds by @milesgranger in #197 * Bump libcramjam -> 0.7.0 by @milesgranger in #198 * Update PyO3 to 0.24 by @musicinmybrain in #207 - Disable test_variants_raise_exception[deflate] * gh#milesgranger/cramjam#211 - Disable blosc2 because it fails to compile right now and upstream degraded it from the default feature set to experimental * gh#milesgranger/cramjam#197 - Add debuginfo OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-cramjam?expand=0&rev=15
This commit is contained in:
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
||||
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.osc
|
||||
4
_multibuild
Normal file
4
_multibuild
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0"?>
|
||||
<multibuild>
|
||||
<package>test</package>
|
||||
</multibuild>
|
||||
25
_service
Normal file
25
_service
Normal file
@@ -0,0 +1,25 @@
|
||||
<services>
|
||||
<service mode="manual" name="obs_scm">
|
||||
<param name="url">https://github.com/milesgranger/cramjam.git</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<!-- can change back to master when there are no .post tags on top of the branch -->
|
||||
<param name="revision">v2.11.0</param>
|
||||
<param name="versionrewrite-pattern">v(.*)</param>
|
||||
<param name="versionrewrite-replacement">\1</param>
|
||||
</service>
|
||||
<service mode="manual" name="tar" />
|
||||
<service mode="manual" name="recompress">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">xz</param>
|
||||
</service>
|
||||
<service mode="manual" name="set_version"/>
|
||||
<service name="cargo_vendor" mode="manual">
|
||||
<param name="srcdir">cramjam</param>
|
||||
<param name="compression">xz</param>
|
||||
<param name="update">true</param>
|
||||
</service>
|
||||
<service name="cargo_audit" mode="manual">
|
||||
<param name="srcdir">cramjam</param>
|
||||
</service>
|
||||
</services>
|
||||
3
cramjam-2.11.0.tar.xz
Normal file
3
cramjam-2.11.0.tar.xz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c420c6c5d6d27df9c783869c8bf55971a03ecaf7684beea507a5ab15d1b8f0ce
|
||||
size 56189840
|
||||
3
cramjam-2.9.1.tar.xz
Normal file
3
cramjam-2.9.1.tar.xz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b52175262a350c7aa536bdd8e1b31574de6c6ce475e83cb4e0a56a438349a8bd
|
||||
size 56142388
|
||||
32
cramjam-issue193-test_variants.patch
Normal file
32
cramjam-issue193-test_variants.patch
Normal file
@@ -0,0 +1,32 @@
|
||||
Index: cramjam-2.11.0/tests/test_variants.py
|
||||
===================================================================
|
||||
--- cramjam-2.11.0.orig/tests/test_variants.py
|
||||
+++ cramjam-2.11.0/tests/test_variants.py
|
||||
@@ -104,7 +104,7 @@ def test_variants_raise_exception(varian
|
||||
"output_type", (bytes, bytearray, "numpy", cramjam.Buffer, cramjam.File, memoryview)
|
||||
)
|
||||
@pytest.mark.parametrize("variant_str", VARIANTS)
|
||||
-@given(raw_data=st.binary())
|
||||
+@given(raw_data=st.binary(min_size=2))
|
||||
def test_variants_compress_into(
|
||||
variant_str,
|
||||
input_type,
|
||||
@@ -181,7 +181,7 @@ def test_variants_compress_into(
|
||||
"output_type", (bytes, bytearray, "numpy", cramjam.Buffer, cramjam.File, memoryview)
|
||||
)
|
||||
@pytest.mark.parametrize("variant_str", VARIANTS)
|
||||
-@given(raw_data=st.binary())
|
||||
+@given(raw_data=st.binary(min_size=2))
|
||||
def test_variants_decompress_into(
|
||||
variant_str,
|
||||
input_type,
|
||||
@@ -191,9 +191,6 @@ def test_variants_decompress_into(
|
||||
is_pypy,
|
||||
is_free_threaded,
|
||||
):
|
||||
- if variant_str == "izlib" and output_type == "memoryview":
|
||||
- pytest.skip("See issue https://github.com/milesgranger/cramjam/issues/193")
|
||||
-
|
||||
variant = getattr(cramjam, variant_str)
|
||||
|
||||
compressed = variant.compress(raw_data)
|
||||
46
cramjam-opensuse-config.patch
Normal file
46
cramjam-opensuse-config.patch
Normal file
@@ -0,0 +1,46 @@
|
||||
Index: cramjam-2.11.0/pyproject.toml
|
||||
===================================================================
|
||||
--- cramjam-2.11.0.orig/pyproject.toml
|
||||
+++ cramjam-2.11.0/pyproject.toml
|
||||
@@ -15,7 +15,26 @@ requires = ["maturin>=0.14"]
|
||||
build-backend = "maturin"
|
||||
|
||||
[tool.maturin]
|
||||
-strip = true
|
||||
+strip = false
|
||||
+no-default-features = true
|
||||
+features = [
|
||||
+ "extension-module",
|
||||
+ "snappy",
|
||||
+ "lz4",
|
||||
+ "bzip2",
|
||||
+ "brotli",
|
||||
+ "zstd",
|
||||
+ "xz-shared",
|
||||
+ "igzip-shared",
|
||||
+ "ideflate-shared",
|
||||
+ "izlib-shared",
|
||||
+ "use-system-isal-shared",
|
||||
+ "gzip-shared",
|
||||
+ "zlib-shared",
|
||||
+ "deflate-shared",
|
||||
+# "blosc2-shared",
|
||||
+# "use-system-blosc2-shared"
|
||||
+]
|
||||
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
Index: cramjam-2.11.0/Cargo.toml
|
||||
===================================================================
|
||||
--- cramjam-2.11.0.orig/Cargo.toml
|
||||
+++ cramjam-2.11.0/Cargo.toml
|
||||
@@ -79,7 +79,8 @@ libcramjam = { version = "^0.8", default
|
||||
pyo3-build-config = "^0.25"
|
||||
|
||||
[profile.release]
|
||||
-strip = true
|
||||
+strip = "none"
|
||||
+debug = true
|
||||
lto = "fat"
|
||||
codegen-units = 1
|
||||
opt-level = 3
|
||||
4
cramjam.obsinfo
Normal file
4
cramjam.obsinfo
Normal file
@@ -0,0 +1,4 @@
|
||||
name: cramjam
|
||||
version: 2.11.0
|
||||
mtime: 1753648793
|
||||
commit: 1f411f3a05e5acf96ca8a632087916d5bf8b3500
|
||||
179
python-cramjam.changes
Normal file
179
python-cramjam.changes
Normal file
@@ -0,0 +1,179 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 2 16:11:13 UTC 2026 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- Update to 2.11.0
|
||||
* Initial impl zero-copy Buffer by @milesgranger in #209
|
||||
* Buffer: Fix extended and negative int reads by @milesgranger in
|
||||
#210
|
||||
* Initial Type/JavaScript support by @milesgranger in #217
|
||||
* Fix lz4.decompress_block_into w/o prepended size by
|
||||
@milesgranger in #219
|
||||
* Add typing stub files and proper docs site by @milesgranger in
|
||||
#220
|
||||
* Ban mutating immutable buffers on the free-threaded build by
|
||||
@ngoldbaum in #214
|
||||
* zstd: store size by @milesgranger in #225
|
||||
* Add Python 3.14/t - Drop Python 3.8 by @milesgranger in #226
|
||||
- Release 2.10.0
|
||||
* Remove experimental codecs in default builds by @milesgranger
|
||||
in #197
|
||||
* Bump libcramjam -> 0.7.0 by @milesgranger in #198
|
||||
* Update PyO3 to 0.24 by @musicinmybrain in #207
|
||||
- Disable test_variants_raise_exception[deflate]
|
||||
* gh#milesgranger/cramjam#211
|
||||
- Disable blosc2 because it fails to compile right now and upstream
|
||||
degraded it from the default feature set to experimental
|
||||
* gh#milesgranger/cramjam#197
|
||||
- Add debuginfo
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 18 11:40:10 UTC 2024 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- Update to 2.9.1
|
||||
* Add Cargo.lock and bump patch version by @milesgranger in #192
|
||||
- Release 2.9.0
|
||||
* Bump libcramjam/isal-rs by @milesgranger in #183
|
||||
* Add cramjam.zlib, cramjam.experimental.izlib, and
|
||||
cramjam.experimental.ideflate by @milesgranger in #184
|
||||
- Release 2.8.4
|
||||
* Add cramjam.experimental.blosc2
|
||||
* Add cramjam.experimental.igzip (on 64bit targets)
|
||||
* Add wasm32 emscripten build and test for pyodide
|
||||
- Release 2.8.3
|
||||
* Move LZMA / XZ out of experimental to xz submodule by
|
||||
@milesgranger in #133
|
||||
* Remove unused Cargo.lock files by @milesgranger in #149
|
||||
* Fix tests that assume C char is signed by @musicinmybrain in
|
||||
#150
|
||||
- Release 2.8.2
|
||||
* Remove zstd-safe dep in libcramjam by @milesgranger in #132
|
||||
* Remove relative libcramjam dep for python builds by
|
||||
@milesgranger in #131
|
||||
* Impl eq for python Buffer by @milesgranger in #135
|
||||
* Fix missing LICENSE file in cramjam-cli by @musicinmybrain in
|
||||
#137
|
||||
* Adjust the binary name in the cramjam-cli example by
|
||||
@musicinmybrain in #138
|
||||
* Cargo.toml: set workspace.resolver to 2 by @veprbl in #140
|
||||
- Add cramjam-opensuse-config.patch: Use some system libraries and
|
||||
avoid static linking
|
||||
- Add cramjam-issue193-test_variants.patch
|
||||
gh#milesgranger/cramjam#193
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 14 15:11:07 UTC 2024 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- use modern python on sle15
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 19 09:16:39 UTC 2024 - Atri Bhattacharya <badshah400@gmail.com>
|
||||
|
||||
- Update to version 2.8.1:
|
||||
* Experimental support for LZMA / XZ codec
|
||||
(gh#milesgranger/cramjam#127).
|
||||
* In libcramjam, bump zstd to 0.13.0 (to go with zstd-safe
|
||||
7.0.0) (gh#milesgranger/cramjam#128).
|
||||
* Bump rustix from 0.37.17 to 0.38.28 in /cramjam-python
|
||||
(gh#milesgranger/cramjam#122).
|
||||
- Changes from version 2.8.0:
|
||||
* Bump zstd from 1.5.0.2 to 1.5.4.0 in /cramjam-python
|
||||
(gh#milesgranger/cramjam#108).
|
||||
* Simpler isinstance() calls (gh#milesgranger/cramjam#111).
|
||||
* Support Python 3.12 (gh#milesgranger/cramjam#113).
|
||||
* Bump rustix from 0.37.18 to 0.37.25
|
||||
(gh#milesgranger/cramjam#114).
|
||||
* Fix docstring for lz4.compress_block_bound
|
||||
(gh#milesgranger/cramjam#117).
|
||||
* Use pyo3 0.20 (gh#milesgranger/cramjam#118).
|
||||
* Make libcramjam a better libcramjam w/ C API
|
||||
(gh#milesgranger/cramjam#119).
|
||||
* Fix missing license file in the Python sdist and bdist/wheel
|
||||
(gh#milesgranger/cramjam#124).
|
||||
* Support independent mode in LZ4 compressor
|
||||
(gh#milesgranger/cramjam#125).
|
||||
- Changes from version 2.7.0:
|
||||
* Bump bzip2 from 0.4.3 to 0.4.4 (gh#milesgranger/cramjam#94).
|
||||
* Refactoring, release GIL, Decompressor, remove mimalloc, etc.
|
||||
(gh#milesgranger/cramjam#96).
|
||||
* Accept anything with Buffer Protocol, remove numpy
|
||||
(gh#milesgranger/cramjam#100).
|
||||
* Refactor into workspaces: libcramjam, cramjam-python, and
|
||||
cramjam-cli (gh#milesgranger/cramjam#101).
|
||||
* Basic CLI improvements (gh#milesgranger/cramjam#103).
|
||||
* Fix cramjam-cli decompress bug (gh#milesgranger/cramjam#104).
|
||||
* Support all buffer types where c-contiguous
|
||||
(gh#milesgranger/cramjam#105).
|
||||
* Fixes for maturin v1 --universal2 removal
|
||||
(gh#milesgranger/cramjam#109).
|
||||
- pyrus-cramjam is now simply cramjam; adapt to name change in
|
||||
spec and _service file.
|
||||
- Drop cargo_config: Updated rust packaging services include it in
|
||||
vendor.tar.xz.
|
||||
- Split out test into multibuild flavor since it takes a long time
|
||||
to run (about an hour).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 13 11:04:41 UTC 2023 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- Update to v2.6.2
|
||||
* Bump pyo3, numpy and expand pyproject.toml by @milesgranger in
|
||||
#90
|
||||
- Updated crate fixes bzip2 < 0.4.4 vulnerability
|
||||
* boo#1207039, CVE-2023-22895
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Oct 29 09:30:13 UTC 2022 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- Update to v2.6.1
|
||||
* Switch brotli2 -> brotli crate by @milesgranger in #87
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 28 16:05:38 UTC 2022 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- Update to v2.6.0
|
||||
* Update to pyo3 0.16 by @messense in #78
|
||||
* Update dependencies and simplify CI by @messense in #79
|
||||
* Support Lz4 de/compress_block_into functions by @milesgranger
|
||||
in #80
|
||||
* Upgrade maturin to 0.13.0 by @messense in #81
|
||||
* Integration tests, benchmark updates, subclass Buffer by
|
||||
@milesgranger in #83
|
||||
* Bump lz4-sys from 1.9.3 to 1.9.4 by @dependabot in #84
|
||||
* Add Python 3.11 by @milesgranger in #85
|
||||
- Release v2.5.0
|
||||
* Incorporate property-based testing by @milesgranger in #69
|
||||
* Support bzip2 by @milesgranger in #70
|
||||
- Release v2.4.0
|
||||
* This release comes with streaming compression support for all
|
||||
variants. And updates Gzip compression variant to support
|
||||
properly decoding input which has multiple streams, as is the
|
||||
default with std gzip lib. This release does not alter any of
|
||||
the existing APIs.
|
||||
* Support compressed gzip multistream (#64) b9cfa13
|
||||
* Support Compressor for each variant (#64) 8ecb0fa
|
||||
* Support .flush for Compressor (#68) 4b92e42
|
||||
* Add official OSI name in the license metadata (#66) 446a671
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 28 01:17:05 UTC 2021 - William Brown <william.brown@suse.com>
|
||||
|
||||
- Replace rust-packaging with cargo-packaging
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 19 19:37:30 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- Update to 2.3.2
|
||||
* no core library code changes
|
||||
- Update filelist due to updated setuptools: not a single .so but
|
||||
a full module directory now.
|
||||
- run cargo crate service: update vendored rust crates
|
||||
- re-activate cargo audit service
|
||||
* gh#openSUSE/obs-service-cargo_audit#1 is fixed
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 18 14:12:27 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- initial specfile for 2.3.1
|
||||
- new requirement of python-fastparquet 0.6
|
||||
- use rust cargo crate vendoring following the how-to from
|
||||
https://fy.blackhats.net.au/blog/html/2021/02/15/getting_started_packaging_a_rust_cli_tool_in_suse_obs.html
|
||||
102
python-cramjam.spec
Normal file
102
python-cramjam.spec
Normal file
@@ -0,0 +1,102 @@
|
||||
#
|
||||
# spec file for package python-cramjam
|
||||
#
|
||||
# Copyright (c) 2026 SUSE LLC and contributors
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%global flavor @BUILD_FLAVOR@%{nil}
|
||||
%if "%{flavor}" == "test"
|
||||
%bcond_without test
|
||||
%define psuffix -test
|
||||
%else
|
||||
%bcond_with test
|
||||
%define psuffix %{nil}
|
||||
%endif
|
||||
|
||||
# Adjust the version in _service and use `rm -rf cramjam; osc service runall` in order to update
|
||||
%define modname cramjam
|
||||
%{?sle15_python_module_pythons}
|
||||
Name: python-cramjam%{psuffix}
|
||||
Version: 2.11.0
|
||||
Release: 0
|
||||
Summary: Thin Python bindings to de/compression algorithms in Rust
|
||||
License: MIT
|
||||
URL: https://github.com/milesgranger/cramjam
|
||||
Source: %{modname}-%{version}.tar.xz
|
||||
Source1: vendor.tar.xz
|
||||
# PATCH-FEATURE-OPENSUSE cramjam-opensuse-config.patch code@bnavigator.de -- Use system libraries and avoid static linking
|
||||
Patch0: cramjam-opensuse-config.patch
|
||||
# PATCH-FIX-UPSTREAM cramjam-issue193-test_variants.patch gh#milesgranger/cramjam#193
|
||||
Patch1: cramjam-issue193-test_variants.patch
|
||||
BuildRequires: %{python_module base >= 3.8}
|
||||
BuildRequires: %{python_module maturin >= 0.13}
|
||||
BuildRequires: %{python_module pip}
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: cargo-packaging
|
||||
BuildRequires: cmake
|
||||
BuildRequires: libtool
|
||||
BuildRequires: nasm
|
||||
BuildRequires: python-rpm-macros
|
||||
# blosc2 disabled: see Patch0 and gh#milesgranger/cramjam#197
|
||||
#BuildRequires: pkgconfig(blosc2)
|
||||
BuildRequires: pkgconfig(libisal)
|
||||
BuildRequires: pkgconfig(libzstd)
|
||||
# SECTION test dependencies
|
||||
%if %{with test}
|
||||
BuildRequires: %{python_module %{modname} = %{version}}
|
||||
BuildRequires: %{python_module hypothesis}
|
||||
BuildRequires: %{python_module numpy}
|
||||
BuildRequires: %{python_module pytest-xdist}
|
||||
BuildRequires: %{python_module pytest}
|
||||
%endif
|
||||
# /SECTION
|
||||
BuildRequires: fdupes
|
||||
%python_subpackages
|
||||
|
||||
%description
|
||||
Extremely thin Python bindings to de/compression algorithms in Rust.
|
||||
Allows for using algorithms such as Snappy, without any system dependencies.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{modname}-%{version} -a1
|
||||
|
||||
%build
|
||||
%if %{without test}
|
||||
export ZSTD_SYS_USE_PKG_CONFIG=1
|
||||
%pyproject_wheel
|
||||
%endif
|
||||
|
||||
%install
|
||||
%if %{without test}
|
||||
%pyproject_install
|
||||
%python_expand %fdupes %{buildroot}%{$python_sitearch}
|
||||
%endif
|
||||
|
||||
%check
|
||||
%if %{with test}
|
||||
# gh#milesgranger/cramjam#211
|
||||
donttest="(test_variants_raise_exception and deflate)"
|
||||
%pytest_arch -n auto --ignore benchmarks -k "not ($donttest)"
|
||||
%endif
|
||||
|
||||
%if %{without test}
|
||||
%files %{python_files}
|
||||
%license LICENSE
|
||||
%{python_sitearch}/%{modname}
|
||||
%{python_sitearch}/%{modname}-%{version}.dist-info
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
3
vendor.tar.xz
Normal file
3
vendor.tar.xz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:22880b5c4cb447b9e3068e4618840c904c7a70d587153114bd048cec2fcd243b
|
||||
size 12499420
|
||||
Reference in New Issue
Block a user