From 2c2940faf43172ee4fb79ffe3c7efcf71bd80372 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Jan 06 2018 00:54:34 +0000 Subject: initial import Signed-off-by: Igor Gnatenko --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03522b3 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/addr2line-0.5.0.crate diff --git a/0001-bump-memmap-to-0.6.patch b/0001-bump-memmap-to-0.6.patch new file mode 100644 index 0000000..69c0a5a --- /dev/null +++ b/0001-bump-memmap-to-0.6.patch @@ -0,0 +1,42 @@ +From 0f5000c31db77cc4352f573eadd637958cf6b94c Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Fri, 5 Jan 2018 21:10:04 +0100 +Subject: [PATCH] bump memmap to 0.6 + +Signed-off-by: Igor Gnatenko +--- + src/lib.rs | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/src/lib.rs b/src/lib.rs +index 99c911b..55ea1c6 100644 +--- a/src/lib.rs ++++ b/src/lib.rs +@@ -41,6 +41,7 @@ use owning_ref::OwningHandle; + use fallible_iterator::FallibleIterator; + + use std::fmt; ++use std::fs::File; + use std::path; + use std::error; + use std::borrow::Cow; +@@ -232,12 +233,12 @@ impl Mapping { + } + + fn new_inner(file_path: &path::Path, opts: Options) -> Result { +- let file = memmap::Mmap::open_path(file_path, memmap::Protection::Read) +- .map_err(|e| ErrorKind::BadPath(e))?; ++ let file = File::open(file_path).map_err(ErrorKind::BadPath)?; ++ let map = unsafe { memmap::Mmap::map(&file).map_err(ErrorKind::BadPath)? }; + +- OwningHandle::try_new(Box::new(file), |mmap| -> Result<_> { ++ OwningHandle::try_new(Box::new(map), |mmap| -> Result<_> { + let mmap: &memmap::Mmap = unsafe { &*mmap }; +- let bytes = unsafe { mmap.as_slice() }; ++ let bytes = &*mmap; + EndianDebugInfo::new(bytes, opts) + .chain_err(|| "failed to analyze debug information") + .map(|di| Box::new(di)) +-- +2.15.1 + diff --git a/0001-bump-object-to-0.7.patch b/0001-bump-object-to-0.7.patch new file mode 100644 index 0000000..9f4730f --- /dev/null +++ b/0001-bump-object-to-0.7.patch @@ -0,0 +1,49 @@ +From 14a771a4bf07050d6ebc3125fcd860bc95e89ba4 Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Fri, 5 Jan 2018 20:22:15 +0100 +Subject: [PATCH] bump object to 0.7 + +Signed-off-by: Igor Gnatenko +--- + src/lib.rs | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/src/lib.rs b/src/lib.rs +index 45da35c..99c911b 100644 +--- a/src/lib.rs ++++ b/src/lib.rs +@@ -36,6 +36,7 @@ extern crate cpp_demangle; + #[macro_use] + extern crate error_chain; + ++use object::Object; + use owning_ref::OwningHandle; + use fallible_iterator::FallibleIterator; + +@@ -311,18 +312,18 @@ where + opts: Options, + endian: Endian, + ) -> Result> { +- let debug_info = file.get_section(".debug_info") ++ let debug_info = file.section_data_by_name(".debug_info") + .ok_or(ErrorKind::MissingDebugSection("debug_info"))?; + let debug_info = gimli::DebugInfo::new(debug_info, endian); +- let debug_abbrev = file.get_section(".debug_abbrev") ++ let debug_abbrev = file.section_data_by_name(".debug_abbrev") + .ok_or(ErrorKind::MissingDebugSection("debug_abbrev"))?; + let debug_abbrev = gimli::DebugAbbrev::new(debug_abbrev, endian); +- let debug_line = file.get_section(".debug_line") ++ let debug_line = file.section_data_by_name(".debug_line") + .ok_or(ErrorKind::MissingDebugSection("debug_line"))?; + let debug_line = gimli::DebugLine::new(debug_line, endian); +- let debug_ranges = file.get_section(".debug_ranges").unwrap_or(&[]); ++ let debug_ranges = file.section_data_by_name(".debug_ranges").unwrap_or(&[]); + let debug_ranges = gimli::DebugRanges::new(debug_ranges, endian); +- let debug_str = file.get_section(".debug_str").unwrap_or(&[]); ++ let debug_str = file.section_data_by_name(".debug_str").unwrap_or(&[]); + let debug_str = gimli::DebugStr::new(debug_str, endian); + + let mut units = Vec::new(); +-- +2.15.1 + diff --git a/addr2line-0.5.0-fix-metadata.diff b/addr2line-0.5.0-fix-metadata.diff new file mode 100644 index 0000000..147d13a --- /dev/null +++ b/addr2line-0.5.0-fix-metadata.diff @@ -0,0 +1,37 @@ +--- addr2line-0.5.0/Cargo.toml 1970-01-01T01:00:00+01:00 ++++ addr2line-0.5.0/Cargo.toml 2018-01-05T19:45:38.710593+01:00 +@@ -30,28 +30,28 @@ + version = "2.19.1" + + [dependencies.object] +-version = "0.4.1" ++version = "0.7" + + [dependencies.owning_ref] +-version = "0.2.4" ++version = "0.3" + + [dependencies.gimli] +-version = "0.14.0" ++version = "0.15" + + [dependencies.error-chain] +-version = "0.7.1" ++version = "0.11" + + [dependencies.fallible-iterator] + version = "0.1.3" + + [dependencies.memmap] +-version = "0.5.0" ++version = "0.6" + + [dependencies.rustc-demangle] + version = "0.1.3" + optional = true + [dev-dependencies.itertools] +-version = "0.5" ++version = "0.7" + + [dev-dependencies.glob] + version = "0.2" diff --git a/rust-addr2line.spec b/rust-addr2line.spec new file mode 100644 index 0000000..aae2282 --- /dev/null +++ b/rust-addr2line.spec @@ -0,0 +1,91 @@ +# Generated by rust2rpm +%bcond_without check + +%global crate addr2line + +Name: rust-%{crate} +Version: 0.5.0 +Release: 1%{?dist} +Summary: Cross-platform `addr2line` clone written in Rust, using `gimli` + +# https://github.com/gimli-rs/addr2line/issues/79 +License: ASL 2.0 or MIT +URL: https://crates.io/crates/addr2line +Source0: https://crates.io/api/v1/crates/%{crate}/%{version}/download#/%{crate}-%{version}.crate +# Initial patched metadata +# * Bump object to 0.7 +# * Bump owning_ref to 0.3 +# * Bump gimli to 0.15 +# * Bump error-chain to 0.11 +# * Bump memmap to 0.6, https://github.com/gimli-rs/addr2line/pull/78 +# * Bump itertools to 0.7 +Patch0: addr2line-0.5.0-fix-metadata.diff +# Make it work with object v0.7 +Patch1: 0001-bump-object-to-0.7.patch +# Make it work with memmap v0.6 +Patch2: 0001-bump-memmap-to-0.6.patch + +ExclusiveArch: %{rust_arches} + +BuildRequires: rust-packaging +# [dependencies] +BuildRequires: (crate(clap) >= 2.19.1 with crate(clap) < 3.0.0) +BuildRequires: (crate(cpp_demangle) >= 0.2.0 with crate(cpp_demangle) < 0.3.0) +BuildRequires: (crate(error-chain) >= 0.11.0 with crate(error-chain) < 0.12.0) +BuildRequires: (crate(fallible-iterator) >= 0.1.3 with crate(fallible-iterator) < 0.2.0) +BuildRequires: (crate(gimli) >= 0.15.0 with crate(gimli) < 0.16.0) +BuildRequires: (crate(memmap) >= 0.6.0 with crate(memmap) < 0.7.0) +BuildRequires: (crate(object) >= 0.7.0 with crate(object) < 0.8.0) +BuildRequires: (crate(owning_ref) >= 0.3.0 with crate(owning_ref) < 0.4.0) +BuildRequires: (crate(rustc-demangle) >= 0.1.3 with crate(rustc-demangle) < 0.2.0) +%if %{with check} +# [dev-dependencies] +BuildRequires: (crate(glob) >= 0.2.0 with crate(glob) < 0.3.0) +BuildRequires: (crate(itertools) >= 0.7.0 with crate(itertools) < 0.8.0) +%endif + +%description +%{summary}. + +%package -n %{crate} +Summary: %{summary} + +%description -n %{crate} +%{summary}. + +%package devel +Summary: %{summary} +BuildArch: noarch + +%description devel +A cross-platform `addr2line` clone written in Rust, using `gimli`. + +This package contains library source intended for building other packages +which use %{crate} from crates.io. + +%prep +%autosetup -n %{crate}-%{version} -p1 +%cargo_prep + +%build +%cargo_build + +%install +%cargo_install + +%if %{with check} +%check +%cargo_test +%endif + +%files -n %{crate} +%{_bindir}/addr2line + +%files devel +%doc README.md +%{cargo_registry}/%{crate}-%{version}/ +%exclude %{cargo_registry}/%{crate}-%{version}/{benchmark.sh,bench.plot.r,coverage,memory.png,time.png} + +%changelog +* Fri Jan 05 2018 Igor Gnatenko - 0.5.0-1 +- Initial package diff --git a/sources b/sources new file mode 100644 index 0000000..0c1b4b3 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (addr2line-0.5.0.crate) = af9296cc12b21e3d608d7d0a252292678908d6ba0a0012346a72a1345a98a47fd86bc1b647cb25c5680d36938ad824e952c12eb5f2353d3cd9e76ded5218c919