public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download: 
* Re: [gentoo-dev] Automated Package Removal and Addition Tracker, for the week ending 2015-08-23 23:59 UTC
       [not found]     ` <20150824074816.GA8830@ultrachro.me>
@ 2015-08-24 17:44 99%   ` Robin H. Johnson
  0 siblings, 0 replies; 1+ results
From: Robin H. Johnson @ 2015-08-24 17:44 UTC (permalink / raw
  To: gentoo-dev


[-- Attachment #1.1: Type: text/plain, Size: 1212 bytes --]

On Mon, Aug 24, 2015 at 09:48:16AM +0200, Patrice Clement wrote:
> Monday 24 Aug 2015 00:05:20, Robin H. Johnson wrote :
> > The attached list notes all of the packages that were added or removed
> > from the tree, for the week ending 2015-08-23 23:59 UTC.
> > 
> > Removals:
> > 
> > Additions:
> > 
> > --
> > Robin Hugh Johnson
> > Gentoo Linux Developer
> > E-Mail     : robbat2@gentoo.org
> > GnuPG FP   : 11AC BA4F 4778 E3F6 E4ED  F38E B27B 944E 3488 4E85
> 
> > Removed Packages:
> > Added Packages:
> > Done.
> You should turn this off now. :)
> 
> Btw, do you still need help with the same script but for Git?
I said last week already, that would somebody please write a Git version
of it. The prior one was very CVS-specific.

The mailer part is already separate from the data-build part, so here's
that data-build part if you wanted to integrate with the existing mail.

I've attached all the scripts from the CVS version, so you can see how
to slot in the Git code (replace the process.sh and .py script).

-- 
Robin Hugh Johnson
Gentoo Linux: Developer, Infrastructure Lead
E-Mail     : robbat2@gentoo.org
GnuPG FP   : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85

[-- Attachment #1.2: find-cvs-adds-and-removals-wrapper.sh --]
[-- Type: application/x-sh, Size: 516 bytes --]

[-- Attachment #1.3: find-cvs-adds-and-removals-process.sh --]
[-- Type: application/x-sh, Size: 841 bytes --]

[-- Attachment #1.4: find-cvs-adds-and-removals.py --]
[-- Type: text/x-python, Size: 4027 bytes --]

#!/usr/bin/env python2
# Authored by Alec Warner <antarus@gentoo.org>
# Significent modifications by Robin H Johnson <robbat2@gentoo.org>
# Released under the GPL Version 2
# Copyright Gentoo Foundation 2006

# Changelog: Initial release 2006/10/27

doc = """
# Purpose: This script analyzes the cvs history file in an attempt to locate package
# additions and removals.  It takes 3 arguments; two of which are optional.  It needs
# the path to the history file to read.  If a start_date is not provided it will read
# the entire file and match any addition/removal.  If you provide a start date it will
# only match thins that are after that start_date.  If you provide an end date you can
# find matches over date ranges.  If an end date is not provided it defaults to now()
"""

import sys, os, re, time, datetime

new_package = re.compile("^A(.*)\|.*gentoo-x86\/(.*)\/(.*)\|.*\|ChangeLog$")
removed_package = re.compile("^R(.*)\|.*gentoo-x86\/(.*)\/(.*)\|.*\|ChangeLog$")

class record(object):
	def __init__(self, who, date, cp, op ):
		"""
		    Who is a string
		    date is a unix timestamp
		    cp is a category/package
		    op is "added", "removed", "moved"
		"""
		self.who = who
		self.date = datetime.datetime.fromtimestamp( date ) 
		self.package = cp
		self.op = op

	def __str__( self ):
		#return "Package %s was %s by %s on %s" % (self.package, self.op, self.who, self.date)
		return "%s,%s,%s,%s" % (self.package, self.op, self.who, self.date)

	def cat (self):
		return self.package.split("/")[0]
	
	def pn (self):
		return self.package.split("/")[1]

	def date (self):
		return self.date
	
	def who (self):
		return self.who
	
	def op (self):
		return self.op


def main():
	if (len(sys.argv) < 2):
		usage()
		sys.exit(1)

	args = sys.argv[1:]
	history_file = args[0]
	# Robin requested I let one specify stdin
	if history_file == "-":
		history = sys.stdin
	else:
		history = open( history_file )

	if len(args) >= 2: 
		start_date = int(args[1])
		#start_date = time.strptime( start_date, "%d/%m/%Y")
		#start_date = time.mktime( start_date )
	else:
		start_date = 0 # no real start date then.

	if len(args) >= 3:
		end_date = int(args[2])
		#end_date = time.strptime( end_date, "%d/%m/%Y")
		#end_date = time.mktime( end_date )
	else:
		end_date = time.time()

	try:
		
		lines = history.readlines()
	except IOError as e:
		print("Failed to open History file!")
		raise e
	except OSError as e:
		print("Failed to open History file!")
		raise e

	removals = []
	adds = []
	moves = []
	for line in lines:
		match = new_package.match( line )
		if match:
			t = match.groups()[0]
			split = t.split("|")
			t = split[0]
			who = split[1]
			try:
				t = int(t, 16)
			except e:
				print("Failed to convert hex timestamp to integer")
				raise e

			if t < end_date and t > start_date:
				rec = record( who, t, match.groups()[1] + "/" + match.groups()[2], "added" )
				adds.append( rec )
				continue
			else:
				continue # date out of range
		match = removed_package.match( line )

		if match:
			t = match.groups()[0]
			split = t.split("|")
			t = split[0]
			who = split[1]
			try:
				t = int(t, 16)
			except e:
				print("Failed to convert hex timestamp to integer")
				raise e
			if t < end_date and t > start_date:
				rec = record( who, t, match.groups()[1] + "/" + match.groups()[2], "removed" )
				removals.append( rec )
				continue
			else:
				continue # date out of range
	print("Removed Packages:")
	for pkg in removals:
		print(pkg)

	print("Added Packages:")
	for pkg in adds:
		print(pkg)
	print
	print("Done.")

def usage():
	print(sys.argv[0] + " <history file> [start date] [end date]")
	print("Start date defaults to '0'.")
	print("End date defaults to 'now'.")
	print("Both dates should be specified as UNIX timestamps")
	print("(seconds since 1970-01-01 00:00:00 UTC)")
	print(doc)

if __name__ == "__main__":
	main()


[-- Attachment #1.5: find-cvs-adds-and-removals-mailer.sh --]
[-- Type: application/x-sh, Size: 1841 bytes --]

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 445 bytes --]

^ permalink raw reply	[relevance 99%]

Results 1-1 of 1 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2015-08-24  0:05     [gentoo-dev] Automated Package Removal and Addition Tracker, for the week ending 2015-08-23 23:59 UTC Robin H. Johnson
     [not found]     ` <20150824074816.GA8830@ultrachro.me>
2015-08-24 17:44 99%   ` Robin H. Johnson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox