Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Sep 2018 08:24:25 -0600
From:      Alan Somers <asomers@freebsd.org>
To:        Eric van Gyzen <eric@vangyzen.net>, FreeBSD CURRENT <freebsd-current@freebsd.org>, steffen@sdaoden.eu
Subject:   Re: Request for Review: Generate /etc/services from the IANA registry
Message-ID:  <CAOtMX2iHph_mS9PBkSaSs%2BdsjVa9niScQ9-Q-efr5pavf_9tZw@mail.gmail.com>
In-Reply-To: <20180911142000.unrYV%steffen@sdaoden.eu>
References:  <8b7930bc-1086-05d3-c019-052368ddf097@vangyzen.net> <59cd421e-f5d4-855a-83ec-65726f792555@vangyzen.net> <20180911142000.unrYV%steffen@sdaoden.eu>

next in thread | previous in thread | raw e-mail | index | archive | help
Don't worry Steffen.  Python won't be a build requirement for FreeBSD even
after Eric's patch.  His Python script will only need to be run whenever
IANA updates its database, and the results will be checked into source
control.  So for a normal user, there is no change to "make buildworld &&
make installworld".

As for Python vs Awk, I too tried to do this with Awk.  However, Awk can't
easily handle things like IANA's representation of aliases, and it can't
easily format the list in the same order as our current list.  Python is
truly a better choice.

-Alan

On Tue, Sep 11, 2018 at 8:19 AM Steffen Nurpmeso <steffen@sdaoden.eu> wrote:

> Eric van Gyzen wrote in <59cd421e-f5d4-855a-83ec-65726f792555@vangyzen.net
> >:
>  |On 9/10/18 12:04 PM, Eric van Gyzen wrote:
>  |> Would anyone like to review this change to generate /etc/services from
>  |> the IANA registry?
>  |>
>  |>      https://reviews.freebsd.org/D17106
>  |
>  |If that review made your browser unhappy, try this one instead:
>
> Yes it did.
>
>  | https://reviews.freebsd.org/D17115
>
> I mean, i have nothing to do with FreeBSD except that i use it
> since 4.7 (though some yours only indirectly as Mac OS X), and
> i am in opposition to quite some directions taken, but who am i,
> that is ok, i have a very narrow use case.  But this is one of the
> things i really do not understand, bringing XML and Python stuff
> needlessly into FreeBSD seems very odd.  For example, ArchLinux
> and CRUX Linux use a simple portable awk script to generate
> services and protocols, and all you need to count the number of
> services is a normal Unix pipeline which strips comments and then
> calls wc -l.  I'll paste the script below this.  Thank you.
> And ciao already here
>
> #!/bin/sh -
> #@ Update protocols and services from IANA.
> #@ Taken from ArchLinux script written by Gaetan Bisson.  Adjusted for
> CRUX.
>
> awk=awk
> curl=curl
> url_pn=
> https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml
> url_snpn=https://www.iana.org/assignments/service-names-port-numbers/\
> service-names-port-numbers.xml
> <https://www.iana.org/assignments/service-names-port-numbers/%5Cservice-names-port-numbers.xml>;
>
> datetime=`date +'%FT%T%z'`
>
> download() {
>    echo 'Downloading protocols'
>    ${curl} -o protocols.xml ${url_pn}
>    [ ${?} -eq 0 ] || exit 20
>    echo 'Downloading services'
>    ${curl} -o services.xml ${url_snpn}
>    [ ${?} -eq 0 ] || exit 21
> }
>
> process() {
>    echo 'Processing protocols'
>    ${awk} -F "[<>]" -v URL="${url_pn}" -v DT="${datetime}" '
>       BEGIN{
>          print "# /etc/protocols, created " DT
>          print "# Source: " URL
>       }
>       /<record/ {v = n = ""}
>       /<value/ {v = $3}
>       /<name/ && $3 !~ / / {n = $3}
>       /<\/record/ && n && v != ""{
>          printf "%-12s %3i %s\n", tolower(n), v, n
>       }
>    ' < protocols.xml > protocols.new
>    [ ${?} -eq 0 ] || exit 30
>
>    echo 'Processing services'
>    ${awk} -F "[<>]" -v URL="${url_snpn}" -v DT="${datetime}" '
>       BEGIN{
>          print "# /etc/services, created " DT
>          print "# Source: " URL
>       }
>       /<record/ {n = u = p = c = ""}
>       /<name/ && !/\(/ {n = $3}
>       /<number/ {u = $3}
>       /<protocol/ {p = $3}
>       /Unassigned/ || /Reserved/ || /historic/ {c = 1}
>       /<\/record/ && n && u && p && !c{
>          printf "%-15s %5i/%s\n", n, u, p
>       }
>    ' < services.xml > services.new
>    [ ${?} -eq 0 ] || exit 31
> }
>
> update() {
>    mv protocols.new protocols
>    [ ${?} -eq 0 ] || exit 40
>    mv services.new services
>    [ ${?} -eq 0 ] || exit 41
>    rm -f protocols.xml services.xml
> }
>
> download
> process
> #update
>
> --steffen
> |
> |Der Kragenbaer,                The moon bear,
> |der holt sich munter           he cheerfully and one by one
> |einen nach dem anderen runter  wa.ks himself off
> |(By Robert Gernhardt)
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2iHph_mS9PBkSaSs%2BdsjVa9niScQ9-Q-efr5pavf_9tZw>