Bug 172869 - Review Request: nss-mdns - glibc plugin for .local name resolution
Review Request: nss-mdns - glibc plugin for .local name resolution
Status: CLOSED NEXTRELEASE
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Jason Tibbitts
Fedora Package Reviews List
:
Depends On:
Blocks: OLPCTracker
  Show dependency treegraph
 
Reported: 2005-11-10 14:08 EST by Bastien Nocera
Modified: 2007-11-30 17:11 EST (History)
11 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2007-06-25 16:55:48 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
tibbs: fedora‑review+
kevin: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Bastien Nocera 2005-11-10 14:08:56 EST
Spec Name or Url: http://files.hadess.net/redhat/perso/spec/nss-mdns.spec
SRPM Name or Url: http://files.hadess.net/redhat/perso/source/nss-mdns-0.6-1.src.rpm
Description:
nss-mdns is a plugin for the GNU Name Service Switch (NSS) functionality of
the GNU C Library (glibc) providing host name resolution via Multicast DNS
(aka Zeroconf, aka Apple Rendezvous), effectively allowing name resolution
by common Unix/Linux programs in the ad-hoc mDNS domain .local.

nss-mdns provides client functionality only, which means that you have to
run a mDNS responder daemon seperately from nss-mdns if you want to register
the local host name via mDNS (e.g. HOWL).
Comment 2 Wart 2006-01-29 18:38:37 EST
Can't connect to host when I tried to download the files.  Do you have somewhere
else where they can be found?
Comment 3 Bastien Nocera 2006-04-03 10:00:47 EDT
Should be available again.
Comment 4 Per Winkvist 2006-04-09 05:25:50 EDT
Would be nice to have this in FC! 
Any reason why its not in core/extras?
Comment 5 Rahul Sundaram 2006-04-09 05:28:52 EDT
(In reply to comment #4)
> Would be nice to have this in FC! 
> Any reason why its not in core/extras?

It has not been reviewed for inclusion in Fedora Extras yet. 
Comment 6 John Mahowald 2006-04-11 23:56:17 EDT
Build failed on x86_64

+ mv /var/tmp/nss-mdns-0.7-1-buildroot/usr/lib/ /var/tmp/nss-mdns-0.7-1-buildroot/
mv: cannot stat `/var/tmp/nss-mdns-0.7-1-buildroot/usr/lib/': No such file or
directory

Macros can help with this. Also replace /lib
Comment 8 Bastien Nocera 2006-04-24 10:18:22 EDT
One of the requirements to get this included from Ulrich was that lookups are
never done directly by the nss-mdns plugin, and only through avahi where it
would be cached.
I posted a patch for that to Lennart, as well as support for links to generate
the text documentation. I would need to update the package when a new version of
nss-mdns is released.
Comment 9 Bastien Nocera 2006-07-13 06:30:31 EDT
(In reply to comment #8)
> One of the requirements to get this included from Ulrich was that lookups are
> never done directly by the nss-mdns plugin, and only through avahi where it
> would be cached.

Lennart fixed this properly in nss-mdns 0.8
Pancrazio `Ezio' de Mauro <pdemauro@redhat.com> also wrote a Perl script that
will be more solid than the previous scriptlets to add and remove the
mdnsminimal and mdns lines from /etc/nsswitch.conf

http://files.hadess.net/redhat/perso/spec/nss-mdns.spec
and
http://files.hadess.net/redhat/perso/source/nss-mdns-0.8-2.src.rpm
Comment 11 Bastien Nocera 2006-07-13 08:05:30 EDT
Readding Chris' blocker
Comment 12 Bastien Nocera 2006-07-13 08:23:54 EDT
The original discussion on GMane, easier to follow.
http://article.gmane.org/gmane.linux.redhat.fedora.devel/30633
Comment 13 John Mahowald 2006-07-27 23:58:04 EDT
rpmlint:

W: nss-mdns summary-not-capitalized glibc plugin for .local name resolution
W: nss-mdns summary-not-capitalized glibc plugin for .local name resolution
Ignore, keep glibc.

E: nss-mdns shlib-with-non-pic-code /lib64/libnss_mdns.so.2
E: nss-mdns shlib-with-non-pic-code /lib64/libnss_mdns6_minimal.so.2
E: nss-mdns shlib-with-non-pic-code /lib64/libnss_mdns6.so.2
E: nss-mdns shlib-with-non-pic-code /lib64/libnss_mdns4_minimal.so.2
E: nss-mdns shlib-with-non-pic-code /lib64/libnss_mdns4.so.2
E: nss-mdns shlib-with-non-pic-code /lib64/libnss_mdns_minimal.so.2
I don't know enough linker-fu to fix this.

E: nss-mdns non-executable-script /usr/libexec/nss-mdns-set.pl 0644
chmod +x

W: nss-mdns percent-in-%post
W: nss-mdns percent-in-%preun
Eh? Probably the %{_libexec}


W: nss-mdns dangerous-command-in-%post mv
W: nss-mdns dangerous-command-in-%preun mv

W: nss-mdns one-line-command-in-%postun /sbin/ldconfig
Comment 14 John Mahowald 2006-10-02 21:42:09 EDT
On second thought others can probably do this review better and get it through.

Resetting to FE-NEW.

Anybody CCed want to review this?
Comment 15 Jason Tibbitts 2006-10-06 18:00:01 EDT
I would be happy to review this, with the understanding that I have no hope in
hell of actually testing it properly.

However, it would be nice to see some response to the issues in comment #13. 
Also the URLs to the spec and src.rpm don't seem to be working.
Comment 16 Aurelien Bompard 2006-11-04 04:16:45 EST
I can't download the srpm, could you fix this ?
Comment 17 Adam Goode 2006-12-12 21:06:45 EST
When trying this out on x86_64, I found that installing the 64-bit version and
changing the nsswitch file to use nss-mdns would break 32-bit name lookup. I'm
guessing that the 32-bit version is definitely required to be installed when the
64-bit version is?

How would the build system allow for this?
Requires: %{name}.i386 ?
Comment 18 Bastien Nocera 2006-12-19 12:16:27 EST
A bit outdated, but packages are there now:
http://www.hadess.net/tmp/nss-mdns/
Comment 19 Ashish Shukla 2006-12-19 14:49:02 EST
Got following errors while installing:
-- begin dump --
[wahjava@chatteau SPECS]$ sudo rpm -ivh ../RPMS/i686/nss-mdns-0.8-2.i686.rpm
Password:
Preparing...                ########################################### [100%]
   1:nss-mdns               ########################################### [100%]
/var/tmp/rpm-tmp.58781: line 3: fg: no job control
error: %post(nss-mdns-0.8-2.i686) scriptlet failed, exit status 1
[wahjava@chatteau SPECS]$ sudo 
rpm -ivh ../RPMS/x86_64/nss-mdns-0.8-2.x86_64.rpm
Preparing...                ########################################### [100%]
   1:nss-mdns               ########################################### [100%]
/var/tmp/rpm-tmp.91686: line 3: fg: no job control
error: %post(nss-mdns-0.8-2.x86_64) scriptlet failed, exit status 1
-- end dump --
Comment 20 Bastien Nocera 2007-01-09 06:56:41 EST
(In reply to comment #19)
> Got following errors while installing:
> -- begin dump --
> [wahjava@chatteau SPECS]$ sudo rpm -ivh ../RPMS/i686/nss-mdns-0.8-2.i686.rpm
> Password:
> Preparing...                ########################################### [100%]
>    1:nss-mdns               ########################################### [100%]
> /var/tmp/rpm-tmp.58781: line 3: fg: no job control
> error: %post(nss-mdns-0.8-2.i686) scriptlet failed, exit status 1
> [wahjava@chatteau SPECS]$ sudo 
> rpm -ivh ../RPMS/x86_64/nss-mdns-0.8-2.x86_64.rpm
> Preparing...                ########################################### [100%]
>    1:nss-mdns               ########################################### [100%]
> /var/tmp/rpm-tmp.91686: line 3: fg: no job control
> error: %post(nss-mdns-0.8-2.x86_64) scriptlet failed, exit status 1
> -- end dump --

Could you please try to re-run the rpm command with -vvv to see what exact
command it's running, and try to run the command by hand?
I believe it's because it's trying to update your nsswitch.conf, and can't parse it.
Comment 21 Ashish Shukla 2007-01-10 13:18:10 EST
-- begin dump --
[root@lap0 ~]# wget http://www.hadess.net/tmp/nss-mdns/nss-mdns-0.8-2.i386.rpm
--23:42:08--  http://www.hadess.net/tmp/nss-mdns/nss-mdns-0.8-2.i386.rpm
Resolving www.hadess.net... 216.243.209.211
Connecting to www.hadess.net|216.243.209.211|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 26115 (26K) [application/x-rpm]
Saving to: `nss-mdns-0.8-2.i386.rpm'

100%[===================================================================================>]
26,115      13.1K/s   in 1.9s

23:42:11 (13.1 KB/s) - `nss-mdns-0.8-2.i386.rpm' saved [26115/26115]

[root@lap0 ~]# rpm -ivvv nss-mdns-0.8-2.i386.rpm
D: ============== nss-mdns-0.8-2.i386.rpm
D: Expected size:        26115 = lead(96)+sigs(180)+pad(4)+data(25835)
D:   Actual size:        26115
D: nss-mdns-0.8-2.i386.rpm: Header SHA1 digest: OK
(2af72aea32fdac6af75793ad98824d0e916d8a17)
D:      added binary package [0]
D: found 0 source and 1 binary packages
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages rdonly mode=0x0
D: locked   db index       /var/lib/rpm/Packages
D: ========== +++ nss-mdns-0.8-2 i386/linux 0x1
D: opening  db index       /var/lib/rpm/Depends create mode=0x0
D: opening  db index       /var/lib/rpm/Basenames rdonly mode=0x0
D: opening  db index       /var/lib/rpm/Pubkeys rdonly mode=0x0
D:  read h#      35 Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
D:  Requires: /bin/sh                                       YES (db files)
D:  Requires: /bin/sh                                       YES (cached)
D:  Requires: /bin/sh                                       YES (cached)
D: opening  db index       /var/lib/rpm/Providename rdonly mode=0x0
D:  read h#      18 Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
D:  Requires: libc.so.6                                     YES (db provides)
D:  read h#      18 Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
D:  Requires: libc.so.6(GLIBC_2.0)                          YES (db provides)
D:  read h#      18 Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
D:  Requires: libc.so.6(GLIBC_2.1)                          YES (db provides)
D:  read h#      18 Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
D:  Requires: libc.so.6(GLIBC_2.1.3)                        YES (db provides)
D:  read h#      18 Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
D:  Requires: libc.so.6(GLIBC_2.3.4)                        YES (db provides)
D:  read h#      18 Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
D:  Requires: libc.so.6(GLIBC_2.4)                          YES (db provides)
D:  read h#     117 Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
D:  Requires: perl                                          YES (db provides)
D:  Requires: rpmlib(CompressedFileNames) <= 3.0.4-1        YES (rpmlib provides)
D:  Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1       YES (rpmlib provides)
D: opening  db index       /var/lib/rpm/Conflictname rdonly mode=0x0
D: closed   db index       /var/lib/rpm/Pubkeys
D: closed   db index       /var/lib/rpm/Depends
D: closed   db index       /var/lib/rpm/Conflictname
D: closed   db index       /var/lib/rpm/Providename
D: closed   db index       /var/lib/rpm/Basenames
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: ========== recording tsort relations
D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth,
breadth)
D:     0    0    0    0    1    0   +nss-mdns-0.8-2.i386
D: installing binary packages
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages create mode=0x42
D: mounted filesystems:
D:     i        dev    bsize       bavail       iavail mount point
D:     0 0x00000302     4096      4089983      5546087 /
D:     1 0x00000003     4096            0           -1 /proc
D:     2 0x00000000     4096            0           -1 /sys
D:     3 0x0000000b     4096            0           -1 /dev/pts
D:     4 0x00000301     1024        85863        26071 /boot
D:     5 0x00000013     4096        31845        31844 /dev/shm
D:     6 0x00000305     4096      1308736           -1 /media/fatty
D:     7 0x00000014     4096            0           -1 /proc/sys/fs/binfmt_misc
D:     8 0x00000015     4096            0           -1 /var/lib/nfs/rpc_pipefs
D: sanity checking 1 elements
D: opening  db index       /var/lib/rpm/Name create mode=0x42
D: running pre-transaction scripts
D: computing 9 file fingerprints
Preparing packages for installation...
D: computing file dispositions
D: opening  db index       /var/lib/rpm/Basenames create mode=0x42
D: ========== +++ nss-mdns-0.8-2 i386-linux 0x1
D: Expected size:        26115 = lead(96)+sigs(180)+pad(4)+data(25835)
D:   Actual size:        26115
D: nss-mdns-0.8-2: Header SHA1 digest: OK (2af72aea32fdac6af75793ad98824d0e916d8a17)
D:   install: nss-mdns-0.8-2 has 9 files, test = 0
nss-mdns-0.8-2
D: ========== Directories not explicitly included in package:
D:          0 /lib/
D:          1 /usr/libexec/
D:          2 /usr/share/doc/
D: ==========
D: fini      100755  1 (   0,   0)     11028 /lib/libnss_mdns.so.2;45a52c9a
D: fini      100755  1 (   0,   0)     10460 /lib/libnss_mdns4.so.2;45a52c9a
D: fini      100755  1 (   0,   0)     10236 /lib/libnss_mdns4_minimal.so.2;45a52c9a
D: fini      100755  1 (   0,   0)     10544 /lib/libnss_mdns6.so.2;45a52c9a
D: fini      100755  1 (   0,   0)     10304 /lib/libnss_mdns6_minimal.so.2;45a52c9a
D: fini      100755  1 (   0,   0)     10864 /lib/libnss_mdns_minimal.so.2;45a52c9a
D: fini      100644  1 (   0,   0)      2024 /usr/libexec/nss-mdns-set.pl;45a52c9a
D: fini      040755  2 (   0,   0)         0 /usr/share/doc/nss-mdns-0.8
D: fini      100644  1 (   0,   0)     10329
/usr/share/doc/nss-mdns-0.8/README;45a52c9a
GZDIO:      10 reads,    77184 total bytes in 0.001503 secs
D:   +++ h#     815 Header SHA1 digest: OK
(2af72aea32fdac6af75793ad98824d0e916d8a17)
D: adding "nss-mdns" to Name index.
D: adding 9 entries to Basenames index.
D: opening  db index       /var/lib/rpm/Group create mode=0x42
D: adding "System Environment/Libraries" to Group index.
D: opening  db index       /var/lib/rpm/Requirename create mode=0x42
D: adding 12 entries to Requirename index.
D: opening  db index       /var/lib/rpm/Providename create mode=0x42
D: adding 7 entries to Providename index.
D: opening  db index       /var/lib/rpm/Dirnames create mode=0x42
D: adding 4 entries to Dirnames index.
D: opening  db index       /var/lib/rpm/Requireversion create mode=0x42
D: adding 12 entries to Requireversion index.
D: opening  db index       /var/lib/rpm/Provideversion create mode=0x42
D: adding 7 entries to Provideversion index.
D: opening  db index       /var/lib/rpm/Installtid create mode=0x42
D: adding 1 entries to Installtid index.
D: opening  db index       /var/lib/rpm/Sigmd5 create mode=0x42
D: adding 1 entries to Sigmd5 index.
D: opening  db index       /var/lib/rpm/Sha1header create mode=0x42
D: adding "2af72aea32fdac6af75793ad98824d0e916d8a17" to Sha1header index.
D: opening  db index       /var/lib/rpm/Filemd5s create mode=0x42
D: adding 9 entries to Filemd5s index.
D:   install: %post(nss-mdns-0.8-2.i386) asynchronous scriptlet start
D:   install: %post(nss-mdns-0.8-2.i386)        execv(/bin/sh) pid 19103
+ /sbin/ldconfig
+ '%{_libexec}/nss-mdns-set.pl' add /etc/nsswitch.conf /etc/nsswitch.conf.new
/var/tmp/rpm-tmp.90274: line 4: fg: no job control
D:   install: waitpid(19103) rc 19103 status 100 secs 19.072
error: %post(nss-mdns-0.8-2.i386) scriptlet failed, exit status 1
D: running post-transaction scripts
D: closed   db index       /var/lib/rpm/Filemd5s
D: closed   db index       /var/lib/rpm/Sha1header
D: closed   db index       /var/lib/rpm/Sigmd5
D: closed   db index       /var/lib/rpm/Installtid
D: closed   db index       /var/lib/rpm/Provideversion
D: closed   db index       /var/lib/rpm/Requireversion
D: closed   db index       /var/lib/rpm/Dirnames
D: closed   db index       /var/lib/rpm/Providename
D: closed   db index       /var/lib/rpm/Requirename
D: closed   db index       /var/lib/rpm/Group
D: closed   db index       /var/lib/rpm/Basenames
D: closed   db index       /var/lib/rpm/Name
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: May free Score board((nil))
-- end dump --

Hope this helps.
Comment 22 Bastien Nocera 2007-01-10 15:20:36 EST
Could you please attach your nsswitch.conf?
Comment 23 Ashish Shukla 2007-01-11 02:28:33 EST
-- begin dump --
[root@lap0 ~]# cat /etc/nsswitch.conf
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
#       nisplus or nis+         Use NIS+ (NIS version 3)
#       nis or yp               Use NIS (NIS version 2), also called YP
#       dns                     Use DNS (Domain Name Service)
#       files                   Use the local files
#       db                      Use the local database (.db) files
#       compat                  Use NIS on compat mode
#       hesiod                  Use Hesiod for user lookups
#       [NOTFOUND=return]       Stop searching if not found so far
#

# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd:    db files nisplus nis
#shadow:    db files nisplus nis
#group:     db files nisplus nis

passwd:     files
shadow:     files
group:      files

#hosts:     db files nisplus nis dns
hosts:      files dns

# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files

bootparams: nisplus [NOTFOUND=return] files

ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files

netgroup:   files

publickey:  nisplus

automount:  files
aliases:    files nisplus

-- end dump --
Comment 24 Jason Tibbitts 2007-05-09 19:18:37 EDT
I'd like to look into this because I think it may be useful for a network
configuration I'm investigating, but I'm concerned about the above reports and I
also note that there's a 0.9 version out there currently.

The package does build, but the install is a bit confused:

/var/tmp/rpm-tmp.80770: line 3: fg: no job control
error: %post(nss-mdns-0.8-2.x86_64) scriptlet failed, exit status 1

A few other comments:

rpmlint wants the summary capitalized, but I wouldn't capitalize it in this
situation either.

You need Requires(pre): /sbin/ldconfig
You could just use %postun -p /sbin/ldconfig or add
  Requires(postun): /sbin/ldconfig

You really shouldn't use %makeinstall unless
  make DESTDIR=$RPM_BUILD_ROOT install
doesn't work.

I can't say that I'm confortable with automatically adding the library to
nsswitch.conf, but I suppose the point is that it needs no configurarion.
Comment 25 Bastien Nocera 2007-05-10 18:44:18 EDT
Lennart, do you want to take this over?
Comment 26 Jason Tibbitts 2007-05-23 22:01:15 EDT
Well, it's been almost two weeks; what's up?  I see this blocks OLPCTracker, but
I don't know if that makes it extra-important or not.  I'm happy to see this
review through if someone wants to drive the submission; othewise I guess this
ticket should be closed.
Comment 27 Lennart Poettering 2007-05-24 08:13:23 EDT
To say the least, Ulrich Drepper is not exactly a fan of seeing this integrated
into the default Fedora install. In a recent chat on IRC that I had with him he
raised a few issues he has with nss-mdns which I cannot really "fix".  (As a
side note: I am upstream of nss-mdns)

Firstly, he believes that mDNS might be a waste of power and traffic and wants
to see a big field test in Westford. I believe this is a big waste of time and
resources, and is nothing I can organize from Hamburg/Germany. Also it is
somewhat redundant, because Apple reports some scalability numbers for mDNS
which have been generated by such a field test. (please also note that nss-mdns
by itself doesn't impose any traffic on the net. Avahi does that and unless you
actually look some kind of .local domain lookup nss-mdns will not add to that in
any way)

Secondly, Fedora uses nscd by default. Running nscd and nss-mdns together
doesn't make too much sense if you use the "reload" option in nscd.conf. However
that option is used by default and Ulrich appears not to be interested in
finding a way to disable this option for mDNS lookups.

Then, he thinks that mDNS is braindead because the cacheing protocol works
differently from classic DNS. Leaves me speachless ...

He apparently also thinks that Avahi is not a good thing either, but is OK with
it in the default install as long as he may shut it down easily. The argument
that nss-mdns is disabled at the same time as avahi is shut down he doesn't
really accept, citing that the tiny bit of CPU time that is wasted when the
nss-mdns module checks whether avahi is around is too much. (which btw is rather
contradictorily, since nscd optimizes that away anyway)

This is all very unfortunate. I am not sure what we can do about this. But as a
total newcomer to Red Hat and Fedora I don't feel I am in a position to to fight
this through -- at least for now. Maybe when I have a better insight into how
Fedora and everything works I will give it another try.

What we can do of course is getting nss-mdns into Fedora, but only as an
optional package. To get this working cleanly the package would have to patch
nsswitch.conf and nscd.conf on installing -- which is rather ugly. It's better
than nothing, but not exactly the fullfillment of the promise of "zero
configuration".
Comment 28 Jason Tibbitts 2007-05-24 13:19:09 EDT
All I can say is that if Ulrich wants to block this package from Fedora
completely, he needs to comment on this bug and state his reasons for the record.

Otherwise, can someone get to the issues in comment #24 and we can move forward
with getting this in?  The issue of what gets included by default is something
to be discussed elsewhere.
Comment 29 Jason Tibbitts 2007-06-14 14:35:38 EDT
Well, folks, three weeks without any response.  I'm going to go ahead and close
this.
Comment 30 Bastien Nocera 2007-06-14 14:43:35 EDT
Excuse me, but that's not your bug to fix.

I'll go about fixing the packaging issues.
Comment 31 Christopher Blizzard 2007-06-14 14:55:11 EDT
We need this for OLPC.  It's very important that it gets in.  (We're not using
nscd and we are based heavily on avahi so there's a clear use case here.)
Comment 32 Christopher Blizzard 2007-06-14 15:02:34 EDT
-> bastien
Comment 33 Jason Tibbitts 2007-06-14 15:08:46 EDT
Umm, we do have a policy for closing out stalled review tickets.  I am tasked
with policing the list of review tickets.  It was most certainly within my
mandate to close out this ticket.

Now, I'm more than happy to see someone actually move this review forward.  If
closing the ticket was sufficient to get that to happen, then great.
Comment 34 Matthias Clasen 2007-06-19 15:35:12 EDT
Ok, going down the checklist, since nobody else seems to be willing to.
Here are the MUST items:


rpmlint output: 

E: nss-mdns non-executable-script /usr/libexec/nss-mdns-set.pl 0644
W: nss-mdns summary-not-capitalized glibc plugin for .local name resolution
W: nss-mdns percent-in-%post
W: nss-mdns dangerous-command-in-%post mv
W: nss-mdns percent-in-%preun
W: nss-mdns dangerous-command-in-%preun mv
W: nss-mdns one-line-command-in-%postun /sbin/ldconfig

Proposed fixes:
- make /usr/libexec/nss-mdns-set.pl executable
- replace %{_libexec} references by %{_libexecdir}
- maybe move the backup generation into the perl script itself ?
- do %postun -p /sbin/ldconfig


package name: ok
spec file name: ok
packaging guidelines: seems to be followed in general, things to consider:
  - does make install DESTDIR=$RPM_BUILD_ROOT work ?
  - why is it necessary to move stuff from %{_libdir} to %{_lib} post install,
    does --libdir=/lib not work ?
  - the %preun script has an $1 = 0 guard, should the %post script have
    a corresponding $1 = 1 guard ?
open source license: ok
license field matches license: not ok, spec says GPL, License file says LGPL
license file included: no, it is missing, add it to %doc
spec file language: ok
spec file readability: ok
sources match upstream: ok
package builds: yes
excludearch: n/a
build requires: ok
locales: n/a
ldconfig: ok
relocatable: n/a
directory ownership: ok
no duplicate files: ok
permissions: see above for the perl script, else ok
%clean: ok
macro use: don't put slashes in front of path macros in the file list, 
  and also not in constructs like $RPM_BUILD_ROOT%{_libdir}, else ok
permissible content: ok
large docs: n/a
docs: ok
header files: n/a
static libs: n/a
pc files: n/a
unversioned shared libs: n/a
-devel: n/a
libtool archives: ok
desktop files: n/a
directory ownership again: ok
%install clean build root: ok
filenames utf8: ok


Can you create a new package with those issues fixes, maybe updating to the
latest version at the same time ?
Comment 35 Jason Tibbitts 2007-06-19 15:39:03 EDT
Well, obviously I was willing to work on this package (see comment 24).  I'm
happy to review this package, or let mclasen do it, but no progress is going to
be made unless someone responds to the review comments and puts out an updated
package.
Comment 36 Lennart Poettering 2007-06-21 21:11:42 EDT
I've uploaded updated packages to:

http://0pointer.de/public/rpms/nss-mdns/

I fixed (or at least believe so) all issues pointed out in this bug report. I
also updated Bastien's packages to nss-mdns 0.10 which I recently released
upstream. Finally, I replaced the perl script for patching /etc/nsswitch.conf by
a simpler, more robust one which is based on the one used in the Debian package,
and thus already got some testing.

Please review!
Comment 37 Adam Goode 2007-06-21 21:32:32 EDT
Hi,

It doesn't build on x86_64:

File not found by glob: /var/tmp/nss-mdns-0.10-1-buildroot/lib64/*


I think it will be tricky to build this on multiarch platforms, since it really
needs to install libraries for ALL variants of the arch. Otherwise, the
nsswitch.conf will have valid settings for only some arches, and cause others to
fail.

An old example I had with this is 32-bit Firefox DNS resolution.
Comment 38 Jason Tibbitts 2007-06-22 01:48:15 EDT
The files are being installed into /lib on x86_64 instead of /lib64.  The simple
fix is to simply pass "--libdir=/%{_lib}" instead of "--libdir=/lib".

I have no idea about the multilib issues; I suspect that this is simply a
situation where users who don't install both arches (as is currently yum's
default behavior) just get weird behavior.  Still, the issue isn't really
something that can be solved within the confines of this package, since the
x86_64 version can't require the i386 package nor can it actually contain i386
libraries.

In any case, let's look at rpmlint output for the package after the above fix to
get it building on my build server.  I don't believe that any of these are blockers.

W: nss-mdns summary-not-capitalized glibc plugin for .local name resolution
  I personally think this is OK; I wouldn't normally capitalize glibc in any 
  context.

W: nss-mdns dangerous-command-in-%post perl
W: nss-mdns dangerous-command-in-%preun perl
  Dangerous, maybe.  Ugly, definitely.  But you've already described why this 
  needs to be done, and in lieu of /etc/nsswitch.d I don't think there's any 
  other option.

I note you're not using the %{?dist} tag.  There's certainly no requirement that
you do so, but I always ping folks to make sure they understand the issues that
crop up when you don't use it.

You need fine-grained dependencies; the package doesn't just require perl, it
needs it there to run its post script.  So you need:
   Requires(post): perl
   Requires(post): /sbin/ldconfig
You can also drop the Requires: perl bit, unless the package actually needs perl
in order to run normally.

Review:
* source files match upstream:
   1e683c2e7c3921814706d62fbbd3e9cbf493a75fa00255e0e715508d8134fa6d  
   nss-mdns-0.10.tar.gz
* package meets naming and versioning guidelines.
* specfile is properly named, is cleanly written and uses macros consistently.
* summary is OK.
* description is OK.
* build root is OK.
X license field says "GPL" but the LICENSE file says "LGPL"
* license is open source-compatible.
* license text included in upstream source but not in the package.
* latest version is being packaged.
* BuildRequires are proper.
* compiler flags are appropriate.
* %clean is present.
* package builds in mock (development, x86_64) (after the above fix)
* package installs properly
* debuginfo package looks complete.
* rpmlint has acceptable complaints.
X final provides and requires missing some dependencies; see above.
   libnss_mdns.so.2()(64bit)
   libnss_mdns.so.2(NSSMDNS_0)(64bit)
   libnss_mdns4.so.2()(64bit)
   libnss_mdns4.so.2(NSSMDNS_0)(64bit)
   libnss_mdns4_minimal.so.2()(64bit)
   libnss_mdns4_minimal.so.2(NSSMDNS_0)(64bit)
   libnss_mdns6.so.2()(64bit)
   libnss_mdns6.so.2(NSSMDNS_0)(64bit)
   libnss_mdns6_minimal.so.2()(64bit)
   libnss_mdns6_minimal.so.2(NSSMDNS_0)(64bit)
   libnss_mdns_minimal.so.2()(64bit)
   libnss_mdns_minimal.so.2(NSSMDNS_0)(64bit)
   nss-mdns = 0.10-1
  =
   /bin/sh
   /sbin/ldconfig
   perl

* %check is not present; no test suite upstream.  I have no means at the moment 
  to test this package.
X shared libraries are present; ldconfig is called as necessary but dependency 
  on ldconfig in %post is not present.
* owns the directories it creates.
* doesn't own any directories it shouldn't.
* no duplicates in %files.
* file permissions are appropriate.
X scriptlets present are OK, but the dependencies are off.
* code, not content.
* documentation is small, so no -docs subpackage is necessary.
* %docs are not necessary for the proper functioning of the package.
* no headers.
* no pkgconfig files.
* no static libraries.
* no libtool .la files.
Comment 39 Lennart Poettering 2007-06-22 10:04:45 EDT
I have uploaded updated packages now:

http://0pointer.de/public/rpms/nss-mdns/

(In reply to comment #37)
> Hi,
> 
> It doesn't build on x86_64:
> 
> File not found by glob: /var/tmp/nss-mdns-0.10-1-buildroot/lib64/*

I believe I fixed this now, but actually cannot test this because I have no
64bit system around. Please try the updated package.

(In reply to comment #38)
> The files are being installed into /lib on x86_64 instead of /lib64.  The simple
> fix is to simply pass "--libdir=/%{_lib}" instead of "--libdir=/lib".

Done. (See above)

> I note you're not using the %{?dist} tag.  There's certainly no requirement that
> you do so, but I always ping folks to make sure they understand the issues that
> crop up when you don't use it.

Nope. I do not understand the issues. I just left in there what Bastien
originally put in there. (Blame the frenchies!) Please enlighten me about the
implications!

I added the dist tag stuff now, just in case.

> You need fine-grained dependencies; the package doesn't just require perl, it
> needs it there to run its post script.  So you need:
>    Requires(post): perl
>    Requires(post): /sbin/ldconfig

I fixed that now and added fine-grained deps for post, preun, postun. For perl,
ldconfig and /bin/sh. (does depending on /bin/sh make any real sense or is it
superfluous because it is such a basic tool anyway?)

> You can also drop the Requires: perl bit, unless the package actually needs perl
> in order to run normally.

Unless /etc/nsswitch.conf is patched nss-mdns is entirely useless. You cannot
run it manually, it just sits there and takes up some disk space. Thus I would
argue that depending on perl during installation does make a lot of sense.

I also added a depends on avahi, given that Avahi is required to be installed to
 make nss-mdns any useful.

> X license field says "GPL" but the LICENSE file says "LGPL"

Fixed.

> X final provides and requires missing some dependencies; see above.
>    libnss_mdns.so.2()(64bit)
>    libnss_mdns.so.2(NSSMDNS_0)(64bit)
>    libnss_mdns4.so.2()(64bit)
>    libnss_mdns4.so.2(NSSMDNS_0)(64bit)
>    libnss_mdns4_minimal.so.2()(64bit)
>    libnss_mdns4_minimal.so.2(NSSMDNS_0)(64bit)
>    libnss_mdns6.so.2()(64bit)
>    libnss_mdns6.so.2(NSSMDNS_0)(64bit)
>    libnss_mdns6_minimal.so.2()(64bit)
>    libnss_mdns6_minimal.so.2(NSSMDNS_0)(64bit)
>    libnss_mdns_minimal.so.2()(64bit)
>    libnss_mdns_minimal.so.2(NSSMDNS_0)(64bit)
>    nss-mdns = 0.10-1
>   =
>    /bin/sh
>    /sbin/ldconfig
>    perl

I don't understand this entirely, but I think I fixed this with the fine-grained
dependencies, haven't I?

> X shared libraries are present; ldconfig is called as necessary but dependency 
>   on ldconfig in %post is not present.

Fixed.

> X scriptlets present are OK, but the dependencies are off.

I don't really understand this either, but this is fixed as well I think, by the
fine-grained deps stuff.

BTW, how does one generate that review report you posted? That's not rpmlint
output, is it?

Please review again!
Comment 40 Jason Tibbitts 2007-06-22 15:14:17 EDT
(In reply to comment #39) 
[dist tag]
> Nope. I do not understand the issues. I just left in there what Bastien
> originally put in there. (Blame the frenchies!) Please enlighten me about the
> implications!

Sure.  First, see http://fedoraproject.org/wiki/Packaging/DistTag for an
overview.  The basic problem is that without the dist tag you have to keep
separate specs for each supported release, since you cannot have the same
version-release string on two different branches.  Usually new packagers not
using the dist tag import and build for rawhide, then try to import and build
for a release branch and get a nice useless error about trying to apply the same
tag to multiple branches when they go to build.

> I fixed that now and added fine-grained deps for post, preun, postun. For
> perl, ldconfig and /bin/sh. (does depending on /bin/sh make any real sense or 
> is it superfluous because it is such a basic tool anyway?)

Actually rpmbuild will automatically give you the proper dependency for the
shell needed to run a scriptlet.  So unless you use -p you get an automatic
depdency on /bin/sh, and if you have %postun -p /sbin/ldconfig then you get the
necessary Requires(postun): /sbin/ldconfig automatically.  So basically the two
dependencies on /bin/sh you have, along with the Requires(postun):
/sbin/ldconfig, are not really needed but aren't really harmful either.

> Unless /etc/nsswitch.conf is patched nss-mdns is entirely useless. You cannot
> run it manually, it just sits there and takes up some disk space.

Yes, I know, but you need it at package install/removal time to run the
scriptlets, not at any other time.  The difference is essentially academic in
any case.  The way you have things listed currently is OK.

> I also added a depends on avahi, given that Avahi is required to be installed
> to make nss-mdns any useful.

OK.

> I don't understand this entirely, but I think I fixed this with the 
> fine-grained dependencies, haven't I?

I always list out the full set of dependencies a package has, noting any bad
ones and mentioning any deficiencies I notice.

> BTW, how does one generate that review report you posted? That's not rpmlint
> output, is it?

Only three lines of that are rpmlint output; the rest is my usual review
template which I paste in and edit accordingly for each package I review.

At this point I think things are OK; you have some unnecessary dependencies as
mentioned above, but they're merely redundant and don't hurt anything.  You can
remove them when you check in if you like.

APPROVED
Comment 41 Lennart Poettering 2007-06-25 09:17:27 EDT
New Package CVS Request
=======================
Package Name: nss-mdns
Short Description: glibc plugin for .local name resolution
Owners: lpoetter@redhat.com
Branches: FC-7 FC-8 devel
Comment 42 Kevin Fenzi 2007-06-25 15:23:11 EDT
cvs done. 
Note for refrence that the FC-7 branch should be F-7, there is no FC-8 branch
(thats devel) and you don't need to list devel (it's implied). 

Comment 43 Lennart Poettering 2007-06-25 16:55:48 EDT
Commited to CVS.

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