some clean up
remove naked provide for Fedora 29 and later
switch to Python 3 for pyreadelf for Fedora 29 and later
This commit is contained in:
Terje Røsten 2018-06-17 14:45:15 +02:00
parent e8bc8cb9b5
commit 25ae9af04d
3 changed files with 84 additions and 134 deletions

View File

@ -1,5 +1,5 @@
diff --git a/elftools/common/construct_utils.py b/elftools/common/construct_utils.py diff --git a/elftools/common/construct_utils.py b/elftools/common/construct_utils.py
index 53caa97..41c2815 100644 index 8ace30e..321ab51 100644
--- a/elftools/common/construct_utils.py --- a/elftools/common/construct_utils.py
+++ b/elftools/common/construct_utils.py +++ b/elftools/common/construct_utils.py
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
@ -12,7 +12,7 @@ index 53caa97..41c2815 100644
class RepeatUntilExcluding(Subconstruct): class RepeatUntilExcluding(Subconstruct):
diff --git a/elftools/common/utils.py b/elftools/common/utils.py diff --git a/elftools/common/utils.py b/elftools/common/utils.py
index 7bd1d5b..8b2400b 100644 index d8acefa..f6d017c 100644
--- a/elftools/common/utils.py --- a/elftools/common/utils.py
+++ b/elftools/common/utils.py +++ b/elftools/common/utils.py
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
@ -25,7 +25,7 @@ index 7bd1d5b..8b2400b 100644
def bytelist2string(bytelist): def bytelist2string(bytelist):
diff --git a/elftools/dwarf/enums.py b/elftools/dwarf/enums.py diff --git a/elftools/dwarf/enums.py b/elftools/dwarf/enums.py
index 6508764..a474d32 100644 index 9140f91..17f5c74 100644
--- a/elftools/dwarf/enums.py --- a/elftools/dwarf/enums.py
+++ b/elftools/dwarf/enums.py +++ b/elftools/dwarf/enums.py
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
@ -34,11 +34,11 @@ index 6508764..a474d32 100644
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
-from ..construct import Pass -from ..construct import Pass
+from construct import Pass +from construct import Pass
from ..common.py3compat import iteritems
ENUM_DW_TAG = dict(
diff --git a/elftools/dwarf/structs.py b/elftools/dwarf/structs.py diff --git a/elftools/dwarf/structs.py b/elftools/dwarf/structs.py
index 39e4815..c50a874 100644 index e25dc84..cfc4a85 100644
--- a/elftools/dwarf/structs.py --- a/elftools/dwarf/structs.py
+++ b/elftools/dwarf/structs.py +++ b/elftools/dwarf/structs.py
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
@ -50,21 +50,8 @@ index 39e4815..c50a874 100644
UBInt8, UBInt16, UBInt32, UBInt64, ULInt8, ULInt16, ULInt32, ULInt64, UBInt8, UBInt16, UBInt32, UBInt64, ULInt8, ULInt16, ULInt32, ULInt64,
SBInt8, SBInt16, SBInt32, SBInt64, SLInt8, SLInt16, SLInt32, SLInt64, SBInt8, SBInt16, SBInt32, SBInt64, SLInt8, SLInt16, SLInt32, SLInt64,
Adapter, Struct, ConstructError, If, RepeatUntil, Field, Rename, Enum, Adapter, Struct, ConstructError, If, RepeatUntil, Field, Rename, Enum,
diff --git a/elftools/elf/elffile.py b/elftools/elf/elffile.py
index 458273f..a4d62bd 100644
--- a/elftools/elf/elffile.py
+++ b/elftools/elf/elffile.py
@@ -9,7 +9,7 @@
from ..common.py3compat import BytesIO
from ..common.exceptions import ELFError
from ..common.utils import struct_parse, elf_assert
-from ..construct import ConstructError
+from construct import ConstructError
from .structs import ELFStructs
from .sections import (
Section, StringTableSection, SymbolTableSection,
diff --git a/elftools/elf/enums.py b/elftools/elf/enums.py diff --git a/elftools/elf/enums.py b/elftools/elf/enums.py
index deb9f35..7b778c7 100644 index dbeb20e..5767d41 100644
--- a/elftools/elf/enums.py --- a/elftools/elf/enums.py
+++ b/elftools/elf/enums.py +++ b/elftools/elf/enums.py
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
@ -89,21 +76,21 @@ index 4a4473f..d4f4b75 100644
from ..common.utils import struct_parse, elf_assert from ..common.utils import struct_parse, elf_assert
from .sections import Section, Symbol from .sections import Section, Symbol
diff --git a/elftools/elf/sections.py b/elftools/elf/sections.py diff --git a/elftools/elf/notes.py b/elftools/elf/notes.py
index ce62450..99b6613 100644 index b3a41d6..526135c 100644
--- a/elftools/elf/sections.py --- a/elftools/elf/notes.py
+++ b/elftools/elf/sections.py +++ b/elftools/elf/notes.py
@@ -6,7 +6,7 @@ @@ -8,7 +8,7 @@
# Eli Bendersky (eliben@gmail.com)
# This code is in the public domain
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
from ..common.py3compat import bytes2str
from ..common.utils import struct_parse, roundup
-from ..construct import CString -from ..construct import CString
+from construct import CString +from construct import CString
from ..common.utils import struct_parse, elf_assert, parse_cstring_from_stream
def iter_notes(elffile, offset, size):
diff --git a/elftools/elf/segments.py b/elftools/elf/segments.py diff --git a/elftools/elf/segments.py b/elftools/elf/segments.py
index bc54da2..dfb3a14 100644 index c1c0279..8464248 100644
--- a/elftools/elf/segments.py --- a/elftools/elf/segments.py
+++ b/elftools/elf/segments.py +++ b/elftools/elf/segments.py
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
@ -114,9 +101,9 @@ index bc54da2..dfb3a14 100644
+from construct import CString +from construct import CString
from ..common.utils import struct_parse from ..common.utils import struct_parse
from .constants import SH_FLAGS from .constants import SH_FLAGS
from .notes import iter_notes
diff --git a/elftools/elf/structs.py b/elftools/elf/structs.py diff --git a/elftools/elf/structs.py b/elftools/elf/structs.py
index 0862400..51b1715 100644 index d2404ab..2570b4f 100644
--- a/elftools/elf/structs.py --- a/elftools/elf/structs.py
+++ b/elftools/elf/structs.py +++ b/elftools/elf/structs.py
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
@ -128,11 +115,9 @@ index 0862400..51b1715 100644
UBInt8, UBInt16, UBInt32, UBInt64, UBInt8, UBInt16, UBInt32, UBInt64,
ULInt8, ULInt16, ULInt32, ULInt64, ULInt8, ULInt16, ULInt32, ULInt64,
SBInt32, SLInt32, SBInt64, SLInt64, SBInt32, SLInt32, SBInt64, SLInt64,
diff --git a/setup.py b/setup.py --- a/setup.py~ 2016-08-05 05:18:18.000000000 +0200
index a105774..d8cd590 100644 +++ b/setup.py 2018-06-17 13:51:23.961881845 +0200
--- a/setup.py @@ -41,7 +41,6 @@
+++ b/setup.py
@@ -41,7 +41,6 @@ setup(
'elftools.elf', 'elftools.elf',
'elftools.common', 'elftools.common',
'elftools.dwarf', 'elftools.dwarf',

View File

@ -1,111 +1,70 @@
%if 0%{?fedora} || 0%{?rhel} >= 8 %if 0%{?fedora} > 28 || 0%{?rhel} >= 8
%global __python_sitelib %{python2_sitelib} %global py2readelf py2readelf
%global py3readelf pyreadelf
%else %else
%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} %global py2readelf pyreadelf
%global __python_sitelib %{python_sitelib} %global py3readelf py3readelf
%{?__python2:%global __python2 %{__python}}
%endif %endif
%global debug_package %{nil}
%global commitdate 20130619
%global commit a1d968102e82fea06692c367849bc25418780f77
%global shortcommit %(c=%{commit}; echo ${c:0:7})
Name: pyelftools
Version: 0.22
Release: 0.16.git%{commitdate}.%{shortcommit}%{?dist}
Summary: Pure-Python library for parsing and analyzing ELF files Summary: Pure-Python library for parsing and analyzing ELF files
Name: pyelftools
Version: 0.24
Release: 1%{?dist}
License: Public Domain License: Public Domain
URL: https://github.com/eliben/%{name} URL: https://github.com/eliben/pyelftools
Source0: https://files.pythonhosted.org/packages/source/p/pyelftools/pyelftools-%{version}.tar.gz
# We 'll use git snapshots, because upstream keeps master-branch Patch0: pyelftools-0.24-construct.patch
# in a usable, working state. See:
# https://github.com/eliben/pyelftools/wiki/Hacking-guide#contributing
Source0: %{url}/archive/%{commit}/%{name}-%{version}.git%{commitdate}.%{shortcommit}.tar.gz
Patch0: pyelftools-0.22-construct.patch
BuildRequires: python2-devel BuildRequires: python2-devel
BuildRequires: python2-setuptools BuildRequires: python2-setuptools
BuildRequires: python2-construct BuildRequires: python2-construct
%if 0%{?fedora} || 0%{?rhel} >= 8 %if 0%{?fedora} || 0%{?rhel} >= 8
BuildRequires: python3-devel BuildRequires: python3-devel
BuildRequires: python3-setuptools BuildRequires: python3-setuptools
BuildRequires: python3-construct BuildRequires: python3-construct
%endif %endif
BuildArch: noarch BuildArch: noarch
%global _description \
%description Pure-Python library for parsing and analyzing ELF files\
Pure-Python library for parsing and analyzing ELF files
and DWARF debugging information. and DWARF debugging information.
%description %_description
%package -n python2-%{name} %package -n python2-%{name}
Summary: %{summary} Summary: %{summary}
Requires: python2-construct Requires: python2-construct
%{?python_provide:%python_provide python2-%{name}} %{?python_provide:%python_provide python2-%{name}}
# Remove before F30 # Remove before F30
%if 0%{?fedora} < 29
Provides: %{name} = %{version}-%{release} Provides: %{name} = %{version}-%{release}
%endif
%description -n python2-%{name} %description -n python2-%{name} %_description
Pure-Python library for parsing and analyzing ELF files
and DWARF debugging information.
%if 0%{?fedora} || 0%{?rhel} >= 8 %if 0%{?fedora} || 0%{?rhel} >= 8
%package -n python3-%{name} %package -n python3-%{name}
Summary: %{summary} Summary: %{summary}
Requires: python3-construct Requires: python3-construct
%{?python_provide:%python_provide python3-%{name}} %{?python_provide:%python_provide python3-%{name}}
%description -n python3-%{name} %_description
%description -n python3-%{name}
Pure-Python library for parsing and analyzing ELF files
and DWARF debugging information.
%endif %endif
%prep %prep
%setup -qn %{name}-%{commit} %setup -q
%patch0 -p1 %patch0 -p1
# remove bundled construct lib
rm -rf elftools/construct rm -rf elftools/construct
# python3-package
%if 0%{?fedora} || 0%{?rhel} >= 8
rm -rf %{py3dir}
cp -a . %{py3dir}
# fix hashbang
sed -i -e 's|#!/usr/bin/env python|#!/usr/bin/python3|' %{py3dir}/scripts/readelf.py
%endif
sed -i -e 's|#!/usr/bin/env python|#!/usr/bin/python2|' scripts/readelf.py
%build %build
%{__python2} setup.py build %{py2_build}
%if 0%{?fedora} || 0%{?rhel} >= 8 %if 0%{?fedora} || 0%{?rhel} >= 8
pushd %{py3dir} %{py3_build}
%{__python3} setup.py build
%endif %endif
%install %install
%{__python2} setup.py install -O1 --skip-build --root %{buildroot} %{py2_install}
mv %{buildroot}/usr/bin/readelf.py %{buildroot}/usr/bin/pyreadelf mv %{buildroot}/usr/bin/readelf.py %{buildroot}/usr/bin/%{py2readelf}
%if 0%{?fedora} || 0%{?rhel} >= 8 %if 0%{?fedora} || 0%{?rhel} >= 8
pushd %{py3dir} %{py3_install}
%{__python3} setup.py install -O1 --skip-build --root %{buildroot} mv %{buildroot}/usr/bin/readelf.py %{buildroot}/usr/bin/%{py3readelf}
mv %{buildroot}/usr/bin/readelf.py %{buildroot}/usr/bin/py3readelf
%endif %endif
%check %check
%{__python2} test/run_all_unittests.py %{__python2} test/run_all_unittests.py
%{__python2} test/run_examples_test.py %{__python2} test/run_examples_test.py
@ -117,27 +76,33 @@ mv %{buildroot}/usr/bin/readelf.py %{buildroot}/usr/bin/py3readelf
%if 0%{?fedora} || 0%{?rhel} >= 8 %if 0%{?fedora} || 0%{?rhel} >= 8
%{__python3} test/run_all_unittests.py %{__python3} test/run_all_unittests.py
%{__python3} test/run_examples_test.py %{__python3} test/run_examples_test.py
# tests may fail because of differences in output-formatting # ditto
# from binutils' readelf. See:
# https://github.com/eliben/pyelftools/wiki/Hacking-guide#tests
%{__python3} test/run_readelf_tests.py || : %{__python3} test/run_readelf_tests.py || :
%endif %endif
%files -n python2-%{name} %files -n python2-%{name}
%doc CHANGES LICENSE README* TODO %license LICENSE
%{__python_sitelib}/*elftools* %doc CHANGES
%{_bindir}/pyreadelf %{_bindir}/%{py2readelf}
%{python2_sitelib}/elftools
%{python2_sitelib}/pyelftools-*.egg-info
%if 0%{?fedora} || 0%{?rhel} >= 8 %if 0%{?fedora} || 0%{?rhel} >= 8
%files -n python3-%{name} %files -n python3-%{name}
%doc CHANGES LICENSE README* TODO %license LICENSE
%{python3_sitelib}/*elftools* %doc CHANGES
%{_bindir}/py3readelf %{_bindir}/%{py3readelf}
%{python3_sitelib}/elftools
%{python3_sitelib}/pyelftools-*.egg-info
%endif %endif
%changelog %changelog
* Sun Jun 17 2018 Terje Rosten <terje.rosten@ntnu.no> - 0.24-1
- 0.24
- some clean up
- remove naked provide for Fedora 29 and later
- switch to Python 3 for pyreadelf for Fedora 29 and later
* Wed Feb 21 2018 Iryna Shcherbina <ishcherb@redhat.com> - 0.22-0.16.git20130619.a1d9681 * Wed Feb 21 2018 Iryna Shcherbina <ishcherb@redhat.com> - 0.22-0.16.git20130619.a1d9681
- Update Python 2 dependency declarations to new packaging standards - Update Python 2 dependency declarations to new packaging standards
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)

View File

@ -1 +1 @@
78ed0325b4e81bd5c530b7695853be6c pyelftools-0.22.git20130619.a1d9681.tar.gz SHA512 (pyelftools-0.24.tar.gz) = 5169617f9a8446ffc21dfc44ee185a388c8945a0296bdc6752483b0756888dccb10e3ee88e529d101cf31a4595de924b5c95f5459d5ee4448f57c0c4f2c56887