To subscribe or unsubscribe via the World Wide Web, visit
http://lists.freebsd.org/mailman/listinfo/freebsd-gnome
or, via email, send a message with subject or body 'help' to
freebsd-gn...@freebsd.org
You can reach the person managing the list at
freebsd-g...@freebsd.org
When replying, please edit your Subject line so it is more specific
than "Re: Contents of freebsd-gnome digest..."
Today's Topics:
1. net/avahi-app (Doug Barton)
2. /usr/ports/UPDATING Suggestions and Script (thoran)
----------------------------------------------------------------------
Message: 1
Date: Fri, 26 Mar 2010 18:14:55 -0700
From: Doug Barton <do...@FreeBSD.org>
Subject: net/avahi-app
To: gn...@FreeBSD.org
Message-ID: <4BAD5C0F...@FreeBSD.org>
Content-Type: text/plain; charset=ISO-8859-1
-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160
Howdy,
FYI I am in the process of deprecating the %%RC_SUBR%% stuff and noticed
that net/avahi-app has some code related to it. I have already updated
the patch files for the rc.d scripts (which can now be simplified the
next time they are regenerated) but I also noticed that there are some
other related items in the Makefile that can probably be eliminated as
well.
Regards,
Doug
- --
... and that's just a little bit of history repeating.
-- Propellerheads
Improve the effectiveness of your Internet presence with
a domain name makeover! http://SupersetSolutions.com/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.14 (FreeBSD)
iEYEAREDAAYFAkutXA8ACgkQyIakK9Wy8PuScQCdEMuZCKCP9zRtgP9BdbsmT8XA
fhkAoMNxJU2fEclLt2T25O7q/i+sVKVi
=O7PA
-----END PGP SIGNATURE-----
------------------------------
Message: 2
Date: Sat, 27 Mar 2010 12:29:22 +1100
From: thoran <nu...@thoran.com>
Subject: /usr/ports/UPDATING Suggestions and Script
To: FreeBSD GNOME Team <gn...@FreeBSD.org>
Message-ID: <9DF5B3BA-FDE9-4062...@thoran.com>
Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes
Hi,
I found your email address in /usr/ports/UPDATING. I am emailing you
because you are one of a number of people who make entries into this
file and as such may have some control over either the formatting
conventions of /usr/ports/UPDATING or how well such conventions are
adhered to.
The reason I care is because I have the intention of parsing /usr/
ports/UPDATING with a view to comparing those ports noted in /usr/
ports/UPDATING with a list of the installed ports, rather than having
to look at everything in that very long file. (Note that this is no
longer an intention, since I just wrote something to do this. See
below...)
I understand that the instructions for /usr/ports/UPDATING are for it
to be "read", but given it's length it might be easier to be able to
check this file against installed ports automatically in the first
instance.
Already I have found cat UPDATING | grep AFFECTS: to be handy, but an
automated process (possibly including a cron?) to parse this and do
the matching with installed ports automatically is surely a save.
Does anyone agree?
However, if this is to be done, then may I suggest the following...
1. On the AFFECTS: line only use a list of affected ports and nothing
else, ie.
AFFECTS: category/port
AFFECTS: category/port, category/port
2. When there is a list of ports and that list is quite long, it may
be simpler to make reference to a meta port and exclude some specific
known ports which are in the meta package, but are not affected, ie.
AFFECTS: category/meta-port, [category/port, category/port]
3. On the AFFECTS: line put the version of the port(s) affected, ie.
AFFECTS: category/port-x.y.z
AFFECTS: category/port-x.y.z, category/port-a.b.c
That way checks against the installed ports for specific versions can
be made to ensure relevancy.
4. Alternately, either have the version number in the AFFECTS: line as
per 3. above, or have the date of the particular version of a port
readily accessible, so as relevancy can be checked by date rather than
by version. Version numbers are preferred however.
5. On the AFFECTS: line, please don't do this (no category/port format):
AFFECTS: all ports using libtool as part of the build process
AFFECTS: ports that use Display Postscript libraries and xorg-libraries
5. Also please don't do this (no AUTHOR: line):
20051002:
AFFECTS: users of x11-toolkits/py-wxPython26
6. Somewhat unimportantly, on the AUTHOR: line, please don't do this:
AUTHOR: ah...@FreeBSD.org and the FreeBSD GNOME team
Rather have an email address only, or a mailing list or alias address.
And after all that, so as to not be merely an irritating troll, here's
a first go tonight at a script to do some automation of the check
against installed ports below...
Lastly, I imagine a fair proportion of the older email addresses will
bounce, so I'm putting nu...@thoran.com as the from address. I haven't
put this up there yet, but try me at github instead.
Thanks,
thoran
#!/usr/bin/env ruby
# check_ports_updating
# 2010.03.26
# 0.3.0
# Description: This checks the /usr/ports/UPDATING file for matching
installed ports and outputs any entries for the last year.
# Copyright: (c) 2010, thoran. All rights reserved.
# Licence: Either Ruby's or the current 2-clause FreeBSD as you wish.
# Notes: This restricts output of matching ports to the last year of
notices, since I expect they are likely to be the most relevant.
require 'date'
class Array
alias_method :last!, :pop
def all_but_last
d = self.dup
d.last!
d
end
end
class Date
def self.last_year
begin
new(today.year, 2, 29)
new(today.year - 1, today.month, today.mday - 1)
rescue
new(today.year - 1, today.month, today.mday)
end
end
def self.parse(s, day_first = false)
require 'parsedate'
if day_first
a = ParseDate.parsedate(s).compact
a = [a[0], a[2], a[1]]
Date.new(*a)
else # assume day_second, and otherwise make best guess
begin
a = ParseDate.parsedate(s).compact
Date.new(*a)
rescue
a = [a[0], a[2], a[1]]
Date.new(*a)
end
end
end
end
class String
def last_char
self[self.length - 1, 1]
end
def last_char!
s = self[self.length - 1, 1]
chop!
s
end
def munch
while self.last_char == "\n"
self.last_char!
end
self
end
def lmunch
self.reverse.munch.reverse
end
end
class InstalledPorts
class << self
def list
pkg_info_bin = `which pkg_info`.chomp
raw_port_list = `#{pkg_info_bin} -ao`
raw_port_list.split("\n").inject([]){|a,line| a << line.match(/for
(.*):$/)[1] if line =~ /^Information/; a}
end
def list_without_version
list.collect{|e| e.split('-').all_but_last.join}
end
end
end
class PortsUpdatingItem
def initialize(item)
@item = item
end
def affects
md = @item.match(/^ AFFECTS: (.*$)/)
md[1] if md
end
def author
md = @item.match(/^ AUTHOR: (.*$)/)
md[1] if md
end
def date
md = @item.match(/^(\d\d\d\d\d\d\d\d):$/)
md[1] if md
end
def description
@item.gsub(/^ AFFECTS: .*$/, '').gsub(/^ AUTHOR: .*$/, '').gsub(/^\d
\d\d\d\d\d\d\d:$/, '')
end
end
class PortsUpdatingFile
class << self
def parse(filename = nil)
filename ||= '/usr/ports/UPDATING'
item = ''
updating_items = []
File.read(filename).each do |line|
if line =~ /^\d\d\d\d\d\d\d\d:$/
updating_items << PortsUpdatingItem.new(item)
item = line
else
item = item + line
end
end
updating_items.shift
updating_items
end
end
end
class PortsUpdating
class << self
def check(filename = nil)
matches = []
InstalledPorts.list_without_version.each do |port|
PortsUpdatingFile.parse(filename).each do |item|
if item.affects =~ /#{port}/
if Date.parse(item.date) > Date.last_year
matches << {:port => port, :date => item.date, :affects =>
item.affects, :author => item.author, :description => item.description}
end
end
end
end
show_results(matches)
end
def show_results(matches)
puts
m = matches.sort{|a,b| a[:port] <=> b[:port]}
m.each do |e|
puts "PORT: #{e[:port]}"
puts "DATE: #{e[:date]}"
puts "AFFECTS: #{e[:affects]}"
puts "AUTHOR: #{e[:author]}"
puts "DESCRIPTION: \n#{e[:description].lmunch}"
puts
end
puts
puts "Overview of Affected Installed Ports:"
puts
m = matches.sort{|a,b| a[:date] <=> b[:date]}
m.each{|e| puts " #{e[:date]}, #{e[:port]}"}
puts
end
end
end
if __FILE__ == $0
PortsUpdating.check(ARGV[0])
end
------------------------------
End of freebsd-gnome Digest, Vol 361, Issue 5
*********************************************