%global crate distinst # Disable tests for now %bcond_with check %global basever 0.2.0 %global snapdate 20171222 %global commit 3378f6cfdf46019737d2ad789ec1e390db8d1bed %global shortcommit %(c=%{commit}; echo ${c:0:7}) Name: rust-%{crate} # Apparently the version set by the crate itself...? Version: %{basever}%{?snapdate:~git%{snapdate}.%{shortcommit}} Release: 0%{?dist}.1 Summary: Linux distribution installer backend library License: LGPLv3 URL: https://github.com/pop-os/%{crate} Source0: https://github.com/pop-os/%{crate}/archive/%{commit}/%{crate}-%{shortcommit}.tar.gz # Make distinst work on Fedora Patch0001: 0001-src-Initial-port-to-make-distinst-work-on-Fedora.patch ExclusiveArch: %{rust_arches} BuildRequires: rust-packaging # [build-dependencies] BuildRequires: (crate(cbindgen) >= 0.3.3 with crate(cbindgen) < 0.4.0) # [dependencies] BuildRequires: (crate(clap) >= 2.26 with crate(clap) < 3.0) BuildRequires: (crate(libc) >= 0.2 with crate(libc) < 0.3) BuildRequires: (crate(log) >= 0.3 with crate(log) < 0.4) BuildRequires: (crate(pbr) >= 1.0 with crate(pbr) < 2.0) BuildRequires: (crate(tempdir) >= 0.3 with crate(tempdir) < 0.4) #Requires: %description This is a work-in-progress backend library for Linux distribution installers. %package -n %{crate} Summary: %{summary} %description -n %{crate} This package provides the binary for %{crate}. %package -n lib%{crate} Summary: %{summary} Requires: coreutils Requires: dosfstools Requires: e2fsprogs Requires: grub2-common Requires: %{_bindir}/mount Requires: parted Requires: squashfs-tools Requires: util-linux %description -n lib%{crate} This package provides the backend library for Linux distribution installers. %package -n lib%{crate}-devel Summary: Development files to use %{crate}. Requires: lib%{crate}%{?_isa} = %{version}-%{release} %description -n lib%{crate}-devel This package contains the files for the C API to use %{crate}. %package devel Summary: %{summary} BuildArch: noarch %description devel A tool for generating C bindings to Rust code. This package contains library source intended for building other packages which use %{crate}. %prep %autosetup -n %{crate}-%{commit} -p1 rm -f Cargo.lock %cargo_prep %build %cargo_build %install %cargo_install mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_libdir}/pkgconfig mkdir -p %{buildroot}%{_includedir} mkdir -p %{buildroot}%{_datadir}/vala/vapi install -pm 0755 target/release/%{crate} %{buildroot}%{_bindir}/%{crate} install -pm 0755 target/release/lib%{crate}.so %{buildroot}%{_libdir}/lib%{crate}.so # We don't yet have a way to set the soname of the library safely... #install -pm 0755 target/release/lib%{crate}.so %{buildroot}%{_libdir}/lib%{crate}.so.0.0.0 #ln -sr %{buildroot}%{_libdir}/lib%{crate}.so.0.0.0 %{buildroot}%{_libdir}/lib%{crate}.so install -pm 0644 target/include/%{crate}.h %{buildroot}%{_includedir}/%{crate}.h install -pm 0644 src/%{crate}.vapi %{buildroot}%{_datadir}/vala/vapi/%{crate}.vapi cat > target/pkgconfig/%{crate}.pc << EOF libdir=%{_libdir} includedir=%{_includedir} EOF cat target/pkgconfig/%{crate}.pc.stub >> target/pkgconfig/%{crate}.pc install -pm 0644 target/pkgconfig/%{crate}.pc %{buildroot}%{_libdir}/pkgconfig/%{crate}.pc %if %{with check} %check %cargo_test %endif %files -n %{crate} %license LICENSE %doc README.md %{_bindir}/%{crate} %files -n lib%{crate} %license LICENSE #{_libdir}/lib%{crate}.so.* %{_libdir}/lib%{crate}.so %files -n lib%{crate}-devel %{_includedir}/%{crate}.h #{_libdir}/lib%{crate}.so %{_libdir}/pkgconfig/%{crate}.pc %{_datadir}/vala/vapi/%{crate}.vapi %files devel %{cargo_registry}/%{crate}-%{basever}/ %changelog * Fri Dec 22 2017 Neal Gompa - Initial packaging