Bug 956147 - Review Request: wide-dhcpv6 - DHCPv6 Prefix Delegation client that works on PPP
Summary: Review Request: wide-dhcpv6 - DHCPv6 Prefix Delegation client that works on PPP
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Paul Wouters
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-04-24 10:51 UTC by David Beveridge
Modified: 2015-07-21 12:30 UTC (History)
4 users (show)

Fixed In Version: wide-dhcpv6-20080615-13.1.el6
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-02-17 08:07:49 UTC
Type: ---
Embargoed:
pwouters: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)
Fix compile error on F20 (1.10 KB, patch)
2014-01-13 07:55 UTC, Scott Shambarger
no flags Details | Diff

Description David Beveridge 2013-04-24 10:51:23 UTC
Spec URL: http://repo.bevhost.com/fedora/wide-dhcpv6.spec
SRPM URL: http://repo.bevhost.com/fedora/wide-dhcpv6-20080615-11.1.1.fc18.src.rpm

Description: 

The primary reason for making this package is that the normal dhcp with
fedora/redhat does not support DHCPv6 Prefix Delegation client on PPP 

This is the DHCPv6 package from WIDE project. (kame.net)
That package was fixed for linux and ported to debian.
I have included all the debian patches and created this spec

DHCPv6 allows prefix delegation and host configuration for the IPv6 network
protocol even over PPP.
Multiple network interfaces are supported by this DHCPv6 package.
This package contains the server and the client.

Fedora Account System Username: bevhost

Comment 1 David Beveridge 2013-04-24 11:29:14 UTC
This is my first package.

Comment 2 Paul Wouters 2013-04-24 15:14:50 UTC
I'll take this and sponsor David

Comment 3 David Beveridge 2013-04-24 22:55:46 UTC
see
https://bugzilla.redhat.com/show_bug.cgi?id=626514
ISC dhcp does not support ppp and ipv6

Comment 4 David Beveridge 2013-05-06 12:35:00 UTC
I've made quite a few fixes.
Spec URL: https://github.com/bevhost/wide-dhcpv6/raw/master/wide-dhcpv6.spec
SRPM URL: http://repo.bevhost.com/fedora/wide-dhcpv6-20080615-11.1.2.fc19.src.rpm

I'm hosting my source on github now

https://github.com/bevhost/wide-dhcpv6

Comment 5 Paul Wouters 2013-05-07 04:23:13 UTC
- Is the copyright disclaimer on the spec file really needed? It's not
  normally put under its own copyright
- The upstream version is kinda awkward, but it's probably best to stick with
  it as you did.
- I would include your patches as source, instead of adding a github repository.
  Unless you think you will become the one-upstream, obsoleting the sf.net and
  ubuntu links.
- I think it would be clearer if you attach all the patches from the debian
  ubuntu as PatchXX:
- Why use ubuntu_release and my_release ? For release numbers, start with "1"
  and increment each release. Unless it is a pre-release, then you start with
  "0".

If you do the above, then the first section of macros can all go and it would be much cleaner
and standard.

- Don't package for multiple fedora versions. You must package it for rawhide.
  When your package is accepted, you can pick older branches and EPEL branches.
  In those branches you change the spec file to their respective init systems.
  That also removes the conditions you have now in the BuildRequires: and the
  use of "with_systemd". Note there are different macros to use for f18+ and
  F17. This also removes chkconfig stuff in fedora.
- Don't specify BuildRoot, unless building for EL-5
- Don't run "rm" in prep, unless building for EL-5
- Try to stick with using the %configure macro. It sets all the right values
  including various build options. So in your case:

  %configure  --sysconfdir=%{_sysconfdir}/%{name} --enable-libdhcp=no

- For make, at least use: make %{?_smp_mflags}
- For make install, you might want: make DESTDIR=%{buildroot} if the software 
  supports it
- Add -p (preserve) to the "install" options to preserve datestamps, this helps
  rpm not create useless .rpmnew files.
- You must enable hardening that's used for daemons 
  Just add:  %global _hardened_build 1 at the top of the spec file, and make
  sure the cflags/linker flags make it properly. You can check using this
  script that is not yet integrated into rpmlint: https://nohats.ca/checksec.sh
- Add the sysconfig file(s) as SOURCEx: files, and remove the use of rh_dir
- Don't use systemctl directly, use the proper macros
- The exit 0 should not be needed in %post
- Remove the %clean section, unless you're building for EL-5
- Remove the %defattr line in the %files section, unless building for EL-5
- Use "tmpfiles" for the run directory (see other daemon packages, eg xl2tpd
  or nsd)
- You're using /etc/ppp which belongs to the ppp package, so add Requires:
  for it
- Why do you require the static version of flex ? flex-static seems to just 
  install flex-devel? I do see it fails to compile without flex-devel, but this
  seems like a workaround :)
- The resolv.conf hackery is problematic, but that can be tackled after the
   package has made it in. (one should use a NM plugin to rewrite that file,
   and if local DNSSEC is enabled you cannot touch  that file at all. And if
   you chown, you probably also need chcon for SElinux)
- Looks like there are some "sample" configs. That's not allowed outside of
  the %doc area. The config files should work from package install if placed
  in /etc. Apart from the sample files I see mention in /etc/wide-dhcpv6
  / dhcp6c.conf of ethernet devices by names that are not valid for everyone.
   That's also a problem.
- Your /etc/sysconfig files have empty VAR= entries, which systemd really does
  not like. (at least it did not in the past, not sure how it handles it these 
  days)

I haven't run the full fedora-review yet, but I will do so when you've addressed most of the things listed here :)

I'm also not entirely sure how to test any of this, as my IPv6 comes in its own special setup.

Comment 6 David Beveridge 2013-05-07 08:45:18 UTC
(In reply to comment #5)
> - Why use ubuntu_release and my_release ? 

The idea I had was that should ubuntu release a new version with new patches
you just change the ubuntu version in the spec file, do a spectools -g, grab the new source and recompile.  It may not work, but it does try to keep the upstream versions in place; and allow me to make new releases of my own.

> 
> I'm also not entirely sure how to test any of this, as my IPv6 comes in its
> own special setup.

In my case lot's of Virtual Machines. :-)

[dave@pc2 ~]$ ifconfig | grep Ether
br0       Link encap:Ethernet  HWaddr 50:E5:49:6D:D4:10  
br1       Link encap:Ethernet  HWaddr FE:54:00:F0:28:16  
br2       Link encap:Ethernet  HWaddr 4E:6C:39:72:BE:A6  
eth0      Link encap:Ethernet  HWaddr 50:E5:49:6D:D4:10  
virbr0    Link encap:Ethernet  HWaddr 52:54:00:30:EB:F3  
vnet0     Link encap:Ethernet  HWaddr FE:54:00:F0:28:16  
vnet1     Link encap:Ethernet  HWaddr FE:54:00:D2:C4:4B

I'm also running quagga ospf6d on my PC and the VMs to do the routing on all the test networks.
I have a mikrotik router connected to the Internet which does the first PD.
It offers this on the LAN and also runs a PPPoE server with DHCPv6PD.
On br0(eth0) I run ISC dhclient with my new dhclient-script (see Bug 626514),
so br1 has the ISC dhcpd running a redelegated smaller block, which offers PD and IA,
For example, I run a F17 vm with two nics connected to br1 and br2 and this runs the dhcp6c.
Then I run radvdump on br2 to see what I get.

There are lots of permutations, I can build in this environment.

Comment 7 David Beveridge 2013-05-07 10:09:22 UTC
(In reply to comment #5)
> - For make, at least use: make %{?_smp_mflags}

When I do that or -j3, I get the following...

bison -y -d cfparse.y
bison -y -d cfparse.y
mv y.tab.c cfparse.c
gcc -c ./missing/strlcpy.c
mv y.tab.c cfparse.c
mv: cannot stat 'y.tab.c': No such file or directory
make: *** [y.tab.h] Error 1
make: *** Waiting for unfinished jobs....
error: Bad exit status from /var/tmp/rpm-tmp.UX9BZk (%build)



Works with -j2

Comment 8 David Beveridge 2013-05-07 13:19:36 UTC
(In reply to comment #5)
> - Use "tmpfiles" for the run directory (see other daemon packages, eg xl2tpd
>   or nsd)

The PID files are created in /var/run, so I think I'll have to patch the source.
The way I'm reading this PID files should really be in /var/run/%{name}/*.pid
currently the source has this
dhcp6s.c:#define DHCP6S_PIDFILE "/var/run/dhcp6s.pid"
dhcp6c.h:#define DHCP6C_PIDFILE "/var/run/dhcp6c.pid"
dhcp6relay.c:#define DHCP6RELAY_PIDFILE "/var/run/dhcp6relay.pid"

and of course the man pages too

dhcp6relay.8:.Bl -tag -width /var/run/dhcp6relay.pid -compact
dhcp6relay.8:.It Pa /var/run/dhcp6relay.pid
etc

Comment 9 Paul Wouters 2013-05-08 05:45:33 UTC
re: #7  I guess that's a dependency error in the Makefile then.... Nice to fix, but leaving out smp_flags is fine.

re: #8  I guess they could stay in /var/run/ (which is linked to /run) and in that you dont need to worry about tmpfiles either because you don't need a subdir in /run/ (since /run is on tmpfs, the tmpfiles construct ensures /run/foo/ is created on boot)

Comment 10 David Beveridge 2013-05-08 11:36:12 UTC
(In reply to comment #5)
> - The upstream version is kinda awkward, but it's probably best to stick with
>   it as you did.
> - I would include your patches as source, instead of adding a github
> repository.

done

> 
> If you do the above, then the first section of macros can all go and it
> would be much cleaner
> and standard.

it sure is

>   Just add:  %global _hardened_build 1 at the top of the spec file, and make

done

>   sure the cflags/linker flags make it properly. You can check using this
>   script that is not yet integrated into rpmlint:
> https://nohats.ca/checksec.sh

not done yet

> - Add the sysconfig file(s) as SOURCEx: files, and remove the use of rh_dir
> - Don't use systemctl directly, use the proper macros
> - The exit 0 should not be needed in %post
> - Remove the %clean section, unless you're building for EL-5
> - Remove the %defattr line in the %files section, unless building for EL-5

done

> - You're using /etc/ppp which belongs to the ppp package, so add Requires:
>   for it

removed, it was crap anyway. need to cover this better in docs when we know how initscripts will call it.

> - Why do you require the static version of flex ? flex-static seems to just 
>   install flex-devel? I do see it fails to compile without flex-devel, but
> this

changed

> - The resolv.conf hackery is problematic, but that can be tackled after the
>    package has made it in. (one should use a NM plugin to rewrite that file,
>    and if local DNSSEC is enabled you cannot touch  that file at all. And if
>    you chown, you probably also need chcon for SElinux)

I'm not a big fan if having DHCPv6 set DNS. 
Pretty much everyone will be running dual stack for now, 
and the IPv4 stack can handle DNS,
(or the administrator can just set it to 2001:4860:4860::8888)

> - Looks like there are some "sample" configs. That's not allowed outside of
>   the %doc area. The config files should work from package install if placed
>   in /etc. Apart from the sample files I see mention in /etc/wide-dhcpv6
>   / dhcp6c.conf of ethernet devices by names that are not valid for everyone.
>    That's also a problem.

all moved to %doc, and these could be expanded on when I know whats happening with the initscripts.

> - Your /etc/sysconfig files have empty VAR= entries, which systemd really
> does not like. 
> (at least it did not in the past, not sure how it handles it these days)
> 
removed,

I also moved the systemd service files to %doc for now, 
as they contain config.

> I haven't run the full fedora-review yet, but I will do so when you've
> addressed most of the things listed here :)
> 

I've made lots of changes and done not much testing at this point,
and it's mothers day this weekend so I don't know how much time I'll
have for that till next week.

But here goes anyway...

http://repo.bevhost.com/fedora/wide-dhcpv6.spec
http://repo.bevhost.com/fedora/wide-dhcpv6-20080615-11.1.3.fc18.src.rpm


PS: still not sure about SELINUX policies.  I need to test this too.

Comment 11 David Beveridge 2013-05-14 14:17:56 UTC
Proposed additional file in /usr/share/doc/



WHY USE WIDE-DHCPv6?

Generally speaking the main DHCP package for RedHat from ISC is 
a much more complete implementation with a nearly full set of features.

Unfortunately there are a few things it does not do, or does not do well (yet!).  

This is where it might be appropriate to use an alternative such as wide-dhcpv6.

Things wide-dhcpv6 is not.
 1. Being further developed.
 2. Fully RFC compilant.
 3. Able to do prefix delegation from a pool of addresses.
 4. Able to service (serve to) more than one interface per instance.


Reasons to choose wide dhcp for IPv6.
 1. Your ISP wants to assign you a static /128 link address 
    and a /64 or greater prefix for your LAN, both by DHCP. (eg comcast cable)
    (until https://bugzilla.redhat.com/show_bug.cgi?id=836702 is finished)
 2. You need the client to assign IP addresses to your LAN interfaces for radvd.
    (until https://bugzilla.redhat.com/show_bug.cgi?id=626514 is finished)
 3. Your ISP gave you a working sample configuration file for wide-dhcpv6
 4. You want a basic dhcpv6 server to run many separate instances 
    on a range of interfaces (eg in a VPN concentrator)


WIDE DHCPv6 Client Script Variables (ISC DHCP has many more)
     REASON  The reason why the script is invoked.  
             The value is always "NBI" and thus meaningless.
     new_domain_name_servers
             A list of available DNS servers.
     new_domain_name
             A list of DNS names, which provides DNS name search path.
     new_ntp_servers
             A list of available NTP servers.
     new_sip_servers
             A list of available SIP server addresses.
     new_sip_name
             A list of SIP server domain names.
     new_nis_servers
             A list of available NIS server addresses.
     new_nis_name
             A list of NIS domain names.
     new_nisp_servers
             A list of available NIS+ server addresses.
     new_nisp_name
             A list of NIS+ domain names.
     new_bcmcs_servers
             A list of available BCMCS server addresses.
     new_bcmcs_name
             A list of BCMCS server domain names.


SAMPLE CONFIGURATIONS for /etc/wide-dhcp/dhcp6c.conf

For these configurations, I assume that the user has IPv4
for DNS or can use a well known DNS such as the google
anycast address eg 2001:4860:4860::8888.

There is a whole range of configuration options such as
DNS domain search list that are supported, but these only
need to be configured once, either via IPv4 or IPv6.  
These are normally already set by IPv4.
Therefore I do not cover them here.
Read the man pages if you are IPv6 Only.

Just Prefix Delegation for a single LAN (ppp0 WAN, eth0 LAN)
============================================================
interface ppp0 {
        send ia-pd 0;
};
id-assoc pd {
        prefix-interface eth0 {
        };
};

Just Prefix Delegation but for three LANs.
=========================================
interface ppp0 {
        send ia-pd 0;
};
id-assoc pd {
        prefix-interface eth0 {
		sla-id 0;
        };
        prefix-interface eth1 {
		sla-id 1;
        };
        prefix-interface eth2 {
		sla-id 2;
        };
};

Prefix Delegation on two LANS plus link address
===============================================
interface wlan0 {
        send ia-na 1;
        send ia-pd 0;
};
id-assoc na 1 {
};
id-assoc pd {
        prefix-interface eth0 {
		sla-id 0;
        };
        prefix-interface eth1 {
		sla-id 1;
        };
};

Prefix Delegation on two LANS plus link address where
the ISP needs a separate PD request for each LAN
=====================================================
interface wlan0 {
        send ia-na 1;
        send ia-pd 0;
        send ia-pd 1;
};
id-assoc na 1 {
};
id-assoc pd 0 {
        prefix-interface eth0 {
        };
id-assoc pd 1 {
        prefix-interface eth1 {
        };
};



Some versions of wide-dhcpv6 require that you also set 
an sla-len as well as an sla-id.

The default sla-len is 16 in most wide-dhcpv6 implementations.
This assumes that the ISP always allocates a /48.
In this release if the ISP allocates smaller than /48,
sla-len defaults to the largest size that fits,
so it is better to leave it out of the configuration.

Comment 12 David Beveridge 2013-05-14 14:19:11 UTC
root@localhost ~/rpmbuild/SPECS # cat ../SOURCES/wide-dhcpv6-0008-Make-sla-len-somewhat-automatic.patch 
--- wide-dhcpv6-20080615/prefixconf.c.orig	2013-05-14 22:26:46.433767395 +1000
+++ wide-dhcpv6-20080615/prefixconf.c	2013-05-14 23:17:49.229676947 +1000
@@ -451,6 +451,17 @@
 	ifpfx->paddr.sin6_len = sizeof(struct sockaddr_in6);
 #endif
 	ifpfx->paddr.sin6_addr = prefix->addr;
+
+	/* 
+         * dave (bevhost) thinks this should fix it rather than 
+         * generate the error below "invalid prefix length" 
+         * this way the sla-len can be left out of the config file 
+         * and calculated when the prefix is received
+         */
+	if (prefix->plen + pconf->ifid_len + pconf->sla_len > 128) {
+		pconf->sla_len = 128 - pconf->ifid_len - prefix->plen;
+	}
+
 	ifpfx->plen = prefix->plen + pconf->sla_len;
 	/*
 	 * XXX: our current implementation assumes ifid len is a multiple of 8

Comment 13 David Beveridge 2013-05-14 21:17:17 UTC
(In reply to comment #10)
> >   sure the cflags/linker flags make it properly. You can check using this
> >   script that is not yet integrated into rpmlint:
> > https://nohats.ca/checksec.sh
> 
> not done yet
> 

root@localhost ~/rpmbuild/SPECS # ./checksec.sh --file /sbin/dhcp6c
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      FILE
Full RELRO      Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   /sbin/dhcp6c
root@localhost ~/rpmbuild/SPECS # ./checksec.sh --file /sbin/dhcp6s
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      FILE
Full RELRO      Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   /sbin/dhcp6s
root@localhost ~/rpmbuild/SPECS # ./checksec.sh --file /sbin/dhcp6relay
RELRO           STACK CANARY      NX            PIE             RPATH      RUNPATH      FILE
Full RELRO      Canary found      NX enabled    PIE enabled     No RPATH   No RUNPATH   /sbin/dhcp6relay

Comment 14 David Beveridge 2013-05-14 21:20:46 UTC
(In reply to comment #10)
> PS: still not sure about SELINUX policies.  I need to test this too.

I've been running tests in enforcing targeted mode without any problems.
root@localhost ~ # sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

Comment 15 David Beveridge 2013-05-23 10:50:20 UTC
SPEC URL: http://repo.bevhost.com/fedora/wide-dhcpv6.spec
SRPM URL: http://repo.bevhost.com/fedora/wide-dhcpv6-20080615-11.1.4.fc18.src.rpm

Things I know about that might affect the review

===== SHOULD items =====

Generic:
[!]: Reviewer should test that the package builds in mock.
[!]: Dist tag is present.
[!]: Uses parallel make.
[-]: %check is present and all tests pass.

I think everything else is ok.

There is likely to be a file added to 
/etc/NetworkManager/dispatcher.d
but that could be some time coming as I have found problems in NM.
(It doesn't create an event when PPP comes down)
So it creates the link ok, but it doesn't tear it down properly.

No files needed for initscript operation, so that will be ok.

Comment 16 David Beveridge 2013-05-27 11:25:25 UTC
see https://bugzilla.redhat.com/show_bug.cgi?id=967529
PPPoE does not attempt DHCPv6 Prefix Delegation

Comment 17 Scott Shambarger 2014-01-13 07:54:19 UTC
Tried to build the current SRPM in Comment 15 on F20, and received the following compile error... Fixed it by adding some CFLAGS to the Makefile.in (will attach a patch).

Errors:

./missing/arc4random.c:65:6: warning: ignoring return value of 'read', declared with attribute warn_unused_result [-Wunused-result]
  read(fd, &v, sizeof(v));
      ^
gcc -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -o dhcp6c dhcp6c.o common.o config.o prefixconf.o dhcp6c_ia.o timer.o dhcp6c_script.o if.o base64.o auth.o dhcp6_ctl.o addrconf.o lease.o cfparse.o cftoken.o strlcpy.o strlcat.o arc4random.o -lfl
/usr/bin/ld: strlcat.o: relocation R_X86_64_PC32 against undefined symbol `strlen@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status

... also noticed that the /usr/share/doc path still has a version on it (F20+ is supposed to remove those :)

Comment 18 Scott Shambarger 2014-01-13 07:55:06 UTC
Created attachment 849175 [details]
Fix compile error on F20

Comment 19 Scott Shambarger 2014-01-13 19:13:48 UTC
BTW, I wrote a patch for dhclient to allow it to request an address and prefix simultaneously (albeit for the older 4.2.4), see:

https://bugzilla.redhat.com/show_bug.cgi?id=836702

Problem is there was no agreement on whether my approach was worth keeping as a patch, and my submission upstream has gone unanswered :(

I might try to revive interest in the fix, and see if I can get a consensus on how to implement it.

Comment 21 Paul Wouters 2015-01-30 15:18:33 UTC
This package is APPROVED

(my ISP changed v6 config so I needed this package, once started it
 has been rock solid and never stopped working. Thanks!)

Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed

Do please fix the below nit-picks:

1) Please add a comment just above the license field:
   # The entire source code is BSD except the bison parser code which is GPL
2) fixup compiler flags, eg add %{?_smp_mflags} to the make command
3) remove rm -rf %{buildroot} at start of install
4) Please add the dist tag to the version
5) fix or remove macros from changelog
6) make sure to use the RIGHT spec file as the spec file listed and spec file
   in the source rpm differ (mostly due to versioned doc dir)


===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: If (and only if) the source package includes the text of the license(s)
     in its own file, then that file, containing the text of the license(s)
     for the package is included in %doc.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "BSD (3 clause)", "BSD (3 clause) ISC", "GPL (v2 or later)", "Unknown or
     generated", "BSD (4 clause)". 1 files have unknown license. Detailed
     output of licensecheck in /vol/home/paul/956147-wide-
     dhcpv6/licensecheck.txt
[!]: If the package is under multiple licenses, the licensing breakdown must
     be documented in the spec.
[x]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/share/doc/wide-dhcpv6
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/share/doc/wide-dhcpv6
[!]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[!]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf %{buildroot} present but not required
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[ ]: Requires correct, justified where necessary. 
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 61440 bytes in 11 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least one
     supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: Package does not own files or directories owned by other packages.
[x]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package do not use a name that already exist
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as provided
     in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[!]: Dist tag is present (not strictly required in GL).
[!]: Uses parallel make %{?_smp_mflags} macro.
[-]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Patches link to upstream bugs/comments/lists or are otherwise justified.
     (clear at the ubuntu upstream page)
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[-]: %check is present and all tests pass.
[ ]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[!]: Spec file according to URL is the same as in SRPM.
     Note: Spec file as given by url is not the same as in SRPM (see attached
     diff).
     See: (this test has no URL)
[x]: Rpmlint is run on all installed packages.
     Note: No rpmlint messages.
[x]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.

Rpmlint (installed packages)
----------------------------
# rpmlint wide-dhcpv6
1 packages and 0 specfiles checked; 0 errors, 0 warnings.
# echo 'rpmlint-done:'



Diff spec file in url and in SRPM
---------------------------------
--- /vol/home/paul/956147-wide-dhcpv6/srpm/wide-dhcpv6.spec     2015-01-28 10:32:42.330036218 -0500
+++ /vol/home/paul/956147-wide-dhcpv6/srpm-unpacked/wide-dhcpv6.spec    2014-01-13 09:15:53.000000000 -0500
@@ -4,5 +4,5 @@

 %global ubuntu_release 11.1
-%global my_release 4
+%global my_release 5
 %global _hardened_build 1

@@ -33,4 +33,5 @@
 Patch9:         wide-dhcpv6-0009-Make-sla-id-config-optional.patch
 Patch10:        wide-dhcpv6-0010-move-client-script-to-after-update_ia.patch
+Patch11:        wide-dhcpv6-0011-fedora20-cflag.patch
 Requires(preun): systemd
 Requires(postun): systemd
@@ -60,4 +61,5 @@
 %patch9 -p1
 %patch10 -p1
+%patch11 -p1

@@ -71,18 +73,18 @@
 mkdir -p %{buildroot}%{_sysconfdir}/%{name}
 mkdir -p %{buildroot}%{_mandir}/man{8,5}
-mkdir -p %{buildroot}%{_defaultdocdir}/%{name}-%{version}
+mkdir -p %{buildroot}%{_defaultdocdir}/%{name}
 install -p -m 755 dhcp6c dhcp6s dhcp6relay dhcp6ctl %{buildroot}%{_sbindir}
 install -p -m 644 dhcp6c.8 dhcp6s.8 dhcp6relay.8 dhcp6ctl.8 %{buildroot}/%{_mandir}/man8
 install -p -m 644 dhcp6c.conf.5 dhcp6s.conf.5 %{buildroot}/%{_mandir}/man5
-install -p -m 644 %{SOURCE1} %{buildroot}%{_defaultdocdir}/%{name}-%{version}
-install -p -m 644 %{SOURCE2} %{buildroot}%{_defaultdocdir}/%{name}-%{version}
-install -p -m 644 %{SOURCE3} %{buildroot}%{_defaultdocdir}/%{name}-%{version}
-install -p -m 644 %{SOURCE4} %{buildroot}%{_defaultdocdir}/%{name}-%{version}
-install -p -m 644 %{SOURCE5} %{buildroot}%{_defaultdocdir}/%{name}-%{version}
-install -p -m 644 %{SOURCE6} %{buildroot}%{_defaultdocdir}/%{name}-%{version}
-install -p -m 644 %{SOURCE7} %{buildroot}%{_defaultdocdir}/%{name}-%{version}
-install -p -m 644 README CHANGES %{buildroot}%{_defaultdocdir}/%{name}-%{version}
-install -p -m 644 dhcp6c.conf.sample %{buildroot}%{_defaultdocdir}/%{name}-%{version}
-install -p -m 644 dhcp6s.conf.sample %{buildroot}%{_defaultdocdir}/%{name}-%{version}
+install -p -m 644 %{SOURCE1} %{buildroot}%{_defaultdocdir}/%{name}
+install -p -m 644 %{SOURCE2} %{buildroot}%{_defaultdocdir}/%{name}
+install -p -m 644 %{SOURCE3} %{buildroot}%{_defaultdocdir}/%{name}
+install -p -m 644 %{SOURCE4} %{buildroot}%{_defaultdocdir}/%{name}
+install -p -m 644 %{SOURCE5} %{buildroot}%{_defaultdocdir}/%{name}
+install -p -m 644 %{SOURCE6} %{buildroot}%{_defaultdocdir}/%{name}
+install -p -m 644 %{SOURCE7} %{buildroot}%{_defaultdocdir}/%{name}
+install -p -m 644 README CHANGES %{buildroot}%{_defaultdocdir}/%{name}
+install -p -m 644 dhcp6c.conf.sample %{buildroot}%{_defaultdocdir}/%{name}
+install -p -m 644 dhcp6s.conf.sample %{buildroot}%{_defaultdocdir}/%{name}

 %preun
@@ -98,9 +100,13 @@
 %files
 %dir %{_sysconfdir}/%{name}
-%{_defaultdocdir}/%{name}-%{version}/*
+%{_defaultdocdir}/%{name}/*
 %{_sbindir}/*
 %{_mandir}/man?/*

 %changelog
+* Tue Jan 14 2014 dave 20080615-11.1.5
+- Added patch 11 provided by Scott Shambarger
+- Install docs into %{name} instead of %{name}-%{version}
+
 * Thu May 16 2013 dave 20080615-11.1.4
 - Added patches 8 and 9, which simplify configuration
Requires
--------
wide-dhcpv6 (rpmlib, GLIBC filtered):
    /bin/sh
    libc.so.6()(64bit)
    rtld(GNU_HASH)
    systemd



Provides
--------
wide-dhcpv6:
    wide-dhcpv6
    wide-dhcpv6(x86-64)



Source checksums
----------------
http://downloads.sourceforge.net/wide-dhcpv6/wide-dhcpv6-20080615.tar.gz :
  CHECKSUM(SHA256) this package     : 55a66174a1edeabd90029b83cb3fff8e0b63718a556ce95b97d464a87fd1bd81
  CHECKSUM(SHA256) upstream package : 55a66174a1edeabd90029b83cb3fff8e0b63718a556ce95b97d464a87fd1bd81


Generated by fedora-review 0.5.2 (63c24cb) last change: 2014-07-14
Command line :/usr/bin/fedora-review -b 956147
Buildroot used: fedora-19-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG

Comment 22 Paul Wouters 2015-01-30 15:20:36 UTC
(David let me know if you still need a sponsor, or for that matter if you lost interest and we should find another/co maintainer.

Sorry this review took so long - It had gotten lost in my pile of bugzillas until I actually needed the package myself and I found myself already listed as reviewer :(

Comment 23 David Beveridge 2015-02-07 08:42:19 UTC
I'm pleased to hear that you found the package useful, and I'd like to contribute where I can.

nit-picks are fixed.

http://repo.bevhost.com/fedora/wide-dhcpv6.spec
http://repo.bevhost.com/fedora/wide-dhcpv6-20080615-13.1.fc22.src.rpm

Comment 24 David Beveridge 2015-02-07 09:05:41 UTC
New Package SCM Request
=======================
Package Name: wide-dhcpv6
Short Description: DHCP Client and Server for IPv6
Upstream URL: https://launchpad.net/ubuntu/+source/wide-dhcpv6/20080615-13
Owners: bevhost
Branches: f20 f21 f22 el6 epel7
InitialCC: pwouters

Comment 25 Gwyn Ciesla 2015-02-07 20:05:06 UTC
Git done (by process-git-requests).

Comment 26 Fedora Update System 2015-02-08 00:14:52 UTC
wide-dhcpv6-20080615-13.1.el6 has been submitted as an update for Fedora EPEL 6.
https://admin.fedoraproject.org/updates/wide-dhcpv6-20080615-13.1.el6

Comment 27 Fedora Update System 2015-02-08 00:17:41 UTC
wide-dhcpv6-20080615-13.1.el7 has been submitted as an update for Fedora EPEL 7.
https://admin.fedoraproject.org/updates/wide-dhcpv6-20080615-13.1.el7

Comment 28 Fedora Update System 2015-02-08 00:18:41 UTC
wide-dhcpv6-20080615-13.1.fc20 has been submitted as an update for Fedora 20.
https://admin.fedoraproject.org/updates/wide-dhcpv6-20080615-13.1.fc20

Comment 29 Fedora Update System 2015-02-08 00:19:37 UTC
wide-dhcpv6-20080615-13.1.fc21 has been submitted as an update for Fedora 21.
https://admin.fedoraproject.org/updates/wide-dhcpv6-20080615-13.1.fc21

Comment 30 Fedora Update System 2015-02-08 19:22:13 UTC
wide-dhcpv6-20080615-13.1.el6 has been pushed to the Fedora EPEL 6 testing repository.

Comment 31 Fedora Update System 2015-02-17 08:07:49 UTC
wide-dhcpv6-20080615-13.1.fc21 has been pushed to the Fedora 21 stable repository.

Comment 32 Fedora Update System 2015-02-17 08:09:25 UTC
wide-dhcpv6-20080615-13.1.fc20 has been pushed to the Fedora 20 stable repository.

Comment 33 Fedora Update System 2015-02-23 16:09:45 UTC
wide-dhcpv6-20080615-13.1.el7 has been pushed to the Fedora EPEL 7 stable repository.

Comment 34 Fedora Update System 2015-02-23 16:10:25 UTC
wide-dhcpv6-20080615-13.1.el6 has been pushed to the Fedora EPEL 6 stable repository.


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