Bug 830863

Summary: Review Request: dwz - DWARF optimization and duplicate removal tool
Product: [Fedora] Fedora Reporter: Jakub Jelinek <jakub>
Component: Package ReviewAssignee: Jan Kratochvil <jan.kratochvil>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: jan.kratochvil, notting, package-review
Target Milestone: ---Flags: jan.kratochvil: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-15 07:46:15 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jakub Jelinek 2012-06-11 14:24:25 UTC
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 14:40:14 UTC
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 17:29:59 UTC
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 17:55:15 UTC
(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 18:45:22 UTC
(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 08:08:08 UTC
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 13:08:31 UTC
Git done (by process-git-requests).