From 11e4f1ceed82fc5b6cf938e401395c32e692ae6f Mon Sep 17 00:00:00 2001 From: Jan Palus Date: Wed, 14 Apr 2021 17:59:58 +0200 Subject: [PATCH] new --- create-crates.sh | 71 ++++++++++++++++++++++++++++++++++++++++++++ python3-adblock.spec | 70 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100755 create-crates.sh create mode 100644 python3-adblock.spec diff --git a/create-crates.sh b/create-crates.sh new file mode 100755 index 0000000..4591e85 --- /dev/null +++ b/create-crates.sh @@ -0,0 +1,71 @@ +#!/bin/sh + +force_cargo_package=adblock + +for cmd in bsdtar rpm-specdump cargo perl; do + if ! command -v $cmd > /dev/null 2> /dev/null; then + not_installed="$not_installed$cmd " + fi +done + +if [ -n "$not_installed" ]; then + echo "ERROR: required commands not found: $not_installed" >&2 + exit 1 +fi + +pkg_dir=$(readlink -f $(dirname "$0")) +pkg_name=$(basename "$pkg_dir") + +if [ ! -f "$pkg_dir/$pkg_name.spec" ]; then + echo "ERROR: unable to determine package name" >&2 + exit 1 +fi + +spec_dump=$(rpm-specdump "$pkg_dir/$pkg_name.spec") +pkg_version=$(echo "$spec_dump" | grep PACKAGE_VERSION | cut -f3 -d' ') +pkg_src=$(basename $(echo "$spec_dump" | grep SOURCEURL0 | cut -f3- -d' ')) +crates_file="$pkg_name-crates-$pkg_version.tar.xz" +cargo_package=${force_cargo_package:-$pkg_name} + +if [ -e "$pkg_dir/$crates_file" ]; then + echo "ERROR: crates file $crates_file already exists" >&2 + exit 1 +fi + +if [ ! -f "$pkg_dir/$pkg_src" ]; then + echo "ERROR: source file $pkg_src not found" >&2 + exit 1 +fi + +tmpdir=$(mktemp -d) + +rm_tmpdir() { + if [ -n "$tmpdir" -a -d "$tmpdir" ]; then + rm -rf "$tmpdir" + fi +} + +trap rm_tmpdir EXIT INT HUP + +cd "$tmpdir" +bsdtar xf "$pkg_dir/$pkg_src" +src_dir=$(ls) +if [ $(echo "$src_dir" | wc -l) -ne 1 ]; then + echo "ERROR: unexpected source structure:\n$src_dir" >&2 + exit 1 +fi + +cd "$src_dir" +cargo vendor +if [ $? -ne 0 ]; then + echo "ERROR: cargo vendor failed" >&2 + exit 1 +fi + +# replace cargo package version with @@VERSION@@ +perl -pi -e 'BEGIN { undef $/;} s/(\[\[package\]\]\nname\s*=\s*"'"$cargo_package"'"\nversion\s*=\s*")[^"]+/$1\@\@VERSION\@\@/m' Cargo.lock + +cd .. +tar cJf "$pkg_dir/$crates_file" "$src_dir"/{Cargo.lock,vendor} + +# vim: expandtab shiftwidth=2 tabstop=2 diff --git a/python3-adblock.spec b/python3-adblock.spec new file mode 100644 index 0000000..91148db --- /dev/null +++ b/python3-adblock.spec @@ -0,0 +1,70 @@ +%define crates_ver 0.4.4 +%define module adblock + +Summary: Brave's adblock library in Python +Name: python3-%{module} +Version: 0.4.4 +Release: 1 +License: MIT or Apache v2.0 +Group: Libraries/Python +Source0: https://files.pythonhosted.org/packages/source/a/adblock/%{module}-%{version}.tar.gz +# Source0-md5: 6958de33e5034c1241a69c91989f0e86 +# ./create-crates.sh +Source1: %{name}-crates-%{crates_ver}.tar.xz +# Source1-md5: 932c699a7fa6016098e56026ae389322 +URL: https://github.com/ArniDagur/python-adblock +BuildRequires: cargo +BuildRequires: maturin >= 0.10 +BuildRequires: python3-devel >= 1:3.6 +BuildRequires: rpm-pythonprov +BuildRequires: rpmbuild(macros) >= 2.004 +BuildRequires: rust >= 1.45 +ExclusiveArch: %{rust_arches} +BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) + +%description +Python wrapper for Brave's adblocking library, which is written in +Rust. + +%prep +%setup -q -n %{module}-%{version} -a1 + +%{__mv} %{module}-%{crates_ver}/* . +sed -i -e 's/@@VERSION@@/%{version}/' Cargo.lock + +# use our offline registry +export CARGO_HOME="$(pwd)/.cargo" + +mkdir -p "$CARGO_HOME" +cat >.cargo/config <