|
| 1 | +#!/bin/bash |
| 2 | +original_name="stage" |
| 3 | +name="stage-git-gui" |
| 4 | +version="0.1.17" |
| 5 | +release=2 |
| 6 | +full_id="io.github.aganzha.Stage" |
| 7 | +spec_name="stage-git-gui.spec" |
| 8 | +rm -rf ~/rpmbuild/ |
| 9 | +rpmdev-setuptree |
| 10 | + |
| 11 | +# rename binary |
| 12 | +sed -i "s/name = \"$original_name\"/name = \"$name\"/" Cargo.toml |
| 13 | +sed -i "s|Exec=$original_name|Exec=$name|g" $full_id.desktop |
| 14 | + |
| 15 | +# create archive |
| 16 | +tar_name="$name"-"$version".x86_64.tar.gz |
| 17 | + |
| 18 | +# base spec |
| 19 | +tar czvf ~/rpmbuild/SOURCES/$tar_name --exclude-vcs --exclude=target --exclude='*~' --exclude='#*#' --transform="s|^|${name}-${version}/|" . |
| 20 | +rust2rpm --path $(pwd)/Cargo.toml -t fedora $name@$version |
| 21 | + |
| 22 | +# release |
| 23 | +sed -i "s/^Release:.*$/Release: 2%{?dist}/" $spec_name |
| 24 | + |
| 25 | +# fixmes |
| 26 | +sed -i 's|URL: # FIXME|URL: https:://github.com/aganzha/stage|' $spec_name |
| 27 | +sed -i '/^Source: # FIXME/a %global out_dir .' $spec_name |
| 28 | +sed -i "s|Source: # FIXME|Source: $tar_name|" $spec_name |
| 29 | +sed -i "s|License: # FIXME|License: GPL-3.0-or-later|" $spec_name |
| 30 | + |
| 31 | +# xvfb for tests |
| 32 | +sed -i '/^BuildRequires: cargo-rpm-macros >= 26/a BuildRequires: xorg-x11-server-Xvfb' $spec_name |
| 33 | +sed -i 's/%cargo_test/xvfb-run bash -c '"'"'%cargo_test'"'"'/g' $spec_name |
| 34 | + |
| 35 | +# update desktop database |
| 36 | +sed -i '/^BuildRequires: cargo-rpm-macros >= 26/a Requires(post): desktop-file-utils' $spec_name |
| 37 | + |
| 38 | +# env on build |
| 39 | +sed -i '/^%build/a export OUT_DIR=%{out_dir}' $spec_name |
| 40 | +sed -i '/^%build/a glib-compile-resources $(pwd)/io.github.aganzha.Stage.gresource.xml --target $(pwd)/src/gresources.compiled' $spec_name |
| 41 | + |
| 42 | +# env on install |
| 43 | +sed -i '/^%install/a export OUT_DIR=%{out_dir}' $spec_name |
| 44 | + |
| 45 | +# env on check |
| 46 | +sed -i '/^%check/a export OUT_DIR=%{out_dir}' $spec_name |
| 47 | + |
| 48 | +# after cargo_install --------- upside down (last directives will be first in spec because of sed 'after') |
| 49 | +# icons |
| 50 | +sed -i "/^%cargo_install/a install -m 644 icons/$full_id.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/$full_id.svg" $spec_name |
| 51 | +sed -i "/^%cargo_install/a install -m 644 icons/512x512/$full_id.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/$full_id.png" $spec_name |
| 52 | +sed -i "/^%cargo_install/a install -m 644 icons/256x256/$full_id.png %{buildroot}%{_datadir}/icons/hicolor/256x256/apps/$full_id.png" $spec_name |
| 53 | +sed -i "/^%cargo_install/a install -m 644 icons/128x128/$full_id.png %{buildroot}%{_datadir}/icons/hicolor/128x128/apps/$full_id.png" $spec_name |
| 54 | +sed -i "/^%cargo_install/a install -m 644 icons/64x64/$full_id.png %{buildroot}%{_datadir}/icons/hicolor/64x64/apps/$full_id.png" $spec_name |
| 55 | +sed -i "/^%cargo_install/a install -m 644 icons/32x32/$full_id.png %{buildroot}%{_datadir}/icons/hicolor/32x32/apps/$full_id.png" $spec_name |
| 56 | +sed -i "/^%cargo_install/a install -m 644 icons/16x16/$full_id.png %{buildroot}%{_datadir}/icons/hicolor/16x16/apps/$full_id.png" $spec_name |
| 57 | +sed -i "/^%cargo_install/a install -m 644 icons/$full_id.svg %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/$full_id-symbolic.svg" $spec_name |
| 58 | +sed -i "/^%cargo_install/a install -m 644 icons/org.gnome.Logs-symbolic.svg %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Logs-symbolic.svg" $spec_name |
| 59 | + |
| 60 | +# meta |
| 61 | +sed -i "/^%cargo_install/a install -m 644 $full_id.desktop %{buildroot}%{_datadir}/applications/$full_id.desktop" $spec_name |
| 62 | +sed -i "/^%cargo_install/a install -m 644 $full_id.metainfo.xml %{buildroot}%{_datadir}/metainfo/$full_id.metainfo.xml" $spec_name |
| 63 | +sed -i "/^%cargo_install/a install -m 644 $full_id.gschema.xml %{buildroot}%{_datadir}/glib-2.0/schemas/$full_id.gschema.xml" $spec_name |
| 64 | + |
| 65 | +# icons |
| 66 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/icons/hicolor/scalable/apps' $spec_name |
| 67 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/icons/hicolor/512x512/apps' $spec_name |
| 68 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/icons/hicolor/256x256/apps' $spec_name |
| 69 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/icons/hicolor/128x128/apps' $spec_name |
| 70 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/icons/hicolor/64x64/apps' $spec_name |
| 71 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/icons/hicolor/32x32/apps' $spec_name |
| 72 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/icons/hicolor/16x16/apps' $spec_name |
| 73 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps' $spec_name |
| 74 | + |
| 75 | + |
| 76 | +# meta |
| 77 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/applications' $spec_name |
| 78 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/metainfo' $spec_name |
| 79 | +sed -i '/^%cargo_install/a mkdir -p %{buildroot}%{_datadir}/glib-2.0/schemas' $spec_name |
| 80 | + |
| 81 | +# declare files before changelog |
| 82 | +# icons |
| 83 | +sed -i "/^%changelog/i %{_datadir}/icons/hicolor/scalable/apps/$full_id.svg" $spec_name |
| 84 | +sed -i "/^%changelog/i %{_datadir}/icons/hicolor/512x512/apps/$full_id.png" $spec_name |
| 85 | +sed -i "/^%changelog/i %{_datadir}/icons/hicolor/256x256/apps/$full_id.png" $spec_name |
| 86 | +sed -i "/^%changelog/i %{_datadir}/icons/hicolor/128x128/apps/$full_id.png" $spec_name |
| 87 | +sed -i "/^%changelog/i %{_datadir}/icons/hicolor/64x64/apps/$full_id.png" $spec_name |
| 88 | +sed -i "/^%changelog/i %{_datadir}/icons/hicolor/32x32/apps/$full_id.png" $spec_name |
| 89 | +sed -i "/^%changelog/i %{_datadir}/icons/hicolor/16x16/apps/$full_id.png" $spec_name |
| 90 | +sed -i "/^%changelog/i %{_datadir}/icons/hicolor/symbolic/apps/$full_id-symbolic.svg" $spec_name |
| 91 | +sed -i "/^%changelog/i %{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Logs-symbolic.svg" $spec_name |
| 92 | + |
| 93 | +# meta |
| 94 | +sed -i "/^%changelog/i %{_datadir}/applications/$full_id.desktop" $spec_name |
| 95 | +sed -i "/^%changelog/i %{_datadir}/metainfo/$full_id.metainfo.xml" $spec_name |
| 96 | +sed -i "/^%changelog/i %{_datadir}/glib-2.0/schemas/$full_id.gschema.xml" $spec_name |
| 97 | + |
| 98 | +# adding post directive to compile schema, update caches etc |
| 99 | +sed -i '/^%changelog/i\ |
| 100 | +%post\ |
| 101 | +update-desktop-database &> /dev/null || :\ |
| 102 | +if [ -x %{_bindir}/gtk-update-icon-cache ]; then\ |
| 103 | + %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :\ |
| 104 | +fi\ |
| 105 | +%postun\ |
| 106 | +if [ "$1" = "0" ]; then\ |
| 107 | + /usr/bin/update-desktop-database -q /usr/share/applications &>/dev/null || :\ |
| 108 | +fi' $spec_name |
| 109 | + |
| 110 | +# building |
| 111 | +mv $spec_name ~/rpmbuild/SPECS/ |
| 112 | +git checkout io.github.aganzha.Stage.desktop |
| 113 | +git checkout Cargo.toml |
| 114 | +git checkout Cargo.lock |
| 115 | +rpmbuild -bs ~/rpmbuild/SPECS/$spec_name |
| 116 | +# toolbox run -c f42-rpmbuild rpmbuild -ba ~/rpmbuild/SPECS/$spec_name |
| 117 | + |
| 118 | +# copr-cli build aganzha/stage ~/rpmbuild/SRPMS/stage-git-gui-0.1.17-1.fc42.src.rpm |
0 commit comments