]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | ||
3 | force_cargo_package="git-delta" | |
4 | ||
5 | for cmd in bsdtar rpm-specdump cargo perl; do | |
6 | if ! command -v $cmd > /dev/null 2> /dev/null; then | |
7 | not_installed="$not_installed$cmd " | |
8 | fi | |
9 | done | |
10 | ||
11 | if [ -n "$not_installed" ]; then | |
12 | echo "ERROR: required commands not found: $not_installed" >&2 | |
13 | exit 1 | |
14 | fi | |
15 | ||
16 | pkg_dir=$(readlink -f $(dirname "$0")) | |
17 | pkg_name=$(basename "$pkg_dir") | |
18 | ||
19 | if [ ! -f "$pkg_dir/$pkg_name.spec" ]; then | |
20 | echo "ERROR: unable to determine package name" >&2 | |
21 | exit 1 | |
22 | fi | |
23 | ||
24 | spec_dump=$(rpm-specdump "$pkg_dir/$pkg_name.spec") | |
25 | pkg_version=$(echo "$spec_dump" | grep PACKAGE_VERSION | cut -f3 -d' ') | |
26 | pkg_src=$(basename $(echo "$spec_dump" | grep SOURCEURL0 | cut -f3- -d' ')) | |
27 | crates_file="$pkg_name-crates-$pkg_version.tar.xz" | |
28 | cargo_package=${force_cargo_package:-$pkg_name} | |
29 | ||
30 | if [ -e "$pkg_dir/$crates_file" ]; then | |
31 | echo "ERROR: crates file $crates_file already exists" >&2 | |
32 | exit 1 | |
33 | fi | |
34 | ||
35 | if [ ! -f "$pkg_dir/$pkg_src" ]; then | |
36 | echo "ERROR: source file $pkg_src not found" >&2 | |
37 | exit 1 | |
38 | fi | |
39 | ||
40 | tmpdir=$(mktemp -d) | |
41 | ||
42 | rm_tmpdir() { | |
43 | if [ -n "$tmpdir" -a -d "$tmpdir" ]; then | |
44 | rm -rf "$tmpdir" | |
45 | fi | |
46 | } | |
47 | ||
48 | trap rm_tmpdir EXIT INT HUP | |
49 | ||
50 | cd "$tmpdir" | |
51 | bsdtar xf "$pkg_dir/$pkg_src" | |
52 | src_dir=$(ls) | |
53 | if [ $(echo "$src_dir" | wc -l) -ne 1 ]; then | |
54 | echo "ERROR: unexpected source structure:\n$src_dir" >&2 | |
55 | exit 1 | |
56 | fi | |
57 | ||
58 | cd "$src_dir" | |
59 | cargo vendor | |
60 | if [ $? -ne 0 ]; then | |
61 | echo "ERROR: cargo vendor failed" >&2 | |
62 | exit 1 | |
63 | fi | |
64 | ||
65 | # replace cargo package version with @@VERSION@@ | |
66 | perl -pi -e 'BEGIN { undef $/;} s/(\[\[package\]\]\nname\s*=\s*"'"$cargo_package"'"\nversion\s*=\s*")[^"]+/$1\@\@VERSION\@\@/m' Cargo.lock | |
67 | ||
68 | cd .. | |
69 | tar cJf "$pkg_dir/$crates_file" "$src_dir"/{Cargo.lock,vendor} | |
70 | ||
71 | # vim: expandtab shiftwidth=2 tabstop=2 |