Bug 830863 - Review Request: dwz - DWARF optimization and duplicate removal tool
Review Request: dwz - DWARF optimization and duplicate removal tool
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Jan Kratochvil
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2012-06-11 10:24 EDT by Jakub Jelinek
Modified: 2012-06-15 09:08 EDT (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2012-06-15 03:46:15 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
jan.kratochvil: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Jakub Jelinek 2012-06-11 10:24:25 EDT
Spec URL: http://people.redhat.com/jakub/dwz/dwz.spec
SRPM URL: http://people.redhat.com/jakub/dwz/dwz-0.2-1.fc17.src.rpm
Description: The dwz package contains a program that attempts to optimize DWARF debugging information contained in ELF shared libraries and ELF executables for size, by replacing DWARF information representation with equivalent smaller representation where possible and by reducing the amount of duplication using techniques from DWARF standard appendix E - creating DW_TAG_partial_unit compilation units (CUs) for duplicated information and using DW_TAG_imported_unit to import it into each CU that needs it.
Fedora Account System Username: jakub
Comment 1 Jakub Jelinek 2012-06-11 10:40:14 EDT
This package is being added as part of
https://fedoraproject.org/wiki/Features/DwarfCompressor
The other changes needed by that feature will be a small adjustment to find-debuginfo.sh (roughly (untested)
if type dwz > /dev/null 2>&1; then
  files="`find "$RPM_BUILD_ROOT"/usr/lib/debug -type f -name \*.debug`"
  if [ -n "$files" ]; then
    dwz -m .dwz/$NVRA.debug -l $DWZ_LOW_MEM_DIE_LIMIT -L $DWZ_MAX_DIE_LIMIT $files
  fi
fi
) where DWZ_LOW_MEM_DIE_LIMIT and DWZ_MAX_DIE_LIMIT are parameters passed through from some arch macros that depend on how much memory exists on the build boxes for the arch in question and possible 32-bit host address space limitations.
E.g. dwz's default 20000000 for the lower limit and 50000000 limit are hopefully ok for i?86 (won't be able to optimize libxul.so.debug though), for x86_64 could have e.g. the higher limit raised to 120000000, on arm perhaps lowered.
NVRA should be the %{name}-%{version}-%{release}.%{arch} of the package.
Comment 2 Jan Kratochvil 2012-06-14 13:29:59 EDT
http://people.redhat.com/jakub/dwz/dwz.spec is old, used .spec from:
http://people.redhat.com/jakub/dwz/dwz-0.2-1.fc17.src.rpm

dwz.spec:8: W: macro-in-comment %{name}
 - OK.
dwz.spec: W: invalid-url Source0: dwz-0.2.tar.bz2
 - Fix: There must be public downloadable URL for it.
E: incorrect-fsf-address hashtab.c
E: incorrect-fsf-address dwz.c
E: incorrect-fsf-address hashtab.h
 - Fix.
W: manual-page-warning dwz.1.gz 83: warning: macro `Nothing' not defined
 - Fix:
  -into
  -.B FILE
  -\.  Nothing is written if
  +into \fBFILE\fR.  Nothing is written if
W: manual-page-warning dwz.1.gz 132: warning: macro `If' not defined
 - Fix:
  -and in the last file to
  -.I ../../.dwz/foobar-1.2.debug
  -\.  If e.g. bin/foo.debug and bin/foo2.debug were hardlinked
  +and in the last file to \fI../../.dwz/foobar-1.2.debug\fR.
  +If e.g. bin/foo.debug and bin/foo2.debug were hardlinked

make in %build 
 - It should use: %{?_smp_mflags}
BuildRequires: elfutils-libelf-devel
 - It should use: %{?_isa}
As I expect it will go also for EPEL-5 it will need Buildroot, 
  rm -rf $RPM_BUILD_ROOT and maybe some other things.  Not an issue here.

BTW it prints:
dwz.c: In function 'write_dso':
dwz.c:10172:10: warning: ignoring return value of 'fchown', declared with attribute warn_unused_result [-Wunused-result]
Comment 3 Jakub Jelinek 2012-06-14 13:55:15 EDT
(In reply to comment #2)
> dwz.spec: W: invalid-url Source0: dwz-0.2.tar.bz2
>  - Fix: There must be public downloadable URL for it.

I thought it must be there only if instructions aren't given how to generate it from the RCS (the comment right above Source0 line).

> E: incorrect-fsf-address hashtab.c
> E: incorrect-fsf-address dwz.c
> E: incorrect-fsf-address hashtab.h
>  - Fix.
> W: manual-page-warning dwz.1.gz 83: warning: macro `Nothing' not defined
>  - Fix:
>   -into
>   -.B FILE
>   -\.  Nothing is written if
>   +into \fBFILE\fR.  Nothing is written if
> W: manual-page-warning dwz.1.gz 132: warning: macro `If' not defined
>  - Fix:
>   -and in the last file to
>   -.I ../../.dwz/foobar-1.2.debug
>   -\.  If e.g. bin/foo.debug and bin/foo2.debug were hardlinked
>   +and in the last file to \fI../../.dwz/foobar-1.2.debug\fR.
>   +If e.g. bin/foo.debug and bin/foo2.debug were hardlinked

Will fix.  Thanks.

> make in %build 
>  - It should use: %{?_smp_mflags}

Not worth it, but can certainly add it ;)

> BuildRequires: elfutils-libelf-devel
>  - It should use: %{?_isa}
> As I expect it will go also for EPEL-5 it will need Buildroot, 
>   rm -rf $RPM_BUILD_ROOT and maybe some other things.  Not an issue here.

I'll add it so that it can be shared with scl.
 
> BTW it prints:
> dwz.c: In function 'write_dso':
> dwz.c:10172:10: warning: ignoring return value of 'fchown', declared with
> attribute warn_unused_result [-Wunused-result]

That ignoring is intentional, guess I can add some hack to shut up the warning.
Comment 4 Jan Kratochvil 2012-06-14 14:45:22 EDT
(In reply to comment #3)
> (In reply to comment #2)
> > dwz.spec: W: invalid-url Source0: dwz-0.2.tar.bz2
> >  - Fix: There must be public downloadable URL for it.
> 
> I thought it must be there only if instructions aren't given how to generate
> it from the RCS (the comment right above Source0 line).

These decisions are crossing the downstream vs. upstream line:
I expected you will offer dwz-0.2.tar.bz2 on some http site for other distros/users.  Download from GIT is not so user-accessible IMHO.  Moreover when you even give it a version tag.  I would understand no Source URL if you just give GIT snapshot (20120424git1e10c293) into %{version}.

If there is not going to be dwz-0.2.tar.gz on http anywhere then I am sure fine with the .spec.
Comment 6 Jakub Jelinek 2012-06-15 04:08:08 EDT
New Package SCM Request
=======================
Package Name: dwz
Short Description: DWARF optimization and duplicate removal tool
Owners: jakub
Branches: 
InitialCC:
Comment 7 Gwyn Ciesla 2012-06-15 09:08:31 EDT
Git done (by process-git-requests).

Note You need to log in before you can comment on or make changes to this bug.