From skayser at users.sourceforge.net Wed Dec 1 00:00:34 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Tue, 30 Nov 2010 23:00:34 +0000 Subject: [csw-devel] SF.net SVN: gar:[11744] csw/mgar/gar/v2-noexternals Message-ID: Revision: 11744 http://gar.svn.sourceforge.net/gar/?rev=11744&view=rev Author: skayser Date: 2010-11-30 23:00:34 +0000 (Tue, 30 Nov 2010) Log Message: ----------- gar/v2-noexternals: drop the requirement for the $GARDIR env variable Modified Paths: -------------- csw/mgar/gar/v2-noexternals/category.mk csw/mgar/gar/v2-noexternals/gar.mk csw/mgar/gar/v2-noexternals/gar.pkg.mk Modified: csw/mgar/gar/v2-noexternals/category.mk =================================================================== --- csw/mgar/gar/v2-noexternals/category.mk 2010-11-30 15:51:57 UTC (rev 11743) +++ csw/mgar/gar/v2-noexternals/category.mk 2010-11-30 23:00:34 UTC (rev 11744) @@ -1,13 +1,12 @@ # vim: ft=make ts=4 sw=4 noet -# This makefile is to be included from Makefiles in each category -# directory. +# +# This Makefile is the main entry point to GAR and is included by +# each package build description. As such, the file name 'category.mk' +# is slightly misleading and could be subject to future change. +# -# This is needed by the pkg build approach with gar/ in each pkg build -# directory and is overriden by the "mgar" wrapper which pre-sets GARDIR -# with an absolute path. If we could determine the full path of -# _this_ file's directory, we could use it for both approaches and -# there would be no need to pre-set it for "mgar". -GARDIR ?= $(CURDIR)/gar +# Determine this file's directory, i.e. the GAR base directory +GARDIR := $(dir $(lastword $(MAKEFILE_LIST))) ifeq (,$(wildcard $(GARDIR)/categories/$(CATEGORIES)/category.mk)) $(error The category '$(CATEGORIES)' is invalid. Valid categories are: $(patsubst $(GARDIR)/categories/%,%,$(wildcard $(GARDIR)/categories/*))) Modified: csw/mgar/gar/v2-noexternals/gar.mk =================================================================== --- csw/mgar/gar/v2-noexternals/gar.mk 2010-11-30 15:51:57 UTC (rev 11743) +++ csw/mgar/gar/v2-noexternals/gar.mk 2010-11-30 23:00:34 UTC (rev 11744) @@ -11,21 +11,11 @@ # Comment this out to make much verbosity #.SILENT: -#ifeq ($(origin GARDIR), undefined) -#GARDIR := $(CURDIR)/../.. -#endif - -#GARDIR ?= ../.. -#ifeq ($(origin GARDIR), undefined) -#GARDIR := $(CURDIR)/../.. -#endif - ifneq ($(abspath /),/) $(error Your version of 'make' is too old: $(MAKE_VERSION). Please make sure you are using at least 3.81) endif -# Still required? GARDIR should be pre-set by the top-level category.mk -GARDIR ?= gar +# $(GARDIR) is pre-set by the top-level category.mk GARBIN = $(GARDIR)/bin DIRSTODOTS = $(subst . /,./,$(patsubst %,/..,$(subst /, ,/$(1)))) @@ -136,7 +126,7 @@ merge-$(2): @echo "[===== Building modulation '$(2)' on host '$$(BUILDHOST)' =====]" $$(if $$(and $$(BUILDHOST),$$(filter-out $$(THISHOST),$$(BUILDHOST))),\ - $(SSH) $$(BUILDHOST) "PATH=$$(PATH) GARDIR=$(GARDIR) MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $$(CURDIR) $(if $(GAR_PLATFORM),GAR_PLATFORM=$(GAR_PLATFORM)) MODULATION=$(2) $(3) merge-modulated",\ + $(SSH) $$(BUILDHOST) "PATH=$$(PATH) MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $$(CURDIR) $(if $(GAR_PLATFORM),GAR_PLATFORM=$(GAR_PLATFORM)) MODULATION=$(2) $(3) merge-modulated",\ $(MAKE) $(if $(GAR_PLATFORM),GAR_PLATFORM=$(GAR_PLATFORM)) MODULATION=$(2) $(3) merge-modulated\ ) @# The next line has intentionally been left blank to explicitly terminate this make rule Modified: csw/mgar/gar/v2-noexternals/gar.pkg.mk =================================================================== --- csw/mgar/gar/v2-noexternals/gar.pkg.mk 2010-11-30 15:51:57 UTC (rev 11743) +++ csw/mgar/gar/v2-noexternals/gar.pkg.mk 2010-11-30 23:00:34 UTC (rev 11744) @@ -866,7 +866,7 @@ $(if $(PACKAGING_HOST_$P),\ $(if $(filter $(THISHOST),$(PACKAGING_HOST_$P)),\ $(MAKE) GAR_PLATFORM=$P _package && ,\ - $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin GARDIR=$(GARDIR) MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P _package" && \ + $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P _package" && \ ),\ $(error *** No host has been defined for platform $P)\ )\ @@ -881,7 +881,7 @@ echo " (built on this host)";\ $(MAKE) -s GAR_PLATFORM=$P _pkgshow;echo;,\ echo " (built on host '$(PACKAGING_HOST_$P)')";\ - $(SSH) $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin GARDIR=$(GARDIR) MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) -s GAR_PLATFORM=$P _pkgshow";echo;\ + $(SSH) $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) -s GAR_PLATFORM=$P _pkgshow";echo;\ )\ ) @$(MAKECOOKIE) @@ -892,7 +892,7 @@ $(if $(PACKAGING_HOST_$P),\ $(if $(filter $(THISHOST),$(PACKAGING_HOST_$P)),\ $(MAKE) -s GAR_PLATFORM=$P $* && ,\ - $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin GARDIR=$(GARDIR) MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P $*" && \ + $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P $*" && \ ),\ $(error *** No host has been defined for platform $P)\ )\ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Wed Dec 1 07:27:15 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Wed, 01 Dec 2010 06:27:15 +0000 Subject: [csw-devel] SF.net SVN: gar:[11745] csw/mgar/gar/v2/lib/python/package_checks.py Message-ID: Revision: 11745 http://gar.svn.sourceforge.net/gar/?rev=11745&view=rev Author: wahwah Date: 2010-12-01 06:27:15 +0000 (Wed, 01 Dec 2010) Log Message: ----------- Merge branch 'master' of file:///home/maciej/public_html/opencsw Modified Paths: -------------- csw/mgar/gar/v2/lib/python/package_checks.py Modified: csw/mgar/gar/v2/lib/python/package_checks.py =================================================================== --- csw/mgar/gar/v2/lib/python/package_checks.py 2010-11-30 23:00:34 UTC (rev 11744) +++ csw/mgar/gar/v2/lib/python/package_checks.py 2010-12-01 06:27:15 UTC (rev 11745) @@ -1101,6 +1101,9 @@ messenger.SuggestGarLine( "PACKAGES += %s" % suggested_pkgname) messenger.SuggestGarLine( + "CATALOGNAME_%s = %s" + % (suggested_pkgname, policy_catalogname_list[0])) + messenger.SuggestGarLine( "PKGFILES_%s += /%s" % (suggested_pkgname, binary_info["path"])) lib_basename, lib_filename = os.path.split(binary_info["path"]) messenger.SuggestGarLine( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Wed Dec 1 10:37:51 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Wed, 01 Dec 2010 09:37:51 +0000 Subject: [csw-devel] SF.net SVN: gar:[11746] csw/mgar/gar/v2 Message-ID: Revision: 11746 http://gar.svn.sourceforge.net/gar/?rev=11746&view=rev Author: skayser Date: 2010-12-01 09:37:50 +0000 (Wed, 01 Dec 2010) Log Message: ----------- gar/v2: merged branch v2-noexternals r11378:11745 Modified Paths: -------------- csw/mgar/gar/v2/category.mk csw/mgar/gar/v2/gar.mk csw/mgar/gar/v2/gar.pkg.mk Property Changed: ---------------- csw/mgar/gar/v2/ csw/mgar/gar/v2/pkglib/csw/depend Property changes on: csw/mgar/gar/v2 ___________________________________________________________________ Modified: svn:mergeinfo - /csw/mgar/gar/v2:4936-6678 /csw/mgar/gar/v2-bwalton:9784-10011 /csw/mgar/gar/v2-checkpkg:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation:10585-10737 /csw/mgar/gar/v2-checkpkg-stats:8454-8649 /csw/mgar/gar/v2-collapsed-modulations:6895 /csw/mgar/gar/v2-dirpackage:8125-8180 /csw/mgar/gar/v2-git/v2-relocate:7617 /csw/mgar/gar/v2-migrateconf:7082-7211 /csw/mgar/gar/v2-relocate:5028-11738 /csw/mgar/gar/v2-skayser:6087-6132 /csw/mgar/gar/v2-sqlite:10434-10449 + /csw/mgar/gar/v2:4936-6678 /csw/mgar/gar/v2-bwalton:9784-10011 /csw/mgar/gar/v2-checkpkg:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation:10585-10737 /csw/mgar/gar/v2-checkpkg-stats:8454-8649 /csw/mgar/gar/v2-collapsed-modulations:6895 /csw/mgar/gar/v2-dirpackage:8125-8180 /csw/mgar/gar/v2-git/v2-relocate:7617 /csw/mgar/gar/v2-migrateconf:7082-7211 /csw/mgar/gar/v2-noexternals:11592-11745 /csw/mgar/gar/v2-relocate:5028-11738 /csw/mgar/gar/v2-skayser:6087-6132 /csw/mgar/gar/v2-sqlite:10434-10449 Modified: csw/mgar/gar/v2/category.mk =================================================================== --- csw/mgar/gar/v2/category.mk 2010-12-01 06:27:15 UTC (rev 11745) +++ csw/mgar/gar/v2/category.mk 2010-12-01 09:37:50 UTC (rev 11746) @@ -1,8 +1,12 @@ # vim: ft=make ts=4 sw=4 noet -# This makefile is to be included from Makefiles in each category -# directory. +# +# This Makefile is the main entry point to GAR and is included by +# each package build description. As such, the file name 'category.mk' +# is slightly misleading and could be subject to future change. +# -GARDIR ?= $(abspath gar) +# Determine this file's directory, i.e. the GAR base directory +GARDIR := $(dir $(lastword $(MAKEFILE_LIST))) ifeq (,$(wildcard $(GARDIR)/categories/$(CATEGORIES)/category.mk)) $(error The category '$(CATEGORIES)' is invalid. Valid categories are: $(patsubst $(GARDIR)/categories/%,%,$(wildcard $(GARDIR)/categories/*))) Modified: csw/mgar/gar/v2/gar.mk =================================================================== --- csw/mgar/gar/v2/gar.mk 2010-12-01 06:27:15 UTC (rev 11745) +++ csw/mgar/gar/v2/gar.mk 2010-12-01 09:37:50 UTC (rev 11746) @@ -11,20 +11,11 @@ # Comment this out to make much verbosity #.SILENT: -#ifeq ($(origin GARDIR), undefined) -#GARDIR := $(CURDIR)/../.. -#endif - -#GARDIR ?= ../.. -#ifeq ($(origin GARDIR), undefined) -#GARDIR := $(CURDIR)/../.. -#endif - ifneq ($(abspath /),/) $(error Your version of 'make' is too old: $(MAKE_VERSION). Please make sure you are using at least 3.81) endif -GARDIR ?= $(abspath gar) +# $(GARDIR) is pre-set by the top-level category.mk GARBIN = $(GARDIR)/bin DIRSTODOTS = $(subst . /,./,$(patsubst %,/..,$(subst /, ,/$(1)))) @@ -135,7 +126,7 @@ merge-$(2): @echo "[===== Building modulation '$(2)' on host '$$(BUILDHOST)' =====]" $$(if $$(and $$(BUILDHOST),$$(filter-out $$(THISHOST),$$(BUILDHOST))),\ - $(SSH) $$(BUILDHOST) "PATH=$$(PATH) $(MAKE) -C $$(CURDIR) $(if $(GAR_PLATFORM),GAR_PLATFORM=$(GAR_PLATFORM)) MODULATION=$(2) $(3) merge-modulated",\ + $(SSH) $$(BUILDHOST) "PATH=$$(PATH) MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $$(CURDIR) $(if $(GAR_PLATFORM),GAR_PLATFORM=$(GAR_PLATFORM)) MODULATION=$(2) $(3) merge-modulated",\ $(MAKE) $(if $(GAR_PLATFORM),GAR_PLATFORM=$(GAR_PLATFORM)) MODULATION=$(2) $(3) merge-modulated\ ) @# The next line has intentionally been left blank to explicitly terminate this make rule @@ -395,7 +386,7 @@ # We call an additional extract-modulated without resetting any variables so # a complete unpacked set goes to the global dir for packaging (like gspec) -extract: checksum $(COOKIEDIR) pre-extract pre-extract-git-check extract-modulated $(addprefix extract-,$(MODULATIONS)) post-extract +extract: checksum $(COOKIEDIR) pre-extract $(if $(NOGITPATCH),,pre-extract-git-check) extract-modulated $(addprefix extract-,$(MODULATIONS)) post-extract @$(DONADA) extract-global: $(if $(filter global,$(MODULATION)),extract-modulated) @@ -406,7 +397,7 @@ $(addprefix dep-$(GARDIR)/,$(EXTRACTDEPS)) \ announce-modulation \ pre-extract-modulated pre-extract-$(MODULATION) $(EXTRACT_TARGETS) post-extract-$(MODULATION) post-extract-modulated \ - $(if $(filter global,$(MODULATION)),,post-extract-gitsnap) \ + $(if $(filter global,$(MODULATION)),,$(if $(NOGITPATCH),,post-extract-gitsnap)) \ $(foreach FILE,$(EXPANDVARS),expandvars-$(FILE)) @$(DONADA) @@ -467,7 +458,7 @@ patch: pre-patch $(addprefix patch-,$(MODULATIONS)) post-patch @$(DONADA) -patch-modulated: extract-modulated $(WORKSRC) pre-patch-modulated pre-patch-$(MODULATION) $(PATCH_TARGETS) $(if $(filter global,$(MODULATION)),,post-patch-gitsnap) post-patch-$(MODULATION) post-patch-modulated +patch-modulated: extract-modulated $(WORKSRC) pre-patch-modulated pre-patch-$(MODULATION) $(PATCH_TARGETS) $(if $(filter global,$(MODULATION)),,$(if $(NOGITPATCH),,post-patch-gitsnap)) post-patch-$(MODULATION) post-patch-modulated @$(DONADA) # returns true if patch has completed successfully, false @@ -484,9 +475,13 @@ fi ) @$(MAKECOOKIE) -makepatch: $(addprefix patch-,$(MODULATIONS)) $(addprefix makepatch-,$(MODULATIONS)) +makepatch: $(if $(NOGITPATCH),makepatch-nogit,$(addprefix patch-,$(MODULATIONS)) $(addprefix makepatch-,$(MODULATIONS))) @$(DONADA) +makepatch-nogit: + @echo You set NOGITPATCH in your build recipe. I can't create a patch. + @$(DONADA) + # Allow generation of patches from modified work source. makepatch-modulated: $(FILEDIR) @( if [ -d "$(WORKSRC)/.git" ]; then \ Modified: csw/mgar/gar/v2/gar.pkg.mk =================================================================== --- csw/mgar/gar/v2/gar.pkg.mk 2010-12-01 06:27:15 UTC (rev 11745) +++ csw/mgar/gar/v2/gar.pkg.mk 2010-12-01 09:37:50 UTC (rev 11746) @@ -877,7 +877,7 @@ $(if $(PACKAGING_HOST_$P),\ $(if $(filter $(THISHOST),$(PACKAGING_HOST_$P)),\ $(MAKE) GAR_PLATFORM=$P _package && ,\ - $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P _package" && \ + $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P _package" && \ ),\ $(error *** No host has been defined for platform $P)\ )\ @@ -892,7 +892,7 @@ echo " (built on this host)";\ $(MAKE) -s GAR_PLATFORM=$P _pkgshow;echo;,\ echo " (built on host '$(PACKAGING_HOST_$P)')";\ - $(SSH) $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin $(MAKE) -C $(CURDIR) -s GAR_PLATFORM=$P _pkgshow";echo;\ + $(SSH) $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) -s GAR_PLATFORM=$P _pkgshow";echo;\ )\ ) @$(MAKECOOKIE) @@ -903,7 +903,7 @@ $(if $(PACKAGING_HOST_$P),\ $(if $(filter $(THISHOST),$(PACKAGING_HOST_$P)),\ $(MAKE) -s GAR_PLATFORM=$P $* && ,\ - $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P $*" && \ + $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P $*" && \ ),\ $(error *** No host has been defined for platform $P)\ )\ Property changes on: csw/mgar/gar/v2/pkglib/csw/depend ___________________________________________________________________ Modified: svn:mergeinfo - /csw/mgar/gar/v2/pkglib/csw/depend:4936-6678 /csw/mgar/gar/v2-bwalton/pkglib/csw/depend:9784-10011 /csw/mgar/gar/v2-checkpkg/pkglib/csw/depend:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation/pkglib/csw/depend:10585-10737 /csw/mgar/gar/v2-checkpkg-stats/pkglib/csw/depend:8454-8649 /csw/mgar/gar/v2-collapsed-modulations/pkglib/csw/depend:6895 /csw/mgar/gar/v2-dirpackage/pkglib/csw/depend:8125-8180 /csw/mgar/gar/v2-relocate/pkglib/csw/depend:5028-11738 /csw/mgar/gar/v2-skayser/pkglib/csw/depend:6087-6132 /csw/mgar/gar/v2-sqlite/pkglib/csw/depend:10434-10449 + /csw/mgar/gar/v2/pkglib/csw/depend:4936-6678 /csw/mgar/gar/v2-bwalton/pkglib/csw/depend:9784-10011 /csw/mgar/gar/v2-checkpkg/pkglib/csw/depend:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation/pkglib/csw/depend:10585-10737 /csw/mgar/gar/v2-checkpkg-stats/pkglib/csw/depend:8454-8649 /csw/mgar/gar/v2-collapsed-modulations/pkglib/csw/depend:6895 /csw/mgar/gar/v2-dirpackage/pkglib/csw/depend:8125-8180 /csw/mgar/gar/v2-noexternals/pkglib/csw/depend:11592-11745 /csw/mgar/gar/v2-relocate/pkglib/csw/depend:5028-11738 /csw/mgar/gar/v2-skayser/pkglib/csw/depend:6087-6132 /csw/mgar/gar/v2-sqlite/pkglib/csw/depend:10434-10449 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Wed Dec 1 12:56:29 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Wed, 01 Dec 2010 11:56:29 +0000 Subject: [csw-devel] SF.net SVN: gar:[11747] csw/mgar/pkg/cpan Message-ID: Revision: 11747 http://gar.svn.sourceforge.net/gar/?rev=11747&view=rev Author: dmichelsen Date: 2010-12-01 11:56:29 +0000 (Wed, 01 Dec 2010) Log Message: ----------- cpan/B-Flags: Initial commit Added Paths: ----------- csw/mgar/pkg/cpan/B-Flags/ csw/mgar/pkg/cpan/B-Flags/branches/ csw/mgar/pkg/cpan/B-Flags/tags/ csw/mgar/pkg/cpan/B-Flags/trunk/ csw/mgar/pkg/cpan/B-Flags/trunk/Makefile csw/mgar/pkg/cpan/B-Flags/trunk/checksums csw/mgar/pkg/cpan/B-Flags/trunk/files/ csw/mgar/pkg/cpan/B-Flags/trunk/files/COPYING Property changes on: csw/mgar/pkg/cpan/B-Flags/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/cpan/B-Flags/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/B-Flags/trunk/Makefile (rev 0) +++ csw/mgar/pkg/cpan/B-Flags/trunk/Makefile 2010-12-01 11:56:29 UTC (rev 11747) @@ -0,0 +1,15 @@ +GARNAME = B-Flags +GARVERSION = 0.04 +CATEGORIES = cpan +AUTHOR = RURBAN + +DESCRIPTION = Friendlier flags for B +define BLURB +endef + +DISTFILES = COPYING + +PACKAGES = CSWpm-b-flags +CATALOGNAME = pm_b_flags + +include gar/category.mk Added: csw/mgar/pkg/cpan/B-Flags/trunk/checksums =================================================================== --- csw/mgar/pkg/cpan/B-Flags/trunk/checksums (rev 0) +++ csw/mgar/pkg/cpan/B-Flags/trunk/checksums 2010-12-01 11:56:29 UTC (rev 11747) @@ -0,0 +1 @@ +2c1f39f89662639ee211b32af0d46867 B-Flags-0.04.tar.gz Added: csw/mgar/pkg/cpan/B-Flags/trunk/files/COPYING =================================================================== --- csw/mgar/pkg/cpan/B-Flags/trunk/files/COPYING (rev 0) +++ csw/mgar/pkg/cpan/B-Flags/trunk/files/COPYING 2010-12-01 11:56:29 UTC (rev 11747) @@ -0,0 +1,2 @@ +AL&GPL. +Copyright 2001 Simon Cozens This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Wed Dec 1 12:59:23 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Wed, 01 Dec 2010 11:59:23 +0000 Subject: [csw-devel] SF.net SVN: gar:[11748] csw/mgar/pkg/cpan/IPC-Run/trunk Message-ID: Revision: 11748 http://gar.svn.sourceforge.net/gar/?rev=11748&view=rev Author: dmichelsen Date: 2010-12-01 11:59:23 +0000 (Wed, 01 Dec 2010) Log Message: ----------- cpan/IPC-Run: Update to 0.89 and mGAR v2 Modified Paths: -------------- csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile csw/mgar/pkg/cpan/IPC-Run/trunk/checksums Removed Paths: ------------- csw/mgar/pkg/cpan/IPC-Run/trunk/files/CSWpmipcrun.gspec csw/mgar/pkg/cpan/IPC-Run/trunk/files/CSWpmipcrun.prototype Property Changed: ---------------- csw/mgar/pkg/cpan/IPC-Run/trunk/ Property changes on: csw/mgar/pkg/cpan/IPC-Run/trunk ___________________________________________________________________ Modified: svn:externals - gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v1 + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Modified: csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile 2010-12-01 11:56:29 UTC (rev 11747) +++ csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile 2010-12-01 11:59:23 UTC (rev 11748) @@ -1,9 +1,9 @@ GARNAME = IPC-Run -GARVERSION = 0.78 +GARVERSION = 0.89 CATEGORIES = cpan -AUTHOR = RBS +AUTHOR = TODDR -DESCRIPTION = system and background procs w/ piping, redirs, ptys (Unix, Win32) +DESCRIPTION = Provides system() and background procs w/ piping, redirs, ptys define BLURB IPC::Run allows you run and interact with child processes using files, pipes, and pseudo-ttys. Both system()-style and scripted usages are @@ -11,6 +11,11 @@ supported and may be mixed. endef -DISTFILES += $(call admfiles,CSWpmipcrun,prototype) +PACKAGES = CSWpmipcrun +CATALOGNAME = CSWpmipcrun +LICENSE = LICENSE + +ARCHALL = 1 + include gar/category.mk Modified: csw/mgar/pkg/cpan/IPC-Run/trunk/checksums =================================================================== --- csw/mgar/pkg/cpan/IPC-Run/trunk/checksums 2010-12-01 11:56:29 UTC (rev 11747) +++ csw/mgar/pkg/cpan/IPC-Run/trunk/checksums 2010-12-01 11:59:23 UTC (rev 11748) @@ -1,3 +1 @@ -5a9ec39bc7c7992498b23a0496a5e727 download/CSWpmipcrun.gspec -4072c5189b76efa9a5897f5718cecbfd download/CSWpmipcrun.prototype -3ee9757db89822211eb710d6498e661d download/IPC-Run-0.78.tar.gz +9dc3b8cca378b871fafab7c6e5a61cdd IPC-Run-0.89.tar.gz Deleted: csw/mgar/pkg/cpan/IPC-Run/trunk/files/CSWpmipcrun.gspec =================================================================== --- csw/mgar/pkg/cpan/IPC-Run/trunk/files/CSWpmipcrun.gspec 2010-12-01 11:56:29 UTC (rev 11747) +++ csw/mgar/pkg/cpan/IPC-Run/trunk/files/CSWpmipcrun.gspec 2010-12-01 11:59:23 UTC (rev 11748) @@ -1,9 +0,0 @@ -%var bitname pm_ipcrun -%var pkgname CSWpmipcrun -%var arch all -%include url file://%{PKGLIB}/csw_cpan.gspec -%copyright -Copyright (c) 1999 by Barrie Slaymaker, barries at slaysys.com - -You may distribute under the terms of either the GNU General Public -License or the Artistic License, as specified in the README file. Deleted: csw/mgar/pkg/cpan/IPC-Run/trunk/files/CSWpmipcrun.prototype =================================================================== --- csw/mgar/pkg/cpan/IPC-Run/trunk/files/CSWpmipcrun.prototype 2010-12-01 11:56:29 UTC (rev 11747) +++ csw/mgar/pkg/cpan/IPC-Run/trunk/files/CSWpmipcrun.prototype 2010-12-01 11:59:23 UTC (rev 11748) @@ -1,28 +0,0 @@ -d none /opt/csw/lib 0755 root bin -d none /opt/csw/lib/perl 0755 root bin -d none /opt/csw/lib/perl/csw 0755 root bin -d none /opt/csw/lib/perl/csw/auto 0755 root bin -d none /opt/csw/lib/perl/csw/auto/IPC 0755 root bin -d none /opt/csw/lib/perl/csw/auto/IPC/Run 0755 root bin -f none /opt/csw/lib/perl/csw/auto/IPC/Run/.packlist 0644 root bin -d none /opt/csw/share 0755 root bin -d none /opt/csw/share/man 0755 root bin -d none /opt/csw/share/man/man3 0755 root bin -f none /opt/csw/share/man/man3/IPC::Run.3perl 0444 root bin -f none /opt/csw/share/man/man3/IPC::Run::Debug.3perl 0444 root bin -f none /opt/csw/share/man/man3/IPC::Run::IO.3perl 0444 root bin -f none /opt/csw/share/man/man3/IPC::Run::Timer.3perl 0444 root bin -f none /opt/csw/share/man/man3/IPC::Run::Win32Helper.3perl 0444 root bin -f none /opt/csw/share/man/man3/IPC::Run::Win32IO.3perl 0444 root bin -f none /opt/csw/share/man/man3/IPC::Run::Win32Pump.3perl 0444 root bin -d none /opt/csw/share/perl 0755 root bin -d none /opt/csw/share/perl/csw 0755 root bin -d none /opt/csw/share/perl/csw/IPC 0755 root bin -d none /opt/csw/share/perl/csw/IPC/Run 0755 root bin -f none /opt/csw/share/perl/csw/IPC/Run.pm 0555 root bin -f none /opt/csw/share/perl/csw/IPC/Run/Debug.pm 0555 root bin -f none /opt/csw/share/perl/csw/IPC/Run/IO.pm 0555 root bin -f none /opt/csw/share/perl/csw/IPC/Run/Timer.pm 0555 root bin -f none /opt/csw/share/perl/csw/IPC/Run/Win32Helper.pm 0555 root bin -f none /opt/csw/share/perl/csw/IPC/Run/Win32IO.pm 0555 root bin -f none /opt/csw/share/perl/csw/IPC/Run/Win32Pump.pm 0555 root bin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Wed Dec 1 12:59:51 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Wed, 01 Dec 2010 11:59:51 +0000 Subject: [csw-devel] SF.net SVN: gar:[11749] csw/mgar/pkg/cpan/DBD-Pg/trunk Message-ID: Revision: 11749 http://gar.svn.sourceforge.net/gar/?rev=11749&view=rev Author: dmichelsen Date: 2010-12-01 11:59:51 +0000 (Wed, 01 Dec 2010) Log Message: ----------- cpan/DBD-Pg: Update to 2.17.2 Modified Paths: -------------- csw/mgar/pkg/cpan/DBD-Pg/trunk/Makefile csw/mgar/pkg/cpan/DBD-Pg/trunk/checksums Added Paths: ----------- csw/mgar/pkg/cpan/DBD-Pg/trunk/files/0001-Dont-return-value-in-dequote_bytea.patch Removed Paths: ------------- csw/mgar/pkg/cpan/DBD-Pg/trunk/files/CSWpmdbdpg.depend csw/mgar/pkg/cpan/DBD-Pg/trunk/files/CSWpmdbdpg.gspec Modified: csw/mgar/pkg/cpan/DBD-Pg/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/DBD-Pg/trunk/Makefile 2010-12-01 11:59:23 UTC (rev 11748) +++ csw/mgar/pkg/cpan/DBD-Pg/trunk/Makefile 2010-12-01 11:59:51 UTC (rev 11749) @@ -1,5 +1,5 @@ GARNAME = DBD-Pg -GARVERSION = 2.16.1 +GARVERSION = 2.17.2 CATEGORIES = cpan AUTHOR = TURNSTEP @@ -9,6 +9,8 @@ to PostgreSQL databases. endef +PATCHFILES = 0001-Dont-return-value-in-dequote_bytea.patch + PACKAGES = CSWpmdbdpg CATALOGNAME = pm_dbdpg Modified: csw/mgar/pkg/cpan/DBD-Pg/trunk/checksums =================================================================== --- csw/mgar/pkg/cpan/DBD-Pg/trunk/checksums 2010-12-01 11:59:23 UTC (rev 11748) +++ csw/mgar/pkg/cpan/DBD-Pg/trunk/checksums 2010-12-01 11:59:51 UTC (rev 11749) @@ -1 +1 @@ -127f88ab24b971a8f5e3720a496235a5 DBD-Pg-2.16.1.tar.gz +2cd63605a9420a63c780f627420a359a DBD-Pg-2.17.2.tar.gz Added: csw/mgar/pkg/cpan/DBD-Pg/trunk/files/0001-Dont-return-value-in-dequote_bytea.patch =================================================================== --- csw/mgar/pkg/cpan/DBD-Pg/trunk/files/0001-Dont-return-value-in-dequote_bytea.patch (rev 0) +++ csw/mgar/pkg/cpan/DBD-Pg/trunk/files/0001-Dont-return-value-in-dequote_bytea.patch 2010-12-01 11:59:51 UTC (rev 11749) @@ -0,0 +1,29 @@ +From 0242e1aa1d6f6a95a1b1addb750c35c526ee20fe Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Wed, 1 Dec 2010 12:27:55 +0100 +Subject: [PATCH] Dont return value in dequote_bytea + +--- + quote.c | 5 +++-- + 1 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/quote.c b/quote.c +index 96ca12f..f8a7249 100644 +--- a/quote.c ++++ b/quote.c +@@ -529,9 +529,10 @@ void dequote_bytea(char *string, STRLEN *retlen, int estring) + return; + + if ('\\' == *string && 'x' == *(string+1)) +- return _dequote_bytea_hex(string, retlen, estring); ++ _dequote_bytea_hex(string, retlen, estring); + else +- return _dequote_bytea_escape(string, retlen, estring); ++ _dequote_bytea_escape(string, retlen, estring); ++ return; + } + + /* +-- +1.7.3 + Deleted: csw/mgar/pkg/cpan/DBD-Pg/trunk/files/CSWpmdbdpg.depend =================================================================== Deleted: csw/mgar/pkg/cpan/DBD-Pg/trunk/files/CSWpmdbdpg.gspec =================================================================== --- csw/mgar/pkg/cpan/DBD-Pg/trunk/files/CSWpmdbdpg.gspec 2010-12-01 11:59:23 UTC (rev 11748) +++ csw/mgar/pkg/cpan/DBD-Pg/trunk/files/CSWpmdbdpg.gspec 2010-12-01 11:59:51 UTC (rev 11749) @@ -1,11 +0,0 @@ -%var bitname pm_dbdpg -%var pkgname CSWpmdbdpg -%include url file://%{PKGLIB}/csw_cpan.gspec -%copyright -Portions Copyright (c) 1994,1995,1996,1997 Tim Bunce -Copyright (c) 1997,1998,1999,2000 Edmund Mergl -Copyright (c) 2002 Jeffrey W. Baker -Copyright (c) 2002,2003 PostgreSQL Global Development Group - -You may distribute under the terms of either the GNU General Public -License or the Artistic License, as specified in the Perl README file. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Wed Dec 1 13:26:45 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Wed, 01 Dec 2010 12:26:45 +0000 Subject: [csw-devel] SF.net SVN: gar:[11750] csw/mgar/pkg/cpan Message-ID: Revision: 11750 http://gar.svn.sourceforge.net/gar/?rev=11750&view=rev Author: dmichelsen Date: 2010-12-01 12:26:44 +0000 (Wed, 01 Dec 2010) Log Message: ----------- cpan/Opcodes: Initial commit Added Paths: ----------- csw/mgar/pkg/cpan/Opcodes/ csw/mgar/pkg/cpan/Opcodes/branches/ csw/mgar/pkg/cpan/Opcodes/tags/ csw/mgar/pkg/cpan/Opcodes/trunk/ csw/mgar/pkg/cpan/Opcodes/trunk/Makefile csw/mgar/pkg/cpan/Opcodes/trunk/checksums csw/mgar/pkg/cpan/Opcodes/trunk/files/ Property changes on: csw/mgar/pkg/cpan/Opcodes/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/cpan/Opcodes/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/Opcodes/trunk/Makefile (rev 0) +++ csw/mgar/pkg/cpan/Opcodes/trunk/Makefile 2010-12-01 12:26:44 UTC (rev 11750) @@ -0,0 +1,15 @@ +GARNAME = Opcodes +GARVERSION = 0.10 +CATEGORIES = cpan +AUTHOR = RURBAN + +DESCRIPTION = More Opcodes information from opnames.h and opcode.h +define BLURB +endef + +PACKAGES = CSWpm-opcodes +CATALOGNAME = pm_opcodes + +LICENSE = LICENSE + +include gar/category.mk Added: csw/mgar/pkg/cpan/Opcodes/trunk/checksums =================================================================== --- csw/mgar/pkg/cpan/Opcodes/trunk/checksums (rev 0) +++ csw/mgar/pkg/cpan/Opcodes/trunk/checksums 2010-12-01 12:26:44 UTC (rev 11750) @@ -0,0 +1 @@ +f808fc2c8ebdfbf3d8923ec0ec4f4cd2 Opcodes-0.10.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Wed Dec 1 13:48:11 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Wed, 01 Dec 2010 12:48:11 +0000 Subject: [csw-devel] SF.net SVN: gar:[11751] csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile Message-ID: Revision: 11751 http://gar.svn.sourceforge.net/gar/?rev=11751&view=rev Author: dmichelsen Date: 2010-12-01 12:48:11 +0000 (Wed, 01 Dec 2010) Log Message: ----------- cpan/IPC-Run: Fix catalog name Modified Paths: -------------- csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile Modified: csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile 2010-12-01 12:26:44 UTC (rev 11750) +++ csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile 2010-12-01 12:48:11 UTC (rev 11751) @@ -12,7 +12,7 @@ endef PACKAGES = CSWpmipcrun -CATALOGNAME = CSWpmipcrun +CATALOGNAME = pm_ipcrun LICENSE = LICENSE This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Wed Dec 1 15:03:42 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Wed, 01 Dec 2010 14:03:42 +0000 Subject: [csw-devel] SF.net SVN: gar:[11752] csw/mgar/pkg/adobereader/trunk Message-ID: Revision: 11752 http://gar.svn.sourceforge.net/gar/?rev=11752&view=rev Author: dmichelsen Date: 2010-12-01 14:03:41 +0000 (Wed, 01 Dec 2010) Log Message: ----------- adobereader: Update i386 version to 9.4.1 Modified Paths: -------------- csw/mgar/pkg/adobereader/trunk/Makefile csw/mgar/pkg/adobereader/trunk/checksums Modified: csw/mgar/pkg/adobereader/trunk/Makefile =================================================================== --- csw/mgar/pkg/adobereader/trunk/Makefile 2010-12-01 12:48:11 UTC (rev 11751) +++ csw/mgar/pkg/adobereader/trunk/Makefile 2010-12-01 14:03:41 UTC (rev 11752) @@ -2,8 +2,8 @@ GARNAME = adobereader GARVERSION_sparc = 8.1.7 FILEVERSION_sparc = 8.1.7 -GARVERSION_i386 = 9.4.0 -FILEVERSION_i386 = 9.4 +GARVERSION_i386 = 9.4.1 +FILEVERSION_i386 = 9.4.1 GARVERSION = $(GARVERSION_$(GARCH)) CATEGORIES = apps Modified: csw/mgar/pkg/adobereader/trunk/checksums =================================================================== --- csw/mgar/pkg/adobereader/trunk/checksums 2010-12-01 12:48:11 UTC (rev 11751) +++ csw/mgar/pkg/adobereader/trunk/checksums 2010-12-01 14:03:41 UTC (rev 11752) @@ -1,2 +1,2 @@ -7cb3117a51d0a992af8239bfb6d8fd8d AdbeRdr9.4-1_i486solaris_enu.tar.bz2 +da822d95d8c632947230d102bab177f5 AdbeRdr9.4.1-1_i486solaris_enu.tar.bz2 44aea1ffcf857b2ef8ed36a659b32390 AdobeReader_enu-8.1.7-1.sparc.tar.bz2 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Wed Dec 1 15:50:22 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Wed, 01 Dec 2010 14:50:22 +0000 Subject: [csw-devel] SF.net SVN: gar:[11753] csw/mgar/pkg/cpan Message-ID: Revision: 11753 http://gar.svn.sourceforge.net/gar/?rev=11753&view=rev Author: dmichelsen Date: 2010-12-01 14:50:22 +0000 (Wed, 01 Dec 2010) Log Message: ----------- cpan/B-C: Initial commit Added Paths: ----------- csw/mgar/pkg/cpan/B-C/ csw/mgar/pkg/cpan/B-C/branches/ csw/mgar/pkg/cpan/B-C/tags/ csw/mgar/pkg/cpan/B-C/trunk/ csw/mgar/pkg/cpan/B-C/trunk/Makefile csw/mgar/pkg/cpan/B-C/trunk/checksums csw/mgar/pkg/cpan/B-C/trunk/files/ Property changes on: csw/mgar/pkg/cpan/B-C/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/cpan/B-C/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/B-C/trunk/Makefile (rev 0) +++ csw/mgar/pkg/cpan/B-C/trunk/Makefile 2010-12-01 14:50:22 UTC (rev 11753) @@ -0,0 +1,17 @@ +GARNAME = B-C +GARVERSION = 1.27 +CATEGORIES = cpan +AUTHOR = RURBAN + +DESCRIPTION = Perl compiler's C backend +define BLURB +endef + +PACKAGES = CSWpmbc +CATALOGNAME = pm_bc + +LICENSE = Artistic + +DEP_PKGS = CSWpm-b-flags CSWpm-opcodes CSWpmipcrun + +include gar/category.mk Added: csw/mgar/pkg/cpan/B-C/trunk/checksums =================================================================== --- csw/mgar/pkg/cpan/B-C/trunk/checksums (rev 0) +++ csw/mgar/pkg/cpan/B-C/trunk/checksums 2010-12-01 14:50:22 UTC (rev 11753) @@ -0,0 +1 @@ +34444727813d06e3093316c28bb956ec B-C-1.27.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bonivart at users.sourceforge.net Wed Dec 1 18:31:59 2010 From: bonivart at users.sourceforge.net (bonivart at users.sourceforge.net) Date: Wed, 01 Dec 2010 17:31:59 +0000 Subject: [csw-devel] SF.net SVN: gar:[11754] csw/mgar/pkg/clamav/trunk/Makefile Message-ID: Revision: 11754 http://gar.svn.sourceforge.net/gar/?rev=11754&view=rev Author: bonivart Date: 2010-12-01 17:31:59 +0000 (Wed, 01 Dec 2010) Log Message: ----------- clamav: add i-dep Modified Paths: -------------- csw/mgar/pkg/clamav/trunk/Makefile Modified: csw/mgar/pkg/clamav/trunk/Makefile =================================================================== --- csw/mgar/pkg/clamav/trunk/Makefile 2010-12-01 14:50:22 UTC (rev 11753) +++ csw/mgar/pkg/clamav/trunk/Makefile 2010-12-01 17:31:59 UTC (rev 11754) @@ -34,6 +34,7 @@ RUNTIME_DEP_PKGS_CSWlibclam6 = CSWzlib CSWbzip2 CSWiconv RUNTIME_DEP_PKGS_CSWlibclam6 += CSWlibltdl7 +INCOMPATIBLE_PKGS_CSWlibclam6 = CSWlibclamav # We define upstream file regex so we can be notifed of new upstream software release UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bonivart at users.sourceforge.net Wed Dec 1 19:04:29 2010 From: bonivart at users.sourceforge.net (bonivart at users.sourceforge.net) Date: Wed, 01 Dec 2010 18:04:29 +0000 Subject: [csw-devel] SF.net SVN: gar:[11755] csw/mgar/pkg/clamav/trunk/Makefile Message-ID: Revision: 11755 http://gar.svn.sourceforge.net/gar/?rev=11755&view=rev Author: bonivart Date: 2010-12-01 18:04:29 +0000 (Wed, 01 Dec 2010) Log Message: ----------- clamav: rename devel pkg Modified Paths: -------------- csw/mgar/pkg/clamav/trunk/Makefile Modified: csw/mgar/pkg/clamav/trunk/Makefile =================================================================== --- csw/mgar/pkg/clamav/trunk/Makefile 2010-12-01 17:31:59 UTC (rev 11754) +++ csw/mgar/pkg/clamav/trunk/Makefile 2010-12-01 18:04:29 UTC (rev 11755) @@ -18,16 +18,16 @@ DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz #DISTFILES = $(GARNAME)-devel-latest.tar.gz -PACKAGES = CSWclamav CSWlibclam6 CSWlibclamav-devel +PACKAGES = CSWclamav CSWlibclam6 CSWlibclam6-devel CATALOGNAME_CSWclamav = clamav SPKG_DESC_CSWclamav = $(DESCRIPTION) -CATALOGNAME_CSWlibclamav = libclam6 +CATALOGNAME_CSWlibclam6 = libclam6 SPKG_DESC_CSWlibclam6 = $(DESCRIPTION) Library -CATALOGNAME_CSWlibclamav-devel = libclamav_devel -SPKG_DESC_CSWlibclamav-devel = $(DESCRIPTION) Development +CATALOGNAME_CSWlibclam6-devel = libclam6_devel +SPKG_DESC_CSWlibclam6-devel = $(DESCRIPTION) Development RUNTIME_DEP_PKGS_CSWclamav = CSWlibclam6 CSWzlib CSWbzip2 CSWiconv CSWncurses RUNTIME_DEP_PKGS_CSWclamav += CSWlibltdl7 @@ -36,6 +36,8 @@ RUNTIME_DEP_PKGS_CSWlibclam6 += CSWlibltdl7 INCOMPATIBLE_PKGS_CSWlibclam6 = CSWlibclamav +INCOMPATIBLE_PKGS_CSWlibclam6-devel = CSWlibclamav-devel + # We define upstream file regex so we can be notifed of new upstream software release UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz @@ -68,7 +70,7 @@ EXTRA_MERGE_EXCLUDE_FILES = .*~ $(libdir)/.*\.a $(libdir)/.*\.la -PKGFILES_CSWlibclamav-devel = $(PKGFILES_DEVEL) +PKGFILES_CSWlibclam6-devel = $(PKGFILES_DEVEL) PKGFILES_CSWlibclam6 = $(PKGFILES_RT) PKGFILES_CSWlibclam6 += $(docdir)/libclamav/.* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Wed Dec 1 22:14:43 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Wed, 01 Dec 2010 21:14:43 +0000 Subject: [csw-devel] SF.net SVN: gar:[11756] csw/mgar/pkg/freeradius/trunk Message-ID: Revision: 11756 http://gar.svn.sourceforge.net/gar/?rev=11756&view=rev Author: gadavis Date: 2010-12-01 21:14:42 +0000 (Wed, 01 Dec 2010) Log Message: ----------- Bump version to 2.1.10 Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile csw/mgar/pkg/freeradius/trunk/checksums Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-01 18:04:29 UTC (rev 11755) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-01 21:14:42 UTC (rev 11756) @@ -1,5 +1,5 @@ GARNAME = freeradius -GARVERSION = 2.1.6 +GARVERSION = 2.1.10 CATEGORIES = server DESCRIPTION = A free RADIUS server implementation @@ -25,7 +25,8 @@ STRIP_LIBTOOL = 1 CONFIGURE_ARGS = $(DIRPATHS) -CONFIGURE_ARGS += --with-system-libtool +## 2.1.10 requires using included libtool instead of system +#CONFIGURE_ARGS += --with-system-libtool CONFIGURE_ARGS += --without-rlm_sqlippool CONFIGURE_ARGS += --without-rlm_sql_mysql CONFIGURE_ARGS += --without-rlm_sql_postgresql Modified: csw/mgar/pkg/freeradius/trunk/checksums =================================================================== --- csw/mgar/pkg/freeradius/trunk/checksums 2010-12-01 18:04:29 UTC (rev 11755) +++ csw/mgar/pkg/freeradius/trunk/checksums 2010-12-01 21:14:42 UTC (rev 11756) @@ -1 +1 @@ -078f7d29b4d2d34f7c992abf772c28a0 download/freeradius-server-2.1.6.tar.gz +e552704fc1b46d51176e575afa96dcc6 freeradius-server-2.1.10.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Thu Dec 2 03:50:44 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Thu, 02 Dec 2010 02:50:44 +0000 Subject: [csw-devel] SF.net SVN: gar:[11757] csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile Message-ID: Revision: 11757 http://gar.svn.sourceforge.net/gar/?rev=11757&view=rev Author: gadavis Date: 2010-12-02 02:50:43 +0000 (Thu, 02 Dec 2010) Log Message: ----------- Build with GCC 4 Builds on Sparc Solaris 9, 32 bit. 64 bit still fails. DAP functionality (non-critical) has to be disabled due to a couple of failed tests, awaiting response from UCAR Modified Paths: -------------- csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile Modified: csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile =================================================================== --- csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile 2010-12-01 21:14:42 UTC (rev 11756) +++ csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile 2010-12-02 02:50:43 UTC (rev 11757) @@ -11,37 +11,50 @@ DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz LICENSE = COPYRIGHT -RUNTIME_DEP_PKGS = CSWcurlrt CSWhdf5rt CSWgcc3g77rt CSWzlib CSWgcc3corert \ - CSWoldaprt CSWlibcares CSWlibidn CSWgcc3g++rt CSWosslrt +RUNTIME_DEP_PKGS = CSWcurlrt CSWhdf5rt CSWzlib +RUNTIME_DEP_PKGS += CSWoldaprt CSWlibcares CSWlibidn CSWosslrt -BUILD_DEP_PKGS = $(RUNTIME_DEP_PKGS) CSWtetex CSWgcc3g77 +BUILD_DEP_PKGS = $(RUNTIME_DEP_PKGS) CSWtetex +BUILD_DEP_PKGS += CSWgcc4gfortran + ## CFLAGS AND LDFLAGS are necessary due to problems with the fortran bindings when ## building 64-bit -BUILD_ARGS = CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" FFLAGS="$(FFLAGS)" FCFLAGS="$(FCFLAGS)" +BUILD_ARGS = CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" +BUILD_ARGS += FFLAGS="$(FFLAGS)" FCFLAGS="$(FCFLAGS)" +## CXXFLAGS are necessary due to the gcc3core_rt problem noted below +BUILD_ARGS += CXXFLAGS="$(CXXFLAGS)" +## Test args need to be the same otherwise various tests don't link +TEST_ARGS = $(BUILD_ARGS) + +## Originally, non-redistributable libs in /opt/SUNWspro. Fixed as of late, try with studio again? +GARCOMPILER = GCC4 CONFIGURE_ENV = F77=$(F77) FC=$(FC) CC=$(CC) CXX=$(CXX) -CONFIGURE_ARGS = $(DIRPATHS) \ - --enable-netcdf-4 \ - --enable-dap \ - --enable-ncgen4 \ - --enable-shared \ - --enable-separate-fortran \ - --disable-f90 \ - --enable-cxx4 \ - --enable-docs-install \ - --enable-udunits \ - --disable-logging \ - --with-hdf5=/opt/csw \ - --with-zlib=/opt/csw +## Attempt to fix problem with configure not finding libgfortran.so.3 when +## compiling with GCC4 +CONFIGURE_ENV += LD_LIBRARY_PATH=/opt/csw/gcc4/lib/$(MM_LIBDIR) +CONFIGURE_ARGS = $(DIRPATHS) +CONFIGURE_ARGS += --enable-netcdf-4 +## DAP is disabled due to bugs on Sparc Solaris 9 GCC4. Bug filed with UCAR +#CONFIGURE_ARGS += --enable-dap +CONFIGURE_ARGS += --disable-dap +CONFIGURE_ARGS += --enable-ncgen4 +CONFIGURE_ARGS += --enable-shared +CONFIGURE_ARGS += --enable-separate-fortran +CONFIGURE_ARGS += --enable-cxx4 +CONFIGURE_ARGS += --enable-docs-install +CONFIGURE_ARGS += --enable-udunits +CONFIGURE_ARGS += --disable-logging +CONFIGURE_ARGS += --with-hdf5=/opt/csw +CONFIGURE_ARGS += --with-zlib=/opt/csw + ## 64 bit build fails in fortran binding tests -BUILD64 = 1 +#BUILD64 = 1 ## Needed for "Large file support" in NetCDF EXTRA_CPPFLAGS = -D_FILE_OFFSET_BITS=64 -## non-redistributable libs in /opt/SUNWspro -GARCOMPILER = GCC3 DEBUG_PACKAGING = 1 ## Add GCC4 lib dir to CFLAGS and friends because gcc3core_rt puts it's @@ -55,15 +68,15 @@ ## ## Adding -dalign to *FLAGS in attempt to fix bus error in nf_test/ftst_vars4 ## in fuction nf_put_vlen_element -#EXTRA_CFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign -#EXTRA_FFLAGS= -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign -#EXTRA_FCFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign -#EXTRA_CXXFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign +EXTRA_CFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign +EXTRA_FFLAGS= -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign +EXTRA_FCFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign +EXTRA_CXXFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign ## OPT_FLAGS_GCC = -O2 -pipe -include gar/category.mk ## During the 32-bit sparc build, the C++ bindings were barfing with an error ## about undefined symbol __sync_fetch_and_add_4 in libnetcdf_c++ -## Per http://www.mail-archive.com/maintainers at lists.opencsw.org/msg06095.html -## replacing -march=v8 with -m32 seems to solve the problem -ARCHFLAGS_GCC4_sparcv8 = -m32 -mcpu=v8 +## From Porting FAQ: http://wiki.opencsw.org/porting-faq#toc5 +OPT_FLAGS_GCC = + +include gar/category.mk This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Thu Dec 2 07:47:08 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Thu, 02 Dec 2010 06:47:08 +0000 Subject: [csw-devel] SF.net SVN: gar:[11758] csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile Message-ID: Revision: 11758 http://gar.svn.sourceforge.net/gar/?rev=11758&view=rev Author: gadavis Date: 2010-12-02 06:47:08 +0000 (Thu, 02 Dec 2010) Log Message: ----------- GCC 4 build works on 32-bit sparc Solaris 9 Modified Paths: -------------- csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile Modified: csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile =================================================================== --- csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile 2010-12-02 02:50:43 UTC (rev 11757) +++ csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile 2010-12-02 06:47:08 UTC (rev 11758) @@ -5,14 +5,14 @@ GARNAME = netcdf GARVERSION = 4.1.1 CATEGORIES = lib -DESCRIPTION = machine-independent data formats for array-oriented scientific data +DESCRIPTION = Machine-independent data formats for array-oriented scientific data SPKG_SOURCEURL = http://www.unidata.ucar.edu/software/netcdf/ MASTER_SITES = http://www.unidata.ucar.edu/downloads/netcdf/ftp/ DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz LICENSE = COPYRIGHT -RUNTIME_DEP_PKGS = CSWcurlrt CSWhdf5rt CSWzlib -RUNTIME_DEP_PKGS += CSWoldaprt CSWlibcares CSWlibidn CSWosslrt +RUNTIME_DEP_PKGS = CSWhdf5rt CSWzlib +RUNTIME_DEP_PKGS += CSWgcc4gfortranrt CSWgcc4corert CSWgcc4g++rt BUILD_DEP_PKGS = $(RUNTIME_DEP_PKGS) CSWtetex BUILD_DEP_PKGS += CSWgcc4gfortran This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Thu Dec 2 10:33:00 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Thu, 02 Dec 2010 09:33:00 +0000 Subject: [csw-devel] SF.net SVN: gar:[11759] csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile Message-ID: Revision: 11759 http://gar.svn.sourceforge.net/gar/?rev=11759&view=rev Author: dmichelsen Date: 2010-12-02 09:33:00 +0000 (Thu, 02 Dec 2010) Log Message: ----------- cpan/Mail-SPF: Add dependency to CSWpmerror as reported in #4623 Modified Paths: -------------- csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile Modified: csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile 2010-12-02 06:47:08 UTC (rev 11758) +++ csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile 2010-12-02 09:33:00 UTC (rev 11759) @@ -16,8 +16,12 @@ # Required packages due to bug reports # http://www.opencsw.org/mantis/view.php?id=4139 # http://www.opencsw.org/mantis/view.php?id=4140 -RUNTIME_DEP_PKGS = CSWpmversion CSWpmnetaddrip +DEP_PKGS = CSWpmversion CSWpmnetaddrip +# One more required package due to bug report +# https://www.opencsw.org/mantis/view.php?id=4623 +DEP_PKGS += CSWpmerror + ARCHALL = 1 CONFIGURE_SCRIPTS = $(WORKSRC)/Build.PL This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Thu Dec 2 10:44:31 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Thu, 02 Dec 2010 09:44:31 +0000 Subject: [csw-devel] SF.net SVN: gar:[11760] csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile Message-ID: Revision: 11760 http://gar.svn.sourceforge.net/gar/?rev=11760&view=rev Author: dmichelsen Date: 2010-12-02 09:44:31 +0000 (Thu, 02 Dec 2010) Log Message: ----------- cpan/Mail-SPF: Add license Modified Paths: -------------- csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile Modified: csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile 2010-12-02 09:33:00 UTC (rev 11759) +++ csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile 2010-12-02 09:44:31 UTC (rev 11760) @@ -13,6 +13,8 @@ PACKAGES = CSWpmmailspf CATALOGNAME = pm_mailspf +LICENSE = LICENSE + # Required packages due to bug reports # http://www.opencsw.org/mantis/view.php?id=4139 # http://www.opencsw.org/mantis/view.php?id=4140 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Thu Dec 2 13:28:30 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Thu, 02 Dec 2010 12:28:30 +0000 Subject: [csw-devel] SF.net SVN: gar:[11761] csw/mgar/pkg/cpan Message-ID: Revision: 11761 http://gar.svn.sourceforge.net/gar/?rev=11761&view=rev Author: dmichelsen Date: 2010-12-02 12:28:29 +0000 (Thu, 02 Dec 2010) Log Message: ----------- cpan/Module-Version: Initial commit Added Paths: ----------- csw/mgar/pkg/cpan/Module-Version/ csw/mgar/pkg/cpan/Module-Version/branches/ csw/mgar/pkg/cpan/Module-Version/tags/ csw/mgar/pkg/cpan/Module-Version/trunk/ csw/mgar/pkg/cpan/Module-Version/trunk/Makefile csw/mgar/pkg/cpan/Module-Version/trunk/checksums csw/mgar/pkg/cpan/Module-Version/trunk/files/ Property changes on: csw/mgar/pkg/cpan/Module-Version/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/cpan/Module-Version/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/Module-Version/trunk/Makefile (rev 0) +++ csw/mgar/pkg/cpan/Module-Version/trunk/Makefile 2010-12-02 12:28:29 UTC (rev 11761) @@ -0,0 +1,17 @@ +GARNAME = Module-Version +GARVERSION = 0.12 +CATEGORIES = cpan +AUTHOR = XSAWYERX + +DESCRIPTION = Get module versions +define BLURB +endef + +PACKAGES = CSWpm-module-version +CATALOGNAME = pm_module_version + +LICENSE = LICENSE + +ARCHALL = 1 + +include gar/category.mk Added: csw/mgar/pkg/cpan/Module-Version/trunk/checksums =================================================================== --- csw/mgar/pkg/cpan/Module-Version/trunk/checksums (rev 0) +++ csw/mgar/pkg/cpan/Module-Version/trunk/checksums 2010-12-02 12:28:29 UTC (rev 11761) @@ -0,0 +1 @@ +51eaec7fcfd0b2298d602a1867768332 Module-Version-0.12.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Thu Dec 2 14:09:14 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Thu, 02 Dec 2010 13:09:14 +0000 Subject: [csw-devel] SF.net SVN: gar:[11762] csw/mgar/pkg/cpan/pmtools/trunk Message-ID: Revision: 11762 http://gar.svn.sourceforge.net/gar/?rev=11762&view=rev Author: dmichelsen Date: 2010-12-02 13:09:14 +0000 (Thu, 02 Dec 2010) Log Message: ----------- pmtools: Update to 1.10 and mGAR v2 Modified Paths: -------------- csw/mgar/pkg/cpan/pmtools/trunk/Makefile csw/mgar/pkg/cpan/pmtools/trunk/checksums Added Paths: ----------- csw/mgar/pkg/cpan/pmtools/trunk/files/COPYING Removed Paths: ------------- csw/mgar/pkg/cpan/pmtools/trunk/files/CSWpmtools.gspec csw/mgar/pkg/cpan/pmtools/trunk/files/CSWpmtools.prototype Property Changed: ---------------- csw/mgar/pkg/cpan/pmtools/trunk/ Property changes on: csw/mgar/pkg/cpan/pmtools/trunk ___________________________________________________________________ Modified: svn:externals - gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v1 + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Modified: csw/mgar/pkg/cpan/pmtools/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/pmtools/trunk/Makefile 2010-12-02 12:28:29 UTC (rev 11761) +++ csw/mgar/pkg/cpan/pmtools/trunk/Makefile 2010-12-02 13:09:14 UTC (rev 11762) @@ -1,13 +1,17 @@ GARNAME = pmtools -GARVERSION = 1.01 +GARVERSION = 1.10 CATEGORIES = cpan AUTHOR = MLFISHER DESCRIPTION = Tools for managing installed Perl modules. define BLURB - # Blurb goes here endef -DISTFILES = $(call admfiles,CSWpmtools,prototype) +DISTFILES = COPYING +PACKAGES = CSWpmtools +CATALOGNAME = pmtools + +ARCHALL = 1 + include gar/category.mk Modified: csw/mgar/pkg/cpan/pmtools/trunk/checksums =================================================================== --- csw/mgar/pkg/cpan/pmtools/trunk/checksums 2010-12-02 12:28:29 UTC (rev 11761) +++ csw/mgar/pkg/cpan/pmtools/trunk/checksums 2010-12-02 13:09:14 UTC (rev 11762) @@ -1,3 +1 @@ -90f8e83e3614cff0c6973454b7417371 download/CSWpmtools.gspec -4e0938e3e5e0e43509f7c9c07c0d3d6b download/CSWpmtools.prototype -85d800dff1f73b559a929d7984435b57 download/pmtools-1.01.tar.gz +3cb192b5b241037d6b701e6e26ef2425 pmtools-1.10.tar.gz Copied: csw/mgar/pkg/cpan/pmtools/trunk/files/COPYING (from rev 11744, csw/mgar/pkg/cpan/pmtools/trunk/files/CSWpmtools.gspec) =================================================================== --- csw/mgar/pkg/cpan/pmtools/trunk/files/COPYING (rev 0) +++ csw/mgar/pkg/cpan/pmtools/trunk/files/COPYING 2010-12-02 13:09:14 UTC (rev 11762) @@ -0,0 +1,5 @@ +Copyright (c) 1999 Tom Christiansen + +This is free software. You may modify it and distribute it +under Perl's Artistic Licence. Modified versions must be +clearly indicated. Deleted: csw/mgar/pkg/cpan/pmtools/trunk/files/CSWpmtools.gspec =================================================================== --- csw/mgar/pkg/cpan/pmtools/trunk/files/CSWpmtools.gspec 2010-12-02 12:28:29 UTC (rev 11761) +++ csw/mgar/pkg/cpan/pmtools/trunk/files/CSWpmtools.gspec 2010-12-02 13:09:14 UTC (rev 11762) @@ -1,10 +0,0 @@ -%var bitname pmtools -%var pkgname CSWpmtools -%var arch all -%include url file://%{PKGLIB}/csw_cpan.gspec -%copyright -Copyright (c) 1999 Tom Christiansen - -This is free software. You may modify it and distribute it -under Perl's Artistic Licence. Modified versions must be -clearly indicated. Deleted: csw/mgar/pkg/cpan/pmtools/trunk/files/CSWpmtools.prototype =================================================================== --- csw/mgar/pkg/cpan/pmtools/trunk/files/CSWpmtools.prototype 2010-12-02 12:28:29 UTC (rev 11761) +++ csw/mgar/pkg/cpan/pmtools/trunk/files/CSWpmtools.prototype 2010-12-02 13:09:14 UTC (rev 11762) @@ -1,64 +0,0 @@ -d none /opt/csw/bin 0755 root bin -f none /opt/csw/bin/basepods 0555 root bin -f none /opt/csw/bin/faqpods 0555 root bin -f none /opt/csw/bin/modpods 0555 root bin -f none /opt/csw/bin/pfcat 0555 root bin -f none /opt/csw/bin/plxload 0555 root bin -f none /opt/csw/bin/pmall 0555 root bin -f none /opt/csw/bin/pman 0555 root bin -f none /opt/csw/bin/pmcat 0555 root bin -f none /opt/csw/bin/pmdesc 0555 root bin -f none /opt/csw/bin/pmdirs 0555 root bin -f none /opt/csw/bin/pmeth 0555 root bin -f none /opt/csw/bin/pmexp 0555 root bin -f none /opt/csw/bin/pmfunc 0555 root bin -f none /opt/csw/bin/pminst 0555 root bin -f none /opt/csw/bin/pmload 0555 root bin -f none /opt/csw/bin/pmls 0555 root bin -f none /opt/csw/bin/pmpath 0555 root bin -f none /opt/csw/bin/pmvers 0555 root bin -f none /opt/csw/bin/podgrep 0555 root bin -f none /opt/csw/bin/podpath 0555 root bin -f none /opt/csw/bin/pods 0555 root bin -f none /opt/csw/bin/podtoc 0555 root bin -f none /opt/csw/bin/sitepods 0555 root bin -f none /opt/csw/bin/stdpods 0555 root bin -d none /opt/csw/lib 0755 root bin -d none /opt/csw/lib/perl 0755 root bin -d none /opt/csw/lib/perl/csw 0755 root bin -d none /opt/csw/lib/perl/csw/auto 0755 root bin -d none /opt/csw/lib/perl/csw/auto/pmtools 0755 root bin -f none /opt/csw/lib/perl/csw/auto/pmtools/.packlist 0644 root bin -d none /opt/csw/share 0755 root bin -d none /opt/csw/share/man 0755 root bin -d none /opt/csw/share/man/man1 0755 root bin -f none /opt/csw/share/man/man1/basepods.1 0444 root bin -f none /opt/csw/share/man/man1/faqpods.1 0444 root bin -f none /opt/csw/share/man/man1/modpods.1 0444 root bin -f none /opt/csw/share/man/man1/pfcat.1 0444 root bin -f none /opt/csw/share/man/man1/plxload.1 0444 root bin -f none /opt/csw/share/man/man1/pmall.1 0444 root bin -f none /opt/csw/share/man/man1/pman.1 0444 root bin -f none /opt/csw/share/man/man1/pmcat.1 0444 root bin -f none /opt/csw/share/man/man1/pmdesc.1 0444 root bin -f none /opt/csw/share/man/man1/pmdirs.1 0444 root bin -f none /opt/csw/share/man/man1/pmeth.1 0444 root bin -f none /opt/csw/share/man/man1/pmexp.1 0444 root bin -f none /opt/csw/share/man/man1/pmfunc.1 0444 root bin -f none /opt/csw/share/man/man1/pminst.1 0444 root bin -f none /opt/csw/share/man/man1/pmload.1 0444 root bin -f none /opt/csw/share/man/man1/pmls.1 0444 root bin -f none /opt/csw/share/man/man1/pmpath.1 0444 root bin -f none /opt/csw/share/man/man1/pmvers.1 0444 root bin -f none /opt/csw/share/man/man1/podgrep.1 0444 root bin -f none /opt/csw/share/man/man1/podpath.1 0444 root bin -f none /opt/csw/share/man/man1/pods.1 0444 root bin -f none /opt/csw/share/man/man1/podtoc.1 0444 root bin -f none /opt/csw/share/man/man1/sitepods.1 0444 root bin -f none /opt/csw/share/man/man1/stdpods.1 0444 root bin -d none /opt/csw/share/man/man3 0755 root bin -f none /opt/csw/share/man/man3/Devel::Loaded.3perl 0444 root bin -d none /opt/csw/share/perl 0755 root bin -d none /opt/csw/share/perl/csw 0755 root bin -d none /opt/csw/share/perl/csw/Devel 0755 root bin -f none /opt/csw/share/perl/csw/Devel/Loaded.pm 0444 root bin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Thu Dec 2 15:09:07 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Thu, 02 Dec 2010 14:09:07 +0000 Subject: [csw-devel] SF.net SVN: gar:[11763] csw/mgar/pkg/genshi/trunk Message-ID: Revision: 11763 http://gar.svn.sourceforge.net/gar/?rev=11763&view=rev Author: dmichelsen Date: 2010-12-02 14:09:06 +0000 (Thu, 02 Dec 2010) Log Message: ----------- genshi: Update to 0.6 Modified Paths: -------------- csw/mgar/pkg/genshi/trunk/Makefile csw/mgar/pkg/genshi/trunk/checksums Modified: csw/mgar/pkg/genshi/trunk/Makefile =================================================================== --- csw/mgar/pkg/genshi/trunk/Makefile 2010-12-02 13:09:14 UTC (rev 11762) +++ csw/mgar/pkg/genshi/trunk/Makefile 2010-12-02 14:09:06 UTC (rev 11763) @@ -1,5 +1,5 @@ GARNAME = Genshi -GARVERSION = 0.5.1 +GARVERSION = 0.6 CATEGORIES = python DESCRIPTION = Python toolkit for generation of output for the web @@ -9,20 +9,23 @@ or other textual content for output generation on the web endef -MASTER_SITES = http://ftp.edgewall.com/pub/genshi/ -SPKG_SOURCEURL = http://genshi.edgewall.org/wiki/TracDownload -DISTFILES = $(GARNAME)-$(GARVERSION).tar.bz2 -# We define upstream file regex so we can be notifed of -# new upstream software release -UFILES_REGEX = (\d+(?:\.\d+)*).tar.gz +MASTER_SITES = http://ftp.edgewall.com/pub/genshi/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = (\d+(?:\.\d+)*).tar.gz + PACKAGES = CSWgenshi -ARCHALL_CSWtrac = 1 +CATALOGNAME = genshi -CATALOGNAME_CSWgenshi = genshi -SPKG_DESC_CSWgenshi = $(DESCRIPTION) +ARCHALL = 1 -TEST_SCRIPTS = +VENDOR_URL = http://genshi.edgewall.org/ +TEST_SCRIPTS = + +# This is a legacy name, don't change for now +CHECKPKG_OVERRIDES_CSWgenshi += pkgname-does-not-start-with-CSWpy- +CHECKPKG_OVERRIDES_CSWgenshi += catalogname-does-not-start-with-py_ + include gar/category.mk Modified: csw/mgar/pkg/genshi/trunk/checksums =================================================================== --- csw/mgar/pkg/genshi/trunk/checksums 2010-12-02 13:09:14 UTC (rev 11762) +++ csw/mgar/pkg/genshi/trunk/checksums 2010-12-02 14:09:06 UTC (rev 11763) @@ -1 +1 @@ -822942bbc3109da9f6b472eb8ea4e3a4 download/Genshi-0.5.1.tar.bz2 +604e8b23b4697655d36a69c2d8ef7187 Genshi-0.6.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Thu Dec 2 18:46:17 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Thu, 02 Dec 2010 17:46:17 +0000 Subject: [csw-devel] SF.net SVN: gar:[11764] csw/mgar/gar/v2-fortran Message-ID: Revision: 11764 http://gar.svn.sourceforge.net/gar/?rev=11764&view=rev Author: gadavis Date: 2010-12-02 17:46:17 +0000 (Thu, 02 Dec 2010) Log Message: ----------- Merging changes from v2 into v2-fortran 10989:11763 Modified Paths: -------------- csw/mgar/gar/v2-fortran/bin/analyze_module_results.py csw/mgar/gar/v2-fortran/bin/checkpkg csw/mgar/gar/v2-fortran/bin/checkpkg_collect_stats.py csw/mgar/gar/v2-fortran/bin/upstream_watch csw/mgar/gar/v2-fortran/categories/cpan/category.mk csw/mgar/gar/v2-fortran/category.mk csw/mgar/gar/v2-fortran/gar.conf.mk csw/mgar/gar/v2-fortran/gar.lib.mk csw/mgar/gar/v2-fortran/gar.mk csw/mgar/gar/v2-fortran/gar.pkg.mk csw/mgar/gar/v2-fortran/lib/python/README csw/mgar/gar/v2-fortran/lib/python/checkpkg.py csw/mgar/gar/v2-fortran/lib/python/checkpkg_test.py csw/mgar/gar/v2-fortran/lib/python/dependency_checks.py csw/mgar/gar/v2-fortran/lib/python/dependency_checks_test.py csw/mgar/gar/v2-fortran/lib/python/opencsw.py csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py csw/mgar/gar/v2-fortran/lib/python/package_checks.py csw/mgar/gar/v2-fortran/lib/python/package_checks_test.py csw/mgar/gar/v2-fortran/lib/python/pkg-review-template.html csw/mgar/gar/v2-fortran/lib/python/submit_to_newpkgs.py csw/mgar/gar/v2-fortran/lib/python/tag.py csw/mgar/gar/v2-fortran/lib/python/tag_test.py csw/mgar/gar/v2-fortran/lib/python/testdata/rpaths.py csw/mgar/gar/v2-fortran/pkglib/csw_cpan_dyngspec.gspec csw/mgar/gar/v2-fortran/tests/run_tests.py Added Paths: ----------- csw/mgar/gar/v2-fortran/.gitignore csw/mgar/gar/v2-fortran/bin/ap2mod_build_scripts csw/mgar/gar/v2-fortran/lib/python/catalog.py csw/mgar/gar/v2-fortran/lib/python/catalog_test.py csw/mgar/gar/v2-fortran/lib/python/compare_pkgs.py csw/mgar/gar/v2-fortran/lib/python/compare_pkgs_test.py csw/mgar/gar/v2-fortran/lib/python/database.py csw/mgar/gar/v2-fortran/lib/python/inspective_package.py csw/mgar/gar/v2-fortran/lib/python/package.py csw/mgar/gar/v2-fortran/lib/python/package_stats.py csw/mgar/gar/v2-fortran/lib/python/package_stats_test.py csw/mgar/gar/v2-fortran/lib/python/package_test.py csw/mgar/gar/v2-fortran/lib/python/patch_package.py csw/mgar/gar/v2-fortran/lib/python/sharedlib_utils.py csw/mgar/gar/v2-fortran/lib/python/sharedlib_utils_test.py csw/mgar/gar/v2-fortran/lib/python/submit_to_newpkgs_test.py csw/mgar/gar/v2-fortran/lib/python/testdata/bdb48_stats.py csw/mgar/gar/v2-fortran/lib/python/testdata/libnet_stats.py csw/mgar/gar/v2-fortran/lib/sh/run_full_cat.sh Property Changed: ---------------- csw/mgar/gar/v2-fortran/ csw/mgar/gar/v2-fortran/lib/python/tag_test.py csw/mgar/gar/v2-fortran/pkglib/csw/depend Property changes on: csw/mgar/gar/v2-fortran ___________________________________________________________________ Modified: svn:mergeinfo - /csw/mgar/gar/v2:4936-6678,10928-10988 /csw/mgar/gar/v2-bwalton:9784-10011 /csw/mgar/gar/v2-checkpkg:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation:10585-10737 /csw/mgar/gar/v2-checkpkg-stats:8454-8649 /csw/mgar/gar/v2-collapsed-modulations:6895 /csw/mgar/gar/v2-dirpackage:8125-8180 /csw/mgar/gar/v2-migrateconf:7082-7211 /csw/mgar/gar/v2-skayser:6087-6132 /csw/mgar/gar/v2-sqlite:10434-10449 + /csw/mgar/gar/v2:4936-6678,10928-10988,10990-11763 /csw/mgar/gar/v2-bwalton:9784-10011 /csw/mgar/gar/v2-checkpkg:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation:10585-10737 /csw/mgar/gar/v2-checkpkg-stats:8454-8649 /csw/mgar/gar/v2-collapsed-modulations:6895 /csw/mgar/gar/v2-dirpackage:8125-8180 /csw/mgar/gar/v2-git/v2-relocate:7617 /csw/mgar/gar/v2-migrateconf:7082-7211 /csw/mgar/gar/v2-noexternals:11592-11745 /csw/mgar/gar/v2-relocate:5028-11738 /csw/mgar/gar/v2-skayser:6087-6132 /csw/mgar/gar/v2-sqlite:10434-10449 Copied: csw/mgar/gar/v2-fortran/.gitignore (from rev 11763, csw/mgar/gar/v2/.gitignore) =================================================================== --- csw/mgar/gar/v2-fortran/.gitignore (rev 0) +++ csw/mgar/gar/v2-fortran/.gitignore 2010-12-02 17:46:17 UTC (rev 11764) @@ -0,0 +1,2 @@ +*.pyc +*.swp Modified: csw/mgar/gar/v2-fortran/bin/analyze_module_results.py =================================================================== --- csw/mgar/gar/v2-fortran/bin/analyze_module_results.py 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/bin/analyze_module_results.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -17,6 +17,7 @@ sys.path.append(os.path.join(*path_list)) import checkpkg import overrides +import package_stats BEFORE_OVERRIDES = """If any of the reported errors were false positives, you can override them pasting the lines below to the GAR recipe.""" @@ -48,7 +49,7 @@ # It might be a good idea to store the error tags in the database and # eliminate the need to access the directory with the error tag files. - pkgstats = checkpkg.StatsListFromCatalog(filenames, options.catalog) + pkgstats = package_stats.StatsListFromCatalog(filenames, options.catalog) overrides_list = [pkg.GetSavedOverrides() for pkg in pkgstats] override_list = reduce(operator.add, overrides_list) error_tags = reduce(operator.add, [stat.GetSavedErrorTags() for stat in pkgstats]) Copied: csw/mgar/gar/v2-fortran/bin/ap2mod_build_scripts (from rev 11763, csw/mgar/gar/v2/bin/ap2mod_build_scripts) =================================================================== --- csw/mgar/gar/v2-fortran/bin/ap2mod_build_scripts (rev 0) +++ csw/mgar/gar/v2-fortran/bin/ap2mod_build_scripts 2010-12-02 17:46:17 UTC (rev 11764) @@ -0,0 +1,71 @@ +#!/bin/bash + +MERGEDIR=$1; shift +AP2MODS=opt/csw/apache2/ap2mod + +cd $MERGEDIR/ + +[ -d $AP2MODS ] || mkdir -p $AP2MODS + +for a in $*; do + for f in $(find . -name "*$a*"); do + modfile=$(basename $f) + modname=$(echo $modfile | sed 's/mod_//; s/\.so$//') + ap2modfile=$AP2MODS/$modname + cat < $ap2modfile + +PIR=\${PKG_INSTALL_ROOT:-'/'} +AP2_PREFIX=/opt/csw/apache2 +AP2_BINDIR=\$AP2_PREFIX/sbin +AP2_LIBEXEC=\$AP2_PREFIX/libexec +AP2_CONFDIR=/etc/opt/csw/apache2 +AP2_CONFIG=\$AP2_CONFDIR/httpd.conf +AP2_APXS=\$AP2_BINDIR/apxs + +if [ "\$1" = install ]; then + +echo "File created by \$PKGINST during install. Please do not remove." > \$PIR/$ap2modfile + +# Source csw.conf, if it exists +if [ -f \$PIR/opt/csw/etc/csw.conf ] ; then + . \$PIR/opt/csw/etc/csw.conf +fi +if [ -f \$PIR/etc/opt/csw/csw.conf ] ; then + . \$PIR/etc/opt/csw/csw.conf +fi + +# Modules will be enabled by default, but a global kill switch +# is checked , followed by a module specific value. Thus, +# either ap2_enable_modules or ap2_enable_suexec (for example) +# could disable activation of the suexec module. The +# +# This value is passed to apxs (-a: add, enable; -A: add, +# disable) +enmod=-a + +if [ "\$ap2_enable_modules" = "no" ]; then + enmod=-A +fi + +if [ "\$ap2_enable_$modname" = "no" ]; then + enmod=-A +elif [ "$ap2_mod_specific" = "yes" ]; then + enmod=-a +fi + +if [ -f "\$PIR/\$AP2_CONFIG" -a -x "\$PIR/\$AP2_APXS" ]; then + # Add the module module, optionally enabling it by default + chroot \$PIR \$AP2_APXS -e \$enmod -n $modname $modfile +fi + +else + +rm \$PIR/$ap2modfile + +if [ -f "\$PIR/\$AP2_CONFIG" -a -x "\$PIR/\$AP2_APXS" ]; then + chroot \$PIR \$AP2_APXS -e -A -n $modname $modfile +fi +fi +EOF + done +done Modified: csw/mgar/gar/v2-fortran/bin/checkpkg =================================================================== --- csw/mgar/gar/v2-fortran/bin/checkpkg 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/bin/checkpkg 2010-12-02 17:46:17 UTC (rev 11764) @@ -236,7 +236,7 @@ # "checkpkg-". test_suite_ok=1 -checkpkg_module_dir=${command_basedir}/../lib/checkpkg.d +checkpkg_module_dir="${command_basedir}/../lib/checkpkg.d" checkpkg_module_tag="checkpkg-" checkpkg_stats_basedir="${HOME}/.checkpkg/stats" @@ -317,15 +317,14 @@ if [[ "${ANALYZE}" -eq 1 ]]; then # Collecting errors and applying the overrides. # This has to use the original files. - echo "Applying the overrides and analyzing the results." ${command_basedir}/analyze_module_results.py \ ${catalog_options} \ ${quiet_options} \ "$@" if [[ "$?" -ne 0 ]]; then - errmsg "${RED}Modular checks are reporting errors.${COLOR_RESET}" + errmsg "${RED}Checkpkg has reported errors.${COLOR_RESET}" else - print "${GREEN}All modular tests were successful.${COLOR_RESET}" + print "${GREEN}Checkpkg reports no errors.${COLOR_RESET}" fi else echo "Skipping result analysis." Modified: csw/mgar/gar/v2-fortran/bin/checkpkg_collect_stats.py =================================================================== --- csw/mgar/gar/v2-fortran/bin/checkpkg_collect_stats.py 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/bin/checkpkg_collect_stats.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -21,6 +21,7 @@ sys.path.append(os.path.join(*path_list)) import checkpkg import opencsw +import package_stats def main(): parser = optparse.OptionParser() @@ -43,7 +44,7 @@ args_display = args_display[:5] + ["...more..."] file_list = args logging.debug("Processing: %s, please be patient", args_display) - stats_list = checkpkg.StatsListFromCatalog( + stats_list = package_stats.StatsListFromCatalog( file_list, options.catalog, options.debug) # Reversing the item order in the list, so that the pop() method can be used # to get packages, and the order of processing still matches the one in the Modified: csw/mgar/gar/v2-fortran/bin/upstream_watch =================================================================== --- csw/mgar/gar/v2-fortran/bin/upstream_watch 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/bin/upstream_watch 2010-12-02 17:46:17 UTC (rev 11764) @@ -89,8 +89,10 @@ $ftp_proxy_cmd = "set ftp:proxy $ENV{ftp_proxy};" if exists $ENV{ftp_proxy}; $http_proxy_cmd = "set http:proxy $ENV{HTTP_PROXY};" if exists $ENV{HTTP_PROXY}; $http_proxy_cmd = "set http:proxy $ENV{http_proxy};" if exists $ENV{http_proxy}; + $https_proxy_cmd = "set https:proxy $ENV{HTTPS_PROXY};" if exists $ENV{HTTPS_PROXY}; + $https_proxy_cmd = "set https:proxy $ENV{https_proxy};" if exists $ENV{https_proxy}; - open (FH, "lftp -q -c \"set net:timeout 30; set net:max-retries 16; $ftp_proxy_cmd $http_proxy_cmd open $url/ && ls\" 2>/dev/null |"); + open (FH, "lftp -q -c \"set net:timeout 30; set net:max-retries 16; $ftp_proxy_cmd $http_proxy_cmd $https_proxy_cmd open $url/ && ls\" 2>/dev/null |"); while (my $line = ) { my @cols = split (/\s+/, $line); Modified: csw/mgar/gar/v2-fortran/categories/cpan/category.mk =================================================================== --- csw/mgar/gar/v2-fortran/categories/cpan/category.mk 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/categories/cpan/category.mk 2010-12-02 17:46:17 UTC (rev 11764) @@ -31,7 +31,7 @@ UFILES_REGEX ?= $(GARNAME)-(\d+(?:\.\d+)*).tar.gz USTREAM_MASTER_SITE ?= $(SPKG_SOURCEURL) -_CATEGORY_SPKG_DESC = $(GARNAME): $(SPKG_DESC) +$(foreach P,$(PACKAGES),$(eval _CATEGORY_SPKG_DESC_$P = $$(GARNAME): $$(or $$(SPKG_DESC_$P),$$(SPKG_DESC)))) _CATEGORY_PKGINFO = echo "PERL_MODULE_NAME=$(GARNAME)"; SPKG_SOURCEURL := $(SPKG_SOURCEURL)/$(GARNAME) @@ -39,6 +39,8 @@ _MERGE_EXCLUDE_CATEGORY = .*/perllocal\.pod .*/\.packlist _CATEGORY_GSPEC_INCLUDE ?= csw_cpan_dyngspec.gspec +_CATEGORY_RUNTIME_DEP_PKGS ?= CSWperl + # Perl module dependencies can not be properly tracked right now _CATEGORY_CHECKPKG_OVERRIDES = surplus-dependency Modified: csw/mgar/gar/v2-fortran/category.mk =================================================================== --- csw/mgar/gar/v2-fortran/category.mk 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/category.mk 2010-12-02 17:46:17 UTC (rev 11764) @@ -1,9 +1,15 @@ # vim: ft=make ts=4 sw=4 noet -# This makefile is to be included from Makefiles in each category -# directory. +# +# This Makefile is the main entry point to GAR and is included by +# each package build description. As such, the file name 'category.mk' +# is slightly misleading and could be subject to future change. +# -ifeq (,$(wildcard gar/categories/$(CATEGORIES)/category.mk)) - $(error The category '$(CATEGORIES)' is invalid. Valid categories are $(patsubst gar/categories/%,%,$(wildcard gar/categories/*))) +# Determine this file's directory, i.e. the GAR base directory +GARDIR := $(dir $(lastword $(MAKEFILE_LIST))) + +ifeq (,$(wildcard $(GARDIR)/categories/$(CATEGORIES)/category.mk)) + $(error The category '$(CATEGORIES)' is invalid. Valid categories are: $(patsubst $(GARDIR)/categories/%,%,$(wildcard $(GARDIR)/categories/*))) endif -include gar/categories/$(CATEGORIES)/category.mk +include $(GARDIR)/categories/$(CATEGORIES)/category.mk Modified: csw/mgar/gar/v2-fortran/gar.conf.mk =================================================================== --- csw/mgar/gar/v2-fortran/gar.conf.mk 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/gar.conf.mk 2010-12-02 17:46:17 UTC (rev 11764) @@ -145,6 +145,11 @@ perlcswlib ?= $(perllib)/csw perlpackroot ?= $(perlcswlib)/auto +# This Variable is only used if you make your package relocatable +# using ALLOW_RELOCATE, it will allow you to change your default +# directory for BASEDIR +RELOCATE_PREFIX ?= $(prefix) + # These variables are used to construct pathes. If you temporarily reset the above # variables for special install locations (like /opt/csw/bin/bdb44/) the definitions # here make sure the binaries for the make process are still found. @@ -666,6 +671,11 @@ CPAN_MIRRORS = $(foreach S,$(CPAN_SITES),$(S)/authors/id/$(AUTHOR_ID)/) CPAN_FIRST_MIRROR = $(firstword $(CPAN_SITES))/authors/id +# Python Package Index +PYPI_PROJECT ?= $(GARNAME) +PYPI_SUBDIR = $(shell echo $(PYPI_PROJECT) | cut -c 1) +PYPI_MIRROR = http://pypi.python.org/packages/source/$(PYPI_SUBDIR)/$(PYPI_PROJECT)/ + # Package dir GARPACKAGE = $(shell basename $(CURDIR)) Modified: csw/mgar/gar/v2-fortran/gar.lib.mk =================================================================== --- csw/mgar/gar/v2-fortran/gar.lib.mk 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/gar.lib.mk 2010-12-02 17:46:17 UTC (rev 11764) @@ -27,7 +27,7 @@ #################### FETCH RULES #################### -URLS = $(foreach SITE,$(FILE_SITES) $(MASTER_SITES),$(addprefix $(SITE),$(DISTFILES))) $(foreach SITE,$(FILE_SITES) $(PATCH_SITES) $(MASTER_SITES),$(addprefix $(SITE),$(ALLFILES_PATCHFILES))) +URLS := $(foreach SITE,$(FILE_SITES) $(MASTER_SITES),$(addprefix $(SITE),$(DISTFILES))) $(foreach SITE,$(FILE_SITES) $(PATCH_SITES) $(MASTER_SITES),$(addprefix $(SITE),$(ALLFILES_PATCHFILES))) # if the caller has defined _postinstall, etc targets for a package, add # these 'dynamic script' targets to our fetch list @@ -339,6 +339,12 @@ @lzip -dc $(DOWNLOADDIR)/$* | gtar $(TAR_ARGS) -xf - -C $(EXTRACTDIR) @$(MAKECOOKIE) +# rule to extract files with tar and lzma +tar-lzma-extract-%: + @echo " ==> Extracting $(DOWNLOADDIR)/$*" + @lzma -dc $(DOWNLOADDIR)/$* | gtar $(TAR_ARGS) -xf - -C $(EXTRACTDIR) + @$(MAKECOOKIE) + # extract compressed single files gz-extract-%: @echo " ==> Decompressing $(DOWNLOADDIR)/$*" @@ -364,6 +370,12 @@ @lzip -d $(WORKDIR)/$* @$(MAKECOOKIE) +lzma-extract-%: + @echo " ==> Decompressing $(DOWNLOADDIR)/$*" + @cp $(DOWNLOADDIR)/$* $(WORKDIR)/ + @lzma -d $(WORKDIR)/$* + @$(MAKECOOKIE) + # extra dependency rule for git repos, that will allow the user # to supply an alternate target at their discretion git-extract-%: @@ -431,6 +443,9 @@ extract-archive-%.tar.lz: tar-lz-extract-%.tar.lz @$(MAKECOOKIE) +extract-archive-%.tar.lzma: tar-lzma-extract-%.tar.lzma + @$(MAKECOOKIE) + extract-archive-%.zip: zip-extract-%.zip @$(MAKECOOKIE) @@ -452,6 +467,9 @@ extract-archive-%.lz: lz-extract-%.lz @$(MAKECOOKIE) +extract-archive-%.lzma: lzma-extract-%.lzma + @$(MAKECOOKIE) + extract-archive-%.git: git-extract-%.git @$(MAKECOOKIE) @@ -498,7 +516,7 @@ # apply normal patches (git format-patch output or old-style diff -r) normal-patch-%: @echo " ==> Applying patch $(DOWNLOADDIR)/$*" - @( if ggrep -q 'Subject:' $(abspath $(DOWNLOADDIR)/$*); then \ + @( if ggrep -q 'diff --git' $(abspath $(DOWNLOADDIR)/$*); then \ cd $(WORKSRC); git am --ignore-space-change --ignore-whitespace $(abspath $(DOWNLOADDIR)/$*); \ else \ echo Adding old-style patch...; \ Modified: csw/mgar/gar/v2-fortran/gar.mk =================================================================== --- csw/mgar/gar/v2-fortran/gar.mk 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/gar.mk 2010-12-02 17:46:17 UTC (rev 11764) @@ -11,20 +11,11 @@ # Comment this out to make much verbosity #.SILENT: -#ifeq ($(origin GARDIR), undefined) -#GARDIR := $(CURDIR)/../.. -#endif - -#GARDIR ?= ../.. -#ifeq ($(origin GARDIR), undefined) -#GARDIR := $(CURDIR)/../.. -#endif - ifneq ($(abspath /),/) $(error Your version of 'make' is too old: $(MAKE_VERSION). Please make sure you are using at least 3.81) endif -GARDIR ?= gar +# $(GARDIR) is pre-set by the top-level category.mk GARBIN = $(GARDIR)/bin DIRSTODOTS = $(subst . /,./,$(patsubst %,/..,$(subst /, ,/$(1)))) @@ -135,7 +126,7 @@ merge-$(2): @echo "[===== Building modulation '$(2)' on host '$$(BUILDHOST)' =====]" $$(if $$(and $$(BUILDHOST),$$(filter-out $$(THISHOST),$$(BUILDHOST))),\ - $(SSH) $$(BUILDHOST) "PATH=$$(PATH) $(MAKE) -C $$(CURDIR) $(if $(GAR_PLATFORM),GAR_PLATFORM=$(GAR_PLATFORM)) MODULATION=$(2) $(3) merge-modulated",\ + $(SSH) $$(BUILDHOST) "PATH=$$(PATH) MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $$(CURDIR) $(if $(GAR_PLATFORM),GAR_PLATFORM=$(GAR_PLATFORM)) MODULATION=$(2) $(3) merge-modulated",\ $(MAKE) $(if $(GAR_PLATFORM),GAR_PLATFORM=$(GAR_PLATFORM)) MODULATION=$(2) $(3) merge-modulated\ ) @# The next line has intentionally been left blank to explicitly terminate this make rule @@ -395,7 +386,7 @@ # We call an additional extract-modulated without resetting any variables so # a complete unpacked set goes to the global dir for packaging (like gspec) -extract: checksum $(COOKIEDIR) pre-extract pre-extract-git-check extract-modulated $(addprefix extract-,$(MODULATIONS)) post-extract +extract: checksum $(COOKIEDIR) pre-extract $(if $(NOGITPATCH),,pre-extract-git-check) extract-modulated $(addprefix extract-,$(MODULATIONS)) post-extract @$(DONADA) extract-global: $(if $(filter global,$(MODULATION)),extract-modulated) @@ -406,7 +397,7 @@ $(addprefix dep-$(GARDIR)/,$(EXTRACTDEPS)) \ announce-modulation \ pre-extract-modulated pre-extract-$(MODULATION) $(EXTRACT_TARGETS) post-extract-$(MODULATION) post-extract-modulated \ - $(if $(filter global,$(MODULATION)),,post-extract-gitsnap) \ + $(if $(filter global,$(MODULATION)),,$(if $(NOGITPATCH),,post-extract-gitsnap)) \ $(foreach FILE,$(EXPANDVARS),expandvars-$(FILE)) @$(DONADA) @@ -467,7 +458,7 @@ patch: pre-patch $(addprefix patch-,$(MODULATIONS)) post-patch @$(DONADA) -patch-modulated: extract-modulated $(WORKSRC) pre-patch-modulated pre-patch-$(MODULATION) $(PATCH_TARGETS) $(if $(filter global,$(MODULATION)),,post-patch-gitsnap) post-patch-$(MODULATION) post-patch-modulated +patch-modulated: extract-modulated $(WORKSRC) pre-patch-modulated pre-patch-$(MODULATION) $(PATCH_TARGETS) $(if $(filter global,$(MODULATION)),,$(if $(NOGITPATCH),,post-patch-gitsnap)) post-patch-$(MODULATION) post-patch-modulated @$(DONADA) # returns true if patch has completed successfully, false @@ -484,9 +475,13 @@ fi ) @$(MAKECOOKIE) -makepatch: $(addprefix patch-,$(MODULATIONS)) $(addprefix makepatch-,$(MODULATIONS)) +makepatch: $(if $(NOGITPATCH),makepatch-nogit,$(addprefix patch-,$(MODULATIONS)) $(addprefix makepatch-,$(MODULATIONS))) @$(DONADA) +makepatch-nogit: + @echo You set NOGITPATCH in your build recipe. I can't create a patch. + @$(DONADA) + # Allow generation of patches from modified work source. makepatch-modulated: $(FILEDIR) @( if [ -d "$(WORKSRC)/.git" ]; then \ @@ -805,7 +800,7 @@ # The basic merge merges the compiles for all ISAs on the current architecture -merge: checksum pre-merge merge-do merge-license merge-classutils merge-checkpkgoverrides merge-alternatives $(if $(COMPILE_ELISP),compile-elisp) $(if $(NOSOURCEPACKAGE),,merge-src) post-merge +merge: checksum pre-merge merge-do merge-license merge-classutils merge-checkpkgoverrides merge-alternatives $(if $(COMPILE_ELISP),compile-elisp) $(if $(NOSOURCEPACKAGE),,merge-src) $(if $(AP2_MODS),post-merge-ap2mod) post-merge @$(DONADA) merge-do: $(if $(PARALLELMODULATIONS),merge-parallel,merge-sequential) @@ -833,6 +828,9 @@ echo "Building all ISAs in parallel. Please see the individual logfiles for details:";$(foreach M,$(MODULATIONS),echo "- $(WORKROOTDIR)/build-$M/build.log";)\ ) +post-merge-ap2mod: + $(GARBIN)/ap2mod_build_scripts $(PKGROOT) $(AP2_MODFILES) + @$(MAKECOOKIE) # This merges the merge-modulated: install-modulated pre-merge-modulated pre-merge-$(MODULATION) $(MERGE_TARGETS) post-merge-$(MODULATION) post-merge-modulated @@ -840,14 +838,14 @@ # Copy the whole tree verbatim merge-copy-all: $(PKGROOT) $(INSTALLISADIR) - $(_DBG_MERGE)(cd $(INSTALLISADIR); umask 022 && pax -r -w -v $(_PAX_ARGS) \ + $(_DBG_MERGE)(cd $(INSTALLISADIR)$(if $(ALLOW_RELOCATE),$(RELOCATE_PREFIX)); umask 022 && pax -r -w -v $(_PAX_ARGS) \ $(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),.$(call mergebase,$(DIR))/,p") \ . $(PKGROOT)) @$(MAKECOOKIE) # Copy only the merge directories merge-copy-only: $(PKGROOT) - $(_DBG_MERGE)(cd $(INSTALLISADIR); umask 022 && pax -r -w -v $(_PAX_ARGS) \ + $(_DBG_MERGE)(cd $(INSTALLISADIR)$(if $(ALLOW_RELOCATE),$(RELOCATE_PREFIX)); umask 022 && pax -r -w -v $(_PAX_ARGS) \ $(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),.$(call mergebase,$(DIR))/,p") -s ",.*,," \ . $(PKGROOT) \ ) @@ -855,7 +853,7 @@ # Copy the whole tree and relocate the directories in $(MERGE_DIRS) merge-copy-relocate: $(PKGROOT) $(INSTALLISADIR) - $(_DBG_MERGE)(cd $(INSTALLISADIR); umask 022 && pax -r -w -v $(_PAX_ARGS) \ + $(_DBG_MERGE)(cd $(INSTALLISADIR)$(if $(ALLOW_RELOCATE),$(RELOCATE_PREFIX)); umask 022 && pax -r -w -v $(_PAX_ARGS) \ $(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),.$(call mergebase,$(DIR))/$(ISA)/,p") \ . $(PKGROOT) \ ) @@ -863,7 +861,7 @@ # Copy only the relocated directories merge-copy-relocated-only: $(PKGROOT) $(INSTALLISADIR) - $(_DBG_MERGE)(cd $(INSTALLISADIR); umask 022 && pax -r -w -v $(_PAX_ARGS) \ + $(_DBG_MERGE)(cd $(INSTALLISADIR)$(if $(ALLOW_RELOCATE),$(RELOCATE_PREFIX)); umask 022 && pax -r -w -v $(_PAX_ARGS) \ $(foreach DIR,$(MERGE_DIRS),-s ",^\(\.$(DIR)/\),.$(call mergebase,$(DIR))/$(ISA)/,p") -s ",.*,," \ . $(PKGROOT) \ ) @@ -871,7 +869,7 @@ # Copy merge-copy-config-only: - $(_DBG_MERGE)(cd $(INSTALLISADIR); umask 022 && pax -r -w -v $(_PAX_ARGS) \ + $(_DBG_MERGE)(cd $(INSTALLISADIR)$(if $(ALLOW_RELOCATE),$(RELOCATE_PREFIX)); umask 022 && pax -r -w -v $(_PAX_ARGS) \ -s ",^\(\.$(bindir)/.*-config\)\$$,\1,p" \ -s ",.*,," \ . $(PKGROOT) \ @@ -881,7 +879,7 @@ .PHONY: remerge reset-merge reset-merge-modulated remerge: reset-merge merge -reset-merge: reset-package $(addprefix reset-merge-,$(MODULATIONS)) reset-merge-license reset-merge-classutils reset-merge-checkpkgoverrides reset-merge-alternatives reset-merge-src +reset-merge: reset-package $(addprefix reset-merge-,$(MODULATIONS)) reset-merge-license reset-merge-classutils reset-merge-checkpkgoverrides reset-merge-alternatives reset-merge-ap2mod reset-merge-src @rm -f $(COOKIEDIR)/pre-merge $(foreach M,$(MODULATIONS),$(COOKIEDIR)/merge-$M) $(COOKIEDIR)/merge $(COOKIEDIR)/post-merge @rm -rf $(PKGROOT) Modified: csw/mgar/gar/v2-fortran/gar.pkg.mk =================================================================== --- csw/mgar/gar/v2-fortran/gar.pkg.mk 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/gar.pkg.mk 2010-12-02 17:46:17 UTC (rev 11764) @@ -152,7 +152,10 @@ SPKG_DESC ?= $(DESCRIPTION) SPKG_VERSION ?= $(GARVERSION) SPKG_CATEGORY ?= application -SPKG_SOURCEURL ?= $(firstword $(VENDOR_URL) $(MASTER_SITES) $(GIT_REPOS)) +SPKG_SOURCEURL ?= $(firstword $(VENDOR_URL) \ + $(if $(filter $(GNU_MIRROR),$(MASTER_SITES)),http://www.gnu.org/software/$(GNU_PROJ)) \ + $(MASTER_SITES) \ + $(GIT_REPOS)) SPKG_VENDOR ?= $(SPKG_SOURCEURL) packaged for CSW by $(SPKG_PACKAGER) SPKG_PSTAMP ?= $(LOGNAME)@$(shell hostname)-$(call _REVISION)-$(shell date '+%Y%m%d%H%M%S') SPKG_BASEDIR ?= $(prefix) @@ -185,6 +188,10 @@ # This is the default path for texinfo pages to be picked up. Extend or replace as necessary. TEXINFO ?= $(infodir)/.*\.info(?:-\d+)? $(EXTRA_TEXINFO) +# if AP2_MODS is set, files matching this shell glob (passed to find) +# will have 'build' set as their class +AP2_MODFILES ?= opt/csw/apache2/libexec/*so $(EXTRA_AP2_MODFILES) + # - set class for all config files _CSWCLASS_FILTER = | perl -ane '\ $(foreach FILE,$(MIGRATECONF),$$F[1] = "cswmigrateconf" if( $$F[2] =~ m(^$(FILE)$$) );)\ @@ -197,6 +204,7 @@ $(foreach FILE,$(CRONTABS),$$F[1] = "cswcrontab" if( $$F[2] =~ m(^$(FILE)$$) );)\ $(if $(PYCOMPILE),$(foreach FILE,$(_PYCOMPILE_FILES),$$F[1] = "cswpycompile" if( $$F[2] =~ m(^$(FILE)$$) );))\ $(foreach FILE,$(TEXINFO),$$F[1] = "cswtexinfo" if( $$F[2] =~ m(^$(FILE)$$) );)\ + $(if $(AP2_MODS), at F = ("e", "build", $$F[2], "?", "?", "?") if ($$F[2] =~ m(^/opt/csw/apache2/ap2mod/.*));) \ print join(" ", at F),"\n";' # If you add another filter above, also add the class to this list. It is used @@ -238,7 +246,7 @@ endif # Where we find our mkpackage global templates -PKGLIB = $(CURDIR)/$(GARDIR)/pkglib +PKGLIB = $(GARDIR)/pkglib PKG_EXPORTS = GARNAME GARVERSION DESCRIPTION CATEGORIES GARCH GARDIR GARBIN PKG_EXPORTS += CURDIR WORKDIR WORKDIR_FIRSTMOD WORKSRC WORKSRC_FIRSTMOD PKGROOT @@ -277,10 +285,11 @@ baseisadirs = $(1)/$(2) $(call isadirs,$(1),$(2)) # PKGFILES_RT selects files belonging to a runtime package -PKGFILES_RT += $(call baseisadirs,$(libdir),[^/]*\.so(\.\d+)*) +PKGFILES_RT += $(call baseisadirs,$(libdir),[^/]*\.so\.\d+(\.\d+)*) # PKGFILES_DEVEL selects files belonging to a developer package PKGFILES_DEVEL += $(call baseisadirs,$(bindir),[^/]*-config) +PKGFILES_DEVEL += $(call baseisadirs,$(libdir),[^/]*\.so) PKGFILES_DEVEL += $(call baseisadirs,$(libdir),[^/]*\.(a|la)) PKGFILES_DEVEL += $(call baseisadirs,$(libdir),pkgconfig(/.*)?) PKGFILES_DEVEL += $(includedir)/.* @@ -376,12 +385,16 @@ # for distributing files to individual packages. PROTOTYPE = $(WORKDIR)/prototype +define dontrelocate + $(shell gsed -i -e 's,\(.\) .* \($(1)[\s/]*\),\1 norelocate /\2,g' $(2)) +endef + # Dynamic prototypes work like this: # - A prototype from DISTFILES takes precedence over # Pulled in from pkglib/csw_prototype.gspec $(PROTOTYPE): $(WORKDIR) merge - $(_DBG)cswproto -c $(GARDIR)/etc/commondirs-$(GARCH) -r $(PKGROOT) $(PKGROOT)=/ >$@ + $(_DBG)cswproto -c $(GARDIR)/etc/commondirs-$(GARCH) -r $(PKGROOT) $(PKGROOT)=$(if $(ALLOW_RELOCATE),,'/') >$@ # pathfilter lives in bin/pathfilter and takes care of including/excluding paths from # a prototype (see "perldoc bin/pathfilter"). We employ it here to: @@ -422,6 +435,7 @@ else \ cat $(PROTOTYPE) $(call checkpkg_override_filter,$*) $(_CSWCLASS_FILTER) $(_PROTOTYPE_MODIFIERS) $(_PROTOTYPE_FILTER_$*) >$@; \ fi + $(if $(ALLOW_RELOCATE),$(call dontrelocate,opt,$(PROTOTYPE))) $(WORKDIR)/%.prototype-$(GARCH): | $(WORKDIR)/%.prototype $(_DBG)cat $(WORKDIR)/$*.prototype >$@ @@ -447,16 +461,19 @@ # The dependencies to CSWcswclassutils and CSWtexinfo are only added if there are files # actually matching the _TEXINFO_FILTER. This is done at the prototype-level. $(WORKDIR)/%.depend: $(WORKDIR)/$*.prototype +$(WORKDIR)/%.depend: _EXTRA_GAR_PKGS += $(_CATEGORY_RUNTIME_DEP_PKGS) $(WORKDIR)/%.depend: _EXTRA_GAR_PKGS += $(if $(strip $(shell cat $(WORKDIR)/$*.prototype | perl -ane 'print "yes" if( $$F[1] eq "cswalternatives")')),CSWalternatives) $(WORKDIR)/%.depend: _EXTRA_GAR_PKGS += $(if $(strip $(shell cat $(WORKDIR)/$*.prototype | perl -ane '$(foreach C,$(_CSWCLASSES),print "$C\n" if( $$F[1] eq "$C");)')),CSWcswclassutils) +$(WORKDIR)/%.depend: _DEP_PKGS=$(or $(RUNTIME_DEP_PKGS_ONLY_$*),$(RUNTIME_DEP_PKGS_ONLY),$(sort $(_EXTRA_GAR_PKGS)) $(or $(RUNTIME_DEP_PKGS_$*),$(RUNTIME_DEP_PKGS),$(DEP_PKGS_$*),$(DEP_PKGS))) +$(WORKDIR)/%.depend: $(WORKDIR) # The final "true" is for packages without dependencies to make the shell happy as "( )" is not allowed. -$(WORKDIR)/%.depend: $(WORKDIR) - $(_DBG)$(if $(_EXTRA_GAR_PKGS)$(RUNTIME_DEP_PKGS_$*)$(RUNTIME_DEP_PKGS)$(DEP_PKGS)$(DEP_PKGS_$*)$(INCOMPATIBLE_PKGS)$(INCOMPATIBLE_PKGS_$*), \ +$(WORKDIR)/%.depend: + $(_DBG)$(if $(_DEP_PKGS)$(INCOMPATIBLE_PKGS)$(INCOMPATIBLE_PKGS_$*), \ ($(foreach PKG,$(INCOMPATIBLE_PKGS_$*) $(INCOMPATIBLE_PKGS),\ echo "I $(PKG)";\ )\ - $(foreach PKG,$(sort $(_EXTRA_GAR_PKGS)) $(or $(RUNTIME_DEP_PKGS_$*),$(RUNTIME_DEP_PKGS),$(DEP_PKGS_$*),$(DEP_PKGS)),\ + $(foreach PKG,$(_DEP_PKGS),\ $(if $(SPKG_DESC_$(PKG)), \ echo "P $(PKG) $(call catalogname,$(PKG)) - $(SPKG_DESC_$(PKG))";, \ echo "$(shell (/usr/bin/pkginfo $(PKG) || echo "P $(PKG) - ") | $(GAWK) '{ $$1 = "P"; print } ')"; \ @@ -545,17 +562,20 @@ # Make sure every producable package contains specific descriptions. # We explicitly ignore NOPACKAGE here to disallow circumventing the check. +$(if $(filter-out $(firstword $(SPKG_SPECS)),$(SPKG_SPECS)),\ + $(foreach P,$(SPKG_SPECS),\ + $(if $(SPKG_DESC_$(P)),,$(error Multiple packages defined and SPKG_DESC_$(P) is not set.)))) + $(foreach P,$(SPKG_SPECS),\ - $(foreach Q,$(filter-out $P,$(SPKG_SPECS)),\ - $(if $(shell if test "$(SPKG_DESC_$P)" = "$(SPKG_DESC_$Q)"; then echo ERROR; fi),\ - $(error The package descriptions for $P and $Q are identical, please make sure all package descriptions are unique by setting SPKG_DESC_ for each package) \ -))) + $(foreach Q,$(filter-out $(P),$(SPKG_SPECS)),\ + $(if $(filter-out $(subst ,_,$(SPKG_DESC_$(P))),$(subst ,_,$(SPKG_DESC_$(Q)))),,$(error The package descriptions for $(P) [$(if $(SPKG_DESC_$(P)),$(SPKG_DESC_$(P)),)] and $(Q) [$(if $(SPKG_DESC_$(Q)),$(SPKG_DESC_$(Q)),)] are identical. Please make sure that all descriptions are unique by setting SPKG_DESC_ for each package.)))) .PRECIOUS: $(WORKDIR)/%.pkginfo # The texinfo filter has been taken out of the normal filters as TEXINFO has a default. $(WORKDIR)/%.pkginfo: $(WORKDIR)/%.prototype $(WORKDIR)/%.pkginfo: SPKG_CLASSES += $(if $(strip $(shell cat $(WORKDIR)/$*.prototype | perl -ane 'print "yes" if( $$F[1] eq "cswalternatives")')),cswalternatives) +$(WORKDIR)/%.pkginfo: SPKG_CLASSES += $(if $(strip $(shell cat $(WORKDIR)/$*.prototype | perl -ane 'print "yes" if( $$F[1] eq "build")')),build) $(WORKDIR)/%.pkginfo: SPKG_CLASSES += $(shell cat $(WORKDIR)/$*.prototype | perl -e 'while(<>){@F=split;$$c{$$F[1]}++};$(foreach C,$(_CSWCLASSES),print "$C\n" if( $$c{$C});)') $(WORKDIR)/%.pkginfo: $(WORKDIR) @@ -567,7 +587,8 @@ echo "VENDOR=$(call pkgvar,SPKG_VENDOR,$*)"; \ echo "EMAIL=$(call pkgvar,SPKG_EMAIL,$*)"; \ echo "PSTAMP=$(LOGNAME)@$(shell hostname)-$(shell date '+%Y%m%d%H%M%S')"; \ - echo "CLASSES=$(call pkgvar,SPKG_CLASSES,$*)"; \ + $(if $(ALLOW_RELOCATE),echo "CLASSES=$(call pkgvar,SPKG_CLASSES,$*) norelocate"; \ + ,echo "CLASSES=$(call pkgvar,SPKG_CLASSES,$*)";) \ echo "HOTLINE=http://www.opencsw.org/bugtrack/"; \ echo "OPENCSW_CATALOGNAME=$(call catalogname,$*)"; \ echo "OPENCSW_MODE64=$(call mode64,$*)"; \ @@ -575,6 +596,7 @@ echo "OPENCSW_BUNDLE=$(BUNDLE)"; \ $(_CATEGORY_PKGINFO) \ ) >$@ + $(if $(ALLOW_RELOCATE),echo "BASEDIR=$(RELOCATE_PREFIX)" >>$@) # findlicensefile - Find an existing file for a given license name @@ -624,6 +646,9 @@ reset-merge-classutils: reset-merge-migrateconf reset-merge-usergroup reset-merge-inetdconf reset-merge-etcservices +reset-merge-ap2mod: + @rm -f $(COOKIEDIR)/post-merge-ap2mod + merge-migrateconf: $(foreach S,$(SPKG_SPECS),$(if $(or $(MIGRATE_FILES_$S),$(MIGRATE_FILES)),merge-migrateconf-$S)) @$(MAKECOOKIE) @@ -852,7 +877,7 @@ $(if $(PACKAGING_HOST_$P),\ $(if $(filter $(THISHOST),$(PACKAGING_HOST_$P)),\ $(MAKE) GAR_PLATFORM=$P _package && ,\ - $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P _package" && \ + $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P _package" && \ ),\ $(error *** No host has been defined for platform $P)\ )\ @@ -867,7 +892,7 @@ echo " (built on this host)";\ $(MAKE) -s GAR_PLATFORM=$P _pkgshow;echo;,\ echo " (built on host '$(PACKAGING_HOST_$P)')";\ - $(SSH) $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin $(MAKE) -C $(CURDIR) -s GAR_PLATFORM=$P _pkgshow";echo;\ + $(SSH) $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) -s GAR_PLATFORM=$P _pkgshow";echo;\ )\ ) @$(MAKECOOKIE) @@ -878,7 +903,7 @@ $(if $(PACKAGING_HOST_$P),\ $(if $(filter $(THISHOST),$(PACKAGING_HOST_$P)),\ $(MAKE) -s GAR_PLATFORM=$P $* && ,\ - $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P $*" && \ + $(SSH) -t $(PACKAGING_HOST_$P) "PATH=$$PATH:/opt/csw/bin MAKEFLAGS=\"$(MAKEFLAGS)\" $(MAKE) -C $(CURDIR) GAR_PLATFORM=$P $*" && \ ),\ $(error *** No host has been defined for platform $P)\ )\ Modified: csw/mgar/gar/v2-fortran/lib/python/README =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/README 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/lib/python/README 2010-12-02 17:46:17 UTC (rev 11764) @@ -13,3 +13,17 @@ Known problems: - libmagic fails sometimes when processing the whole catalog + + +Dependencies: + +It's possible to develop checkpkg on a non-Solaris platform, using unit +tests as means to run various bits of code. Here's the dependency list +for Ubuntu. + + python-cheetah + python-hachoir-parser + python-magic + python-mox + python-progressbar + python-yaml Copied: csw/mgar/gar/v2-fortran/lib/python/catalog.py (from rev 11763, csw/mgar/gar/v2/lib/python/catalog.py) =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/catalog.py (rev 0) +++ csw/mgar/gar/v2-fortran/lib/python/catalog.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -0,0 +1,147 @@ +#!/usr/bin/env python2.6 + +import os +import re +import logging + + +class Error(Exception): + pass + + +class CatalogLineParseError(Error): + pass + + +class OpencswCatalogBuilder(object): + + def __init__(self, product_dir, catalog_dir): + self.product_dir = product_dir + self.catalog_dir = catalog_dir + + def Run(self): + pkg_dirs = os.listdir(self.product_dir) + for pkg_dir in pkg_dirs: + pkg_path = os.path.join(self.product_dir, pkg_dir) + pkginfo_path = os.path.join(pkg_path, "pkginfo") + if (os.path.isdir(pkg_path) + and + os.path.exists(pkginfo_path)): + if not self.Srv4Exists(pkg_path): + pkg = None + tmpdir = None + try: + tmpdir = tempfile.mkdtemp(prefix="sunw-pkg-") + logging.debug("Copying %s to %s", repr(pkg_path), repr(tmpdir)) + tmp_pkg_dir = os.path.join(tmpdir, pkg_dir) + shutil.copytree(pkg_path, tmp_pkg_dir, symlinks=True) + pkg = DirectoryFormatPackage(tmp_pkg_dir) + # Replacing NAME= in the pkginfo, setting it to the catalog name. + pkg.ResetNameProperty() + pkg.ToSrv4(self.catalog_dir) + except IOError, e: + logging.warn("%s has failed: %s", pkg_path, e) + finally: + if pkg: + del(pkg) + if os.path.exists(tmpdir): + shutil.rmtree(tmpdir) + else: + logging.warn("srv4 file for %s already exists, skipping", pkg_path) + else: + logging.warn("%s is not a directory.", pkg_path) + + + def Srv4Exists(self, pkg_dir): + pkg = DirectoryFormatPackage(pkg_dir) + srv4_name = pkg.GetSrv4FileName() + srv4_name += ".gz" + srv4_path = os.path.join(self.catalog_dir, srv4_name) + result = os.path.exists(srv4_path) + logging.debug("Srv4Exists(%s) => %s, %s", pkg_dir, repr(srv4_path), result) + return result + + +class OpencswCatalog(object): + """Represents a catalog file.""" + + def __init__(self, file_name): + self.file_name = file_name + self.by_basename = None + self.catalog_data = None + + def _ParseCatalogLine(self, line): + cline_re_str_list = [ + ( + r"^" + # tmux + r"(?P\S+)" + r"\s+" + # 1.2,REV=2010.05.17 + r"(?P\S+)" + r"\s+" + # CSWtmux + r"(?P\S+)" + r"\s+" + # tmux-1.2,REV=2010.05.17-SunOS5.9-sparc-CSW.pkg.gz + r"(?P\S+)" + r"\s+" + # 145351cf6186fdcadcd169b66387f72f + r"(?P\S+)" + r"\s+" + # 214091 + r"(?P\S+)" + r"\s+" + # CSWcommon|CSWlibevent + r"(?P\S+)" + r"\s+" + # none + r"(?P\S+)" + # An optional empty field. + r"(" + r"\s+" + # none\n' + r"(?P\S+)" + r")?" + r"$" + ), + ] + cline_re_list = [re.compile(x) for x in cline_re_str_list] + matched = False + d = None + for cline_re in cline_re_list: + m = cline_re.match(line) + if m: + d = m.groupdict() + matched = True + if not d: + raise CatalogLineParseError("Parsed %s data is empty" % repr(line)) + if not matched: + raise CatalogLineParseError("No regexes matched %s" % repr(line)) + return d + + def _GetCatalogData(self, fd): + catalog_data = [] + for line in fd: + try: + parsed = self._ParseCatalogLine(line) + catalog_data.append(parsed) + except CatalogLineParseError, e: + logging.debug("Could not parse %s, %s", repr(line), e) + return catalog_data + + def GetCatalogData(self): + if not self.catalog_data: + fd = open(self.file_name, "r") + self.catalog_data = self._GetCatalogData(fd) + return self.catalog_data + + def GetDataByBasename(self): + if not self.by_basename: + self.by_basename = {} + cd = self.GetCatalogData() + for d in cd: + if "file_basename" not in d: + logging.error("%s is missing the file_basename field", d) + self.by_basename[d["file_basename"]] = d + return self.by_basename Copied: csw/mgar/gar/v2-fortran/lib/python/catalog_test.py (from rev 11763, csw/mgar/gar/v2/lib/python/catalog_test.py) =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/catalog_test.py (rev 0) +++ csw/mgar/gar/v2-fortran/lib/python/catalog_test.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -0,0 +1,29 @@ +#!/usr/bin/env python2.6 + +import unittest +import catalog + +class OpencswCatalogUnitTest(unittest.TestCase): + + def test_ParseCatalogLine_1(self): + line = ( + 'tmux 1.2,REV=2010.05.17 CSWtmux ' + 'tmux-1.2,REV=2010.05.17-SunOS5.9-sparc-CSW.pkg.gz ' + '145351cf6186fdcadcd169b66387f72f 214091 ' + 'CSWcommon|CSWlibevent none none\n') + oc = catalog.OpencswCatalog(None) + parsed = oc._ParseCatalogLine(line) + expected = {'catalogname': 'tmux', + 'deps': 'CSWcommon|CSWlibevent', + 'file_basename': 'tmux-1.2,REV=2010.05.17-SunOS5.9-sparc-CSW.pkg.gz', + 'md5sum': '145351cf6186fdcadcd169b66387f72f', + 'none_thing_1': 'none', + 'none_thing_2': 'none', + 'pkgname': 'CSWtmux', + 'size': '214091', + 'version': '1.2,REV=2010.05.17'} + self.assertEquals(expected, parsed) + + +if __name__ == '__main__': + unittest.main() Modified: csw/mgar/gar/v2-fortran/lib/python/checkpkg.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/checkpkg.py 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/lib/python/checkpkg.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -22,18 +22,19 @@ from sqlobject import sqlbuilder import subprocess import textwrap -import yaml from Cheetah import Template -import opencsw -import overrides +import database + +import package +import inspective_package import package_checks +import package_stats import models as m import configuration as c import tag + DEBUG_BREAK_PKGMAP_AFTER = False -DB_SCHEMA_VERSION = 5L -PACKAGE_STATS_VERSION = 9L SYSTEM_PKGMAP = "/var/sadm/install/contents" NEEDED_SONAMES = "needed sonames" RUNPATH = "runpath" @@ -194,58 +195,7 @@ return m.group("username") if m else None -class DatabaseClient(object): - - CHECKPKG_DIR = ".checkpkg" - SQLITE3_DBNAME_TMPL = "checkpkg-db-%(fqdn)s" - TABLES_THAT_NEED_UPDATES = (m.CswFile,) - TABLES = TABLES_THAT_NEED_UPDATES + ( - m.Pkginst, - m.CswConfig, - m.Srv4FileStats, - m.CheckpkgOverride, - m.CheckpkgErrorTag, - m.Architecture, - m.OsRelease, - m.Maintainer) - sqo_conn = None - db_path = None - - def __init__(self, debug=False): - self.debug = debug - - @classmethod - def GetDatabasePath(cls): - if not cls.db_path: - dbname_dict = {'fqdn': socket.getfqdn()} - db_filename = cls.SQLITE3_DBNAME_TMPL % dbname_dict - home_dir = os.environ["HOME"] - cls.db_path = os.path.join(home_dir, cls.CHECKPKG_DIR, db_filename) - return cls.db_path - - @classmethod - def InitializeSqlobject(cls): - """Establishes a database connection and stores it as a class member. - - The idea is to share the database connection between instances. It would - be solved even better if the connection was passed to the class - constructor. - """ - if not cls.sqo_conn: - db_path = cls.GetDatabasePath() - cls.sqo_conn = sqlobject.connectionForURI('sqlite:%s' % db_path) - sqlobject.sqlhub.processConnection = cls.sqo_conn - - def CreateTables(self): - for table in self.TABLES: - table.createTable(ifNotExists=True) - - def IsDatabaseGoodSchema(self): - good_version = self.GetDatabaseSchemaVersion() >= DB_SCHEMA_VERSION - return good_version - - -class SystemPkgmap(DatabaseClient): +class SystemPkgmap(database.DatabaseClient): """A class to hold and manipulate the /var/sadm/install/contents file.""" STOP_PKGS = ["SUNWbcp", "SUNWowbcp", "SUNWucb"] @@ -457,10 +407,10 @@ try: config_option = m.CswConfig.select( m.CswConfig.q.option_key==CONFIG_DB_SCHEMA).getOne() - config_option.int_value = DB_SCHEMA_VERSION + config_option.int_value = database.DB_SCHEMA_VERSION except sqlobject.main.SQLObjectNotFound, e: version = m.CswConfig(option_key=CONFIG_DB_SCHEMA, - int_value=DB_SCHEMA_VERSION) + int_value=database.DB_SCHEMA_VERSION) def GetPkgmapLineByBasename(self, filename): """Returns pkgmap lines by basename: @@ -578,7 +528,7 @@ # subsequent checkpkg runs won't pick up the last change. # I don't expect pkgadd to run under 1s. fresh = f_mtime <= d_mtime - good_version = self.GetDatabaseSchemaVersion() >= DB_SCHEMA_VERSION + good_version = self.GetDatabaseSchemaVersion() >= database.DB_SCHEMA_VERSION logging.debug("IsDatabaseUpToDate: good_version=%s, fresh=%s", repr(good_version), repr(fresh)) return fresh and good_version @@ -773,7 +723,8 @@ self.packages = [] def GetPackageStatsList(self): - return [PackageStats(None, self.stats_basedir, x) for x in self.md5sum_list] + return [package_stats.PackageStats(None, self.stats_basedir, x) + for x in self.md5sum_list] def FormatReports(self, errors, messages, gar_lines): namespace = { @@ -800,7 +751,7 @@ else: if "package-set" not in errors: errors["package-set"] = [] - errors["package-set"].append(error) + errors["package-set"].append(tag) return errors def GetOptimizedAllStats(self, stats_obj_list): @@ -1079,425 +1030,6 @@ return tuple(isalist) -class PackageStats(DatabaseClient): - """Collects stats about a package and saves it. - - TODO: Maintain a global database connection instead of creating one for each - instantiated object. - TODO: Store overrides in a separate table for performance. - """ - - def __init__(self, srv4_pkg, stats_basedir=None, md5sum=None, debug=False): - super(PackageStats, self).__init__(debug=debug) - self.srv4_pkg = srv4_pkg - self.md5sum = md5sum - self.dir_format_pkg = None - self.all_stats = {} - self.stats_basedir = stats_basedir - self.db_pkg_stats = None - if not self.stats_basedir: - home = os.environ["HOME"] - parts = [home, ".checkpkg", "stats"] - self.stats_basedir = os.path.join(*parts) - self.InitializeSqlobject() - - def GetPkgchkData(self): - ret, stdout, stderr = self.srv4_pkg.GetPkgchkOutput() - data = { - 'return_code': ret, - 'stdout_lines': stdout.splitlines(), - 'stderr_lines': stderr.splitlines(), - } - return data - - def GetMd5sum(self): - if not self.md5sum: - self.md5sum = self.srv4_pkg.GetMd5sum() - return self.md5sum - - def GetDbObject(self): - if not self.db_pkg_stats: - md5_sum = self.GetMd5sum() - res = m.Srv4FileStats.select(m.Srv4FileStats.q.md5_sum==md5_sum) - if not res.count(): - # TODO: Change this bit to throw an exception if the object is not - # found. - return None - else: - self.db_pkg_stats = res.getOne() - return self.db_pkg_stats - - - def StatsExist(self): - """Checks if statistics of a package exist. - - Returns: - bool - """ - pkg_stats = self.GetDbObject() - if not pkg_stats: - return False - if pkg_stats.stats_version != PACKAGE_STATS_VERSION: - pkg_stats.destroySelf() - else: - return True - return False - - def GetDirFormatPkg(self): - if not self.dir_format_pkg: - self.dir_format_pkg = self.srv4_pkg.GetDirFormatPkg() - return self.dir_format_pkg - - def GetMtime(self): - return self.srv4_pkg.GetMtime() - - def _MakeDirP(self, dir_path): - """mkdir -p equivalent. - - http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python - """ - try: - os.makedirs(dir_path) - except OSError, e: - if e.errno == errno.EEXIST: - pass - else: - raise - - def GetBinaryDumpInfo(self): - dir_pkg = self.GetDirFormatPkg() - # Binaries. This could be split off to a separate function. - # man ld.so.1 for more info on this hack - env = copy.copy(os.environ) - env["LD_NOAUXFLTR"] = "1" - binaries_dump_info = [] - for binary in dir_pkg.ListBinaries(): - binary_abs_path = os.path.join(dir_pkg.directory, "root", binary) - binary_base_name = os.path.basename(binary) - args = [DUMP_BIN, "-Lv", binary_abs_path] - dump_proc = subprocess.Popen(args, stdout=subprocess.PIPE, env=env) - stdout, stderr = dump_proc.communicate() - ret = dump_proc.wait() - binary_data = ParseDumpOutput(stdout) - binary_data["path"] = binary - binary_data["base_name"] = binary_base_name - binaries_dump_info.append(binary_data) - return binaries_dump_info - - def GetBasicStats(self): - dir_pkg = self.GetDirFormatPkg() - basic_stats = {} - basic_stats["stats_version"] = PACKAGE_STATS_VERSION - basic_stats["pkg_path"] = self.srv4_pkg.pkg_path - basic_stats["pkg_basename"] = os.path.basename(self.srv4_pkg.pkg_path) - basic_stats["parsed_basename"] = opencsw.ParsePackageFileName( - basic_stats["pkg_basename"]) - basic_stats["pkgname"] = dir_pkg.pkgname - basic_stats["catalogname"] = dir_pkg.GetCatalogname() - basic_stats["md5_sum"] = self.GetMd5sum() - return basic_stats - - def GetOverrides(self): - dir_pkg = self.GetDirFormatPkg() - override_list = dir_pkg.GetOverrides() - def OverrideToDict(override): - return { - "pkgname": override.pkgname, - "tag_name": override.tag_name, - "tag_info": override.tag_info, - } - overrides_simple = [OverrideToDict(x) for x in override_list] - return overrides_simple - - def GetLddMinusRlines(self): - """Returns ldd -r output.""" - dir_pkg = self.GetDirFormatPkg() - binaries = dir_pkg.ListBinaries() - ldd_output = {} - for binary in binaries: - binary_abspath = os.path.join(dir_pkg.directory, "root", binary) - # this could be potentially moved into the DirectoryFormatPackage class. - # ldd needs the binary to be executable - os.chmod(binary_abspath, 0755) - args = ["ldd", "-r", binary_abspath] - ldd_proc = subprocess.Popen( - args, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - stdout, stderr = ldd_proc.communicate() - retcode = ldd_proc.wait() - if retcode: - logging.error("%s returned an error: %s", args, stderr) - ldd_info = [] - for line in stdout.splitlines(): - ldd_info.append(self._ParseLddDashRline(line)) - ldd_output[binary] = ldd_info - return ldd_output - - def GetDefinedSymbols(self): - """Returns text symbols (i.e. defined functions) for packaged ELF objects - - To do this we parse output lines from nm similar to the following. "T"s are - the definitions which we are after. - - 0000104000 D _lib_version - 0000986980 D _libiconv_version - 0000000000 U abort - 0000097616 T aliases_lookup - """ - dir_pkg = self.GetDirFormatPkg() - binaries = dir_pkg.ListBinaries() - defined_symbols = {} - - for binary in binaries: - binary_abspath = os.path.join(dir_pkg.directory, "root", binary) - # Get parsable, ld.so.1 relevant SHT_DYNSYM symbol information - args = ["/usr/ccs/bin/nm", "-p", "-D", binary_abspath] - nm_proc = subprocess.Popen( - args, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - stdout, stderr = nm_proc.communicate() - retcode = nm_proc.wait() - if retcode: - logging.error("%s returned an error: %s", args, stderr) - continue - nm_out = stdout.splitlines() - - defined_symbols[binary] = [] - for line in nm_out: - sym = self._ParseNmSymLine(line) - if not sym: - continue - if sym['type'] not in ("T", "D", "B"): - continue - defined_symbols[binary].append(sym['name']) - - return defined_symbols - - def _ParseNmSymLine(self, line): - re_defined_symbol = re.compile('[0-9]+ [ABDFNSTU] \S+') - m = re_defined_symbol.match(line) - if not m: - return None - fields = line.split() - sym = { 'address': fields[0], 'type': fields[1], 'name': fields[2] } - return sym - - def CollectStats(self, force=False): - """Lazy stats collection.""" - if force or not self.StatsExist(): - return self._CollectStats() - return self.ReadSavedStats() - - def _CollectStats(self): - """The list of variables needs to be synchronized with the one - at the top of this class. - """ - dir_pkg = self.GetDirFormatPkg() - logging.debug("Collecting %s package statistics.", repr(dir_pkg.pkgname)) - override_dicts = self.GetOverrides() - pkg_stats = { - "binaries": dir_pkg.ListBinaries(), - "binaries_dump_info": self.GetBinaryDumpInfo(), - "depends": dir_pkg.GetDependencies(), - "isalist": GetIsalist(), - "overrides": override_dicts, - "pkgchk": self.GetPkgchkData(), - "pkginfo": dir_pkg.GetParsedPkginfo(), - "pkgmap": dir_pkg.GetPkgmap().entries, - "bad_paths": dir_pkg.GetFilesContaining(BAD_CONTENT_REGEXES), - "basic_stats": self.GetBasicStats(), - "files_metadata": dir_pkg.GetFilesMetadata(), - "mtime": self.GetMtime(), - } - pkgname = pkg_stats["basic_stats"]["pkgname"] - # Getting sqlobject representations. - try: - pkginst = m.Pkginst.select(m.Pkginst.q.pkgname==pkgname).getOne() - except sqlobject.main.SQLObjectNotFound, e: - logging.debug(e) - pkginst = m.Pkginst(pkgname=pkgname) - try: - res = m.Architecture.select( - m.Architecture.q.name==pkg_stats["pkginfo"]["ARCH"]) - arch = res.getOne() - except sqlobject.main.SQLObjectNotFound, e: - logging.debug(e) - arch = m.Architecture(name=pkg_stats["pkginfo"]["ARCH"]) - parsed_basename = pkg_stats["basic_stats"]["parsed_basename"] - os_rel_name = parsed_basename["osrel"] - try: - os_rel = m.OsRelease.select( - m.OsRelease.q.short_name==os_rel_name).getOne() - except sqlobject.main.SQLObjectNotFound, e: - logging.debug(e) - os_rel = m.OsRelease(short_name=os_rel_name, full_name=os_rel_name) - try: - maint_email = pkg_stats["pkginfo"]["EMAIL"] - maintainer = m.Maintainer.select( - m.Maintainer.q.email==maint_email).getOne() - except sqlobject.main.SQLObjectNotFound, e: - logging.debug(e) - maintainer = m.Maintainer(email=maint_email) - - # If there are any previous records of the same pkginst, arch and os_rel, - # we're marking them as not-latest. - # This assumes that the packages are examined in a chronological order. - res = m.Srv4FileStats.select(sqlobject.AND( - m.Srv4FileStats.q.pkginst==pkginst, - m.Srv4FileStats.q.arch==arch, - m.Srv4FileStats.q.os_rel==os_rel)) - for obj in res: - obj.latest = False - - rev=None - if "revision_info" in parsed_basename: - if "REV" in parsed_basename["revision_info"]: - rev = parsed_basename["revision_info"]["REV"] - # Creating the object in the database. - db_pkg_stats = m.Srv4FileStats( - md5_sum=self.GetMd5sum(), - pkginst=pkginst, - catalogname=pkg_stats["basic_stats"]["catalogname"], - stats_version=PACKAGE_STATS_VERSION, - os_rel=os_rel, - arch=arch, - basename=pkg_stats["basic_stats"]["pkg_basename"], - maintainer=maintainer, - latest=True, - version_string=parsed_basename["full_version_string"], - rev=rev, - mtime=self.GetMtime(), - data=cPickle.dumps(pkg_stats)) - # Inserting overrides as rows into the database - for override_dict in override_dicts: - o = m.CheckpkgOverride(srv4_file=db_pkg_stats, - **override_dict) - - # The ldd -r reporting breaks on bigger packages during yaml saving. - # It might work when yaml is disabled - # self.DumpObject(self.GetLddMinusRlines(), "ldd_dash_r") - # This check is currently disabled, let's save time by not collecting - # these data. - # self.DumpObject(self.GetDefinedSymbols(), "defined_symbols") - # This one should be last, so that if the collection is interrupted - # in one of the previous runs, the basic_stats.pickle file is not there - # or not updated, and the collection is started again. - - logging.debug("Statistics of %s have been collected.", repr(dir_pkg.pkgname)) - return pkg_stats - - def GetAllStats(self): - if not self.all_stats and self.StatsExist(): - self.all_stats = self.ReadSavedStats() - elif not self.all_stats: - self.all_stats = self.CollectStats() - return self.all_stats - - def GetSavedOverrides(self): - if not self.StatsExist(): - raise PackageError("Package stats not ready.") - pkg_stats = self.GetDbObject() - res = m.CheckpkgOverride.select(m.CheckpkgOverride.q.srv4_file==pkg_stats) - override_list = [] - for db_override in res: - d = { - 'pkgname': db_override.pkgname, - 'tag_name': db_override.tag_name, - 'tag_info': db_override.tag_info, - } - override_list.append(overrides.Override(**d)) - return override_list - - def GetSavedErrorTags(self): - pkg_stats = self.GetDbObject() - res = m.CheckpkgErrorTag.select(m.CheckpkgErrorTag.q.srv4_file==pkg_stats) - tag_list = [tag.CheckpkgTag(x.pkgname, x.tag_name, x.tag_info, x.msg) - for x in res] - return tag_list - - def ReadSavedStats(self): - if not self.all_stats: - md5_sum = self.GetMd5sum() - res = m.Srv4FileStats.select(m.Srv4FileStats.q.md5_sum==md5_sum) - self.all_stats = cPickle.loads(str(res.getOne().data)) - return self.all_stats - - def _ParseLddDashRline(self, line): - found_re = r"^\t(?P\S+)\s+=>\s+(?P\S+)" - symbol_not_found_re = (r"^\tsymbol not found:\s(?P\S+)\s+" - r"\((?P\S+)\)") - only_so = r"^\t(?P\S+)$" - version_so = (r'^\t(?P\S+) ' - r'\((?P\S+)\) =>\t \(version not found\)') - stv_protected = (r'^\trelocation \S+ symbol: (?P\S+): ' - r'file (?P\S+): ' - r'relocation bound to a symbol ' - r'with STV_PROTECTED visibility$') - sizes_differ = (r'^\trelocation \S+ sizes differ: ' - r'(?P\S+)$') - sizes_info = (r'^\t\t\(file (?P\S+) size=(?P0x\w+); ' - r'file (?P\S+) size=(?P0x\w+)\)$') - sizes_one_used = (r'^\t\t(?P\S+) size used; ' - r'possible insufficient data copied$') - common_re = (r"(%s|%s|%s|%s|%s|%s|%s|%s)" - % (found_re, symbol_not_found_re, only_so, version_so, - stv_protected, sizes_differ, sizes_info, sizes_one_used)) - m = re.match(common_re, line) - response = {} - if m: - d = m.groupdict() - if "soname" in d and d["soname"]: - # it was found - response["state"] = "OK" - response["soname"] = d["soname"] - response["path"] = d["path_found"] - response["symbol"] = None - elif "symbol" in d and d["symbol"]: - response["state"] = "symbol-not-found" - response["soname"] = None - response["path"] = d["path_not_found"] - response["symbol"] = d["symbol"] - elif d["path_only"]: - response["state"] = "OK" - response["soname"] = None - response["path"] = d["path_only"] - response["symbol"] = None - elif d["soname_version_not_found"]: - response["state"] = "version-not-found" - response["soname"] = d["soname_version_not_found"] - response["path"] = None - response["symbol"] = None - elif d["relocation_symbol"]: - response["state"] = 'relocation-bound-to-a-symbol-with-STV_PROTECTED-visibility' - response["soname"] = None - response["path"] = d["relocation_path"] - response["symbol"] = d["relocation_symbol"] - elif d["sizes_differ_symbol"]: - response["state"] = 'sizes-differ' - response["soname"] = None - response["path"] = None - response["symbol"] = d["sizes_differ_symbol"] - elif d["sizediff_file1"]: - response["state"] = 'sizes-diff-info' - response["soname"] = None - response["path"] = "%s %s" % (d["sizediff_file1"], d["sizediff_file2"]) - response["symbol"] = None - elif d["sizediffused_file"]: - response["state"] = 'sizes-diff-one-used' - response["soname"] = None - response["path"] = "%s" % (d["sizediffused_file"]) - response["symbol"] = None - else: - raise StdoutSyntaxError("Could not parse %s with %s" - % (repr(line), common_re)) - else: - raise StdoutSyntaxError("Could not parse %s with %s" - % (repr(line), common_re)) - return response - - def ErrorTagsFromFile(file_name): fd = open(file_name) error_tags = [] @@ -1509,20 +1041,6 @@ return error_tags -def StatsListFromCatalog(file_name_list, catalog_file_name=None, debug=False): - packages = [opencsw.CswSrv4File(x, debug) for x in file_name_list] - if catalog_file_name: - catalog = opencsw.OpencswCatalog(catalog_file_name) - md5s_by_basename = catalog.GetDataByBasename() - for pkg in packages: - basename = os.path.basename(pkg.pkg_path) - # It might be the case that a file is present on disk, but missing from - # the catalog file. - if basename in md5s_by_basename: - pkg.md5sum = md5s_by_basename[basename]["md5sum"] - stats_list = [PackageStats(pkg) for pkg in packages] - return stats_list - def SliceList(l, size): """Trasforms a list into a list of lists.""" idxes = xrange(0, len(l), size) @@ -1542,17 +1060,17 @@ md5s.append(arg) else: filenames.append(arg) - srv4_pkgs = [opencsw.CswSrv4File(x) for x in filenames] + srv4_pkgs = [inspective_package.InspectiveCswSrv4File(x) for x in filenames] pkgstat_objs = [] bar = progressbar.ProgressBar() bar.maxval = len(md5s) + len(srv4_pkgs) bar.start() counter = itertools.count() for pkg in srv4_pkgs: - pkgstat_objs.append(PackageStats(pkg, debug=debug)) + pkgstat_objs.append(package_stats.PackageStats(pkg, debug=debug)) bar.update(counter.next()) for md5 in md5s: - pkgstat_objs.append(PackageStats(None, md5sum=md5, debug=debug)) + pkgstat_objs.append(package_stats.PackageStats(None, md5sum=md5, debug=debug)) bar.update(counter.next()) bar.finish() return pkgstat_objs Modified: csw/mgar/gar/v2-fortran/lib/python/checkpkg_test.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/checkpkg_test.py 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/lib/python/checkpkg_test.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -23,18 +23,6 @@ SELECT * FROM systempkgmap WHERE basename = 'libncursesw.so.5'; """ -LDD_R_OUTPUT_1 = """\tlibc.so.1 => /lib/libc.so.1 -\tsymbol not found: check_encoding_conversion_args (/opt/csw/lib/postgresql/8.4/utf8_and_gbk.so) -\tsymbol not found: LocalToUtf (/opt/csw/lib/postgresql/8.4/utf8_and_gbk.so) -\tsymbol not found: UtfToLocal (/opt/csw/lib/postgresql/8.4/utf8_and_gbk.so) -\tlibm.so.2 => /lib/libm.so.2 -\t/usr/lib/secure/s8_preload.so.1 -\tlibXext.so.0 (SUNW_1.1) =>\t (version not found) -\trelocation R_SPARC_COPY symbol: ASN1_OCTET_STRING_it: file /opt/csw/lib/sparcv8plus+vis/libcrypto.so.0.9.8: relocation bound to a symbol with STV_PROTECTED visibility -\trelocation R_SPARC_COPY sizes differ: _ZTI7QWidget -\t\t(file /tmp/pkg_GqCk0P/CSWkdeartworkgcc/root/opt/csw/kde-gcc/bin/kslideshow.kss size=0x28; file /opt/csw/kde-gcc/lib/libqt-mt.so.3 size=0x20) -""" - class GetLinesBySonameUnitTest(unittest.TestCase): def setUp(self): @@ -279,116 +267,6 @@ self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) -class PackageStatsUnitTest(unittest.TestCase): - - def setUp(self): - self.pkgstats = checkpkg.PackageStats(None) - - def test_ParseNmSymLineGoodLine(self): - line = '0000097616 T aliases_lookup' - expected = { - 'address': '0000097616', - 'type': 'T', - 'name': 'aliases_lookup', - } - self.assertEqual(expected, self.pkgstats._ParseNmSymLine(line)) - - def test_ParseNmSymLineBadLine(self): - line = 'foo' - self.assertEqual(None, self.pkgstats._ParseNmSymLine(line)) - - def test_ParseLddDashRlineFound(self): - line = '\tlibc.so.1 => /lib/libc.so.1' - expected = { - 'state': 'OK', - 'soname': 'libc.so.1', - 'path': '/lib/libc.so.1', - 'symbol': None, - } - self.assertEqual(expected, self.pkgstats._ParseLddDashRline(line)) - - def test_ParseLddDashRlineSymbolMissing(self): - line = ('\tsymbol not found: check_encoding_conversion_args ' - '(/opt/csw/lib/postgresql/8.4/utf8_and_gbk.so)') - expected = { - 'state': 'symbol-not-found', - 'soname': None, - 'path': '/opt/csw/lib/postgresql/8.4/utf8_and_gbk.so', - 'symbol': 'check_encoding_conversion_args', - } - self.assertEqual(expected, self.pkgstats._ParseLddDashRline(line)) - - def test_ParseLddDashRlineFound(self): - line = '\t/usr/lib/secure/s8_preload.so.1' - expected = { - 'state': 'OK', - 'soname': None, - 'path': '/usr/lib/secure/s8_preload.so.1', - 'symbol': None, - } - self.assertEqual(expected, self.pkgstats._ParseLddDashRline(line)) - - def test_ParseLdd_VersionNotFound(self): - line = '\tlibXext.so.0 (SUNW_1.1) =>\t (version not found)' - expected = { - 'symbol': None, - 'soname': 'libXext.so.0', - 'path': None, - 'state': 'version-not-found', - } - self.assertEqual(expected, self.pkgstats._ParseLddDashRline(line)) - - def test_ParseLdd_StvProtectedVisibility(self): - line = ('\trelocation R_SPARC_COPY symbol: ASN1_OCTET_STRING_it: ' - 'file /opt/csw/lib/sparcv8plus+vis/libcrypto.so.0.9.8: ' - 'relocation bound to a symbol with STV_PROTECTED visibility') - expected = { - 'symbol': 'ASN1_OCTET_STRING_it', - 'soname': None, - 'path': '/opt/csw/lib/sparcv8plus+vis/libcrypto.so.0.9.8', - 'state': 'relocation-bound-to-a-symbol-with-STV_PROTECTED-visibility', - } - self.assertEqual(expected, self.pkgstats._ParseLddDashRline(line)) - - def test_ParseLdd_SizesDiffer(self): - line = '\trelocation R_SPARC_COPY sizes differ: _ZTI7QWidget' - expected = { - 'symbol': '_ZTI7QWidget', - 'soname': None, - 'path': None, - 'state': 'sizes-differ', - } - self.assertEqual(expected, self.pkgstats._ParseLddDashRline(line)) - - def test_ParseLdd_SizesDifferInfo(self): - line = ('\t\t(file /tmp/pkg_GqCk0P/CSWkdeartworkgcc/root/opt/csw/kde-gcc/bin/' - 'kslideshow.kss size=0x28; ' - 'file /opt/csw/kde-gcc/lib/libqt-mt.so.3 size=0x20)') - expected = { - 'symbol': None, - 'path': ('/tmp/pkg_GqCk0P/CSWkdeartworkgcc/root/opt/csw/kde-gcc/' - 'bin/kslideshow.kss /opt/csw/kde-gcc/lib/libqt-mt.so.3'), - 'state': 'sizes-diff-info', - 'soname': None, - } - self.assertEqual(expected, self.pkgstats._ParseLddDashRline(line)) - - def test_ParseLdd_SizesDifferOneUsed(self): - line = ('\t\t/opt/csw/kde-gcc/lib/libqt-mt.so.3 size used; ' - 'possible insufficient data copied') - expected = { - 'symbol': None, - 'path': '/opt/csw/kde-gcc/lib/libqt-mt.so.3', - 'state': 'sizes-diff-one-used', - 'soname': None, - } - self.assertEqual(expected, self.pkgstats._ParseLddDashRline(line)) - - def test_ParseLddDashRlineManyLines(self): - for line in LDD_R_OUTPUT_1.splitlines(): - parsed = self.pkgstats._ParseLddDashRline(line) - - class ExtractorsUnitTest(unittest.TestCase): def testExtractDescriptionFromGoodData(self): Copied: csw/mgar/gar/v2-fortran/lib/python/compare_pkgs.py (from rev 11763, csw/mgar/gar/v2/lib/python/compare_pkgs.py) =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/compare_pkgs.py (rev 0) +++ csw/mgar/gar/v2-fortran/lib/python/compare_pkgs.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -0,0 +1,69 @@ +#!/opt/csw/bin/python2.6 +# coding=utf-8 +# vim:set sw=2 ts=2 sts=2 expandtab: +# +# Copyright (c) 2009 Maciej Blizi?ski +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License version 2 as published by the +# Free Software Foundation. + +"""Compares the contents of two svr4 packages. + +The needed opencsw.py library is now at: +https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2/lib/python/ + +$Id: compare_pkgs.py 124 2010-02-18 07:28:10Z wahwah $ +""" + +import logging +import optparse +import opencsw + +USAGE = """Compares two packages with the same catalogname. + +To use, place packages (say, foo-1.0,REV=1898.09.25-SunOS5.9-sparc-CSW.pkg.gz +and foo-1.0.1,REV=2010.09.25-SunOS5.9-sparc-CSW.pkg.gz) in two directories +(say, /a and /b), and issue: + + comparepkg --package-dir-a /a --package-dir-b /b --catalog-name foo +""" + +def main(): + parser = optparse.OptionParser(USAGE) + parser.add_option("-d", "--debug", dest="debug", + default=False, action="store_true") + parser.add_option("-a", "--package-dir-a", dest="package_dir_a", + help="Package directory A") + parser.add_option("-b", "--package-dir-b", dest="package_dir_b", + help="Package directory B") + parser.add_option("-c", "--catalog-name", dest="catalog_name", + help="Catalog name, for example 'cups'") + parser.add_option("-p", "--permissions", dest="permissions", + help="Whether to analyze permission bits", + default=False, action="store_true") + parser.add_option("", "--strip-a", dest="strip_a", + help="Strip from paths in a") + parser.add_option("", "--strip-b", dest="strip_b", + help="Strip from paths in b") + (options, args) = parser.parse_args() + if options.debug: + current_logging_level = logging.DEBUG + else: + current_logging_level = logging.INFO + logging.basicConfig(level=current_logging_level) + pkg_dir_a = opencsw.StagingDir(options.package_dir_a) + pkg_dir_b = opencsw.StagingDir(options.package_dir_b) + pkg_path_a = pkg_dir_a.GetLatest(options.catalog_name)[-1] + pkg_path_b = pkg_dir_b.GetLatest(options.catalog_name)[-1] + pc = opencsw.PackageComparator( + pkg_path_a, + pkg_path_b, + permissions=options.permissions, + strip_a=options.strip_a, + strip_b=options.strip_b) + pc.Run() + + +if __name__ == '__main__': + main() Copied: csw/mgar/gar/v2-fortran/lib/python/compare_pkgs_test.py (from rev 11763, csw/mgar/gar/v2/lib/python/compare_pkgs_test.py) =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/compare_pkgs_test.py (rev 0) +++ csw/mgar/gar/v2-fortran/lib/python/compare_pkgs_test.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -0,0 +1,66 @@ +#!/opt/csw/bin/python2.6 +# coding=utf-8 +# vim:set sw=2 ts=2 sts=2 expandtab: + +""" +The needed opencsw.py library is now at: +https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2/lib/python/ + +$Id: compare_pkgs_test.py 124 2010-02-18 07:28:10Z wahwah $ +""" + +import unittest +import compare_pkgs as cpkg +import opencsw + +PKGMAP_1 = """: 1 4407 +1 f none /etc/init.d/cswvncserver 0744 root sys 1152 21257 1048192898 +1 s none /etc/rc0.d/K36cswvncserver=../init.d/cswvncserver +1 s none /etc/rc1.d/K36cswvncserver=../init.d/cswvncserver +1 s none /etc/rc2.d/K36cswvncserver=../init.d/cswvncserver +1 s none /etc/rc3.d/S92cswvncserver=../init.d/cswvncserver +1 s none /etc/rcS.d/K36cswvncserver=../init.d/cswvncserver +1 d none /opt/csw/bin 0755 root bin +1 f none /opt/csw/bin/Xvnc 0755 root bin 1723040 56599 1048192381 +1 f none /opt/csw/bin/vncconnect 0755 root bin 5692 56567 1048192381 +1 f none /opt/csw/bin/vncpasswd 0755 root bin 15828 10990 1048192381 +1 d none /opt/csw/etc 0755 root bin +1 d none /opt/csw/share 0755 root bin +1 d none /opt/csw/share/man 0755 root bin +1 d none /opt/csw/share/man/man1 0755 root bin +1 f none /opt/csw/share/man/man1/Xvnc.1 0644 root bin 6000 15243 1028731374 +1 f none /opt/csw/share/man/man1/vncconnect.1 0644 root bin 1082 26168 1028731541 +1 f none /opt/csw/share/man/man1/vncpasswd.1 0644 root bin 2812 53713 1042812886 +1 f none /opt/csw/share/man/man1/vncserver.1 0644 root bin 3070 7365 1028731541 +1 d none /opt/csw/share/vnc 0755 root bin +1 d none /opt/csw/share/vnc/classes 0755 root bin +1 f none /opt/csw/share/vnc/classes/AuthPanel.class 0644 root bin 2458 21987 1048192130 +1 f none /opt/csw/share/vnc/classes/ButtonPanel.class 0644 root bin 3044 1240 1048192130 +1 f none /opt/csw/share/vnc/classes/ClipboardFrame.class 0644 root bin 2595 24223 1048192130 +1 f none /opt/csw/share/vnc/classes/DesCipher.class 0644 root bin 12745 33616 1048192130 +1 f none /opt/csw/share/vnc/classes/OptionsFrame.class 0644 root bin 6908 39588 1048192130 +1 f none /opt/csw/share/vnc/classes/RecordingFrame.class 0644 root bin 6101 7175 1048192130 +1 f none /opt/csw/share/vnc/classes/ReloginPanel.class 0644 root bin 1405 22871 1048192130 +1 f none /opt/csw/share/vnc/classes/RfbProto.class 0644 root bin 14186 29040 1048192130 +1 f none /opt/csw/share/vnc/classes/SessionRecorder.class 0644 root bin 2654 62139 1048192130 +1 f none /opt/csw/share/vnc/classes/SocketFactory.class 0644 root bin 342 23575 1048192130 +1 f none /opt/csw/share/vnc/classes/VncCanvas.class 0644 root bin 20927 18690 1048192130 +1 f none /opt/csw/share/vnc/classes/VncViewer.class 0644 root bin 13795 52263 1048192130 +1 f none /opt/csw/share/vnc/classes/VncViewer.jar 0644 root bin 47606 63577 1048192130 +1 f none /opt/csw/share/vnc/classes/index.vnc 0644 root bin 846 592 1048192130 +1 f none /opt/csw/share/vnc/vncserver.bin 0755 root bin 15190 2021 1048192092 +1 f none /opt/csw/share/vnc/vncservers.etc 0644 root sys 698 58245 1048192098 +1 i copyright 18000 30145 1048191525 +1 i depend 454 38987 1051394941 +1 i pkginfo 363 30834 1219230102 +1 i postinstall 827 2423 1048191525 +""" + +class PkgmapTest(unittest.TestCase): + + def testPkgmap1(self): + lines = PKGMAP_1.splitlines() + p1 = opencsw.Pkgmap(lines) + +if __name__ == '__main__': + unittest.main() Copied: csw/mgar/gar/v2-fortran/lib/python/database.py (from rev 11763, csw/mgar/gar/v2/lib/python/database.py) =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/database.py (rev 0) +++ csw/mgar/gar/v2-fortran/lib/python/database.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -0,0 +1,57 @@ +import socket +import os +import sqlobject +import models as m + +DB_SCHEMA_VERSION = 5L + + +class DatabaseClient(object): + + CHECKPKG_DIR = ".checkpkg" + SQLITE3_DBNAME_TMPL = "checkpkg-db-%(fqdn)s" + TABLES_THAT_NEED_UPDATES = (m.CswFile,) + TABLES = TABLES_THAT_NEED_UPDATES + ( + m.Pkginst, + m.CswConfig, + m.Srv4FileStats, + m.CheckpkgOverride, + m.CheckpkgErrorTag, + m.Architecture, + m.OsRelease, + m.Maintainer) + sqo_conn = None + db_path = None + + def __init__(self, debug=False): + self.debug = debug + + @classmethod + def GetDatabasePath(cls): + if not cls.db_path: + dbname_dict = {'fqdn': socket.getfqdn()} + db_filename = cls.SQLITE3_DBNAME_TMPL % dbname_dict + home_dir = os.environ["HOME"] + cls.db_path = os.path.join(home_dir, cls.CHECKPKG_DIR, db_filename) + return cls.db_path + + @classmethod + def InitializeSqlobject(cls): + """Establishes a database connection and stores it as a class member. + + The idea is to share the database connection between instances. It would + be solved even better if the connection was passed to the class + constructor. + """ + if not cls.sqo_conn: + db_path = cls.GetDatabasePath() + cls.sqo_conn = sqlobject.connectionForURI('sqlite:%s' % db_path) + sqlobject.sqlhub.processConnection = cls.sqo_conn + + def CreateTables(self): + for table in self.TABLES: + table.createTable(ifNotExists=True) + + def IsDatabaseGoodSchema(self): + good_version = self.GetDatabaseSchemaVersion() >= DB_SCHEMA_VERSION + return good_version Modified: csw/mgar/gar/v2-fortran/lib/python/dependency_checks.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/dependency_checks.py 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/lib/python/dependency_checks.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -14,6 +14,9 @@ "Please use /opt/csw/mysql5/..."), ("/opt/csw/lib/mysql", "libmysqlclient.so.15", "Please use /opt/csw/mysql5/..."), + ("/opt/csw/lib", "libnet.so", + "Please use -L/opt/csw/lib/libnet-new for linking. " + "See more at http://wiki.opencsw.org/project-libnet"), ) DLOPEN_LIB_LOCATIONS = ( @@ -26,6 +29,7 @@ (r".*\.py$", (u"CSWpython",)), (r".*\.rb$", (u"CSWruby",)), (r".*\.elc?$", (u"CSWemacscommon",)), + (r"/opt/csw/apache2/", (u"CSWapache2",)), ) PREFERRED_DIRECTORY_PROVIDERS = set([u"CSWcommon"]) Modified: csw/mgar/gar/v2-fortran/lib/python/dependency_checks_test.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/dependency_checks_test.py 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/lib/python/dependency_checks_test.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -5,7 +5,7 @@ import mox import unittest import pprint -import dependency_checks as depchecks +import dependency_checks from testdata import stubs from testdata.tree_stats import pkgstats as tree_stats from testdata.sudo_stats import pkgstats as sudo_stats @@ -26,7 +26,7 @@ logger_stub = stubs.LoggerStub() self.assertEqual( expected, - depchecks.GetPkgByFullPath(self.error_mgr_mock, + dependency_checks.GetPkgByFullPath(self.error_mgr_mock, logger_stub, path_list, pkg_by_path)) @@ -54,7 +54,7 @@ '/opt/csw/lib/libfoo.so.1': ['CSWbar']} self.assertEqual( expected, - depchecks.GetPkgByFullPath(self.error_mgr_mock, + dependency_checks.GetPkgByFullPath(self.error_mgr_mock, logger_stub, paths_to_verify, pkg_by_path)) @@ -156,7 +156,7 @@ u'CSWlibxft2', u'CSWpango', u'CSWgtk2', u'CSWpkgutil'], '/opt/csw/share/man/man1': ['CSWtree'], '/opt/csw/share/man/man1/tree.1': ['CSWtree']} - result = depchecks.ByDirectory(self.pkg_data, + result = dependency_checks.ByDirectory(self.pkg_data, self.error_mgr_mock, self.logger_stub, self.messenger_stub, @@ -182,7 +182,7 @@ '/opt/csw/share/man': [u'CSWcommon', u'CSWgnuplot'], '/opt/csw/share/man/man1': ['CSWtree'], '/opt/csw/share/man/man1/tree.1': ['CSWtree']} - result = depchecks.ByDirectory(self.pkg_data, + result = dependency_checks.ByDirectory(self.pkg_data, self.error_mgr_mock, self.logger_stub, self.messenger_stub, @@ -220,7 +220,7 @@ '/opt/csw/share/man': [u'CSWcommon', u'CSWgnuplot'], '/opt/csw/share/man/man1': ['CSWtree'], '/opt/csw/share/man/man1/tree.1': ['CSWtree']} - result = depchecks.Libraries(self.pkg_data, + result = dependency_checks.Libraries(self.pkg_data, self.error_mgr_mock, self.logger_stub, self.messenger_stub, @@ -290,9 +290,9 @@ [(u'SUNWlibC', u'provides /usr/lib/libCstd.so.1 needed by opt/csw/lib/svn/libsvnjavahl-1.so.0.0.0')], [(u'SUNWlibC', u'provides /usr/lib/libCrun.so.1 needed by opt/csw/lib/svn/libsvnjavahl-1.so.0.0.0')]] - # pkg_by_path is not important for depchecks.Libraries. + # pkg_by_path is not important for dependency_checks.Libraries. pkg_by_path = {} - result = depchecks.Libraries(self.pkg_data, + result = dependency_checks.Libraries(self.pkg_data, self.error_mgr_mock, self.logger_stub, self.messenger_stub, @@ -310,7 +310,7 @@ ] declared_deps = set([u"CSWfoo2"]) expected = [[u"CSWbar"]] - result = depchecks.MissingDepsFromReasonGroups( + result = dependency_checks.MissingDepsFromReasonGroups( reason_groups, declared_deps) self.assertEqual(result, expected) @@ -328,7 +328,29 @@ def testOne(self): pass + def testByFilename(self): + self.pkg_data = tree_stats[0] + self.pkg_data["pkgmap"] = [ + {'class': 'none', + 'line': 'not important', + 'mode': '0755', + 'path': '/opt/csw/apache2/bin/foo', + 'type': 'f', + 'group': 'bin', + 'user': 'root'}] + self.mocker.ReplayAll() + result = dependency_checks.ByFilename( + self.pkg_data, + self.error_mgr_mock, + self.logger_stub, + self.messenger_stub, + None, None) + self.mocker.VerifyAll() + expected = [[ + (u'CSWapache2', + "found file(s) matching /opt/csw/apache2/, " + "e.g. '/opt/csw/apache2/bin/foo'")]] + self.assertEqual(expected, result) - if __name__ == '__main__': unittest.main() Copied: csw/mgar/gar/v2-fortran/lib/python/inspective_package.py (from rev 11763, csw/mgar/gar/v2/lib/python/inspective_package.py) =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/inspective_package.py (rev 0) +++ csw/mgar/gar/v2-fortran/lib/python/inspective_package.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -0,0 +1,146 @@ +import package +import os +import re +import logging +import hachoir_parser as hp +import sharedlib_utils +import magic + +"""This file isolates code dependent on hachoir parser. + +hachoir parser takes quite a while to import. +""" + +# Suppress unhelpful warnings +# http://bitbucket.org/haypo/hachoir/issue/23 +import hachoir_core.config +hachoir_core.config.quiet = True + +class InspectivePackage(package.DirectoryFormatPackage): + """Extends DirectoryFormatPackage to allow package inspection.""" + + def GetFilesMetadata(self): + """Returns a data structure with all the files plus their metadata. + + [ + { + "path": ..., + "mime_type": ..., + }, + ] + """ + if not self.files_metadata: + self.CheckPkgpathExists() + self.files_metadata = [] + files_root = os.path.join(self.directory, "root") + if not os.path.exists(files_root): + return self.files_metadata + all_files = self.GetAllFilePaths() + def StripRe(x, strip_re): + return re.sub(strip_re, "", x) + root_re = re.compile(r"^root/") + file_magic = FileMagic() + for file_path in all_files: + full_path = unicode(self.MakeAbsolutePath(file_path)) + file_info = { + "path": StripRe(file_path, root_re), + "mime_type": file_magic.GetFileMimeType(full_path) + } + if not file_info["mime_type"]: + logging.error("Could not establish the mime type of %s", + full_path) + # We really don't want that, as it misses binaries. + raise package.PackageError("Could not establish the mime type of %s" + % full_path) + if sharedlib_utils.IsBinary(file_info): + parser = hp.createParser(full_path) + if not parser: + logging.warning("Can't parse file %s", file_path) + else: + file_info["mime_type_by_hachoir"] = parser.mime_type + machine_id = parser["/header/machine"].value + file_info["machine_id"] = machine_id + file_info["endian"] = parser["/header/endian"].display + self.files_metadata.append(file_info) + return self.files_metadata + + def ListBinaries(self): + """Lists all the binaries from a given package. + + Original checkpkg code: + + ######################################### + # find all executables and dynamic libs,and list their filenames. + listbinaries() { + if [ ! -d $1 ] ; then + print errmsg $1 not a directory + rm -rf $EXTRACTDIR + exit 1 + fi + find $1 -print | xargs file |grep ELF |nawk -F: '{print $1}' + } + + Returns a list of absolute paths. + + Now that there are files_metadata, this function can safely go away, once + all its callers are modified to use files_metadata instead. + """ + if self.binaries is None: + self.CheckPkgpathExists() + files_metadata = self.GetFilesMetadata() + self.binaries = [] + # The nested for-loop looks inefficient. + for file_info in files_metadata: + if sharedlib_utils.IsBinary(file_info): + self.binaries.append(file_info["path"]) + self.binaries.sort() + return self.binaries + + +class FileMagic(object): + """Libmagic sometimes returns None, which I think is a bug. + Trying to come up with a way to work around that. It might not even be + very helpful, but at least detects the issue and tries to work around it. + """ + + def __init__(self): + self.cookie_count = 0 + self.magic_cookie = None + + def _GetCookie(self): + magic_cookie = magic.open(self.cookie_count) + self.cookie_count += 1 + magic_cookie.load() + magic_cookie.setflags(magic.MAGIC_MIME) + return magic_cookie + + def _LazyInit(self): + if not self.magic_cookie: + self.magic_cookie = self._GetCookie() + + def GetFileMimeType(self, full_path): + """Trying to run magic.file() a few times, not accepting None.""" + self._LazyInit() + mime = None + for i in xrange(10): + mime = self.magic_cookie.file(full_path) + if mime: + break; + else: + # Returned mime is null. Re-initializing the cookie and trying again. + logging.error("magic_cookie.file(%s) returned None. Retrying.", + full_path) + self.magic_cookie = self._GetCookie() + return mime + + +class InspectiveCswSrv4File(package.CswSrv4File): + """Allows to get the inspective version of the dir format pkg.""" + + # The presence of this method makes it explicit that we want an inspective + # version of the directory format package. + def GetInspectivePkg(self): + return self.GetDirFormatPkg() + + def GetDirFormatClass(self): + return InspectivePackage Modified: csw/mgar/gar/v2-fortran/lib/python/opencsw.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/opencsw.py 2010-12-02 14:09:06 UTC (rev 11763) +++ csw/mgar/gar/v2-fortran/lib/python/opencsw.py 2010-12-02 17:46:17 UTC (rev 11764) @@ -14,28 +14,15 @@ import copy import datetime -import difflib -import hachoir_parser as hp -import hashlib -import magic import logging import os import os.path import re import shutil -import subprocess -import tempfile -import time import urllib2 -import overrides -import configuration as c from Cheetah import Template +import sharedlib_utils as su -# Suppress unhelpful warnings -# http://bitbucket.org/haypo/hachoir/issue/23 -import hachoir_core.config -hachoir_core.config.quiet = True - ARCH_SPARC = "sparc" ARCH_i386 = "i386" ARCH_ALL = "all" @@ -51,28 +38,7 @@ REVISION_ADDED = "revision number added" PKG_URL_TMPL = "http://www.opencsw.org/packages/%s" CATALOG_URL = "http://mirror.opencsw.org/opencsw/current/i386/5.10/catalog" -BIN_MIMETYPES = ( - 'application/x-executable', - 'application/x-sharedlib', -) -ADMIN_FILE_CONTENT = """ -basedir=default -runlevel=nocheck -conflict=nocheck -setuid=nocheck -action=nocheck -partial=nocheck -instance=unique -idepend=quit -rdepend=quit -space=quit -authentication=nocheck -networktimeout=10 -networkretries=5 -keystore=/var/sadm/security -proxy= -""" - +KNOWN_PKGNAME_PREFIXES = ["SUNW", "FJSV", "CSW"] SUBMITPKG_TMPL = """From: $from To: $to #if $cc @@ -108,10 +74,6 @@ pass -class CatalogLineParseError(Error): - pass - - def ParsePackageFileName(p): if p.endswith(".gz"): p = p[:-3] @@ -137,6 +99,32 @@ } return data + +def ComposeVersionString(version, revision_info): + if revision_info: + version += "," + rev_lst = [] + for key in sorted(revision_info.keys()): + rev_lst.append("%s=%s" % (key, revision_info[key])) + version += "_".join(rev_lst) + return version + + +def ComposePackageFileName(parsed_filename): + """Composes package name, based on a parsed filename data structure. + + Does not use the version_string property, but builds the version from + the basic version plus revision info. + """ + tmpl = "%(catalogname)s-%(new_version)s-%(osrel)s-%(arch)s-%(vendortag)s.pkg" + version_string = parsed_filename["version"] + revision_info = parsed_filename["revision_info"] + version_string = ComposeVersionString(version_string, revision_info) + new_data = copy.copy(parsed_filename) + new_data["new_version"] = version_string + return tmpl % new_data + + def ParseVersionString(s): version_bits = re.split("_|,", s) version_str = version_bits[0] @@ -157,6 +145,10 @@ if not "extra_strings" in revision_info: revision_info["extra_strings"] = [] revision_info["extra_strings"].append(version_bit) + # Bits of parsed version must be hashable; especially extra_strings in + # revision_info. + if "extra_strings" in revision_info: + revision_info["extra_strings"] = tuple(revision_info["extra_strings"]) return version_str, version_info, revision_info @@ -407,183 +399,6 @@ return editor -class ShellMixin(object): - - def ShellCommand(self, args, quiet=False): - logging.debug("Calling: %s", repr(args)) - if quiet: - process = subprocess.Popen(args, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - stdout, stderr = process.communicate() - retcode = process.wait() - else: - retcode = subprocess.call(args) - if retcode: - raise Error("Running %s has failed." % repr(args)) - return retcode - - -class CswSrv4File(ShellMixin, object): - """Represents a package in the srv4 format (pkg).""" - - def __init__(self, pkg_path, debug=False): - self.pkg_path = pkg_path - self.workdir = None - self.gunzipped_path = None - self.transformed = False - self.dir_format_pkg = None - self.debug = debug - self.pkgname = None - self.md5sum = None - self.mtime = None - - def __repr__(self): - return u"CswSrv4File(%s)" % repr(self.pkg_path) - - def GetWorkDir(self): - if not self.workdir: - self.workdir = tempfile.mkdtemp(prefix="pkg_") - fd = open(os.path.join(self.workdir, "admin"), "w") - fd.write(ADMIN_FILE_CONTENT) - fd.close() - return self.workdir - - def GetAdminFilePath(self): - return os.path.join(self.GetWorkDir(), "admin") - - def GetGunzippedPath(self): - if not self.gunzipped_path: - gzip_suffix = ".gz" - pkg_suffix = ".pkg" - if self.pkg_path.endswith("%s%s" % (pkg_suffix, gzip_suffix)): - # Causing the class to stat the .gz file. This call throws away the - # result, but the result will be cached as a class instance member. - self.GetMtime() - base_name_gz = os.path.split(self.pkg_path)[1] - shutil.copy(self.pkg_path, self.GetWorkDir()) - self.pkg_path = os.path.join(self.GetWorkDir(), base_name_gz) - args = ["gunzip", "-f", self.pkg_path] - unused_retcode = self.ShellCommand(args) - self.gunzipped_path = self.pkg_path[:(-len(gzip_suffix))] - elif self.pkg_path.endswith(pkg_suffix): - self.gunzipped_path = self.pkg_path - else: - raise Error("The file name should end in either " - "%s or %s." % (gzip_suffix, pkg_suffix)) - return self.gunzipped_path - - def Pkgtrans(self, src_file, destdir, pkgname): - """A proxy for the pkgtrans command. - - This requires custom-pkgtrans to be available. - """ - if not os.path.isdir(destdir): - raise PackageError("%s doesn't exist or is not a directory" % destdir) - args = [os.path.join(os.path.dirname(__file__), "custom-pkgtrans"), - src_file, - destdir, - pkgname ] - pkgtrans_proc = subprocess.Popen(args, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - stdout, stderr = pkgtrans_proc.communicate() - ret = pkgtrans_proc.wait() - if ret: - logging.error(stdout) - logging.error(stderr) - logging.error("% has failed" % args) - - def GetPkgname(self): - """It's necessary to figure out the pkgname from the .pkg file. - # nawk 'NR == 2 {print $1; exit;} $f - """ - if not self.pkgname: - gunzipped_path = self.GetGunzippedPath() - args = ["nawk", "NR == 2 {print $1; exit;}", gunzipped_path] - nawk_proc = subprocess.Popen(args, stdout=subprocess.PIPE) - stdout, stderr = nawk_proc.communicate() - ret_code = nawk_proc.wait() - self.pkgname = stdout.strip() - logging.debug("GetPkgname(): %s", repr(self.pkgname)) - return self.pkgname - - def GetMtime(self): - if not self.mtime: - # This fails if the file is not there. - s = os.stat(self.pkg_path) - t = time.gmtime(s.st_mtime) - self.mtime = datetime.datetime(*t[:6]) - return self.mtime - - def TransformToDir(self): - """Transforms the file to the directory format. - - This uses the Pkgtrans function at the top, because pkgtrans behaves - differently on Solaris 8 and 10. Having our own implementation helps - achieve consistent behavior. - """ - if not self.transformed: - gunzipped_path = self.GetGunzippedPath() - pkgname = self.GetPkgname() - args = [os.path.join(os.path.dirname(__file__), - "..", "..", "bin", "custom-pkgtrans"), - gunzipped_path, self.GetWorkDir(), pkgname] - logging.debug("transforming: %s", args) - unused_retcode = self.ShellCommand(args, quiet=(not self.debug)) - dirs = self.GetDirs() - if len(dirs) != 1: - raise Error("Need exactly one package in the package stream: " - "%s." % (dirs)) - self.dir_format_pkg = DirectoryFormatPackage(dirs[0]) - self.transformed = True - - def GetDirFormatPkg(self): - self.TransformToDir() - return self.dir_format_pkg - - def GetDirs(self): - paths = os.listdir(self.GetWorkDir()) - dirs = [] - for p in paths: - abspath = os.path.join(self.GetWorkDir(), p) - if os.path.isdir(abspath): - dirs.append(abspath) - return dirs - - def GetPkgmap(self, analyze_permissions, strip=None): - dir_format_pkg = self.GetDirFormatPkg() - return dir_format_pkg.GetPkgmap(analyze_permissions, strip) - - def GetMd5sum(self): - if not self.md5sum: - logging.debug("GetMd5sum() reading file %s", repr(self.pkg_path)) - fp = open(self.pkg_path) - hash = hashlib.md5() - hash.update(fp.read()) - fp.close() - self.md5sum = hash.hexdigest() - return self.md5sum - - def GetPkgchkOutput(self): - """Returns: (exit code, stdout, stderr).""" - args = ["pkgchk", "-d", self.GetGunzippedPath(), "all"] - pkgchk_proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout, stderr = pkgchk_proc.communicate() - ret = pkgchk_proc.wait() - return ret, stdout, stderr - - def GetFileMtime(self): - if not self.mtime: - self.mtime = os.stat(self.pkg_path).st_mtime - return self.mtime - - def __del__(self): - if self.workdir: - logging.debug("Removing %s", repr(self.workdir)) - shutil.rmtree(self.workdir) - - def ParsePkginfo(lines): """Parses a pkginfo data.""" d = {} @@ -608,10 +423,9 @@ SUNWbashS --> sunw_bash_s SUNWPython --> sunw_python - Incomprehensible, but unit tested! + This function is incomprehensible, but unit tested! """ - known_prefixes = ["SUNW", "FJSV", "CSW"] - for prefix in known_prefixes: + for prefix in KNOWN_PKGNAME_PREFIXES: if pkgname.startswith(prefix): unused, tmp_prefix, the_rest = pkgname.partition(prefix) pkgname = tmp_prefix + "_" + the_rest @@ -640,12 +454,7 @@ catalogname_list = copy.copy(catalogname_list) if len(catalogname_list) == 1: return catalogname_list[0] - current_substring = catalogname_list.pop() - while catalogname_list and current_substring: - substring_set = LongestCommonSubstring(current_substring, - catalogname_list.pop()) - if substring_set: - current_substring = list(substring_set)[0] + current_substring = su.CollectionLongestCommonSubstring(catalogname_list) # If it's something like foo_, make it foo. while current_substring and not current_substring[-1].isalnum(): current_substring = current_substring[:-1] @@ -654,27 +463,6 @@ return "various packages" -def LongestCommonSubstring(S, T): - """Stolen from Wikibooks - - http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Longest_common_substring#Python""" - m = len(S); n = len(T) - L = [[0] * (n+1) for i in xrange(m+1)] - LCS = set() - longest = 0 - for i in xrange(m): - for j in xrange(n): - if S[i] == T[j]: - v = L[i][j] + 1 - L[i+1][j+1] = v - if v > longest: - longest = v - LCS = set() - if v == longest: - LCS.add(S[i-v+1:i+1]) - return LCS - - def PkginfoToSrv4Name(pkginfo_dict): SRV4_FN_TMPL = "%(catalog_name)s-%(version)s-%(osver)s-%(arch)s-%(tag)s.pkg" fn_data = {} @@ -689,304 +477,6 @@ return SRV4_FN_TMPL % fn_data -class DirectoryFormatPackage(ShellMixin, object): - """Represents a package in the directory format. - - Allows some read-write operations. - """ - def __init__(self, directory): - self.directory = directory - self.pkgname = os.path.basename(directory) - self.pkgpath = self.directory - self.pkginfo_dict = None - self.binaries = None - self.file_paths = None - self.files_metadata = None - - def GetCatalogname(self): - """Returns the catalog name of the package. - - A bit hacky. Looks for the first word of the NAME field in the package. - """ - pkginfo = self.GetParsedPkginfo() - words = re.split(c.WS_RE, pkginfo["NAME"]) - return words[0] - - def GetParsedPkginfo(self): - if not self.pkginfo_dict: - pkginfo_fd = open(self.GetPkginfoFilename(), "r") - self.pkginfo_dict = ParsePkginfo(pkginfo_fd) - pkginfo_fd.close() - return self.pkginfo_dict - - def GetSrv4FileName(self): - """Guesses the Srv4FileName based on the package directory contents.""" - return PkginfoToSrv4Name(self.GetParsedPkginfo()) - - def ToSrv4(self, target_dir): - target_file_name = self.GetSrv4FileName() - target_path = os.path.join(target_dir, target_file_name) - if os.path.exists(target_path): - return target_path - pkg_container_dir, pkg_dir = os.path.split(self.directory) - if not os.path.isdir(target_dir): - os.makedirs(target_dir) - args = ["pkgtrans", "-s", pkg_container_dir, target_path, pkg_dir] - self.ShellCommand(args, quiet=True) - args = ["gzip", "-f", target_path] - self.ShellCommand(args, quiet=True) - return target_path - - def GetPkgmap(self, analyze_permissions=False, strip=None): - fd = open(os.path.join(self.directory, "pkgmap"), "r") - return Pkgmap(fd, analyze_permissions, strip) - - def SetPkginfoEntry(self, key, value): - pkginfo = self.GetParsedPkginfo() - logging.debug("Setting %s to %s", repr(key), repr(value)) - pkginfo[key] = value - self.WritePkginfo(pkginfo) - pkgmap_path = os.path.join(self.directory, "pkgmap") - pkgmap_fd = open(pkgmap_path, "r") - new_pkgmap_lines = [] - pkginfo_re = re.compile("1 i pkginfo") - ws_re = re.compile(r"\s+") - for line in pkgmap_fd: - if pkginfo_re.search(line): - fields = ws_re.split(line) - # 3: size - # 4: sum - pkginfo_path = os.path.join(self.directory, "pkginfo") - args = ["cksum", pkginfo_path] - cksum_process = subprocess.Popen(args, stdout=subprocess.PIPE) - stdout, stderr = cksum_process.communicate() - cksum_process.wait() - size = ws_re.split(stdout)[1] - args = ["sum", pkginfo_path] - sum_process = subprocess.Popen(args, stdout=subprocess.PIPE) - stdout, stderr = sum_process.communicate() - sum_process.wait() - sum_value = ws_re.split(stdout)[0] - fields[3] = size - fields[4] = sum_value - logging.debug("New pkgmap line: %s", fields) - line = " ".join(fields) - new_pkgmap_lines.append(line.strip()) - pkgmap_fd.close() - # Write that back - pkgmap_path_new = pkgmap_path + ".new" - logging.debug("Writing back to %s", pkgmap_path_new) - pkgmap_fd = open(pkgmap_path_new, "w") - pkgmap_fd.write("\n".join(new_pkgmap_lines)) - pkgmap_fd.close() - shutil.move(pkgmap_path_new, pkgmap_path) - - # TODO(maciej): Need to update the relevant line on pkgmap too - - def GetPkginfoFilename(self): - return os.path.join(self.directory, "pkginfo") - - def WritePkginfo(self, pkginfo_dict): - # Some packages extract read-only. To be sure, change them to be - # user-writable. - args = ["chmod", "-R", "u+w", self.directory] - self.ShellCommand(args) - pkginfo_filename = self.GetPkginfoFilename() - os.chmod(pkginfo_filename, 0644) - pkginfo_fd = open(pkginfo_filename, "w") - pkginfo_dict = self.GetParsedPkginfo() - for k, v in pkginfo_dict.items(): - pkginfo_fd.write("%s=%s\n" % (k, pkginfo_dict[k])) - pkginfo_fd.close() - - def ResetNameProperty(self): - """Sometimes, NAME= contains useless data. This method resets them.""" - pkginfo_dict = self.GetParsedPkginfo() - catalog_name = PkgnameToCatName(pkginfo_dict["PKG"]) - description = pkginfo_dict["DESC"] - pkginfo_name = "%s - %s" % (catalog_name, description) - self.SetPkginfoEntry("NAME", pkginfo_name) - - def GetDependencies(self): - depends = [] - depend_file_path = os.path.join(self.directory, "install", "depend") - if not os.path.exists(depend_file_path): - return depends - fd = open(os.path.join(self.directory, "install", "depend"), "r") - # It needs to be a list because there might be duplicates and it's - # necessary to carry that information. - for line in fd: - fields = re.split(c.WS_RE, line) - if fields[0] == "P": - pkgname = fields[1] - pkg_desc = " ".join(fields[1:]) - depends.append((pkgname, pkg_desc)) - fd.close() - return depends - - def CheckPkgpathExists(self): - if not os.path.isdir(self.directory): - raise PackageError("%s does not exist or is not a directory" - % self.directory) - - def GetFilesMetadata(self): - """Returns a data structure with all the files plus their metadata. - - [ - { - "path": ..., - "mime_type": ..., - }, - ] - """ - if not self.files_metadata: - self.CheckPkgpathExists() - self.files_metadata = [] - files_root = os.path.join(self.directory, "root") - if not os.path.exists(files_root): - return self.files_metadata - all_files = self.GetAllFilePaths() - def StripRe(x, strip_re): - return re.sub(strip_re, "", x) - root_re = re.compile(r"^root/") - file_magic = FileMagic() - for file_path in all_files: - full_path = unicode(self.MakeAbsolutePath(file_path)) - file_info = { - "path": StripRe(file_path, root_re), - "mime_type": file_magic.GetFileMimeType(full_path) - } - if not file_info["mime_type"]: - logging.error("Could not establish the mime type of %s", - full_path) - # We really don't want that, as it misses binaries. - raise PackageError("Could not establish the mime type of %s" - % full_path) - if IsBinary(file_info): - parser = hp.createParser(full_path) - if not parser: - logging.warning("Can't parse file %s", file_path) - else: - file_info["mime_type_by_hachoir"] = parser.mime_type - machine_id = parser["/header/machine"].value - file_info["machine_id"] = machine_id - file_info["endian"] = parser["/header/endian"].display - self.files_metadata.append(file_info) @@ Diff output truncated at 100000 characters. @@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Thu Dec 2 22:12:40 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Thu, 02 Dec 2010 21:12:40 +0000 Subject: [csw-devel] SF.net SVN: gar:[11765] csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile Message-ID: Revision: 11765 http://gar.svn.sourceforge.net/gar/?rev=11765&view=rev Author: gadavis Date: 2010-12-02 21:12:39 +0000 (Thu, 02 Dec 2010) Log Message: ----------- 64-bit Sparcv9 build works now Modified Paths: -------------- csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile Modified: csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile =================================================================== --- csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile 2010-12-02 17:46:17 UTC (rev 11764) +++ csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile 2010-12-02 21:12:39 UTC (rev 11765) @@ -27,16 +27,17 @@ ## Test args need to be the same otherwise various tests don't link TEST_ARGS = $(BUILD_ARGS) -## Originally, non-redistributable libs in /opt/SUNWspro. Fixed as of late, try with studio again? GARCOMPILER = GCC4 -CONFIGURE_ENV = F77=$(F77) FC=$(FC) CC=$(CC) CXX=$(CXX) ## Attempt to fix problem with configure not finding libgfortran.so.3 when ## compiling with GCC4 CONFIGURE_ENV += LD_LIBRARY_PATH=/opt/csw/gcc4/lib/$(MM_LIBDIR) CONFIGURE_ARGS = $(DIRPATHS) +CONFIGURE_ARGS += F77=$(F77) FC=$(FC) CC=$(CC) CXX=$(CXX) +CONFIGURE_ARGS += CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" FFLAGS="$(FFLAGS)" FCFLAGS="$(FCFLAGS)" CONFIGURE_ARGS += --enable-netcdf-4 -## DAP is disabled due to bugs on Sparc Solaris 9 GCC4. Bug filed with UCAR +## DAP is disabled due to bugs on Sparc Solaris 9 GCC4. Bug filed with UCAR: +## netCDF #ARO-502165 #CONFIGURE_ARGS += --enable-dap CONFIGURE_ARGS += --disable-dap CONFIGURE_ARGS += --enable-ncgen4 @@ -49,8 +50,7 @@ CONFIGURE_ARGS += --with-hdf5=/opt/csw CONFIGURE_ARGS += --with-zlib=/opt/csw -## 64 bit build fails in fortran binding tests -#BUILD64 = 1 +BUILD64 = 1 ## Needed for "Large file support" in NetCDF EXTRA_CPPFLAGS = -D_FILE_OFFSET_BITS=64 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Fri Dec 3 00:54:00 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Thu, 02 Dec 2010 23:54:00 +0000 Subject: [csw-devel] SF.net SVN: gar:[11766] csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile Message-ID: Revision: 11766 http://gar.svn.sourceforge.net/gar/?rev=11766&view=rev Author: gadavis Date: 2010-12-02 23:54:00 +0000 (Thu, 02 Dec 2010) Log Message: ----------- Make checkpkg happy on Sparc Modified Paths: -------------- csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile Modified: csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile =================================================================== --- csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile 2010-12-02 21:12:39 UTC (rev 11765) +++ csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile 2010-12-02 23:54:00 UTC (rev 11766) @@ -11,12 +11,68 @@ DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz LICENSE = COPYRIGHT -RUNTIME_DEP_PKGS = CSWhdf5rt CSWzlib -RUNTIME_DEP_PKGS += CSWgcc4gfortranrt CSWgcc4corert CSWgcc4g++rt -BUILD_DEP_PKGS = $(RUNTIME_DEP_PKGS) CSWtetex +BUILD_DEP_PKGS += CSWhdf5rt CSWzlib +BUILD_DEP_PKGS += CSWgcc4gfortranrt CSWgcc4corert CSWgcc4g++rt +BUILD_DEP_PKGS += CSWtetex BUILD_DEP_PKGS += CSWgcc4gfortran +PACKAGES = CSWnetcdf +CATALOGNAME_CSWnetcdf = netcdf +SPKG_DESC_CSWnetcdf = Machine-independent data formats for array-oriented scientific data +RUNTIME_DEP_PKGS_CSWnetcdf += CSWhdf5rt +RUNTIME_DEP_PKGS_CSWnetcdf += CSWzlib +RUNTIME_DEP_PKGS_CSWnetcdf += CSWlibnetcdf6 + +PACKAGES += CSWlibnetcdf6 +CATALOGNAME_CSWlibnetcdf6 = libnetcf6 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/libnetcdf.so.6.0.0 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/libnetcdf.so.6\.[0-9\.]+ +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/libnetcdf.so.6 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/sparcv9/libnetcdf.so.6.0.0 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/sparcv9/libnetcdf.so.6\.[0-9\.]+ +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/sparcv9/libnetcdf.so.6 +SPKG_DESC_CSWlibnetcdf6 = Machine-independent data formats for array-oriented scientific data, libnetcdf.so.6 +RUNTIME_DEP_PKGS_CSWlibnetcdf6 = CSWhdf5rt +RUNTIME_DEP_PKGS_CSWlibnetcdf6 += CSWgcc4corert + +PACKAGES += CSWlibnetcdf-c++5 +CATALOGNAME_CSWlibnetcdf-c++5 = libnetcdf_c++5 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/libnetcdf_c\+\+.so.5.0.0 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/libnetcdf_c\+\+.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/libnetcdf_c\+\+.so.5 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so.5.0.0 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so.5 +SPKG_DESC_CSWlibnetcdf-c++5 += Machine-independent data formats for array-oriented scientific data, libnetcdf_c++.so.5 +RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 = CSWhdf5rt +RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWgcc4corert CSWgcc4g++rt +RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWlibnetcdf6 + +PACKAGES += CSWlibnetcdff5 +CATALOGNAME_CSWlibnetcdff5 = libnetcdff5 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5.0.0 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5.0.0 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5 +SPKG_DESC_CSWlibnetcdff5 = Machine-independent data formats for array-oriented scientific data, libnetcdff.so.5 +RUNTIME_DEP_PKGS_CSWlibnetcdff5 = CSWhdf5rt +RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWgcc4gfortranrt CSWgcc4corert +RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWlibnetcdf6 + +PACKAGES += CSWnetcdf-devel +CATALOGNAME_CSWnetcdf-devel = netcdf_devel +SPKG_DESC_CSWnetcdf-devel = Development files for NetCDF +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/libnetcdf.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/libnetcdf_c\+\+.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/libnetcdff.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/sparcv9/libnetcdf.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/sparcv9/libnetcdff.so +PKGFILES_CSWnetcdf-devel += $(PKGFILES_DEVEL) + ## CFLAGS AND LDFLAGS are necessary due to problems with the fortran bindings when ## building 64-bit BUILD_ARGS = CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Fri Dec 3 00:59:11 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Thu, 02 Dec 2010 23:59:11 +0000 Subject: [csw-devel] SF.net SVN: gar:[11767] csw/mgar/pkg/netcdf/trunk Message-ID: Revision: 11767 http://gar.svn.sourceforge.net/gar/?rev=11767&view=rev Author: gadavis Date: 2010-12-02 23:59:11 +0000 (Thu, 02 Dec 2010) Log Message: ----------- NetCDF4 builds on Sparc now (manual merge via copy of branch netcdf-4) Modified Paths: -------------- csw/mgar/pkg/netcdf/trunk/Makefile csw/mgar/pkg/netcdf/trunk/checksums Modified: csw/mgar/pkg/netcdf/trunk/Makefile =================================================================== --- csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-02 23:54:00 UTC (rev 11766) +++ csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-02 23:59:11 UTC (rev 11767) @@ -3,37 +3,114 @@ # $Id$ GARNAME = netcdf -GARVERSION = 3.6.3 +GARVERSION = 4.1.1 CATEGORIES = lib -DESCRIPTION = machine-independent data formats for array-oriented scientific data +DESCRIPTION = Machine-independent data formats for array-oriented scientific data SPKG_SOURCEURL = http://www.unidata.ucar.edu/software/netcdf/ MASTER_SITES = http://www.unidata.ucar.edu/downloads/netcdf/ftp/ DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz LICENSE = COPYRIGHT -RUNTIME_DEP_PKGS = CSWcurlrt CSWhdf5rt CSWgcc3g77rt CSWzlib CSWgcc3corert \ - CSWoldaprt CSWlibcares CSWlibidn CSWgcc3g++rt CSWosslrt -BUILD_DEP_PKGS = $(RUNTIME_DEP_PKGS) CSWtetex CSWgcc3g77 +BUILD_DEP_PKGS += CSWhdf5rt CSWzlib +BUILD_DEP_PKGS += CSWgcc4gfortranrt CSWgcc4corert CSWgcc4g++rt +BUILD_DEP_PKGS += CSWtetex +BUILD_DEP_PKGS += CSWgcc4gfortran + +PACKAGES = CSWnetcdf +CATALOGNAME_CSWnetcdf = netcdf +SPKG_DESC_CSWnetcdf = Machine-independent data formats for array-oriented scientific data +RUNTIME_DEP_PKGS_CSWnetcdf += CSWhdf5rt +RUNTIME_DEP_PKGS_CSWnetcdf += CSWzlib +RUNTIME_DEP_PKGS_CSWnetcdf += CSWlibnetcdf6 + +PACKAGES += CSWlibnetcdf6 +CATALOGNAME_CSWlibnetcdf6 = libnetcf6 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/libnetcdf.so.6.0.0 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/libnetcdf.so.6\.[0-9\.]+ +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/libnetcdf.so.6 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/sparcv9/libnetcdf.so.6.0.0 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/sparcv9/libnetcdf.so.6\.[0-9\.]+ +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/sparcv9/libnetcdf.so.6 +SPKG_DESC_CSWlibnetcdf6 = Machine-independent data formats for array-oriented scientific data, libnetcdf.so.6 +RUNTIME_DEP_PKGS_CSWlibnetcdf6 = CSWhdf5rt +RUNTIME_DEP_PKGS_CSWlibnetcdf6 += CSWgcc4corert + +PACKAGES += CSWlibnetcdf-c++5 +CATALOGNAME_CSWlibnetcdf-c++5 = libnetcdf_c++5 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/libnetcdf_c\+\+.so.5.0.0 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/libnetcdf_c\+\+.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/libnetcdf_c\+\+.so.5 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so.5.0.0 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so.5 +SPKG_DESC_CSWlibnetcdf-c++5 += Machine-independent data formats for array-oriented scientific data, libnetcdf_c++.so.5 +RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 = CSWhdf5rt +RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWgcc4corert CSWgcc4g++rt +RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWlibnetcdf6 + +PACKAGES += CSWlibnetcdff5 +CATALOGNAME_CSWlibnetcdff5 = libnetcdff5 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5.0.0 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5.0.0 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5 +SPKG_DESC_CSWlibnetcdff5 = Machine-independent data formats for array-oriented scientific data, libnetcdff.so.5 +RUNTIME_DEP_PKGS_CSWlibnetcdff5 = CSWhdf5rt +RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWgcc4gfortranrt CSWgcc4corert +RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWlibnetcdf6 + +PACKAGES += CSWnetcdf-devel +CATALOGNAME_CSWnetcdf-devel = netcdf_devel +SPKG_DESC_CSWnetcdf-devel = Development files for NetCDF +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/libnetcdf.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/libnetcdf_c\+\+.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/libnetcdff.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/sparcv9/libnetcdf.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/sparcv9/libnetcdff.so +PKGFILES_CSWnetcdf-devel += $(PKGFILES_DEVEL) + ## CFLAGS AND LDFLAGS are necessary due to problems with the fortran bindings when ## building 64-bit -BUILD_ARGS = CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" FFLAGS="$(FFLAGS)" FCFLAGS="$(FCFLAGS)" +BUILD_ARGS = CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" +BUILD_ARGS += FFLAGS="$(FFLAGS)" FCFLAGS="$(FCFLAGS)" +## CXXFLAGS are necessary due to the gcc3core_rt problem noted below +BUILD_ARGS += CXXFLAGS="$(CXXFLAGS)" -CONFIGURE_ENV = F77=$(F77) FC=$(FC) CC=$(CC) CXX=$(CXX) -CONFIGURE_ARGS = $(DIRPATHS) \ - --enable-shared \ - --enable-separate-fortran \ - --disable-f90 \ - --enable-docs-install +## Test args need to be the same otherwise various tests don't link +TEST_ARGS = $(BUILD_ARGS) -## 64 bit build fails in fortran binding tests +GARCOMPILER = GCC4 +## Attempt to fix problem with configure not finding libgfortran.so.3 when +## compiling with GCC4 +CONFIGURE_ENV += LD_LIBRARY_PATH=/opt/csw/gcc4/lib/$(MM_LIBDIR) + +CONFIGURE_ARGS = $(DIRPATHS) +CONFIGURE_ARGS += F77=$(F77) FC=$(FC) CC=$(CC) CXX=$(CXX) +CONFIGURE_ARGS += CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" FFLAGS="$(FFLAGS)" FCFLAGS="$(FCFLAGS)" +CONFIGURE_ARGS += --enable-netcdf-4 +## DAP is disabled due to bugs on Sparc Solaris 9 GCC4. Bug filed with UCAR: +## netCDF #ARO-502165 +#CONFIGURE_ARGS += --enable-dap +CONFIGURE_ARGS += --disable-dap +CONFIGURE_ARGS += --enable-ncgen4 +CONFIGURE_ARGS += --enable-shared +CONFIGURE_ARGS += --enable-separate-fortran +CONFIGURE_ARGS += --enable-cxx4 +CONFIGURE_ARGS += --enable-docs-install +CONFIGURE_ARGS += --enable-udunits +CONFIGURE_ARGS += --disable-logging +CONFIGURE_ARGS += --with-hdf5=/opt/csw +CONFIGURE_ARGS += --with-zlib=/opt/csw + BUILD64 = 1 ## Needed for "Large file support" in NetCDF EXTRA_CPPFLAGS = -D_FILE_OFFSET_BITS=64 -## non-redistributable libs in /opt/SUNWspro -GARCOMPILER = GCC3 DEBUG_PACKAGING = 1 ## Add GCC4 lib dir to CFLAGS and friends because gcc3core_rt puts it's @@ -47,15 +124,15 @@ ## ## Adding -dalign to *FLAGS in attempt to fix bus error in nf_test/ftst_vars4 ## in fuction nf_put_vlen_element -#EXTRA_CFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign -#EXTRA_FFLAGS= -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign -#EXTRA_FCFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign -#EXTRA_CXXFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign +EXTRA_CFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign +EXTRA_FFLAGS= -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign +EXTRA_FCFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign +EXTRA_CXXFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign ## OPT_FLAGS_GCC = -O2 -pipe -include gar/category.mk ## During the 32-bit sparc build, the C++ bindings were barfing with an error ## about undefined symbol __sync_fetch_and_add_4 in libnetcdf_c++ -## Per http://www.mail-archive.com/maintainers at lists.opencsw.org/msg06095.html -## replacing -march=v8 with -m32 seems to solve the problem -ARCHFLAGS_GCC4_sparcv8 = -m32 -mcpu=v8 +## From Porting FAQ: http://wiki.opencsw.org/porting-faq#toc5 +OPT_FLAGS_GCC = + +include gar/category.mk Modified: csw/mgar/pkg/netcdf/trunk/checksums =================================================================== --- csw/mgar/pkg/netcdf/trunk/checksums 2010-12-02 23:54:00 UTC (rev 11766) +++ csw/mgar/pkg/netcdf/trunk/checksums 2010-12-02 23:59:11 UTC (rev 11767) @@ -1 +1 @@ -334e9bdc010b6cd03fd6531a45fe50ad netcdf-3.6.3.tar.gz +79c5ff14c80d5e18dd8f1fceeae1c8e1 netcdf-4.1.1.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Fri Dec 3 01:01:42 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Fri, 03 Dec 2010 00:01:42 +0000 Subject: [csw-devel] SF.net SVN: gar:[11768] csw/mgar/pkg/netcdf/trunk/Makefile Message-ID: Revision: 11768 http://gar.svn.sourceforge.net/gar/?rev=11768&view=rev Author: gadavis Date: 2010-12-03 00:01:42 +0000 (Fri, 03 Dec 2010) Log Message: ----------- Add scaffold rules for x86 64-bit Modified Paths: -------------- csw/mgar/pkg/netcdf/trunk/Makefile Modified: csw/mgar/pkg/netcdf/trunk/Makefile =================================================================== --- csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-02 23:59:11 UTC (rev 11767) +++ csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-03 00:01:42 UTC (rev 11768) @@ -32,6 +32,9 @@ PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/sparcv9/libnetcdf.so.6.0.0 PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/sparcv9/libnetcdf.so.6\.[0-9\.]+ PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/sparcv9/libnetcdf.so.6 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/amd64/libnetcdf.so.6.0.0 +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/amd64/libnetcdf.so.6\.[0-9\.]+ +PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/amd64/libnetcdf.so.6 SPKG_DESC_CSWlibnetcdf6 = Machine-independent data formats for array-oriented scientific data, libnetcdf.so.6 RUNTIME_DEP_PKGS_CSWlibnetcdf6 = CSWhdf5rt RUNTIME_DEP_PKGS_CSWlibnetcdf6 += CSWgcc4corert @@ -44,6 +47,9 @@ PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so.5.0.0 PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so.5\.[0-9\.]+ PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so.5 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/amd64/libnetcdf_c\+\+.so.5.0.0 +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/amd64/libnetcdf_c\+\+.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/amd64/libnetcdf_c\+\+.so.5 SPKG_DESC_CSWlibnetcdf-c++5 += Machine-independent data formats for array-oriented scientific data, libnetcdf_c++.so.5 RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 = CSWhdf5rt RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWgcc4corert CSWgcc4g++rt @@ -54,9 +60,9 @@ PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5.0.0 PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5\.[0-9\.]+ PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5 -PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5.0.0 -PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5\.[0-9\.]+ -PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5.0.0 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5 SPKG_DESC_CSWlibnetcdff5 = Machine-independent data formats for array-oriented scientific data, libnetcdff.so.5 RUNTIME_DEP_PKGS_CSWlibnetcdff5 = CSWhdf5rt RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWgcc4gfortranrt CSWgcc4corert @@ -71,6 +77,9 @@ PKGFILES_CSWnetcdf-devel += /opt/csw/lib/sparcv9/libnetcdf.so PKGFILES_CSWnetcdf-devel += /opt/csw/lib/sparcv9/libnetcdf_c\+\+.so PKGFILES_CSWnetcdf-devel += /opt/csw/lib/sparcv9/libnetcdff.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/amd64/libnetcdf.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/amd64/libnetcdf_c\+\+.so +PKGFILES_CSWnetcdf-devel += /opt/csw/lib/amd64/libnetcdff.so PKGFILES_CSWnetcdf-devel += $(PKGFILES_DEVEL) ## CFLAGS AND LDFLAGS are necessary due to problems with the fortran bindings when This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Fri Dec 3 03:16:23 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Fri, 03 Dec 2010 02:16:23 +0000 Subject: [csw-devel] SF.net SVN: gar:[11769] csw/mgar/pkg/netcdf/trunk/Makefile Message-ID: Revision: 11769 http://gar.svn.sourceforge.net/gar/?rev=11769&view=rev Author: gadavis Date: 2010-12-03 02:16:22 +0000 (Fri, 03 Dec 2010) Log Message: ----------- Fix missing sparcv9 entries for fortran lib Modified Paths: -------------- csw/mgar/pkg/netcdf/trunk/Makefile Modified: csw/mgar/pkg/netcdf/trunk/Makefile =================================================================== --- csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-03 00:01:42 UTC (rev 11768) +++ csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-03 02:16:22 UTC (rev 11769) @@ -60,6 +60,9 @@ PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5.0.0 PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5\.[0-9\.]+ PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/libnetcdff.so.5 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5.0.0 +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5\.[0-9\.]+ +PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/sparcv9/libnetcdff.so.5 PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5.0.0 PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5\.[0-9\.]+ PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From rthurner at users.sourceforge.net Fri Dec 3 07:55:22 2010 From: rthurner at users.sourceforge.net (rthurner at users.sourceforge.net) Date: Fri, 03 Dec 2010 06:55:22 +0000 Subject: [csw-devel] SF.net SVN: gar:[11770] csw/mgar/pkg/mercurial/trunk Message-ID: Revision: 11770 http://gar.svn.sourceforge.net/gar/?rev=11770&view=rev Author: rthurner Date: 2010-12-03 06:55:21 +0000 (Fri, 03 Dec 2010) Log Message: ----------- mercurial: upgrade to hg-1.7.2 Modified Paths: -------------- csw/mgar/pkg/mercurial/trunk/Makefile csw/mgar/pkg/mercurial/trunk/checksums Modified: csw/mgar/pkg/mercurial/trunk/Makefile =================================================================== --- csw/mgar/pkg/mercurial/trunk/Makefile 2010-12-03 02:16:22 UTC (rev 11769) +++ csw/mgar/pkg/mercurial/trunk/Makefile 2010-12-03 06:55:21 UTC (rev 11770) @@ -1,5 +1,5 @@ GARNAME = mercurial -GARVERSION = 1.7.1 +GARVERSION = 1.7.2 CATEGORIES = python DESCRIPTION = Fast, lightweight Source Control Management system Modified: csw/mgar/pkg/mercurial/trunk/checksums =================================================================== --- csw/mgar/pkg/mercurial/trunk/checksums 2010-12-03 02:16:22 UTC (rev 11769) +++ csw/mgar/pkg/mercurial/trunk/checksums 2010-12-03 06:55:21 UTC (rev 11770) @@ -1 +1 @@ -b14caa0f9e4dd5acbf9e9a6059c37fd3 mercurial-1.7.1.tar.gz +e9e99a0a20ded8f6d9463ffb94021b12 mercurial-1.7.2.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bonivart at users.sourceforge.net Fri Dec 3 13:54:15 2010 From: bonivart at users.sourceforge.net (bonivart at users.sourceforge.net) Date: Fri, 03 Dec 2010 12:54:15 +0000 Subject: [csw-devel] SF.net SVN: gar:[11771] csw/mgar/pkg/bind/trunk Message-ID: Revision: 11771 http://gar.svn.sourceforge.net/gar/?rev=11771&view=rev Author: bonivart Date: 2010-12-03 12:54:15 +0000 (Fri, 03 Dec 2010) Log Message: ----------- bind: update to 9.7.2-P3 Modified Paths: -------------- csw/mgar/pkg/bind/trunk/Makefile csw/mgar/pkg/bind/trunk/checksums Modified: csw/mgar/pkg/bind/trunk/Makefile =================================================================== --- csw/mgar/pkg/bind/trunk/Makefile 2010-12-03 06:55:21 UTC (rev 11770) +++ csw/mgar/pkg/bind/trunk/Makefile 2010-12-03 12:54:15 UTC (rev 11771) @@ -6,7 +6,7 @@ CATEGORIES = net # Enable these for Px-releases -RELEASE = P2 +RELEASE = P3 DISTVERSION = $(GARVERSION)-$(RELEASE) SPKG_VERSION = $(GARVERSION)$(RELEASE) DISTNAME = $(GARNAME)-$(GARVERSION)-$(RELEASE) @@ -91,7 +91,6 @@ CHECKPKG_OVERRIDES_CSWbind += surplus-dependency|CSWbindutils CHECKPKG_OVERRIDES_CSWbindchroot += surplus-dependency|CSWbind CHECKPKG_OVERRIDES_CSWbinddevel += archall-devel-package -CHECKPKG_OVERRIDES_CSWbinddevel += surplus-dependency|CSWbind CHECKPKG_OVERRIDES_CSWlibbind += non-uniform-lib-versions-in-package|sonames=['libbind9.so.60',|'libdns.so.69',|'libisc.so.62',|'libisccc.so.60',|'libisccfg.so.62',|'liblwres.so.60'] include gar/category.mk Modified: csw/mgar/pkg/bind/trunk/checksums =================================================================== --- csw/mgar/pkg/bind/trunk/checksums 2010-12-03 06:55:21 UTC (rev 11770) +++ csw/mgar/pkg/bind/trunk/checksums 2010-12-03 12:54:15 UTC (rev 11771) @@ -1 +1 @@ -e74de6ec9c2cd27576794c873bd85f4a bind-9.7.2-P2.tar.gz +b4537cbae38b2daef36775bf49f33db9 bind-9.7.2-P3.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bonivart at users.sourceforge.net Fri Dec 3 16:15:51 2010 From: bonivart at users.sourceforge.net (bonivart at users.sourceforge.net) Date: Fri, 03 Dec 2010 15:15:51 +0000 Subject: [csw-devel] SF.net SVN: gar:[11772] csw/mgar/pkg/dhcp/trunk Message-ID: Revision: 11772 http://gar.svn.sourceforge.net/gar/?rev=11772&view=rev Author: bonivart Date: 2010-12-03 15:15:51 +0000 (Fri, 03 Dec 2010) Log Message: ----------- dhcp: update to 4.2.0-P1 Modified Paths: -------------- csw/mgar/pkg/dhcp/trunk/Makefile csw/mgar/pkg/dhcp/trunk/checksums Modified: csw/mgar/pkg/dhcp/trunk/Makefile =================================================================== --- csw/mgar/pkg/dhcp/trunk/Makefile 2010-12-03 12:54:15 UTC (rev 11771) +++ csw/mgar/pkg/dhcp/trunk/Makefile 2010-12-03 15:15:51 UTC (rev 11772) @@ -1,10 +1,10 @@ GARNAME = dhcp GARVERSION = 4.2.0 -#RELEASE = P1 -#DISTVERSION = $(GARVERSION)-$(RELEASE) -#SPKG_VERSION = $(GARVERSION)$(RELEASE) -#DISTNAME = $(GARNAME)-$(GARVERSION)-$(RELEASE) -#WORKSRC = $(WORKDIR)/$(DISTNAME) +RELEASE = P1 +DISTVERSION = $(GARVERSION)-$(RELEASE) +SPKG_VERSION = $(GARVERSION)$(RELEASE) +DISTNAME = $(GARNAME)-$(GARVERSION)-$(RELEASE) +WORKSRC = $(WORKDIR)/$(DISTNAME) CATEGORIES = net DESCRIPTION = ISC DHCP reference implementation @@ -17,7 +17,7 @@ MASTER_SITES = http://ftp.isc.org/isc/dhcp/ DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz -#DISTFILES = $(DISTNAME).tar.gz +DISTFILES = $(DISTNAME).tar.gz LICENSE = LICENSE @@ -27,14 +27,12 @@ SPKG_DESC_CSWdhcp = ISC DHCP reference implementation RUNTIME_DEP_PKGS_CSWdhcpdevel = CSWdhcp +SPKG_DESC_CSWdhcpdevel = ISC DHCP development package CATALOGNAME_CSWdhcpdevel = dhcp_devel ARCHALL_CSWdhcpdevel = 1 UFILES_REGEX = ($(GARNAME)-\d+(?:\.\d+)*).tar.gz -CHECKPKG_OVERRIDES_CSWdhcpdevel += archall-devel-package -CHECKPKG_OVERRIDES_CSWdhcpdevel += surplus-dependency|CSWdhcp - GARCOMPILER = GNU TEST_TARGET = check Modified: csw/mgar/pkg/dhcp/trunk/checksums =================================================================== --- csw/mgar/pkg/dhcp/trunk/checksums 2010-12-03 12:54:15 UTC (rev 11771) +++ csw/mgar/pkg/dhcp/trunk/checksums 2010-12-03 15:15:51 UTC (rev 11772) @@ -1 +1 @@ -83abd7c4f9c24d8dd024ca5a71380c0a dhcp-4.2.0.tar.gz +1c268a2368b2565252b5f9d7255d3c72 dhcp-4.2.0-P1.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bonivart at users.sourceforge.net Fri Dec 3 16:30:58 2010 From: bonivart at users.sourceforge.net (bonivart at users.sourceforge.net) Date: Fri, 03 Dec 2010 15:30:58 +0000 Subject: [csw-devel] SF.net SVN: gar:[11773] csw/mgar/pkg/dhcp/trunk/Makefile Message-ID: Revision: 11773 http://gar.svn.sourceforge.net/gar/?rev=11773&view=rev Author: bonivart Date: 2010-12-03 15:30:58 +0000 (Fri, 03 Dec 2010) Log Message: ----------- dhcp: add override for arch all devel pkg Modified Paths: -------------- csw/mgar/pkg/dhcp/trunk/Makefile Modified: csw/mgar/pkg/dhcp/trunk/Makefile =================================================================== --- csw/mgar/pkg/dhcp/trunk/Makefile 2010-12-03 15:15:51 UTC (rev 11772) +++ csw/mgar/pkg/dhcp/trunk/Makefile 2010-12-03 15:30:58 UTC (rev 11773) @@ -53,6 +53,8 @@ SPKG_SOURCEURL = https://www.isc.org/software/dhcp +CHECKPKG_OVERRIDES_CSWdhcpdevel += archall-devel-package + include gar/category.mk install-custom: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Fri Dec 3 20:21:43 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Fri, 03 Dec 2010 19:21:43 +0000 Subject: [csw-devel] SF.net SVN: gar:[11774] csw/mgar/pkg/freeradius/trunk Message-ID: Revision: 11774 http://gar.svn.sourceforge.net/gar/?rev=11774&view=rev Author: gadavis Date: 2010-12-03 19:21:43 +0000 (Fri, 03 Dec 2010) Log Message: ----------- FreeRADIUS builds and installs under Sparc 32 bit Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Property Changed: ---------------- csw/mgar/pkg/freeradius/trunk/ Property changes on: csw/mgar/pkg/freeradius/trunk ___________________________________________________________________ Modified: svn:externals - gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2-fortran Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-03 15:30:58 UTC (rev 11773) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-03 19:21:43 UTC (rev 11774) @@ -20,15 +20,26 @@ SPKG_SOURCEURL = http://freeradius.org/ -GARCOMPILER = GCC3 +GARCOMPILER = GCC4 -STRIP_LIBTOOL = 1 +# Stripping libtool breaks the build in versions <=2.1.7 +#STRIP_LIBTOOL = 1 -CONFIGURE_ARGS = $(DIRPATHS) -## 2.1.10 requires using included libtool instead of system -#CONFIGURE_ARGS += --with-system-libtool +## Some of the RLM Submodules don't seem to pick up the include paths without +## setting CFLAGS +EXTRA_CFLAGS = -I/opt/csw/include +#EXTRA_CFLAGS += -DIE_LIBTOOL_DIE +#CONFIGURE_ENV = CFLAGS="$(CFLAGS)" + +CONFIGURE_ARGS = $(DIRPATHS) +CONFIGURE_ARGS += CC=$(CC) CXX=$(CXX) F77=$(F77) FC=$(FC) +CONFIGURE_ARGS += CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" +CONFIGURE_ARGS += CPPFLAGS="$(CPPFLAGS)" FCFLAGS="$(FCFLAGS)" +CONFIGURE_ARGS += LDFLAGS="$(LDFLAGS)" +CONFIGURE_ARGS += --with-system-libtool +CONFIGURE_ARGS += --with-system-libltld CONFIGURE_ARGS += --without-rlm_sqlippool -CONFIGURE_ARGS += --without-rlm_sql_mysql +CONFIGURE_ARGS += --with-rlm_sql_mysql CONFIGURE_ARGS += --without-rlm_sql_postgresql CONFIGURE_ARGS += --without-rlm_sql_db2 CONFIGURE_ARGS += --without-rlm_sql_firebird @@ -36,24 +47,28 @@ CONFIGURE_ARGS += --without-rlm_sql_iodbc CONFIGURE_ARGS += --without-rlm_sql_oracle CONFIGURE_ARGS += --without-rlm_sql_sybase -CONFIGURE_ARGS += --without-rlm_sql_unixodbc -CONFIGURE_ARGS += --without-rlm-ldap +CONFIGURE_ARGS += --with-rlm_sql_unixodbc +CONFIGURE_ARGS += --with-rlm-ldap CONFIGURE_ARGS += --without-rlm_eap_ikev2 CONFIGURE_ARGS += --without-rlm_eap_sim -CONFIGURE_ARGS += --without-rlm_eap_tls +CONFIGURE_ARGS += --with-rlm_eap_tls CONFIGURE_ARGS += --without-rlm_eap_peap CONFIGURE_ARGS += --without-rlm_eap_ttls CONFIGURE_ARGS += --without-rlm_eap_tnc -CONFIGURE_ARGS += --without-rlm_krb5 +CONFIGURE_ARGS += --with-rlm_krb5 CONFIGURE_ARGS += --without-rlm_dbm CONFIGURE_ARGS += --without-rlm_otp -CONFIGURE_ARGS += --without-rlm_pam -CONFIGURE_ARGS += --without-rlm_python -CONFIGURE_ARGS += --without-snmp +CONFIGURE_ARGS += --with-rlm_pam +CONFIGURE_ARGS += --with-rlm_python +CONFIGURE_ARGS += --with-snmp +CONFIGURE_ARGS += --with-rlm_counter-include-dir=/opt/csw/include +CONFIGURE_ARGS += --with-rlm_counter-lib-dir=/opt/csw/lib/$(MM_LIBDIR) # No tests available TEST_TARGET = +INSTALL_ARGS += R=$(DESTDIR) + include gar/category.mk PATH := /opt/csw/gnu:$(PATH) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From chninkel at users.sourceforge.net Fri Dec 3 23:20:19 2010 From: chninkel at users.sourceforge.net (chninkel at users.sourceforge.net) Date: Fri, 03 Dec 2010 22:20:19 +0000 Subject: [csw-devel] SF.net SVN: gar:[11775] csw/mgar/pkg/openssl/trunk Message-ID: Revision: 11775 http://gar.svn.sourceforge.net/gar/?rev=11775&view=rev Author: chninkel Date: 2010-12-03 22:20:19 +0000 (Fri, 03 Dec 2010) Log Message: ----------- openssl: updated to 0.9.8q Modified Paths: -------------- csw/mgar/pkg/openssl/trunk/Makefile csw/mgar/pkg/openssl/trunk/checksums csw/mgar/pkg/openssl/trunk/files/changelog.CSW Modified: csw/mgar/pkg/openssl/trunk/Makefile =================================================================== --- csw/mgar/pkg/openssl/trunk/Makefile 2010-12-03 19:21:43 UTC (rev 11774) +++ csw/mgar/pkg/openssl/trunk/Makefile 2010-12-03 22:20:19 UTC (rev 11775) @@ -16,7 +16,7 @@ ###### Package information ####### GARNAME = openssl -GARVERSION = 0.9.8p +GARVERSION = 0.9.8q CATEGORIES = lib DESCRIPTION = The Open Source toolkit for SSL and TLS Modified: csw/mgar/pkg/openssl/trunk/checksums =================================================================== --- csw/mgar/pkg/openssl/trunk/checksums 2010-12-03 19:21:43 UTC (rev 11774) +++ csw/mgar/pkg/openssl/trunk/checksums 2010-12-03 22:20:19 UTC (rev 11775) @@ -1 +1 @@ -7f24047f70364c9eabc94899e356ce39 openssl-0.9.8p.tar.gz +80e67291bec9230f03eefb5cfe858998 openssl-0.9.8q.tar.gz Modified: csw/mgar/pkg/openssl/trunk/files/changelog.CSW =================================================================== --- csw/mgar/pkg/openssl/trunk/files/changelog.CSW 2010-12-03 19:21:43 UTC (rev 11774) +++ csw/mgar/pkg/openssl/trunk/files/changelog.CSW 2010-12-03 22:20:19 UTC (rev 11775) @@ -1,3 +1,9 @@ +openssl (0.9.8q,REV=2010.12.02) unstable + + * New upstream version. + + -- Yann Rouillard Thu, 02 Dec 2010 23:40:12 +0100 + openssl (0.9.8p,REV=2010.11.20) unstable * New upstream version. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Sat Dec 4 01:26:11 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Sat, 04 Dec 2010 00:26:11 +0000 Subject: [csw-devel] SF.net SVN: gar:[11776] csw/mgar/pkg/netcdf/trunk/Makefile Message-ID: Revision: 11776 http://gar.svn.sourceforge.net/gar/?rev=11776&view=rev Author: gadavis Date: 2010-12-04 00:26:11 +0000 (Sat, 04 Dec 2010) Log Message: ----------- Add dependencies for devel package on provided libraries Modified Paths: -------------- csw/mgar/pkg/netcdf/trunk/Makefile Modified: csw/mgar/pkg/netcdf/trunk/Makefile =================================================================== --- csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-03 22:20:19 UTC (rev 11775) +++ csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-04 00:26:11 UTC (rev 11776) @@ -84,6 +84,9 @@ PKGFILES_CSWnetcdf-devel += /opt/csw/lib/amd64/libnetcdf_c\+\+.so PKGFILES_CSWnetcdf-devel += /opt/csw/lib/amd64/libnetcdff.so PKGFILES_CSWnetcdf-devel += $(PKGFILES_DEVEL) +RUNTIME_DEP_PKGS_CSWnetcdf-devel += CSWlibnetcdf6 +RUNTIME_DEP_PKGS_CSWnetcdf-devel += CSWlibnetcdff5 +RUNTIME_DEP_PKGS_CSWnetcdf-devel += CSWlibnetcdf-c++5 ## CFLAGS AND LDFLAGS are necessary due to problems with the fortran bindings when ## building 64-bit @@ -147,4 +150,10 @@ ## From Porting FAQ: http://wiki.opencsw.org/porting-faq#toc5 OPT_FLAGS_GCC = +## The development package should pull in the various libs since it's hard to +## link against what isn't there +CHECKPKG_OVERRIDES_CSWnetcdf-devel += surplus-dependency|CSWlibnetcdf-c++5 +CHECKPKG_OVERRIDES_CSWnetcdf-devel += surplus-dependency|CSWlibnetcdf6 +CHECKPKG_OVERRIDES_CSWnetcdf-devel += surplus-dependency|CSWlibnetcdff5 + include gar/category.mk This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Sat Dec 4 01:35:42 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Sat, 04 Dec 2010 00:35:42 +0000 Subject: [csw-devel] SF.net SVN: gar:[11777] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11777 http://gar.svn.sourceforge.net/gar/?rev=11777&view=rev Author: gadavis Date: 2010-12-04 00:35:42 +0000 (Sat, 04 Dec 2010) Log Message: ----------- Disable some modules that were giving RPATH issues, add some checkpkg cleanups Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-04 00:26:11 UTC (rev 11776) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-04 00:35:42 UTC (rev 11777) @@ -11,17 +11,14 @@ DISTFILES = $(GARNAME)-server-$(GARVERSION).tar.gz DISTNAME = $(GARNAME)-server-$(GARVERSION) -# We define upstream file regex so we can be notifed of new upstream software release UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz -# If the url used to check for software update is different of MASTER_SITES, then -# uncomment the next line. Otherwise it is set by default to the value of MASTER_SITES -# UPSTREAM_MASTER_SITES = - SPKG_SOURCEURL = http://freeradius.org/ +LICENSE = LICENSE GARCOMPILER = GCC4 + # Stripping libtool breaks the build in versions <=2.1.7 #STRIP_LIBTOOL = 1 @@ -31,39 +28,80 @@ #EXTRA_CFLAGS += -DIE_LIBTOOL_DIE #CONFIGURE_ENV = CFLAGS="$(CFLAGS)" +#EXTRA_MERGE_EXCLUDE_FILES += /opt/csw/lib/libltdl.so.* +#EXTRA_MERGE_EXCLUDE_FILES += /opt/csw/lib/sparcv9/libltdl.so.* +#EXTRA_MERGE_EXCLUDE_FILES += /opt/csw/lib/amd64/libltdl.so.* +#EXTRA_MERGE_EXCLUDE_FILES += /opt/csw/include/ltdl.h + +RUNTIME_DEP_PKGS_CSWfreeradius += CSWlibpython2-6-1-0 +RUNTIME_DEP_PKGS_CSWfreeradius += CSWlibpcap +RUNTIME_DEP_PKGS_CSWfreeradius += CSWoldaprt +RUNTIME_DEP_PKGS_CSWfreeradius += CSWosslrt +RUNTIME_DEP_PKGS_CSWfreeradius += CSWgdbm +RUNTIME_DEP_PKGS_CSWfreeradius += CSWlibltdl7 +RUNTIME_DEP_PKGS_CSWfreeradius += CSWreadline +RUNTIME_DEP_PKGS_CSWfreeradius += CSWkrb5lib +RUNTIME_DEP_PKGS_CSWfreeradius += CSWgcc4corert + +## Can't get perl to link cleanly +## Still get noise about a missing dependency due to an included example +## script in raddb +#RUNTIME_DEP_PKGS_CSWfreeradius += CSWperl +CHECKPKG_OVERRIDES_CSWfreeradius += missing-dependency|CSWperl + +# Put libraries (including all of the modules) in /opt/csw/lib/freeradius +libdir = $(abspath $(libdir_install)/$(GARNAME)/$(MM_LIBDIR)) + +# Put the config in the recommended /etc/opt/csw tree +sysconfdir = /etc$(prefix) +raddbdir = $(sysconfdir)/raddb +# move all of the var stuff to /var/opt/csw +localstatedir = /var$(prefix) + CONFIGURE_ARGS = $(DIRPATHS) CONFIGURE_ARGS += CC=$(CC) CXX=$(CXX) F77=$(F77) FC=$(FC) CONFIGURE_ARGS += CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CONFIGURE_ARGS += CPPFLAGS="$(CPPFLAGS)" FCFLAGS="$(FCFLAGS)" CONFIGURE_ARGS += LDFLAGS="$(LDFLAGS)" +#CONFIGURE_ARGS += MYSQL_CONFIG=/opt/csw/mysql5/bin/$(ISA)/mysql_config CONFIGURE_ARGS += --with-system-libtool CONFIGURE_ARGS += --with-system-libltld -CONFIGURE_ARGS += --without-rlm_sqlippool -CONFIGURE_ARGS += --with-rlm_sql_mysql -CONFIGURE_ARGS += --without-rlm_sql_postgresql -CONFIGURE_ARGS += --without-rlm_sql_db2 +CONFIGURE_ARGS += --with-raddbdir=$(raddbdir) +CONFIGURE_ARGS += --enable-ltdl-install=no +CONFIGURE_ARGS += --enable-strict-dependencies +CONFIGURE_ARGS += --enable-developer +CONFIGURE_ARGS += --with-large-files --with-updfromto --with-edir CONFIGURE_ARGS += --without-rlm_sql_firebird CONFIGURE_ARGS += --without-rlm_sql_freetds CONFIGURE_ARGS += --without-rlm_sql_iodbc CONFIGURE_ARGS += --without-rlm_sql_oracle CONFIGURE_ARGS += --without-rlm_sql_sybase -CONFIGURE_ARGS += --with-rlm_sql_unixodbc -CONFIGURE_ARGS += --with-rlm-ldap +CONFIGURE_ARGS += --without-rlm_sql_db2 CONFIGURE_ARGS += --without-rlm_eap_ikev2 -CONFIGURE_ARGS += --without-rlm_eap_sim -CONFIGURE_ARGS += --with-rlm_eap_tls -CONFIGURE_ARGS += --without-rlm_eap_peap -CONFIGURE_ARGS += --without-rlm_eap_ttls +CONFIGURE_ARGS += --without-rlm_sql_unixodbc CONFIGURE_ARGS += --without-rlm_eap_tnc -CONFIGURE_ARGS += --with-rlm_krb5 -CONFIGURE_ARGS += --without-rlm_dbm -CONFIGURE_ARGS += --without-rlm_otp -CONFIGURE_ARGS += --with-rlm_pam -CONFIGURE_ARGS += --with-rlm_python -CONFIGURE_ARGS += --with-snmp -CONFIGURE_ARGS += --with-rlm_counter-include-dir=/opt/csw/include -CONFIGURE_ARGS += --with-rlm_counter-lib-dir=/opt/csw/lib/$(MM_LIBDIR) +## Disabling Postgresql because it's going to take a bunch of weird +## Makefile hackery of these non-automake Makefiles to get the RPATH right +#BUILD_DEP_PKGS += CSWpostgresql +#rlm_pgsql_lib = $(shell /opt/csw/postgresql/bin/$(ISA)/pg_config --libdir) +#rlm_pgsql_inc = $(shell /opt/csw/postgresql/bin/$(ISA)/pg_config --includedir) +#CONFIGURE_ARGS += --with-rlm_sql_postgresql_lib_dir=$(rlm_pgsql_lib) +#CONFIGURE_ARGS += --with-rlm_sql_postgresql_include_dir=$(rlm_pgsql_inc) +CONFIGURE_ARGS += --without-rlm_sql_postgresql + +## Disabling MySQL because it's going to take a bunch of weird +## Makefile hackery of these non-automake Makefiles to get the RPATH right +#BUILD_DEP_PKGS += CSWmysql5devel +#CONFIGURE_ARGS += --with-mysql-lib-dir=/opt/csw/mysql5/lib/$(ISA)/mysql +#CONFIGURE_ARGS += --with-mysql-include-dir=/opt/csw/mysql5/include +CONFIGURE_ARGS += --without-rlm_sql_mysql + +## Disabling Perl due to linker issues and weird makefiles +#rlm_perl_inc = $(shell /opt/csw/bin/perl -e 'use Config; print "$$Config{archlib}\n"')/CORE +#CONFIGURE_ARGS += --with-rlm_perl_include_dir=$(rlm_perl_inc) +CONFIGURE_ARGS += --without-rlm_perl + # No tests available TEST_TARGET = This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From rthurner at users.sourceforge.net Sat Dec 4 16:34:23 2010 From: rthurner at users.sourceforge.net (rthurner at users.sourceforge.net) Date: Sat, 04 Dec 2010 15:34:23 +0000 Subject: [csw-devel] SF.net SVN: gar:[11778] csw/mgar/pkg/subversion/trunk Message-ID: Revision: 11778 http://gar.svn.sourceforge.net/gar/?rev=11778&view=rev Author: rthurner Date: 2010-12-04 15:34:23 +0000 (Sat, 04 Dec 2010) Log Message: ----------- subversion: upgrade to svn-1.6.15 Modified Paths: -------------- csw/mgar/pkg/subversion/trunk/Makefile csw/mgar/pkg/subversion/trunk/checksums Modified: csw/mgar/pkg/subversion/trunk/Makefile =================================================================== --- csw/mgar/pkg/subversion/trunk/Makefile 2010-12-04 00:35:42 UTC (rev 11777) +++ csw/mgar/pkg/subversion/trunk/Makefile 2010-12-04 15:34:23 UTC (rev 11778) @@ -22,7 +22,7 @@ # http://subversion.apache.org/mailing-lists.html GARNAME = subversion -GARVERSION = 1.6.13 +GARVERSION = 1.6.15 CATEGORIES = utils DESCRIPTION = Version control rethought Modified: csw/mgar/pkg/subversion/trunk/checksums =================================================================== --- csw/mgar/pkg/subversion/trunk/checksums 2010-12-04 00:35:42 UTC (rev 11777) +++ csw/mgar/pkg/subversion/trunk/checksums 2010-12-04 15:34:23 UTC (rev 11778) @@ -1 +1 @@ -7ae1c827689f21cf975804005be30aeb subversion-1.6.13.tar.bz2 +113fca1d9e4aa389d7dc2b210010fa69 subversion-1.6.15.tar.bz2 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bonivart at users.sourceforge.net Sat Dec 4 17:26:50 2010 From: bonivart at users.sourceforge.net (bonivart at users.sourceforge.net) Date: Sat, 04 Dec 2010 16:26:50 +0000 Subject: [csw-devel] SF.net SVN: gar:[11779] csw/mgar/pkg/lzop/trunk Message-ID: Revision: 11779 http://gar.svn.sourceforge.net/gar/?rev=11779&view=rev Author: bonivart Date: 2010-12-04 16:26:49 +0000 (Sat, 04 Dec 2010) Log Message: ----------- lzop: update to 1.03 Modified Paths: -------------- csw/mgar/pkg/lzop/trunk/Makefile csw/mgar/pkg/lzop/trunk/checksums Modified: csw/mgar/pkg/lzop/trunk/Makefile =================================================================== --- csw/mgar/pkg/lzop/trunk/Makefile 2010-12-04 15:34:23 UTC (rev 11778) +++ csw/mgar/pkg/lzop/trunk/Makefile 2010-12-04 16:26:49 UTC (rev 11779) @@ -1,16 +1,16 @@ GARNAME = lzop -GARVERSION = 1.02 -RELEASE = rc1 -DISTVERSION = $(GARVERSION)$(RELEASE) -DISTNAME = $(GARNAME)-$(DISTVERSION) +GARVERSION = 1.03 +#RELEASE = rc1 +#DISTVERSION = $(GARVERSION)$(RELEASE) +#DISTNAME = $(GARNAME)-$(DISTVERSION) CATEGORIES = utils DESCRIPTION = LZO file compressor define BLURB - lzop is a file compressor which is very similar to gzip. lzop uses the LZO data - compression library for compression services, and its main advantages over gzip are - much higher compression and decompression speed (at the cost of some compression - ratio). + lzop is a file compressor which is very similar to gzip. lzop uses the LZO + data compression library for compression services, and its main advantages + over gzip are much higher compression and decompression speed (at the cost + of some compression ratio). endef MASTER_SITES = http://www.lzop.org/download/ @@ -34,7 +34,7 @@ include gar/category.mk -SPKG_REVSTAMP := $(SPKG_REVSTAMP)_rev=$(RELEASE) +#SPKG_REVSTAMP := $(SPKG_REVSTAMP)_rev=$(RELEASE) DOCS = AUTHORS NEWS README THANKS doc/magic DOCDEST = $(DESTDIR)$(docdir)/$(GARNAME) Modified: csw/mgar/pkg/lzop/trunk/checksums =================================================================== --- csw/mgar/pkg/lzop/trunk/checksums 2010-12-04 15:34:23 UTC (rev 11778) +++ csw/mgar/pkg/lzop/trunk/checksums 2010-12-04 16:26:49 UTC (rev 11779) @@ -1 +1 @@ -4b999030716b1353c3dac049b269df7a download/lzop-1.02rc1.tar.gz +006c5e27fb78cdd14a628fdfa5aa1905 lzop-1.03.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From rthurner at users.sourceforge.net Sat Dec 4 18:08:59 2010 From: rthurner at users.sourceforge.net (rthurner at users.sourceforge.net) Date: Sat, 04 Dec 2010 17:08:59 +0000 Subject: [csw-devel] SF.net SVN: gar:[11780] csw/mgar/pkg/neon/trunk Message-ID: Revision: 11780 http://gar.svn.sourceforge.net/gar/?rev=11780&view=rev Author: rthurner Date: 2010-12-04 17:08:59 +0000 (Sat, 04 Dec 2010) Log Message: ----------- neon: upgrade to 0.29.5 Modified Paths: -------------- csw/mgar/pkg/neon/trunk/Makefile csw/mgar/pkg/neon/trunk/checksums Modified: csw/mgar/pkg/neon/trunk/Makefile =================================================================== --- csw/mgar/pkg/neon/trunk/Makefile 2010-12-04 16:26:49 UTC (rev 11779) +++ csw/mgar/pkg/neon/trunk/Makefile 2010-12-04 17:08:59 UTC (rev 11780) @@ -1,9 +1,9 @@ GARNAME = neon -GARVERSION = 0.29.4 +GARVERSION = 0.29.5 CATEGORIES = lib EXTRA_MODULATORS = GARVERSION FEATURES -MODULATIONS_GARVERSION = 0.26.4 0.29.4 +MODULATIONS_GARVERSION = 0.26.4 0.29.5 MODULATIONS_FEATURES = minimal full DESCRIPTION = Neon HTTP and WebDAV client library @@ -56,7 +56,7 @@ INSTALL_OVERRIDE_VARS = docdir INSTALL_OVERRIDE_VAR_docdir = $(datadir)/doc/neon -# isa-sparcv8-garversion-0.26.4-features-minimal isa-sparcv8-garversion-0.26.4-features-full isa-sparcv8-garversion-0.29.4-features-minimal isa-sparcv8-garversion-0.29.4-features-full isa-sparcv9-garversion-0.26.4-features-minimal isa-sparcv9-garversion-0.26.4-features-full isa-sparcv9-garversion-0.29.4-features-minimal isa-sparcv9-garversion-0.29.4-features-full +# isa-sparcv8-garversion-0.26.4-features-minimal isa-sparcv8-garversion-0.26.4-features-full isa-sparcv8-garversion-0.29.5-features-minimal isa-sparcv8-garversion-0.29.5-features-full isa-sparcv9-garversion-0.26.4-features-minimal isa-sparcv9-garversion-0.26.4-features-full isa-sparcv9-garversion-0.29.5-features-minimal isa-sparcv9-garversion-0.29.5-features-full # We select pkgconfig for minimal library bindings. As libneon is self-contained (links # to all necessary libs directly) the full version can simly be linked in. @@ -78,13 +78,13 @@ MERGE_SCRIPTS_isa-default64-garversion-0.26.4-features-full = copy-relocated-only MERGE_DIRS_isa-default64-garversion-0.26.4-features-full = $(libdir) -MERGE_SCRIPTS_isa-default-garversion-0.29.4-features-minimal = copy-all -MERGE_SCRIPTS_isa-default64-garversion-0.29.4-features-minimal = copy-relocated-only -MERGE_DIRS_isa-default64-garversion-0.29.4-features-minimal = $(bindir) $(sbindir) $(libexecdir) $(libdir) -MERGE_SCRIPTS_isa-default-garversion-0.29.4-features-full = copy-only -MERGE_DIRS_isa-default-garversion-0.29.4-features-full = $(libdir) -MERGE_SCRIPTS_isa-default64-garversion-0.29.4-features-full = copy-relocated-only -MERGE_DIRS_isa-default64-garversion-0.29.4-features-full = $(libdir) +MERGE_SCRIPTS_isa-default-garversion-0.29.5-features-minimal = copy-all +MERGE_SCRIPTS_isa-default64-garversion-0.29.5-features-minimal = copy-relocated-only +MERGE_DIRS_isa-default64-garversion-0.29.5-features-minimal = $(bindir) $(sbindir) $(libexecdir) $(libdir) +MERGE_SCRIPTS_isa-default-garversion-0.29.5-features-full = copy-only +MERGE_DIRS_isa-default-garversion-0.29.5-features-full = $(libdir) +MERGE_SCRIPTS_isa-default64-garversion-0.29.5-features-full = copy-relocated-only +MERGE_DIRS_isa-default64-garversion-0.29.5-features-full = $(libdir) EXTRA_LINKER_FLAGS = -lintl Modified: csw/mgar/pkg/neon/trunk/checksums =================================================================== --- csw/mgar/pkg/neon/trunk/checksums 2010-12-04 16:26:49 UTC (rev 11779) +++ csw/mgar/pkg/neon/trunk/checksums 2010-12-04 17:08:59 UTC (rev 11780) @@ -1,2 +1,2 @@ 2d11fff51ffa856fc6b5d4bd801d6cc4 neon-0.26.4.tar.gz -29438dbdaee84db2d7fbc73248a92d93 neon-0.29.4.tar.gz +ff369e69ef0f0143beb5626164e87ae2 neon-0.29.5.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sat Dec 4 19:25:13 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sat, 04 Dec 2010 18:25:13 +0000 Subject: [csw-devel] SF.net SVN: gar:[11781] csw/mgar/pkg/apache2/trunk/files/cswapache2 Message-ID: Revision: 11781 http://gar.svn.sourceforge.net/gar/?rev=11781&view=rev Author: bdwalton Date: 2010-12-04 18:25:12 +0000 (Sat, 04 Dec 2010) Log Message: ----------- apache2: update init script for moved config files Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/cswapache2 Modified: csw/mgar/pkg/apache2/trunk/files/cswapache2 =================================================================== --- csw/mgar/pkg/apache2/trunk/files/cswapache2 2010-12-04 17:08:59 UTC (rev 11780) +++ csw/mgar/pkg/apache2/trunk/files/cswapache2 2010-12-04 18:25:12 UTC (rev 11781) @@ -12,9 +12,9 @@ #RC_SLEV 3 #FMRI network -APACHE_HOME=/opt/csw/apache2 -CONF_FILE=$APACHE_HOME/etc/httpd.conf -APACHECTL=$APACHE_HOME/sbin/apachectl +CONF_FILE=/etc/opt/csw/apache2/httpd.conf +APACHECTL=/opt/csw/apache2/sbin/apachectl +SERVERCRT=/etc/opt/csw/apache2/server.crt [ ! -f "$CONF_FILE" ] && exit 0 [ ! -x "$APACHECTL" ] && exit 0 @@ -22,7 +22,7 @@ case "$1" in start) cmd=$1 - if [ -f "$APACHE_HOME/etc/server.crt" ]; then + if [ -f "$SERVERCRT" ]; then cmd="$cmd -DSSL" fi ;; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sun Dec 5 03:40:24 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sun, 05 Dec 2010 02:40:24 +0000 Subject: [csw-devel] SF.net SVN: gar:[11782] csw/mgar/pkg/apache2/trunk/Makefile Message-ID: Revision: 11782 http://gar.svn.sourceforge.net/gar/?rev=11782&view=rev Author: bdwalton Date: 2010-12-05 02:40:24 +0000 (Sun, 05 Dec 2010) Log Message: ----------- apache2: no use for running buildconf any more and it breaks on the new libtool anyway; put some of the ssl cert stuff back in to handle migration for existing installs Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/Makefile Modified: csw/mgar/pkg/apache2/trunk/Makefile =================================================================== --- csw/mgar/pkg/apache2/trunk/Makefile 2010-12-04 18:25:12 UTC (rev 11781) +++ csw/mgar/pkg/apache2/trunk/Makefile 2010-12-05 02:40:24 UTC (rev 11782) @@ -198,7 +198,7 @@ PKGFILES_CSWap2worker = .*share/doc/ap2_worker.* .*sbin/httpd.worker PKGFILES_CSWapache2rt = .*share/doc/apache2rt.* -PROTOTYPE_FILTER = gawk '$$$$3 ~ /etc\/opt\/csw\/apache2/ && $$$$1 == "f" && $$$$3 !~ /CSW/ && $$$$3 !~ /original/ {$$$$1 = "e"; $$$$2 = "build"}; {print}' +PROTOTYPE_FILTER = gawk '$$$$3 ~ /etc\/opt\/csw\/apache2/ && $$$$1 == "f" && $$$$3 !~ /CSW/ && $$$$3 !~ /original/ {$$$$1 = "e"; $$$$2 = "build"}; $$$$3 ~ /ssl_cert_migration.CSW/ {$$$$1 = "e"; $$$$2 = "build"}; {print}' include gar/category.mk @@ -208,12 +208,10 @@ FIXCONFIG_RMPATHS = $(DESTDIR) pre-configure-modulated: - (cd $(WORKDIR)/$(GARNAME)-$(GARVERSION); ./buildconf) @gsed -e s,INSTALL_PREFIX,$(prefix)/apache2,g \ $(WORKDIR)/config.layout > $(WORKDIR)/$(GARNAME)-$(GARVERSION)/config.layout @$(MAKECOOKIE) - post-install-modulated: rename-httpd copy-local-files copy-readmes copy-readmes: @@ -248,5 +246,6 @@ echo "...$$f"; \ mv $$f $$f.CSW; \ $(abspath $(FILEDIR))/build_cas_template $$f > $$f; \ + $(abspath $(FILEDIR))/ssl_cas_template server.crt > ssl_cert_migration.CSW; \ done ) @$(MAKECOOKIE) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sun Dec 5 04:22:39 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sun, 05 Dec 2010 03:22:39 +0000 Subject: [csw-devel] SF.net SVN: gar:[11783] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11783 http://gar.svn.sourceforge.net/gar/?rev=11783&view=rev Author: bdwalton Date: 2010-12-05 03:22:39 +0000 (Sun, 05 Dec 2010) Log Message: ----------- apache2: apply further path modifications in config files during migration Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-05 02:40:24 UTC (rev 11782) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-05 03:22:39 UTC (rev 11783) @@ -27,6 +27,9 @@ # ensure we use the config files from the new location perl -pi \ -e "s/etc\//\/etc\/opt\/csw\/apache2\//" \$NEW_CONF_FILE + + perl -pi \ + -e "s/\/opt\/csw\/apache2\/\/etc\/opt/\/etc\/opt\/csw\/apache2\//" \$NEW_CONF_FILE else # so, we're not an existing or 'needs migration' install, we must # install from the templates. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sun Dec 5 04:23:14 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sun, 05 Dec 2010 03:23:14 +0000 Subject: [csw-devel] SF.net SVN: gar:[11784] csw/mgar/pkg/apache2/trunk/files/ssl_cas_template Message-ID: Revision: 11784 http://gar.svn.sourceforge.net/gar/?rev=11784&view=rev Author: bdwalton Date: 2010-12-05 03:23:14 +0000 (Sun, 05 Dec 2010) Log Message: ----------- apache2: add a script that will handle migrating server.{crt,key} using the build CAS Added Paths: ----------- csw/mgar/pkg/apache2/trunk/files/ssl_cas_template Added: csw/mgar/pkg/apache2/trunk/files/ssl_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/ssl_cas_template (rev 0) +++ csw/mgar/pkg/apache2/trunk/files/ssl_cas_template 2010-12-05 03:23:14 UTC (rev 11784) @@ -0,0 +1,43 @@ +#!/bin/sh + +PIR=${PKG_INSTALL_ROOT:-/} +AP2_DIR=/opt/csw/apache2 +AP2_CONF=$PIR/etc/opt/csw/apache2 +OLD_CONF=$PIR/$AP2_DIR/etc + +NEW_CERT_FILE=$AP2_CONF/server.crt +NEW_KEY_FILE=$AP2_CONF/server.key +OLD_CERT_FILE=$OLD_CONF/server.crt +OLD_KEY_FILE=$OLD_CONF/server.key + +if [ "$1" = install ]; then + if [ -f "$NEW_CERT_FILE" ]; then + echo "SSL key files in place already. Doing nothing." >&2 + elif [ -f "$OLD_CERT_FILE" ]; then + # migrate old files. + echo "Importing old SSL files from /opt/csw/apache2/etc." >&2 + cp -p $OLD_CERT_FILE $NEW_CERT_FILE + cp -p $OLD_KEY_FILE $NEW_KEY_FILE + else + echo Generating dummy ssl key and certificate... >&2 + # this is likely overkill for a dummy cert, but why not + cat </dev/null 2>&1 +TS +Westfarthing +Hobbiton + + +`hostname` +bilbo at example.net + + +EOF + chown root:bin $NEW_CERT_FILE $NEW_KEY_FILE + fi + + cat < Revision: 11785 http://gar.svn.sourceforge.net/gar/?rev=11785&view=rev Author: bdwalton Date: 2010-12-05 03:24:05 +0000 (Sun, 05 Dec 2010) Log Message: ----------- apache2: fix the post-merge addition of the ssl_cert_migration handler Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/Makefile Modified: csw/mgar/pkg/apache2/trunk/Makefile =================================================================== --- csw/mgar/pkg/apache2/trunk/Makefile 2010-12-05 03:23:14 UTC (rev 11784) +++ csw/mgar/pkg/apache2/trunk/Makefile 2010-12-05 03:24:05 UTC (rev 11785) @@ -246,6 +246,6 @@ echo "...$$f"; \ mv $$f $$f.CSW; \ $(abspath $(FILEDIR))/build_cas_template $$f > $$f; \ - $(abspath $(FILEDIR))/ssl_cas_template server.crt > ssl_cert_migration.CSW; \ - done ) + done; \ + cp $(abspath $(FILEDIR))/ssl_cas_template ssl_cert_migration.CSW ) @$(MAKECOOKIE) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From rthurner at users.sourceforge.net Sun Dec 5 09:27:13 2010 From: rthurner at users.sourceforge.net (rthurner at users.sourceforge.net) Date: Sun, 05 Dec 2010 08:27:13 +0000 Subject: [csw-devel] SF.net SVN: gar:[11786] csw/mgar/pkg Message-ID: Revision: 11786 http://gar.svn.sourceforge.net/gar/?rev=11786&view=rev Author: rthurner Date: 2010-12-05 08:27:13 +0000 (Sun, 05 Dec 2010) Log Message: ----------- neon: try a version specific package Added Paths: ----------- csw/mgar/pkg/neon29/ csw/mgar/pkg/neon29/branches/ csw/mgar/pkg/neon29/tags/ csw/mgar/pkg/neon29/trunk/ csw/mgar/pkg/neon29/trunk/Makefile csw/mgar/pkg/neon29/trunk/checksums csw/mgar/pkg/neon29/trunk/files/ Property changes on: csw/mgar/pkg/neon29/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/neon29/trunk/Makefile =================================================================== --- csw/mgar/pkg/neon29/trunk/Makefile (rev 0) +++ csw/mgar/pkg/neon29/trunk/Makefile 2010-12-05 08:27:13 UTC (rev 11786) @@ -0,0 +1,30 @@ +GARNAME = neon29 +GARVERSION = 0.29.5 +DISTNAME = neon-$(GARVERSION) +CATEGORIES = lib + +DESCRIPTION = Neon HTTP and WebDAV client library +define BLURB + neon is an HTTP and WebDAV client library for Unix systems, with a C language + API. It provides high-level interfaces to HTTP/1.1 and WebDAV methods, and a + low-level interface to HTTP request/response handling, allowing new methods to + be easily implemented. +endef + +MASTER_SITES = http://www.webdav.org/neon/ +DISTFILES = $(DISTNAME).tar.gz + +DEP_PKGS = CSWexpat CSWosslrt CSWzlib CSWggettextrt CSWpakchois CSWlibproxy CSWkrb5lib + +# We define upstream file regex so we can be notifed of new upstream software release +UFILES_REGEX = $(DISTNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_ARGS = $(DIRPATHS) +CONFIGURE_ARGS += --enable-shared --disable-static +CONFIGURE_ARGS += --with-ssl=openssl +CONFIGURE_ARGS += --with-expat +CONFIGURE_ARGS = --with-libproxy --with-packchois + +TEST_TARGET = check + +include gar/category.mk Property changes on: csw/mgar/pkg/neon29/trunk/Makefile ___________________________________________________________________ Added: svn:keywords + Id Added: csw/mgar/pkg/neon29/trunk/checksums =================================================================== --- csw/mgar/pkg/neon29/trunk/checksums (rev 0) +++ csw/mgar/pkg/neon29/trunk/checksums 2010-12-05 08:27:13 UTC (rev 11786) @@ -0,0 +1 @@ +ff369e69ef0f0143beb5626164e87ae2 neon-0.29.5.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From rthurner at users.sourceforge.net Sun Dec 5 10:04:17 2010 From: rthurner at users.sourceforge.net (rthurner at users.sourceforge.net) Date: Sun, 05 Dec 2010 09:04:17 +0000 Subject: [csw-devel] SF.net SVN: gar:[11787] csw/mgar/pkg/libneon29/ Message-ID: Revision: 11787 http://gar.svn.sourceforge.net/gar/?rev=11787&view=rev Author: rthurner Date: 2010-12-05 09:04:17 +0000 (Sun, 05 Dec 2010) Log Message: ----------- neon is a library Added Paths: ----------- csw/mgar/pkg/libneon29/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sun Dec 5 14:24:20 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sun, 05 Dec 2010 13:24:20 +0000 Subject: [csw-devel] SF.net SVN: gar:[11788] csw/mgar/pkg/apache2/trunk/files/ssl_cas_template Message-ID: Revision: 11788 http://gar.svn.sourceforge.net/gar/?rev=11788&view=rev Author: bdwalton Date: 2010-12-05 13:24:19 +0000 (Sun, 05 Dec 2010) Log Message: ----------- apache2: force owner/group on ssl key files Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/ssl_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/ssl_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/ssl_cas_template 2010-12-05 09:04:17 UTC (rev 11787) +++ csw/mgar/pkg/apache2/trunk/files/ssl_cas_template 2010-12-05 13:24:19 UTC (rev 11788) @@ -18,6 +18,7 @@ echo "Importing old SSL files from /opt/csw/apache2/etc." >&2 cp -p $OLD_CERT_FILE $NEW_CERT_FILE cp -p $OLD_KEY_FILE $NEW_KEY_FILE + chown root:bin $NEW_CERT_FILE $NEW_KEY_FILE else echo Generating dummy ssl key and certificate... >&2 # this is likely overkill for a dummy cert, but why not @@ -32,9 +33,8 @@ EOF - chown root:bin $NEW_CERT_FILE $NEW_KEY_FILE + chown root:bin $NEW_CERT_FILE $NEW_KEY_FILE fi - cat < Revision: 11789 http://gar.svn.sourceforge.net/gar/?rev=11789&view=rev Author: rthurner Date: 2010-12-05 17:31:22 +0000 (Sun, 05 Dec 2010) Log Message: ----------- update home dir Modified Paths: -------------- csw/mgar/pkg/bdb51/trunk/Makefile csw/mgar/pkg/kdesdk/trunk/checksums csw/mgar/pkg/maven3/trunk/Makefile Removed Paths: ------------- csw/mgar/pkg/neon29/ Modified: csw/mgar/pkg/bdb51/trunk/Makefile =================================================================== --- csw/mgar/pkg/bdb51/trunk/Makefile 2010-12-05 13:24:19 UTC (rev 11788) +++ csw/mgar/pkg/bdb51/trunk/Makefile 2010-12-05 17:31:22 UTC (rev 11789) @@ -52,14 +52,19 @@ PACKAGES = CSWbdb51 CSWbdb51devel CSWbdb51doc CATALOGNAME_CSWbdb51 = berkeleydb51 +SPKG_DESC_CSWbdb51 = BerkeleyDB 5.1 embedded database libraries and utilities +RUNTIME_DEP_PKGS_CSWbdb51 += CSWbdb51devel + CATALOGNAME_CSWbdb51devel = berkeleydb51_devel +SPKG_DESC_CSWbdb51devel = BerkeleyDB 5.1 development support +PKGFILES_CSWbdb51devel = $(PKGFILES_DEVEL) + CATALOGNAME_CSWbdb51doc = berkeleydb51_doc +SPKG_DESC_CSWbdb51doc = BerkeleyDB 5.1 documentation +PKGFILES_CSWbdb51doc = $(PKGFILES_DOC) ARCHALL_CSWbdb51doc = 1 -SPKG_DESC_CSWbdb51 = BerkeleyDB 5.1 embedded database libraries and utilities -SPKG_DESC_CSWbdb51devel = BerkeleyDB 5.1 development support -SPKG_DESC_CSWbdb51doc = BerkeleyDB 5.1 documentation SPKG_SOURCEURL = http://www.oracle.com/technology/software/products/berkeley-db/db/index.html @@ -73,8 +78,6 @@ # because GAR expects license to be a file instead of a directory EXTRA_MERGE_EXCLUDE_FILES = .*/license.* -PKGFILES_CSWbdb51doc = $(PKGFILES_DOC) -PKGFILES_CSWbdb51devel = $(PKGFILES_DEVEL) include gar/category.mk Modified: csw/mgar/pkg/kdesdk/trunk/checksums =================================================================== --- csw/mgar/pkg/kdesdk/trunk/checksums 2010-12-05 13:24:19 UTC (rev 11788) +++ csw/mgar/pkg/kdesdk/trunk/checksums 2010-12-05 17:31:22 UTC (rev 11789) @@ -1,2 +1,2 @@ -7df8be6b06ba4e25d14ea914ce7e6107 download/CSWkdesdkgcc.gspec -d41d8cd98f00b204e9800998ecf8427e download/CSWkdesdkgcc.depend +248a7a1a7bd0b4cad84e8dd7ffa75145 download/CSWkdesdkgcc.gspec +ad711d1ce09242bd13b73a9a005f3143 download/kdesdk-3.5.10.tar.bz2 Modified: csw/mgar/pkg/maven3/trunk/Makefile =================================================================== --- csw/mgar/pkg/maven3/trunk/Makefile 2010-12-05 13:24:19 UTC (rev 11788) +++ csw/mgar/pkg/maven3/trunk/Makefile 2010-12-05 17:31:22 UTC (rev 11789) @@ -1,6 +1,6 @@ GARNAME = maven3 GARVERSION = 3.0 -CATEGORIES = devel +CATEGORIES = java DESCRIPTION = Java software project management and comprehension tool define BLURB This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From rthurner at users.sourceforge.net Sun Dec 5 18:35:54 2010 From: rthurner at users.sourceforge.net (rthurner at users.sourceforge.net) Date: Sun, 05 Dec 2010 17:35:54 +0000 Subject: [csw-devel] SF.net SVN: gar:[11790] csw/mgar/pkg Message-ID: Revision: 11790 http://gar.svn.sourceforge.net/gar/?rev=11790&view=rev Author: rthurner Date: 2010-12-05 17:35:53 +0000 (Sun, 05 Dec 2010) Log Message: ----------- erlang, try to convert to new gar Added Paths: ----------- csw/mgar/pkg/erlang/ csw/mgar/pkg/erlang/branches/ csw/mgar/pkg/erlang/tags/ csw/mgar/pkg/erlang/trunk/ csw/mgar/pkg/erlang/trunk/Makefile csw/mgar/pkg/erlang/trunk/checksums csw/mgar/pkg/erlang/trunk/files/ Property changes on: csw/mgar/pkg/erlang/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/erlang/trunk/Makefile =================================================================== --- csw/mgar/pkg/erlang/trunk/Makefile (rev 0) +++ csw/mgar/pkg/erlang/trunk/Makefile 2010-12-05 17:35:53 UTC (rev 11790) @@ -0,0 +1,23 @@ +# $Id$ +GARNAME = erlang +GARVERSION = 1.0 +CATEGORIES = category + +DESCRIPTION = Brief description +define BLURB + Long description +endef + +MASTER_SITES = +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz + +# File name regex to get notifications about upstream software releases +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +# If the url used to check for software update is different of MASTER_SITES, then +# uncomment the next line. Otherwise it is set by default to the value of MASTER_SITES +# UPSTREAM_MASTER_SITES = + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk Property changes on: csw/mgar/pkg/erlang/trunk/Makefile ___________________________________________________________________ Added: svn:keywords + Id Added: csw/mgar/pkg/erlang/trunk/checksums =================================================================== This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From rthurner at users.sourceforge.net Sun Dec 5 18:39:59 2010 From: rthurner at users.sourceforge.net (rthurner at users.sourceforge.net) Date: Sun, 05 Dec 2010 17:39:59 +0000 Subject: [csw-devel] SF.net SVN: gar:[11791] csw/mgar/pkg Message-ID: Revision: 11791 http://gar.svn.sourceforge.net/gar/?rev=11791&view=rev Author: rthurner Date: 2010-12-05 17:39:59 +0000 (Sun, 05 Dec 2010) Log Message: ----------- apr-iconv gar first try Added Paths: ----------- csw/mgar/pkg/apr-iconv/ csw/mgar/pkg/apr-iconv/branches/ csw/mgar/pkg/apr-iconv/tags/ csw/mgar/pkg/apr-iconv/trunk/ csw/mgar/pkg/apr-iconv/trunk/Makefile csw/mgar/pkg/apr-iconv/trunk/checksums csw/mgar/pkg/apr-iconv/trunk/files/ Property changes on: csw/mgar/pkg/apr-iconv/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/apr-iconv/trunk/Makefile =================================================================== --- csw/mgar/pkg/apr-iconv/trunk/Makefile (rev 0) +++ csw/mgar/pkg/apr-iconv/trunk/Makefile 2010-12-05 17:39:59 UTC (rev 11791) @@ -0,0 +1,25 @@ +GARNAME = apr-iconv +GARVERSION = 1.2.1 +CATEGORIES = lib + +DESCRIPTION = Apache Portable Runtime Utilities +define BLURB + The mission of the Apache Portable Runtime (APR) project is to create and + maintain software libraries that provide a predictable and consistent + interface to underlying platform-specific implementations. +endef + +MASTER_SITES = http://apache.crihan.fr/dist/apr/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +LICENSE = LICENSE + +# We define upstream file regex so we can be notifed of new upstream software release +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_ARGS = $(DIRPATHS) +CONFIGURE_ARGS += --with-apr=$(prefix)/bin/apr-1-config + +BUILD64 = 1 +STRIP_LIBTOOL = 1 + +include gar/category.mk Property changes on: csw/mgar/pkg/apr-iconv/trunk/Makefile ___________________________________________________________________ Added: svn:keywords + Id Added: csw/mgar/pkg/apr-iconv/trunk/checksums =================================================================== --- csw/mgar/pkg/apr-iconv/trunk/checksums (rev 0) +++ csw/mgar/pkg/apr-iconv/trunk/checksums 2010-12-05 17:39:59 UTC (rev 11791) @@ -0,0 +1 @@ +4a27a1480e6862543396e59c4ffcdeb4 apr-iconv-1.2.1.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From rthurner at users.sourceforge.net Sun Dec 5 18:42:17 2010 From: rthurner at users.sourceforge.net (rthurner at users.sourceforge.net) Date: Sun, 05 Dec 2010 17:42:17 +0000 Subject: [csw-devel] SF.net SVN: gar:[11792] csw/mgar/pkg/gstplugins_bad/trunk/Makefile Message-ID: Revision: 11792 http://gar.svn.sourceforge.net/gar/?rev=11792&view=rev Author: rthurner Date: 2010-12-05 17:42:17 +0000 (Sun, 05 Dec 2010) Log Message: ----------- upgrade version Modified Paths: -------------- csw/mgar/pkg/gstplugins_bad/trunk/Makefile Modified: csw/mgar/pkg/gstplugins_bad/trunk/Makefile =================================================================== --- csw/mgar/pkg/gstplugins_bad/trunk/Makefile 2010-12-05 17:39:59 UTC (rev 11791) +++ csw/mgar/pkg/gstplugins_bad/trunk/Makefile 2010-12-05 17:42:17 UTC (rev 11792) @@ -1,5 +1,5 @@ GARNAME = gst-plugins-bad -GARVERSION = 0.10.17 +GARVERSION = 0.10.20 CATEGORIES = gnome DESCRIPTION = GStreamer plugins (Bad) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sun Dec 5 18:55:13 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sun, 05 Dec 2010 17:55:13 +0000 Subject: [csw-devel] SF.net SVN: gar:[11793] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11793 http://gar.svn.sourceforge.net/gar/?rev=11793&view=rev Author: bdwalton Date: 2010-12-05 17:55:12 +0000 (Sun, 05 Dec 2010) Log Message: ----------- apache2: change the way we update paths for ssl key files during migration Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-05 17:42:17 UTC (rev 11792) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-05 17:55:12 UTC (rev 11793) @@ -24,12 +24,13 @@ \${PIR}/\$AP2_DIR/sbin/update20to22 \$NEW_CONF_FILE >&2 fi + # handle the new path to default ssl key files. + perl -pi \ + -e "s#/opt/csw/apache2/etc/server.crt#/etc/opt/csw/apache2/server.crt#; s#/opt/csw/apache2/etc/server.key#/etc/opt/csw/apache2/server.key#" \$NEW_CONF_FILE + # ensure we use the config files from the new location perl -pi \ -e "s/etc\//\/etc\/opt\/csw\/apache2\//" \$NEW_CONF_FILE - - perl -pi \ - -e "s/\/opt\/csw\/apache2\/\/etc\/opt/\/etc\/opt\/csw\/apache2\//" \$NEW_CONF_FILE else # so, we're not an existing or 'needs migration' install, we must # install from the templates. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Sun Dec 5 23:59:11 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Sun, 05 Dec 2010 22:59:11 +0000 Subject: [csw-devel] SF.net SVN: gar:[11794] csw/mgar/gar/v2/lib/python Message-ID: Revision: 11794 http://gar.svn.sourceforge.net/gar/?rev=11794&view=rev Author: wahwah Date: 2010-12-05 22:59:11 +0000 (Sun, 05 Dec 2010) Log Message: ----------- checkpkg: New check, docdir A package is allowed to have files in /opt/csw/share/doc/, but not in any other directory under /opt/csw/shared/doc. Modified Paths: -------------- csw/mgar/gar/v2/lib/python/package_checks.py csw/mgar/gar/v2/lib/python/package_checks_test.py Modified: csw/mgar/gar/v2/lib/python/package_checks.py =================================================================== --- csw/mgar/gar/v2/lib/python/package_checks.py 2010-12-05 17:55:12 UTC (rev 11793) +++ csw/mgar/gar/v2/lib/python/package_checks.py 2010-12-05 22:59:11 UTC (rev 11794) @@ -1194,6 +1194,22 @@ % (binary_info["soname"], binary_info["base_name"])) +def CheckDocDir(pkg_data, error_mgr, logger, messenger): + pkgname = pkg_data["basic_stats"]["pkgname"] + docpath_re = re.compile(r"/opt/csw/share/doc/(?P[^/]+)/.*") + for pkgmap_entry in pkg_data["pkgmap"]: + if "path" not in pkgmap_entry: continue + if not pkgmap_entry["path"]: continue + m = docpath_re.match(pkgmap_entry["path"]) + if m: + if m.groupdict()["docname"] != pkg_data["basic_stats"]["catalogname"]: + error_mgr.ReportError( + "wrong-docdir", + "expected=/opt/csw/shared/doc/%s/... " + "in-package=%s" + % (pkg_data["basic_stats"]["catalogname"], + pkgmap_entry["path"])) + def CheckSonameMustNotBeEqualToFileNameIfFilenameEndsWithSo( pkg_data, error_mgr, logger, messenger): pass Modified: csw/mgar/gar/v2/lib/python/package_checks_test.py =================================================================== --- csw/mgar/gar/v2/lib/python/package_checks_test.py 2010-12-05 17:55:12 UTC (rev 11793) +++ csw/mgar/gar/v2/lib/python/package_checks_test.py 2010-12-05 22:59:11 UTC (rev 11794) @@ -1431,6 +1431,7 @@ FUNCTION_NAME = 'CheckSharedLibraryNameMustBeAsubstringOfSoname' def CheckpkgTest(self): self.pkg_data = neon_stats[0] + # TODO: Implement this class TestCheckSharedLibraryNameMustBeAsubstringOfSonameGood( @@ -1444,5 +1445,24 @@ 'soname=libneon.so.27 filename=foo.so.1') +class TestCheckDocDir(CheckpkgUnitTestHelper, unittest.TestCase): + FUNCTION_NAME = 'CheckDocDir' + def CheckpkgTest(self): + self.pkg_data = neon_stats[0] + self.pkg_data["pkgmap"].append({ + "class": "none", + "group": "bin", + "line": "", + "mode": '0755', + "path": "/opt/csw/share/doc/alien/license", + "type": "f", + "user": "root" + }) + self.error_mgr_mock.ReportError( + 'wrong-docdir', + 'expected=/opt/csw/shared/doc/neon/... ' + 'in-package=/opt/csw/share/doc/alien/license') + + if __name__ == '__main__': unittest.main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Mon Dec 6 00:15:04 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Sun, 05 Dec 2010 23:15:04 +0000 Subject: [csw-devel] SF.net SVN: gar:[11795] csw/mgar/gar/v2/lib/python/checkpkg.py Message-ID: Revision: 11795 http://gar.svn.sourceforge.net/gar/?rev=11795&view=rev Author: wahwah Date: 2010-12-05 23:15:04 +0000 (Sun, 05 Dec 2010) Log Message: ----------- Merge branch 'master' of file:///home/maciej/public_html/opencsw Modified Paths: -------------- csw/mgar/gar/v2/lib/python/checkpkg.py Modified: csw/mgar/gar/v2/lib/python/checkpkg.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg.py 2010-12-05 22:59:11 UTC (rev 11794) +++ csw/mgar/gar/v2/lib/python/checkpkg.py 2010-12-05 23:15:04 UTC (rev 11795) @@ -616,8 +616,9 @@ def Emulate64BitSymlinks(self, runpath_list): """Need to emulate the 64 -> amd64, 64 -> sparcv9 symlink - Since we don't know the architecture, we'll adding both amd64 and sparcv9. - It should be safe. + Since we don't know the architecture, we are adding both amd64 and + sparcv9. It should be safe - there are other checks that make sure + that right architectures are in the right directories. """ key = tuple(runpath_list) if key not in self.symlink64_cache: @@ -633,15 +634,7 @@ def SanitizeRunpath(self, runpath): if runpath not in self.runpath_sanitize_cache: - new_runpath = runpath - while True: - if new_runpath.endswith("/"): - new_runpath = new_runpath[:-1] - elif "//" in new_runpath: - new_runpath = new_runpath.replace("//", "/") - else: - break - self.runpath_sanitize_cache[runpath] = new_runpath + self.runpath_sanitize_cache[runpath] = os.path.normpath(runpath) return self.runpath_sanitize_cache[runpath] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From jake_goerzen at users.sourceforge.net Mon Dec 6 00:44:28 2010 From: jake_goerzen at users.sourceforge.net (jake_goerzen at users.sourceforge.net) Date: Sun, 05 Dec 2010 23:44:28 +0000 Subject: [csw-devel] SF.net SVN: gar:[11796] csw/mgar/pkg/dovecot/trunk Message-ID: Revision: 11796 http://gar.svn.sourceforge.net/gar/?rev=11796&view=rev Author: jake_goerzen Date: 2010-12-05 23:44:28 +0000 (Sun, 05 Dec 2010) Log Message: ----------- bump version to 1.2.16, depend on CSWsqlite3rt Modified Paths: -------------- csw/mgar/pkg/dovecot/trunk/Makefile csw/mgar/pkg/dovecot/trunk/checksums Modified: csw/mgar/pkg/dovecot/trunk/Makefile =================================================================== --- csw/mgar/pkg/dovecot/trunk/Makefile 2010-12-05 23:15:04 UTC (rev 11795) +++ csw/mgar/pkg/dovecot/trunk/Makefile 2010-12-05 23:44:28 UTC (rev 11796) @@ -5,7 +5,7 @@ # - USERGROUP doesn't work yet, wrong usage? # - /var/run/dovecot instead of /var/opt/csw/run? GARNAME = dovecot -GARVERSION = 1.2.15 +GARVERSION = 1.2.16 CATEGORIES = server DESCRIPTION = Secure IMAP server @@ -34,7 +34,7 @@ SPKG_DESC_CSWdovecot-sieve = Dovecot secure IMAP server sieve plugin RUNTIME_DEP_PKGS_CSWdovecot = CSWosslrt CSWmysql5rt CSWoldaprt CSWlibpq -RUNTIME_DEP_PKGS_CSWdovecot += CSWsasl CSWsqlite3 CSWzlib CSWlibnet +RUNTIME_DEP_PKGS_CSWdovecot += CSWsasl CSWsqlite3rt CSWzlib CSWlibnet RUNTIME_DEP_PKGS_CSWdovecot += CSWbzip2 CSWiconv CSWcswclassutils RUNTIME_DEP_PKGS_CSWdovecot += CSWkrb5lib RUNTIME_DEP_PKGS_CSWdovecot-devel = CSWdovecot Modified: csw/mgar/pkg/dovecot/trunk/checksums =================================================================== --- csw/mgar/pkg/dovecot/trunk/checksums 2010-12-05 23:15:04 UTC (rev 11795) +++ csw/mgar/pkg/dovecot/trunk/checksums 2010-12-05 23:44:28 UTC (rev 11796) @@ -1 +1 @@ -15fe307fe85a87cb7a697655dbab29d0 dovecot-1.2.15.tar.gz +8bbdf4e96e2e0f5749432ca9cb209a38 dovecot-1.2.16.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Mon Dec 6 01:37:39 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Mon, 06 Dec 2010 00:37:39 +0000 Subject: [csw-devel] SF.net SVN: gar:[11797] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11797 http://gar.svn.sourceforge.net/gar/?rev=11797&view=rev Author: bdwalton Date: 2010-12-06 00:37:38 +0000 (Mon, 06 Dec 2010) Log Message: ----------- apache2: handle migration of some var/ paths in existing configs Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-05 23:44:28 UTC (rev 11796) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-06 00:37:38 UTC (rev 11797) @@ -28,6 +28,13 @@ perl -pi \ -e "s#/opt/csw/apache2/etc/server.crt#/etc/opt/csw/apache2/server.crt#; s#/opt/csw/apache2/etc/server.key#/etc/opt/csw/apache2/server.key#" \$NEW_CONF_FILE + # update various uses of the var/ paths. + perl -pi \ + -e "s#"/opt/csw/apache2/var/log/#/var/opt/csw/log/apache2/#" \ + -e "s#\"/opt/csw/apache2/var/#\"/var/opt/csw/apache2/#" \ + -e "s#\"var/log/#\"/var/opt/csw/log/apache2/#" \ + \$NEW_CONF_FILE + # ensure we use the config files from the new location perl -pi \ -e "s/etc\//\/etc\/opt\/csw\/apache2\//" \$NEW_CONF_FILE This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Mon Dec 6 03:15:39 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Mon, 06 Dec 2010 02:15:39 +0000 Subject: [csw-devel] SF.net SVN: gar:[11798] csw/mgar/pkg/apache2/trunk Message-ID: Revision: 11798 http://gar.svn.sourceforge.net/gar/?rev=11798&view=rev Author: bdwalton Date: 2010-12-06 02:15:39 +0000 (Mon, 06 Dec 2010) Log Message: ----------- apache2: handle the index.html file again (accidentally dropped with postinstall script) Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/Makefile Added Paths: ----------- csw/mgar/pkg/apache2/trunk/files/index_cas_template Modified: csw/mgar/pkg/apache2/trunk/Makefile =================================================================== --- csw/mgar/pkg/apache2/trunk/Makefile 2010-12-06 00:37:38 UTC (rev 11797) +++ csw/mgar/pkg/apache2/trunk/Makefile 2010-12-06 02:15:39 UTC (rev 11798) @@ -198,7 +198,7 @@ PKGFILES_CSWap2worker = .*share/doc/ap2_worker.* .*sbin/httpd.worker PKGFILES_CSWapache2rt = .*share/doc/apache2rt.* -PROTOTYPE_FILTER = gawk '$$$$3 ~ /etc\/opt\/csw\/apache2/ && $$$$1 == "f" && $$$$3 !~ /CSW/ && $$$$3 !~ /original/ {$$$$1 = "e"; $$$$2 = "build"}; $$$$3 ~ /ssl_cert_migration.CSW/ {$$$$1 = "e"; $$$$2 = "build"}; {print}' +PROTOTYPE_FILTER = gawk '$$$$3 ~ /etc\/opt\/csw\/apache2/ && $$$$1 == "f" && $$$$3 !~ /CSW/ && $$$$3 !~ /original/ {$$$$1 = "e"; $$$$2 = "build"}; $$$$3 ~ /ssl_cert_migration.CSW/ {$$$$1 = "e"; $$$$2 = "build"}; $$$$3 ~ /index.html.CSW/ {$$$$1 = "e"; $$$$2 = "build"}; {print}' include gar/category.mk @@ -247,5 +247,8 @@ mv $$f $$f.CSW; \ $(abspath $(FILEDIR))/build_cas_template $$f > $$f; \ done; \ - cp $(abspath $(FILEDIR))/ssl_cas_template ssl_cert_migration.CSW ) + cd $(PKGROOT)/opt/csw/apache2/share/htdocs; \ + rm index.html; \ + cp $(abspath $(FILEDIR))/index_cas_template index.html.CSW; \ + cp $(abspath $(FILEDIR))/ssl_cas_template ssl_cert_migration.CSW ) @$(MAKECOOKIE) Added: csw/mgar/pkg/apache2/trunk/files/index_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/index_cas_template (rev 0) +++ csw/mgar/pkg/apache2/trunk/files/index_cas_template 2010-12-06 02:15:39 UTC (rev 11798) @@ -0,0 +1,16 @@ +#!/bin/sh + +PIR=${PKG_INSTALL_ROOT:-/} +INDEX_HTML=${PIR}/opt/csw/apache2/share/htdocs/index.html + + + +if [ "$1" = install ]; then + if [ ! -f "$INDEX_HTML" ]; then + echo "Installing default index.html..." >&2 + echo "

It works!

" > ${INDEX_HTML} + fi + + # create our 'template' version of the file regardless of normal version + echo "

It works!

" +fi This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Mon Dec 6 03:34:24 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Mon, 06 Dec 2010 02:34:24 +0000 Subject: [csw-devel] SF.net SVN: gar:[11799] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11799 http://gar.svn.sourceforge.net/gar/?rev=11799&view=rev Author: bdwalton Date: 2010-12-06 02:34:23 +0000 (Mon, 06 Dec 2010) Log Message: ----------- apache2: collapse several perl calls into one during the config migration Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-06 02:15:39 UTC (rev 11798) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-06 02:34:23 UTC (rev 11799) @@ -25,19 +25,15 @@ fi # handle the new path to default ssl key files. - perl -pi \ - -e "s#/opt/csw/apache2/etc/server.crt#/etc/opt/csw/apache2/server.crt#; s#/opt/csw/apache2/etc/server.key#/etc/opt/csw/apache2/server.key#" \$NEW_CONF_FILE - # update various uses of the var/ paths. + # ensure we use the config files from the new location perl -pi \ - -e "s#"/opt/csw/apache2/var/log/#/var/opt/csw/log/apache2/#" \ + -e "s#/opt/csw/apache2/etc/server.crt#/etc/opt/csw/apache2/server.crt#; s#/opt/csw/apache2/etc/server.key#/etc/opt/csw/apache2/server.key#" \ + -e "s#/opt/csw/apache2/var/log/#/var/opt/csw/log/apache2/#" \ -e "s#\"/opt/csw/apache2/var/#\"/var/opt/csw/apache2/#" \ -e "s#\"var/log/#\"/var/opt/csw/log/apache2/#" \ + -e "s/etc\//\/etc\/opt\/csw\/apache2\//" \ \$NEW_CONF_FILE - - # ensure we use the config files from the new location - perl -pi \ - -e "s/etc\//\/etc\/opt\/csw\/apache2\//" \$NEW_CONF_FILE else # so, we're not an existing or 'needs migration' install, we must # install from the templates. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Mon Dec 6 04:00:26 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Mon, 06 Dec 2010 03:00:26 +0000 Subject: [csw-devel] SF.net SVN: gar:[11800] csw/mgar/pkg/coreutils/trunk/Makefile Message-ID: Revision: 11800 http://gar.svn.sourceforge.net/gar/?rev=11800&view=rev Author: bdwalton Date: 2010-12-06 03:00:26 +0000 (Mon, 06 Dec 2010) Log Message: ----------- coreutils: version bump to 8.7 Modified Paths: -------------- csw/mgar/pkg/coreutils/trunk/Makefile Modified: csw/mgar/pkg/coreutils/trunk/Makefile =================================================================== --- csw/mgar/pkg/coreutils/trunk/Makefile 2010-12-06 02:34:23 UTC (rev 11799) +++ csw/mgar/pkg/coreutils/trunk/Makefile 2010-12-06 03:00:26 UTC (rev 11800) @@ -1,5 +1,5 @@ GARNAME = coreutils -GARVERSION = 8.6 +GARVERSION = 8.7 CATEGORIES = utils # seq has issues related to the handling of long double's with -O2. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Mon Dec 6 04:04:22 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Mon, 06 Dec 2010 03:04:22 +0000 Subject: [csw-devel] SF.net SVN: gar:[11801] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11801 http://gar.svn.sourceforge.net/gar/?rev=11801&view=rev Author: bdwalton Date: 2010-12-06 03:04:22 +0000 (Mon, 06 Dec 2010) Log Message: ----------- apache2: split out two commands to separate -e statements in config migration Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-06 03:00:26 UTC (rev 11800) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-06 03:04:22 UTC (rev 11801) @@ -28,7 +28,8 @@ # update various uses of the var/ paths. # ensure we use the config files from the new location perl -pi \ - -e "s#/opt/csw/apache2/etc/server.crt#/etc/opt/csw/apache2/server.crt#; s#/opt/csw/apache2/etc/server.key#/etc/opt/csw/apache2/server.key#" \ + -e "s#/opt/csw/apache2/etc/server.crt#/etc/opt/csw/apache2/server.crt#" \ + -e s#/opt/csw/apache2/etc/server.key#/etc/opt/csw/apache2/server.key#" \ -e "s#/opt/csw/apache2/var/log/#/var/opt/csw/log/apache2/#" \ -e "s#\"/opt/csw/apache2/var/#\"/var/opt/csw/apache2/#" \ -e "s#\"var/log/#\"/var/opt/csw/log/apache2/#" \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Mon Dec 6 04:15:58 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Mon, 06 Dec 2010 03:15:58 +0000 Subject: [csw-devel] SF.net SVN: gar:[11802] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11802 http://gar.svn.sourceforge.net/gar/?rev=11802&view=rev Author: bdwalton Date: 2010-12-06 03:15:58 +0000 (Mon, 06 Dec 2010) Log Message: ----------- apache2: correct missing quote in configuration migration commands Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-06 03:04:22 UTC (rev 11801) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-06 03:15:58 UTC (rev 11802) @@ -29,7 +29,7 @@ # ensure we use the config files from the new location perl -pi \ -e "s#/opt/csw/apache2/etc/server.crt#/etc/opt/csw/apache2/server.crt#" \ - -e s#/opt/csw/apache2/etc/server.key#/etc/opt/csw/apache2/server.key#" \ + -e "s#/opt/csw/apache2/etc/server.key#/etc/opt/csw/apache2/server.key#" \ -e "s#/opt/csw/apache2/var/log/#/var/opt/csw/log/apache2/#" \ -e "s#\"/opt/csw/apache2/var/#\"/var/opt/csw/apache2/#" \ -e "s#\"var/log/#\"/var/opt/csw/log/apache2/#" \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Mon Dec 6 04:27:58 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Mon, 06 Dec 2010 03:27:58 +0000 Subject: [csw-devel] SF.net SVN: gar:[11803] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11803 http://gar.svn.sourceforge.net/gar/?rev=11803&view=rev Author: bdwalton Date: 2010-12-06 03:27:58 +0000 (Mon, 06 Dec 2010) Log Message: ----------- apache2: use standard s/// instead of s### with less readable \/ in config migration perl scripting Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-06 03:15:58 UTC (rev 11802) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-06 03:27:58 UTC (rev 11803) @@ -28,11 +28,11 @@ # update various uses of the var/ paths. # ensure we use the config files from the new location perl -pi \ - -e "s#/opt/csw/apache2/etc/server.crt#/etc/opt/csw/apache2/server.crt#" \ - -e "s#/opt/csw/apache2/etc/server.key#/etc/opt/csw/apache2/server.key#" \ - -e "s#/opt/csw/apache2/var/log/#/var/opt/csw/log/apache2/#" \ - -e "s#\"/opt/csw/apache2/var/#\"/var/opt/csw/apache2/#" \ - -e "s#\"var/log/#\"/var/opt/csw/log/apache2/#" \ + -e "s/\/opt\/csw\/apache2\/etc\/server.crt/\/etc\/opt\/csw\/apache2\/server.crt/" \ + -e "s/\/opt\/csw\/apache2\/etc\/server.key/\/etc\/opt\/csw\/apache2\/server.key/" \ + -e "s/\/opt\/csw\/apache2\/var\/log\//\/var\/opt\/csw\/log\/apache2\//" \ + -e "s/\"\/opt\/csw\/apache2\/var\//\"\/var\/opt\/csw\/apache2\//" \ + -e "s/\"var\/log\//\"\/var\/opt\/csw\/log\/apache2\//" \ -e "s/etc\//\/etc\/opt\/csw\/apache2\//" \ \$NEW_CONF_FILE else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 14:03:02 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 13:03:02 +0000 Subject: [csw-devel] SF.net SVN: gar:[11804] csw/mgar/pkg/gnuplot/trunk Message-ID: Revision: 11804 http://gar.svn.sourceforge.net/gar/?rev=11804&view=rev Author: dmichelsen Date: 2010-12-06 13:03:02 +0000 (Mon, 06 Dec 2010) Log Message: ----------- gnuplot: Update to 4.4.2 and some minor patching Modified Paths: -------------- csw/mgar/pkg/gnuplot/trunk/Makefile csw/mgar/pkg/gnuplot/trunk/checksums Added Paths: ----------- csw/mgar/pkg/gnuplot/trunk/files/0001-Remove-definition-unclear-why-leaving-it-in-causes-e.patch Modified: csw/mgar/pkg/gnuplot/trunk/Makefile =================================================================== --- csw/mgar/pkg/gnuplot/trunk/Makefile 2010-12-06 03:27:58 UTC (rev 11803) +++ csw/mgar/pkg/gnuplot/trunk/Makefile 2010-12-06 13:03:02 UTC (rev 11804) @@ -1,16 +1,56 @@ GARNAME = gnuplot -GARVERSION = 4.4.0 +GARVERSION = 4.4.2 CATEGORIES = utils DESCRIPTION = The Gnuplot Plotting Utility define BLURB - The Gnuplot Plotting Utility. + The Gnuplot Plotting Utility. endef MASTER_SITES = $(SF_MIRRORS) DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +PATCHFILES = 0001-Remove-definition-unclear-why-leaving-it-in-causes-e.patch + # We define upstream file regex so we can be notifed of new upstream software release UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz +VENDOR_URL = http://www.gnuplot.info/ + +LICENSE = Copyright + +RUNTIME_DEP_PKGS_CSWgnuplot += CSWwxwidgetscommon +RUNTIME_DEP_PKGS_CSWgnuplot += CSWlibatk +RUNTIME_DEP_PKGS_CSWgnuplot += CSWpango +RUNTIME_DEP_PKGS_CSWgnuplot += CSWggettextrt +RUNTIME_DEP_PKGS_CSWgnuplot += CSWpng +RUNTIME_DEP_PKGS_CSWgnuplot += CSWemacscommon +RUNTIME_DEP_PKGS_CSWgnuplot += CSWfconfig +RUNTIME_DEP_PKGS_CSWgnuplot += CSWlibcairo +RUNTIME_DEP_PKGS_CSWgnuplot += CSWiconv +RUNTIME_DEP_PKGS_CSWgnuplot += CSWwxwidgetsgtk2 +RUNTIME_DEP_PKGS_CSWgnuplot += CSWreadline +RUNTIME_DEP_PKGS_CSWgnuplot += CSWgtk2 +RUNTIME_DEP_PKGS_CSWgnuplot += CSWgd +RUNTIME_DEP_PKGS_CSWgnuplot += CSWxpm +RUNTIME_DEP_PKGS_CSWgnuplot += CSWncurses +RUNTIME_DEP_PKGS_CSWgnuplot += CSWlua +RUNTIME_DEP_PKGS_CSWgnuplot += CSWsunmath +RUNTIME_DEP_PKGS_CSWgnuplot += CSWftype2 +RUNTIME_DEP_PKGS_CSWgnuplot += CSWglib2 +RUNTIME_DEP_PKGS_CSWgnuplot += CSWzlib +RUNTIME_DEP_PKGS_CSWgnuplot += CSWjpeg + +BUILD_DEP_PKGS = $(RUNTIME_DEP_PKGS_CSWgnuplot) + +CONFIGURE_ARGS = $(DIRPATHS) + +# Preset value until this is fixed: +# https://sourceforge.net/tracker/?func=detail&aid=3129839&group_id=2055&atid=102055 +CONFIGURE_ARGS += ac_cv_type__Bool=no + +#CONFIGURE_ARGS += --with-texdir= + +TEST_TARGET = check + include gar/category.mk Modified: csw/mgar/pkg/gnuplot/trunk/checksums =================================================================== --- csw/mgar/pkg/gnuplot/trunk/checksums 2010-12-06 03:27:58 UTC (rev 11803) +++ csw/mgar/pkg/gnuplot/trunk/checksums 2010-12-06 13:03:02 UTC (rev 11804) @@ -1 +1 @@ -e708665bd512153ad5c35252fe499059 gnuplot-4.4.0.tar.gz +a4f0dd89f9b9334890464f687ddd9f50 gnuplot-4.4.2.tar.gz Added: csw/mgar/pkg/gnuplot/trunk/files/0001-Remove-definition-unclear-why-leaving-it-in-causes-e.patch =================================================================== --- csw/mgar/pkg/gnuplot/trunk/files/0001-Remove-definition-unclear-why-leaving-it-in-causes-e.patch (rev 0) +++ csw/mgar/pkg/gnuplot/trunk/files/0001-Remove-definition-unclear-why-leaving-it-in-causes-e.patch 2010-12-06 13:03:02 UTC (rev 11804) @@ -0,0 +1,25 @@ +From 0935ad8425969e358de4ba22b7bdf3f0b967b9c9 Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Mon, 6 Dec 2010 13:36:41 +0100 +Subject: [PATCH] Remove definition, unclear why leaving it in causes errors + +--- + src/syscfg.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/syscfg.h b/src/syscfg.h +index 1921f63..83e107e 100644 +--- a/src/syscfg.h ++++ b/src/syscfg.h +@@ -415,7 +415,7 @@ typedef RETSIGTYPE (*sigfunc)__PROTO((void)); + # ifdef __cplusplus + typedef bool _Bool; + # else +-typedef unsigned char _Bool; ++typedef unsigned char _Bool_; + # endif + # endif + # define bool _Bool +-- +1.7.3 + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 14:09:17 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 13:09:17 +0000 Subject: [csw-devel] SF.net SVN: gar:[11805] csw/mgar/pkg/gnuplot/trunk/Makefile Message-ID: Revision: 11805 http://gar.svn.sourceforge.net/gar/?rev=11805&view=rev Author: dmichelsen Date: 2010-12-06 13:09:16 +0000 (Mon, 06 Dec 2010) Log Message: ----------- gnuplot: Don't run interactive tests Modified Paths: -------------- csw/mgar/pkg/gnuplot/trunk/Makefile Modified: csw/mgar/pkg/gnuplot/trunk/Makefile =================================================================== --- csw/mgar/pkg/gnuplot/trunk/Makefile 2010-12-06 13:03:02 UTC (rev 11804) +++ csw/mgar/pkg/gnuplot/trunk/Makefile 2010-12-06 13:09:16 UTC (rev 11805) @@ -51,6 +51,10 @@ #CONFIGURE_ARGS += --with-texdir= +# Make sure we don't run the interactive displays from demo/ +EXTRA_TEST_EXPORTS = DISPLAY +DISPLAY = + TEST_TARGET = check include gar/category.mk This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 14:48:40 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 13:48:40 +0000 Subject: [csw-devel] SF.net SVN: gar:[11806] csw/mgar/pkg/bdb48/trunk Message-ID: Revision: 11806 http://gar.svn.sourceforge.net/gar/?rev=11806&view=rev Author: dmichelsen Date: 2010-12-06 13:48:40 +0000 (Mon, 06 Dec 2010) Log Message: ----------- bdb48: Update to 4.8.30 and current jdk Modified Paths: -------------- csw/mgar/pkg/bdb48/trunk/Makefile csw/mgar/pkg/bdb48/trunk/checksums Modified: csw/mgar/pkg/bdb48/trunk/Makefile =================================================================== --- csw/mgar/pkg/bdb48/trunk/Makefile 2010-12-06 13:09:16 UTC (rev 11805) +++ csw/mgar/pkg/bdb48/trunk/Makefile 2010-12-06 13:48:40 UTC (rev 11806) @@ -1,5 +1,5 @@ GARNAME = db -GARVERSION = 4.8.26 +GARVERSION = 4.8.30 CATEGORIES = lib DESCRIPTION = Berkeley DB 4.8 @@ -83,7 +83,7 @@ LIBS += -lnsl export LIBS -PATH := /usr/jdk1.6.0_07/bin:$(PATH) +PATH := /usr/jdk1.6.0_20/bin:$(PATH) export PATH configure-dist: Modified: csw/mgar/pkg/bdb48/trunk/checksums =================================================================== --- csw/mgar/pkg/bdb48/trunk/checksums 2010-12-06 13:09:16 UTC (rev 11805) +++ csw/mgar/pkg/bdb48/trunk/checksums 2010-12-06 13:48:40 UTC (rev 11806) @@ -1 +1 @@ -3476bac9ec0f3c40729c8a404151d5e3 db-4.8.26.tar.gz +f80022099c5742cd179343556179aa8c db-4.8.30.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 15:06:31 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 14:06:31 +0000 Subject: [csw-devel] SF.net SVN: gar:[11808] csw/mgar/pkg/perl/branches/perl-5.10.1/Makefile Message-ID: Revision: 11808 http://gar.svn.sourceforge.net/gar/?rev=11808&view=rev Author: dmichelsen Date: 2010-12-06 14:06:30 +0000 (Mon, 06 Dec 2010) Log Message: ----------- perl-5.10.1: Fix #4544 (missing DB_File.pm) Modified Paths: -------------- csw/mgar/pkg/perl/branches/perl-5.10.1/Makefile Modified: csw/mgar/pkg/perl/branches/perl-5.10.1/Makefile =================================================================== --- csw/mgar/pkg/perl/branches/perl-5.10.1/Makefile 2010-12-06 13:56:29 UTC (rev 11807) +++ csw/mgar/pkg/perl/branches/perl-5.10.1/Makefile 2010-12-06 14:06:30 UTC (rev 11808) @@ -114,7 +114,13 @@ EXTRA_LIB += $(prefix)/bdb48/lib EXTRA_INC += $(prefix)/bdb48/include -#EXTRA_LDFLAGS = -lperl +# Somehow the CPPFLAGS do not make it into the compile environment. +# Add them explicitly here, otherwise specifically the bdb48/include will +# not make it resulting in db.h not to be found and DB_File.pm not to be built +# as reported here: +# https://www.opencsw.org/mantis/view.php?id=4544 +EXTRA_CFLAGS = $(CPPFLAGS) + EXTRA_LDFLAGS = -L$(libdir) -lperl EXTRA_MERGE_EXCLUDE_FILES = .*\/perllocal.pod @@ -135,6 +141,12 @@ # Do not exclude static libs as at least DynaLoader.a is needed for XS compilation MERGE_EXCLUDE_STATICLIBS = +# No libperl.so splitting for now, this involves many other things and +# therefore very careful planning first. +CHECKPKG_OVERRIDES_CSWperl += shared-lib-package-contains-so-symlink|file=/opt/csw/lib/libperl.so +CHECKPKG_OVERRIDES_CSWperl += shared-lib-pkgname-mismatch|file=opt/csw/lib/libperl.so.5.10.1|soname=libperl.so.5.10.1|pkgname=CSWperl|expected=['CSWlibperl5-10-1'] +CHECKPKG_OVERRIDES_CSWperl += shared-lib-package-contains-so-symlink|file=/opt/csw/lib/libperl.so + include gar/category.mk post-extract-modulated: @@ -149,7 +161,7 @@ # How to configure Perl configure-perl: - @(cd $(WORKSRC) ; $(CONFIGURE_ENV) ./Configure $(CONFIGURE_ARGS) -des) + (cd $(WORKSRC) ; $(CONFIGURE_ENV) ./Configure $(CONFIGURE_ARGS) -des) @$(MAKECOOKIE) # Make links to libperl This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 15:24:44 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 14:24:44 +0000 Subject: [csw-devel] SF.net SVN: gar:[11809] csw/mgar/pkg/perl Message-ID: Revision: 11809 http://gar.svn.sourceforge.net/gar/?rev=11809&view=rev Author: dmichelsen Date: 2010-12-06 14:24:44 +0000 (Mon, 06 Dec 2010) Log Message: ----------- perl: Merge perl-5.10.1 branch to trunk/ Modified Paths: -------------- csw/mgar/pkg/perl/trunk/Makefile csw/mgar/pkg/perl/trunk/checksums Removed Paths: ------------- csw/mgar/pkg/perl/branches/perl-5.10.1/ Property Changed: ---------------- csw/mgar/pkg/perl/trunk/ Property changes on: csw/mgar/pkg/perl/trunk ___________________________________________________________________ Added: svn:mergeinfo + /csw/mgar/pkg/perl/branches/perl-5.10.1:7616-11803 Modified: csw/mgar/pkg/perl/trunk/Makefile =================================================================== --- csw/mgar/pkg/perl/trunk/Makefile 2010-12-06 14:06:30 UTC (rev 11808) +++ csw/mgar/pkg/perl/trunk/Makefile 2010-12-06 14:24:44 UTC (rev 11809) @@ -1,5 +1,5 @@ GARNAME = perl -GARVERSION = 5.8.8 +GARVERSION = 5.10.1 CATEGORIES = lang DESCRIPTION = A high-level, general-purpose programming language @@ -19,41 +19,44 @@ PACKAGES = CSWperl CSWperldoc ARCHALL_CSWperldoc = 1 -RUNTIME_DEP_PKGS_CSWperl = CSWbdb47 CSWgdbm +RUNTIME_DEP_PKGS_CSWperl = CSWbdb48 CSWgdbm RUNTIME_DEP_PKGS_CSWperldoc = CSWperl INCOMPATIBLE_PKGS_CSWperl = CSWperlmods CSWpmdigest CSWpmi18nlangtags + SPKG_DESC_CSWperl = $(DESCRIPTION) SPKG_DESC_CSWperldoc = Perl documentation LICENSE = Copying +CHECKPKG_OVERRIDES_CSWperldoc += surplus-dependency|CSWperl + # Core module updates -MASTER_SITES += $(CPAN_FIRST_MIRROR)/S/SM/SMUELLER/ -CORE_UPDATES += PathTools-3.30 -CORE_OBSOLETE += Cwd.pm File/Spec* auto/Cwd +#MASTER_SITES += $(CPAN_FIRST_MIRROR)/S/SM/SMUELLER/ +#CORE_UPDATES += PathTools-3.30 +#CORE_OBSOLETE += Cwd.pm File/Spec* auto/Cwd -MASTER_SITES += $(CPAN_FIRST_MIRROR)/L/LD/LDS/ -CORE_UPDATES += CGI.pm-3.44 -CORE_OBSOLETE += CGI* +#MASTER_SITES += $(CPAN_FIRST_MIRROR)/L/LD/LDS/ +#CORE_UPDATES += CGI.pm-3.44 +#CORE_OBSOLETE += CGI* -MASTER_SITES += $(CPAN_FIRST_MIRROR)/M/MS/MSCHWERN/ -CORE_UPDATES += Test-Simple-0.92 -CORE_OBSOLETE += Test/Builder* Test/More.pm Test/Simple.pm Test/Tutorial.pm +#MASTER_SITES += $(CPAN_FIRST_MIRROR)/M/MS/MSCHWERN/ +#CORE_UPDATES += Test-Simple-0.92 +#CORE_OBSOLETE += Test/Builder* Test/More.pm Test/Simple.pm Test/Tutorial.pm -MASTER_SITES += $(CPAN_FIRST_MIRROR)/T/TJ/TJENNESS/ -CORE_UPDATES += File-Temp-0.22 -CORE_OBSOLETE += File/Temp.pm +#MASTER_SITES += $(CPAN_FIRST_MIRROR)/T/TJ/TJENNESS/ +#CORE_UPDATES += File-Temp-0.22 +#CORE_OBSOLETE += File/Temp.pm -MASTER_SITES += $(CPAN_FIRST_MIRROR)/G/GB/GBARR/ -CORE_UPDATES += IO-1.25 -CORE_OBSOLETE += IO/Socket* IO/IO* IO/Socket.pm IO/Select.pm IO/Seekable.pm IO/Poll.pm IO/Pipe.pm IO/Handle.pm IO/File.pm IO/Dir.pm IO.pm +#MASTER_SITES += $(CPAN_FIRST_MIRROR)/G/GB/GBARR/ +#CORE_UPDATES += IO-1.25 +#CORE_OBSOLETE += IO/Socket* IO/IO* IO/Socket.pm IO/Select.pm IO/Seekable.pm IO/Poll.pm IO/Pipe.pm IO/Handle.pm IO/File.pm IO/Dir.pm IO.pm -MASTER_SITES += $(CPAN_FIRST_MIRROR)/A/AM/AMS/ -CORE_UPDATES += Storable-2.20 -CORE_OBSOLETE += Storable/* Storable.pm +#MASTER_SITES += $(CPAN_FIRST_MIRROR)/A/AM/AMS/ +#CORE_UPDATES += Storable-2.20 +#CORE_OBSOLETE += Storable/* Storable.pm -MASTER_SITES += $(CPAN_FIRST_MIRROR)/M/MS/MSCHWERN/ -CORE_UPDATES += ExtUtils-MakeMaker-6.54 +#MASTER_SITES += $(CPAN_FIRST_MIRROR)/M/MS/MSCHWERN/ +#CORE_UPDATES += ExtUtils-MakeMaker-6.54 #CORE_OBSOLETE += ExtUtils/* DISTFILES += $(foreach N,$(CORE_UPDATES),$(N).tar.gz) @@ -66,12 +69,10 @@ CONFIGURE_SCRIPTS = perl # Compatable with all prior patch revs -PL_MAJOR = 5.8 -PL_PATCH = 0 2 4 6 7 -INC_COMPAT = $(foreach REV,$(PL_PATCH),$(PL_MAJOR).$(REV)) +INC_COMPAT = 5.8.0 5.8.2 5.8.4 5.8.6 5.8.7 5.8.8 5.10.0 -# Force use of db-4.7 -PERL_LIBS += -lsocket -lnsl -lgdbm -ldb-4.7 -ldl -lm -lpthread -lc -lperl +# Force use of db-4.8 +PERL_LIBS += -lsocket -lnsl -lgdbm -ldb-4.8 -ldl -lm -lpthread -lc -lperl # Configuration flags CONFIGURE_ARGS += -Darchlib=$(libdir)/perl/$(GARVERSION) @@ -102,6 +103,7 @@ CONFIGURE_ARGS += -Duseshrplib CONFIGURE_ARGS += -Dusesitecustomize CONFIGURE_ARGS += -Dusethreads +#CONFIGURE_ARGS += -Dusedtrace CONFIGURE_ARGS += -Dvendorarch=$(libdir)/perl/csw CONFIGURE_ARGS += -Dvendorlib=$(datadir)/perl/csw CONFIGURE_ARGS += -Dvendorprefix=$(prefix) @@ -109,11 +111,11 @@ CONFIGURE_ARGS += -Dlibsdirs=" /usr/lib /opt/csw/lib" CONFIGURE_ARGS += -Dsed=$(bindir)/gsed -EXTRA_LIB += $(prefix)/bdb47/lib -EXTRA_INC += $(prefix)/bdb47/include +EXTRA_LIB += $(prefix)/bdb48/lib +EXTRA_INC += $(prefix)/bdb48/include #EXTRA_LDFLAGS = -lperl -EXTRA_LDFLAGS = -L/opt/csw/lib/libperl.so +EXTRA_LDFLAGS = -L$(libdir) -lperl EXTRA_MERGE_EXCLUDE_FILES = .*\/perllocal.pod PKGFILES_CSWperldoc = .*\/pod\/.*\.pod .*\/man\/man.\/.* @@ -126,10 +128,20 @@ # Tests take a long time TEST_SCRIPTS = +# Make sure we don't include the path to the newly built perl as the +# library is not in place yet. +IGNORE_DESTDIR = 1 + # Do not exclude static libs as at least DynaLoader.a is needed for XS compilation MERGE_EXCLUDE_STATICLIBS = include gar/category.mk + +post-extract-modulated: + mkdir -p $(WORKSRC) + gln -s libperl.so.5.10.1 $(WORKSRC)/libperl.so + @$(MAKECOOKIE) + ifneq ($(CORE_UPDATES),) POST_TARGETS = install-core-updates include files/updatecore.mk Modified: csw/mgar/pkg/perl/trunk/checksums =================================================================== --- csw/mgar/pkg/perl/trunk/checksums 2010-12-06 14:06:30 UTC (rev 11808) +++ csw/mgar/pkg/perl/trunk/checksums 2010-12-06 14:24:44 UTC (rev 11809) @@ -1,8 +1 @@ -d1b217a7a2463d5543d25490ff1b3d14 download/CGI.pm-3.44.tar.gz -003c04b33e8c8eed693f5001fe52b647 download/ExtUtils-MakeMaker-6.54.tar.gz -a7e93cf2015881ded1f22b5b2d0cb391 download/File-Temp-0.22.tar.gz -b88aaf2bb7437725b11e9eb48dfb6c93 download/IO-1.25.tar.gz -18a72d6a66bb62ce9bbb422dfa41181a download/PathTools-3.30.tar.gz -2ba3f963daf86c1172cd7bbbd47891be download/Storable-2.20.tar.gz -eaafa92c9a21c4290dd9d0752bb744b0 download/Test-Simple-0.92.tar.gz -b8c118d4360846829beb30b02a6b91a7 download/perl-5.8.8.tar.gz +b9b2fdb957f50ada62d73f43ee75d044 perl-5.10.1.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 16:20:01 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 15:20:01 +0000 Subject: [csw-devel] SF.net SVN: gar:[11810] csw/mgar/pkg/perl/trunk/Makefile Message-ID: Revision: 11810 http://gar.svn.sourceforge.net/gar/?rev=11810&view=rev Author: dmichelsen Date: 2010-12-06 15:20:00 +0000 (Mon, 06 Dec 2010) Log Message: ----------- perl: Override suggestions to split off libperl.so Modified Paths: -------------- csw/mgar/pkg/perl/trunk/Makefile Modified: csw/mgar/pkg/perl/trunk/Makefile =================================================================== --- csw/mgar/pkg/perl/trunk/Makefile 2010-12-06 14:24:44 UTC (rev 11809) +++ csw/mgar/pkg/perl/trunk/Makefile 2010-12-06 15:20:00 UTC (rev 11810) @@ -135,6 +135,12 @@ # Do not exclude static libs as at least DynaLoader.a is needed for XS compilation MERGE_EXCLUDE_STATICLIBS = +# Splitting of a separate libperl.so requires more work and careful planning. +# Override for now. +CHECKPKG_OVERRIDES_CSWperl += shared-lib-package-contains-so-symlink|file=/opt/csw/lib/libperl.so +CHECKPKG_OVERRIDES_CSWperl += shared-lib-pkgname-mismatch|file=opt/csw/lib/libperl.so.5.10.1|soname=libperl.so.5.10.1|pkgname=CSWperl|expected=['CSWlibperl5-10-1'] +CHECKPKG_OVERRIDES_CSWperl += shared-lib-package-contains-so-symlink|file=/opt/csw/lib/libperl.so + include gar/category.mk post-extract-modulated: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Mon Dec 6 16:21:54 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Mon, 06 Dec 2010 15:21:54 +0000 Subject: [csw-devel] SF.net SVN: gar:[11811] csw/mgar/gar/v2/lib/python/package_checks_test.py Message-ID: Revision: 11811 http://gar.svn.sourceforge.net/gar/?rev=11811&view=rev Author: wahwah Date: 2010-12-06 15:21:53 +0000 (Mon, 06 Dec 2010) Log Message: ----------- checkpkg: A unit test for regular doc files They can be placed outside the /opt/csw/share/doc// directory. Only license files must be there. Modified Paths: -------------- csw/mgar/gar/v2/lib/python/package_checks_test.py Modified: csw/mgar/gar/v2/lib/python/package_checks_test.py =================================================================== --- csw/mgar/gar/v2/lib/python/package_checks_test.py 2010-12-06 15:20:00 UTC (rev 11810) +++ csw/mgar/gar/v2/lib/python/package_checks_test.py 2010-12-06 15:21:53 UTC (rev 11811) @@ -1445,18 +1445,14 @@ 'soname=libneon.so.27 filename=foo.so.1') -class TestCheckDocDir(CheckpkgUnitTestHelper, unittest.TestCase): +class TestCheckDocDirLicense(CheckpkgUnitTestHelper, unittest.TestCase): FUNCTION_NAME = 'CheckDocDir' def CheckpkgTest(self): self.pkg_data = neon_stats[0] self.pkg_data["pkgmap"].append({ - "class": "none", - "group": "bin", - "line": "", - "mode": '0755', + "class": "none", "type": "f", "line": "", + "user": "root", "group": "bin", "mode": '0755', "path": "/opt/csw/share/doc/alien/license", - "type": "f", - "user": "root" }) self.error_mgr_mock.ReportError( 'wrong-docdir', @@ -1464,5 +1460,17 @@ 'in-package=/opt/csw/share/doc/alien/license') +class TestCheckDocDirRandomFile(CheckpkgUnitTestHelper, unittest.TestCase): + "A random file should not trigger the message; only license files." + FUNCTION_NAME = 'CheckDocDir' + def CheckpkgTest(self): + self.pkg_data = neon_stats[0] + self.pkg_data["pkgmap"].append({ + "class": "none", "type": "f", "line": "", + "user": "root", "group": "bin", "mode": '0755', + "path": "/opt/csw/share/doc/alien/random_file", + }) + + if __name__ == '__main__': unittest.main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 14:56:29 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 13:56:29 +0000 Subject: [csw-devel] SF.net SVN: gar:[11807] csw/mgar/pkg/perl/tags Message-ID: Revision: 11807 http://gar.svn.sourceforge.net/gar/?rev=11807&view=rev Author: dmichelsen Date: 2010-12-06 13:56:29 +0000 (Mon, 06 Dec 2010) Log Message: ----------- perl-5.8.8: Adjust tag name Modified Paths: -------------- csw/mgar/pkg/perl/tags/perl-5.8.8,REV_2009.11.12/Makefile csw/mgar/pkg/perl/tags/perl-5.8.8,REV_2009.11.12/files/updatecore.mk Added Paths: ----------- csw/mgar/pkg/perl/tags/perl-5.8.8,REV_2009.11.12/ Removed Paths: ------------- csw/mgar/pkg/perl/tags/perl-5.8.8,REV=2009.11.12/ Modified: csw/mgar/pkg/perl/tags/perl-5.8.8,REV_2009.11.12/Makefile =================================================================== --- csw/mgar/pkg/perl/tags/perl-5.8.8,REV=2009.11.12/Makefile 2010-05-05 02:34:54 UTC (rev 9816) +++ csw/mgar/pkg/perl/tags/perl-5.8.8,REV_2009.11.12/Makefile 2010-12-06 13:56:29 UTC (rev 11807) @@ -58,9 +58,8 @@ DISTFILES += $(foreach N,$(CORE_UPDATES),$(N).tar.gz) -# Dependencies -#LIBDEPS += bdb48/lib -LIBDEPS += lib/gdbm +# Make sure we don't pick up the newly build Perl but rely on the system Perl for GAR operations +IGNORE_DESTDIR = 1 # Custom configure CONFIGURE_SCRIPTS = perl Modified: csw/mgar/pkg/perl/tags/perl-5.8.8,REV_2009.11.12/files/updatecore.mk =================================================================== --- csw/mgar/pkg/perl/tags/perl-5.8.8,REV=2009.11.12/files/updatecore.mk 2010-05-05 02:34:54 UTC (rev 9816) +++ csw/mgar/pkg/perl/tags/perl-5.8.8,REV_2009.11.12/files/updatecore.mk 2010-12-06 13:56:29 UTC (rev 11807) @@ -2,11 +2,11 @@ # Install core updates install-core-updates: remove-obsolete-modules - @for d in "" $(CORE_UPDATES) ; do \ + for d in "" $(CORE_UPDATES) ; do \ test -z "$$d" && continue ; \ echo " ==> Applying core update: $$d" ; \ ( cd $(WORKDIR)/$$d ; \ - $(CONFIGURE_ENV) perl Makefile.PL ; \ + $(CONFIGURE_ENV) LD_LIBRARY_PATH=$(abspath $(WORKSRC)) $(DESTDIR)$(bindir)/perl Makefile.PL ; \ $(BUILD_ENV) make ; \ $(TEST_ENV) make test ; \ $(INSTALL_ENV) make install INSTALLDIRS=perl DESTDIR=$(DESTDIR) ) ; \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 16:38:47 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 15:38:47 +0000 Subject: [csw-devel] SF.net SVN: gar:[11813] csw/mgar/gar/v2/lib/python/package_checks.py Message-ID: Revision: 11813 http://gar.svn.sourceforge.net/gar/?rev=11813&view=rev Author: dmichelsen Date: 2010-12-06 15:38:47 +0000 (Mon, 06 Dec 2010) Log Message: ----------- mGAR v2: Only license needs to be in the package docdir, not the docs themselves Modified Paths: -------------- csw/mgar/gar/v2/lib/python/package_checks.py Modified: csw/mgar/gar/v2/lib/python/package_checks.py =================================================================== --- csw/mgar/gar/v2/lib/python/package_checks.py 2010-12-06 15:26:19 UTC (rev 11812) +++ csw/mgar/gar/v2/lib/python/package_checks.py 2010-12-06 15:38:47 UTC (rev 11813) @@ -1196,7 +1196,7 @@ def CheckDocDir(pkg_data, error_mgr, logger, messenger): pkgname = pkg_data["basic_stats"]["pkgname"] - docpath_re = re.compile(r"/opt/csw/share/doc/(?P[^/]+)/.*") + docpath_re = re.compile(r"/opt/csw/share/doc/(?P[^/]+)/license") for pkgmap_entry in pkg_data["pkgmap"]: if "path" not in pkgmap_entry: continue if not pkgmap_entry["path"]: continue This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 16:39:12 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 15:39:12 +0000 Subject: [csw-devel] SF.net SVN: gar:[11814] csw/mgar/pkg/bdb48/trunk/Makefile Message-ID: Revision: 11814 http://gar.svn.sourceforge.net/gar/?rev=11814&view=rev Author: dmichelsen Date: 2010-12-06 15:39:12 +0000 (Mon, 06 Dec 2010) Log Message: ----------- bdb48: Remove docdir override as this is fixed in checkpkg itself Modified Paths: -------------- csw/mgar/pkg/bdb48/trunk/Makefile Modified: csw/mgar/pkg/bdb48/trunk/Makefile =================================================================== --- csw/mgar/pkg/bdb48/trunk/Makefile 2010-12-06 15:38:47 UTC (rev 11813) +++ csw/mgar/pkg/bdb48/trunk/Makefile 2010-12-06 15:39:12 UTC (rev 11814) @@ -83,9 +83,6 @@ # Compiler run pathes, skip for now. CHECKPKG_OVERRIDES_CSWbdb48 += bad-rpath-entry -# Docs are in a directory named after the main package -CHECKPKG_OVERRIDES_CSWbdb48doc += wrong-docdir - include gar/category.mk LIBS += -lnsl This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 16:26:19 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 15:26:19 +0000 Subject: [csw-devel] SF.net SVN: gar:[11812] csw/mgar/pkg/bdb48/trunk/Makefile Message-ID: Revision: 11812 http://gar.svn.sourceforge.net/gar/?rev=11812&view=rev Author: dmichelsen Date: 2010-12-06 15:26:19 +0000 (Mon, 06 Dec 2010) Log Message: ----------- bdb48: Adjust overrides Modified Paths: -------------- csw/mgar/pkg/bdb48/trunk/Makefile Modified: csw/mgar/pkg/bdb48/trunk/Makefile =================================================================== --- csw/mgar/pkg/bdb48/trunk/Makefile 2010-12-06 15:21:53 UTC (rev 11811) +++ csw/mgar/pkg/bdb48/trunk/Makefile 2010-12-06 15:26:19 UTC (rev 11812) @@ -64,6 +64,8 @@ SPKG_SOURCEURL = http://www.oracle.com/technology/software/products/berkeley-db/db/index.html RUNTIME_DEP_PKGS_CSWbdb48devel = CSWbdb48 +CHECKPKG_OVERRIDES_CSWbdb48devel += surplus-dependency|CSWbdb48 +CHECKPKG_OVERRIDES_CSWbdb48 += missing-dependency|CSWbdb48devel LICENSE = LICENSE @@ -76,8 +78,14 @@ EXTRA_MERGE_EXCLUDE_FILES = .*/license.* PKGFILES_CSWbdb48doc = $(PKGFILES_DOC) -PKGFILES_CSWbdb48devel = $(PKGFILES_DEVEL) +PKGFILES_CSWbdb48devel = $(includedir)/.* +# Compiler run pathes, skip for now. +CHECKPKG_OVERRIDES_CSWbdb48 += bad-rpath-entry + +# Docs are in a directory named after the main package +CHECKPKG_OVERRIDES_CSWbdb48doc += wrong-docdir + include gar/category.mk LIBS += -lnsl This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 17:00:16 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 16:00:16 +0000 Subject: [csw-devel] SF.net SVN: gar:[11815] csw/mgar/pkg/libgpg_error/trunk Message-ID: Revision: 11815 http://gar.svn.sourceforge.net/gar/?rev=11815&view=rev Author: dmichelsen Date: 2010-12-06 16:00:16 +0000 (Mon, 06 Dec 2010) Log Message: ----------- libgpg_error: Update to 1.10 Modified Paths: -------------- csw/mgar/pkg/libgpg_error/trunk/Makefile csw/mgar/pkg/libgpg_error/trunk/checksums Modified: csw/mgar/pkg/libgpg_error/trunk/Makefile =================================================================== --- csw/mgar/pkg/libgpg_error/trunk/Makefile 2010-12-06 15:39:12 UTC (rev 11814) +++ csw/mgar/pkg/libgpg_error/trunk/Makefile 2010-12-06 16:00:16 UTC (rev 11815) @@ -1,5 +1,5 @@ GARNAME = libgpg-error -GARVERSION = 1.9 +GARVERSION = 1.10 CATEGORIES = lib DESCRIPTION = GNU gpg related library @@ -16,7 +16,7 @@ UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.bz2 -SPKG_SOURCEURL = http://www.gnupg.org/download/ +VENDOR_URL = http://www.gnupg.org/download/ RUNTIME_DEP_PKGS = CSWggettextrt Modified: csw/mgar/pkg/libgpg_error/trunk/checksums =================================================================== --- csw/mgar/pkg/libgpg_error/trunk/checksums 2010-12-06 15:39:12 UTC (rev 11814) +++ csw/mgar/pkg/libgpg_error/trunk/checksums 2010-12-06 16:00:16 UTC (rev 11815) @@ -1 +1 @@ -521b98aa9395e7eaf0ef2236233a0796 libgpg-error-1.9.tar.bz2 +736a03daa9dc5873047d4eb4a9c22a16 libgpg-error-1.10.tar.bz2 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Mon Dec 6 18:04:16 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Mon, 06 Dec 2010 17:04:16 +0000 Subject: [csw-devel] SF.net SVN: gar:[11816] csw/mgar/pkg/perl/trunk/Makefile Message-ID: Revision: 11816 http://gar.svn.sourceforge.net/gar/?rev=11816&view=rev Author: dmichelsen Date: 2010-12-06 17:04:16 +0000 (Mon, 06 Dec 2010) Log Message: ----------- perl: Forward-port fix of #4544 Modified Paths: -------------- csw/mgar/pkg/perl/trunk/Makefile Modified: csw/mgar/pkg/perl/trunk/Makefile =================================================================== --- csw/mgar/pkg/perl/trunk/Makefile 2010-12-06 16:00:16 UTC (rev 11815) +++ csw/mgar/pkg/perl/trunk/Makefile 2010-12-06 17:04:16 UTC (rev 11816) @@ -114,7 +114,13 @@ EXTRA_LIB += $(prefix)/bdb48/lib EXTRA_INC += $(prefix)/bdb48/include -#EXTRA_LDFLAGS = -lperl +# Somehow the CPPFLAGS do not make it into the compile environment. +# Add them explicitly here, otherwise specifically the bdb48/include will +# not make it resulting in db.h not to be found and DB_File.pm not to be built +# as reported here: +# https://www.opencsw.org/mantis/view.php?id=4544 +EXTRA_CFLAGS = $(CPPFLAGS) + EXTRA_LDFLAGS = -L$(libdir) -lperl EXTRA_MERGE_EXCLUDE_FILES = .*\/perllocal.pod This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From maciej at opencsw.org Mon Dec 6 18:23:30 2010 From: maciej at opencsw.org (maciej at opencsw.org) Date: Mon, 6 Dec 2010 18:23:30 +0100 Subject: [csw-devel] [PATCH] mGAR v2: Checking packages against 'current' Message-ID: <1291656210-20510-1-git-send-email-maciej@opencsw.org> From: Maciej Blizinski Defining CATALOG_RELEASE and setting it to 'current' by default. This means that packages will be checked against the current branch by default. --- gar/v2/gar.pkg.mk | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/gar/v2/gar.pkg.mk b/gar/v2/gar.pkg.mk index 296e73f..fd7c5d4 100644 --- a/gar/v2/gar.pkg.mk +++ b/gar/v2/gar.pkg.mk @@ -33,6 +33,7 @@ PKGINFO ?= /usr/bin/pkginfo ifeq ($(origin PACKAGES), undefined) PACKAGES = $(if $(filter %.gspec,$(DISTFILES)),,CSW$(GARNAME)) CATALOGNAME ?= $(if $(filter %.gspec,$(DISTFILES)),,$(GARNAME)) +CATALOG_RELEASE ?= current SRCPACKAGE_BASE = $(firstword $(basename $(filter %.gspec,$(DISTFILES))) $(PACKAGES)) SRCPACKAGE ?= $(SRCPACKAGE_BASE)-src SPKG_SPECS ?= $(basename $(filter %.gspec,$(DISTFILES))) $(PACKAGES) $(if $(NOSOURCEPACKAGE),,$(SRCPACKAGE)) @@ -846,6 +847,7 @@ pkgcheck: $(foreach SPEC,$(_PKG_SPECS),package-$(SPEC)) $(_DBG)( LC_ALL=C $(GARBIN)/checkpkg \ --architecture $(GARCH) \ --os-releases $(SPKG_OSNAME) \ + --catalog-release $(CATALOG_RELEASE) \ $(foreach SPEC,$(_PKG_SPECS),$(SPKG_EXPORT)/`$(call _PKG_ENV,$(SPEC)) mkpackage --tmpdir $(SPKG_TMPDIR) -qs $(WORKDIR)/$(SPEC).gspec -D pkgfile`.gz ) || exit 2;) @$(MAKECOOKIE) -- 1.7.3.2 From maciej at opencsw.org Mon Dec 6 18:36:49 2010 From: maciej at opencsw.org (Maciej (Matchek) Blizinski) Date: Mon, 6 Dec 2010 17:36:49 +0000 Subject: [csw-devel] [PATCH] mGAR v2: Checking packages against 'current' In-Reply-To: <1291656210-20510-1-git-send-email-maciej@opencsw.org> References: <1291656210-20510-1-git-send-email-maciej@opencsw.org> Message-ID: This isn't a commit, it's an experiment with sending a proposed change from git. We could use this to discuss code changes before they are made, if we want to. From gadavis at users.sourceforge.net Mon Dec 6 18:42:57 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Mon, 06 Dec 2010 17:42:57 +0000 Subject: [csw-devel] SF.net SVN: gar:[11817] csw/mgar/pkg/netcdf/trunk Message-ID: Revision: 11817 http://gar.svn.sourceforge.net/gar/?rev=11817&view=rev Author: gadavis Date: 2010-12-06 17:42:56 +0000 (Mon, 06 Dec 2010) Log Message: ----------- Work around 64-bit linking issues in Mantis 4497 Modified Paths: -------------- csw/mgar/pkg/netcdf/trunk/Makefile Added Paths: ----------- csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdf-c++5.cswreleasemgr csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdf6.cswreleasemgr csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdff5.cswreleasemgr Modified: csw/mgar/pkg/netcdf/trunk/Makefile =================================================================== --- csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-06 17:04:16 UTC (rev 11816) +++ csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-06 17:42:56 UTC (rev 11817) @@ -1,4 +1,4 @@ -# Copyright 2009 OpenCSW +# Copyright 2009,2010 OpenCSW # Distributed under the terms of the GNU General Public License v2 # $Id$ @@ -8,7 +8,10 @@ DESCRIPTION = Machine-independent data formats for array-oriented scientific data SPKG_SOURCEURL = http://www.unidata.ucar.edu/software/netcdf/ MASTER_SITES = http://www.unidata.ucar.edu/downloads/netcdf/ftp/ -DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +DISTFILES += $(GARNAME)-$(GARVERSION).tar.gz +DISTFILES += CSWlibnetcdf6.cswreleasemgr +DISTFILES += CSWlibnetcdff5.cswreleasemgr +DISTFILES += CSWlibnetcdf-c++5.cswreleasemgr UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz LICENSE = COPYRIGHT @@ -38,6 +41,7 @@ SPKG_DESC_CSWlibnetcdf6 = Machine-independent data formats for array-oriented scientific data, libnetcdf.so.6 RUNTIME_DEP_PKGS_CSWlibnetcdf6 = CSWhdf5rt RUNTIME_DEP_PKGS_CSWlibnetcdf6 += CSWgcc4corert +RUNTIME_DEP_PKGS_CSWlibnetcdf6 += CSWgcc4core # Mantis Bug #4497, missing 64 symlink PACKAGES += CSWlibnetcdf-c++5 CATALOGNAME_CSWlibnetcdf-c++5 = libnetcdf_c++5 @@ -52,7 +56,7 @@ PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/amd64/libnetcdf_c\+\+.so.5 SPKG_DESC_CSWlibnetcdf-c++5 += Machine-independent data formats for array-oriented scientific data, libnetcdf_c++.so.5 RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 = CSWhdf5rt -RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWgcc4corert CSWgcc4g++rt +RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWgcc4corert CSWgcc4core CSWgcc4g++rt RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWlibnetcdf6 PACKAGES += CSWlibnetcdff5 @@ -68,7 +72,7 @@ PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5 SPKG_DESC_CSWlibnetcdff5 = Machine-independent data formats for array-oriented scientific data, libnetcdff.so.5 RUNTIME_DEP_PKGS_CSWlibnetcdff5 = CSWhdf5rt -RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWgcc4gfortranrt CSWgcc4corert +RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWgcc4gfortranrt CSWgcc4corert CSWgcc4core RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWlibnetcdf6 PACKAGES += CSWnetcdf-devel @@ -143,11 +147,11 @@ EXTRA_FFLAGS= -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign EXTRA_FCFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign EXTRA_CXXFLAGS = -L/opt/csw/gcc4/lib/$(MM_LIBDIR) -dalign -## OPT_FLAGS_GCC = -O2 -pipe ## During the 32-bit sparc build, the C++ bindings were barfing with an error ## about undefined symbol __sync_fetch_and_add_4 in libnetcdf_c++ ## From Porting FAQ: http://wiki.opencsw.org/porting-faq#toc5 +## OPT_FLAGS_GCC = -O2 -pipe OPT_FLAGS_GCC = ## The development package should pull in the various libs since it's hard to @@ -156,4 +160,10 @@ CHECKPKG_OVERRIDES_CSWnetcdf-devel += surplus-dependency|CSWlibnetcdf6 CHECKPKG_OVERRIDES_CSWnetcdf-devel += surplus-dependency|CSWlibnetcdff5 +## Mantis bug 4497 means there's no 64 symlink in CSWgcc4corert so you can't +## link against these libraries without CSWgcc4core +CHECKPKG_OVERRIDES_CSWlibnetcdf-c++5 += surplus-dependency|CSWgcc4core +CHECKPKG_OVERRIDES_CSWlibnetcdf6 += surplus-dependency|CSWgcc4core +CHECKPKG_OVERRIDES_CSWlibnetcdff5 += surplus-dependency|CSWgcc4core + include gar/category.mk Added: csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdf-c++5.cswreleasemgr =================================================================== --- csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdf-c++5.cswreleasemgr (rev 0) +++ csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdf-c++5.cswreleasemgr 2010-12-06 17:42:56 UTC (rev 11817) @@ -0,0 +1,2 @@ +This package depends on CSWgcc4core due to Mantis Bug ID 4497 +The various libraries are not found by the 64 bit executable due to the 32 and 64 symlinks not being present in /opt/csw/gcc4/lib Added: csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdf6.cswreleasemgr =================================================================== --- csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdf6.cswreleasemgr (rev 0) +++ csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdf6.cswreleasemgr 2010-12-06 17:42:56 UTC (rev 11817) @@ -0,0 +1,2 @@ +This package depends on CSWgcc4core due to Mantis Bug ID 4497 +The various libraries are not found by the 64 bit executable due to the 32 and 64 symlinks not being present in /opt/csw/gcc4/lib Added: csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdff5.cswreleasemgr =================================================================== --- csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdff5.cswreleasemgr (rev 0) +++ csw/mgar/pkg/netcdf/trunk/files/CSWlibnetcdff5.cswreleasemgr 2010-12-06 17:42:56 UTC (rev 11817) @@ -0,0 +1,2 @@ +This package depends on CSWgcc4core due to Mantis Bug ID 4497 +The various libraries are not found by the 64 bit executable due to the 32 and 64 symlinks not being present in /opt/csw/gcc4/lib This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bwalton at opencsw.org Mon Dec 6 18:46:13 2010 From: bwalton at opencsw.org (Ben Walton) Date: Mon, 06 Dec 2010 12:46:13 -0500 Subject: [csw-devel] [PATCH] mGAR v2: Checking packages against 'current' In-Reply-To: References: <1291656210-20510-1-git-send-email-maciej@opencsw.org> Message-ID: <1291657501-sup-8254@pinkfloyd.chass.utoronto.ca> Excerpts from Maciej (Matchek) Blizinski's message of Mon Dec 06 12:36:49 -0500 2010: > This isn't a commit, it's an experiment with sending a proposed > change from git. We could use this to discuss code changes before > they are made, if we want to. I like this idea. We would do all GAR change work on a branch and post a series of patches before merge. We can still continue with our tradition of no news is good news (eg: cricket syndrome) but at least it puts the changes in an easily accessible forum for review. Thanks -Ben -- Ben Walton Systems Programmer - CHASS University of Toronto C:416.407.5610 | W:416.978.4302 From gadavis at users.sourceforge.net Mon Dec 6 19:32:21 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Mon, 06 Dec 2010 18:32:21 +0000 Subject: [csw-devel] SF.net SVN: gar:[11818] csw/mgar/pkg/netcdf/trunk/Makefile Message-ID: Revision: 11818 http://gar.svn.sourceforge.net/gar/?rev=11818&view=rev Author: gadavis Date: 2010-12-06 18:32:20 +0000 (Mon, 06 Dec 2010) Log Message: ----------- Disable Git patching due to failure on remerge/repackage cycle Modified Paths: -------------- csw/mgar/pkg/netcdf/trunk/Makefile Modified: csw/mgar/pkg/netcdf/trunk/Makefile =================================================================== --- csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-06 17:42:56 UTC (rev 11817) +++ csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-06 18:32:20 UTC (rev 11818) @@ -166,4 +166,7 @@ CHECKPKG_OVERRIDES_CSWlibnetcdf6 += surplus-dependency|CSWgcc4core CHECKPKG_OVERRIDES_CSWlibnetcdff5 += surplus-dependency|CSWgcc4core +## Git patching is failing on a remerge/repackage +NOGITPATCH = 1 + include gar/category.mk This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Mon Dec 6 23:14:33 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Mon, 06 Dec 2010 22:14:33 +0000 Subject: [csw-devel] SF.net SVN: gar:[11819] csw/mgar/gar/v2-fortran Message-ID: Revision: 11819 http://gar.svn.sourceforge.net/gar/?rev=11819&view=rev Author: wahwah Date: 2010-12-06 22:14:33 +0000 (Mon, 06 Dec 2010) Log Message: ----------- mGAR v2-fortran: Merging changes from v2 Modified Paths: -------------- csw/mgar/gar/v2-fortran/bin/checkpkg csw/mgar/gar/v2-fortran/lib/python/checkpkg.py csw/mgar/gar/v2-fortran/lib/python/checkpkg_test.py csw/mgar/gar/v2-fortran/lib/python/dependency_checks.py csw/mgar/gar/v2-fortran/lib/python/dependency_checks_test.py csw/mgar/gar/v2-fortran/lib/python/opencsw.py csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py csw/mgar/gar/v2-fortran/lib/python/package_checks.py csw/mgar/gar/v2-fortran/lib/python/package_checks_test.py Added Paths: ----------- csw/mgar/gar/v2-fortran/lib/python/testdata/apr_util_stats.py Property Changed: ---------------- csw/mgar/gar/v2-fortran/ csw/mgar/gar/v2-fortran/pkglib/csw/depend Property changes on: csw/mgar/gar/v2-fortran ___________________________________________________________________ Modified: svn:mergeinfo - /csw/mgar/gar/v2:4936-6678,10928-10988,10990-11763 /csw/mgar/gar/v2-bwalton:9784-10011 /csw/mgar/gar/v2-checkpkg:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation:10585-10737 /csw/mgar/gar/v2-checkpkg-stats:8454-8649 /csw/mgar/gar/v2-collapsed-modulations:6895 /csw/mgar/gar/v2-dirpackage:8125-8180 /csw/mgar/gar/v2-git/v2-relocate:7617 /csw/mgar/gar/v2-migrateconf:7082-7211 /csw/mgar/gar/v2-noexternals:11592-11745 /csw/mgar/gar/v2-relocate:5028-11738 /csw/mgar/gar/v2-skayser:6087-6132 /csw/mgar/gar/v2-sqlite:10434-10449 + /csw/mgar/gar/v2:4936-6678,10883-11818 /csw/mgar/gar/v2-bwalton:9784-10011 /csw/mgar/gar/v2-checkpkg:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation:10585-10737 /csw/mgar/gar/v2-checkpkg-stats:8454-8649 /csw/mgar/gar/v2-collapsed-modulations:6895 /csw/mgar/gar/v2-dirpackage:8125-8180 /csw/mgar/gar/v2-git/v2-relocate:7617 /csw/mgar/gar/v2-migrateconf:7082-7211 /csw/mgar/gar/v2-noexternals:11592-11745 /csw/mgar/gar/v2-relocate:5028-11738 /csw/mgar/gar/v2-skayser:6087-6132 /csw/mgar/gar/v2-sqlite:10434-10449 Modified: csw/mgar/gar/v2-fortran/bin/checkpkg =================================================================== --- csw/mgar/gar/v2-fortran/bin/checkpkg 2010-12-06 18:32:20 UTC (rev 11818) +++ csw/mgar/gar/v2-fortran/bin/checkpkg 2010-12-06 22:14:33 UTC (rev 11819) @@ -101,8 +101,6 @@ # TODO: Options to add: # - Use an pre-cached (from a catalog file?) list of md5 sums # - Don't use the data from /var/sadm/install/contents -SAVE_TAGS=0 -SAVED_TAGS_FILE=error-tags.txt display_help=0 SKIP_STATS_COLLECTION=0 MD5_SUMS_CATALOG_FILE="" @@ -116,12 +114,6 @@ c) INSTALL_CONTENTS_FILES="${INSTALL_CONTENTS_FILES} ${OPTARG}" ;; - s) - SAVE_TAGS=1 - ;; - o) - SAVED_TAGS_FILE="${OPTARG}" - ;; d) DEBUG=1 ;; @@ -151,8 +143,6 @@ readonly INSTALL_CONTENTS_FILES readonly MD5_SUMS_CATALOG_FILE -readonly SAVED_TAGS_FILE -readonly SAVE_TAGS readonly SKIP_STATS_COLLECTION readonly ANALYZE readonly PROFILE @@ -162,23 +152,17 @@ print 'Usage: checkpkg [options] pkg1 [pkg2 ....]' print 'Options:' print ' -c use an additional install/contents file' - print ' -s save error tags on disk' - print ' -o save tag output to file' print ' -d display debug messages' print ' -N skip statistics collection' print ' -M use package md5sums from a catalog file' print ' -A Do not analyze the results.' print ' -p Enable profiling' print ' -q Display less messages' + print '' + print 'Error tags are saved to the sqlite database.' exit 0 fi -if [[ "${SAVE_TAGS}" -eq 1 ]]; then - if [[ -f "${SAVED_TAGS_FILE}" ]]; then - rm "${SAVED_TAGS_FILE}" - fi -fi - # a unique filename for the list of package deps and libs we see in a 'set' SETINF=$CHECKPKG_TMPDIR/checkpkg.$$.`date +%Y%m%d%H%M%S` SETLIBS=$SETINF.libs Modified: csw/mgar/gar/v2-fortran/lib/python/checkpkg.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/checkpkg.py 2010-12-06 18:32:20 UTC (rev 11818) +++ csw/mgar/gar/v2-fortran/lib/python/checkpkg.py 2010-12-06 22:14:33 UTC (rev 11819) @@ -616,8 +616,9 @@ def Emulate64BitSymlinks(self, runpath_list): """Need to emulate the 64 -> amd64, 64 -> sparcv9 symlink - Since we don't know the architecture, we'll adding both amd64 and sparcv9. - It should be safe. + Since we don't know the architecture, we are adding both amd64 and + sparcv9. It should be safe - there are other checks that make sure + that right architectures are in the right directories. """ key = tuple(runpath_list) if key not in self.symlink64_cache: @@ -633,19 +634,12 @@ def SanitizeRunpath(self, runpath): if runpath not in self.runpath_sanitize_cache: - new_runpath = runpath - while True: - if new_runpath.endswith("/"): - new_runpath = new_runpath[:-1] - elif "//" in new_runpath: - new_runpath = new_runpath.replace("//", "/") - else: - break - self.runpath_sanitize_cache[runpath] = new_runpath + self.runpath_sanitize_cache[runpath] = os.path.normpath(runpath) return self.runpath_sanitize_cache[runpath] - def ResolveSoname(self, runpath_list, soname, isalist, path_list, binary_path): + def ResolveSoname(self, runpath_list, soname, isalist, + path_list, binary_path): """Emulates ldd behavior, minimal implementation. runpath: e.g. ["/opt/csw/lib/$ISALIST", "/usr/lib"] @@ -667,8 +661,9 @@ # in the path_list. for expanded_p in expanded_p_list: original_paths_by_expanded_paths[expanded_p] = p - # logging.debug("%s: looking for %s in %s", - # soname, runpath_list, original_paths_by_expanded_paths.keys()) + logging.debug( + "%s: looking for %s in %s", + soname, runpath_list, original_paths_by_expanded_paths.keys()) for runpath_expanded in runpath_list: if runpath_expanded in original_paths_by_expanded_paths: # logging.debug("Found %s", @@ -883,7 +878,9 @@ def GetCommonPaths(self, arch): """Returns a list of paths for architecture, from gar/etc/commondirs*.""" # TODO: If this was cached, it could save a significant amount of time. - assert arch in ('i386', 'sparc', 'all'), "Wrong arch: %s" % repr(arch) + if arch not in ('i386', 'sparc', 'all'): + logging.warn("Wrong arch: %s", repr(arch)) + return [] if arch == 'all': archs = ('i386', 'sparc') else: Modified: csw/mgar/gar/v2-fortran/lib/python/checkpkg_test.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/checkpkg_test.py 2010-12-06 18:32:20 UTC (rev 11818) +++ csw/mgar/gar/v2-fortran/lib/python/checkpkg_test.py 2010-12-06 22:14:33 UTC (rev 11819) @@ -341,5 +341,23 @@ self.assertTrue(expected, checkpkg.SliceList(l, s)) +class LddEmulartorUnitTest(unittest.TestCase): + + def setUp(self): + self.pkgmap_mocker = mox.Mox() + self.e = checkpkg.LddEmulator() + + def testResolveSoname_1(self): + # runpath_list, soname, isalist, path_list, binary_path + runpath_list = ["/opt/csw/bdb47/lib", "/opt/csw/lib"] + soname = "foo.so.1" + path_list = ["/opt/csw/lib", "/opt/csw/bdb47/lib", "/usr/lib"] + binary_path = "unused" + isalist = ["amd64"] + result = self.e.ResolveSoname(runpath_list, soname, isalist, + path_list, binary_path) + self.assertEqual("/opt/csw/bdb47/lib", result) + + if __name__ == '__main__': unittest.main() Modified: csw/mgar/gar/v2-fortran/lib/python/dependency_checks.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/dependency_checks.py 2010-12-06 18:32:20 UTC (rev 11818) +++ csw/mgar/gar/v2-fortran/lib/python/dependency_checks.py 2010-12-06 22:14:33 UTC (rev 11819) @@ -34,6 +34,77 @@ PREFERRED_DIRECTORY_PROVIDERS = set([u"CSWcommon"]) +def ProcessSoname( + ldd_emulator, + soname, path_and_pkg_by_basename, binary_info, isalist, binary_path, logger, + error_mgr, + pkgname, messenger): + """This is not an ideal name for a function. + + Returns: + orphan_sonames + """ + orphan_sonames = [] + required_deps = [] + resolved = False + path_list = path_and_pkg_by_basename[soname].keys() + runpath_tuple = ( + tuple(binary_info["runpath"]) + + tuple(checkpkg.SYS_DEFAULT_RUNPATH)) + runpath_history = [] + alternative_deps = set() + first_lib = None + for runpath in runpath_tuple: + runpath = ldd_emulator.SanitizeRunpath(runpath) + runpath_list = ldd_emulator.ExpandRunpath(runpath, isalist, binary_path) + runpath_list = ldd_emulator.Emulate64BitSymlinks(runpath_list) + # To accumulate all the runpaths that we were looking at + runpath_history += runpath_list + resolved_path = ldd_emulator.ResolveSoname(runpath_list, + soname, + isalist, + path_list, + binary_path) + if resolved_path: + resolved = True + req_pkgs = path_and_pkg_by_basename[soname][resolved_path] + reason = ("provides %s/%s needed by %s" + % (resolved_path, soname, binary_info["path"])) + # Looking for deprecated libraries. However, only alerting if the + # deprecated library is the first one found in the RPATH. For example, + # libdb-4.7.so is found in CSWbdb and CSWbdb47, and it's important to + # throw an error if the RPATH is ("/opt/csw/lib", "/opt/csw/bdb47/lib"), + # and not to throw an error if RPATH is ("/opt/csw/bdb47/lib", + # "/opt/csw/lib") + if not first_lib: + first_lib = (resolved_path, soname) + for bad_path, bad_soname, msg in DEPRECATED_LIBRARY_LOCATIONS: + if resolved_path == bad_path and soname == bad_soname: + logger.debug("Bad lib found: %s/%s", bad_path, bad_soname) + error_mgr.ReportError( + pkgname, + "deprecated-library", + ("%s %s %s/%s" + % (binary_info["path"], msg, resolved_path, soname))) + for req_pkg in req_pkgs: + alternative_deps.add((req_pkg, reason)) + required_deps.append(list(alternative_deps)) + if not resolved: + orphan_sonames.append((soname, binary_info["path"])) + if path_list: + path_msg = "was available at the following paths: %s." % path_list + else: + path_msg = ("was not present on the filesystem, " + "nor in the packages under examination.") + if soname not in ALLOWED_ORPHAN_SONAMES: + messenger.Message( + "%s could not be resolved for %s, with rpath %s, expanded to %s, " + "while the file %s" + % (soname, binary_info["path"], + runpath_tuple, runpath_history, path_msg)) + return orphan_sonames, required_deps + + def Libraries(pkg_data, error_mgr, logger, messenger, path_and_pkg_by_basename, pkg_by_path): """Checks shared libraries. @@ -53,66 +124,20 @@ """ pkgname = pkg_data["basic_stats"]["pkgname"] logger.debug("Libraries(): pkgname = %s", repr(pkgname)) + isalist = pkg_data["isalist"] + ldd_emulator = checkpkg.LddEmulator() orphan_sonames = [] required_deps = [] - isalist = pkg_data["isalist"] - ldd_emulator = checkpkg.LddEmulator() for binary_info in pkg_data["binaries_dump_info"]: binary_path, binary_basename = os.path.split(binary_info["path"]) for soname in binary_info["needed sonames"]: - resolved = False - path_list = path_and_pkg_by_basename[soname].keys() - # logger.debug("%s @ %s: looking for %s in %s", - # soname, - # binary_info["path"], - # binary_info["runpath"], - # path_list) - runpath_tuple = (tuple(binary_info["runpath"]) - + tuple(checkpkg.SYS_DEFAULT_RUNPATH)) - runpath_history = [] - alternative_deps = set() - for runpath in runpath_tuple: - runpath = ldd_emulator.SanitizeRunpath(runpath) - runpath_list = ldd_emulator.ExpandRunpath(runpath, isalist, binary_path) - runpath_list = ldd_emulator.Emulate64BitSymlinks(runpath_list) - # To accumulate all the runpaths that we were looking at - runpath_history += runpath_list - resolved_path = ldd_emulator.ResolveSoname(runpath_list, - soname, - isalist, - path_list, - binary_path) - if resolved_path: - resolved = True - req_pkgs = path_and_pkg_by_basename[soname][resolved_path] - reason = ("provides %s/%s needed by %s" - % (resolved_path, soname, binary_info["path"])) - # Looking for deprecated libraries. - for bad_path, bad_soname, msg in DEPRECATED_LIBRARY_LOCATIONS: - if resolved_path == bad_path and soname == bad_soname: - logger.debug("Bad lib found: %s/%s", bad_path, bad_soname) - error_mgr.ReportError( - pkgname, - "deprecated-library", - ("%s %s %s/%s" - % (binary_info["path"], msg, resolved_path, soname))) - for req_pkg in req_pkgs: - alternative_deps.add((req_pkg, reason)) - # print "alternative_deps:", alternative_deps - required_deps.append(list(alternative_deps)) - if not resolved: - orphan_sonames.append((soname, binary_info["path"])) - if path_list: - path_msg = "was available at the following paths: %s." % path_list - else: - path_msg = ("was not present on the filesystem, " - "nor in the packages under examination.") - if soname not in ALLOWED_ORPHAN_SONAMES: - messenger.Message( - "%s could not be resolved for %s, with rpath %s, expanded to %s, " - "while the file %s" - % (soname, binary_info["path"], - runpath_tuple, runpath_history, path_msg)) + orphan_sonames_tmp, required_deps_tmp = ProcessSoname( + ldd_emulator, + soname, path_and_pkg_by_basename, binary_info, isalist, binary_path, logger, + error_mgr, + pkgname, messenger) + orphan_sonames.extend(orphan_sonames_tmp) + required_deps.extend(required_deps_tmp) orphan_sonames = set(orphan_sonames) for soname, binary_path in orphan_sonames: if soname not in ALLOWED_ORPHAN_SONAMES: Modified: csw/mgar/gar/v2-fortran/lib/python/dependency_checks_test.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/dependency_checks_test.py 2010-12-06 18:32:20 UTC (rev 11818) +++ csw/mgar/gar/v2-fortran/lib/python/dependency_checks_test.py 2010-12-06 22:14:33 UTC (rev 11819) @@ -325,7 +325,9 @@ checkpkg.SetCheckInterface) self.pkg_data = copy.deepcopy(sudo_stats) - def testOne(self): + def testLibrariesRpathOrder(self): + # pkg_data, error_mgr, logger, messenger, path_and_pkg_by_basename, + # pkg_by_path pass def testByFilename(self): Modified: csw/mgar/gar/v2-fortran/lib/python/opencsw.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/opencsw.py 2010-12-06 18:32:20 UTC (rev 11818) +++ csw/mgar/gar/v2-fortran/lib/python/opencsw.py 2010-12-06 22:14:33 UTC (rev 11819) @@ -81,15 +81,28 @@ p = p[:-4] bits = p.split("-") catalogname = bits[0] - version, version_info, revision_info = ParseVersionString(bits[1]) + if len(bits) < 2: + version, version_info, revision_info = None, None, None + full_version_string = None + else: + version, version_info, revision_info = ParseVersionString(bits[1]) + full_version_string = bits[1] if len(bits) == 5: osrel, arch, vendortag = bits[2:5] - else: + elif len(bits) == 4: arch, vendortag = bits[2:4] osrel = "unspecified" + elif len(bits) == 3: + arch = bits[2] + vendortag = "UNKN" + osrel = "unspecified" + else: + arch = "unknown" + vendortag = "UNKN" + osrel = "unspecified" data = { 'catalogname': catalogname, - 'full_version_string': bits[1], + 'full_version_string': full_version_string, 'version': version, 'version_info': version_info, 'revision_info': revision_info, Modified: csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py 2010-12-06 18:32:20 UTC (rev 11818) +++ csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py 2010-12-06 22:14:33 UTC (rev 11819) @@ -163,30 +163,6 @@ self.assertEqual("unspecified", parsed["osrel"]) -class ComposePackageFileNameUnitTest(unittest.TestCase): - - def setUp(self): - self.parsed = {'arch': 'i386', - 'catalogname': 'mysql5client', - 'full_version_string': '5.0.87,REV=2010.02.28', - 'osrel': 'SunOS5.8', - 'revision_info': {'REV': '2010.02.28'}, - 'vendortag': 'CSW', - 'version': '5.0.87', - 'version_info': {'major version': '5', - 'minor version': '0', - 'patchlevel': '87'}} - - def testSimple(self): - file_name = 'mysql5client-5.0.87,REV=2010.02.28-SunOS5.8-i386-CSW.pkg' - self.assertEquals(file_name, opencsw.ComposePackageFileName(self.parsed)) - - def testMoreRev(self): - file_name = 'mysql5client-5.0.87,REV=2010.02.28_foo=bar-SunOS5.8-i386-CSW.pkg' - self.parsed["revision_info"]["foo"] = "bar" - self.assertEquals(file_name, opencsw.ComposePackageFileName(self.parsed)) - - class ParseVersionStringTest(unittest.TestCase): def test_NoRev(self): @@ -204,28 +180,11 @@ def test_Empty(self): data = "" + opencsw.ParseVersionString(data) expected = ('', {'major version': ''}, {}) self.assertEqual(expected, opencsw.ParseVersionString(data)) - def testExtraStringsHashable(self): - data = "2.7,REV=2009.06.18_STABLE6" - expected = ( - '2.7', - { - 'minor version': '7', - 'major version': '2'}, - { - # Here's the important bit: all parts of the parsed version - # must be hashable for submitpkg to work. - 'extra_strings': ('STABLE6',), - 'REV': '2009.06.18', - } - ) - result = opencsw.ParseVersionString(data) - hash(result[2]['extra_strings']) - self.assertEqual(expected, opencsw.ParseVersionString(data)) - class UpgradeTypeTest(unittest.TestCase): def testUpgradeType_1(self): Modified: csw/mgar/gar/v2-fortran/lib/python/package_checks.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/package_checks.py 2010-12-06 18:32:20 UTC (rev 11818) +++ csw/mgar/gar/v2-fortran/lib/python/package_checks.py 2010-12-06 22:14:33 UTC (rev 11819) @@ -1194,6 +1194,22 @@ % (binary_info["soname"], binary_info["base_name"])) +def CheckDocDir(pkg_data, error_mgr, logger, messenger): + pkgname = pkg_data["basic_stats"]["pkgname"] + docpath_re = re.compile(r"/opt/csw/share/doc/(?P[^/]+)/license") + for pkgmap_entry in pkg_data["pkgmap"]: + if "path" not in pkgmap_entry: continue + if not pkgmap_entry["path"]: continue + m = docpath_re.match(pkgmap_entry["path"]) + if m: + if m.groupdict()["docname"] != pkg_data["basic_stats"]["catalogname"]: + error_mgr.ReportError( + "wrong-docdir", + "expected=/opt/csw/shared/doc/%s/... " + "in-package=%s" + % (pkg_data["basic_stats"]["catalogname"], + pkgmap_entry["path"])) + def CheckSonameMustNotBeEqualToFileNameIfFilenameEndsWithSo( pkg_data, error_mgr, logger, messenger): pass Modified: csw/mgar/gar/v2-fortran/lib/python/package_checks_test.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/package_checks_test.py 2010-12-06 18:32:20 UTC (rev 11818) +++ csw/mgar/gar/v2-fortran/lib/python/package_checks_test.py 2010-12-06 22:14:33 UTC (rev 11819) @@ -549,6 +549,66 @@ self.pkg_data = [self.pkg_data] +class TestDeprecatedLibraries_GoodRpath(CheckpkgUnitTestHelper, unittest.TestCase): + FUNCTION_NAME = 'SetCheckLibraries' + def CheckpkgTest(self): + binaries_dump_info = self.pkg_data["binaries_dump_info"] + binaries_dump_info[0]["runpath"] = ("/opt/csw/bdb47/lib", "/opt/csw/lib",) + binaries_dump_info[0]["needed sonames"] = ["libdb-4.7.so"] + self.pkg_data["depends"] = (("CSWbad", None),(u"CSWcommon", "")) + self.pkg_data["binaries_dump_info"] = binaries_dump_info[0:1] + self.error_mgr_mock.GetPathsAndPkgnamesByBasename('libdb-4.7.so').AndReturn({ + u'/opt/csw/bdb47/lib': [u'CSWbad'], + u'/opt/csw/bdb47lib/sparcv9': [u'CSWbad'], + u'/opt/csw/lib': [u'CSWgood'], + u'/opt/csw/lib/sparcv9': [u'CSWgood'], + }) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/share/man').AndReturn(["CSWcommon"]) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/bin').AndReturn(["CSWcommon"]) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/bin/sparcv8').AndReturn(["CSWcommon"]) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/bin/sparcv9').AndReturn(["CSWcommon"]) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/share/doc').AndReturn(["CSWcommon"]) + # There should be no error here, since /opt/csw/bdb47/lib is first in the RPATH. + self.pkg_data = [self.pkg_data] + + +class TestDeprecatedLibraries_BadRpath(CheckpkgUnitTestHelper, unittest.TestCase): + FUNCTION_NAME = 'SetCheckLibraries' + def CheckpkgTest(self): + binaries_dump_info = self.pkg_data["binaries_dump_info"] + binaries_dump_info[0]["runpath"] = ("/opt/csw/lib", "/opt/csw/bdb47/lib",) + binaries_dump_info[0]["needed sonames"] = ["libdb-4.7.so"] + self.pkg_data["depends"] = (("CSWbad", None),(u"CSWcommon", "")) + self.pkg_data["binaries_dump_info"] = binaries_dump_info[0:1] + self.error_mgr_mock.GetPathsAndPkgnamesByBasename('libdb-4.7.so').AndReturn({ + u'/opt/csw/bdb47/lib': [u'CSWbad'], + u'/opt/csw/bdb47lib/sparcv9': [u'CSWbad'], + u'/opt/csw/lib': [u'CSWgood'], + u'/opt/csw/lib/sparcv9': [u'CSWgood'], + }) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/share/man').AndReturn(["CSWcommon"]) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/bin').AndReturn(["CSWcommon"]) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/bin/sparcv8').AndReturn(["CSWcommon"]) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/bin/sparcv9').AndReturn(["CSWcommon"]) + self.error_mgr_mock.GetPkgByPath( + '/opt/csw/share/doc').AndReturn(["CSWcommon"]) + self.error_mgr_mock.ReportError( + 'CSWrsync', + 'deprecated-library', + u'opt/csw/bin/sparcv8/rsync Deprecated Berkeley DB location ' + u'/opt/csw/lib/libdb-4.7.so') + self.pkg_data = [self.pkg_data] + + class TestSetCheckLibmLinking(CheckpkgUnitTestHelper, unittest.TestCase): FUNCTION_NAME = 'SetCheckLibraries' def CheckpkgTest(self): @@ -1371,6 +1431,7 @@ FUNCTION_NAME = 'CheckSharedLibraryNameMustBeAsubstringOfSoname' def CheckpkgTest(self): self.pkg_data = neon_stats[0] + # TODO: Implement this class TestCheckSharedLibraryNameMustBeAsubstringOfSonameGood( @@ -1384,5 +1445,32 @@ 'soname=libneon.so.27 filename=foo.so.1') +class TestCheckDocDirLicense(CheckpkgUnitTestHelper, unittest.TestCase): + FUNCTION_NAME = 'CheckDocDir' + def CheckpkgTest(self): + self.pkg_data = neon_stats[0] + self.pkg_data["pkgmap"].append({ + "class": "none", "type": "f", "line": "", + "user": "root", "group": "bin", "mode": '0755', + "path": "/opt/csw/share/doc/alien/license", + }) + self.error_mgr_mock.ReportError( + 'wrong-docdir', + 'expected=/opt/csw/shared/doc/neon/... ' + 'in-package=/opt/csw/share/doc/alien/license') + + +class TestCheckDocDirRandomFile(CheckpkgUnitTestHelper, unittest.TestCase): + "A random file should not trigger the message; only license files." + FUNCTION_NAME = 'CheckDocDir' + def CheckpkgTest(self): + self.pkg_data = neon_stats[0] + self.pkg_data["pkgmap"].append({ + "class": "none", "type": "f", "line": "", + "user": "root", "group": "bin", "mode": '0755', + "path": "/opt/csw/share/doc/alien/random_file", + }) + + if __name__ == '__main__': unittest.main() Copied: csw/mgar/gar/v2-fortran/lib/python/testdata/apr_util_stats.py (from rev 10927, csw/mgar/gar/v2/lib/python/testdata/apr_util_stats.py) =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/testdata/apr_util_stats.py (rev 0) +++ csw/mgar/gar/v2-fortran/lib/python/testdata/apr_util_stats.py 2010-12-06 22:14:33 UTC (rev 11819) @@ -0,0 +1,605 @@ +import datetime +pkgstats = [{'bad_paths': {}, + 'basic_stats': {'catalogname': 'apr_util', + 'md5_sum': 'e19f2b377884db51cc20a88ff06c8eb7', + 'parsed_basename': {'arch': 'sparc', + 'catalogname': 'apr_util', + 'full_version_string': '1.3.9,REV=2010.08.27', + 'osrel': 'SunOS5.9', + 'revision_info': {'REV': '2010.08.27'}, + 'vendortag': 'CSW', + 'version': '1.3.9', + 'version_info': {'major version': '1', + 'minor version': '3', + 'patchlevel': '9'}}, + 'pkg_basename': 'apr_util-1.3.9,REV=2010.08.27-SunOS5.9-sparc-CSW.pkg.gz', + 'pkg_path': '/tmp/pkg_bKg13A/apr_util-1.3.9,REV=2010.08.27-SunOS5.9-sparc-CSW.pkg.gz', + 'pkgname': 'CSWar-util', + 'stats_version': 9L}, + 'binaries': ['opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so', + 'opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so', + 'opt/csw/lib/apr-util-1/apr_dbm_db-1.so', + 'opt/csw/lib/apr-util-1/apr_ldap-1.so', + 'opt/csw/lib/libaprutil-1.so.0.3.9'], + 'binaries_dump_info': [{'RPATH set': True, + 'RUNPATH RPATH the same': True, + 'RUNPATH set': True, + 'base_name': 'apr_dbd_odbc-1.so', + 'needed sonames': ('libodbc.so.1', 'libc.so.1'), + 'path': 'opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so', + 'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'), + 'soname': 'apr_dbd_odbc-1.so'}, + {'RPATH set': True, + 'RUNPATH RPATH the same': True, + 'RUNPATH set': True, + 'base_name': 'apr_dbd_sqlite3-1.so', + 'needed sonames': ('libsqlite3.so.0', + 'libc.so.1'), + 'path': 'opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so', + 'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'), + 'soname': 'apr_dbd_sqlite3-1.so'}, + {'RPATH set': True, + 'RUNPATH RPATH the same': True, + 'RUNPATH set': True, + 'base_name': 'apr_dbm_db-1.so', + 'needed sonames': ('libdb-4.7.so', 'libc.so.1'), + 'path': 'opt/csw/lib/apr-util-1/apr_dbm_db-1.so', + 'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'), + 'soname': 'apr_dbm_db-1.so'}, + {'RPATH set': True, + 'RUNPATH RPATH the same': True, + 'RUNPATH set': True, + 'base_name': 'apr_ldap-1.so', + 'needed sonames': ('libldap-2.4.so.2', + 'libgen.so.1', + 'libnet.so', + 'libsasl2.so.2', + 'libdl.so.1', + 'libnsl.so.1', + 'libresolv.so.2', + 'libsocket.so.1', + 'libssl.so.0.9.8', + 'libcrypto.so.0.9.8', + 'liblber-2.4.so.2', + 'libc.so.1'), + 'path': 'opt/csw/lib/apr-util-1/apr_ldap-1.so', + 'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'), + 'soname': 'apr_ldap-1.so'}, + {'RPATH set': True, + 'RUNPATH RPATH the same': True, + 'RUNPATH set': True, + 'base_name': 'libaprutil-1.so.0.3.9', + 'needed sonames': ('libexpat.so.1', + 'libiconv.so.2', + 'libapr-1.so.0', + 'libuuid.so.1', + 'libsendfile.so.1', + 'librt.so.1', + 'libsocket.so.1', + 'libnsl.so.1', + 'libpthread.so.1', + 'libdl.so.1', + 'libc.so.1'), + 'path': 'opt/csw/lib/libaprutil-1.so.0.3.9', + 'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'), + 'soname': 'libaprutil-1.so.0'}], + 'depends': [('CSWcommon', + 'CSWcommon common - common files and dirs for CSW packages '), + ('CSWapr', 'CSWapr apr - Apache Portable Runtime '), + ('CSWiconv', 'CSWiconv libiconv - GNU iconv library '), + ('CSWsqlite3rt', + 'CSWsqlite3rt sqlite3_rt - An embeddable SQL engine in a C library runtime '), + ('CSWunixodbc', + 'CSWunixodbc unixodbc - ODBC drivers for Unix systems '), + ('CSWexpat', 'CSWexpat expat - XML Parser Toolkit '), + ('CSWbdb47', + 'CSWbdb47 berkeleydb47 - BerkeleyDB 4.7 embedded database libraries and utilities '), + ('CSWoldaprt', + 'CSWoldaprt openldap_rt - OpenLDAP runtime libraries '), + ('CSWosslrt', + 'CSWosslrt openssl_rt - Openssl runtime libraries '), + ('CSWsasl', + 'CSWsasl sasl - Simple Authentication and Security Layer '), + ('CSWlibnet', + 'CSWlibnet libnet - the libnet packet construction library ')], + 'files_metadata': [{'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_ldap_option.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_memcache.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_dbd.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_sdbm.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apu_want.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_rmm.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_uri.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_ldap_rebind.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_ldap_url.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_reslist.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_anylock.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_date.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_thread_pool.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_hooks.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_dbm.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_optional.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_strmatch.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_queue.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_base64.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_ldap.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_ldap_init.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_optional_hooks.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_sha1.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_uuid.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_xml.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_xlate.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apu.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_md5.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apu_version.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_md4.h'}, + {'mime_type': 'text/x-c; charset=us-ascii', + 'path': 'opt/csw/include/apr_buckets.h'}, + {'mime_type': 'text/plain; charset=us-ascii', + 'path': 'opt/csw/lib/aprutil.exp'}, + {'endian': 'Big endian', + 'machine_id': 2, + 'mime_type': 'application/x-sharedlib; charset=binary', + 'mime_type_by_hachoir': u'application/x-executable', + 'path': 'opt/csw/lib/libaprutil-1.so.0.3.9'}, + {'mime_type': 'text/plain; charset=us-ascii', + 'path': 'opt/csw/lib/pkgconfig/apr-util-1.pc'}, + {'endian': 'Big endian', + 'machine_id': 2, + 'mime_type': 'application/x-sharedlib; charset=binary', + 'mime_type_by_hachoir': u'application/x-executable', + 'path': 'opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so'}, + {'endian': 'Big endian', + 'machine_id': 2, + 'mime_type': 'application/x-sharedlib; charset=binary', + 'mime_type_by_hachoir': u'application/x-executable', + 'path': 'opt/csw/lib/apr-util-1/apr_ldap-1.so'}, + {'endian': 'Big endian', + 'machine_id': 2, + 'mime_type': 'application/x-sharedlib; charset=binary', + 'mime_type_by_hachoir': u'application/x-executable', + 'path': 'opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so'}, + {'endian': 'Big endian', + 'machine_id': 2, + 'mime_type': 'application/x-sharedlib; charset=binary', + 'mime_type_by_hachoir': u'application/x-executable', + 'path': 'opt/csw/lib/apr-util-1/apr_dbm_db-1.so'}, + {'mime_type': 'text/plain; charset=us-ascii', + 'path': 'opt/csw/share/doc/apr_util/license'}, + {'mime_type': 'text/x-shellscript; charset=us-ascii', + 'path': 'opt/csw/bin/apu-1-config'}], + 'isalist': ('sparcv9+vis2', + 'sparcv9+vis', + 'sparcv9', + 'sparcv8plus+vis2', + 'sparcv8plus+vis', + 'sparcv8plus', + 'sparcv8', + 'sparcv8-fsmuld', + 'sparcv7', + 'sparc'), + 'mtime': datetime.datetime(2010, 8, 27, 11, 0, 10), + 'overrides': [], + 'pkgchk': {'return_code': 0, + 'stderr_lines': ['rm: Cannot remove any directory in the path of the current working directory', + '/var/tmp/aaaIGaO6g/CSWar-util'], + 'stdout_lines': ['Checking uninstalled stream format package from ', + '## Checking control scripts.', + '## Checking package objects.', + '## Checking is complete.']}, + 'pkginfo': {'ARCH': 'sparc', + 'CATEGORY': 'application', + 'CLASSES': 'none', + 'EMAIL': 'maciej at opencsw.org', + 'HOTLINE': 'http://www.opencsw.org/bugtrack/', + 'NAME': 'apr_util - Apache Portable Runtime Utilities', + 'OPENCSW_BUNDLE': 'apr-util', + 'OPENCSW_CATALOGNAME': 'apr_util', + 'OPENCSW_MODE64': '32', + 'OPENCSW_REPOSITORY': 'https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/apr-util/trunk at 10822', + 'PKG': 'CSWar-util', + 'PSTAMP': 'maciej at testing9s-20100827130000', + 'VENDOR': 'http://apache.crihan.fr/dist/apr/ packaged for CSW by Maciej Blizinski', + 'VERSION': '1.3.9,REV=2010.08.27', + 'WORKDIR_FIRSTMOD': '../build-isa-sparcv8'}, + 'pkgmap': [{'class': None, + 'group': None, + 'line': ': 1 0', + 'mode': None, + 'path': None, + 'type': '1', + 'user': None}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/bin/apu-1-config 0755 root bin 6437 35894 1282906794', + 'mode': '0755', + 'path': '/opt/csw/bin/apu-1-config', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_anylock.h 0644 root bin 5050 35768 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_anylock.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_base64.h 0644 root bin 3823 57460 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_base64.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_buckets.h 0644 root bin 60020 64941 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_buckets.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_date.h 0644 root bin 3554 13649 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_date.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_dbd.h 0644 root bin 24093 4453 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_dbd.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_dbm.h 0644 root bin 8599 26734 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_dbm.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_hooks.h 0644 root bin 8585 47295 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_hooks.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_ldap.h 0644 root bin 5704 7247 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_ldap.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_ldap_init.h 0644 root bin 5780 10710 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_ldap_init.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_ldap_option.h 0644 root bin 8604 41864 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_ldap_option.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_ldap_rebind.h 0644 root bin 3168 62596 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_ldap_rebind.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_ldap_url.h 0644 root bin 3799 32681 1282906791', + 'mode': '0644', + 'path': '/opt/csw/include/apr_ldap_url.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_md4.h 0644 root bin 4525 42434 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_md4.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_md5.h 0644 root bin 5573 519 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_md5.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_memcache.h 0644 root bin 17072 60128 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_memcache.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_optional.h 0644 root bin 2780 34306 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_optional.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_optional_hooks.h 0644 root bin 3869 64111 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_optional_hooks.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_queue.h 0644 root bin 4082 16636 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_queue.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_reslist.h 0644 root bin 6326 56986 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_reslist.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_rmm.h 0644 root bin 4778 15266 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_rmm.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_sdbm.h 0644 root bin 6113 34421 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_sdbm.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_sha1.h 0644 root bin 3884 57845 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_sha1.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_strmatch.h 0644 root bin 2677 28267 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_strmatch.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_thread_pool.h 0644 root bin 11104 60025 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_thread_pool.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_uri.h 0644 root bin 6589 55175 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_uri.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_uuid.h 0644 root bin 2102 40269 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_uuid.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_xlate.h 0644 root bin 6408 789 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_xlate.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apr_xml.h 0644 root bin 12357 61173 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apr_xml.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apu.h 0644 root bin 3560 23891 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apu.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apu_version.h 0644 root bin 4126 11796 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apu_version.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/include/apu_want.h 0644 root bin 1483 49830 1282906792', + 'mode': '0644', + 'path': '/opt/csw/include/apu_want.h', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 d none /opt/csw/lib/apr-util-1 0755 root bin', + 'mode': '0755', + 'path': '/opt/csw/lib/apr-util-1', + 'type': 'd', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so 0755 root bin 30580 5683 1282906789', + 'mode': '0755', + 'path': '/opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': None, + 'line': '1 s none /opt/csw/lib/apr-util-1/apr_dbd_odbc.so=apr_dbd_odbc-1.so', + 'mode': None, + 'path': '/opt/csw/lib/apr-util-1/apr_dbd_odbc.so', + 'type': 's', + 'user': None}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so 0755 root bin 18044 2829 1282906788', + 'mode': '0755', + 'path': '/opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': None, + 'line': '1 s none /opt/csw/lib/apr-util-1/apr_dbd_sqlite3.so=apr_dbd_sqlite3-1.so', + 'mode': None, + 'path': '/opt/csw/lib/apr-util-1/apr_dbd_sqlite3.so', + 'type': 's', + 'user': None}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/lib/apr-util-1/apr_dbm_db-1.so 0755 root bin 9764 59811 1282906789', + 'mode': '0755', + 'path': '/opt/csw/lib/apr-util-1/apr_dbm_db-1.so', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': None, + 'line': '1 s none /opt/csw/lib/apr-util-1/apr_dbm_db.so=apr_dbm_db-1.so', + 'mode': None, + 'path': '/opt/csw/lib/apr-util-1/apr_dbm_db.so', + 'type': 's', + 'user': None}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/lib/apr-util-1/apr_ldap-1.so 0755 root bin 17916 9844 1282906790', + 'mode': '0755', + 'path': '/opt/csw/lib/apr-util-1/apr_ldap-1.so', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': None, + 'line': '1 s none /opt/csw/lib/apr-util-1/apr_ldap.so=apr_ldap-1.so', + 'mode': None, + 'path': '/opt/csw/lib/apr-util-1/apr_ldap.so', + 'type': 's', + 'user': None}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/lib/aprutil.exp 0644 root bin 5442 19740 1282906793', + 'mode': '0644', + 'path': '/opt/csw/lib/aprutil.exp', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': None, + 'line': '1 s none /opt/csw/lib/libaprutil-1.so=libaprutil-1.so.0.3.9', + 'mode': None, + 'path': '/opt/csw/lib/libaprutil-1.so', + 'type': 's', + 'user': None}, + {'class': 'none', + 'group': None, + 'line': '1 s none /opt/csw/lib/libaprutil-1.so.0=libaprutil-1.so.0.3.9', + 'mode': None, + 'path': '/opt/csw/lib/libaprutil-1.so.0', + 'type': 's', + 'user': None}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/lib/libaprutil-1.so.0.3.9 0755 root bin 272120 38251 1282906792', + 'mode': '0755', + 'path': '/opt/csw/lib/libaprutil-1.so.0.3.9', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 d none /opt/csw/lib/pkgconfig 0755 root bin', + 'mode': '0755', + 'path': '/opt/csw/lib/pkgconfig', + 'type': 'd', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/lib/pkgconfig/apr-util-1.pc 0644 root bin 371 32716 1282906792', + 'mode': '0644', + 'path': '/opt/csw/lib/pkgconfig/apr-util-1.pc', + 'type': 'f', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 d none /opt/csw/share/doc/apr_util 0755 root bin', + 'mode': '0755', + 'path': '/opt/csw/share/doc/apr_util', + 'type': 'd', + 'user': 'root'}, + {'class': 'none', + 'group': 'bin', + 'line': '1 f none /opt/csw/share/doc/apr_util/license 0644 root bin 21179 51077 1282906796', + 'mode': '0644', + 'path': '/opt/csw/share/doc/apr_util/license', + 'type': 'f', + 'user': 'root'}, + {'class': None, + 'group': None, + 'line': '1 i copyright 72 6789 1282906796', + 'mode': None, + 'path': None, + 'type': 'i', + 'user': None}, + {'class': None, + 'group': None, + 'line': '1 i depend 614 54845 1282906800', + 'mode': None, + 'path': None, + 'type': 'i', + 'user': None}, + {'class': None, + 'group': None, + 'line': '1 i pkginfo 528 44388 1282906809', + 'mode': None, + 'path': None, + 'type': 'i', + 'user': None}]}] + Property changes on: csw/mgar/gar/v2-fortran/pkglib/csw/depend ___________________________________________________________________ Modified: svn:mergeinfo - /csw/mgar/gar/v2/pkglib/csw/depend:4936-6678,10928-10988,10990-11763 /csw/mgar/gar/v2-bwalton/pkglib/csw/depend:9784-10011 /csw/mgar/gar/v2-checkpkg/pkglib/csw/depend:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation/pkglib/csw/depend:10585-10737 /csw/mgar/gar/v2-checkpkg-stats/pkglib/csw/depend:8454-8649 /csw/mgar/gar/v2-collapsed-modulations/pkglib/csw/depend:6895 /csw/mgar/gar/v2-dirpackage/pkglib/csw/depend:8125-8180 /csw/mgar/gar/v2-noexternals/pkglib/csw/depend:11592-11745 /csw/mgar/gar/v2-relocate/pkglib/csw/depend:5028-11738 /csw/mgar/gar/v2-skayser/pkglib/csw/depend:6087-6132 /csw/mgar/gar/v2-sqlite/pkglib/csw/depend:10434-10449 + /csw/mgar/gar/v2/pkglib/csw/depend:4936-6678,10883-11818 /csw/mgar/gar/v2-bwalton/pkglib/csw/depend:9784-10011 /csw/mgar/gar/v2-checkpkg/pkglib/csw/depend:7722-7855 /csw/mgar/gar/v2-checkpkg-override-relocation/pkglib/csw/depend:10585-10737 /csw/mgar/gar/v2-checkpkg-stats/pkglib/csw/depend:8454-8649 /csw/mgar/gar/v2-collapsed-modulations/pkglib/csw/depend:6895 /csw/mgar/gar/v2-dirpackage/pkglib/csw/depend:8125-8180 /csw/mgar/gar/v2-noexternals/pkglib/csw/depend:11592-11745 /csw/mgar/gar/v2-relocate/pkglib/csw/depend:5028-11738 /csw/mgar/gar/v2-skayser/pkglib/csw/depend:6087-6132 /csw/mgar/gar/v2-sqlite/pkglib/csw/depend:10434-10449 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Mon Dec 6 23:33:25 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Mon, 06 Dec 2010 22:33:25 +0000 Subject: [csw-devel] SF.net SVN: gar:[11820] csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py Message-ID: Revision: 11820 http://gar.svn.sourceforge.net/gar/?rev=11820&view=rev Author: wahwah Date: 2010-12-06 22:33:25 +0000 (Mon, 06 Dec 2010) Log Message: ----------- mGAR v2-fortran: Bringing the opencsw_test.py file in sync with v2 I don't know how did it get out of sync; there was a conflict during merge and I apparently resolved it the wrong way. Modified Paths: -------------- csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py Modified: csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py =================================================================== --- csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py 2010-12-06 22:14:33 UTC (rev 11819) +++ csw/mgar/gar/v2-fortran/lib/python/opencsw_test.py 2010-12-06 22:33:25 UTC (rev 11820) @@ -163,6 +163,30 @@ self.assertEqual("unspecified", parsed["osrel"]) +class ComposePackageFileNameUnitTest(unittest.TestCase): + + def setUp(self): + self.parsed = {'arch': 'i386', + 'catalogname': 'mysql5client', + 'full_version_string': '5.0.87,REV=2010.02.28', + 'osrel': 'SunOS5.8', + 'revision_info': {'REV': '2010.02.28'}, + 'vendortag': 'CSW', + 'version': '5.0.87', + 'version_info': {'major version': '5', + 'minor version': '0', + 'patchlevel': '87'}} + + def testSimple(self): + file_name = 'mysql5client-5.0.87,REV=2010.02.28-SunOS5.8-i386-CSW.pkg' + self.assertEquals(file_name, opencsw.ComposePackageFileName(self.parsed)) + + def testMoreRev(self): + file_name = 'mysql5client-5.0.87,REV=2010.02.28_foo=bar-SunOS5.8-i386-CSW.pkg' + self.parsed["revision_info"]["foo"] = "bar" + self.assertEquals(file_name, opencsw.ComposePackageFileName(self.parsed)) + + class ParseVersionStringTest(unittest.TestCase): def test_NoRev(self): @@ -180,11 +204,28 @@ def test_Empty(self): data = "" - opencsw.ParseVersionString(data) expected = ('', {'major version': ''}, {}) self.assertEqual(expected, opencsw.ParseVersionString(data)) + def testExtraStringsHashable(self): + data = "2.7,REV=2009.06.18_STABLE6" + expected = ( + '2.7', + { + 'minor version': '7', + 'major version': '2'}, + { + # Here's the important bit: all parts of the parsed version + # must be hashable for submitpkg to work. + 'extra_strings': ('STABLE6',), + 'REV': '2009.06.18', + } + ) + result = opencsw.ParseVersionString(data) + hash(result[2]['extra_strings']) + self.assertEqual(expected, opencsw.ParseVersionString(data)) + class UpgradeTypeTest(unittest.TestCase): def testUpgradeType_1(self): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Mon Dec 6 23:53:05 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Mon, 06 Dec 2010 22:53:05 +0000 Subject: [csw-devel] SF.net SVN: gar:[11821] csw/mgar/gar/v2/lib/python/package_checks_test.py Message-ID: Revision: 11821 http://gar.svn.sourceforge.net/gar/?rev=11821&view=rev Author: wahwah Date: 2010-12-06 22:53:04 +0000 (Mon, 06 Dec 2010) Log Message: ----------- checkpkg: Copying the test data structure Turns out, there was a bug in my unit test. I should have tested my test first! The problem was that one of the test was modifying a data structure that other tests were using later on. Modified Paths: -------------- csw/mgar/gar/v2/lib/python/package_checks_test.py Modified: csw/mgar/gar/v2/lib/python/package_checks_test.py =================================================================== --- csw/mgar/gar/v2/lib/python/package_checks_test.py 2010-12-06 22:33:25 UTC (rev 11820) +++ csw/mgar/gar/v2/lib/python/package_checks_test.py 2010-12-06 22:53:04 UTC (rev 11821) @@ -1448,7 +1448,7 @@ class TestCheckDocDirLicense(CheckpkgUnitTestHelper, unittest.TestCase): FUNCTION_NAME = 'CheckDocDir' def CheckpkgTest(self): - self.pkg_data = neon_stats[0] + self.pkg_data = copy.deepcopy(neon_stats[0]) self.pkg_data["pkgmap"].append({ "class": "none", "type": "f", "line": "", "user": "root", "group": "bin", "mode": '0755', @@ -1464,7 +1464,7 @@ "A random file should not trigger the message; only license files." FUNCTION_NAME = 'CheckDocDir' def CheckpkgTest(self): - self.pkg_data = neon_stats[0] + self.pkg_data = copy.deepcopy(neon_stats[0]) self.pkg_data["pkgmap"].append({ "class": "none", "type": "f", "line": "", "user": "root", "group": "bin", "mode": '0755', This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Tue Dec 7 02:20:17 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Tue, 07 Dec 2010 01:20:17 +0000 Subject: [csw-devel] SF.net SVN: gar:[11822] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11822 http://gar.svn.sourceforge.net/gar/?rev=11822&view=rev Author: gadavis Date: 2010-12-07 01:20:17 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Split out LDAP and KRB5 packages Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-06 22:53:04 UTC (rev 11821) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 01:20:17 UTC (rev 11822) @@ -18,37 +18,13 @@ LICENSE = LICENSE GARCOMPILER = GCC4 - # Stripping libtool breaks the build in versions <=2.1.7 #STRIP_LIBTOOL = 1 ## Some of the RLM Submodules don't seem to pick up the include paths without ## setting CFLAGS EXTRA_CFLAGS = -I/opt/csw/include -#EXTRA_CFLAGS += -DIE_LIBTOOL_DIE -#CONFIGURE_ENV = CFLAGS="$(CFLAGS)" -#EXTRA_MERGE_EXCLUDE_FILES += /opt/csw/lib/libltdl.so.* -#EXTRA_MERGE_EXCLUDE_FILES += /opt/csw/lib/sparcv9/libltdl.so.* -#EXTRA_MERGE_EXCLUDE_FILES += /opt/csw/lib/amd64/libltdl.so.* -#EXTRA_MERGE_EXCLUDE_FILES += /opt/csw/include/ltdl.h - -RUNTIME_DEP_PKGS_CSWfreeradius += CSWlibpython2-6-1-0 -RUNTIME_DEP_PKGS_CSWfreeradius += CSWlibpcap -RUNTIME_DEP_PKGS_CSWfreeradius += CSWoldaprt -RUNTIME_DEP_PKGS_CSWfreeradius += CSWosslrt -RUNTIME_DEP_PKGS_CSWfreeradius += CSWgdbm -RUNTIME_DEP_PKGS_CSWfreeradius += CSWlibltdl7 -RUNTIME_DEP_PKGS_CSWfreeradius += CSWreadline -RUNTIME_DEP_PKGS_CSWfreeradius += CSWkrb5lib -RUNTIME_DEP_PKGS_CSWfreeradius += CSWgcc4corert - -## Can't get perl to link cleanly -## Still get noise about a missing dependency due to an included example -## script in raddb -#RUNTIME_DEP_PKGS_CSWfreeradius += CSWperl -CHECKPKG_OVERRIDES_CSWfreeradius += missing-dependency|CSWperl - # Put libraries (including all of the modules) in /opt/csw/lib/freeradius libdir = $(abspath $(libdir_install)/$(GARNAME)/$(MM_LIBDIR)) @@ -81,6 +57,64 @@ CONFIGURE_ARGS += --without-rlm_sql_unixodbc CONFIGURE_ARGS += --without-rlm_eap_tnc +## Individual Package definitions start here + +PACKAGES += CSWfreeradius +CATALOGNAME_CSWfreeradius = $(GARNAME) +SPKG_DESC_CSWfreeradius = $(DESCRIPTION) +RUNTIME_DEP_PKGS_CSWfreeradius += CSWlibpython2-6-1-0 +RUNTIME_DEP_PKGS_CSWfreeradius += CSWlibpcap +RUNTIME_DEP_PKGS_CSWfreeradius += CSWosslrt +RUNTIME_DEP_PKGS_CSWfreeradius += CSWgdbm +RUNTIME_DEP_PKGS_CSWfreeradius += CSWlibltdl7 +RUNTIME_DEP_PKGS_CSWfreeradius += CSWreadline +RUNTIME_DEP_PKGS_CSWfreeradius += CSWgcc4corert + +## Kerberos +PACKAGES += CSWfreeradius-krb5 +CATALOGNAME_CSWfreeradius-krb5 = freeradius_krb5 +SPKG_DESC_CSWfreeradius-krb5 = Kerberos 5 Module rlm_krb5 for FreeRADIUS +PKGFILES_CSWfreeradius-krb5 += $(raddbdir)/modules/krb5 +PKGFILES_CSWfreeradius-krb5 += $(docdir)/rlm_krb5 +PKGFILES_CSWfreeradius-krb5 += /opt/csw/lib/freeradius/rlm_krb5\.so +PKGFILES_CSWfreeradius-krb5 += /opt/csw/lib/freeradius/rlm_krb5-2\.1\.[0-9]+\.so +RUNTIME_DEP_PKGS_CSWfreeradius-krb5 += CSWkrb5lib +RUNTIME_DEP_PKGS_CSWfreeradius-krb5 += CSWfreeradius +RUNTIME_DEP_PKGS_CSWfreeradius-krb5 += CSWgcc4corert + +## LDAP +PACKAGES += CSWfreeradius-ldap +CATALOGNAME_CSWfreeradius-ldap = freeradias_ldap +SPKG_DESC_CSWfreeradius-ldap = LDAP Module rlm_ldap for FreeRADIUS +PKGFILES_CSWfreeradius-ldap += $(raddbdir)/ldap\.attrmap +PKGFILES_CSWfreeradius-ldap += $(raddbdir)/modules/ldap +PKGFILES_CSWfreeradius-ldap += $(docdir)/ldap_howto.rst +PKGFILES_CSWfreeradius-ldap += $(docdir)/RADIUS-LDAP-eDirectory +PKGFILES_CSWfreeradius-ldap += $(docdir)/rlm_ldap +PKGFILES_CSWfreeradius-ldap += $(docdir)/examples/openldap.schema +PKGFILES_CSWfreeradius-ldap += /opt/csw/lib/freeradius/rlm_ldap\.so +PKGFILES_CSWfreeradius-ldap += /opt/csw/lib/freeradius/rlm_ldap-2\.1\.[0-9]+\.so +RUNTIME_DEP_PKGS_CSWfreeradius-ldap += CSWoldaprt +RUNTIME_DEP_PKGS_CSWfreeradius-ldap += CSWfreeradius +RUNTIME_DEP_PKGS_CSWfreeradius-ldap += CSWgcc4corert + +## Perl support +## Disabling Perl due to linker issues and weird makefiles +#PACKAGES += CSWfreeradius-perl +#CATALOGNAME_CSWfreeradius-perl = freeradius-perl +#SPKG_DESC_CSWfreeradius-perl = Perl Module rlm_perl for FreeRADIUS +#RUNTIME_DEP_PKGS_CSWfreeradius-perl += CSWperl +#RUNTIME_DEP_PKGS_CSWfreeradius-perl += CSWfreeradius +#PKGFILES_CSWfreeradius-perl += $(raddbdir)/example.pl +#rlm_perl_inc = $(shell /opt/csw/bin/perl -e 'use Config; print "$$Config{archlib}\n"')/CORE +#CONFIGURE_ARGS += --with-rlm_perl_include_dir=$(rlm_perl_inc) +## Comment out the following lines when building Perl +CONFIGURE_ARGS += --without-rlm_perl +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/example.pl +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/modules/perl +## End perl exclusion lines + +## PostgreSQL support ## Disabling Postgresql because it's going to take a bunch of weird ## Makefile hackery of these non-automake Makefiles to get the RPATH right #BUILD_DEP_PKGS += CSWpostgresql @@ -88,19 +122,19 @@ #rlm_pgsql_inc = $(shell /opt/csw/postgresql/bin/$(ISA)/pg_config --includedir) #CONFIGURE_ARGS += --with-rlm_sql_postgresql_lib_dir=$(rlm_pgsql_lib) #CONFIGURE_ARGS += --with-rlm_sql_postgresql_include_dir=$(rlm_pgsql_inc) +## Comment out the following lines when building PostgreSQL support CONFIGURE_ARGS += --without-rlm_sql_postgresql +## End pgsql exclusion lines ## Disabling MySQL because it's going to take a bunch of weird ## Makefile hackery of these non-automake Makefiles to get the RPATH right #BUILD_DEP_PKGS += CSWmysql5devel #CONFIGURE_ARGS += --with-mysql-lib-dir=/opt/csw/mysql5/lib/$(ISA)/mysql #CONFIGURE_ARGS += --with-mysql-include-dir=/opt/csw/mysql5/include +## Comment out the following lines when building mysql support CONFIGURE_ARGS += --without-rlm_sql_mysql +## End mysql exclusion lines -## Disabling Perl due to linker issues and weird makefiles -#rlm_perl_inc = $(shell /opt/csw/bin/perl -e 'use Config; print "$$Config{archlib}\n"')/CORE -#CONFIGURE_ARGS += --with-rlm_perl_include_dir=$(rlm_perl_inc) -CONFIGURE_ARGS += --without-rlm_perl # No tests available TEST_TARGET = This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Tue Dec 7 02:23:30 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Tue, 07 Dec 2010 01:23:30 +0000 Subject: [csw-devel] SF.net SVN: gar:[11823] csw/mgar/pkg/netcdf/trunk/Makefile Message-ID: Revision: 11823 http://gar.svn.sourceforge.net/gar/?rev=11823&view=rev Author: gadavis Date: 2010-12-07 01:23:30 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Fix catalog name of CSWlibnetcdf6, remove surplus overrides after gar version bump Modified Paths: -------------- csw/mgar/pkg/netcdf/trunk/Makefile Modified: csw/mgar/pkg/netcdf/trunk/Makefile =================================================================== --- csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-07 01:20:17 UTC (rev 11822) +++ csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-07 01:23:30 UTC (rev 11823) @@ -28,7 +28,7 @@ RUNTIME_DEP_PKGS_CSWnetcdf += CSWlibnetcdf6 PACKAGES += CSWlibnetcdf6 -CATALOGNAME_CSWlibnetcdf6 = libnetcf6 +CATALOGNAME_CSWlibnetcdf6 = libnetcdf6 PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/libnetcdf.so.6.0.0 PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/libnetcdf.so.6\.[0-9\.]+ PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/libnetcdf.so.6 @@ -154,12 +154,6 @@ ## OPT_FLAGS_GCC = -O2 -pipe OPT_FLAGS_GCC = -## The development package should pull in the various libs since it's hard to -## link against what isn't there -CHECKPKG_OVERRIDES_CSWnetcdf-devel += surplus-dependency|CSWlibnetcdf-c++5 -CHECKPKG_OVERRIDES_CSWnetcdf-devel += surplus-dependency|CSWlibnetcdf6 -CHECKPKG_OVERRIDES_CSWnetcdf-devel += surplus-dependency|CSWlibnetcdff5 - ## Mantis bug 4497 means there's no 64 symlink in CSWgcc4corert so you can't ## link against these libraries without CSWgcc4core CHECKPKG_OVERRIDES_CSWlibnetcdf-c++5 += surplus-dependency|CSWgcc4core This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Tue Dec 7 03:22:06 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Tue, 07 Dec 2010 02:22:06 +0000 Subject: [csw-devel] SF.net SVN: gar:[11824] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11824 http://gar.svn.sourceforge.net/gar/?rev=11824&view=rev Author: gadavis Date: 2010-12-07 02:22:06 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Speel chekc freeradius Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 01:23:30 UTC (rev 11823) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 02:22:06 UTC (rev 11824) @@ -84,7 +84,7 @@ ## LDAP PACKAGES += CSWfreeradius-ldap -CATALOGNAME_CSWfreeradius-ldap = freeradias_ldap +CATALOGNAME_CSWfreeradius-ldap = freeradius_ldap SPKG_DESC_CSWfreeradius-ldap = LDAP Module rlm_ldap for FreeRADIUS PKGFILES_CSWfreeradius-ldap += $(raddbdir)/ldap\.attrmap PKGFILES_CSWfreeradius-ldap += $(raddbdir)/modules/ldap This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Tue Dec 7 04:20:06 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Tue, 07 Dec 2010 03:20:06 +0000 Subject: [csw-devel] SF.net SVN: gar:[11825] csw/mgar/pkg/logwatch/trunk/Makefile Message-ID: Revision: 11825 http://gar.svn.sourceforge.net/gar/?rev=11825&view=rev Author: bdwalton Date: 2010-12-07 03:20:06 +0000 (Tue, 07 Dec 2010) Log Message: ----------- logwatch: drop a checkpkg override now that coreutils exists Modified Paths: -------------- csw/mgar/pkg/logwatch/trunk/Makefile Modified: csw/mgar/pkg/logwatch/trunk/Makefile =================================================================== --- csw/mgar/pkg/logwatch/trunk/Makefile 2010-12-07 02:22:06 UTC (rev 11824) +++ csw/mgar/pkg/logwatch/trunk/Makefile 2010-12-07 03:20:06 UTC (rev 11825) @@ -31,7 +31,6 @@ TEST_SCRIPTS = INSTALL_SCRIPTS = custom -CHECKPKG_OVERRIDES_CSWlogwatch += unidentified-dependency|CSWcoreutils CHECKPKG_OVERRIDES_CSWlogwatch += surplus-dependency|CSWggrep CHECKPKG_OVERRIDES_CSWlogwatch += surplus-dependency|CSWfortune CHECKPKG_OVERRIDES_CSWlogwatch += surplus-dependency|CSWcoreutils This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Tue Dec 7 16:02:51 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Tue, 07 Dec 2010 15:02:51 +0000 Subject: [csw-devel] SF.net SVN: gar:[11826] csw/mgar/pkg/pacparser/trunk Message-ID: Revision: 11826 http://gar.svn.sourceforge.net/gar/?rev=11826&view=rev Author: dmichelsen Date: 2010-12-07 15:02:51 +0000 (Tue, 07 Dec 2010) Log Message: ----------- pacparser: Add a ton of patches Modified Paths: -------------- csw/mgar/pkg/pacparser/trunk/Makefile Added Paths: ----------- csw/mgar/pkg/pacparser/trunk/files/0001-Adjust-Makefile.patch csw/mgar/pkg/pacparser/trunk/files/0002-Fix-nullpointer-bug.patch csw/mgar/pkg/pacparser/trunk/files/0003-Only-GNU-grep-knows-q.patch csw/mgar/pkg/pacparser/trunk/files/0004-Some-more-Makefile-tweaks.patch csw/mgar/pkg/pacparser/trunk/files/0005-Fix-soname-and-pactester-compilation.patch csw/mgar/pkg/pacparser/trunk/files/0006-Add-flags-to-make-library-self-sufficient.patch csw/mgar/pkg/pacparser/trunk/files/0007-Add-config-for-spidermonkey-i386.patch csw/mgar/pkg/pacparser/trunk/files/0008-Always-set-myIpAddr-to-127.0.0.1-or-tests-on-current.patch Modified: csw/mgar/pkg/pacparser/trunk/Makefile =================================================================== --- csw/mgar/pkg/pacparser/trunk/Makefile 2010-12-07 03:20:06 UTC (rev 11825) +++ csw/mgar/pkg/pacparser/trunk/Makefile 2010-12-07 15:02:51 UTC (rev 11826) @@ -18,10 +18,74 @@ MASTER_SITES = $(GOOGLE_MIRROR) DISTFILES = $(DISTNAME).tar.gz +PATCHFILES = 0001-Adjust-Makefile.patch + +# Reported upstream as +# http://code.google.com/p/pacparser/issues/detail?id=6 +PATCHFILES += 0002-Fix-nullpointer-bug.patch + +PATCHFILES += 0003-Only-GNU-grep-knows-q.patch +PATCHFILES += 0004-Some-more-Makefile-tweaks.patch +PATCHFILES += 0005-Fix-soname-and-pactester-compilation.patch +PATCHFILES += 0006-Add-flags-to-make-library-self-sufficient.patch +PATCHFILES += 0007-Add-config-for-spidermonkey-i386.patch +PATCHFILES += 0008-Always-set-myIpAddr-to-127.0.0.1-or-tests-on-current.patch + # File name regex to get notifications about upstream software releases UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz -BUILD64 = 1 -CONFIGURE_ARGS = $(DIRPATHS) +PACKAGES = CSWpacparser CSWlibpacparser1 CSWlibpacparser-devel CSWpy-libpacparser +CATALOGNAME_CSWpacparser = pacparser +CATALOGNAME_CSWlibpacparser1 = libpacparser1 +CATALOGNAME_CSWlibpacparser-devel = libpacparser_devel +CATALOGNAME_CSWpy-libpacparser = py_libpacparser +SPKG_DESC_CSWpacparser = $(DESCRIPTION) +SPKG_DESC_CSWlibpacparser1 = Library libpacparser.so.1 +SPKG_DESC_CSWlibpacparser-devel = Development Files for libpacparser.so +SPKG_DESC_CSWpy-libpacparser = Python Bindings for libpacparser + +RUNTIME_DEP_PKGS_CSWpacparser = CSWlibpacparser1 +RUNTIME_DEP_PKGS_CSWlibpacparser-devel = CSWlibpacparser1 +RUNTIME_DEP_PKGS_CSWpy-libpacparser = CSWlibpython2-6-1-0 CSWpython + +VENDOR_URL = http://code.google.com/p/pacparser/ + +# There is some Python stuff in the package +PYCOMPILE = 1 + +NOISALIST = 1 + +CONFIGURE_SCRIPTS = + +BUILD_SCRIPTS = $(WORKSRC)/src/Makefile +BUILD_ARGS = all pymod +BUILD_OVERRIDE_VARS = PREFIX +BUILD_OVERRIDE_VAR_PREFIX = $(prefix) + +# Tests are run after build +TEST_SCRIPTS = + +INSTALL_SCRIPTS = $(WORKSRC)/src/Makefile +INSTALL_ARGS = install install-pymod +INSTALL_OVERRIDE_DIRS = PREFIX +PREFIX=$(prefix) + +PKGFILES_CSWlibpacparser1 = $(PKGFILES_RT) +PKGFILES_CSWlibpacparser-devel = $(PKGFILES_DEVEL) +PKGFILES_CSWlibpacparser-devel += $(docdir)/pacparser/html/.* +PKGFILES_CSWlibpacparser-devel += .*\.c +PKGFILES_CSWpy-libpacparser = $(libdir)/python/.* +PKGFILES_CSWpy-libpacparser += .*\.py + include gar/category.mk + +# Needed for 'install' during install-phase +PATH := /opt/csw/gnu:$(PATH) + +post-extract-modulated: + @# We have patched something in although the package has not been unpacked. + @# Make sure it is uncompressed afterwards. + -cd $(WORKSRC)/src && gtar xzvf spidermonkey/js-?.?.?.tar.gz -C spidermonkey + $(if $(filter sparc,$(GARCH)),echo "Sparc is fast!!",rm -f $(WORKSRC)/src/spidermonkey/js/src/lock_SunOS.s) + @$(MAKECOOKIE) Added: csw/mgar/pkg/pacparser/trunk/files/0001-Adjust-Makefile.patch =================================================================== --- csw/mgar/pkg/pacparser/trunk/files/0001-Adjust-Makefile.patch (rev 0) +++ csw/mgar/pkg/pacparser/trunk/files/0001-Adjust-Makefile.patch 2010-12-07 15:02:51 UTC (rev 11826) @@ -0,0 +1,55 @@ +From 8460d62468b9c2067ee473da0e1013a869b2791f Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Tue, 7 Dec 2010 12:09:01 +0100 +Subject: [PATCH 1/8] Adjust Makefile + +--- + src/Makefile | 10 +++++----- + 1 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index 804dd86..b1cc23f 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -38,9 +38,9 @@ LIB_VER = 1 + SO_SUFFIX = so + LIBRARY = $(LIBRARY_NAME).$(SO_SUFFIX).$(LIB_VER) + MKSHLIB = $(CC) -shared +-LIB_OPTS = -Wl,-soname=$(LIBRARY) -Wl,-exclude-libs=libjs.a ++LIB_OPTS = -Wl,-soname=$(LIBRARY) + SHFLAGS = -fPIC +-SMCFLAGS = -DHAVE_VA_COPY -DVA_COPY=__va_copy ++SMCFLAGS = -DHAVE_VA_COPY -DVA_COPY=va_copy + + ifeq ($(OS_ARCH),Darwin) + SO_SUFFIX = dylib +@@ -51,7 +51,7 @@ ifeq ($(OS_ARCH),Darwin) + SMCFLAGS = + endif + +-CFLAGS = -g -DXP_UNIX -Wall -DVERSION=$(VERSION) ++CFLAGS = -g -DXP_UNIX -DVERSION=$(VERSION) + + ifndef PYTHON + PYTHON = python +@@ -72,7 +72,7 @@ MAN_PREFIX = $(PREFIX)/share/man + all: testpactester + + spidermonkey/js/src: spidermonkey/js-?.?.?.tar.gz +- tar xzvf spidermonkey/js-?.?.?.tar.gz -C spidermonkey ++ gtar xzvf spidermonkey/js-?.?.?.tar.gz -C spidermonkey + + jsapi_buildstamp: spidermonkey/js/src + cd spidermonkey && SMCFLAGS="$(SHFLAGS) $(SMCFLAGS)" $(MAKE) jsapi +@@ -92,7 +92,7 @@ $(LIBRARY_LINK): $(LIBRARY) + ln -sf $(LIBRARY) $(LIBRARY_LINK) + + pactester: pactester.c pacparser.h $(LIBRARY_LINK) +- $(CC) pactester.c -o pactester -lpacparser -L. -I. ++ $(CC) pactester.c -o pactester -L. -lpacparser -I. -lsocket -lnsl + + testpactester: pactester + echo "Running tests for pactester." +-- +1.7.3.2 + Added: csw/mgar/pkg/pacparser/trunk/files/0002-Fix-nullpointer-bug.patch =================================================================== --- csw/mgar/pkg/pacparser/trunk/files/0002-Fix-nullpointer-bug.patch (rev 0) +++ csw/mgar/pkg/pacparser/trunk/files/0002-Fix-nullpointer-bug.patch 2010-12-07 15:02:51 UTC (rev 11826) @@ -0,0 +1,25 @@ +From 9b90310b830099acbd0b7339f534970e74d47c3a Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Tue, 7 Dec 2010 12:09:29 +0100 +Subject: [PATCH 2/8] Fix nullpointer bug + +--- + src/pacparser.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/pacparser.c b/src/pacparser.c +index 315f854..dd6a840 100644 +--- a/src/pacparser.c ++++ b/src/pacparser.c +@@ -112,7 +112,7 @@ resolve_host(const char *hostname, char *ipaddr_list, int max_results) + if (ipaddr_list[0] == '\0') sprintf(ipaddr_list, "%s", ipaddr); + else sprintf(ipaddr_list, "%s;%s", ipaddr_list, ipaddr); + } +- freeaddrinfo(ai); ++ freeaddrinfo(result); + return 0; + } + +-- +1.7.3.2 + Added: csw/mgar/pkg/pacparser/trunk/files/0003-Only-GNU-grep-knows-q.patch =================================================================== --- csw/mgar/pkg/pacparser/trunk/files/0003-Only-GNU-grep-knows-q.patch (rev 0) +++ csw/mgar/pkg/pacparser/trunk/files/0003-Only-GNU-grep-knows-q.patch 2010-12-07 15:02:51 UTC (rev 11826) @@ -0,0 +1,25 @@ +From 72f1b20d04215976c6df42f40d10b90e8cbf6773 Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Tue, 7 Dec 2010 12:09:46 +0100 +Subject: [PATCH 3/8] Only GNU grep knows -q + +--- + tests/runtests.sh | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/tests/runtests.sh b/tests/runtests.sh +index 616cc6a..09a6b1e 100755 +--- a/tests/runtests.sh ++++ b/tests/runtests.sh +@@ -23,7 +23,7 @@ fi + + while read line + do +- echo "$line" | grep -q "^#" && continue ++ echo "$line" | ggrep -q "^#" && continue + PARAMS=$(echo "$line"|cut -d"|" -f1) + EXPECTED_RESULT=$(echo $line|cut -d"|" -f2) + RESULT=$($PACTESTER -p $PACFILE $PARAMS) +-- +1.7.3.2 + Added: csw/mgar/pkg/pacparser/trunk/files/0004-Some-more-Makefile-tweaks.patch =================================================================== --- csw/mgar/pkg/pacparser/trunk/files/0004-Some-more-Makefile-tweaks.patch (rev 0) +++ csw/mgar/pkg/pacparser/trunk/files/0004-Some-more-Makefile-tweaks.patch 2010-12-07 15:02:51 UTC (rev 11826) @@ -0,0 +1,34 @@ +From 8c97093a01763998f67272c479f59fa98d32c49c Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Tue, 7 Dec 2010 13:27:46 +0100 +Subject: [PATCH 4/8] Some more Makefile tweaks + +--- + src/Makefile | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index b1cc23f..af7a410 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -40,7 +40,7 @@ LIBRARY = $(LIBRARY_NAME).$(SO_SUFFIX).$(LIB_VER) + MKSHLIB = $(CC) -shared + LIB_OPTS = -Wl,-soname=$(LIBRARY) + SHFLAGS = -fPIC +-SMCFLAGS = -DHAVE_VA_COPY -DVA_COPY=va_copy ++SMCFLAGS = -DHAVE_VA_COPY -DVA_COPY=va_copy $(CFLAGS) + + ifeq ($(OS_ARCH),Darwin) + SO_SUFFIX = dylib +@@ -51,7 +51,7 @@ ifeq ($(OS_ARCH),Darwin) + SMCFLAGS = + endif + +-CFLAGS = -g -DXP_UNIX -DVERSION=$(VERSION) ++CFLAGS += -DXP_UNIX -DVERSION=$(VERSION) + + ifndef PYTHON + PYTHON = python +-- +1.7.3.2 + Added: csw/mgar/pkg/pacparser/trunk/files/0005-Fix-soname-and-pactester-compilation.patch =================================================================== --- csw/mgar/pkg/pacparser/trunk/files/0005-Fix-soname-and-pactester-compilation.patch (rev 0) +++ csw/mgar/pkg/pacparser/trunk/files/0005-Fix-soname-and-pactester-compilation.patch 2010-12-07 15:02:51 UTC (rev 11826) @@ -0,0 +1,34 @@ +From e285a716d2a06a4da42f24d4d72b74e094896444 Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Tue, 7 Dec 2010 13:30:08 +0100 +Subject: [PATCH 5/8] Fix soname and pactester compilation + +--- + src/Makefile | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index af7a410..b3abb27 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -38,7 +38,7 @@ LIB_VER = 1 + SO_SUFFIX = so + LIBRARY = $(LIBRARY_NAME).$(SO_SUFFIX).$(LIB_VER) + MKSHLIB = $(CC) -shared +-LIB_OPTS = -Wl,-soname=$(LIBRARY) ++LIB_OPTS = -h $(LIBRARY) + SHFLAGS = -fPIC + SMCFLAGS = -DHAVE_VA_COPY -DVA_COPY=va_copy $(CFLAGS) + +@@ -92,7 +92,7 @@ $(LIBRARY_LINK): $(LIBRARY) + ln -sf $(LIBRARY) $(LIBRARY_LINK) + + pactester: pactester.c pacparser.h $(LIBRARY_LINK) +- $(CC) pactester.c -o pactester -L. -lpacparser -I. -lsocket -lnsl ++ $(CC) $(CFLAGS) pactester.c -o pactester -L. -lpacparser -I. -lsocket -lnsl + + testpactester: pactester + echo "Running tests for pactester." +-- +1.7.3.2 + Added: csw/mgar/pkg/pacparser/trunk/files/0006-Add-flags-to-make-library-self-sufficient.patch =================================================================== --- csw/mgar/pkg/pacparser/trunk/files/0006-Add-flags-to-make-library-self-sufficient.patch (rev 0) +++ csw/mgar/pkg/pacparser/trunk/files/0006-Add-flags-to-make-library-self-sufficient.patch 2010-12-07 15:02:51 UTC (rev 11826) @@ -0,0 +1,25 @@ +From cd3ca684d7f4955c964ffb666d31ca5a396941c2 Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Tue, 7 Dec 2010 13:37:57 +0100 +Subject: [PATCH 6/8] Add flags to make library self-sufficient + +--- + src/Makefile | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/Makefile b/src/Makefile +index b3abb27..66b2263 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -59,7 +59,7 @@ endif + + # Spidermonkey library. + CFLAGS += -Ispidermonkey/js/src +-LDFLAGS += -lm ++LDFLAGS += -lm -lsocket -lnsl + + LIBRARY_LINK = $(LIBRARY_NAME).$(SO_SUFFIX) + PREFIX := $(DESTDIR)$(PREFIX) +-- +1.7.3.2 + Added: csw/mgar/pkg/pacparser/trunk/files/0007-Add-config-for-spidermonkey-i386.patch =================================================================== --- csw/mgar/pkg/pacparser/trunk/files/0007-Add-config-for-spidermonkey-i386.patch (rev 0) +++ csw/mgar/pkg/pacparser/trunk/files/0007-Add-config-for-spidermonkey-i386.patch 2010-12-07 15:02:51 UTC (rev 11826) @@ -0,0 +1,106 @@ +From 7f7e1c52c65e2e2085b0f689490b03e8d022cac2 Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Tue, 7 Dec 2010 14:25:03 +0100 +Subject: [PATCH 7/8] Add config for spidermonkey i386 + +--- + src/spidermonkey/js/src/config/SunOS5.9_i86pc.mk | 87 ++++++++++++++++++++++ + 1 files changed, 87 insertions(+), 0 deletions(-) + create mode 100644 src/spidermonkey/js/src/config/SunOS5.9_i86pc.mk + +diff --git a/src/spidermonkey/js/src/config/SunOS5.9_i86pc.mk b/src/spidermonkey/js/src/config/SunOS5.9_i86pc.mk +new file mode 100644 +index 0000000..bb4561f +--- /dev/null ++++ b/src/spidermonkey/js/src/config/SunOS5.9_i86pc.mk +@@ -0,0 +1,87 @@ ++# -*- Mode: makefile -*- ++# ++# ***** BEGIN LICENSE BLOCK ***** ++# Version: MPL 1.1/GPL 2.0/LGPL 2.1 ++# ++# The contents of this file are subject to the Mozilla Public License Version ++# 1.1 (the "License"); you may not use this file except in compliance with ++# the License. You may obtain a copy of the License at ++# http://www.mozilla.org/MPL/ ++# ++# Software distributed under the License is distributed on an "AS IS" basis, ++# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License ++# for the specific language governing rights and limitations under the ++# License. ++# ++# The Original Code is Mozilla Communicator client code, released ++# March 31, 1998. ++# ++# The Initial Developer of the Original Code is ++# Netscape Communications Corporation. ++# Portions created by the Initial Developer are Copyright (C) 1998 ++# the Initial Developer. All Rights Reserved. ++# ++# Contributor(s): ++# ++# Alternatively, the contents of this file may be used under the terms of ++# either the GNU General Public License Version 2 or later (the "GPL"), or ++# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ++# in which case the provisions of the GPL or the LGPL are applicable instead ++# of those above. If you wish to allow use of your version of this file only ++# under the terms of either the GPL or the LGPL, and not to allow others to ++# use your version of this file under the terms of the MPL, indicate your ++# decision by deleting the provisions above and replace them with the notice ++# and other provisions required by the GPL or the LGPL. If you do not delete ++# the provisions above, a recipient may use your version of this file under ++# the terms of any one of the MPL, the GPL or the LGPL. ++# ++# ***** END LICENSE BLOCK ***** ++ ++# ++# Config stuff for SunOS5.5 ++# ++ ++AS = /usr/ccs/bin/as ++ifndef NS_USE_NATIVE ++CC = gcc ++CCC = g++ ++CFLAGS += -Wall -Wno-format ++else ++CC = cc ++CCC = CC ++endif ++ ++RANLIB = echo ++ ++#.c.o: ++# $(CC) -c -MD $*.d $(CFLAGS) $< ++ ++CPU_ARCH = x86 ++GFX_ARCH = x ++ ++OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -DSOLARIS -DHAVE_LOCALTIME_R ++OS_LIBS = -lsocket -lnsl -ldl ++ ++ASFLAGS += -P -L -K PIC -D_ASM -D__STDC__=0 ++ ++HAVE_PURIFY = 1 ++ ++NOSUCHFILE = /solaris-rm-f-sucks ++ ++ifeq ($(OS_CPUARCH),sun4u) # ultra sparc? ++ifeq ($(CC),gcc) # using gcc? ++ifndef JS_NO_ULTRA # do we want ultra? ++ifdef JS_THREADSAFE # only in thread-safe mode ++DEFINES += -DULTRA_SPARC ++DEFINES += -Wa,-xarch=v8plus,-DULTRA_SPARC ++else ++ASFLAGS += -xarch=v8plus -DULTRA_SPARC ++endif ++endif ++endif ++endif ++ ++MKSHLIB = $(LD) -G ++ ++# Use the editline library to provide line-editing support. ++JS_EDITLINE = 1 +-- +1.7.3.2 + Added: csw/mgar/pkg/pacparser/trunk/files/0008-Always-set-myIpAddr-to-127.0.0.1-or-tests-on-current.patch =================================================================== --- csw/mgar/pkg/pacparser/trunk/files/0008-Always-set-myIpAddr-to-127.0.0.1-or-tests-on-current.patch (rev 0) +++ csw/mgar/pkg/pacparser/trunk/files/0008-Always-set-myIpAddr-to-127.0.0.1-or-tests-on-current.patch 2010-12-07 15:02:51 UTC (rev 11826) @@ -0,0 +1,34 @@ +From 1a11df76feae6867b665d5e7c2d70ad8151a0823 Mon Sep 17 00:00:00 2001 +From: Dagobert Michelsen +Date: Tue, 7 Dec 2010 15:44:37 +0100 +Subject: [PATCH 8/8] Always set myIpAddr to 127.0.0.1 or tests on current9x fails + +--- + tests/runtests.sh | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tests/runtests.sh b/tests/runtests.sh +index 09a6b1e..61663f8 100755 +--- a/tests/runtests.sh ++++ b/tests/runtests.sh +@@ -26,7 +26,7 @@ while read line + echo "$line" | ggrep -q "^#" && continue + PARAMS=$(echo "$line"|cut -d"|" -f1) + EXPECTED_RESULT=$(echo $line|cut -d"|" -f2) +- RESULT=$($PACTESTER -p $PACFILE $PARAMS) ++ RESULT=$($PACTESTER -c 127.0.0.1 -p $PACFILE $PARAMS) + if [ $? != 0 ]; then + echo "pactester execution failed." + echo "Command tried: $PACTESTER -p $PACFILE $PARAMS" +@@ -39,7 +39,7 @@ while read line + [ $DEBUG ] && echo "Params: $PARAMS" + if [ "$RESULT" != "$EXPECTED_RESULT" ]; then + echo "Test failed: got \"$RESULT\", expected \"$EXPECTED_RESULT\"" +- echo "Command tried: $PACTESTER -p $PACFILE $PARAMS" ++ echo "Command tried: $PACTESTER -c 127.0.0.1 -p $PACFILE $PARAMS" + echo "Running with debug mode on..." + echo "DEBUG=1 $PACTESTER -p $PACFILE $PARAMS" + DEBUG=1 $PACTESTER -p $PACFILE $PARAMS +-- +1.7.3.2 + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Tue Dec 7 22:30:34 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Tue, 07 Dec 2010 21:30:34 +0000 Subject: [csw-devel] SF.net SVN: gar:[11827] csw/mgar/pkg/gmt/trunk/Makefile Message-ID: Revision: 11827 http://gar.svn.sourceforge.net/gar/?rev=11827&view=rev Author: gadavis Date: 2010-12-07 21:30:34 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Get GMT to clear checkpkg gauntlet Modified Paths: -------------- csw/mgar/pkg/gmt/trunk/Makefile Modified: csw/mgar/pkg/gmt/trunk/Makefile =================================================================== --- csw/mgar/pkg/gmt/trunk/Makefile 2010-12-07 15:02:51 UTC (rev 11826) +++ csw/mgar/pkg/gmt/trunk/Makefile 2010-12-07 21:30:34 UTC (rev 11827) @@ -35,7 +35,8 @@ TEST_SCRIPTS = ## GMT doesn't use the GNU convention for unpacked tarballs -WORKSRC = $(WORKDIR)/GMT$(GARVERSION) +#WORKSRC = $(WORKDIR)/GMT$(GARVERSION) +DISTNAME = GMT$(GMT_VERSION) ## Arguments passed to the ./configure script. Configure ignores the various ## environment variables so we have to pass CFLAGS and friends @@ -60,7 +61,10 @@ ## order to make a map of any real substance CHECKPKG_OVERRIDES_CSWgmt += surplus-dependency|CSWgmtcoast +INSTALL_ARGS = install-all + ## Gar's license file finding routine isn't aware of how to find files when WORKSRC has been redefined, so we need to put the license file somewhere that it can find. -post-install-modulated: - @cp $(WORKSRC)/LICENSE.TXT $(WORKDIR)/COPYING +#post-install-modulated: +# @cp $(WORKSRC)/LICENSE.TXT $(WORKDIR)/COPYING +LICENSE = LICENSE.TXT include gar/category.mk This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Tue Dec 7 22:32:35 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Tue, 07 Dec 2010 21:32:35 +0000 Subject: [csw-devel] SF.net SVN: gar:[11828] csw/mgar/pkg/freeradius/trunk Message-ID: Revision: 11828 http://gar.svn.sourceforge.net/gar/?rev=11828&view=rev Author: gadavis Date: 2010-12-07 21:32:35 +0000 (Tue, 07 Dec 2010) Log Message: ----------- add init script Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Added Paths: ----------- csw/mgar/pkg/freeradius/trunk/files/cswfreeradius Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 21:30:34 UTC (rev 11827) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 21:32:35 UTC (rev 11828) @@ -9,6 +9,7 @@ MASTER_SITES = ftp://ftp.freeradius.org:/pub/freeradius/ DISTFILES = $(GARNAME)-server-$(GARVERSION).tar.gz +DISTFILES += cswfreeradius DISTNAME = $(GARNAME)-server-$(GARVERSION) UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz @@ -141,6 +142,16 @@ INSTALL_ARGS += R=$(DESTDIR) +INITSMF = /etc/opt/csw/init.d/cswapache2 + include gar/category.mk PATH := /opt/csw/gnu:$(PATH) + +post-install-modulated: copy-local-files + +# Copy in specialized templates +copy-local-files: + @ginstall -d $(DESTDIR)/etc/opt/csw/init.d + @ginstall $(WORKDIR)/cswfreeradius $(DESTDIR)/etc/opt/csw/init.d + @$(MAKECOOKIE) Added: csw/mgar/pkg/freeradius/trunk/files/cswfreeradius =================================================================== --- csw/mgar/pkg/freeradius/trunk/files/cswfreeradius (rev 0) +++ csw/mgar/pkg/freeradius/trunk/files/cswfreeradius 2010-12-07 21:32:35 UTC (rev 11828) @@ -0,0 +1,100 @@ +#!/bin/sh +# +# radiusd Start the radius daemon. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +# +# Copyright (C) 2001-2008 The FreeRADIUS Project http://www.freeradius.org + +prefix=/opt/csw +exec_prefix=/opt/csw +sbindir=/opt/csw/sbin +localstatedir=/var/opt/csw +logdir=${localstatedir}/log/radius +rundir=${localstatedir}/run/radiusd +sysconfdir=/etc/opt/csw + +# +# If you have issues with OpenSSL, uncomment these next lines. +# +# Something similar may work for MySQL, and you may also +# have to LD_PRELOAD libz.so +# +#LD_LIBRARY_PATH= -lcrypto -lssl -lcrypto +#LD_RUN_PATH= -lcrypto -lssl -lcrypto: +#LD_PRELOAD= -lcrypto -lssl -lcryptolibcrypto.so +export LD_LIBRARY_PATH LD_RUN_PATH LD_PRELOAD + +RADIUSD=$sbindir/radiusd +RADDBDIR=/etc/opt/csw/raddb +DESC="FreeRADIUS" + +# +# See 'man radiusd' for details on command-line options. +# +ARGS="" + +test -f $RADIUSD || exit 0 +test -f $RADDBDIR/radiusd.conf || exit 0 + +#if [ ! -d $rundir ] ; then +# mkdir $rundir +# chown radmin:radius $rundir +# chmod 775 $rundir +#fi +# +#if [ ! -d $logdir ] ; then +# mkdir $logdir +# chown radmin:radius $logdir +# chmod 770 $logdir +# chmod g+s $logdir +#fi +# +#if [ ! -f $logdir/radius.log ]; then +# touch $logdir/radius.log +#fi +# +#chown radmin:radius $logdir/radius.log +#chmod 660 $logdir/radius.log + +case "$1" in + start) + echo -n "Starting $DESC:" + $RADIUSD $ARGS + echo "radiusd" + ;; + stop) + [ -z "$2" ] && echo -n "Stopping $DESC: " + [ -f $rundir/radiusd.pid ] && kill -TERM `cat $rundir/radiusd.pid` + [ -z "$2" ] && echo "radiusd." + ;; + reload|force-reload) + echo "Reloading $DESC configuration files." + [ -f $rundir/radiusd.pid ] && kill -HUP `cat $rundir/radiusd.pid` + ;; + restart) + sh $0 stop quiet + sleep 3 + sh $0 start + ;; + check) + $RADIUSD -C $ARGS + ;; + *) + echo "Usage: /etc/init.d/$RADIUS {start|stop|reload|restart|check}" + exit 1 +esac + +exit 0 Property changes on: csw/mgar/pkg/freeradius/trunk/files/cswfreeradius ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Tue Dec 7 22:38:33 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Tue, 07 Dec 2010 21:38:33 +0000 Subject: [csw-devel] SF.net SVN: gar:[11829] csw/mgar/pkg/freeradius/trunk/files/cswfreeradius Message-ID: Revision: 11829 http://gar.svn.sourceforge.net/gar/?rev=11829&view=rev Author: gadavis Date: 2010-12-07 21:38:33 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Add some CSW tweaks to init script Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/files/cswfreeradius Modified: csw/mgar/pkg/freeradius/trunk/files/cswfreeradius =================================================================== --- csw/mgar/pkg/freeradius/trunk/files/cswfreeradius 2010-12-07 21:32:35 UTC (rev 11828) +++ csw/mgar/pkg/freeradius/trunk/files/cswfreeradius 2010-12-07 21:38:33 UTC (rev 11829) @@ -1,6 +1,6 @@ #!/bin/sh # -# radiusd Start the radius daemon. +# cswfreeradius Start the radiusd daemon. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -17,6 +17,9 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # # Copyright (C) 2001-2008 The FreeRADIUS Project http://www.freeradius.org +# +# Additional modifications by OpenCSW +#FMRI network prefix=/opt/csw exec_prefix=/opt/csw @@ -35,7 +38,7 @@ #LD_LIBRARY_PATH= -lcrypto -lssl -lcrypto #LD_RUN_PATH= -lcrypto -lssl -lcrypto: #LD_PRELOAD= -lcrypto -lssl -lcryptolibcrypto.so -export LD_LIBRARY_PATH LD_RUN_PATH LD_PRELOAD +#export LD_LIBRARY_PATH LD_RUN_PATH LD_PRELOAD RADIUSD=$sbindir/radiusd RADDBDIR=/etc/opt/csw/raddb @@ -93,7 +96,7 @@ $RADIUSD -C $ARGS ;; *) - echo "Usage: /etc/init.d/$RADIUS {start|stop|reload|restart|check}" + echo "Usage: $0 {start|stop|reload|restart|check}" exit 1 esac This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Tue Dec 7 23:13:56 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Tue, 07 Dec 2010 22:13:56 +0000 Subject: [csw-devel] SF.net SVN: gar:[11830] csw/mgar/pkg/netcdf/trunk/Makefile Message-ID: Revision: 11830 http://gar.svn.sourceforge.net/gar/?rev=11830&view=rev Author: gadavis Date: 2010-12-07 22:13:56 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Make package descriptions more descriptive, remove debug flag, remove extraneous checkpkg overrides Modified Paths: -------------- csw/mgar/pkg/netcdf/trunk/Makefile Modified: csw/mgar/pkg/netcdf/trunk/Makefile =================================================================== --- csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-07 21:38:33 UTC (rev 11829) +++ csw/mgar/pkg/netcdf/trunk/Makefile 2010-12-07 22:13:56 UTC (rev 11830) @@ -22,7 +22,7 @@ PACKAGES = CSWnetcdf CATALOGNAME_CSWnetcdf = netcdf -SPKG_DESC_CSWnetcdf = Machine-independent data formats for array-oriented scientific data +SPKG_DESC_CSWnetcdf = NetCDF - Machine-independent data formats for array-oriented scientific data RUNTIME_DEP_PKGS_CSWnetcdf += CSWhdf5rt RUNTIME_DEP_PKGS_CSWnetcdf += CSWzlib RUNTIME_DEP_PKGS_CSWnetcdf += CSWlibnetcdf6 @@ -38,7 +38,7 @@ PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/amd64/libnetcdf.so.6.0.0 PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/amd64/libnetcdf.so.6\.[0-9\.]+ PKGFILES_CSWlibnetcdf6 += /opt/csw/lib/amd64/libnetcdf.so.6 -SPKG_DESC_CSWlibnetcdf6 = Machine-independent data formats for array-oriented scientific data, libnetcdf.so.6 +SPKG_DESC_CSWlibnetcdf6 = C shared library for netcdf - libnetcdf.so.6 RUNTIME_DEP_PKGS_CSWlibnetcdf6 = CSWhdf5rt RUNTIME_DEP_PKGS_CSWlibnetcdf6 += CSWgcc4corert RUNTIME_DEP_PKGS_CSWlibnetcdf6 += CSWgcc4core # Mantis Bug #4497, missing 64 symlink @@ -54,7 +54,7 @@ PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/amd64/libnetcdf_c\+\+.so.5.0.0 PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/amd64/libnetcdf_c\+\+.so.5\.[0-9\.]+ PKGFILES_CSWlibnetcdf-c++5 += /opt/csw/lib/amd64/libnetcdf_c\+\+.so.5 -SPKG_DESC_CSWlibnetcdf-c++5 += Machine-independent data formats for array-oriented scientific data, libnetcdf_c++.so.5 +SPKG_DESC_CSWlibnetcdf-c++5 += C++ shared library for netcdf - libnetcdf_c++.so.5 RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 = CSWhdf5rt RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWgcc4corert CSWgcc4core CSWgcc4g++rt RUNTIME_DEP_PKGS_CSWlibnetcdf-c++5 += CSWlibnetcdf6 @@ -70,7 +70,7 @@ PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5.0.0 PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5\.[0-9\.]+ PKGFILES_CSWlibnetcdff5 += /opt/csw/lib/amd64/libnetcdff.so.5 -SPKG_DESC_CSWlibnetcdff5 = Machine-independent data formats for array-oriented scientific data, libnetcdff.so.5 +SPKG_DESC_CSWlibnetcdff5 = Fortran shared libraries for netcdf - libnetcdff.so.5 RUNTIME_DEP_PKGS_CSWlibnetcdff5 = CSWhdf5rt RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWgcc4gfortranrt CSWgcc4corert CSWgcc4core RUNTIME_DEP_PKGS_CSWlibnetcdff5 += CSWlibnetcdf6 @@ -130,8 +130,6 @@ ## Needed for "Large file support" in NetCDF EXTRA_CPPFLAGS = -D_FILE_OFFSET_BITS=64 - -DEBUG_PACKAGING = 1 ## Add GCC4 lib dir to CFLAGS and friends because gcc3core_rt puts it's ## libgcc_s.so in /opt/csw/lib and this breaks the build in all sorts of weird ## places. @@ -154,12 +152,6 @@ ## OPT_FLAGS_GCC = -O2 -pipe OPT_FLAGS_GCC = -## Mantis bug 4497 means there's no 64 symlink in CSWgcc4corert so you can't -## link against these libraries without CSWgcc4core -CHECKPKG_OVERRIDES_CSWlibnetcdf-c++5 += surplus-dependency|CSWgcc4core -CHECKPKG_OVERRIDES_CSWlibnetcdf6 += surplus-dependency|CSWgcc4core -CHECKPKG_OVERRIDES_CSWlibnetcdff5 += surplus-dependency|CSWgcc4core - ## Git patching is failing on a remerge/repackage NOGITPATCH = 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Tue Dec 7 23:22:34 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Tue, 07 Dec 2010 22:22:34 +0000 Subject: [csw-devel] SF.net SVN: gar:[11831] csw/mgar/pkg Message-ID: Revision: 11831 http://gar.svn.sourceforge.net/gar/?rev=11831&view=rev Author: skayser Date: 2010-12-07 22:22:34 +0000 (Tue, 07 Dec 2010) Log Message: ----------- parcellite: initial commit Added Paths: ----------- csw/mgar/pkg/parcellite/ csw/mgar/pkg/parcellite/branches/ csw/mgar/pkg/parcellite/tags/ csw/mgar/pkg/parcellite/trunk/ csw/mgar/pkg/parcellite/trunk/Makefile csw/mgar/pkg/parcellite/trunk/checksums csw/mgar/pkg/parcellite/trunk/files/ csw/mgar/pkg/parcellite/trunk/files/changelog.CSW Property changes on: csw/mgar/pkg/parcellite/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/parcellite/trunk/Makefile =================================================================== --- csw/mgar/pkg/parcellite/trunk/Makefile (rev 0) +++ csw/mgar/pkg/parcellite/trunk/Makefile 2010-12-07 22:22:34 UTC (rev 11831) @@ -0,0 +1,32 @@ +GARNAME = parcellite +GARVERSION = 0.9.2 +CATEGORIES = utils + +DESCRIPTION = Lightweight GTK+ clipboard manager +define BLURB + Parcellite is a stripped down, basic-features-only clipboard manager + with a small memory footprint for those who like simplicity. +endef + +MASTER_SITES = $(SF_MIRROR) +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz + +# There's no test suite +TEST_SCRIPTS = + +CONFIGURE_ARGS = $(DIRPATHS) + +# Not quite sure why "pkg-config gtk+-2.0 --libs" doesn't yield -lX11 also +EXTRA_LDFLAGS = -lX11 + +include gar/category.mk + +# Requires GNU gettext +PATH := /opt/csw/gnu:$(PATH) + +# Install changelog.CSW +post-merge: $(foreach P,$(_PKG_SPECS),install-changelog-$P) +install-changelog-%: + ginstall -D $(FILEDIR)/changelog.CSW \ + $(PKGROOT)$(docdir)/$(call catalogname,$*)/changelog.CSW + @$(MAKECOOKIE) Property changes on: csw/mgar/pkg/parcellite/trunk/Makefile ___________________________________________________________________ Added: svn:keywords + Id Added: csw/mgar/pkg/parcellite/trunk/checksums =================================================================== --- csw/mgar/pkg/parcellite/trunk/checksums (rev 0) +++ csw/mgar/pkg/parcellite/trunk/checksums 2010-12-07 22:22:34 UTC (rev 11831) @@ -0,0 +1 @@ +a650f6fe0fec96827b30ca3218a2b4df parcellite-0.9.2.tar.gz Added: csw/mgar/pkg/parcellite/trunk/files/changelog.CSW =================================================================== --- csw/mgar/pkg/parcellite/trunk/files/changelog.CSW (rev 0) +++ csw/mgar/pkg/parcellite/trunk/files/changelog.CSW 2010-12-07 22:22:34 UTC (rev 11831) @@ -0,0 +1,5 @@ +parcellite (0.9.2,REV=2010.12.07) + + * Initial release. + + -- Sebastian Kayser Tue, 7 Dec 2010 23:19:51 +0100 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Tue Dec 7 23:37:43 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Tue, 07 Dec 2010 22:37:43 +0000 Subject: [csw-devel] SF.net SVN: gar:[11832] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11832 http://gar.svn.sourceforge.net/gar/?rev=11832&view=rev Author: gadavis Date: 2010-12-07 22:37:42 +0000 (Tue, 07 Dec 2010) Log Message: ----------- Fix init script name, preserve radness... err contents... of raddb Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 22:22:34 UTC (rev 11831) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 22:37:42 UTC (rev 11832) @@ -35,6 +35,8 @@ # move all of the var stuff to /var/opt/csw localstatedir = /var$(prefix) +PRESERVECONF = $(raddbdir)/.* + CONFIGURE_ARGS = $(DIRPATHS) CONFIGURE_ARGS += CC=$(CC) CXX=$(CXX) F77=$(F77) FC=$(FC) CONFIGURE_ARGS += CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" @@ -142,7 +144,7 @@ INSTALL_ARGS += R=$(DESTDIR) -INITSMF = /etc/opt/csw/init.d/cswapache2 +INITSMF = /etc/opt/csw/init.d/cswfreeradius include gar/category.mk This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Tue Dec 7 23:42:43 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Tue, 07 Dec 2010 22:42:43 +0000 Subject: [csw-devel] SF.net SVN: gar:[11833] csw/mgar/pkg/parcellite/trunk/Makefile Message-ID: Revision: 11833 http://gar.svn.sourceforge.net/gar/?rev=11833&view=rev Author: skayser Date: 2010-12-07 22:42:43 +0000 (Tue, 07 Dec 2010) Log Message: ----------- parcellite: add runtime deps Modified Paths: -------------- csw/mgar/pkg/parcellite/trunk/Makefile Modified: csw/mgar/pkg/parcellite/trunk/Makefile =================================================================== --- csw/mgar/pkg/parcellite/trunk/Makefile 2010-12-07 22:37:42 UTC (rev 11832) +++ csw/mgar/pkg/parcellite/trunk/Makefile 2010-12-07 22:42:43 UTC (rev 11833) @@ -11,6 +11,15 @@ MASTER_SITES = $(SF_MIRROR) DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +RUNTIME_DEP_PKGS += CSWlibatk +RUNTIME_DEP_PKGS += CSWggettextrt +RUNTIME_DEP_PKGS += CSWfconfig +RUNTIME_DEP_PKGS += CSWglib2 +RUNTIME_DEP_PKGS += CSWftype2 +RUNTIME_DEP_PKGS += CSWpango +RUNTIME_DEP_PKGS += CSWgtk2 +RUNTIME_DEP_PKGS += CSWlibcairo + # There's no test suite TEST_SCRIPTS = This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Wed Dec 8 00:30:14 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Tue, 07 Dec 2010 23:30:14 +0000 Subject: [csw-devel] SF.net SVN: gar:[11834] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11834 http://gar.svn.sourceforge.net/gar/?rev=11834&view=rev Author: gadavis Date: 2010-12-07 23:30:13 +0000 (Tue, 07 Dec 2010) Log Message: ----------- be a bit more explicit with the preserved files in raddb Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 22:42:43 UTC (rev 11833) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 23:30:13 UTC (rev 11834) @@ -35,7 +35,18 @@ # move all of the var stuff to /var/opt/csw localstatedir = /var$(prefix) -PRESERVECONF = $(raddbdir)/.* +PRESERVECONF += $(raddbdir)/.*\.conf +PRESERVECONF += $(raddbdir)/acct_users +PRESERVECONF += $(raddbdir)/attrs.* +PRESERVECONF += $(raddbdir)/dictionary +PRESERVECONF += $(raddbdir)/certs/.*.cnf +PRESERVECONF += $(raddbdir)/hints +PRESERVECONF += $(raddbdir)/huntgroups +PRESERVECONF += $(raddbdir)/ldap.attrmap +PRESERVECONF += $(raddbdir)/policy.txt +PRESERVECONF += $(raddbdir)/preproxy_users +PRESERVECONF += $(raddbdir)/sql/.*/.*\.conf +PRESERVECONF += $(raddbdir)/users CONFIGURE_ARGS = $(DIRPATHS) CONFIGURE_ARGS += CC=$(CC) CXX=$(CXX) F77=$(F77) FC=$(FC) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Wed Dec 8 00:45:34 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Tue, 07 Dec 2010 23:45:34 +0000 Subject: [csw-devel] SF.net SVN: gar:[11835] csw/mgar/gar/v2/lib/python/package_checks.py Message-ID: Revision: 11835 http://gar.svn.sourceforge.net/gar/?rev=11835&view=rev Author: wahwah Date: 2010-12-07 23:45:34 +0000 (Tue, 07 Dec 2010) Log Message: ----------- checkpkg: A message for an init file class check Added a message and a GAR line suggestion for the init-file-missing-cswinitsmf-class error tag. Modified Paths: -------------- csw/mgar/gar/v2/lib/python/package_checks.py Modified: csw/mgar/gar/v2/lib/python/package_checks.py =================================================================== --- csw/mgar/gar/v2/lib/python/package_checks.py 2010-12-07 23:30:13 UTC (rev 11834) +++ csw/mgar/gar/v2/lib/python/package_checks.py 2010-12-07 23:45:34 UTC (rev 11835) @@ -256,6 +256,12 @@ error_mgr.ReportError( "init-file-missing-cswinitsmf-class", "%s class=%s" % (entry["path"], entry["class"])) + messenger.Message( + "The init file %s in the package has the %s class, while it " + "should have the cswinitsmf class, which takes advantage of " + "the SMF integration automation from cswclassutils." + % (entry["path"], entry["class"])) + messenger.SuggestGarLine("INITSMF = %s" % entry["path"]) # This is not an error, in fact, putting files into # /opt/csw/etc/init.d breaks packages. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Wed Dec 8 01:15:38 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Wed, 08 Dec 2010 00:15:38 +0000 Subject: [csw-devel] SF.net SVN: gar:[11836] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11836 http://gar.svn.sourceforge.net/gar/?rev=11836&view=rev Author: gadavis Date: 2010-12-08 00:15:38 +0000 (Wed, 08 Dec 2010) Log Message: ----------- Prune some config files for modules that are not included Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-07 23:45:34 UTC (rev 11835) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-08 00:15:38 UTC (rev 11836) @@ -43,6 +43,7 @@ PRESERVECONF += $(raddbdir)/hints PRESERVECONF += $(raddbdir)/huntgroups PRESERVECONF += $(raddbdir)/ldap.attrmap +PRESERVECONF += $(raddbdir)/modules/.* PRESERVECONF += $(raddbdir)/policy.txt PRESERVECONF += $(raddbdir)/preproxy_users PRESERVECONF += $(raddbdir)/sql/.*/.*\.conf @@ -61,15 +62,21 @@ CONFIGURE_ARGS += --enable-strict-dependencies CONFIGURE_ARGS += --enable-developer CONFIGURE_ARGS += --with-large-files --with-updfromto --with-edir +CONFIGURE_ARGS += --without-rlm_eap_ikev2 +CONFIGURE_ARGS += --without-rlm_sql_unixodbc +CONFIGURE_ARGS += --without-rlm_eap_tnc + +# We probably won't ever build these database bindings CONFIGURE_ARGS += --without-rlm_sql_firebird CONFIGURE_ARGS += --without-rlm_sql_freetds CONFIGURE_ARGS += --without-rlm_sql_iodbc -CONFIGURE_ARGS += --without-rlm_sql_oracle CONFIGURE_ARGS += --without-rlm_sql_sybase CONFIGURE_ARGS += --without-rlm_sql_db2 -CONFIGURE_ARGS += --without-rlm_eap_ikev2 -CONFIGURE_ARGS += --without-rlm_sql_unixodbc -CONFIGURE_ARGS += --without-rlm_eap_tnc +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sql/mssql +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sql/mssql/.* +CONFIGURE_ARGS += --without-rlm_sql_oracle +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sql/oracle +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sql/oracle/.* ## Individual Package definitions start here @@ -138,6 +145,8 @@ #CONFIGURE_ARGS += --with-rlm_sql_postgresql_include_dir=$(rlm_pgsql_inc) ## Comment out the following lines when building PostgreSQL support CONFIGURE_ARGS += --without-rlm_sql_postgresql +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sql/postgresql +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sql/postgresql/.* ## End pgsql exclusion lines ## Disabling MySQL because it's going to take a bunch of weird @@ -147,6 +156,8 @@ #CONFIGURE_ARGS += --with-mysql-include-dir=/opt/csw/mysql5/include ## Comment out the following lines when building mysql support CONFIGURE_ARGS += --without-rlm_sql_mysql +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sql/mysql +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sql/mysql/.* ## End mysql exclusion lines This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Wed Dec 8 01:25:35 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Wed, 08 Dec 2010 00:25:35 +0000 Subject: [csw-devel] SF.net SVN: gar:[11837] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11837 http://gar.svn.sourceforge.net/gar/?rev=11837&view=rev Author: gadavis Date: 2010-12-08 00:25:35 +0000 (Wed, 08 Dec 2010) Log Message: ----------- make pkgfiles lines compatible with preserveconf Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-08 00:15:38 UTC (rev 11836) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-08 00:25:35 UTC (rev 11837) @@ -95,7 +95,7 @@ PACKAGES += CSWfreeradius-krb5 CATALOGNAME_CSWfreeradius-krb5 = freeradius_krb5 SPKG_DESC_CSWfreeradius-krb5 = Kerberos 5 Module rlm_krb5 for FreeRADIUS -PKGFILES_CSWfreeradius-krb5 += $(raddbdir)/modules/krb5 +PKGFILES_CSWfreeradius-krb5 += $(raddbdir)/modules/krb5.CSW PKGFILES_CSWfreeradius-krb5 += $(docdir)/rlm_krb5 PKGFILES_CSWfreeradius-krb5 += /opt/csw/lib/freeradius/rlm_krb5\.so PKGFILES_CSWfreeradius-krb5 += /opt/csw/lib/freeradius/rlm_krb5-2\.1\.[0-9]+\.so @@ -107,9 +107,9 @@ PACKAGES += CSWfreeradius-ldap CATALOGNAME_CSWfreeradius-ldap = freeradius_ldap SPKG_DESC_CSWfreeradius-ldap = LDAP Module rlm_ldap for FreeRADIUS -PKGFILES_CSWfreeradius-ldap += $(raddbdir)/ldap\.attrmap -PKGFILES_CSWfreeradius-ldap += $(raddbdir)/modules/ldap -PKGFILES_CSWfreeradius-ldap += $(docdir)/ldap_howto.rst +PKGFILES_CSWfreeradius-ldap += $(raddbdir)/ldap\.attrmap\.CSW +PKGFILES_CSWfreeradius-ldap += $(raddbdir)/modules/ldap\.CSW +PKGFILES_CSWfreeradius-ldap += $(docdir)/ldap_howto\.rst PKGFILES_CSWfreeradius-ldap += $(docdir)/RADIUS-LDAP-eDirectory PKGFILES_CSWfreeradius-ldap += $(docdir)/rlm_ldap PKGFILES_CSWfreeradius-ldap += $(docdir)/examples/openldap.schema This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Wed Dec 8 02:20:00 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Wed, 08 Dec 2010 01:20:00 +0000 Subject: [csw-devel] SF.net SVN: gar:[11838] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11838 http://gar.svn.sourceforge.net/gar/?rev=11838&view=rev Author: gadavis Date: 2010-12-08 01:20:00 +0000 (Wed, 08 Dec 2010) Log Message: ----------- attempt to get init script to show up Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-08 00:25:35 UTC (rev 11837) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-08 01:20:00 UTC (rev 11838) @@ -177,5 +177,5 @@ # Copy in specialized templates copy-local-files: @ginstall -d $(DESTDIR)/etc/opt/csw/init.d - @ginstall $(WORKDIR)/cswfreeradius $(DESTDIR)/etc/opt/csw/init.d + @ginstall $(WORKDIR)/cswfreeradius $(DESTDIR)/etc/opt/csw/init.d/cswfreeradius @$(MAKECOOKIE) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Wed Dec 8 04:44:54 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Wed, 08 Dec 2010 03:44:54 +0000 Subject: [csw-devel] SF.net SVN: gar:[11839] csw/mgar/gar/v2/lib/python/package_checks.py Message-ID: Revision: 11839 http://gar.svn.sourceforge.net/gar/?rev=11839&view=rev Author: bdwalton Date: 2010-12-08 03:44:54 +0000 (Wed, 08 Dec 2010) Log Message: ----------- checkpkg: alter the handling of surplus dependency suppression to allow for passing regexes; this is in response to the cswclassutils -> cas_foo change Modified Paths: -------------- csw/mgar/gar/v2/lib/python/package_checks.py Modified: csw/mgar/gar/v2/lib/python/package_checks.py =================================================================== --- csw/mgar/gar/v2/lib/python/package_checks.py 2010-12-08 01:20:00 UTC (rev 11838) +++ csw/mgar/gar/v2/lib/python/package_checks.py 2010-12-08 03:44:54 UTC (rev 11839) @@ -70,7 +70,7 @@ DO_NOT_LINK_AGAINST_THESE_SONAMES = set([]) # Regarding surplus libraries reports -DO_NOT_REPORT_SURPLUS = set([u"CSWcommon", u"CSWcswclassutils", u"CSWisaexec"]) +DO_NOT_REPORT_SURPLUS = [r"^CSWcommon$", r"^CSWcswclassutils$", r"^CSWcas-", r"^CSWisaexec$"] DO_NOT_REPORT_SURPLUS_FOR = [r"CSW[a-z\-]+dev(el)?"] DO_NOT_REPORT_MISSING = set([]) DO_NOT_REPORT_MISSING_RE = [r"\*?SUNW.*"] @@ -375,7 +375,12 @@ (x for x, y in reduce(operator.add, req_pkgs_reasons, []))) missing_dep_groups = new_missing_dep_groups surplus_deps = declared_deps_set.difference(potential_req_pkgs) - surplus_deps = surplus_deps.difference(DO_NOT_REPORT_SURPLUS) + no_report_surplus = set() + for sp_regex in DO_NOT_REPORT_SURPLUS: + for maybe_surplus in surplus_deps: + if re.match(sp_regex, maybe_surplus): + no_report_surplus.add(maybe_surplus) + surplus_deps = surplus_deps.difference(no_report_surplus) for regex_str in DO_NOT_REPORT_SURPLUS_FOR: if surplus_deps and re.match(regex_str, pkgname): surplus_deps = set() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Wed Dec 8 04:48:13 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Wed, 08 Dec 2010 03:48:13 +0000 Subject: [csw-devel] SF.net SVN: gar:[11840] csw/mgar/gar/v2/gar.pkg.mk Message-ID: Revision: 11840 http://gar.svn.sourceforge.net/gar/?rev=11840&view=rev Author: bdwalton Date: 2010-12-08 03:48:13 +0000 (Wed, 08 Dec 2010) Log Message: ----------- gar/v2: set CAS dependencies on individual package instead of parent cswclassutils Modified Paths: -------------- csw/mgar/gar/v2/gar.pkg.mk Modified: csw/mgar/gar/v2/gar.pkg.mk =================================================================== --- csw/mgar/gar/v2/gar.pkg.mk 2010-12-08 03:44:54 UTC (rev 11839) +++ csw/mgar/gar/v2/gar.pkg.mk 2010-12-08 03:48:13 UTC (rev 11840) @@ -463,7 +463,7 @@ $(WORKDIR)/%.depend: $(WORKDIR)/$*.prototype $(WORKDIR)/%.depend: _EXTRA_GAR_PKGS += $(_CATEGORY_RUNTIME_DEP_PKGS) $(WORKDIR)/%.depend: _EXTRA_GAR_PKGS += $(if $(strip $(shell cat $(WORKDIR)/$*.prototype | perl -ane 'print "yes" if( $$F[1] eq "cswalternatives")')),CSWalternatives) -$(WORKDIR)/%.depend: _EXTRA_GAR_PKGS += $(if $(strip $(shell cat $(WORKDIR)/$*.prototype | perl -ane '$(foreach C,$(_CSWCLASSES),print "$C\n" if( $$F[1] eq "$C");)')),CSWcswclassutils) +$(WORKDIR)/%.depend: _EXTRA_GAR_PKGS += $(foreach P,$(strip $(shell cat $(WORKDIR)/$*.prototype | perl -ane '$(foreach C,$(_CSWCLASSES),print "$C " if( $$F[1] eq "$C");)')),CSWcas-$(subst csw,,$(P))) $(WORKDIR)/%.depend: _DEP_PKGS=$(or $(RUNTIME_DEP_PKGS_ONLY_$*),$(RUNTIME_DEP_PKGS_ONLY),$(sort $(_EXTRA_GAR_PKGS)) $(or $(RUNTIME_DEP_PKGS_$*),$(RUNTIME_DEP_PKGS),$(DEP_PKGS_$*),$(DEP_PKGS))) $(WORKDIR)/%.depend: $(WORKDIR) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From maciej at opencsw.org Wed Dec 8 09:01:39 2010 From: maciej at opencsw.org (Maciej (Matchek) Blizinski) Date: Wed, 8 Dec 2010 08:01:39 +0000 Subject: [csw-devel] SF.net SVN: gar:[11839] csw/mgar/gar/v2/lib/python/package_checks.py In-Reply-To: References: Message-ID: No dia 8 de Dezembro de 2010 03:44, escreveu: > Revision: 11839 > ? ? ? ? ?http://gar.svn.sourceforge.net/gar/?rev=11839&view=rev > Author: ? bdwalton > Date: ? ? 2010-12-08 03:44:54 +0000 (Wed, 08 Dec 2010) > > Log Message: > ----------- > checkpkg: alter the handling of surplus dependency suppression to allow for passing regexes; this is in response to the cswclassutils -> cas_foo change > > Modified Paths: > -------------- > ? ?csw/mgar/gar/v2/lib/python/package_checks.py > > Modified: csw/mgar/gar/v2/lib/python/package_checks.py > =================================================================== > --- csw/mgar/gar/v2/lib/python/package_checks.py ? ? ? ?2010-12-08 01:20:00 UTC (rev 11838) > +++ csw/mgar/gar/v2/lib/python/package_checks.py ? ? ? ?2010-12-08 03:44:54 UTC (rev 11839) > @@ -70,7 +70,7 @@ > ?DO_NOT_LINK_AGAINST_THESE_SONAMES = set([]) > > ?# Regarding surplus libraries reports > -DO_NOT_REPORT_SURPLUS = set([u"CSWcommon", u"CSWcswclassutils", u"CSWisaexec"]) > +DO_NOT_REPORT_SURPLUS = [r"^CSWcommon$", r"^CSWcswclassutils$", r"^CSWcas-", r"^CSWisaexec$"] I'd wrap it to 80 chars. They still can be a set, or even a frozenset. > ?DO_NOT_REPORT_SURPLUS_FOR = [r"CSW[a-z\-]+dev(el)?"] > ?DO_NOT_REPORT_MISSING = set([]) > ?DO_NOT_REPORT_MISSING_RE = [r"\*?SUNW.*"] > @@ -375,7 +375,12 @@ > ? ? ? ? (x for x, y in reduce(operator.add, req_pkgs_reasons, []))) > ? ? missing_dep_groups = new_missing_dep_groups > ? ? surplus_deps = declared_deps_set.difference(potential_req_pkgs) > - ? ?surplus_deps = surplus_deps.difference(DO_NOT_REPORT_SURPLUS) > + ? ?no_report_surplus = set() > + ? ?for sp_regex in DO_NOT_REPORT_SURPLUS: > + ? ? ?for maybe_surplus in surplus_deps: > + ? ? ? ?if re.match(sp_regex, maybe_surplus): > + ? ? ? ? ?no_report_surplus.add(maybe_surplus) > + ? ?surplus_deps = surplus_deps.difference(no_report_surplus) > ? ? for regex_str in DO_NOT_REPORT_SURPLUS_FOR: > ? ? ? if surplus_deps and re.match(regex_str, pkgname): > ? ? ? ? surplus_deps = set() Looks good. Have tried running gar/v2/tests/run_tests.py? From maciej at opencsw.org Wed Dec 8 09:04:21 2010 From: maciej at opencsw.org (Maciej (Matchek) Blizinski) Date: Wed, 8 Dec 2010 08:04:21 +0000 Subject: [csw-devel] SF.net SVN: gar:[11832] csw/mgar/pkg/freeradius/trunk/Makefile In-Reply-To: References: Message-ID: No dia 7 de Dezembro de 2010 22:37, escreveu: > -INITSMF = /etc/opt/csw/init.d/cswapache2 > +INITSMF = /etc/opt/csw/init.d/cswfreeradius Can GAR display a warning if INITSMF is set, but does not match any files? From skayser at users.sourceforge.net Thu Dec 9 01:00:54 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 00:00:54 +0000 Subject: [csw-devel] SF.net SVN: gar:[11841] csw/mgar/pkg Message-ID: Revision: 11841 http://gar.svn.sourceforge.net/gar/?rev=11841&view=rev Author: skayser Date: 2010-12-09 00:00:54 +0000 (Thu, 09 Dec 2010) Log Message: ----------- haproxy: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/haproxy/ csw/mgar/pkg/haproxy/branches/ csw/mgar/pkg/haproxy/tags/ csw/mgar/pkg/haproxy/trunk/ csw/mgar/pkg/haproxy/trunk/Makefile csw/mgar/pkg/haproxy/trunk/checksums csw/mgar/pkg/haproxy/trunk/files/ Property changes on: csw/mgar/pkg/haproxy/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/haproxy/trunk/Makefile =================================================================== --- csw/mgar/pkg/haproxy/trunk/Makefile (rev 0) +++ csw/mgar/pkg/haproxy/trunk/Makefile 2010-12-09 00:00:54 UTC (rev 11841) @@ -0,0 +1,56 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! Build in unknown state, work in progress, please take over & verify +# ! Include init script +# ! Include default configuration +# * Use the shipped Makefile optimization flags +# +GARNAME = haproxy +GARVERSION = 1.4.1 +CATEGORIES = apps + +DESCRIPTION = Reliable, high performance TCP/HTTP load balancer +define BLURB + HAProxy is a free, very fast and reliable solution offering high + availability, load balancing, and proxying for TCP and HTTP-based + applications. It is particularly suited for web sites crawling under + very high loads while needing persistence or Layer7 processing. + Supporting tens of thousands of connections is clearly realistic with + todays hardware. Its mode of operation makes its integration into + existing architectures very easy and riskless, while still offering the + possibility not to expose fragile web servers to the Net. +endef + +VENDOR_URL = http://haproxy.1wt.eu/ +MASTER_SITES = http://haproxy.1wt.eu/download/1.4/src/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz +UPSTREAM_MASTER_SITES = $(VENDOR_URL) + +# Heavily optimized, supported for gcc, didn't dare to touch +GARCOMPILER = GCC4 + +CONFIGURE_SCRIPTS = +TEST_SCRIPTS = + +BUILD_ARGS = \ + TARGET=solaris \ + CC=$(CC) \ + CFLAGS="$(CFLAGS)" \ + LDFLAGS="$(LDFLAGS)" + +INSTALL_ARGS = \ + PREFIX=$(prefix) \ + DOCDIR=$(docdir)/$(GARNAME) + +include gar/category.mk + +# Makefile contains references to install +PATH := /opt/csw/gnu:$(PATH) + +post-install-modulated: DOCDEST=$(DESTDIR)$(docdir)/$(GARNAME) +post-install-modulated: + mkdir -p $(DOCDEST) + cp -r $(WORKSRC)/examples $(DOCDEST) + cp -r $(WORKSRC)/doc/* $(DOCDEST) + @$(MAKECOOKIE) Added: csw/mgar/pkg/haproxy/trunk/checksums =================================================================== --- csw/mgar/pkg/haproxy/trunk/checksums (rev 0) +++ csw/mgar/pkg/haproxy/trunk/checksums 2010-12-09 00:00:54 UTC (rev 11841) @@ -0,0 +1 @@ +7f27c2dec3d67fce1b113be5fe878c33 haproxy-1.4.1.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 01:36:19 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 00:36:19 +0000 Subject: [csw-devel] SF.net SVN: gar:[11842] csw/mgar/pkg Message-ID: Revision: 11842 http://gar.svn.sourceforge.net/gar/?rev=11842&view=rev Author: skayser Date: 2010-12-09 00:36:18 +0000 (Thu, 09 Dec 2010) Log Message: ----------- gpicview: initial commit Added Paths: ----------- csw/mgar/pkg/gpicview/ csw/mgar/pkg/gpicview/branches/ csw/mgar/pkg/gpicview/tags/ csw/mgar/pkg/gpicview/trunk/ csw/mgar/pkg/gpicview/trunk/Makefile csw/mgar/pkg/gpicview/trunk/checksums csw/mgar/pkg/gpicview/trunk/files/ csw/mgar/pkg/gpicview/trunk/files/changelog.CSW Property changes on: csw/mgar/pkg/gpicview/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/gpicview/trunk/Makefile =================================================================== --- csw/mgar/pkg/gpicview/trunk/Makefile (rev 0) +++ csw/mgar/pkg/gpicview/trunk/Makefile 2010-12-09 00:36:18 UTC (rev 11842) @@ -0,0 +1,31 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +NAME = gpicview +VERSION = 0.2.1 +CATEGORIES = utils + +DESCRIPTION = A Simple and Fast Image Viewer for X +define BLURB +endef + +VENDOR_URL = http://lxde.sourceforge.net/gpicview/ +MASTER_SITES = $(SF_MIRRORS) +SF_PROJ = lxde +DISTFILES = $(NAME)-$(VERSION).tar.gz + +# No test suite available +TEST_SCRIPTS = + +CONFIGURE_ARGS = $(DIRPATHS) +EXTRA_LDFLAGS = -lm -lX11 + +include gar/category.mk + +# Requires GNU gettext in PATH +PATH := $(prefix)/gnu:$(PATH) + +# Install changelog.CSW +post-merge: $(foreach P,$(_PKG_SPECS),install-changelog-$P) +install-changelog-%: + ginstall -D $(FILEDIR)/changelog.CSW \ + $(PKGROOT)$(docdir)/$(call catalogname,$*)/changelog.CSW + @$(MAKECOOKIE) Added: csw/mgar/pkg/gpicview/trunk/checksums =================================================================== --- csw/mgar/pkg/gpicview/trunk/checksums (rev 0) +++ csw/mgar/pkg/gpicview/trunk/checksums 2010-12-09 00:36:18 UTC (rev 11842) @@ -0,0 +1 @@ +a2de255bf9bdc40746c0dc89b3454a10 download/gpicview-0.2.1.tar.gz Added: csw/mgar/pkg/gpicview/trunk/files/changelog.CSW =================================================================== --- csw/mgar/pkg/gpicview/trunk/files/changelog.CSW (rev 0) +++ csw/mgar/pkg/gpicview/trunk/files/changelog.CSW 2010-12-09 00:36:18 UTC (rev 11842) @@ -0,0 +1,5 @@ +gpicview (0.2.1,REV=2010.12.09) + + * Initial release. + + -- Sebastian Kayser Thu, 9 Dec 2010 01:35:50 +0100 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 01:47:50 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 00:47:50 +0000 Subject: [csw-devel] SF.net SVN: gar:[11843] csw/mgar/pkg/gpicview/trunk/Makefile Message-ID: Revision: 11843 http://gar.svn.sourceforge.net/gar/?rev=11843&view=rev Author: skayser Date: 2010-12-09 00:47:50 +0000 (Thu, 09 Dec 2010) Log Message: ----------- gpicview: add runtime deps, adjust NAME/VERSION to (still) regular GARNAME/GARVERSION Modified Paths: -------------- csw/mgar/pkg/gpicview/trunk/Makefile Modified: csw/mgar/pkg/gpicview/trunk/Makefile =================================================================== --- csw/mgar/pkg/gpicview/trunk/Makefile 2010-12-09 00:36:18 UTC (rev 11842) +++ csw/mgar/pkg/gpicview/trunk/Makefile 2010-12-09 00:47:50 UTC (rev 11843) @@ -1,6 +1,6 @@ # TODO (release-critical prefixed with !, non release-critical with *) -NAME = gpicview -VERSION = 0.2.1 +GARNAME = gpicview +GARVERSION = 0.2.1 CATEGORIES = utils DESCRIPTION = A Simple and Fast Image Viewer for X @@ -10,8 +10,18 @@ VENDOR_URL = http://lxde.sourceforge.net/gpicview/ MASTER_SITES = $(SF_MIRRORS) SF_PROJ = lxde -DISTFILES = $(NAME)-$(VERSION).tar.gz +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +RUNTIME_DEP_PKGS += CSWlibatk +RUNTIME_DEP_PKGS += CSWggettextrt +RUNTIME_DEP_PKGS += CSWfconfig +RUNTIME_DEP_PKGS += CSWglib2 +RUNTIME_DEP_PKGS += CSWftype2 +RUNTIME_DEP_PKGS += CSWpango +RUNTIME_DEP_PKGS += CSWgtk2 +RUNTIME_DEP_PKGS += CSWlibcairo +RUNTIME_DEP_PKGS += CSWjpeg + # No test suite available TEST_SCRIPTS = This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 01:54:50 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 00:54:50 +0000 Subject: [csw-devel] SF.net SVN: gar:[11844] csw/mgar/pkg Message-ID: Revision: 11844 http://gar.svn.sourceforge.net/gar/?rev=11844&view=rev Author: skayser Date: 2010-12-09 00:54:50 +0000 (Thu, 09 Dec 2010) Log Message: ----------- csync2: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/csync2/ csw/mgar/pkg/csync2/branches/ csw/mgar/pkg/csync2/tags/ csw/mgar/pkg/csync2/trunk/ csw/mgar/pkg/csync2/trunk/Makefile csw/mgar/pkg/csync2/trunk/checksums csw/mgar/pkg/csync2/trunk/files/ Property changes on: csw/mgar/pkg/csync2/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/csync2/trunk/Makefile =================================================================== --- csw/mgar/pkg/csync2/trunk/Makefile (rev 0) +++ csw/mgar/pkg/csync2/trunk/Makefile 2010-12-09 00:54:50 UTC (rev 11844) @@ -0,0 +1,31 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! csync2 uses a GNU-extension which isn't available on Solaris +# "action.c", line 47: undefined symbol: FNM_LEADING_DIR +# Might be possible to use the gnulib fnmatch-gnu module as a replacement +# http://bugs.opensolaris.org/bugdatabase/view_bug.do;jsessionid=9fb51afbd594902d6b0fe775834d?bug_id=6721185 +# ! csync2 uses scandir, not available on Solaris, but available via gnulib +# +GARNAME = csync2 +GARVERSION = 1.34 +CATEGORIES = apps + +DESCRIPTION = Keeps files across multiple (cluster) hosts in sync +define BLURB + Csync2 is a cluster synchronization tool. It can be used to keep files on + multiple hosts in a cluster in sync. Csync2 can handle complex setups with + much more than just 2 hosts, handle file deletions and can detect conflicts. + + It is expedient for HA-clusters, HPC-clusters, COWs and server farms. If + you are looking for a tool to sync your laptop with your workstation, you + better have a look at Unison (http://www.cis.upenn.edu/~bcpierce/unison/) + too. +endef + +MASTER_SITES = http://oss.linbit.com/csync2/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk Added: csw/mgar/pkg/csync2/trunk/checksums =================================================================== --- csw/mgar/pkg/csync2/trunk/checksums (rev 0) +++ csw/mgar/pkg/csync2/trunk/checksums 2010-12-09 00:54:50 UTC (rev 11844) @@ -0,0 +1 @@ +efc8a3548996b79cef2ad76af5e93cd8 csync2-1.34.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:05:00 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:05:00 +0000 Subject: [csw-devel] SF.net SVN: gar:[11845] csw/mgar/pkg Message-ID: Revision: 11845 http://gar.svn.sourceforge.net/gar/?rev=11845&view=rev Author: skayser Date: 2010-12-09 01:05:00 +0000 (Thu, 09 Dec 2010) Log Message: ----------- stress: initial commit Added Paths: ----------- csw/mgar/pkg/stress/ csw/mgar/pkg/stress/branches/ csw/mgar/pkg/stress/tags/ csw/mgar/pkg/stress/trunk/ csw/mgar/pkg/stress/trunk/Makefile csw/mgar/pkg/stress/trunk/checksums csw/mgar/pkg/stress/trunk/files/ csw/mgar/pkg/stress/trunk/files/changelog.CSW Property changes on: csw/mgar/pkg/stress/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/stress/trunk/Makefile =================================================================== --- csw/mgar/pkg/stress/trunk/Makefile (rev 0) +++ csw/mgar/pkg/stress/trunk/Makefile 2010-12-09 01:05:00 UTC (rev 11845) @@ -0,0 +1,30 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +GARNAME = stress +GARVERSION = 1.0.4 +CATEGORIES = apps + +DESCRIPTION = A deliberately simple workload generator for POSIX systems +define BLURB + The tool started out as a very simple way to generate work on a + computer. It has pretty much stayed as simple as reasonably possible. It + is a single file called stress.c whose internal organization is in + essence a loop that forks worker processes and then waits for them to + either complete normally or exit with an error. It has been used in a + lot of product development labs as well as in research projects. +endef + +MASTER_SITES = http://weather.ou.edu/~apw/projects/stress/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk + +# Install changelog.CSW +post-merge: $(foreach P,$(_PKG_SPECS),install-changelog-$P) +install-changelog-%: + ginstall -D $(FILEDIR)/changelog.CSW \ + $(PKGROOT)$(docdir)/$(call catalogname,$*)/changelog.CSW + @$(MAKECOOKIE) Added: csw/mgar/pkg/stress/trunk/checksums =================================================================== --- csw/mgar/pkg/stress/trunk/checksums (rev 0) +++ csw/mgar/pkg/stress/trunk/checksums 2010-12-09 01:05:00 UTC (rev 11845) @@ -0,0 +1 @@ +a607afa695a511765b40993a64c6e2f4 stress-1.0.4.tar.gz Added: csw/mgar/pkg/stress/trunk/files/changelog.CSW =================================================================== --- csw/mgar/pkg/stress/trunk/files/changelog.CSW (rev 0) +++ csw/mgar/pkg/stress/trunk/files/changelog.CSW 2010-12-09 01:05:00 UTC (rev 11845) @@ -0,0 +1,6 @@ +stress (1.0.4,REV=2010.12.09) + + * Upstream version bump to 1.0.4 + * Ship stress.1 man page. (Closes #3665) + + -- Sebastian Kayser Thu, 9 Dec 2010 02:00:00 +0100 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Thu Dec 9 02:07:12 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:07:12 +0000 Subject: [csw-devel] SF.net SVN: gar:[11846] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11846 http://gar.svn.sourceforge.net/gar/?rev=11846&view=rev Author: bdwalton Date: 2010-12-09 01:07:12 +0000 (Thu, 09 Dec 2010) Log Message: ----------- apache2: add missing ; in -e options to perl during config migration Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-09 01:05:00 UTC (rev 11845) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-09 01:07:12 UTC (rev 11846) @@ -28,12 +28,12 @@ # update various uses of the var/ paths. # ensure we use the config files from the new location perl -pi \ - -e "s/\/opt\/csw\/apache2\/etc\/server.crt/\/etc\/opt\/csw\/apache2\/server.crt/" \ - -e "s/\/opt\/csw\/apache2\/etc\/server.key/\/etc\/opt\/csw\/apache2\/server.key/" \ - -e "s/\/opt\/csw\/apache2\/var\/log\//\/var\/opt\/csw\/log\/apache2\//" \ - -e "s/\"\/opt\/csw\/apache2\/var\//\"\/var\/opt\/csw\/apache2\//" \ - -e "s/\"var\/log\//\"\/var\/opt\/csw\/log\/apache2\//" \ - -e "s/etc\//\/etc\/opt\/csw\/apache2\//" \ + -e "s/\/opt\/csw\/apache2\/etc\/server.crt/\/etc\/opt\/csw\/apache2\/server.crt/;" \ + -e "s/\/opt\/csw\/apache2\/etc\/server.key/\/etc\/opt\/csw\/apache2\/server.key/;" \ + -e "s/\/opt\/csw\/apache2\/var\/log\//\/var\/opt\/csw\/log\/apache2\//;" \ + -e "s/\"\/opt\/csw\/apache2\/var\//\"\/var\/opt\/csw\/apache2\//;" \ + -e "s/\"var\/log\//\"\/var\/opt\/csw\/log\/apache2\//;" \ + -e "s/etc\//\/etc\/opt\/csw\/apache2\//;" \ \$NEW_CONF_FILE else # so, we're not an existing or 'needs migration' install, we must This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:10:37 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:10:37 +0000 Subject: [csw-devel] SF.net SVN: gar:[11847] csw/mgar/pkg Message-ID: Revision: 11847 http://gar.svn.sourceforge.net/gar/?rev=11847&view=rev Author: skayser Date: 2010-12-09 01:10:37 +0000 (Thu, 09 Dec 2010) Log Message: ----------- snownews: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/snownews/ csw/mgar/pkg/snownews/branches/ csw/mgar/pkg/snownews/tags/ csw/mgar/pkg/snownews/trunk/ csw/mgar/pkg/snownews/trunk/Makefile csw/mgar/pkg/snownews/trunk/checksums csw/mgar/pkg/snownews/trunk/files/ Property changes on: csw/mgar/pkg/snownews/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/snownews/trunk/Makefile =================================================================== --- csw/mgar/pkg/snownews/trunk/Makefile (rev 0) +++ csw/mgar/pkg/snownews/trunk/Makefile 2010-12-09 01:10:37 UTC (rev 11847) @@ -0,0 +1,28 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! build state unknown, work in progress, please verify +# +GARNAME = snownews +GARVERSION = 1.5.12 +CATEGORIES = apps + +DESCRIPTION = Text mode RSS/RDF news reader +define BLURB + Long description +endef + +VENDOR_URL = http://kiza.kcore.de/software/snownews/ +MASTER_SITES = http://kiza.kcore.de/media/software/snownews/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_ARGS = --prefix=$(prefix) + +EXTRA_INC=/opt/csw/include/ncursesw/ + +include gar/category.mk + +# snownews doesn't use autoconf, but a very simple perl ./configure script +pre-configure-modulated: + perl -pi -e 's|-Wall -Wno-format-y2k||' $(WORKSRC)/configure + @$(MAKECOOKIE) Added: csw/mgar/pkg/snownews/trunk/checksums =================================================================== --- csw/mgar/pkg/snownews/trunk/checksums (rev 0) +++ csw/mgar/pkg/snownews/trunk/checksums 2010-12-09 01:10:37 UTC (rev 11847) @@ -0,0 +1 @@ +80da8943fc5aa96571924aec0087d4c0 download/snownews-1.5.12.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:12:47 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:12:47 +0000 Subject: [csw-devel] SF.net SVN: gar:[11848] csw/mgar/pkg Message-ID: Revision: 11848 http://gar.svn.sourceforge.net/gar/?rev=11848&view=rev Author: skayser Date: 2010-12-09 01:12:47 +0000 (Thu, 09 Dec 2010) Log Message: ----------- tcpreplay: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/tcpreplay/ csw/mgar/pkg/tcpreplay/branches/ csw/mgar/pkg/tcpreplay/tags/ csw/mgar/pkg/tcpreplay/trunk/ csw/mgar/pkg/tcpreplay/trunk/Makefile csw/mgar/pkg/tcpreplay/trunk/checksums csw/mgar/pkg/tcpreplay/trunk/files/ Property changes on: csw/mgar/pkg/tcpreplay/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/tcpreplay/trunk/Makefile =================================================================== --- csw/mgar/pkg/tcpreplay/trunk/Makefile (rev 0) +++ csw/mgar/pkg/tcpreplay/trunk/Makefile 2010-12-09 01:12:47 UTC (rev 11848) @@ -0,0 +1,39 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! build state unknown, work in progress, please verify +# +GARNAME = tcpreplay +GARVERSION = 3.4.4 +CATEGORIES = apps + +DESCRIPTION = Tool to replay saved tcpdump files at arbitrary speeds +define BLURB + Tcpreplay is a suite of BSD licensed tools written by Aaron Turner for + UNIX (and Win32 under Cygwin) operating systems which gives you the + ability to use previously captured traffic in libpcap format to test a + variety of network devices. It allows you to classify traffic as client + or server, rewrite Layer 2, 3 and 4 headers and finally replay the + traffic back onto the network and through other devices such as + switches, routers, firewalls, NIDS and IPS's. Tcpreplay supports both + single and dual NIC modes for testing both sniffing and inline devices. +endef + +VENDOR_URL = http://tcpreplay.sf.net +MASTER_SITES = $(SF_MIRRORS) +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_ARGS = $(DIRPATHS) +CONFIGURE_ARGS += --with-libpcap=$(prefix) +CONFIGURE_ARGS += --enable-dynamic-link + +# Avoid "template version mismatches" error +# http://tcpreplay.synfin.net/wiki/FAQ#tcpreplay_opts.h:72:3:error:erroroptiontemplateversionmismatchesautooptsoptions.hheader +CONFIGURE_ARGS += --disable-local-libopts --disable-libopts-install + +include gar/category.mk + +pre-configure-modulated: + gsed -i 's,-Wall -O3 -std=gnu99,,' $(WORKSRC)/configure.ac + autoreconf -fi $(WORKSRC) + @$(MAKECOOKIE) Property changes on: csw/mgar/pkg/tcpreplay/trunk/Makefile ___________________________________________________________________ Added: svn:keywords + Id Added: csw/mgar/pkg/tcpreplay/trunk/checksums =================================================================== --- csw/mgar/pkg/tcpreplay/trunk/checksums (rev 0) +++ csw/mgar/pkg/tcpreplay/trunk/checksums 2010-12-09 01:12:47 UTC (rev 11848) @@ -0,0 +1 @@ +22725feb9b2590809f9350308ec65180 tcpreplay-3.4.4.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:15:46 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:15:46 +0000 Subject: [csw-devel] SF.net SVN: gar:[11849] csw/mgar/pkg Message-ID: Revision: 11849 http://gar.svn.sourceforge.net/gar/?rev=11849&view=rev Author: skayser Date: 2010-12-09 01:15:46 +0000 (Thu, 09 Dec 2010) Log Message: ----------- stressapptest: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/stressapptest/ csw/mgar/pkg/stressapptest/branches/ csw/mgar/pkg/stressapptest/tags/ csw/mgar/pkg/stressapptest/trunk/ csw/mgar/pkg/stressapptest/trunk/Makefile csw/mgar/pkg/stressapptest/trunk/checksums csw/mgar/pkg/stressapptest/trunk/files/ Property changes on: csw/mgar/pkg/stressapptest/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/stressapptest/trunk/Makefile =================================================================== --- csw/mgar/pkg/stressapptest/trunk/Makefile (rev 0) +++ csw/mgar/pkg/stressapptest/trunk/Makefile 2010-12-09 01:15:46 UTC (rev 11849) @@ -0,0 +1,25 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! build state unknown, work in progress, please verify +# +GARNAME = stressapptest +GARVERSION = 1.0.3 +CATEGORIES = apps + +DESCRIPTION = Stress test application for simulating high load situations +define BLURB + Stressful Application Test (or stressapptest, its unix name) tries to + maximize randomized traffic to memory from processor and I/O, with the + intent of creating a realistic high load situation in order to test the + existing hardware devices in a computer. +endef + +VENDOR_URL = http://code.google.com/p/stressapptest/ +MASTER_SITES = http://stressapptest.googlecode.com/files/ +DISTFILES = $(GARNAME)-$(GARVERSION)_autoconf.tar.gz +DISTNAME = $(GARNAME)-$(GARVERSION)_autoconf +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*)_autoconf.tar.gz + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk Added: csw/mgar/pkg/stressapptest/trunk/checksums =================================================================== --- csw/mgar/pkg/stressapptest/trunk/checksums (rev 0) +++ csw/mgar/pkg/stressapptest/trunk/checksums 2010-12-09 01:15:46 UTC (rev 11849) @@ -0,0 +1 @@ +931d96b0914e2a4353470b8a9fbf5034 stressapptest-1.0.1_autoconf.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:17:23 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:17:23 +0000 Subject: [csw-devel] SF.net SVN: gar:[11850] csw/mgar/pkg Message-ID: Revision: 11850 http://gar.svn.sourceforge.net/gar/?rev=11850&view=rev Author: skayser Date: 2010-12-09 01:17:23 +0000 (Thu, 09 Dec 2010) Log Message: ----------- ucarp: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/ucarp/ csw/mgar/pkg/ucarp/branches/ csw/mgar/pkg/ucarp/tags/ csw/mgar/pkg/ucarp/trunk/ csw/mgar/pkg/ucarp/trunk/Makefile csw/mgar/pkg/ucarp/trunk/checksums csw/mgar/pkg/ucarp/trunk/files/ Property changes on: csw/mgar/pkg/ucarp/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/ucarp/trunk/Makefile =================================================================== --- csw/mgar/pkg/ucarp/trunk/Makefile (rev 0) +++ csw/mgar/pkg/ucarp/trunk/Makefile 2010-12-09 01:17:23 UTC (rev 11850) @@ -0,0 +1,24 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! build state unknown, work in progress, please verify +# +GARNAME = ucarp +GARVERSION = 1.5.2 +CATEGORIES = apps + +DESCRIPTION = UCARP is a portable implementation of the CARP protocol. +define BLURB + UCARP allows a couple of hosts to share common virtual IP addresses in + order to provide automatic failover. It is a portable userland + implementation of the secure and patent-free Common Address Redundancy + Protocol (CARP, OpenBSD's alternative to the patents-bloated VRRP). +endef + +VENDOR_URL = http://www.ucarp.org/project/ucarp +MASTER_SITES = http://download.pureftpd.org/pub/ucarp/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk Added: csw/mgar/pkg/ucarp/trunk/checksums =================================================================== --- csw/mgar/pkg/ucarp/trunk/checksums (rev 0) +++ csw/mgar/pkg/ucarp/trunk/checksums 2010-12-09 01:17:23 UTC (rev 11850) @@ -0,0 +1 @@ +e3caa733316a32c09e5d3817617e9145 ucarp-1.5.2.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:18:36 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:18:36 +0000 Subject: [csw-devel] SF.net SVN: gar:[11851] csw/mgar/pkg Message-ID: Revision: 11851 http://gar.svn.sourceforge.net/gar/?rev=11851&view=rev Author: skayser Date: 2010-12-09 01:18:36 +0000 (Thu, 09 Dec 2010) Log Message: ----------- freerdp: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/freerdp/ csw/mgar/pkg/freerdp/branches/ csw/mgar/pkg/freerdp/tags/ csw/mgar/pkg/freerdp/trunk/ csw/mgar/pkg/freerdp/trunk/Makefile csw/mgar/pkg/freerdp/trunk/checksums csw/mgar/pkg/freerdp/trunk/files/ Property changes on: csw/mgar/pkg/freerdp/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/freerdp/trunk/Makefile =================================================================== --- csw/mgar/pkg/freerdp/trunk/Makefile (rev 0) +++ csw/mgar/pkg/freerdp/trunk/Makefile 2010-12-09 01:18:36 UTC (rev 11851) @@ -0,0 +1,21 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! libxcursor packages missing (currently only available in the CSW +# X11 stack which should be obsoleted) +# +GARNAME = freerdp +GARVERSION = 0.8.2 +CATEGORIES = utils + +DESCRIPTION = RDP client. Fork of the rdesktop project. +define BLURB + Long description +endef + +MASTER_SITES = $(SF_MIRROR) +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk Property changes on: csw/mgar/pkg/freerdp/trunk/Makefile ___________________________________________________________________ Added: svn:keywords + Id Added: csw/mgar/pkg/freerdp/trunk/checksums =================================================================== --- csw/mgar/pkg/freerdp/trunk/checksums (rev 0) +++ csw/mgar/pkg/freerdp/trunk/checksums 2010-12-09 01:18:36 UTC (rev 11851) @@ -0,0 +1 @@ +cde590336292c977dfc1b4b7badf24d2 freerdp-0.8.2.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:21:30 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:21:30 +0000 Subject: [csw-devel] SF.net SVN: gar:[11852] csw/mgar/pkg Message-ID: Revision: 11852 http://gar.svn.sourceforge.net/gar/?rev=11852&view=rev Author: skayser Date: 2010-12-09 01:21:30 +0000 (Thu, 09 Dec 2010) Log Message: ----------- avfs: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/avfs/ csw/mgar/pkg/avfs/branches/ csw/mgar/pkg/avfs/tags/ csw/mgar/pkg/avfs/trunk/ csw/mgar/pkg/avfs/trunk/Makefile csw/mgar/pkg/avfs/trunk/checksums csw/mgar/pkg/avfs/trunk/files/ Property changes on: csw/mgar/pkg/avfs/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/avfs/trunk/Makefile =================================================================== --- csw/mgar/pkg/avfs/trunk/Makefile (rev 0) +++ csw/mgar/pkg/avfs/trunk/Makefile 2010-12-09 01:21:30 UTC (rev 11852) @@ -0,0 +1,22 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! build state unknown, work in progress, please verify +# +GARNAME = avfs +GARVERSION = 0.9.8 +CATEGORIES = apps + +DESCRIPTION = Virtual file system to access archives, disk images, remote locations +define BLURB + Long description +endef + +VENDOR_URL = http://avf.sourceforge.net/ +MASTER_SITES = $(SF_MIRRORS) +SF_PROJ = avf +DISTFILES = $(GARNAME)-$(GARVERSION).tar.bz2 +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.bz2 + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk Added: csw/mgar/pkg/avfs/trunk/checksums =================================================================== --- csw/mgar/pkg/avfs/trunk/checksums (rev 0) +++ csw/mgar/pkg/avfs/trunk/checksums 2010-12-09 01:21:30 UTC (rev 11852) @@ -0,0 +1 @@ +5281b990251c8c3a15366ad40e4818db avfs-0.9.8.tar.bz2 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:24:09 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:24:09 +0000 Subject: [csw-devel] SF.net SVN: gar:[11853] csw/mgar/pkg Message-ID: Revision: 11853 http://gar.svn.sourceforge.net/gar/?rev=11853&view=rev Author: skayser Date: 2010-12-09 01:24:09 +0000 (Thu, 09 Dec 2010) Log Message: ----------- webfs: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/webfs/ csw/mgar/pkg/webfs/branches/ csw/mgar/pkg/webfs/tags/ csw/mgar/pkg/webfs/trunk/ csw/mgar/pkg/webfs/trunk/Makefile csw/mgar/pkg/webfs/trunk/checksums csw/mgar/pkg/webfs/trunk/files/ Property changes on: csw/mgar/pkg/webfs/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/webfs/trunk/Makefile =================================================================== --- csw/mgar/pkg/webfs/trunk/Makefile (rev 0) +++ csw/mgar/pkg/webfs/trunk/Makefile 2010-12-09 01:24:09 UTC (rev 11853) @@ -0,0 +1,23 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! build state unknown, work in progress, please verify +# +GARNAME = webfs +GARVERSION = 1.21 +CATEGORIES = apps + +DESCRIPTION = Lightweight HTTP server for static content +define BLURB + Long description +endef + +VENDOR_URL = http://linux.bytesex.org/misc/webfs.html +MASTER_SITES = http://dl.bytesex.org/releases/webfs/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_SCRIPTS = + +include gar/category.mk + +PATH := $(prefix)/gnu:$(PATH) Added: csw/mgar/pkg/webfs/trunk/checksums =================================================================== --- csw/mgar/pkg/webfs/trunk/checksums (rev 0) +++ csw/mgar/pkg/webfs/trunk/checksums 2010-12-09 01:24:09 UTC (rev 11853) @@ -0,0 +1 @@ +6dc125fe160479404147e7bbfc781dbc download/webfs-1.21.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:30:15 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:30:15 +0000 Subject: [csw-devel] SF.net SVN: gar:[11854] csw/mgar/pkg Message-ID: Revision: 11854 http://gar.svn.sourceforge.net/gar/?rev=11854&view=rev Author: skayser Date: 2010-12-09 01:30:15 +0000 (Thu, 09 Dec 2010) Log Message: ----------- perdition: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/perdition/ csw/mgar/pkg/perdition/branches/ csw/mgar/pkg/perdition/tags/ csw/mgar/pkg/perdition/trunk/ csw/mgar/pkg/perdition/trunk/Makefile csw/mgar/pkg/perdition/trunk/checksums csw/mgar/pkg/perdition/trunk/files/ Property changes on: csw/mgar/pkg/perdition/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/perdition/trunk/Makefile =================================================================== --- csw/mgar/pkg/perdition/trunk/Makefile (rev 0) +++ csw/mgar/pkg/perdition/trunk/Makefile 2010-12-09 01:30:15 UTC (rev 11854) @@ -0,0 +1,28 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! build state unknown, work in progress, please verify +# +GARNAME = perdition +GARVERSION = 1.18 +CATEGORIES = server + +DESCRIPTION = POP3 and IMAP4 proxy server with high capacity in mind. +define BLURB + Perdition is a fully featured POP3 and IMAP4 proxy server. It is able to + handle both SSL and non-SSL connections and redirect users to a + real-server based on a database lookup. Perdition supports modular based + database access. ODBC, MySQL, PostgreSQL, GDBM, POSIX Regular Expression + and NIS modules ship with the distribution. The API for modules is open + allowing arbitrary modules to be written to allow access to any data + store. +endef + +VENDOR_URL = http://horms.net/projects/perdition/ +MASTER_SITES = http://horms.net/projects/perdition/download/$(GARVERSION)/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = (\d+(?:\.\d+)*) +UPSTREAM_MASTER_SITES = http://horms.net/projects/perdition/download/ + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk Added: csw/mgar/pkg/perdition/trunk/checksums =================================================================== --- csw/mgar/pkg/perdition/trunk/checksums (rev 0) +++ csw/mgar/pkg/perdition/trunk/checksums 2010-12-09 01:30:15 UTC (rev 11854) @@ -0,0 +1 @@ +0baec303d27073f053cc03488bf8d98b perdition-1.18.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:31:17 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:31:17 +0000 Subject: [csw-devel] SF.net SVN: gar:[11855] csw/mgar/pkg Message-ID: Revision: 11855 http://gar.svn.sourceforge.net/gar/?rev=11855&view=rev Author: skayser Date: 2010-12-09 01:31:16 +0000 (Thu, 09 Dec 2010) Log Message: ----------- gorilla: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/gorilla/ csw/mgar/pkg/gorilla/branches/ csw/mgar/pkg/gorilla/tags/ csw/mgar/pkg/gorilla/trunk/ csw/mgar/pkg/gorilla/trunk/Makefile csw/mgar/pkg/gorilla/trunk/checksums csw/mgar/pkg/gorilla/trunk/files/ Property changes on: csw/mgar/pkg/gorilla/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/gorilla/trunk/Makefile =================================================================== --- csw/mgar/pkg/gorilla/trunk/Makefile (rev 0) +++ csw/mgar/pkg/gorilla/trunk/Makefile 2010-12-09 01:31:16 UTC (rev 11855) @@ -0,0 +1,21 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! build state unknown, work in progress, please verify +# +GARNAME = gorilla +GARVERSION = 1.4 +CATEGORIES = apps + +DESCRIPTION = A cross-platform, Tcl/Tk-based Password Manager +define BLURB + Long description +endef + +VENDOR_URL = http://www.fpx.de/fp/Software/Gorilla/ +MASTER_SITES = http://www.fpx.de/fp/Software/Gorilla/download/ +DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk Added: csw/mgar/pkg/gorilla/trunk/checksums =================================================================== --- csw/mgar/pkg/gorilla/trunk/checksums (rev 0) +++ csw/mgar/pkg/gorilla/trunk/checksums 2010-12-09 01:31:16 UTC (rev 11855) @@ -0,0 +1 @@ +9914efa3ddaf309de76f083c43f57dce gorilla-1.4.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 02:34:48 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:34:48 +0000 Subject: [csw-devel] SF.net SVN: gar:[11856] csw/mgar/pkg Message-ID: Revision: 11856 http://gar.svn.sourceforge.net/gar/?rev=11856&view=rev Author: skayser Date: 2010-12-09 01:34:48 +0000 (Thu, 09 Dec 2010) Log Message: ----------- puppet-dashboard: initial commit, work in progress, feel free to take over Added Paths: ----------- csw/mgar/pkg/puppet-dashboard/ csw/mgar/pkg/puppet-dashboard/branches/ csw/mgar/pkg/puppet-dashboard/tags/ csw/mgar/pkg/puppet-dashboard/trunk/ csw/mgar/pkg/puppet-dashboard/trunk/Makefile csw/mgar/pkg/puppet-dashboard/trunk/checksums csw/mgar/pkg/puppet-dashboard/trunk/files/ Property changes on: csw/mgar/pkg/puppet-dashboard/trunk ___________________________________________________________________ Added: svn:ignore + cookies download work Added: svn:externals + gar https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/gar/v2 Added: csw/mgar/pkg/puppet-dashboard/trunk/Makefile =================================================================== --- csw/mgar/pkg/puppet-dashboard/trunk/Makefile (rev 0) +++ csw/mgar/pkg/puppet-dashboard/trunk/Makefile 2010-12-09 01:34:48 UTC (rev 11856) @@ -0,0 +1,21 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! build state unknown, work in progress, please verify +# +GARNAME = puppet-dashboard +GARVERSION = 1.0.0 +CATEGORIES = apps + +DESCRIPTION = Web interface and reporting tool for Puppet +define BLURB + Long description +endef + +VENDOR_URL = http://www.puppetlabs.com/puppet/related-projects/dashboard/ +MASTER_SITES = http://puppetlabs.com/downloads/dashboard/ +DISTFILES = $(GARNAME)-$(GARVERSION).tgz +UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tgz + +CONFIGURE_ARGS = $(DIRPATHS) + +include gar/category.mk Added: csw/mgar/pkg/puppet-dashboard/trunk/checksums =================================================================== --- csw/mgar/pkg/puppet-dashboard/trunk/checksums (rev 0) +++ csw/mgar/pkg/puppet-dashboard/trunk/checksums 2010-12-09 01:34:48 UTC (rev 11856) @@ -0,0 +1 @@ +e01fc46584ab93e1e51c6d8a5a2be363 puppet-dashboard-1.0.0.tgz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Thu Dec 9 02:48:16 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Thu, 09 Dec 2010 01:48:16 +0000 Subject: [csw-devel] SF.net SVN: gar:[11857] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11857 http://gar.svn.sourceforge.net/gar/?rev=11857&view=rev Author: bdwalton Date: 2010-12-09 01:48:16 +0000 (Thu, 09 Dec 2010) Log Message: ----------- apache2: join continued lines to avoid here doc line split issue Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-09 01:34:48 UTC (rev 11856) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-09 01:48:16 UTC (rev 11857) @@ -27,14 +27,7 @@ # handle the new path to default ssl key files. # update various uses of the var/ paths. # ensure we use the config files from the new location - perl -pi \ - -e "s/\/opt\/csw\/apache2\/etc\/server.crt/\/etc\/opt\/csw\/apache2\/server.crt/;" \ - -e "s/\/opt\/csw\/apache2\/etc\/server.key/\/etc\/opt\/csw\/apache2\/server.key/;" \ - -e "s/\/opt\/csw\/apache2\/var\/log\//\/var\/opt\/csw\/log\/apache2\//;" \ - -e "s/\"\/opt\/csw\/apache2\/var\//\"\/var\/opt\/csw\/apache2\//;" \ - -e "s/\"var\/log\//\"\/var\/opt\/csw\/log\/apache2\//;" \ - -e "s/etc\//\/etc\/opt\/csw\/apache2\//;" \ - \$NEW_CONF_FILE + perl -pi -e "s/\/opt\/csw\/apache2\/etc\/server.crt/\/etc\/opt\/csw\/apache2\/server.crt/;" -e "s/\/opt\/csw\/apache2\/etc\/server.key/\/etc\/opt\/csw\/apache2\/server.key/;" -e "s/\/opt\/csw\/apache2\/var\/log\//\/var\/opt\/csw\/log\/apache2\//;" -e "s/\"\/opt\/csw\/apache2\/var\//\"\/var\/opt\/csw\/apache2\//;" -e "s/\"var\/log\//\"\/var\/opt\/csw\/log\/apache2\//;" -e "s/etc\//\/etc\/opt\/csw\/apache2\//;" \$NEW_CONF_FILE else # so, we're not an existing or 'needs migration' install, we must # install from the templates. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 03:19:22 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 02:19:22 +0000 Subject: [csw-devel] SF.net SVN: gar:[11858] csw/mgar/pkg/php5/trunk/Makefile Message-ID: Revision: 11858 http://gar.svn.sourceforge.net/gar/?rev=11858&view=rev Author: skayser Date: 2010-12-09 02:19:22 +0000 (Thu, 09 Dec 2010) Log Message: ----------- php5: document TODOs WRT to extension builds, minor tweaks Modified Paths: -------------- csw/mgar/pkg/php5/trunk/Makefile Modified: csw/mgar/pkg/php5/trunk/Makefile =================================================================== --- csw/mgar/pkg/php5/trunk/Makefile 2010-12-09 01:48:16 UTC (rev 11857) +++ csw/mgar/pkg/php5/trunk/Makefile 2010-12-09 02:19:22 UTC (rev 11858) @@ -1,3 +1,9 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! Re-enable the integrated PHP extension builds. This either requires +# performance enhancements to GAR or a completely different approach. +# Details documented below. +# GARNAME = php5 GARVERSION = 5.3.3 CATEGORIES = lang @@ -18,10 +24,10 @@ available. endef +VENDOR_URL = http://www.php.net/ MASTER_SITES = http://us.php.net/distributions/ -SPKG_SOURCEURL = http://www.php.net/ INSTALL_ENV += INSTALL_ROOT=$(DESTDIR) -STRIP_DIRS += $(shell $(call _get_php_prefix,$(DESTDIR))/bin/php-config --extension-dir)/*/ +STRIP_DIRS := $(shell $(call _get_php_prefix,$(DESTDIR))/bin/php-config --extension-dir)/*/ DISTFILES += $(DISTNAME).tar.bz2 DISTFILES += php.ini.CSW phpext pear.conf.CSW CSWphp5.postinstall @@ -29,7 +35,7 @@ PACKAGES = CSWphp5 CSWphp5devel CATALOGNAME_CSWphp5 = php5 -SPKG_DESC_CSWphp5 = A High-Level Scripting Languages +SPKG_DESC_CSWphp5 = A High-Level Scripting Language CATALOGNAME_CSWphp5devel = php5_devel SPKG_DESC_CSWphp5devel = Development files for php5 RUNTIME_DEP_PKGS_CSWphp5 = CSWexpat CSWggettextrt CSWiconv CSWpng CSWsqlite @@ -58,9 +64,17 @@ PATCHFILES += configure.diff -# PHP Extensions -EXTDIRLIST = $(shell ls -d extensions/*) -#include $(foreach X,$(EXTDIRLIST),$(X)/Makefile) +# PHP Extensions, currently deactivated +# +# GAR needs performance enhancements to handle an integrated build with +# all the extensions otherwise the build takes ages. +# 1) File downloads are triggered via gmake invocations -> s l o w !! +# 2) Unless gmake is called -r there are heaps of implicit rule searches +# for the included Makefiles (gmake tries to remake them) +# 3) ... TBD, probably more +# +EXTENSION_MAKEFILES := $(wildcard extensions/*/Makefile) +#include $(EXTENSION_MAKEFILES) EXTRA_CFLAGS = -I$(prefix)/include/ncursesw This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 04:29:48 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 03:29:48 +0000 Subject: [csw-devel] SF.net SVN: gar:[11859] csw/mgar/pkg/iozone/trunk/Makefile Message-ID: Revision: 11859 http://gar.svn.sourceforge.net/gar/?rev=11859&view=rev Author: skayser Date: 2010-12-09 03:29:48 +0000 (Thu, 09 Dec 2010) Log Message: ----------- iozone: don't use VERSION as GARVERSION will be renamed to VERSION soon Modified Paths: -------------- csw/mgar/pkg/iozone/trunk/Makefile Modified: csw/mgar/pkg/iozone/trunk/Makefile =================================================================== --- csw/mgar/pkg/iozone/trunk/Makefile 2010-12-09 02:19:22 UTC (rev 11858) +++ csw/mgar/pkg/iozone/trunk/Makefile 2010-12-09 03:29:48 UTC (rev 11859) @@ -1,6 +1,6 @@ GARNAME = iozone GARVERSION = 3.291 -VERSION = $(shell echo $(GARVERSION) | sed -e 's/\./_/g') +DISTVERSION = $(shell echo $(GARVERSION) | sed -e 's/\./_/g') CATEGORIES = apps DESCRIPTION = IO benchmarking tool @@ -11,17 +11,16 @@ many operating systems. endef +VENDOR_URL = http://www.iozone.org/ MASTER_SITES = http://www.iozone.org/src/current/ MASTER_SITES += http://www.iozone.org/docs/ -DISTFILES = $(GARNAME)$(VERSION).tar -DISTFILES += vx_ioctl.h -DISTFILES += $(call admfiles,CSWiozone) +UFILES_REGEX = $(GARNAME)(\d+(?:\.\d+)*).tar +DISTFILES = $(GARNAME)$(DISTVERSION).tar +DISTFILES += vx_ioctl.h +DISTFILES += $(call admfiles,CSWiozone) -DISTNAME = $(GARNAME)$(VERSION) +DISTNAME = $(GARNAME)$(DISTVERSION) -# We define upstream file regex so we can be notifed of new upstream software release -UFILES_REGEX = $(GARNAME)(\d+(?:\.\d+)*).tar - PATCHFILES = patch-vx_ioctl.diff DOCS = IOzone_msword_98.pdf This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 04:47:04 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 03:47:04 +0000 Subject: [csw-devel] SF.net SVN: gar:[11860] csw/mgar/gar/v2 Message-ID: Revision: 11860 http://gar.svn.sourceforge.net/gar/?rev=11860&view=rev Author: skayser Date: 2010-12-09 03:47:03 +0000 (Thu, 09 Dec 2010) Log Message: ----------- gar/v2: Transitional change for var renaming GAR{NAME,VERSION} -> {NAME,VERSION} As a preparation for the introduction of GARTYPE, the two variables GARNAME and GARVERSION will be renamed to NAME and VERSION (to better reflect their relevance to the package, not GAR). This change renames these variables within GAR while - for now - leaving existing build descriptions functional. After adjusting our documentation and sending a heads up to maintainers@, the next step will then obsolete the old variables. Modified Paths: -------------- csw/mgar/gar/v2/bin/cpan_apply_updates csw/mgar/gar/v2/bin/depgraph csw/mgar/gar/v2/bin/gem2pkg csw/mgar/gar/v2/categories/cpan/category.mk csw/mgar/gar/v2/categories/java/category.mk csw/mgar/gar/v2/categories/kde/category.mk csw/mgar/gar/v2/categories/kde4/category.mk csw/mgar/gar/v2/categories/rbgems/category.mk csw/mgar/gar/v2/categories/xfce/category.mk csw/mgar/gar/v2/gar.conf.mk csw/mgar/gar/v2/gar.lib.mk csw/mgar/gar/v2/gar.mk csw/mgar/gar/v2/gar.pkg.mk csw/mgar/gar/v2/gar.svn.mk csw/mgar/gar/v2/lib/python/gartest.py csw/mgar/gar/v2/pkglib/Makefile csw/mgar/gar/v2/tests/example_test.py csw/mgar/gar/v2/tests/overrides_test.py csw/mgar/gar/v2/tests/static/example/Makefile Modified: csw/mgar/gar/v2/bin/cpan_apply_updates =================================================================== --- csw/mgar/gar/v2/bin/cpan_apply_updates 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/bin/cpan_apply_updates 2010-12-09 03:47:03 UTC (rev 11860) @@ -28,7 +28,7 @@ next; } print "Updating $module to $newvers\n"; - my $rpat = "s/^(GARVERSION).*\$/\$1 = $newvers/"; + my $rpat = "s/^(VERSION).*\$/\$1 = $newvers/"; system("perl -i.bak -plne '$rpat' $module/Makefile") and die "Failed to upgrade $module\n"; system("gmake -C $module update") Modified: csw/mgar/gar/v2/bin/depgraph =================================================================== --- csw/mgar/gar/v2/bin/depgraph 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/bin/depgraph 2010-12-09 03:47:03 UTC (rev 11860) @@ -49,7 +49,7 @@ my ($garname, @deps); foreach (@lines) { - if (/^GARNAME\s*=\s*(\S*)\s*$/) { + if (/^NAME\s*=\s*(\S*)\s*$/) { $garname = $1; next; } Modified: csw/mgar/gar/v2/bin/gem2pkg =================================================================== --- csw/mgar/gar/v2/bin/gem2pkg 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/bin/gem2pkg 2010-12-09 03:47:03 UTC (rev 11860) @@ -14,8 +14,8 @@ blurb = spec.description.gsub("\n", ' ').squeeze.lstrip puts <<"EOF" -GARNAME = #{spec.name} -GARVERSION = #{spec.version} +NAME = #{spec.name} +VERSION = #{spec.version} CATEGORIES = rbgems DESCRIPTION = #{spec.summary} Modified: csw/mgar/gar/v2/categories/cpan/category.mk =================================================================== --- csw/mgar/gar/v2/categories/cpan/category.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/categories/cpan/category.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -3,7 +3,7 @@ MASTER_SITES ?= $(CPAN_MIRRORS) # This is common to most modules - override in module makefile if different -MODDIST ?= $(GARNAME)-$(GARVERSION).tar.gz +MODDIST ?= $(NAME)-$(VERSION).tar.gz DISTFILES += $(MODDIST) CHECKPATH ?= $(firstword $(CPAN_MIRRORS)) @@ -28,13 +28,13 @@ SPKG_SOURCEURL := $(SPKG_SOURCEURL)/~$(call TOLOWER,$(AUTHOR)) # We define upstream file regex so we can be notifed of new upstream software release -UFILES_REGEX ?= $(GARNAME)-(\d+(?:\.\d+)*).tar.gz +UFILES_REGEX ?= $(NAME)-(\d+(?:\.\d+)*).tar.gz USTREAM_MASTER_SITE ?= $(SPKG_SOURCEURL) -$(foreach P,$(PACKAGES),$(eval _CATEGORY_SPKG_DESC_$P = $$(GARNAME): $$(or $$(SPKG_DESC_$P),$$(SPKG_DESC)))) -_CATEGORY_PKGINFO = echo "PERL_MODULE_NAME=$(GARNAME)"; +$(foreach P,$(PACKAGES),$(eval _CATEGORY_SPKG_DESC_$P = $$(NAME): $$(or $$(SPKG_DESC_$P),$$(SPKG_DESC)))) +_CATEGORY_PKGINFO = echo "PERL_MODULE_NAME=$(NAME)"; -SPKG_SOURCEURL := $(SPKG_SOURCEURL)/$(GARNAME) +SPKG_SOURCEURL := $(SPKG_SOURCEURL)/$(NAME) _MERGE_EXCLUDE_CATEGORY = .*/perllocal\.pod .*/\.packlist _CATEGORY_GSPEC_INCLUDE ?= csw_cpan_dyngspec.gspec @@ -91,23 +91,23 @@ # Check for a CPAN module version update update-check: - @echo " ==> Update Check: $(GARNAME) $(GARVERSION)" + @echo " ==> Update Check: $(NAME) $(VERSION)" @if test "x$(MANUAL_UPDATE)" != "x0" ; then \ cpan_check $(CHECKPATH)$(MODDIST) \ $(CURDIR)/../update_results.txt ; \ else \ - echo " ==> AUTO UPDATE CHECK FOR $(GARNAME) IS DISABLED" ; \ + echo " ==> AUTO UPDATE CHECK FOR $(NAME) IS DISABLED" ; \ fi # Print HTML info for modules module-info: - @echo " ==> Generating module info for $(GARNAME) $(GARVERSION)" + @echo " ==> Generating module info for $(NAME) $(VERSION)" @printf "> ../module_info.html @printf "~$(shell echo $(AUTHOR) | tr '[A-Z]' '[a-z]')/" \ >> ../module_info.html - @printf "$(GARNAME)-$(GARVERSION)" \ + @printf "$(NAME)-$(VERSION)" \ >> ../module_info.html - @printf "\">$(GARNAME)-$(GARVERSION)
\n" \ + @printf "\">$(NAME)-$(VERSION)
\n" \ >> ../module_info.html Modified: csw/mgar/gar/v2/categories/java/category.mk =================================================================== --- csw/mgar/gar/v2/categories/java/category.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/categories/java/category.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -1,7 +1,7 @@ # http://jakarta.apache.org/commons # We define upstream file regex so we can be notifed of new upstream software release -UFILES_REGEX ?= commons-$(GARNAME)-(\d+(?:\.\d+)*)-bin.tar.gz +UFILES_REGEX ?= commons-$(NAME)-(\d+(?:\.\d+)*)-bin.tar.gz USTREAM_MASTER_SITE ?= $(SPKG_SOURCEURL) # Includes the rest of gar Modified: csw/mgar/gar/v2/categories/kde/category.mk =================================================================== --- csw/mgar/gar/v2/categories/kde/category.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/categories/kde/category.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -6,8 +6,8 @@ KDE_MIRROR = $(KDE_ROOT)/$(KDE_DIST)/$(KDE_VERSION)/src/ MASTER_SITES ?= $(KDE_MIRROR) -GARVERSION ?= $(KDE_VERSION) -PKGDIST ?= $(GARNAME)-$(GARVERSION).tar.bz2 +VERSION ?= $(KDE_VERSION) +PKGDIST ?= $(NAME)-$(VERSION).tar.bz2 DISTFILES += $(PKGDIST) # Compiler Modified: csw/mgar/gar/v2/categories/kde4/category.mk =================================================================== --- csw/mgar/gar/v2/categories/kde4/category.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/categories/kde4/category.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -6,8 +6,8 @@ KDE_MIRROR = $(KDE_ROOT)/$(KDE_DIST)/$(KDE_VERSION)/src/ MASTER_SITES ?= $(KDE_MIRROR) -GARVERSION ?= $(KDE_VERSION) -PKGDIST ?= $(DISTNAME)-$(GARVERSION).tar.bz2 +VERSION ?= $(KDE_VERSION) +PKGDIST ?= $(DISTNAME)-$(VERSION).tar.bz2 DISTFILES += $(PKGDIST) # Compiler Modified: csw/mgar/gar/v2/categories/rbgems/category.mk =================================================================== --- csw/mgar/gar/v2/categories/rbgems/category.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/categories/rbgems/category.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -4,8 +4,8 @@ MASTER_SITES ?= http://rubygems.org/downloads/ # This is common to most modules - override in module makefile if different -GEMNAME ?= $(GARNAME) -GEMVERSION ?= $(GARVERSION) +GEMNAME ?= $(NAME) +GEMVERSION ?= $(VERSION) GEMFILE ?= $(GEMNAME)-$(GEMVERSION).gem DISTFILES += $(GEMFILE) @@ -86,5 +86,5 @@ # Check for a CPAN module version update update-check: @# TBD! - @echo " ==> Update Check: $(GARNAME) $(GARVERSION)" - @echo " ==> AUTO UPDATE CHECK FOR $(GARNAME) IS DISABLED" + @echo " ==> Update Check: $(NAME) $(VERSION)" + @echo " ==> AUTO UPDATE CHECK FOR $(NAME) IS DISABLED" Modified: csw/mgar/gar/v2/categories/xfce/category.mk =================================================================== --- csw/mgar/gar/v2/categories/xfce/category.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/categories/xfce/category.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -4,8 +4,8 @@ XFCE_MIRROR = $(XFCE_ROOT)/archive/xfce-$(XFCE_VERSION)/src/ MASTER_SITES ?= $(XFCE_MIRROR) -GARVERSION ?= $(XFCE_VERSION) -PKGDIST ?= $(GARNAME)-$(GARVERSION).tar.bz2 +VERSION ?= $(XFCE_VERSION) +PKGDIST ?= $(NAME)-$(VERSION).tar.bz2 DISTFILES += $(PKGDIST) # Compiler options Modified: csw/mgar/gar/v2/gar.conf.mk =================================================================== --- csw/mgar/gar/v2/gar.conf.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/gar.conf.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -595,13 +595,13 @@ # # Gnome -GNOME_PROJ ?= $(GARNAME) +GNOME_PROJ ?= $(NAME) GNOME_ROOT = http://ftp.gnome.org/pub/GNOME/sources -GNOME_SUBV = $(shell echo $(GARVERSION) | awk -F. '{print $$1"."$$2}') +GNOME_SUBV = $(shell echo $(VERSION) | awk -F. '{print $$1"."$$2}') GNOME_MIRROR = $(GNOME_ROOT)/$(GNOME_PROJ)/$(GNOME_SUBV)/ # SourceForge -SF_PROJ ?= $(GARNAME) +SF_PROJ ?= $(NAME) SF_MIRRORS ?= http://downloads.sourceforge.net/$(SF_PROJ)/ # Keep this for compatibility SF_MIRROR = $(firstword $(SF_MIRRORS)) @@ -609,18 +609,18 @@ UPSTREAM_USE_SF ?= 0 # Google Code -GOOGLE_PROJECT ?= $(GARNAME) +GOOGLE_PROJECT ?= $(NAME) GOOGLE_MIRROR ?= http://$(GOOGLE_PROJECT).googlecode.com/files/ # Berlios -BERLIOS_PROJECT ?= $(GARNAME) +BERLIOS_PROJECT ?= $(NAME) BERLIOS_MIRROR ?= http://download.berlios.de/$(BERLIOS_PROJECT)/ http://download2.berlios.de/$(BERLIOS_PROJECT)/ # GNU GNU_SITE = http://mirrors.kernel.org GNU_GNUROOT = $(GNU_SITE)/gnu GNU_NGNUROOT = $(GNU_SITE)/non-gnu -GNU_PROJ ?= $(GARNAME) +GNU_PROJ ?= $(NAME) GNU_MIRROR = $(GNU_GNUROOT)/$(GNU_PROJ)/ GNU_NMIRROR = $(GNU_NGNUROOT)/$(GNU_PROJ)/ @@ -635,7 +635,7 @@ CPAN_FIRST_MIRROR = $(firstword $(CPAN_SITES))/authors/id # Python Package Index -PYPI_PROJECT ?= $(GARNAME) +PYPI_PROJECT ?= $(NAME) PYPI_SUBDIR = $(shell echo $(PYPI_PROJECT) | cut -c 1) PYPI_MIRROR = http://pypi.python.org/packages/source/$(PYPI_SUBDIR)/$(PYPI_PROJECT)/ Modified: csw/mgar/gar/v2/gar.lib.mk =================================================================== --- csw/mgar/gar/v2/gar.lib.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/gar.lib.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -200,7 +200,7 @@ else \ if echo $(DISTFILES) | grep -w $$FILE >/dev/null; then \ PACKAGE_UP_TO_DATE=1; \ - echo "$(GARNAME) : Package is up-to-date. Current version is $$FILE" ; \ + echo "$(NAME) : Package is up-to-date. Current version is $$FILE" ; \ else \ NEW_FILES="$$FILE $$NEW_FILES"; \ fi; \ @@ -209,11 +209,11 @@ done; \ if test -z "$$NEW_FILES" ; then \ if [ ! -n '$(UFILES_REGEX)' ]; then \ - echo "$(GARNAME) : Warning UFILES_REGEX is not set : $(UFILES_REGEX)" ; \ + echo "$(NAME) : Warning UFILES_REGEX is not set : $(UFILES_REGEX)" ; \ # { echo ""; \ -# echo "Hello dear $(GARNAME) maintainer,"; \ +# echo "Hello dear $(NAME) maintainer,"; \ # echo ""; \ -# echo "The upstream notification job has detected that $(GARNAME) is not configured for automatic upstream file update detection."; \ +# echo "The upstream notification job has detected that $(NAME) is not configured for automatic upstream file update detection."; \ # echo ""; \ # echo "Please consider updating your package. Documentation is available from this link : http://www.opencsw.org" ; \ # echo ""; \ @@ -221,22 +221,22 @@ # echo ""; \ # echo "--"; \ # echo "Kindest regards"; \ -# echo "upstream notification job"; } | $(GARBIN)/mail2maintainer -s '[svn] $(GARNAME) upstream update notification' $(GARNAME); \ +# echo "upstream notification job"; } | $(GARBIN)/mail2maintainer -s '[svn] $(NAME) upstream update notification' $(NAME); \ else \ if [ "$$PACKAGE_UP_TO_DATE" -eq "0" ]; then \ - echo "$(GARNAME) : Warning no files to check ! $(FILES2CHECK)" ; \ - echo "$(GARNAME) : UPSTREAM_MASTER_SITES is $(UPSTREAM_MASTER_SITES)" ; \ - echo "$(GARNAME) : DISTNAME is $(DISTNAME)" ; \ - echo "$(GARNAME) : UFILES_REGEX is : $(UFILES_REGEX)" ; \ - echo "$(GARNAME) : Please check configuration" ; \ + echo "$(NAME) : Warning no files to check ! $(FILES2CHECK)" ; \ + echo "$(NAME) : UPSTREAM_MASTER_SITES is $(UPSTREAM_MASTER_SITES)" ; \ + echo "$(NAME) : DISTNAME is $(DISTNAME)" ; \ + echo "$(NAME) : UFILES_REGEX is : $(UFILES_REGEX)" ; \ + echo "$(NAME) : Please check configuration" ; \ fi; \ fi; \ else \ - echo "$(GARNAME) : new upstream files available: $$NEW_FILES"; \ + echo "$(NAME) : new upstream files available: $$NEW_FILES"; \ { echo ""; \ - echo "Hello dear $(GARNAME) maintainer,"; \ + echo "Hello dear $(NAME) maintainer,"; \ echo ""; \ - echo "The upstream notification job has detected the availability of new files for $(GARNAME)."; \ + echo "The upstream notification job has detected the availability of new files for $(NAME)."; \ echo ""; \ echo "The following upstream file(s):"; \ echo " $$NEW_FILES"; \ @@ -250,7 +250,7 @@ echo ""; \ echo "--"; \ echo "Kindest regards"; \ - echo "upstream notification job"; } | $(GARBIN)/mail2maintainer -s '[svn] $(GARNAME) upstream update notification' $(GARNAME); \ + echo "upstream notification job"; } | $(GARBIN)/mail2maintainer -s '[svn] $(NAME) upstream update notification' $(NAME); \ fi; \ fi @@ -266,7 +266,7 @@ else \ if echo $(DISTFILES) | grep -w $$FILE >/dev/null; then \ PACKAGE_UP_TO_DATE=1; \ - echo "$(GARNAME) : Package is up-to-date. Current version is $$FILE" ; \ + echo "$(NAME) : Package is up-to-date. Current version is $$FILE" ; \ else \ NEW_FILES="$$FILE $$NEW_FILES"; \ fi; \ @@ -275,18 +275,18 @@ done; \ if test -z "$$NEW_FILES" ; then \ if [ ! -n '$(UFILES_REGEX)' ]; then \ - echo "$(GARNAME) : Warning UFILES_REGEX is not set : $(UFILES_REGEX)" ; \ + echo "$(NAME) : Warning UFILES_REGEX is not set : $(UFILES_REGEX)" ; \ else \ if [ "$$PACKAGE_UP_TO_DATE" -eq "0" ]; then \ - echo "$(GARNAME) : Warning no files to check ! $(FILES2CHECK)" ; \ - echo "$(GARNAME) : UPSTREAM_MASTER_SITES is $(UPSTREAM_MASTER_SITES)" ; \ - echo "$(GARNAME) : DISTNAME is $(DISTNAME)" ; \ - echo "$(GARNAME) : UFILES_REGEX is : $(UFILES_REGEX)" ; \ - echo "$(GARNAME) : Please check configuration" ; \ + echo "$(NAME) : Warning no files to check ! $(FILES2CHECK)" ; \ + echo "$(NAME) : UPSTREAM_MASTER_SITES is $(UPSTREAM_MASTER_SITES)" ; \ + echo "$(NAME) : DISTNAME is $(DISTNAME)" ; \ + echo "$(NAME) : UFILES_REGEX is : $(UFILES_REGEX)" ; \ + echo "$(NAME) : Please check configuration" ; \ fi; \ fi; \ else \ - echo "$(GARNAME) : new upstream files available: $$NEW_FILES"; \ + echo "$(NAME) : new upstream files available: $$NEW_FILES"; \ fi; \ fi @@ -380,7 +380,7 @@ # to supply an alternate target at their discretion git-extract-%: @echo " ===> Extracting Git Repo $(DOWNLOADDIR)/$* (Treeish: $(call GIT_TREEISH,$*))" - git --bare archive --prefix=$(GARNAME)-$(GARVERSION)/ --remote=file://$(abspath $(DOWNLOADDIR))/$*/ $(call GIT_TREEISH,$*) | gtar -xf - -C $(EXTRACTDIR) + git --bare archive --prefix=$(NAME)-$(VERSION)/ --remote=file://$(abspath $(DOWNLOADDIR))/$*/ $(call GIT_TREEISH,$*) | gtar -xf - -C $(EXTRACTDIR) @$(MAKECOOKIE) # rule to extract files with unzip @@ -768,8 +768,8 @@ # pkg-config scripts install-%-config: - mkdir -p $(STAGINGDIR)/$(GARNAME) - cp -f $(DESTDIR)$(bindir)/$*-config $(STAGINGDIR)/$(GARNAME)/ + mkdir -p $(STAGINGDIR)/$(NAME) + cp -f $(DESTDIR)$(bindir)/$*-config $(STAGINGDIR)/$(NAME)/ $(MAKECOOKIE) ###################################### Modified: csw/mgar/gar/v2/gar.mk =================================================================== --- csw/mgar/gar/v2/gar.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/gar.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -15,6 +15,16 @@ $(error Your version of 'make' is too old: $(MAKE_VERSION). Please make sure you are using at least 3.81) endif +# Prepare for the GARNAME & GARVERSION to NAME & VERSION migration. While the +# recipes have not been adjusted, we will accept both variables. Once the +# adjustment has been carried out, delete these two lines and uncomment the +# deprecation errors below. +NAME ?= $(GARNAME) +VERSION ?= $(GARVERSION) + +#$(if $(GARNAME),$(error The deprecated variable 'GARNAME' is defined, please replace it with 'NAME')) +#$(if $(GARVERSION),$(error The deprecated variable 'GARVERSION' is defined, please replace it with 'VERSION')) + # $(GARDIR) is pre-set by the top-level category.mk GARBIN = $(GARDIR)/bin @@ -33,7 +43,7 @@ PARALLELMFLAGS ?= $(MFLAGS) export PARALLELMFLAGS -DISTNAME ?= $(GARNAME)-$(GARVERSION) +DISTNAME ?= $(NAME)-$(VERSION) DYNSCRIPTS = $(foreach PKG,$(SPKG_SPECS),$(foreach SCR,$(ADMSCRIPTS),$(if $(value $(PKG)_$(SCR)), $(PKG).$(SCR)))) _LOCALFILES = $(notdir $(wildcard files/*)) @@ -57,9 +67,9 @@ # For rules that do nothing, display what dependencies they # successfully completed #DONADA = @echo " [$@] complete. Finished rules: $+" -#DONADA = @touch $(COOKIEDIR)/$@; echo " [$@] complete for $(GARNAME)." +#DONADA = @touch $(COOKIEDIR)/$@; echo " [$@] complete for $(NAME)." COOKIEFILE = $(COOKIEDIR)/$(patsubst $(COOKIEDIR)/%,%,$1) -DONADA = @touch $(call COOKIEFILE,$@); echo " [$@] complete for $(GARNAME)." +DONADA = @touch $(call COOKIEFILE,$@); echo " [$@] complete for $(NAME)." # TODO: write a stub rule to print out the name of a rule when it @@ -425,8 +435,8 @@ @( if [ -d "$(WORKSRC)" ]; then \ echo ' ==> Snapshotting extracted source tree with git'; \ cd $(WORKSRC); git init; git add .; \ - git commit -m "Upstream $(GARVERSION)"; \ - git tag -am "Upstream $(GARVERSION)" upstream-$(GARVERSION); \ + git commit -m "Upstream $(VERSION)"; \ + git tag -am "Upstream $(VERSION)" upstream-$(VERSION); \ git checkout -b csw; \ fi ) @$(MAKECOOKIE) @@ -471,7 +481,7 @@ @( if [ -d "$(WORKSRC)/.git" ]; then \ echo "Tagging top of current csw patch stack..."; \ cd $(WORKSRC); \ - git tag -am "CSW $(GARVERSION)" csw-$(GARVERSION); \ + git tag -am "CSW $(VERSION)" csw-$(VERSION); \ fi ) @$(MAKECOOKIE) @@ -495,7 +505,7 @@ echo "Capturing changes..."; \ git commit $(GIT_COMMIT_OPTS) && \ ( NEXTPATCH=`git log --pretty=oneline master..HEAD | wc -l | tr -d '[[:space:]]'`; \ - git format-patch --start-number=$$NEXTPATCH csw-$(GARVERSION); \ + git format-patch --start-number=$$NEXTPATCH csw-$(VERSION); \ echo Add the following to your recipe and then; \ NEWPATCHES=`echo 00*-*patch`; \ FILES_PATCHES=`for p in $$NEWPATCHES; do echo files/$$p; done`; \ Modified: csw/mgar/gar/v2/gar.pkg.mk =================================================================== --- csw/mgar/gar/v2/gar.pkg.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/gar.pkg.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -22,8 +22,8 @@ PKGINFO ?= /usr/bin/pkginfo # You can use either PACKAGES with dynamic gspec-files or explicitly add gspec-files to DISTFILES. -# Do "PACKAGES = CSWmypkg" when you build a package whose GARNAME is not the package name. -# If no explicit gspec-files have been defined the default name for the package is CSW$(GARNAME). +# Do "PACKAGES = CSWmypkg" when you build a package whose NAME is not the package name. +# If no explicit gspec-files have been defined the default name for the package is CSW$(NAME). # The whole processing is done from _PKG_SPECS, which includes all packages to be build. # SRCPACKAGE_BASE is the name of the package containing the sourcefiles for all packages @@ -31,8 +31,8 @@ # SRCPACKAGE is the name of the package containing the sources ifeq ($(origin PACKAGES), undefined) -PACKAGES = $(if $(filter %.gspec,$(DISTFILES)),,CSW$(GARNAME)) -CATALOGNAME ?= $(if $(filter %.gspec,$(DISTFILES)),,$(GARNAME)) +PACKAGES = $(if $(filter %.gspec,$(DISTFILES)),,CSW$(NAME)) +CATALOGNAME ?= $(if $(filter %.gspec,$(DISTFILES)),,$(NAME)) SRCPACKAGE_BASE = $(firstword $(basename $(filter %.gspec,$(DISTFILES))) $(PACKAGES)) SRCPACKAGE ?= $(SRCPACKAGE_BASE)-src SPKG_SPECS ?= $(basename $(filter %.gspec,$(DISTFILES))) $(PACKAGES) $(if $(NOSOURCEPACKAGE),,$(SRCPACKAGE)) @@ -78,7 +78,7 @@ _PKG_SPECS = $(filter-out $(NOPACKAGE),$(SPKG_SPECS)) -BUNDLE ?= $(GARNAME) +BUNDLE ?= $(NAME) # pkgname - Get the name of a package from a gspec-name or package-name # @@ -150,7 +150,7 @@ SPKG_DESC ?= $(DESCRIPTION) -SPKG_VERSION ?= $(GARVERSION) +SPKG_VERSION ?= $(VERSION) SPKG_CATEGORY ?= application SPKG_SOURCEURL ?= $(firstword $(VENDOR_URL) \ $(if $(filter $(GNU_MIRROR),$(MASTER_SITES)),http://www.gnu.org/software/$(GNU_PROJ)) \ @@ -248,7 +248,7 @@ # Where we find our mkpackage global templates PKGLIB = $(GARDIR)/pkglib -PKG_EXPORTS = GARNAME GARVERSION DESCRIPTION CATEGORIES GARCH GARDIR GARBIN +PKG_EXPORTS = NAME VERSION DESCRIPTION CATEGORIES GARCH GARDIR GARBIN PKG_EXPORTS += CURDIR WORKDIR WORKDIR_FIRSTMOD WORKSRC WORKSRC_FIRSTMOD PKGROOT PKG_EXPORTS += SPKG_REVSTAMP SPKG_PKGNAME SPKG_DESC SPKG_VERSION SPKG_CATEGORY PKG_EXPORTS += SPKG_VENDOR SPKG_EMAIL SPKG_PSTAMP SPKG_BASEDIR SPKG_CLASSES @@ -484,7 +484,7 @@ # Dynamic gspec-files are constructed as follows: # - Packages using dynamic gspec-files must be listed in PACKAGES # - There is a default of PACKAGES containing one packages named CSW -# followed by the GARNAME. It can be changed by setting PACKAGES explicitly. +# followed by the NAME. It can be changed by setting PACKAGES explicitly. # - The name of the generated package is always the same as listed in PACKAGES # - The catalog name defaults to the suffix following CSW of the package name, # but can be customized by setting CATALOGNAME_ = @@ -930,13 +930,13 @@ submitpkg-%: @$(if $(filter $(call _REVISION),UNCOMMITTED NOTVERSIONED NOSVN),\ $(error You have local files not in the repository. Please commit everything before submitting a package)) - $(SVN) -m "$(GARNAME): Tag as release $(SPKG_VERSION),$(SPKG_REVSTAMP)$(if $(filter default,$*),, for project '$*')" cp $(_PKGURL)/trunk $(_PKGURL)/tags/$(if $(filter default,$*),,$*_)$(GARNAME)-$(SPKG_VERSION),$(SPKG_REVSTAMP) + $(SVN) -m "$(NAME): Tag as release $(SPKG_VERSION),$(SPKG_REVSTAMP)$(if $(filter default,$*),, for project '$*')" cp $(_PKGURL)/trunk $(_PKGURL)/tags/$(if $(filter default,$*),,$*_)$(NAME)-$(SPKG_VERSION),$(SPKG_REVSTAMP) # dependb - update the dependency database # dependb: @dependb --db $(SPKG_DEPEND_DB) \ - --parent $(CATEGORIES)/$(GARNAME) \ + --parent $(CATEGORIES)/$(NAME) \ --add $(DEPENDS) # pkgenv - dump the packaging environment Modified: csw/mgar/gar/v2/gar.svn.mk =================================================================== --- csw/mgar/gar/v2/gar.svn.mk 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/gar.svn.mk 2010-12-09 03:47:03 UTC (rev 11860) @@ -27,6 +27,6 @@ $(GARDIR)/bin/svnignore work cookies download scm-tag-release: - $(SVN) cp ../trunk ../tags/$(GARNAME)-$(GARVERSION)$(SPKG_REVSTAMP) + $(SVN) cp ../trunk ../tags/$(NAME)-$(VERSION)$(SPKG_REVSTAMP) .PHONY: scm-help scm-update-all scm-update-package scm-update-gar scm-update-ignores scm-tag-release Modified: csw/mgar/gar/v2/lib/python/gartest.py =================================================================== --- csw/mgar/gar/v2/lib/python/gartest.py 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/lib/python/gartest.py 2010-12-09 03:47:03 UTC (rev 11860) @@ -120,13 +120,13 @@ os.mkdir(self.filedir) self.install_files = [] self.garvars = { - "GARNAME": "testbuild", + "NAME": "testbuild", "DESCRIPTION": u"A test package from %s" % self, "CATEGORIES": "lib", "CONFIGURE_ARGS": "$(DIRPATHS)", "SPKG_SOURCEURL": "http://www.opencsw.org/", "MASTER_SITES": "", - "GARVERSION": "0.0.1", + "VERSION": "0.0.1", "CONFIGURE_SCRIPTS": "", "BUILD_SCRIPTS": "", "TEST_SCRIPTS": "", Modified: csw/mgar/gar/v2/pkglib/Makefile =================================================================== --- csw/mgar/gar/v2/pkglib/Makefile 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/pkglib/Makefile 2010-12-09 03:47:03 UTC (rev 11860) @@ -1,5 +1,5 @@ -GARNAME = csw -GARVERSION = 1.0 +NAME = csw +VERSION = 1.0 CATEGORIES = none DESCRIPTION = CSW static include files for Solaris packaging. Modified: csw/mgar/gar/v2/tests/example_test.py =================================================================== --- csw/mgar/gar/v2/tests/example_test.py 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/tests/example_test.py 2010-12-09 03:47:03 UTC (rev 11860) @@ -10,9 +10,9 @@ """An example end-to-end test of GAR.""" def testPkginfoName(self): - """Checks that the GARNAME makes it to the NAME in pkginfo.""" + """Checks that the NAME makes it to the NAME in pkginfo.""" mybuild = gartest.DynamicGarBuild() - mybuild.SetGarVariable("GARNAME", "foo") + mybuild.SetGarVariable("NAME", "foo") mybuild.AddInstallFile("/opt/csw/share/foo", "bar!\n") mybuild.WriteGarFiles() self.assertEquals(0, mybuild.Build()) Modified: csw/mgar/gar/v2/tests/overrides_test.py =================================================================== --- csw/mgar/gar/v2/tests/overrides_test.py 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/tests/overrides_test.py 2010-12-09 03:47:03 UTC (rev 11860) @@ -13,7 +13,7 @@ def testOneOverride(self): """Checks that CHECKPKG_OVERRIDES variable creates an override.""" mybuild = gartest.DynamicGarBuild() - mybuild.SetGarVariable("GARNAME", "overrides-test") + mybuild.SetGarVariable("NAME", "overrides-test") mybuild.SetGarVariable("CATALOGNAME", "overrides_test") mybuild.SetGarVariable("CHECKPKG_OVERRIDES", "example-tag|example-parameter") @@ -33,7 +33,7 @@ def testTwoOverriders(self): """Checks that CHECKPKG_OVERRIDES variable creates overrides.""" mybuild = gartest.DynamicGarBuild() - mybuild.SetGarVariable("GARNAME", "overrides-test") + mybuild.SetGarVariable("NAME", "overrides-test") mybuild.SetGarVariable("CATALOGNAME", "overrides_test") mybuild.SetGarVariable( "CHECKPKG_OVERRIDES", @@ -58,7 +58,7 @@ # """http://sourceforge.net/apps/trac/gar/ticket/17""" # overr_file_1 = "/opt/csw/share/checkpkg/overrides/overrides_test_1" # mybuild = gartest.DynamicGarBuild() -# mybuild.SetGarVariable("GARNAME", "overrides-test") +# mybuild.SetGarVariable("NAME", "overrides-test") # mybuild.SetGarVariable("PACKAGES", "CSWoverrides-test-1 " # "CSWoverrides-test-2") # mybuild.SetGarVariable("CATALOGNAME_CSWoverrides-test-1", Modified: csw/mgar/gar/v2/tests/static/example/Makefile =================================================================== --- csw/mgar/gar/v2/tests/static/example/Makefile 2010-12-09 03:29:48 UTC (rev 11859) +++ csw/mgar/gar/v2/tests/static/example/Makefile 2010-12-09 03:47:03 UTC (rev 11860) @@ -2,8 +2,8 @@ # Distributed under the terms of the GNU General Public License v2 # $Id$ -GARNAME = loose-files -GARVERSION = 1.0 +NAME = loose-files +VERSION = 1.0 CATEGORIES = utils DESCRIPTION = An example of a package created from loose files. define BLURB This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 22:26:25 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 21:26:25 +0000 Subject: [csw-devel] SF.net SVN: gar:[11861] csw/mgar/pkg/synergy/trunk Message-ID: Revision: 11861 http://gar.svn.sourceforge.net/gar/?rev=11861&view=rev Author: skayser Date: 2010-12-09 21:26:25 +0000 (Thu, 09 Dec 2010) Log Message: ----------- synergy: work towards 1.3.4 Modified Paths: -------------- csw/mgar/pkg/synergy/trunk/Makefile csw/mgar/pkg/synergy/trunk/checksums Modified: csw/mgar/pkg/synergy/trunk/Makefile =================================================================== --- csw/mgar/pkg/synergy/trunk/Makefile 2010-12-09 03:47:03 UTC (rev 11860) +++ csw/mgar/pkg/synergy/trunk/Makefile 2010-12-09 21:26:25 UTC (rev 11861) @@ -1,5 +1,17 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! Doesn't yet build +# "../../lib/server/CConfig.h", line 145: Error: "," expected instead of "<". +# "../../lib/server/CConfig.h", line 145: Error: Use ";" to terminate declarations. +# "../../lib/server/CConfig.h", line 145: Error: "}" expected instead of "<". +# "../../lib/server/CConfig.h", line 145: Error: Use ";" to terminate declarations. +# "../../lib/server/CConfig.h", line 145: Error: A declaration was expected instead of "<". +# "../../lib/server/CConfig.h", line 145: Warning: declarator required in declaration. +# "../../lib/server/CConfig.h", line 145: Error: Use ";" to terminate declarations. +# "../../lib/server/CConfig.h", line 145: Error: A declaration was expected instead of ">" +# GARNAME = synergy -GARVERSION = 1.3.1 +GARVERSION = 1.3.4 CATEGORIES = apps DESCRIPTION = Software-based TCP/IP "KVM" switch @@ -10,54 +22,50 @@ on their desk since each system uses its own monitor(s). endef -SPKG_SOURCEURL = http://synergy2.sourceforge.net/ +VENDOR_URL = http://synergy-foss.org/ +MASTER_SITES = $(GOOGLE_MIRROR) +GOOGLE_PROJECT = synergy-plus +DISTFILES = synergy-plus-$(GARVERSION).tar.gz +DISTNAME = synergy-plus-$(GARVERSION) -MASTER_SITES = $(SF_MIRRORS) -SF_PROJ = $(GARNAME)2 -DISTFILES = synergy-$(GARVERSION).tar.gz -DISTFILES += $(call admfiles,CSWsynergy) - # We define upstream file regex so we can be notifed of new upstream software release -UPSTREAM_MASTER_SITES = $(SF_PROJECT_SHOWFILE)=59275 -UPSTREAM_USE_SF = 1 -UFILES_REGEX = (\d+(?:\.\d+)*) +UPSTREAM_MASTER_SITES = http://synergy-foss.org/pm/projects/synergy/tabs/download +UFILES_REGEX = synergy-plus-(\d+(?:\.\d+)*).tar.gz +# Was required with synergy 1.3.1, still required? # Adjust code so that it compiles with Sun Studio Compiler # https://sourceforge.net/tracker/index.php?func=detail&aid=1574331&group_id=59275&atid=490469 -PATCHFILES = suncc.diff +#PATCHFILES = suncc.diff +# Was required with synergy 1.3.1, still required? # Adjust configure.in to properly use --x-libraries option # http://sf.net/tracker/index.php?func=detail&aid=2359359&group_id=59275&atid=490469 -PATCHFILES += link-xlibs.diff +#PATCHFILES += link-xlibs.diff CONFIGURE_ARGS = $(DIRPATHS) +CONFIGURE_ARGS += --sysconfdir=/etc/opt/csw CONFIGURE_ARGS += --x-includes=/usr/openwin/include CONFIGURE_ARGS += --x-libraries=/usr/openwin/lib TEST_SCRIPTS = -# fix missing user write permissions -post-extract: - @chmod -R u+w $(WORKSRC) - @$(MAKECOOKIE) +#pre-configure: +# cd $(WORKSRC) && autoreconf +# @$(MAKECOOKIE) -pre-configure: - cd $(WORKSRC) && autoreconf - @$(MAKECOOKIE) - post-install: - @ginstall -d $(DESTDIR)$(sysconfdir) - @ginstall -d $(DESTDIR)$(docdir)/$(GARNAME)/images - @ginstall -m 644 \ + ginstall -d $(DESTDIR)$(sysconfdir) + ginstall -d $(DESTDIR)$(docdir)/$(GARNAME)/images + ginstall -m 644 \ $(WORKSRC)/examples/synergy.conf \ $(DESTDIR)$(sysconfdir)/synergy.conf.example - @ginstall -m 644 \ + ginstall -m 644 \ $(WORKSRC)/README \ $(WORKSRC)/AUTHORS \ $(WORKSRC)/NEWS \ $(WORKSRC)/doc/*.html \ $(DESTDIR)$(docdir)/$(GARNAME) - @ginstall -m 644 \ + ginstall -m 644 \ $(WORKSRC)/doc/images/* \ $(DESTDIR)$(docdir)/$(GARNAME)/images @$(MAKECOOKIE) Modified: csw/mgar/pkg/synergy/trunk/checksums =================================================================== --- csw/mgar/pkg/synergy/trunk/checksums 2010-12-09 03:47:03 UTC (rev 11860) +++ csw/mgar/pkg/synergy/trunk/checksums 2010-12-09 21:26:25 UTC (rev 11861) @@ -1,4 +1 @@ -a6e09d6b71cb217f23069980060abf27 download/synergy-1.3.1.tar.gz -8ee797c256fbfdd223d1647dcab454a0 download/CSWsynergy.gspec -aa4510eb9fbc50674aa20395f772b1c0 download/suncc.diff -4d57febac6efdffb43d9edc9a3a9c2d4 download/link-xlibs.diff +2c565afe5f920d363eef38dd97449b73 synergy-plus-1.3.4.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 22:28:30 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 21:28:30 +0000 Subject: [csw-devel] SF.net SVN: gar:[11862] csw/mgar/pkg/bvi/trunk/Makefile Message-ID: Revision: 11862 http://gar.svn.sourceforge.net/gar/?rev=11862&view=rev Author: skayser Date: 2010-12-09 21:28:30 +0000 (Thu, 09 Dec 2010) Log Message: ----------- bvi: cosmetic tweaks Modified Paths: -------------- csw/mgar/pkg/bvi/trunk/Makefile Modified: csw/mgar/pkg/bvi/trunk/Makefile =================================================================== --- csw/mgar/pkg/bvi/trunk/Makefile 2010-12-09 21:26:25 UTC (rev 11861) +++ csw/mgar/pkg/bvi/trunk/Makefile 2010-12-09 21:28:30 UTC (rev 11862) @@ -4,13 +4,15 @@ DESCRIPTION = A vi-like binary file (hex) editor define BLURB - Long description + The bvi is a display-oriented editor for binary files, based on the vi + texteditor. If you are familiar with vi, just start the editor and begin + to edit! A bmore program is also included in the package. If you never + heard about vi, maybe bvi is not the best choice for you. endef +VENDOR_URL = http://bvi.sourceforge.net/ MASTER_SITES = $(SF_MIRRORS) -DISTFILES = $(GARNAME)-$(GARVERSION).src.tar.gz - -# We define upstream file regex so we can be notifed of new upstream software release +DISTFILES = $(GARNAME)-$(GARVERSION).src.tar.gz UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).src.tar.gz UPSTREAM_MASTER_SITES = http://sourceforge.net/projects/bvi/files/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 22:32:12 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 21:32:12 +0000 Subject: [csw-devel] SF.net SVN: gar:[11863] csw/mgar/pkg/xterm/trunk Message-ID: Revision: 11863 http://gar.svn.sourceforge.net/gar/?rev=11863&view=rev Author: skayser Date: 2010-12-09 21:32:12 +0000 (Thu, 09 Dec 2010) Log Message: ----------- xterm: bump to 267 Modified Paths: -------------- csw/mgar/pkg/xterm/trunk/Makefile csw/mgar/pkg/xterm/trunk/checksums csw/mgar/pkg/xterm/trunk/files/changelog.CSW Modified: csw/mgar/pkg/xterm/trunk/Makefile =================================================================== --- csw/mgar/pkg/xterm/trunk/Makefile 2010-12-09 21:28:30 UTC (rev 11862) +++ csw/mgar/pkg/xterm/trunk/Makefile 2010-12-09 21:32:12 UTC (rev 11863) @@ -1,6 +1,6 @@ # TODO (release-critical prefixed with !, non release-critical with *) GARNAME = xterm -GARVERSION = 260 +GARVERSION = 267 CATEGORIES = apps DESCRIPTION = Terminal emulator for the X Window System Modified: csw/mgar/pkg/xterm/trunk/checksums =================================================================== --- csw/mgar/pkg/xterm/trunk/checksums 2010-12-09 21:28:30 UTC (rev 11862) +++ csw/mgar/pkg/xterm/trunk/checksums 2010-12-09 21:32:12 UTC (rev 11863) @@ -1,2 +1 @@ -d028c88c07ae91b8367ee76cdcb16cc8 COPYING -1db28bd91f66278b836162e960ad4e22 xterm-260.tgz +bb53ddd4933736a50e6391cef3472c12 xterm-266.tgz Modified: csw/mgar/pkg/xterm/trunk/files/changelog.CSW =================================================================== --- csw/mgar/pkg/xterm/trunk/files/changelog.CSW 2010-12-09 21:28:30 UTC (rev 11862) +++ csw/mgar/pkg/xterm/trunk/files/changelog.CSW 2010-12-09 21:32:12 UTC (rev 11863) @@ -1,3 +1,9 @@ +xterm (267,REV=2010.12.09) + + * Updated to 267. (Fixes #4582) + + -- Sebastian Kayser Thu, 9 Dec 2010 22:29:55 +0100 + xterm (260,REV=2010.07.08) * Updated to 260. (Fixes #4473) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Thu Dec 9 22:38:27 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Thu, 09 Dec 2010 21:38:27 +0000 Subject: [csw-devel] SF.net SVN: gar:[11864] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11864 http://gar.svn.sourceforge.net/gar/?rev=11864&view=rev Author: gadavis Date: 2010-12-09 21:38:27 +0000 (Thu, 09 Dec 2010) Log Message: ----------- clean up the default configuration files some more Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-09 21:32:12 UTC (rev 11863) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-09 21:38:27 UTC (rev 11864) @@ -35,6 +35,8 @@ # move all of the var stuff to /var/opt/csw localstatedir = /var$(prefix) + +## Configuration directory PRESERVECONF += $(raddbdir)/.*\.conf PRESERVECONF += $(raddbdir)/acct_users PRESERVECONF += $(raddbdir)/attrs.* @@ -48,7 +50,27 @@ PRESERVECONF += $(raddbdir)/preproxy_users PRESERVECONF += $(raddbdir)/sql/.*/.*\.conf PRESERVECONF += $(raddbdir)/users +PRESERVECONF += $(raddbdir)/sites-available/buffered-sql +PRESERVECONF += $(raddbdir)/sites-available/coa +PRESERVECONF += $(raddbdir)/sites-available/control-socket +PRESERVECONF += $(raddbdir)/sites-available/copy-acct-to-home-server +PRESERVECONF += $(raddbdir)/sites-available/decoupled-accounting +PRESERVECONF += $(raddbdir)/sites-available/default +PRESERVECONF += $(raddbdir)/sites-available/dhcp +PRESERVECONF += $(raddbdir)/sites-available/dynamic-clients +PRESERVECONF += $(raddbdir)/sites-available/example +PRESERVECONF += $(raddbdir)/sites-available/inter-tunnel +PRESERVECONF += $(raddbdir)/sites-available/originate-coa +PRESERVECONF += $(raddbdir)/sites-available/proxy-inner-tunnel +PRESERVECONF += $(raddbdir)/sites-available/robust-proxy-accounting +PRESERVECONF += $(raddbdir)/sites-available/status +PRESERVECONF += $(raddbdir)/sites-available/virtual.example.com +PRESERVECONF += $(raddbdir)/sites-available/vmps +## Additional Config cleanups +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sites-enabled/control-socket +EXTRA_MERGE_EXCLUDE_FILES += $(raddbdir)/sites-enabled/inner-tunnel + CONFIGURE_ARGS = $(DIRPATHS) CONFIGURE_ARGS += CC=$(CC) CXX=$(CXX) F77=$(F77) FC=$(FC) CONFIGURE_ARGS += CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 22:44:16 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 21:44:16 +0000 Subject: [csw-devel] SF.net SVN: gar:[11865] csw/mgar/pkg/xterm/trunk/checksums Message-ID: Revision: 11865 http://gar.svn.sourceforge.net/gar/?rev=11865&view=rev Author: skayser Date: 2010-12-09 21:44:16 +0000 (Thu, 09 Dec 2010) Log Message: ----------- xterm: bump to 267 (checksums) Modified Paths: -------------- csw/mgar/pkg/xterm/trunk/checksums Modified: csw/mgar/pkg/xterm/trunk/checksums =================================================================== --- csw/mgar/pkg/xterm/trunk/checksums 2010-12-09 21:38:27 UTC (rev 11864) +++ csw/mgar/pkg/xterm/trunk/checksums 2010-12-09 21:44:16 UTC (rev 11865) @@ -1 +1 @@ -bb53ddd4933736a50e6391cef3472c12 xterm-266.tgz +3945ab70cfa2a9e95804157ee1b0f8e8 xterm-267.tgz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 23:11:16 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 22:11:16 +0000 Subject: [csw-devel] SF.net SVN: gar:[11866] csw/mgar/pkg/spine/trunk Message-ID: Revision: 11866 http://gar.svn.sourceforge.net/gar/?rev=11866&view=rev Author: skayser Date: 2010-12-09 22:11:16 +0000 (Thu, 09 Dec 2010) Log Message: ----------- spine: commit work in progress, mainly cleanups, feel free to take over Modified Paths: -------------- csw/mgar/pkg/spine/trunk/Makefile Removed Paths: ------------- csw/mgar/pkg/spine/trunk/files/CSWspine.prototype Modified: csw/mgar/pkg/spine/trunk/Makefile =================================================================== --- csw/mgar/pkg/spine/trunk/Makefile 2010-12-09 21:44:16 UTC (rev 11865) +++ csw/mgar/pkg/spine/trunk/Makefile 2010-12-09 22:11:16 UTC (rev 11866) @@ -1,19 +1,33 @@ -#GARNAME = cacti-spine +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! Convert postinstall to POSTMSG +# ! Test that the package is actually working +# ! Check the user handling (cswusergroup file exists, but not used?!) +# * Document and merge patches, ./configure LD* hack really required?! +# * libtool hack really required? +# GARNAME = spine GARVERSION = 0.8.7e CATEGORIES = apps -DESCRIPTION = very fast poller for cacti +DESCRIPTION = Very fast poller for cacti define BLURB - Spine, formally Cactid, is a poller for Cacti that primarily strives to be as fast as possible. For this reason it is written in native C, makes use of POSIX threads, and is linked directly against the net-snmp library for minmumal SNMP polling overhead. Spine is a replacement for the default cmd.php poller so you must decide if using Spine makes sense for your installation. + Spine, formally Cactid, is a poller for Cacti that primarily strives + to be as fast as possible. For this reason it is written in native C, + makes use of POSIX threads, and is linked directly against the net-snmp + library for minmumal SNMP polling overhead. Spine is a replacement for + the default cmd.php poller so you must decide if using Spine makes sense + for your installation. endef +VENDOR_URL = http://www.cacti.net/ MASTER_SITES = http://www.cacti.net/downloads/spine/ -#DISTFILES = $(GARNAME)-$(GARVERSION).tar.gz -DISTFILES = cacti-$(GARNAME)-$(GARVERSION).tar.gz -DISTFILES += cswusergroup CSWspine.postinstall CSWspine.prototype -DISTNAME = cacti-$(GARNAME)-$(GARVERSION) +DISTFILES = cacti-$(GARNAME)-$(GARVERSION).tar.gz +DISTFILES += cswusergroup CSWspine.postinstall +WORKSRC = $(WORKDIR)/cacti-$(GARNAME)-$(GARVERSION) +LICENSE = LICENSE + PATCHFILES += configure.diff PATCHFILES += spine.h.diff PATCHFILES += util.c.diff @@ -21,56 +35,52 @@ NOISALIST = 1 -CATALOGNAME = spine +RUNTIME_DEP_PKGS += CSWmysql5rt +RUNTIME_DEP_PKGS += CSWnetsnmp +RUNTIME_DEP_PKGS += CSWosslrt +RUNTIME_DEP_PKGS += CSWzlib -# We define upstream file regex so we can be notifed of new upstream software release -UFILES_REGEX = -(\d+(?:\.\d+)*).tar.gz - -# If the url used to check for software update is different of MASTER_SITES, then -# uncomment the next line. Otherwise it is set by default to the value of MASTER_SITES -# UPSTREAM_MASTER_SITES = - -RUNTIME_DEP_PKGS = CSWmysql5rt CSWnetsnmp CSWosslrt CSWzlib CSWcswclassutils - -SPKG_CLASSES = none cswpreserveconf - -CONFIGURE_ARGS = $(DIRPATHS) +CONFIGURE_ARGS = $(DIRPATHS) CONFIGURE_ARGS += --with-mysql=/opt/csw/mysql5 CONFIGURE_ARGS += --with-snmp=/opt/csw/include/net-snmp +EXTRA_LIB = /opt/csw/mysql5/lib/mysql +CONFIGURE_SCRIPTS = custom INSTALL_SCRIPTS = custom +# Spine doesn't come with a test suite SKIPTEST = 1 -EXTRA_LIB += /opt/csw/mysql5/lib/mysql +sysconfdir = /etc/opt/csw +PRESERVECONF = $(sysconfdir)/spine.conf -DOCDEST = $(DESTDIR)$(BUILD_PREFIX)/share/doc/spine -BINDIR = $(DESTDIR)$(BUILD_PREFIX)/bin -CFGDIR = $(DESTDIR)/etc$(BUILD_PREFIX) - include gar/category.mk -pre-configure-modulated: - @echo " ==> Pre-configure in $(WORKSRC)" - @rm $(WORKSRC)/config/ltmain.sh - @rm $(WORKSRC)/config/config.sub - @rm $(WORKSRC)/config/config.guess - @ln -s /opt/csw/share/libtool/config/ltmain.sh $(WORKSRC)/config/ltmain.sh - @ln -s /opt/csw/share/libtool/config/config.sub $(WORKSRC)/config/config.sub - @ln -s /opt/csw/share/libtool/config/config.guess $(WORKSRC)/config/config.guess +configure-custom: + @echo " ==> Configuring in $(WORKSRC)" + rm $(WORKSRC)/config/ltmain.sh + rm $(WORKSRC)/config/config.sub + rm $(WORKSRC)/config/config.guess + ln -s /opt/csw/share/libtool/config/ltmain.sh $(WORKSRC)/config/ltmain.sh + ln -s /opt/csw/share/libtool/config/config.sub $(WORKSRC)/config/config.sub + ln -s /opt/csw/share/libtool/config/config.guess $(WORKSRC)/config/config.guess + ( cd $(WORKSRC) ; ./configure $(CONFIGURE_ARGS) ) @$(MAKECOOKIE) +install-custom: BINDIR = $(DESTDIR)$(bindir) +install-custom: CFGDIR = $(DESTDIR)$(sysconfdir) +install-custom: DOCDEST = $(DESTDIR)$(docdir)/spine install-custom: - @ginstall -d $(DOCDEST) - @ginstall -m 644 $(WORKSRC)/LICENSE $(DOCDEST) - @ginstall -m 644 $(WORKSRC)/README $(DOCDEST) - @ginstall -m 644 $(WORKSRC)/README-WINDOWS $(DOCDEST) - @ginstall -m 644 $(WORKSRC)/INSTALL $(DOCDEST) - @ginstall -m 644 $(WORKSRC)/LICENSE.LGPL $(DOCDEST) - @ginstall -m 644 $(WORKSRC)/COPYING $(DOCDEST) - @ginstall -m 644 $(WORKSRC)/ChangeLog $(DOCDEST) - @ginstall -d $(BINDIR) - @ginstall -m 755 $(WORKSRC)/spine $(BINDIR) - @ginstall -d $(CFGDIR) - @ginstall -m 644 $(WORKSRC)/spine.conf $(CFGDIR)/spine.conf.CSW + ginstall -d $(DOCDEST) + ginstall -m 644 $(WORKSRC)/LICENSE $(DOCDEST) + ginstall -m 644 $(WORKSRC)/README $(DOCDEST) + ginstall -m 644 $(WORKSRC)/README-WINDOWS $(DOCDEST) + ginstall -m 644 $(WORKSRC)/INSTALL $(DOCDEST) + ginstall -m 644 $(WORKSRC)/LICENSE.LGPL $(DOCDEST) + ginstall -m 644 $(WORKSRC)/COPYING $(DOCDEST) + ginstall -m 644 $(WORKSRC)/ChangeLog $(DOCDEST) + ginstall -d $(BINDIR) + ginstall -m 755 $(WORKSRC)/spine $(BINDIR) + ginstall -d $(CFGDIR) + ginstall -m 644 $(WORKSRC)/spine.conf $(CFGDIR)/spine.conf @$(MAKECOOKIE) Deleted: csw/mgar/pkg/spine/trunk/files/CSWspine.prototype =================================================================== --- csw/mgar/pkg/spine/trunk/files/CSWspine.prototype 2010-12-09 21:44:16 UTC (rev 11865) +++ csw/mgar/pkg/spine/trunk/files/CSWspine.prototype 2010-12-09 22:11:16 UTC (rev 11866) @@ -1,10 +0,0 @@ -f none /opt/csw/bin/spine 0755 root bin -f cswpreserveconf /etc/opt/csw/spine.conf.CSW 0644 root bin -d none /opt/csw/share/doc/spine 0755 root bin -f none /opt/csw/share/doc/spine/COPYING 0644 root bin -f none /opt/csw/share/doc/spine/ChangeLog 0644 root bin -f none /opt/csw/share/doc/spine/INSTALL 0644 root bin -f none /opt/csw/share/doc/spine/LICENSE 0644 root bin -f none /opt/csw/share/doc/spine/LICENSE.LGPL 0644 root bin -f none /opt/csw/share/doc/spine/README 0644 root bin -f none /opt/csw/share/doc/spine/README-WINDOWS 0644 root bin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 23:13:44 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 22:13:44 +0000 Subject: [csw-devel] SF.net SVN: gar:[11867] csw/mgar/pkg/autossh/trunk/Makefile Message-ID: Revision: 11867 http://gar.svn.sourceforge.net/gar/?rev=11867&view=rev Author: skayser Date: 2010-12-09 22:13:44 +0000 (Thu, 09 Dec 2010) Log Message: ----------- autossh: document known issue Modified Paths: -------------- csw/mgar/pkg/autossh/trunk/Makefile Modified: csw/mgar/pkg/autossh/trunk/Makefile =================================================================== --- csw/mgar/pkg/autossh/trunk/Makefile 2010-12-09 22:11:16 UTC (rev 11866) +++ csw/mgar/pkg/autossh/trunk/Makefile 2010-12-09 22:13:44 UTC (rev 11867) @@ -1,4 +1,6 @@ # TODO (release-critical prefixed with !, non release-critical with *) +# ! As soon as AUTOSSH_PORT is set, the invocation of autossh will +# pass wrong options to ssh. # * man page doesn't properly format on Solaris. Upstream notified on # 2009-06-24, intends to work on it, has access to his own Solaris # box. In case of a new upstream version, verify whether man page This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 23:21:14 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 22:21:14 +0000 Subject: [csw-devel] SF.net SVN: gar:[11868] csw/mgar/pkg/spine/trunk/Makefile Message-ID: Revision: 11868 http://gar.svn.sourceforge.net/gar/?rev=11868&view=rev Author: skayser Date: 2010-12-09 22:21:14 +0000 (Thu, 09 Dec 2010) Log Message: ----------- spine: couldn't resist, further cleanups, up for grabs ... go for it Modified Paths: -------------- csw/mgar/pkg/spine/trunk/Makefile Modified: csw/mgar/pkg/spine/trunk/Makefile =================================================================== --- csw/mgar/pkg/spine/trunk/Makefile 2010-12-09 22:13:44 UTC (rev 11867) +++ csw/mgar/pkg/spine/trunk/Makefile 2010-12-09 22:21:14 UTC (rev 11868) @@ -26,8 +26,6 @@ DISTFILES += cswusergroup CSWspine.postinstall WORKSRC = $(WORKDIR)/cacti-$(GARNAME)-$(GARVERSION) -LICENSE = LICENSE - PATCHFILES += configure.diff PATCHFILES += spine.h.diff PATCHFILES += util.c.diff @@ -54,6 +52,8 @@ sysconfdir = /etc/opt/csw PRESERVECONF = $(sysconfdir)/spine.conf +EXTRA_PAX_ARGS = '-s,ChangeLog,changelog,p' + include gar/category.mk configure-custom: @@ -67,20 +67,13 @@ ( cd $(WORKSRC) ; ./configure $(CONFIGURE_ARGS) ) @$(MAKECOOKIE) +install-custom: EXTRA_DOCS = README LICENSE LICENSE.LGPL ChangeLog install-custom: BINDIR = $(DESTDIR)$(bindir) install-custom: CFGDIR = $(DESTDIR)$(sysconfdir) install-custom: DOCDEST = $(DESTDIR)$(docdir)/spine install-custom: ginstall -d $(DOCDEST) - ginstall -m 644 $(WORKSRC)/LICENSE $(DOCDEST) - ginstall -m 644 $(WORKSRC)/README $(DOCDEST) - ginstall -m 644 $(WORKSRC)/README-WINDOWS $(DOCDEST) - ginstall -m 644 $(WORKSRC)/INSTALL $(DOCDEST) - ginstall -m 644 $(WORKSRC)/LICENSE.LGPL $(DOCDEST) - ginstall -m 644 $(WORKSRC)/COPYING $(DOCDEST) - ginstall -m 644 $(WORKSRC)/ChangeLog $(DOCDEST) - ginstall -d $(BINDIR) - ginstall -m 755 $(WORKSRC)/spine $(BINDIR) - ginstall -d $(CFGDIR) - ginstall -m 644 $(WORKSRC)/spine.conf $(CFGDIR)/spine.conf + (cd $(WORKSRC); ginstall -m 644 $(EXTRA_DOCS) $(DOCDEST)) + ginstall -Dm 755 $(WORKSRC)/spine $(BINDIR) + ginstall -Dm 644 $(WORKSRC)/spine.conf $(CFGDIR)/spine.conf @$(MAKECOOKIE) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 23:23:47 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 22:23:47 +0000 Subject: [csw-devel] SF.net SVN: gar:[11869] csw/mgar/pkg/gorilla/ Message-ID: Revision: 11869 http://gar.svn.sourceforge.net/gar/?rev=11869&view=rev Author: skayser Date: 2010-12-09 22:23:47 +0000 (Thu, 09 Dec 2010) Log Message: ----------- gorilla: remove stub, password-gorilla/ holds the real thing Removed Paths: ------------- csw/mgar/pkg/gorilla/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 23:25:18 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 22:25:18 +0000 Subject: [csw-devel] SF.net SVN: gar:[11870] csw/mgar/pkg/password-gorilla/trunk/Makefile Message-ID: Revision: 11870 http://gar.svn.sourceforge.net/gar/?rev=11870&view=rev Author: skayser Date: 2010-12-09 22:25:17 +0000 (Thu, 09 Dec 2010) Log Message: ----------- password-gorilla: document known packaging issue Modified Paths: -------------- csw/mgar/pkg/password-gorilla/trunk/Makefile Modified: csw/mgar/pkg/password-gorilla/trunk/Makefile =================================================================== --- csw/mgar/pkg/password-gorilla/trunk/Makefile 2010-12-09 22:23:47 UTC (rev 11869) +++ csw/mgar/pkg/password-gorilla/trunk/Makefile 2010-12-09 22:25:17 UTC (rev 11870) @@ -1,3 +1,9 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! Requires http://incrtcl.sourceforge.net/itcl/ (running password-gorilla +# currently fails with "The Password Gorilla requires the [incr Tcl] add-on +# to Tcl. Please install the [incr Tcl] package." +# GARNAME = password-gorilla GARVERSION = 1.4 CATEGORIES = apps This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 23:26:38 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 22:26:38 +0000 Subject: [csw-devel] SF.net SVN: gar:[11871] csw/mgar/pkg/ccache/trunk/Makefile Message-ID: Revision: 11871 http://gar.svn.sourceforge.net/gar/?rev=11871&view=rev Author: skayser Date: 2010-12-09 22:26:38 +0000 (Thu, 09 Dec 2010) Log Message: ----------- ccache: fix test.sh invocation environment Modified Paths: -------------- csw/mgar/pkg/ccache/trunk/Makefile Modified: csw/mgar/pkg/ccache/trunk/Makefile =================================================================== --- csw/mgar/pkg/ccache/trunk/Makefile 2010-12-09 22:25:17 UTC (rev 11870) +++ csw/mgar/pkg/ccache/trunk/Makefile 2010-12-09 22:26:38 UTC (rev 11871) @@ -22,4 +22,8 @@ CONFIGURE_ARGS = $(DIRPATHS) EXTRA_CFLAGS = -D__EXTENSIONS__ +# Unset $PWD (which isn't changed on gmake -C) so that test.sh uses `pwd` +PWD= +TEST_EXPORTS=PWD + include gar/category.mk This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 23:28:12 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 22:28:12 +0000 Subject: [csw-devel] SF.net SVN: gar:[11872] csw/mgar/pkg/spidermonkey/trunk/checksums Message-ID: Revision: 11872 http://gar.svn.sourceforge.net/gar/?rev=11872&view=rev Author: skayser Date: 2010-12-09 22:28:11 +0000 (Thu, 09 Dec 2010) Log Message: ----------- spidermonkey: update checksums Modified Paths: -------------- csw/mgar/pkg/spidermonkey/trunk/checksums Modified: csw/mgar/pkg/spidermonkey/trunk/checksums =================================================================== --- csw/mgar/pkg/spidermonkey/trunk/checksums 2010-12-09 22:26:38 UTC (rev 11871) +++ csw/mgar/pkg/spidermonkey/trunk/checksums 2010-12-09 22:28:11 UTC (rev 11872) @@ -1,3 +1 @@ -863bb6462f4ce535399a7c6276ae6776 download/js-1.5.tar.gz -84e0944853496c6207a776e8cafd7ef6 download/CSWspidermonkey.gspec -dfa212ef96bccd5f6ca1cb59d5e97a8c download/SunOS5.8_i86pc.mk +5571134c3863686b623ebe4e6b1f6fe6 js-1.7.0.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Thu Dec 9 23:30:12 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Thu, 09 Dec 2010 22:30:12 +0000 Subject: [csw-devel] SF.net SVN: gar:[11873] csw/mgar/pkg/x11/Makefile Message-ID: Revision: 11873 http://gar.svn.sourceforge.net/gar/?rev=11873&view=rev Author: skayser Date: 2010-12-09 22:30:12 +0000 (Thu, 09 Dec 2010) Log Message: ----------- x11/Makefile: for newpkg-% pre-populate CATEGORIES and MASTER_SITES Modified Paths: -------------- csw/mgar/pkg/x11/Makefile Modified: csw/mgar/pkg/x11/Makefile =================================================================== --- csw/mgar/pkg/x11/Makefile 2010-12-09 22:28:11 UTC (rev 11872) +++ csw/mgar/pkg/x11/Makefile 2010-12-09 22:30:12 UTC (rev 11873) @@ -30,14 +30,14 @@ @svn mkdir $* $*/tags $*/branches $*/trunk $*/trunk/files @(echo "GARNAME = $*"; \ echo "GARVERSION = 1.0"; \ - echo "CATEGORIES = category"; \ + echo "CATEGORIES = x11"; \ echo ""; \ echo "DESCRIPTION = Brief description"; \ echo "define BLURB"; \ echo " Long description"; \ echo "endef"; \ echo ""; \ - echo "MASTER_SITES = "; \ + echo "MASTER_SITES = $$(XORG_LIB_MASTER_SITE)"; \ echo "DISTFILES = $$(GARNAME)-$$(GARVERSION).tar.gz"; \ echo ""; \ echo "# We define upstream file regex so we can be notifed of new upstream software release"; \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Thu Dec 9 23:49:30 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Thu, 09 Dec 2010 22:49:30 +0000 Subject: [csw-devel] SF.net SVN: gar:[11874] csw/mgar/pkg/freeradius/trunk/Makefile Message-ID: Revision: 11874 http://gar.svn.sourceforge.net/gar/?rev=11874&view=rev Author: gadavis Date: 2010-12-09 22:49:29 +0000 (Thu, 09 Dec 2010) Log Message: ----------- Add stupid makefile rule to clear the copy-local-files cookie Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-09 22:30:12 UTC (rev 11873) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-09 22:49:29 UTC (rev 11874) @@ -201,3 +201,9 @@ @ginstall -d $(DESTDIR)/etc/opt/csw/init.d @ginstall $(WORKDIR)/cswfreeradius $(DESTDIR)/etc/opt/csw/init.d/cswfreeradius @$(MAKECOOKIE) + +clean-local: nuke-local-cookie + +nuke-local-cookie: + @echo Removing all copy-local-files build cookies + rm -f work/*/cookies/*/copy-local-files This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Fri Dec 10 01:09:31 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Fri, 10 Dec 2010 00:09:31 +0000 Subject: [csw-devel] SF.net SVN: gar:[11875] csw/mgar/pkg/socat/trunk Message-ID: Revision: 11875 http://gar.svn.sourceforge.net/gar/?rev=11875&view=rev Author: skayser Date: 2010-12-10 00:09:31 +0000 (Fri, 10 Dec 2010) Log Message: ----------- socat: work towards 1.7.1.3 Modified Paths: -------------- csw/mgar/pkg/socat/trunk/Makefile csw/mgar/pkg/socat/trunk/checksums Added Paths: ----------- csw/mgar/pkg/socat/trunk/files/0001-Escape-nested-double-quotes.patch Modified: csw/mgar/pkg/socat/trunk/Makefile =================================================================== --- csw/mgar/pkg/socat/trunk/Makefile 2010-12-09 22:49:29 UTC (rev 11874) +++ csw/mgar/pkg/socat/trunk/Makefile 2010-12-10 00:09:31 UTC (rev 11875) @@ -1,5 +1,26 @@ +# TODO (release-critical prefixed with !, non release-critical with *) +# +# ! Why does OPENSSL_TCP4 fail? +# +# $ /opt/csw/bin/bash test.sh OPENSSL_TCP4 +# using temp directory /tmp/skayser/12533 +# test 60 OPENSSL_TCP4: openssl connect... FAILED: ./socat: +# ./socat -t 0.1 exec:'openssl s_server -accept 12021 -quiet -cert testsrv.pem' pipe & +# ./socat -t 0.1 - openssl:127.0.0.1:12021,pf=ip4,verify=0, +# 1d0 +# < test60 Fri Dec 10 00:48:32 CET 2010 31169 +# +# Client connections to listener service (pipe ^= echo) don't get an +# immediate response (seems like data is stuck or procs exiting early). +# Upon the 2nd or 3rd connection, input is usually echoed fine. +# echo foo | openssl s_client -connect localhost:12021 -quiet -no_ign_eof +# +# * Send 0001 patch upstream, if you want to be 100% accurate you could +# also ask why here strings (<<<) are used over here docs (< +Date: Tue, 26 Oct 2010 12:51:45 +0200 +Subject: [PATCH] Escape nested double quotes + +Solaris /bin/bash chokes otherwise. +--- + test.sh | 4 ++-- + 1 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/test.sh b/test.sh +index 230d021..f438ae9 100755 +--- a/test.sh ++++ b/test.sh +@@ -9051,8 +9051,8 @@ while read PF KEYW ADDR IPPORT SCM_ENABLE SCM_RECV SCM_TYPE SCM_NAME ROOT SCM_VA + do + if [ -z "$PF" ] || [[ "$PF" == \#* ]]; then continue; fi + # +-pf="$(echo "$PF" |tr A-Z a-z)" +-proto="$(echo "$KEYW" |tr A-Z a-z)" ++pf="$(echo \"$PF\" |tr A-Z a-z)" ++proto="$(echo \"$KEYW\" |tr A-Z a-z)" + NAME=${KEYW}SCM_$SCM_TYPE + case "$TESTS" in + *%functions%*|*%$pf%*|*%dgram%*|*%udp%*|*%$proto%*|*%recv%*|*%ancillary%*|*%$ROOT%*|*%$NAME%*) +-- +1.7.3 + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Fri Dec 10 02:20:21 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Fri, 10 Dec 2010 01:20:21 +0000 Subject: [csw-devel] SF.net SVN: gar:[11876] csw/mgar/pkg/cpan/ack/trunk Message-ID: Revision: 11876 http://gar.svn.sourceforge.net/gar/?rev=11876&view=rev Author: skayser Date: 2010-12-10 01:20:21 +0000 (Fri, 10 Dec 2010) Log Message: ----------- cpan/ack: version bump to 1.94 Modified Paths: -------------- csw/mgar/pkg/cpan/ack/trunk/Makefile csw/mgar/pkg/cpan/ack/trunk/checksums csw/mgar/pkg/cpan/ack/trunk/files/changelog.CSW Modified: csw/mgar/pkg/cpan/ack/trunk/Makefile =================================================================== --- csw/mgar/pkg/cpan/ack/trunk/Makefile 2010-12-10 00:09:31 UTC (rev 11875) +++ csw/mgar/pkg/cpan/ack/trunk/Makefile 2010-12-10 01:20:21 UTC (rev 11876) @@ -1,5 +1,5 @@ GARNAME = ack -GARVERSION = 1.88 +GARVERSION = 1.94 CATEGORIES = cpan AUTHOR = PETDANCE @@ -20,23 +20,23 @@ # Make sure ack uses our perl, stock perl version on Sol 8 / 9 bail out post-extract-modulated: - @perl -pi -e '\ + perl -pi -e '\ s|^#!.*$$|#!/opt/csw/bin/perl| if $$. eq 1;' \ $(WORKSRC)/t/*.t - @perl -pi -e '\ + perl -pi -e '\ s|/usr/bin/env perl|/opt/csw/bin/perl|' \ $(WORKSRC)/squash @$(MAKECOOKIE) install-custom: DOCDEST = $(DESTDIR)$(docdir)/$(GARNAME) install-custom: - @ginstall -d $(DESTDIR)$(bindir) - @ginstall -d $(DESTDIR)$(mandir)/man1 - @ginstall -d $(DOCDEST) - @cp $(WORKSRC)/ack $(DESTDIR)$(bindir) - @pod2man --section=1 $(WORKSRC)/ack > $(DESTDIR)$(mandir)/man1/ack.1 - @cp $(WORKSRC)/Changes $(DOCDEST)/changelog - @cp $(FILEDIR)/changelog.CSW $(DOCDEST) + ginstall -d $(DESTDIR)$(bindir) + ginstall -d $(DESTDIR)$(mandir)/man1 + ginstall -d $(DOCDEST) + cp $(WORKSRC)/ack $(DESTDIR)$(bindir) + pod2man --section=1 $(WORKSRC)/ack > $(DESTDIR)$(mandir)/man1/ack.1 + cp $(WORKSRC)/Changes $(DOCDEST)/changelog + cp $(FILEDIR)/changelog.CSW $(DOCDEST) @$(MAKECOOKIE) pre-merge-modulated: Modified: csw/mgar/pkg/cpan/ack/trunk/checksums =================================================================== --- csw/mgar/pkg/cpan/ack/trunk/checksums 2010-12-10 00:09:31 UTC (rev 11875) +++ csw/mgar/pkg/cpan/ack/trunk/checksums 2010-12-10 01:20:21 UTC (rev 11876) @@ -1 +1 @@ -a1aad025ac94d582628ee72872d44c94 download/ack-1.88.tar.gz +dcf68e56bab0d394370fa102c7f08cb0 ack-1.94.tar.gz Modified: csw/mgar/pkg/cpan/ack/trunk/files/changelog.CSW =================================================================== --- csw/mgar/pkg/cpan/ack/trunk/files/changelog.CSW 2010-12-10 00:09:31 UTC (rev 11875) +++ csw/mgar/pkg/cpan/ack/trunk/files/changelog.CSW 2010-12-10 01:20:21 UTC (rev 11876) @@ -1,3 +1,9 @@ +ack (1.94,REV=2010.12.10) + + * Version bump to 1.94. + + -- Sebastian Kayser Fri, 10 Dec 2010 02:14:37 +0100 + ack (1.88,REV=2009.07.15) * Switched interpreter from /usr/bin/env perl to /opt/csw/bin/perl. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Fri Dec 10 14:01:40 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Fri, 10 Dec 2010 13:01:40 +0000 Subject: [csw-devel] SF.net SVN: gar:[11877] csw/mgar/gar/v2 Message-ID: Revision: 11877 http://gar.svn.sourceforge.net/gar/?rev=11877&view=rev Author: wahwah Date: 2010-12-10 13:01:40 +0000 (Fri, 10 Dec 2010) Log Message: ----------- comparepkg: Fixed a reference to a library Added a symlink in the v2/bin directory. Modified Paths: -------------- csw/mgar/gar/v2/lib/python/compare_pkgs.py csw/mgar/gar/v2/lib/python/opencsw.py Added Paths: ----------- csw/mgar/gar/v2/bin/comparepkg Added: csw/mgar/gar/v2/bin/comparepkg =================================================================== --- csw/mgar/gar/v2/bin/comparepkg (rev 0) +++ csw/mgar/gar/v2/bin/comparepkg 2010-12-10 13:01:40 UTC (rev 11877) @@ -0,0 +1 @@ +link ../lib/python/compare_pkgs.py \ No newline at end of file Property changes on: csw/mgar/gar/v2/bin/comparepkg ___________________________________________________________________ Added: svn:special + * Modified: csw/mgar/gar/v2/lib/python/compare_pkgs.py =================================================================== --- csw/mgar/gar/v2/lib/python/compare_pkgs.py 2010-12-10 01:20:21 UTC (rev 11876) +++ csw/mgar/gar/v2/lib/python/compare_pkgs.py 2010-12-10 13:01:40 UTC (rev 11877) @@ -19,6 +19,7 @@ import logging import optparse import opencsw +import package USAGE = """Compares two packages with the same catalogname. @@ -56,7 +57,7 @@ pkg_dir_b = opencsw.StagingDir(options.package_dir_b) pkg_path_a = pkg_dir_a.GetLatest(options.catalog_name)[-1] pkg_path_b = pkg_dir_b.GetLatest(options.catalog_name)[-1] - pc = opencsw.PackageComparator( + pc = package.PackageComparator( pkg_path_a, pkg_path_b, permissions=options.permissions, Modified: csw/mgar/gar/v2/lib/python/opencsw.py =================================================================== --- csw/mgar/gar/v2/lib/python/opencsw.py 2010-12-10 01:20:21 UTC (rev 11876) +++ csw/mgar/gar/v2/lib/python/opencsw.py 2010-12-10 13:01:40 UTC (rev 11877) @@ -27,7 +27,7 @@ ARCH_i386 = "i386" ARCH_ALL = "all" ARCHITECTURES = [ARCH_SPARC, ARCH_i386, ARCH_ALL] -OS_RELS = [u"SunOS5.9", u"SunOS5.10"] +OS_RELS = [u"SunOS5.8", u"SunOS5.9", u"SunOS5.10"] MAJOR_VERSION = "major version" MINOR_VERSION = "minor version" PATCHLEVEL = "patchlevel" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Fri Dec 10 14:48:16 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Fri, 10 Dec 2010 13:48:16 +0000 Subject: [csw-devel] SF.net SVN: gar:[11878] csw/mgar/gar/v2/gar.pkg.mk Message-ID: Revision: 11878 http://gar.svn.sourceforge.net/gar/?rev=11878&view=rev Author: dmichelsen Date: 2010-12-10 13:48:16 +0000 (Fri, 10 Dec 2010) Log Message: ----------- mGAR v2: Remove superflous directory for checkpkg/overrides as this is now 'i' type Modified Paths: -------------- csw/mgar/gar/v2/gar.pkg.mk Modified: csw/mgar/gar/v2/gar.pkg.mk =================================================================== --- csw/mgar/gar/v2/gar.pkg.mk 2010-12-10 13:01:40 UTC (rev 11877) +++ csw/mgar/gar/v2/gar.pkg.mk 2010-12-10 13:48:16 UTC (rev 11878) @@ -708,7 +708,6 @@ merge-checkpkgoverrides-%: @echo "[ Generating checkpkg override for package $* ]" - $(_DBG)ginstall -d $(PKGROOT)/opt/csw/share/checkpkg/overrides $(_DBG)($(foreach O,$(or $(CHECKPKG_OVERRIDES_$*),$(CHECKPKG_OVERRIDES)) $(_CATEGORY_CHECKPKG_OVERRIDES),echo "$O";)) | \ perl -F'\|' -ane 'unshift @F,"$*"; $$F[0].=":"; print join(" ", at F );' \ > $(WORKDIR_GLOBAL)/checkpkg_override.$* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Fri Dec 10 17:48:59 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Fri, 10 Dec 2010 16:48:59 +0000 Subject: [csw-devel] SF.net SVN: gar:[11879] csw/mgar/gar/v2 Message-ID: Revision: 11879 http://gar.svn.sourceforge.net/gar/?rev=11879&view=rev Author: wahwah Date: 2010-12-10 16:48:58 +0000 (Fri, 10 Dec 2010) Log Message: ----------- checkpkg: File collision detection This revision introduces file collision detection in checkpkg. It also changes the database usage scenario. Instead of a private sqlite database for every user, there's one shared mysql database for everyone. Each packages is checked in the context of the whole catalog. Packages installed in the system have no influence on the checking process. The automatic database update after each package installation or removal is now gone. There is a distinction between CSW packages and other packages. It's still possible to run a private sqlite database, but the performance is currently very poor. This commit is a squashed version of multiple commits done in git. Happy package checking! Maciej Squashed commit of the following: commit 2d96a59e519fa01b1739560d958c8510735bd250 Merge: a5a5338 134cf22 Author: Maciej Blizinski Date: Fri Dec 10 17:16:09 2010 +0100 Merge branch 'local-db-mgmt' of file:///home/maciej/public_html/opencsw Conflicts: gar/v2/lib/python/opencsw.py commit 134cf22ebc317c578cd6e98b4dc8cff6a7f2ce6e Author: Maciej Blizinski Date: Fri Dec 10 13:06:43 2010 +0000 checkpkg: Automatic database management support It's running very, very slowly. The re-population procedure can easily take one hour. commit 962e61622c3061744412159f1f9ff9696f7968ec Merge: ee5fb1f 0b6dde6 Author: Maciej Blizinski Date: Fri Dec 10 09:42:20 2010 +0000 Merge branch 'collisions' into col-buildfarm There was a lot of conflicts. This is what you get if you try to use the HTTP transport for git repositories, which exports old data. You end up working against a really old code and getting a lot of code conflicts afterwards. Conflicts: gar/v2/lib/python/checkpkg.py gar/v2/lib/python/checkpkg2.py gar/v2/lib/python/checkpkg_lib.py gar/v2/lib/python/checkpkg_lib_test.py gar/v2/lib/python/checkpkg_test.py gar/v2/lib/python/common_constants.py gar/v2/lib/python/configuration.py gar/v2/lib/python/database.py gar/v2/lib/python/ldd_emul.py gar/v2/lib/python/models.py gar/v2/lib/python/package_checks.py gar/v2/lib/python/package_stats.py gar/v2/lib/python/pkgdb.py gar/v2/lib/python/system_pkgmap.py gar/v2/lib/python/system_pkgmap_test.py gar/v2/tests/run_tests.py commit 0b6dde6512739689bd6446418134e9b72d061c7f Author: Maciej Blizinski Date: Tue Dec 7 08:37:47 2010 +0000 checkpkg: Added support for sqlite connections If the configuration file is not present, it's created automatically and populated with sane defaults: using sqlite in ~/.checkpkg. commit 2a6908a04f6a1de0b1e911b6e04070c6dfb9cd28 Author: Maciej Blizinski Date: Tue Dec 7 08:36:31 2010 +0000 checkpkg: Using SunOS9.9 format in the help msg Also removed commented out option which is no longer needed. commit a5ff4289810b956d320829cd8df3d028d72dafba Author: Maciej Blizinski Date: Tue Nov 23 11:53:54 2010 +0100 mGAR v2: checkpkg, moved db connection stuff to configuration.py, started working on checkpkg runs. commit 03ca394fcfefcbec1d4a8658215a0b5f9ae3b573 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 10:19:35 2010 +0000 mGAR v2: checkpkg, removed unused imports from checkpkg.py. commit a0c20b64e9b63dccea2244da3b421ec3d0e5be20 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 10:10:25 2010 +0000 mGAR v2: checkpkg, created checkpkg_lib.py with the intention to empty checkpkg.py. commit b0b71585b1a86d7c5ba96887087f4fe1ba86081a Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 08:08:53 2010 +0000 mGAR v2: checkpkg, implemented GetInstalledPackages in the Catalog class. commit 3e9a26cd53b88c64d2c35f1d31e210c0484d219c Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 07:06:37 2010 +0000 mGAR v2: checkpkg: splitting off LddEmulator and SystemPkgmap to separate files. commit 0ff2904a44fd07bc2b5bfddd951474e6a1b0a4fa Author: Maciej Blizi?\197?\132ski Date: Mon Nov 22 23:23:25 2010 +0000 mGAR v2: checkpkg, checking package architecture before inserting into a catalog. commit d1a920d836d9d996efa9c62179b5787f6ba0aa32 Author: Maciej Blizi?\197?\132ski Date: Mon Nov 22 22:00:18 2010 +0000 mGAR v2: checkpkg, a registering an existing package works now. commit 3940ac5ebddb6749a30a7452c7dc6dad438cd90a Author: Maciej Blizi?\197?\132ski Date: Mon Nov 22 21:50:10 2010 +0000 mGAR v2: checkpkg, removing the super() call in SystemPkgmapMixin commit d251e74fba8effc7a6252cbc5366fba7b5174054 Author: Maciej Blizinski Date: Mon Nov 22 21:06:26 2010 +0100 mGAR v2: Removing the database classmethods, and making sure that we're returning files that belong to packages that are in catalogs (although the check is slightly redundant). commit cad7a0eb75bfc76b85646e7c9bb91a27632c06c0 Author: Maciej Blizinski Date: Mon Nov 22 11:14:44 2010 +0100 mGAR v2: checkpkg, more db refactoring, tests are passing, pkgdb needs to be fixed. commit 46da2df03e5a281a4b5ee6d8919601c690781d15 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 18:25:00 2010 +0000 mGAR v2: checkpkg, removing a package from a catalog works now. commit c6663f06904d9f15d7c5f0f6b9cac747abd8e6fd Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 15:46:49 2010 +0000 mGAR v2: checkpkg, not allowing two packages with the same pkgname in one catalog. commit ce90fc50d3f956c695e3478a60f4d63e335c093c Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 14:46:37 2010 +0000 mGAR v2: checkpkg, checking that putting one package two times in a catalog raises an error. commit d57371da016d94b976e57ec0cf06c94c02bb643d Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 14:34:33 2010 +0000 mGAR v2: checkpkg, small unit tests cleanup. commit 1d86b191635a574f50b37e52b6c0b9e1b02610ac Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 14:26:27 2010 +0000 mGAR v2: checkpkg, querying the database for files works. commit ab0e6e80b920065f9bad5097a9697fbff9480963 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 12:13:25 2010 +0000 mGAR v2: using #!/usr/bin/env for checkpkg_test.py commit 00d0eba622308a78f0a536d04aa87d2952d7f144 Author: Maciej Blizinski Date: Sun Nov 21 13:08:32 2010 +0100 mGAR v2: checkpkg, start of a test for retrieving pkgnames for a basename. The netzwerk lags today, moving development home. commit a0775af72c164a548411c5808f0dafaac571c27d Author: Maciej Blizinski Date: Sun Nov 21 12:44:48 2010 +0100 mGAR v2: checkpkg, registering a package with a catalog. commit cdfe61d4cf9e04c787accddbd8dfe56df696116c Author: Maciej Blizinski Date: Sat Nov 20 19:00:28 2010 +0100 mGAR v2: checkpkg, a test for inserting stats into the db. commit dd7e5f88dbb1dc35c9883ba90a32d9a3f33de7b5 Author: Maciej Blizinski Date: Sat Nov 20 18:10:58 2010 +0100 mGAR v2: checkpkg, started a database related unit tests. commit ca23f8080f0ee979a01765dfc21619ae8b525c8e Author: Maciej Blizinski Date: Sat Nov 20 11:07:37 2010 +0100 mGAR v2: checkpkg, removing the remaining korn shell code. commit 1e007cd71ef772ffa181f85829aecdf71400a160 Author: Maciej Blizinski Date: Thu Nov 18 12:32:33 2010 +0100 mGAR v2: checkpkg, insignificant change to models.py commit ee5fb1fa6d5a16b845107c4e853f7a90af4d0690 Author: Maciej Blizinski Date: Mon Dec 6 18:17:54 2010 +0100 mGAR v2: Checking packages against 'current' Defining CATALOG_RELEASE and setting it to 'current' by default. This means that packages will be checked against the current branch by default. The current branch is meant to be kept in sync with the on-disk (on-mirrors) catalogs, while 'experimental', 'unstable', 'testing' and 'stable' are to be updated with a different set of packages. commit 88df8e297f99a7904e77c54af87180177d7ca956 Merge: 49d51c7 5ad7504 Author: Maciej Blizinski Date: Wed Dec 8 10:36:53 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 49d51c75c7c28023bc805a2f5579e695a48a3963 Merge: 489957d 1d38d9d Author: Maciej Blizinski Date: Wed Dec 8 10:36:32 2010 +0100 Merge branch 'master' of file:///home/maciej/public_html/opencsw into collisions commit 1d38d9d9130ebeff1cdac2108ea02c4312624dc0 Merge: 332c204 28ccacb Author: Maciej Blizinski Date: Wed Dec 8 09:50:28 2010 +0100 Merge branch 'master' of file:///home/maciej/public_html/opencsw commit 5ad7504c053039b9b07a81ca16b36f1c3a7011d2 Merge: c5306dc 489957d Author: Maciej Blizi?\197?\132ski Date: Wed Dec 8 08:50:20 2010 +0000 Merge branch 'collisions' of ssh://login.opencsw.org/home/maciej/public_html/opencsw into collisions Conflicts: gar/v2/lib/python/package_checks.py commit 28ccacbece5b6479a5b73b29f71c176d930bb17d Merge: 918abba daaa503 Author: Maciej Blizinski Date: Wed Dec 8 09:08:34 2010 +0100 Merge branch 'master' of file:///home/maciej/public_html/opencsw commit c5306dcfc5cb0eda325a74d892576f184aca020d Author: Maciej Blizi?\197?\132ski Date: Wed Dec 8 07:54:45 2010 +0000 checkpkg: A fix for PackageStats unit test There was a change to use frozensets, unit tests needed updates. I also added a check for mtime value; the mtime field is currently null in the database, and it needs debugging. commit 489957d59ba14a1d5d89247930c29921e907e5ec Merge: 6ab061d daaa503 Author: Maciej Blizinski Date: Wed Dec 8 00:42:20 2010 +0100 Merge branch 'master' of file:///home/maciej/public_html/opencsw into collisions commit daaa50376aed243c189668c8fc0101b7b91bfda1 Author: Maciej Blizi?\197?\132ski Date: Tue Dec 7 22:51:00 2010 +0000 checkpkg: A message for an init file class check Added a message and a GAR line suggestion for the init-file-missing-cswinitsmf-class error tag. commit 6ab061db2c6ae4fe5d6fadb5f69a0b585d2e3c2e Merge: 5d004ef 08da91c Author: Maciej Blizinski Date: Tue Dec 7 14:25:44 2010 +0100 Merge branch 'master' into collisions commit 5d004ef738ef2c25b0770541808faf2405018bdf Merge: 9d343d0 a8f0add Author: Maciej Blizinski Date: Mon Dec 6 17:48:23 2010 +0100 Merge branch 'master' of file:///home/maciej/public_html/opencsw into collisions commit 76c35400eadab8a8ee4d5d999360e1a26d5c74f4 Author: Maciej Blizi?\197?\132ski Date: Sun Dec 5 23:39:11 2010 +0000 checkpkg: Profiling support in the main executable commit 8d51eb10aa5b74b1daabe9585ef7bc8ef8508eef Author: Maciej Blizi?\197?\132ski Date: Sun Dec 5 23:38:33 2010 +0000 checkpkg: Adding a missing CATALOGNAME_CSWfoo line When suggesting shared library split-offs. commit 9d343d09fa4b0f33bb2c3ff0ea0bfb0dee9780a1 Merge: 6f9cf13 e686424 Author: Maciej Blizinski Date: Mon Dec 6 00:24:06 2010 +0100 checkpkg: Using os.normpath for path sanitization Conflicts: gar/v2/lib/python/checkpkg.py commit 6f9cf137c05655c1ba4d3a17adb969087379be6b Merge: e744306 ad653d0 Author: Maciej Blizinski Date: Mon Dec 6 00:11:24 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit e744306709404652a04fa435af79e04fe9b2ed16 Author: Maciej Blizinski Date: Sun Dec 5 19:27:46 2010 +0100 checkpkg: File collisions check is working There is warning displayed if colliding files are found, it can be fixed but I'm leaving it for later. commit bd13f29160f98f3fda8d60c2b7d3e3168b5c9e40 Author: Maciej Blizinski Date: Sun Dec 5 16:50:52 2010 +0100 GAR v2: Calling checkpkg with new required options commit 573a0f0c4161286f29b467e62d2dc2b8b03cb7b3 Author: Maciej Blizi?\197?\132ski Date: Sun Dec 5 14:30:10 2010 +0000 checkpkg: A better message for the libmagic bug Displays helpful information to the user - says it's a known problem and suggests restarting the process. commit a6eabd39f6fb5c2ff46a5f1752603b9d6e57b1f2 Author: Maciej Blizinski Date: Sun Dec 5 15:24:12 2010 +0100 pkgdb: One command to import one catalog release Imports all OS releases and all catalogs. commit 3c7d0c3612692ef9fd064decdc1c0d63ade68025 Author: Maciej Blizinski Date: Sun Dec 5 14:23:45 2010 +0100 pkgdb: Started a unit test file. commit 919fe07a4d79f6c6dae8eb8d147f55d64c8025c6 Author: Maciej Blizi?\197?\132ski Date: Sun Dec 5 13:22:43 2010 +0000 pkgdb: Adding models_test.py commit f6e389d289056a85cd5b396992b008633efa7eee Author: Maciej Blizinski Date: Sun Dec 5 13:09:13 2010 +0100 pkgdb: A few fixes for the import catalog feature Tested live on the buildfarm, works. It could use some refactoring, and perhaps one more convenience function, that imports all architectures and all OS releases. commit f40b848d1de2e6444e53a07fb5711aad67b79d3a Author: Maciej Blizi?\197?\132ski Date: Sun Dec 5 10:27:41 2010 +0000 pkgdb: Syncing a single catalog from disk This convenience function allows to import a catalog state from the disk, using a catalog file, to the database. No matter what were the previous srv4-catalog assignments, it brings the catalog in the db to the state that is on disk. commit 8332605c49a5994493efb7114884973e7371a8d0 Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 16:42:13 2010 +0000 pkgdb: Added 'pkg search' command. commit ecc931ea3b17f96b45d2d076e683d5660a1f3b9a Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 16:27:47 2010 +0000 checkpkg: Unit test for ToGarFormat() commit 514e69806b4afb9ad90b92f4f95b156b2a65c290 Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 16:02:32 2010 +0000 checkpkg: The checkpkg tool passes smoke test It can be fed file names or md5_sums. Runs and displays results. commit 3e81a9d6f748ded49d1840e34e23719cc55f6669 Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 15:46:43 2010 +0000 checkpkg: Fixed a bug in system files import When linking a file with a package, all files previously associated with the package would be removed. Changed this so that only the first occurence cleans the files previously associated with the package. commit 51fcdc8d2c399b0ca7cd42eb694956382d726548 Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 13:06:20 2010 +0000 checkpkg: A unit test for CheckpkgManager2.Run() Verifies that error tags are actually inserted into the database. commit 37495c9ebdb9bcf9176195dd86dd7799f16e0b98 Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 12:46:53 2010 +0000 checkpkg: Using common_contants to check catrels It's better than a hardcoded value. commit 9dad9b1d2d8405c8fb4edd61d26ab2f79a57488c Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 07:51:35 2010 +0000 mGAR v2: checkpkg, cleaning up CheckpkgManager2 Added a method to clean up checkpkg results. Some work towards unit testing the main Run() methods. commit 09220b8c10e5e9e9283974aace90ec7f224189e6 Author: Maciej Blizi?\197?\132ski Date: Thu Dec 2 22:56:22 2010 +0000 mGAR v2: pkgdb, making initdb idempotent Not that it was a problem, but it's nicer that way. commit 4580244a7eeb2cb25b139dd548e5b5038898dd70 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 30 21:05:43 2010 +0000 mGAR v2: checkpkg, skipping over missing md5 If a md5 sum was supposed to be added to the catalog, but is not in the database, print a warning and continue. commit aa061769c925e7e46bebd7435d492a6163549c69 Author: Maciej Blizinski Date: Tue Nov 30 08:32:14 2010 +0100 mGAR v2: checkpkg, calling chkpkg by full path Some hosts don't have /usr/sbin in the $PATH. commit e0879aca39279f017ecc787f05fa402f91a93ffe Author: Maciej Blizinski Date: Tue Nov 30 00:39:28 2010 +0100 mGAR v2: checkpkg, models cleanup Also, a bugfix for the pkginfo and contents streams, which may be lists, and sometimes can't be close()d. commit 918fc003772f4e3442c58e0aa7536d35b081263c Author: Maciej Blizi?\197?\132ski Date: Mon Nov 29 23:36:27 2010 +0000 mGAR v2: checkpkg, storing srv4 file size Also, a unit test for _ColectStats, which had to mock quite a lot of calls to other classes functions. Could use some cleanup. commit a83b90174cdfba999013743b2ec32841c163cb35 Author: Maciej Blizi?\197?\132ski Date: Mon Nov 29 10:54:55 2010 +0000 mGAR v2: checkpkg, a bugfix for package_stats.py Sadly, this bit of code is not unit tested. commit 904acfc689602ec1da8eb7179c5d2bb00f39a91c Author: Maciej Blizi?\197?\132ski Date: Mon Nov 29 10:49:00 2010 +0000 mGAR v2: checkpkg, not shelling out to isalist Sheling out to 'isalist' to get the list of ISAs imposed a restriction, that sparc packages could not be indexed on i386 boxes and vice-versa. This change hardcodes the isalists and allows to index packages independently of the architecture. Data structures remain to hold the isalist as part of the pickled data in the database, so each package has its own list of ISAs. commit cb83c7332d6b3221c6545c93969c7d02afb5e12c Author: Maciej Blizi?\197?\132ski Date: Sun Nov 28 22:33:06 2010 +0000 mGAR v2: checkpkg, using highest pickling format Pickling seems to be fairly memory-intensive with the data sets we have. Setting the pickling format to the highest format in the hope it'll be more efficient. commit cfdc66adb3e2ed4650d929963a589b7c0d640591 Author: Maciej Blizinski Date: Sun Nov 28 19:46:11 2010 +0100 mGAR v2: checkpkg, install/contents support Accepting a bad line in install/contents. There is a line that does not follow the spec. E-mail thread: http://lists.opencsw.org/pipermail/maintainers/2010-November/013277.html commit eea5db79dcb25c64030a2784e2842a0eb243e2c6 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 28 16:37:52 2010 +0000 mGAR v2: checkpkg, importing system files into db Imports files into the database, providing idempotence. - MuteProgressBar helps with batch mode commit 3a1aa1d654aba0c09e76e04c4238925d7583dbba Author: Maciej Blizi?\197?\132ski Date: Sat Nov 27 13:08:18 2010 +0000 mGAR v2: pkgdb, implemented proper parsing and pickling of /var/sadm/install/contents. commit 4c342e8a64f4320f7ed33b2c56c42c568cc345af Author: Maciej Blizinski Date: Fri Nov 26 09:39:04 2010 +0100 mGAR v2: checkpkg, adding 'overriden' to the error tag class. commit b4729052a533c5a58c16e24558f7213e8ceef493 Author: Maciej Blizi?\197?\132ski Date: Thu Nov 25 08:40:46 2010 +0000 mGAR v2: checkpkg, added a frontend to del-from-cat. commit bde27cae59374cb0b6f0eb995ed3ebbebbdb3bdb Author: Maciej Blizinski Date: Thu Nov 25 01:37:58 2010 +0100 mGAR v2: checkpkg, pkgdb: Logging which packages are added to a catalog. commit a2edf0e211b1e41819a654c0240e55174554a1d4 Author: Maciej Blizi?\197?\132ski Date: Thu Nov 25 00:37:33 2010 +0000 mGAR v2: Moved heavy pickled data to a separate table, from Srv4FileStats to Srv4FileStatsBlob. commit 1ae31596999fb57d924b151a4d77f6236eb68bea Author: Maciej Blizi?\197?\132ski Date: Thu Nov 25 00:09:05 2010 +0000 mGAR v2: checkpkg, warning on filename vs pkginfo architecture declaration mismatch. Setting logging level to 'error' in unit tests. commit a38d6128029c84ee982703081d26e70a11e09ff7 Author: Maciej Blizi?\197?\132ski Date: Thu Nov 25 00:06:10 2010 +0000 mGAR v2: checkpkg, allowing to add a i386 package to a sparc catalog if the filename declares 'all'. commit 5f303d7d3c5a74fafe54810af509d59667d35625 Author: Maciej Blizinski Date: Wed Nov 24 18:08:04 2010 +0100 mGAR v2: Added filename_arch to the srv4_file_stats table, so I'll be able to quickly access both pkginfo and filename arch declarations. commit ce765b5856a28ae33b7bec68fc3a0022c7abfaa1 Author: Maciej Blizinski Date: Wed Nov 24 13:49:49 2010 +0100 mGAR v2: checkpkg, more verbose logging when importing packages. commit f92bd6603b742f36dce6952fbfbeeeb1cc73b7b3 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 12:49:11 2010 +0000 mGAR v2: checkpkg, not throwing an error when adding a package to a catalog and the package is already there. commit 392addca6d76372f966a1a7895b173a82cf41e2f Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 09:56:58 2010 +0000 mGAR v2: checkpkg, comments in the models.py file. commit dffec9394053b8fc09a836d00b4f0f2e496d51e4 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 08:57:22 2010 +0000 mGAR v2: checkpkg, ImportPkg(): if a package was previously imported, don't replace. commit a1add3419a14cc4e2920aab4f295e9021e3df774 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 08:53:49 2010 +0000 mGAR v2: checkpkg, removing previously existing files in ImportPkg(). commit 1a6c25a6a1bcf9a3728aaed97ddfa105d0c9f605 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 08:33:05 2010 +0000 mGAR v2: checkpkg, support for latin1 encoded file names. commit 2d8c448677155eff0f68ba164e9af944424fe7e0 Author: Maciej Blizinski Date: Wed Nov 24 08:58:10 2010 +0100 mGAR v2: checkpkg, a test case for the latin1 encoded file name problem. commit bb65d859b0debfde01bec49a0a0677a0ea56187c Author: Maciej Blizinski Date: Wed Nov 24 00:22:29 2010 +0100 mGAR v2: checkpkg, adding missing operator module import to checkpkg_lib, checkpkg just started working. commit f8a94116407d9b621d480d99d08f6d33f0e40753 Author: Maciej Blizinski Date: Wed Nov 24 00:07:31 2010 +0100 mGAR v2: checkpkg, memoization of GetPkgByPath(). commit f257045629b66164ad99e158d3dde6dbe0e533a8 Author: Maciej Blizinski Date: Wed Nov 24 00:02:07 2010 +0100 mGAR v2: checkpkg, implemented new GetPkgByPath() in the Catalog class. commit a67d494fb01e7b68f7c025a32a8aad2b8bb15024 Author: Maciej Blizinski Date: Tue Nov 23 21:53:00 2010 +0100 mGAR v2: checkpkg, throwing an error if an unregistered package is given for inclusion in a catalog. commit 8c24f724a7b1e726016701741f5bccb591005d18 Author: Maciej Blizinski Date: Tue Nov 23 19:43:02 2010 +0100 mGAR v2: checkpkg, importing to the database can import some packages, but it fails with sqlobject.dberrors.OperationalError: Got a packet bigger than 'max_allowed_packet' bytes commit b4d2689808a41d2ba4c6fc52dfb2cf146f0cbbac Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 14:24:32 2010 +0000 mGAR v2: Added sqlobject to the list of dependencies on Debian/Ubuntu. commit 059b2a187252e32753651888284c1ad79ea5c4a5 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 10:55:21 2010 +0000 mGAR v2: checkpkg, renamed 'bar' to 'pbar' to satisfy pylint. commit 330688c955f950ca2d5936f052997d9e32dba166 Author: Maciej Blizinski Date: Tue Nov 23 11:53:54 2010 +0100 mGAR v2: checkpkg, moved db connection stuff to configuration.py, started working on checkpkg runs. commit deb3592857b917ec45507d0df21fc7a17f5c27de Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 10:19:35 2010 +0000 mGAR v2: checkpkg, removed unused imports from checkpkg.py. commit 8e3d9c1629b099df5eb8c532ec7852e6bdc47cf3 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 10:10:25 2010 +0000 mGAR v2: checkpkg, created checkpkg_lib.py with the intention to empty checkpkg.py. commit 603df4ed5da34ca73653ac0c78dc1d14300128ab Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 08:08:53 2010 +0000 mGAR v2: checkpkg, implemented GetInstalledPackages in the Catalog class. commit 6fb79e23175b64a17bf17737d704e5b55e402a04 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 07:06:37 2010 +0000 mGAR v2: checkpkg: splitting off LddEmulator and SystemPkgmap to separate files. commit 6841f6378d3aecf0087914a41610fadc4ea2cde0 Author: Maciej Blizi?\197?\132ski Date: Mon Nov 22 23:23:25 2010 +0000 mGAR v2: checkpkg, checking package architecture before inserting into a catalog. commit 36f71f6fd6d61fb9152b115c14ce8d90a6acde41 Author: Maciej Blizi?\197?\132ski Date: Mon Nov 22 22:00:18 2010 +0000 mGAR v2: checkpkg, a registering an existing package works now. commit 4b4ae3496ce42583d74498f76a14be17bc7c7de9 Author: Maciej Blizi?\197?\132ski Date: Mon Nov 22 21:50:10 2010 +0000 mGAR v2: checkpkg, removing the super() call in SystemPkgmapMixin commit c029546b72d8050ca9295b7ae392c029c963fc8f Author: Maciej Blizinski Date: Mon Nov 22 21:06:26 2010 +0100 mGAR v2: Removing the database classmethods, and making sure that we're returning files that belong to packages that are in catalogs (although the check is slightly redundant). commit 80fe1f38463aeb84aaae4afac204c3c570e272a4 Author: Maciej Blizinski Date: Mon Nov 22 11:14:44 2010 +0100 mGAR v2: checkpkg, more db refactoring, tests are passing, pkgdb needs to be fixed. commit 6de1d3a315bb4d17395f43fd795736abf97e20af Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 18:25:00 2010 +0000 mGAR v2: checkpkg, removing a package from a catalog works now. commit bd311acc53e551279f3d7dffb0e2250b08c78d85 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 15:46:49 2010 +0000 mGAR v2: checkpkg, not allowing two packages with the same pkgname in one catalog. commit 543f01b737c1ae948b9bda6b58045c72500844ae Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 14:46:37 2010 +0000 mGAR v2: checkpkg, checking that putting one package two times in a catalog raises an error. commit af4b68bb853318179b43db599728f836bfd6bba7 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 14:34:33 2010 +0000 mGAR v2: checkpkg, small unit tests cleanup. commit 5a1e29b064fe6cf28a1ca1ef07de55ad08b62d0c Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 14:26:27 2010 +0000 mGAR v2: checkpkg, querying the database for files works. commit a0995e0faa9d28d9a3c30f67bd8c4d4d7e819285 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 12:13:25 2010 +0000 mGAR v2: using #!/usr/bin/env for checkpkg_test.py commit 3c0a9f725bb70f4d744368876321715f8a8f01c1 Author: Maciej Blizinski Date: Sun Nov 21 13:08:32 2010 +0100 mGAR v2: checkpkg, start of a test for retrieving pkgnames for a basename. The netzwerk lags today, moving development home. commit f22c753eefcd7a2874d625ef6751817be4628980 Author: Maciej Blizinski Date: Sun Nov 21 12:44:48 2010 +0100 mGAR v2: checkpkg, registering a package with a catalog. commit 445fd5d8d78349f1828d65c8e6e145324ae4b793 Author: Maciej Blizinski Date: Sat Nov 20 19:00:28 2010 +0100 mGAR v2: checkpkg, a test for inserting stats into the db. commit f320ca6f8e31bf24aeed1d754025e72b3631e32b Author: Maciej Blizinski Date: Sat Nov 20 18:10:58 2010 +0100 mGAR v2: checkpkg, started a database related unit tests. commit dd322d77647b6894ee426d8e1209d46eac0a1e4e Author: Maciej Blizinski Date: Sat Nov 20 11:07:37 2010 +0100 mGAR v2: checkpkg, removing the remaining korn shell code. commit 5f306157431ea10be7273617bbd75117ac612cc8 Author: Maciej Blizinski Date: Thu Nov 18 12:32:33 2010 +0100 mGAR v2: checkpkg, insignificant change to models.py commit ad653d03fc409356d477c24bc2515c206b571fe9 Author: Maciej Blizinski Date: Sun Dec 5 19:27:46 2010 +0100 checkpkg: File collisions check is working There is warning displayed if colliding files are found, it can be fixed but I'm leaving it for later. commit 3d98f9deda4e6e7e9a329c2b3116322e97aa72d4 Author: Maciej Blizinski Date: Sun Dec 5 16:50:52 2010 +0100 GAR v2: Calling checkpkg with new required options commit d87ff582fd2b78403085dc7fd754aa0b88f4e62b Merge: 7db825e 01d1b93 Author: Maciej Blizinski Date: Sun Dec 5 15:31:17 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 01d1b93716caa4dcd94618df5c7b3656f63ccb71 Author: Maciej Blizi?\197?\132ski Date: Sun Dec 5 14:30:10 2010 +0000 checkpkg: A better message for the libmagic bug Displays helpful information to the user - says it's a known problem and suggests restarting the process. commit 7db825ee329114da5043d6fd7c5cb1eb8afeb10f Author: Maciej Blizinski Date: Sun Dec 5 15:24:12 2010 +0100 pkgdb: One command to import one catalog release Imports all OS releases and all catalogs. commit 47e96015d125d12b4422fa9bc63d1843e5dec7a3 Merge: c307773 9bae110 Author: Maciej Blizinski Date: Sun Dec 5 14:25:30 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit c30777357c6674505c7fcdcbea58a602c5c9a339 Author: Maciej Blizinski Date: Sun Dec 5 14:23:45 2010 +0100 pkgdb: Started a unit test file. commit 9bae11075d3a0b066007551aa1cfb1e6e02e180b Author: Maciej Blizi?\197?\132ski Date: Sun Dec 5 13:22:43 2010 +0000 pkgdb: Adding models_test.py commit 643cc52677853847f4177a1e1785a438e27262a2 Author: Maciej Blizinski Date: Sun Dec 5 13:09:13 2010 +0100 pkgdb: A few fixes for the import catalog feature Tested live on the buildfarm, works. It could use some refactoring, and perhaps one more convenience function, that imports all architectures and all OS releases. commit 1691c5cc4709ddb94ea0b0eedad9be37e482d0dd Merge: e3dddeb ab6e10d Author: Maciej Blizinski Date: Sun Dec 5 11:28:58 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit ab6e10daf883b60e0fea1fab5c4e600399f48615 Author: Maciej Blizi?\197?\132ski Date: Sun Dec 5 10:27:41 2010 +0000 pkgdb: Syncing a single catalog from disk This convenience function allows to import a catalog state from the disk, using a catalog file, to the database. No matter what were the previous srv4-catalog assignments, it brings the catalog in the db to the state that is on disk. commit e3dddebb782c403b7cd43bbc09d3e539bde5909d Merge: 7e32e6f a67e05d Author: Maciej Blizinski Date: Sat Dec 4 17:42:21 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit a67e05dd0f31ac0e6564fa0a18612424e5aa7f86 Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 16:42:13 2010 +0000 pkgdb: Added 'pkg search' command. commit ff28462a8817e82115a70c006d9f1fc9a1c841f8 Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 16:27:47 2010 +0000 checkpkg: Unit test for ToGarFormat() commit 7e32e6f2e99f1cd1d0c0116db9df8c9e2e4256f1 Merge: 17530b3 e87ea55 Author: Maciej Blizinski Date: Sat Dec 4 17:03:45 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit e87ea55be20509703b3127b74026dc5b90f4c749 Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 16:02:32 2010 +0000 checkpkg: The checkpkg tool passes smoke test It can be fed file names or md5_sums. Runs and displays results. commit 17530b318738cac9973bb3fcf2aa4ea83dcef6a8 Merge: 1fb6151 2abee78 Author: Maciej Blizinski Date: Sat Dec 4 16:48:22 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 2abee78f910810da4938c973bddd7c79b981346b Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 15:46:43 2010 +0000 checkpkg: Fixed a bug in system files import When linking a file with a package, all files previously associated with the package would be removed. Changed this so that only the first occurence cleans the files previously associated with the package. commit 18fcb6c3584786eaa13c195714efc83f539a1606 Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 13:06:20 2010 +0000 checkpkg: A unit test for CheckpkgManager2.Run() Verifies that error tags are actually inserted into the database. commit 72f82113376254704d5d19631908e5872c060ccc Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 12:46:53 2010 +0000 checkpkg: Using common_contants to check catrels It's better than a hardcoded value. commit 7d0becb86c3384e9cd13ce8a58ea3437970b67db Author: Maciej Blizi?\197?\132ski Date: Sat Dec 4 07:51:35 2010 +0000 mGAR v2: checkpkg, cleaning up CheckpkgManager2 Added a method to clean up checkpkg results. Some work towards unit testing the main Run() methods. commit a48e5a3e81c01f03658cdf3a0bda22ea3b1e097d Author: Maciej Blizi?\197?\132ski Date: Thu Dec 2 22:56:22 2010 +0000 mGAR v2: pkgdb, making initdb idempotent Not that it was a problem, but it's nicer that way. commit 1fb61518a1e1ece53dc1e4cae4270476b2dada3f Merge: 48c88c9 034d650 Author: Maciej Blizinski Date: Tue Nov 30 22:06:22 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 034d65058012c36c04f35373cd2198801fcd562c Author: Maciej Blizi?\197?\132ski Date: Tue Nov 30 21:05:43 2010 +0000 mGAR v2: checkpkg, skipping over missing md5 If a md5 sum was supposed to be added to the catalog, but is not in the database, print a warning and continue. commit 48c88c9981f23198ba3dfe2170ba2efaac5fb0da Author: Maciej Blizinski Date: Tue Nov 30 08:32:14 2010 +0100 mGAR v2: checkpkg, calling chkpkg by full path Some hosts don't have /usr/sbin in the $PATH. commit 21d2c1b406e4675b3582c24eb9b4f12451083cd9 Merge: 5a13ae1 ec98fd4 Author: Maciej Blizinski Date: Tue Nov 30 00:40:42 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 5a13ae19ddfaf641e2b2fc06d0448bee23622399 Author: Maciej Blizinski Date: Tue Nov 30 00:39:28 2010 +0100 mGAR v2: checkpkg, models cleanup Also, a bugfix for the pkginfo and contents streams, which may be lists, and sometimes can't be close()d. commit ec98fd428ce63d3468c2560c88ef72a8c4bea5d3 Author: Maciej Blizi?\197?\132ski Date: Mon Nov 29 23:36:27 2010 +0000 mGAR v2: checkpkg, storing srv4 file size Also, a unit test for _ColectStats, which had to mock quite a lot of calls to other classes functions. Could use some cleanup. commit 143dea83827609a82ffd5a25f6ccb630e07448d6 Author: Maciej Blizi?\197?\132ski Date: Mon Nov 29 10:54:55 2010 +0000 mGAR v2: checkpkg, a bugfix for package_stats.py Sadly, this bit of code is not unit tested. commit 00ab8a575a700fa6bf36b35ec888923ddfbc8ce1 Author: Maciej Blizi?\197?\132ski Date: Mon Nov 29 10:49:00 2010 +0000 mGAR v2: checkpkg, not shelling out to isalist Sheling out to 'isalist' to get the list of ISAs imposed a restriction, that sparc packages could not be indexed on i386 boxes and vice-versa. This change hardcodes the isalists and allows to index packages independently of the architecture. Data structures remain to hold the isalist as part of the pickled data in the database, so each package has its own list of ISAs. commit df4bd110d11465de23ccffe3822a32f2c3e85b8e Author: Maciej Blizi?\197?\132ski Date: Sun Nov 28 22:33:06 2010 +0000 mGAR v2: checkpkg, using highest pickling format Pickling seems to be fairly memory-intensive with the data sets we have. Setting the pickling format to the highest format in the hope it'll be more efficient. commit 62f0c6801aa2ce243e6955694a1d492f51cfefbb Author: Maciej Blizinski Date: Sun Nov 28 19:46:11 2010 +0100 mGAR v2: checkpkg, install/contents support Accepting a bad line in install/contents. There is a line that does not follow the spec. E-mail thread: http://lists.opencsw.org/pipermail/maintainers/2010-November/013277.html commit 86eb898780ae8c639056de3164419364d000b6f0 Merge: dada99f 200303b Author: Maciej Blizinski Date: Sun Nov 28 17:39:29 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 200303b2e127ca16a7de911102c62476dd98667f Author: Maciej Blizi?\197?\132ski Date: Sun Nov 28 16:37:52 2010 +0000 mGAR v2: checkpkg, importing system files into db Imports files into the database, providing idempotence. - MuteProgressBar helps with batch mode commit dada99f84dda60934a9f49c6cc69be690fb43643 Merge: af4e86e 8e4ba00 Author: Maciej Blizinski Date: Sat Nov 27 14:10:25 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 8e4ba00b5d805a0ec6224993b9a3f47fb9dcce85 Author: Maciej Blizi?\197?\132ski Date: Sat Nov 27 13:08:18 2010 +0000 mGAR v2: pkgdb, implemented proper parsing and pickling of /var/sadm/install/contents. commit af4e86e1e4ca051e68f0c487de6f60663a455f48 Author: Maciej Blizinski Date: Fri Nov 26 09:39:04 2010 +0100 mGAR v2: checkpkg, adding 'overriden' to the error tag class. commit d296a3ac141fb7e11bc4b4b1be32552a64937c75 Author: Maciej Blizi?\197?\132ski Date: Thu Nov 25 08:40:46 2010 +0000 mGAR v2: checkpkg, added a frontend to del-from-cat. commit f34cff6c3892a5fd82da606ce26ca257b05f7209 Merge: 8e960bd d296a3a Author: Maciej Blizinski Date: Thu Nov 25 09:40:46 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 8e960bd354bc78d63754349fc5ec6cbfc1bc9d19 Merge: b29f6e0 33c16ec Author: Maciej Blizinski Date: Thu Nov 25 01:38:04 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit b29f6e00dae17bed9a96a44bf2cc305d8b130b72 Author: Maciej Blizinski Date: Thu Nov 25 01:37:58 2010 +0100 mGAR v2: checkpkg, pkgdb: Logging which packages are added to a catalog. commit 33c16ecba7e58ff5f528781e3d607f32f49a8826 Author: Maciej Blizi?\197?\132ski Date: Thu Nov 25 00:37:33 2010 +0000 mGAR v2: Moved heavy pickled data to a separate table, from Srv4FileStats to Srv4FileStatsBlob. commit 0df28fc119a0788152e712bc223cf23cd5c32f14 Author: Maciej Blizi?\197?\132ski Date: Thu Nov 25 00:09:05 2010 +0000 mGAR v2: checkpkg, warning on filename vs pkginfo architecture declaration mismatch. Setting logging level to 'error' in unit tests. commit e0ec4eb5b7430bc718f8923d75abc1bf09c48cff Author: Maciej Blizi?\197?\132ski Date: Thu Nov 25 00:06:10 2010 +0000 mGAR v2: checkpkg, allowing to add a i386 package to a sparc catalog if the filename declares 'all'. commit 02d2403525d8e6bf19915fd1c19fd2d68445fede Author: Maciej Blizinski Date: Wed Nov 24 18:08:04 2010 +0100 mGAR v2: Added filename_arch to the srv4_file_stats table, so I'll be able to quickly access both pkginfo and filename arch declarations. commit 0c8cd3ec8e65a6d9cd3bf610a684ad5c41118d0f Merge: 4d2b4e9 f94d332 Author: Maciej Blizinski Date: Wed Nov 24 13:49:57 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 4d2b4e9ff9c33e6ac6b5622dae12fb73800d600c Author: Maciej Blizinski Date: Wed Nov 24 13:49:49 2010 +0100 mGAR v2: checkpkg, more verbose logging when importing packages. commit f94d332a7796e318b2e3f45849585dc1ec489094 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 12:49:11 2010 +0000 mGAR v2: checkpkg, not throwing an error when adding a package to a catalog and the package is already there. commit 35d53ee05d143bd5bfb6b31e909ed0a08fa9c931 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 09:56:58 2010 +0000 mGAR v2: checkpkg, comments in the models.py file. commit 1f77c9453c2c6c5a78871664089aa26bd5a84018 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 08:57:22 2010 +0000 mGAR v2: checkpkg, ImportPkg(): if a package was previously imported, don't replace. commit 32fcf3009a281200b16b80a8bab0ef6cdf6d91e7 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 08:53:49 2010 +0000 mGAR v2: checkpkg, removing previously existing files in ImportPkg(). commit 9528a322a6fa26d749688a6685c50abe0a2e1415 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 08:33:05 2010 +0000 mGAR v2: checkpkg, support for latin1 encoded file names. commit ec58dbb63a70413159ba64ffb8d289745b683420 Merge: 49f4aec 587bd3d Author: Maciej Blizi?\197?\132ski Date: Wed Nov 24 07:59:30 2010 +0000 Merge branch 'collisions' of ssh://login.opencsw.org/home/maciej/public_html/opencsw into collisions commit 587bd3d3f7103ee631ccf31a59eaba92fb4d96a8 Author: Maciej Blizinski Date: Wed Nov 24 08:58:10 2010 +0100 mGAR v2: checkpkg, a test case for the latin1 encoded file name problem. commit 3eb9d385731b98a31fe342e3e52cbe1ef18a72fc Author: Maciej Blizinski Date: Wed Nov 24 00:22:29 2010 +0100 mGAR v2: checkpkg, adding missing operator module import to checkpkg_lib, checkpkg just started working. commit 6749f47bba082f9d492d335fe24286982d18d3fb Author: Maciej Blizinski Date: Wed Nov 24 00:07:31 2010 +0100 mGAR v2: checkpkg, memoization of GetPkgByPath(). commit 68beafc7fe8f69a87081a5bf5fc26285fe23f550 Author: Maciej Blizinski Date: Wed Nov 24 00:02:07 2010 +0100 mGAR v2: checkpkg, implemented new GetPkgByPath() in the Catalog class. commit 49f4aecb95c1be8ce6e55a312026f55f60a4fbe1 Merge: 86a8abd 4c75fa9 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 22:29:33 2010 +0000 Merge branch 'collisions' of ssh://login.opencsw.org/home/maciej/public_html/opencsw into collisions commit 4c75fa9b3b6b06b0bee69f64874f5e1487efba03 Merge: 937c34e 0204d2c Author: Maciej Blizinski Date: Tue Nov 23 21:57:14 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 937c34eb38b42097796cd00b8141634dae0c33af Author: Maciej Blizinski Date: Tue Nov 23 21:53:00 2010 +0100 mGAR v2: checkpkg, throwing an error if an unregistered package is given for inclusion in a catalog. commit 20b9a6b1cb04991a836054bad89676d80a4734b4 Author: Maciej Blizinski Date: Tue Nov 23 19:43:02 2010 +0100 mGAR v2: checkpkg, importing to the database can import some packages, but it fails with sqlobject.dberrors.OperationalError: Got a packet bigger than 'max_allowed_packet' bytes commit 0204d2c1f6c2fadc88e1ddec31572cdd59ede8c7 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 14:24:32 2010 +0000 mGAR v2: Added sqlobject to the list of dependencies on Debian/Ubuntu. commit 86a8abd52ecbc636d2add023718c65f6a7240090 Merge: d77ebb3 ac9d118 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 10:55:26 2010 +0000 Merge branch 'collisions' of ssh://login.opencsw.org/home/maciej/public_html/opencsw into collisions commit d77ebb3886c1b3b74ed9cf3ffe707a2b4758f6a4 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 10:55:21 2010 +0000 mGAR v2: checkpkg, renamed 'bar' to 'pbar' to satisfy pylint. commit ac9d118bd750ffe7d5a824a27dc0d0cdb2333eeb Author: Maciej Blizinski Date: Tue Nov 23 11:53:54 2010 +0100 mGAR v2: checkpkg, moved db connection stuff to configuration.py, started working on checkpkg runs. commit 4356b072d1546314e8cb9c3bd15174f507da44ea Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 10:19:35 2010 +0000 mGAR v2: checkpkg, removed unused imports from checkpkg.py. commit a45c5fee794935dea3854defef99bb2b61bc473b Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 10:10:25 2010 +0000 mGAR v2: checkpkg, created checkpkg_lib.py with the intention to empty checkpkg.py. commit 9931638ee6ed87bf1f8c2694dc36ae2b74693a6b Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 08:08:53 2010 +0000 mGAR v2: checkpkg, implemented GetInstalledPackages in the Catalog class. commit 9aa73511ba7e67574085ba623d3eae0419a88b18 Author: Maciej Blizi?\197?\132ski Date: Tue Nov 23 07:06:37 2010 +0000 mGAR v2: checkpkg: splitting off LddEmulator and SystemPkgmap to separate files. commit aa650b652a9d4c24c8ab3e8c6f63a9d0a9afa380 Author: Maciej Blizi?\197?\132ski Date: Mon Nov 22 23:23:25 2010 +0000 mGAR v2: checkpkg, checking package architecture before inserting into a catalog. commit ef28624d237bc2949f491bdc2e89913c60da83ed Author: Maciej Blizi?\197?\132ski Date: Mon Nov 22 22:00:18 2010 +0000 mGAR v2: checkpkg, a registering an existing package works now. commit 913547c974bde31d97c91f400877a7ca5b767d4e Author: Maciej Blizi?\197?\132ski Date: Mon Nov 22 21:50:10 2010 +0000 mGAR v2: checkpkg, removing the super() call in SystemPkgmapMixin commit 9655c817cdb56ef27de103b2bfd68428087717f2 Author: Maciej Blizinski Date: Mon Nov 22 21:06:26 2010 +0100 mGAR v2: Removing the database classmethods, and making sure that we're returning files that belong to packages that are in catalogs (although the check is slightly redundant). commit 25dbd71a94f7e7db4ccab1d820ba305b37ce0066 Author: Maciej Blizinski Date: Mon Nov 22 11:14:44 2010 +0100 mGAR v2: checkpkg, more db refactoring, tests are passing, pkgdb needs to be fixed. commit 5c44f40f21b6155216eaff5923cc97d23c05be14 Merge: 426f6c8 4e03ab2 Author: Maciej Blizinski Date: Sun Nov 21 19:36:48 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 4e03ab231ebad07bfc58c9cfc016d180ef4d865e Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 18:25:00 2010 +0000 mGAR v2: checkpkg, removing a package from a catalog works now. commit 1fcb2db5e243015001252ee96a11b045d52f4320 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 15:46:49 2010 +0000 mGAR v2: checkpkg, not allowing two packages with the same pkgname in one catalog. commit 426f6c862262092c19dc422400b8d98a92606b23 Merge: 90098b5 1767ae5 Author: Maciej Blizinski Date: Sun Nov 21 16:23:30 2010 +0100 Merge branch 'collisions' of file:///home/maciej/public_html/opencsw into collisions commit 90098b5fac1e4c4ddbe1356d4172c9c346864289 Merge: 5d940e5 f3ae454 Author: Maciej Blizinski Date: Sun Nov 21 16:20:47 2010 +0100 Merge branch 'master' of file:///home/maciej/public_html/opencsw into collisions commit 0d9de2311b68856db552ecc452aaa0c12c00c900 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 14:46:37 2010 +0000 mGAR v2: checkpkg, checking that putting one package two times in a catalog raises an error. commit 1767ae5d3e6e6c8ea37ad91ed5b05651b148f929 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 14:34:33 2010 +0000 mGAR v2: checkpkg, small unit tests cleanup. commit 787874a57a0c3568f7991750b958df63689ad533 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 14:26:27 2010 +0000 mGAR v2: checkpkg, querying the database for files works. commit 728670ac4ecc7dccc8fe5d33e0eff5edcdae3019 Author: Maciej Blizi?\197?\132ski Date: Sun Nov 21 12:13:25 2010 +0000 mGAR v2: using #!/usr/bin/env for checkpkg_test.py commit 5d940e5a98876f51a0e095d80af42075371466b0 Author: Maciej Blizinski Date: Sun Nov 21 13:08:32 2010 +0100 mGAR v2: checkpkg, start of a test for retrieving pkgnames for a basename. The netzwerk lags today, moving development home. commit 38c8c3a6db74d373859abef28ac1de400ac99bef Author: Maciej Blizinski Date: Sun Nov 21 12:44:48 2010 +0100 mGAR v2: checkpkg, registering a package with a catalog. commit 77de13f7cdcd6af28d38735bd64518217c61b6e7 Author: Maciej Blizinski Date: Sat Nov 20 19:00:28 2010 +0100 mGAR v2: checkpkg, a test for inserting stats into the db. commit 1adc64e53ac87fd88f57b707c8e4b4b68b7487b7 Author: Maciej Blizinski Date: Sat Nov 20 18:10:58 2010 +0100 mGAR v2: checkpkg, started a database related unit tests. commit 73c3fb73e0989bd8cf1fee46ebe5ac96e17ca208 Author: Maciej Blizinski Date: Sat Nov 20 11:07:37 2010 +0100 mGAR v2: checkpkg, removing the remaining korn shell code. commit 24acc21103eb336d82bd5d7198144bea633bb550 Merge: 3e34c07 46dd5e8 Author: Maciej Blizinski Date: Fri Nov 19 00:54:55 2010 +0100 Merge branch 'master' into collisions commit 3e34c07a5187e9babcd85b75d4397b18d646d7a5 Author: Maciej Blizinski Date: Thu Nov 18 12:32:33 2010 +0100 mGAR v2: checkpkg, insignificant change to models.py commit 286195b81d1507f8094676efbb0e209be431e543 Merge: 4b8a652 953d348 Author: Maciej Blizinski Date: Wed Nov 17 23:47:29 2010 +0100 Merge branch 'master' into collisions commit 953d348e07b9fa5b58b00c2af67c97946dee38ca Author: Maciej Blizinski Date: Wed Nov 17 23:40:35 2010 +0100 mGAR v2: pkgdb, adding soname to the binaries_dump_info section. commit de9fcb7042b1466499c3d56aceed1df1de9b9e79 Author: Maciej Blizi?\197?\132ski Date: Wed Nov 3 08:43:14 2010 +0000 Revert "mGAR v2: checkpkg, README, the list of dependencies to run the unit tests on Ubuntu." This reverts commit 46b7b6bd95a737c1f65a8e1d60bf07e1cd3301de. commit 9b9d1a7d46cbefed0316f08939b41a0b3775880c Author: Maciej Blizinski Date: Wed Nov 3 08:40:03 2010 +0000 mGAR v2: checkpkg, README, the list of dependencies to run the unit tests on Ubuntu. Modified Paths: -------------- csw/mgar/gar/v2/bin/checkpkg csw/mgar/gar/v2/bin/mkpackage csw/mgar/gar/v2/gar.pkg.mk csw/mgar/gar/v2/lib/python/README csw/mgar/gar/v2/lib/python/catalog.py csw/mgar/gar/v2/lib/python/checkpkg.py csw/mgar/gar/v2/lib/python/checkpkg_test.py csw/mgar/gar/v2/lib/python/configuration.py csw/mgar/gar/v2/lib/python/database.py csw/mgar/gar/v2/lib/python/dependency_checks.py csw/mgar/gar/v2/lib/python/dependency_checks_test.py csw/mgar/gar/v2/lib/python/inspective_package.py csw/mgar/gar/v2/lib/python/models.py csw/mgar/gar/v2/lib/python/opencsw.py csw/mgar/gar/v2/lib/python/package.py csw/mgar/gar/v2/lib/python/package_checks.py csw/mgar/gar/v2/lib/python/package_checks_test.py csw/mgar/gar/v2/lib/python/package_stats.py csw/mgar/gar/v2/lib/python/package_stats_test.py csw/mgar/gar/v2/lib/python/pkgdb.py csw/mgar/gar/v2/lib/python/sharedlib_utils.py csw/mgar/gar/v2/lib/python/sharedlib_utils_test.py csw/mgar/gar/v2/lib/python/tag.py csw/mgar/gar/v2/lib/python/tag_test.py csw/mgar/gar/v2/lib/python/testdata/neon_stats.py csw/mgar/gar/v2/lib/python/testdata/tree_stats.py csw/mgar/gar/v2/tests/run_tests.py Added Paths: ----------- csw/mgar/gar/v2/lib/python/checkpkg2.py csw/mgar/gar/v2/lib/python/checkpkg_lib.py csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py csw/mgar/gar/v2/lib/python/common_constants.py csw/mgar/gar/v2/lib/python/ldd_emul.py csw/mgar/gar/v2/lib/python/ldd_emul_test.py csw/mgar/gar/v2/lib/python/models_test.py csw/mgar/gar/v2/lib/python/mute_progressbar.py csw/mgar/gar/v2/lib/python/pkgdb_test.py csw/mgar/gar/v2/lib/python/shell.py csw/mgar/gar/v2/lib/python/system_pkgmap.py csw/mgar/gar/v2/lib/python/system_pkgmap_test.py csw/mgar/gar/v2/lib/python/test_base.py Removed Paths: ------------- csw/mgar/gar/v2/bin/analyze_module_results.py csw/mgar/gar/v2/bin/checkpkg_collect_stats.py csw/mgar/gar/v2/bin/checkpkg_run_modules.py Property Changed: ---------------- csw/mgar/gar/v2/bin/checkpkg csw/mgar/gar/v2/lib/python/package_stats_test.py Deleted: csw/mgar/gar/v2/bin/analyze_module_results.py =================================================================== --- csw/mgar/gar/v2/bin/analyze_module_results.py 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/bin/analyze_module_results.py 2010-12-10 16:48:58 UTC (rev 11879) @@ -1,73 +0,0 @@ -#!/opt/csw/bin/python2.6 -# $Id$ - -import itertools -import operator -import optparse -import os -import pprint -import progressbar -import sys -import textwrap - -# The following bit of code sets the correct path to Python libraries -# distributed with GAR. -path_list = [os.path.dirname(__file__), - "..", "lib", "python"] -sys.path.append(os.path.join(*path_list)) -import checkpkg -import overrides -import package_stats - -BEFORE_OVERRIDES = """If any of the reported errors were false positives, you -can override them pasting the lines below to the GAR recipe.""" - -AFTER_OVERRIDES = """Please note that checkpkg isn't suggesting you should -simply add these overrides do the Makefile. It only informs what the overrides -could look like. You need to understand what are the reported issues about and -use your best judgement to decide whether to fix the underlying problems or -override them. For more information, scroll up and read the detailed -messages.""" - -UNAPPLIED_OVERRIDES = """WARNING: Some overrides did not match any errors. -They can be removed, as they don't take any effect anyway. If you're getting -errors at the same time, maybe you didn't specify the overrides correctly.""" - -def main(): - parser = optparse.OptionParser() - parser.add_option("-c", "--catalog_file", dest="catalog", - help="Optional catalog file") - parser.add_option("-q", "--quiet", dest="quiet", - default=False, action="store_true", - help=("Display less messages")) - options, args = parser.parse_args() - filenames = args - - # This might be bottleneck. Perhaps a list of md5 sums can be given to this - # script instead. - - # It might be a good idea to store the error tags in the database and - # eliminate the need to access the directory with the error tag files. - - pkgstats = package_stats.StatsListFromCatalog(filenames, options.catalog) - overrides_list = [pkg.GetSavedOverrides() for pkg in pkgstats] - override_list = reduce(operator.add, overrides_list) - error_tags = reduce(operator.add, [stat.GetSavedErrorTags() for stat in pkgstats]) - (tags_after_overrides, - unapplied_overrides) = overrides.ApplyOverrides(error_tags, override_list) - if not options.quiet: - if tags_after_overrides: - print textwrap.fill(BEFORE_OVERRIDES, 80) - for checkpkg_tag in tags_after_overrides: - print checkpkg_tag.ToGarSyntax() - print textwrap.fill(AFTER_OVERRIDES, 80) - if unapplied_overrides: - print textwrap.fill(UNAPPLIED_OVERRIDES, 80) - for override in unapplied_overrides: - print "* Unused %s" % override - exit_code = bool(tags_after_overrides) - sys.exit(exit_code) - - -if __name__ == '__main__': - main() Modified: csw/mgar/gar/v2/bin/checkpkg =================================================================== --- csw/mgar/gar/v2/bin/checkpkg 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/bin/checkpkg 2010-12-10 16:48:58 UTC (rev 11879) @@ -1,322 +1 @@ -#!/bin/ksh -p -# -# $Id$ -# -# checkpkg 1.51 -# -# diff to 1.46a -# - check multiple package files -# - checkpkg.d plugin support -# - getopts support for command line options -# - colors -# - modular architecture + unit tests -# - reliable shared library checking -# -# This script examines a package that has been put together -# for submittal to the CSW archive at opencsw.org -# -# It examines it for compliance with the packaging standards at -# http://www.opencsw.org/standards/ -# It DOES NOT CATCH EVERYTHING. However, the package will be -# tested with this script before acceptance, so you may as well -# save yourself some time, and run the script yourself! -# -# Be sure to occasionally do a "pkg-get update cswutils" so that -# you know you are tracking the most current version. -# -# TODO: -# - add message handlig to the CheckInterface class. -# - -PATH=$PATH:/usr/sbin -readonly NAME_MAX_LENGTH=${NAME_MAX_LENGTH:-20} - -command_basename=`basename $0` -command_basedir="${0%/${command_basename}}" -libshdir="${command_basedir}/../lib/sh" -readonly command_basename command_basedir libshdir -. "${libshdir}/libcheckpkg.sh" - -LOCAL_ARCH=`uname -p` -CHECKPKG_TMPDIR=${CHECKPKG_TMPDIR:-/var/tmp} -readonly CHECKPKG_TMPDIR - -# Colors only when running interactively -if [[ -t 1 ]]; then - GREEN="\\033[0;32;40m" - RED="\\033[1;31;40m" - BOLD="\\033[1m" - COLOR_RESET="\\033[00m" -else - GREEN="" - RED="" - BOLD="" - COLOR_RESET="" -fi -readonly GREEN RED BOLD COLOR_RESET - -readonly selfpath="$0" -readonly selfargs="$@" - -cleanup(){ - if [[ -d "$EXTRACTDIR" ]] ; then - rm -rf $EXTRACTDIR - fi - cleantmparchives -} - -cleantmparchives() { - for TMPARCHIVE in $tmparchives; do - if [[ "$TMPARCHIVE" != "" ]]; then - [ -f "$TMPARCHIVE" ] && rm $TMPARCHIVE - fi - done -} - -cleanupset(){ - if [ "`echo $SETINF*`" != "$SETINF*" ]; then - rm $SETINF* - fi -} - -# Print error message, and quit program. -errmsg(){ - print ERROR: $* >/dev/fd/2 - cleanup - cleanupset - print "To run checkpkg in the debug mode, add the '-d' flag, for example:" - # selfargs can be very, very long. Find a way to truncate it. - # print "${selfpath} -d ${selfargs}" - print "After you modify any overrides, you need to do gmake remerge repackage" - print "or gmake platforms-remerge platforms-repackage." - exit 1 -} - -debugmsg() { - if [[ "${DEBUG}" != "" ]]; then - print "DEBUG: $*" > /dev/fd/2 - fi -} - -# TODO: Options to add: -# - Use an pre-cached (from a catalog file?) list of md5 sums -# - Don't use the data from /var/sadm/install/contents -display_help=0 -SKIP_STATS_COLLECTION=0 -MD5_SUMS_CATALOG_FILE="" -INSTALL_CONTENTS_FILES="/var/sadm/install/contents" -ANALYZE=1 -PROFILE=0 -QUIET=0 - -while getopts hsdNM:o:c:Apq opt; do - case "${opt}" in - c) - INSTALL_CONTENTS_FILES="${INSTALL_CONTENTS_FILES} ${OPTARG}" - ;; - d) - DEBUG=1 - ;; - h) - display_help=1 - ;; - N) - SKIP_STATS_COLLECTION=1 - ;; - M) - MD5_SUMS_CATALOG_FILE="${OPTARG}" - ;; - A) - ANALYZE=0 - ;; - p) - PROFILE=1 - ;; - q) QUIET=1 - ;; - *) - echo "Unknown option '${opt}'" - ;; - esac -done -shift $(( $OPTIND -1 )) - -readonly INSTALL_CONTENTS_FILES -readonly MD5_SUMS_CATALOG_FILE -readonly SKIP_STATS_COLLECTION -readonly ANALYZE -readonly PROFILE -readonly QUIET - -if [[ "${display_help}" -eq 1 ]] ; then - print 'Usage: checkpkg [options] pkg1 [pkg2 ....]' - print 'Options:' - print ' -c use an additional install/contents file' - print ' -d display debug messages' - print ' -N skip statistics collection' - print ' -M use package md5sums from a catalog file' - print ' -A Do not analyze the results.' - print ' -p Enable profiling' - print ' -q Display less messages' - print '' - print 'Error tags are saved to the sqlite database.' - exit 0 -fi - -# a unique filename for the list of package deps and libs we see in a 'set' -SETINF=$CHECKPKG_TMPDIR/checkpkg.$$.`date +%Y%m%d%H%M%S` -SETLIBS=$SETINF.libs -SETDEPS=$SETINF.deps -pkgnames="" -tmparchives="" - -EXTRACTDIR=$CHECKPKG_TMPDIR/dissect.$$ - -if [ -d $EXTRACTDIR ] ; then - errmsg ERROR: $EXTRACTDIR already exists -fi - -for f in "$@" -do - - if [[ ! -f $f ]] ; then - errmsg ERROR: $f does not exist - fi - - -[ -d ${EXTRACTDIR} ] || mkdir ${EXTRACTDIR} - -######################################## -# Check for some common errors -######################################### - -# TODO: To be ported. -# -# # find all executables and dynamic libs,and list their filenames. -# if [[ "$basedir" != "" ]] ; then -# print -# if [[ -f $EXTRACTDIR/elflist ]] ; then -# print "Checking relocation ability..." -# xargs strings < $EXTRACTDIR/elflist| grep /opt/csw -# if [[ $? -eq 0 ]] ; then -# errmsg package build as relocatable, but binaries have hardcoded /opt/csw paths in them -# else -# print trivial check passed -# fi -# else -# echo No relocation check done for non-binary relocatable package. -# fi -# fi - -tmparchives="$tmparchives $TMPARCHIVE" -done - -# Plugin section. This is here for support for other programming languages -# than Python. As of 2010-03-16 there are no checks in there. If this keeps -# empty, if no checks in other languages get written, it could be removed. -# -# Plugins should live in checkpkg.d subdirectory in the same directory in which -# checkpkg is. Each plugin file name should be an executable and begin with -# "checkpkg-". - -test_suite_ok=1 -checkpkg_module_dir="${command_basedir}/../lib/checkpkg.d" -checkpkg_module_tag="checkpkg-" -checkpkg_stats_basedir="${HOME}/.checkpkg/stats" - -# Cleaning up old *.pyc files which can cause grief. This is because of the -# move of Python libraries. -for pyc_file in ${checkpkg_module_dir}/opencsw.pyc \ - ${checkpkg_module_dir}/checkpkg.pyc; do - if [ -f "${pyc_file}" ]; then - echo "Removing old pyc file: '${pyc_file}'" - rm "${pyc_file}" - fi -done - -if [[ "${DEBUG}" != "" ]]; then - extra_options="--debug" -fi -if [[ "${PROFILE}" -eq 1 ]]; then - extra_options="${extra_options} --profile" -fi -if [[ "${QUIET}" -eq 1 ]]; then - quiet_options="--quiet" -else - quiet_options="" -fi - -if [[ -n "${MD5_SUMS_CATALOG_FILE}" ]]; then - catalog_options="--catalog=${MD5_SUMS_CATALOG_FILE}" -else - catalog_options="" -fi - -# /var/sadm/install/contents cache update -# TODO: Either remove this section or stop the stats collection phase from -# updating the cache. -${command_basedir}/update_contents_cache.py ${extra_options} -if [[ $? -ne 0 ]]; then - errmsg "Updating the contents cache has failed." -fi -if [[ "${SKIP_STATS_COLLECTION}" -eq 0 ]]; then - # Collects package stats to be analyzed later - ${command_basedir}/checkpkg_collect_stats.py \ - ${catalog_options} \ - ${extra_options} \ - "$@" - if [[ "$?" -ne 0 ]]; then - errmsg "Stats collection phase has failed." - fi -fi - -# TODO: A performance problem. The following line means that the md5sums are -# calculated once more. -if [ "${MD5_SUMS_CATALOG_FILE}" ]; then - debugmsg "Reading md5sums from ${MD5_SUMS_CATALOG_FILE}" - md5sums=`cat "${MD5_SUMS_CATALOG_FILE}" \ - | awk '{print $5}' \ - | ggrep -E '[0-9abcdef]{32}'` -else - debugmsg "Calculating md5 sums of all the package files." - md5sums=`gmd5sum "$@" | awk '{print $1}'` -fi -debugmsg "All md5 sums: ${md5sums}" - -# Running the checks. -${command_basedir}/checkpkg_run_modules.py \ - ${extra_options} \ - -b "${checkpkg_stats_basedir}" \ - ${quiet_options} \ - ${md5sums} -if [[ "$?" -ne 0 ]]; then - print "There was a problem analyzing package stats." - test_suite_ok=0 -fi - -if [[ ${test_suite_ok} -ne 1 ]]; then - errmsg "One or more tests have finished with an error." -fi - -if [[ "${ANALYZE}" -eq 1 ]]; then -# Collecting errors and applying the overrides. -# This has to use the original files. - ${command_basedir}/analyze_module_results.py \ - ${catalog_options} \ - ${quiet_options} \ - "$@" - if [[ "$?" -ne 0 ]]; then - errmsg "${RED}Checkpkg has reported errors.${COLOR_RESET}" - else - print "${GREEN}Checkpkg reports no errors.${COLOR_RESET}" - fi -else - echo "Skipping result analysis." -fi - -print "" - -# Cleaning up after all packages -cleanup - -cleanupset +link ../lib/python/checkpkg2.py \ No newline at end of file Property changes on: csw/mgar/gar/v2/bin/checkpkg ___________________________________________________________________ Deleted: svn:executable - * Added: svn:special + * Deleted: csw/mgar/gar/v2/bin/checkpkg_collect_stats.py =================================================================== --- csw/mgar/gar/v2/bin/checkpkg_collect_stats.py 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/bin/checkpkg_collect_stats.py 2010-12-10 16:48:58 UTC (rev 11879) @@ -1,69 +0,0 @@ -#!/opt/csw/bin/python2.6 -# -# $Id$ -# -# Collects statistics about a package and saves to a directory, for later use -# by checkpkg modules. - -import itertools -import logging -import optparse -import os -import os.path -import subprocess -import sys -import progressbar - -# The following bit of code sets the correct path to Python libraries -# distributed with GAR. -path_list = [os.path.dirname(__file__), - "..", "lib", "python"] -sys.path.append(os.path.join(*path_list)) -import checkpkg -import opencsw -import package_stats - -def main(): - parser = optparse.OptionParser() - parser.add_option("-d", "--debug", dest="debug", - default=False, action="store_true", - help="Turn on debugging messages") - parser.add_option("-c", "--catalog", dest="catalog", - help="Catalog file") - parser.add_option("-p", "--profile", dest="profile", - default=False, action="store_true", - help="A disabled option") - options, args = parser.parse_args() - if options.debug: - logging.basicConfig(level=logging.DEBUG) - else: - logging.basicConfig(level=logging.INFO) - logging.debug("Collecting statistics about given package files.") - args_display = args - if len(args_display) > 5: - args_display = args_display[:5] + ["...more..."] - file_list = args - logging.debug("Processing: %s, please be patient", args_display) - stats_list = package_stats.StatsListFromCatalog( - file_list, options.catalog, options.debug) - # Reversing the item order in the list, so that the pop() method can be used - # to get packages, and the order of processing still matches the one in the - # catalog file. - stats_list.reverse() - total_packages = len(stats_list) - counter = itertools.count(1) - logging.info("Juicing the srv4 package stream files...") - bar = progressbar.ProgressBar() - bar.maxval = total_packages - bar.start() - while stats_list: - # This way objects will get garbage collected as soon as they are removed - # from the list by pop(). The destructor (__del__()) of the srv4 class - # removes the temporary directory from the disk. This allows to process - # the whole catalog. - stats_list.pop().CollectStats() - bar.update(counter.next()) - bar.finish() - -if __name__ == '__main__': - main() Deleted: csw/mgar/gar/v2/bin/checkpkg_run_modules.py =================================================================== --- csw/mgar/gar/v2/bin/checkpkg_run_modules.py 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/bin/checkpkg_run_modules.py 2010-12-10 16:48:58 UTC (rev 11879) @@ -1,56 +0,0 @@ -#!/opt/csw/bin/python2.6 -# $Id$ - -"""This script runs all the checks written in Python.""" - -import datetime -import logging -import os -import os.path -import sys -import re -import cProfile - -CHECKPKG_MODULE_NAME = "Second checkpkg API version" - -# The following bit of code sets the correct path to Python libraries -# distributed with GAR. -path_list = [os.path.dirname(__file__), - "..", "lib", "python"] -sys.path.append(os.path.join(*path_list)) -import checkpkg -import opencsw - - -def main(): - options, args = checkpkg.GetOptions() - if options.debug: - logging.basicConfig(level=logging.DEBUG) - else: - logging.basicConfig(level=logging.INFO) - md5sums = args - # CheckpkgManager2 class abstracts away things such as the collection of - # results. - check_manager = checkpkg.CheckpkgManager2(CHECKPKG_MODULE_NAME, - options.stats_basedir, - md5sums, - options.debug) - # Running the checks, reporting and exiting. - exit_code, screen_report, tags_report = check_manager.Run() - screen_report = unicode(screen_report) - if not options.quiet and screen_report: - sys.stdout.write(screen_report) - else: - logging.debug("No screen report.") - sys.exit(exit_code) - - -if __name__ == '__main__': - if "--profile" in sys.argv: - t_str = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") - home = os.environ["HOME"] - cprof_file_name = os.path.join( - home, ".checkpkg", "run-modules-%s.cprof" % t_str) - cProfile.run("main()", sort=1, filename=cprof_file_name) - else: - main() Modified: csw/mgar/gar/v2/bin/mkpackage =================================================================== --- csw/mgar/gar/v2/bin/mkpackage 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/bin/mkpackage 2010-12-10 16:48:58 UTC (rev 11879) @@ -25,6 +25,9 @@ # Tool Version/Revision Information $TOOLVERSION = "1.4"; ($REVISION) = q/$Revision$/ =~ /(\d+)/; +# This shows a warning: +# "Use of uninitialized value $REVISION in sprintf at +# /home/maciej/src/opencsw/pkg/nspr/trunk/gar/bin/mkpackage line 31." $VERSION = sprintf '%s (r%d)', $TOOLVERSION, $REVISION; # Discover network support Modified: csw/mgar/gar/v2/gar.pkg.mk =================================================================== --- csw/mgar/gar/v2/gar.pkg.mk 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/gar.pkg.mk 2010-12-10 16:48:58 UTC (rev 11879) @@ -52,6 +52,7 @@ GARPKG_v1 = CSWgar-v1 GARPKG_v2 = CSWgar-v2 RUNTIME_DEP_PKGS_$(SRCPACKAGE) ?= $(or $(GARPKG_$(GARSYSTEMVERSION)),$(error GAR version $(GARSYSTEMVERSION) unknown)) +CATALOG_RELEASE ?= current _PKG_SPECS = $(filter-out $(NOPACKAGE),$(SPKG_SPECS)) @@ -842,7 +843,11 @@ # pkgcheck - check if the package is compliant # pkgcheck: $(foreach SPEC,$(_PKG_SPECS),package-$(SPEC)) - $(_DBG)( LC_ALL=C $(GARBIN)/checkpkg $(foreach SPEC,$(_PKG_SPECS),$(SPKG_EXPORT)/`$(call _PKG_ENV,$(SPEC)) mkpackage --tmpdir $(SPKG_TMPDIR) -qs $(WORKDIR)/$(SPEC).gspec -D pkgfile`.gz ) || exit 2;) + $(_DBG)( LC_ALL=C $(GARBIN)/checkpkg \ + --architecture "$(GARCH)" \ + --os-releases "$(SPKG_OSNAME)" \ + --catalog-release "$(CATALOG_RELEASE)" \ + $(foreach SPEC,$(_PKG_SPECS),$(SPKG_EXPORT)/`$(call _PKG_ENV,$(SPEC)) mkpackage --tmpdir $(SPKG_TMPDIR) -qs $(WORKDIR)/$(SPEC).gspec -D pkgfile`.gz ) || exit 2;) @$(MAKECOOKIE) pkgcheck-p: Modified: csw/mgar/gar/v2/lib/python/README =================================================================== --- csw/mgar/gar/v2/lib/python/README 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/lib/python/README 2010-12-10 16:48:58 UTC (rev 11879) @@ -21,9 +21,11 @@ tests as means to run various bits of code. Here's the dependency list for Ubuntu. - python-cheetah - python-hachoir-parser - python-magic - python-mox - python-progressbar +sudo aptitude install \ + python-cheetah \ + python-hachoir-parser \ + python-magic \ + python-mox \ + python-progressbar \ + python-sqlobject \ python-yaml Modified: csw/mgar/gar/v2/lib/python/catalog.py =================================================================== --- csw/mgar/gar/v2/lib/python/catalog.py 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/lib/python/catalog.py 2010-12-10 16:48:58 UTC (rev 11879) @@ -123,6 +123,7 @@ def _GetCatalogData(self, fd): catalog_data = [] for line in fd: + if line.startswith("#"): continue try: parsed = self._ParseCatalogLine(line) catalog_data.append(parsed) Modified: csw/mgar/gar/v2/lib/python/checkpkg.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg.py 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/lib/python/checkpkg.py 2010-12-10 16:48:58 UTC (rev 11879) @@ -3,44 +3,22 @@ # This is the checkpkg library, common for all checkpkg tests written in # Python. -import copy -import cPickle -import errno import itertools import logging -import operator import optparse -import os import os.path import re import pprint import progressbar -import socket -import sqlite3 import sqlobject -import time -from sqlobject import sqlbuilder import subprocess -import textwrap -from Cheetah import Template import database -import package import inspective_package -import package_checks -import package_stats import models as m -import configuration as c -import tag +import common_constants -DEBUG_BREAK_PKGMAP_AFTER = False -SYSTEM_PKGMAP = "/var/sadm/install/contents" -NEEDED_SONAMES = "needed sonames" -RUNPATH = "runpath" -SONAME = "soname" -CONFIG_MTIME = "mtime" -CONFIG_DB_SCHEMA = "db_schema_version" DO_NOT_REPORT_SURPLUS = set([u"CSWcommon", u"CSWcswclassutils", u"CSWisaexec"]) DO_NOT_REPORT_MISSING = set([]) DO_NOT_REPORT_MISSING_RE = [r"\*?SUNW.*"] @@ -48,17 +26,11 @@ PSTAMP_RE = r"(?P\w+)@(?P[\w\.-]+)-(?P\d+)" DESCRIPTION_RE = r"^([\S]+) - (.*)$" BAD_CONTENT_REGEXES = ( - # Slightly obfuscating these by using the default concatenation of - # strings. + # Slightly obfuscating these by using concatenation of strings. r'/export' r'/medusa', r'/opt' r'/build', ) -SYSTEM_SYMLINKS = ( - ("/opt/csw/bdb4", ["/opt/csw/bdb42"]), - ("/64", ["/amd64", "/sparcv9"]), - ("/opt/csw/lib/i386", ["/opt/csw/lib"]), -) INSTALL_CONTENTS_AVG_LINE_LENGTH = 102.09710677919261 SYS_DEFAULT_RUNPATH = [ "/usr/lib/$ISALIST", @@ -67,8 +39,7 @@ "/lib", ] -CONTENT_PKG_RE = r"^\*?(CSW|SUNW)[0-9a-zA-Z\-]?[0-9a-z\-]+$" -MD5_RE = r"^[0123456789abcdef]{32}$" +MD5_RE = re.compile(r"^[0123456789abcdef]{32}$") REPORT_TMPL = u"""#if $missing_deps or $surplus_deps or $orphan_sonames Dependency issues of $pkgname: @@ -90,57 +61,6 @@ #end if """ -SCREEN_ERROR_REPORT_TMPL = u"""#if $errors -#if $debug -ERROR: One or more errors have been found by $name. -#end if -#for $pkgname in $errors -$pkgname: -#for $error in $errors[$pkgname] -#if $debug - $repr($error) -#elif $error.msg -$textwrap.fill($error.msg, 78, initial_indent="# ", subsequent_indent="# ") -# -> $repr($error) - -#end if -#end for -#end for -#else -#if $debug -OK: $repr($name) module found no problems. -#end if -#end if -#if $messages -#for $msg in $messages -$textwrap.fill($msg, 78, initial_indent=" * ", subsequent_indent=" ") -#end for -#end if -#if $gar_lines - -# Checkpkg suggests adding the following lines to the GAR recipe: -# This is a summary; see above for details. -#for $line in $gar_lines -$line -#end for -#end if -""" - -# http://www.cheetahtemplate.org/docs/users_guide_html_multipage/language.directives.closures.html -TAG_REPORT_TMPL = u"""#if $errors -# Tags reported by $name module -#for $pkgname in $errors -#for $tag in $errors[$pkgname] -#if $tag.msg -$textwrap.fill($tag.msg, 70, initial_indent="# ", subsequent_indent="# ") -#end if -$pkgname: ${tag.tag_name}#if $tag.tag_info# $tag.tag_info#end if# -#end for -#end for -#end if -""" - - class Error(Exception): pass @@ -157,11 +77,12 @@ pass +class SetupError(Error): + pass + + def GetOptions(): parser = optparse.OptionParser() - parser.add_option("-b", "--stats-basedir", dest="stats_basedir", - help=("The base directory with package statistics " - "in yaml format, e.g. ~/.checkpkg/stats")) parser.add_option("-d", "--debug", dest="debug", default=False, action="store_true", help="Turn on debugging messages") @@ -172,8 +93,6 @@ default=False, action="store_true", help=("Print less messages")) (options, args) = parser.parse_args() - if not options.stats_basedir: - raise ConfigurationError("ERROR: the -b option is missing.") # Using set() to make the arguments unique. return options, set(args) @@ -195,859 +114,9 @@ return m.group("username") if m else None -class SystemPkgmap(database.DatabaseClient): - """A class to hold and manipulate the /var/sadm/install/contents file.""" - - STOP_PKGS = ["SUNWbcp", "SUNWowbcp", "SUNWucb"] - - def __init__(self, system_pkgmap_files=None, debug=False): - """There is no need to re-parse it each time. - - Read it slowly the first time and cache it for later.""" - super(SystemPkgmap, self).__init__(debug=debug) - self.cache = {} - self.pkgs_by_path_cache = {} - self.file_mtime = None - self.cache_mtime = None - self.initialized = False - if not system_pkgmap_files: - self.system_pkgmap_files = [SYSTEM_PKGMAP] - else: - self.system_pkgmap_files = system_pkgmap_files - self.csw_pkg_re = re.compile(CONTENT_PKG_RE) - self.digits_re = re.compile(r"^[0-9]+$") - - def _LazyInitializeDatabase(self): - if not self.initialized: - self.InitializeDatabase() - - def InitializeRawDb(self): - """It's necessary for low level operations.""" - if True: - logging.debug("Connecting to sqlite") - self.sqlite_conn = sqlite3.connect(self.GetDatabasePath()) - - def InitializeDatabase(self): - """Established the connection to the database. - - TODO: Refactor this class to first create CswFile with no primary key and - no indexes. - """ - need_to_create_tables = False - db_path = self.GetDatabasePath() - checkpkg_dir = os.path.join(os.environ["HOME"], self.CHECKPKG_DIR) - if not os.path.exists(db_path): - logging.info("Building the cache database %s.", self.system_pkgmap_files) - logging.info("The cache will be kept in %s.", db_path) - if not os.path.exists(checkpkg_dir): - logging.debug("Creating %s", checkpkg_dir) - os.mkdir(checkpkg_dir) - need_to_create_tables = True - self.InitializeRawDb() - self.InitializeSqlobject() - if not self.IsDatabaseGoodSchema(): - logging.info("Old database schema detected.") - self.PurgeDatabase(drop_tables=True) - need_to_create_tables = True - if need_to_create_tables: - self.CreateTables() - self.PerformInitialDataImport() - if not self.IsDatabaseUpToDate(): - logging.debug("Rebuilding the package cache, can take a few minutes.") - self.ClearTablesForUpdates() - self.RefreshDatabase() - self.initialized = True - - def RefreshDatabase(self): - for pkgmap_path in self.system_pkgmap_files: - self._ProcessSystemPkgmap(pkgmap_path) - self.PopulatePackagesTable() - self.SetDatabaseMtime() - - def PerformInitialDataImport(self): - """Imports data into the database. - - Original bit of code from checkpkg: - egrep -v 'SUNWbcp|SUNWowbcp|SUNWucb' /var/sadm/install/contents | - fgrep -f $EXTRACTDIR/liblist >$EXTRACTDIR/shortcatalog - """ - for pkgmap_path in self.system_pkgmap_files: - self._ProcessSystemPkgmap(pkgmap_path) - self.SetDatabaseSchemaVersion() - self.PopulatePackagesTable() - self.SetDatabaseMtime() - - def _ProcessSystemPkgmap(self, pkgmap_path): - """Update the database using data from pkgmap. - - The strategy to only update the necessary bits: - - for each new row - - look it up in the db - - if doesn't exist, create it - - if exists, check the - TODO: continue this description - """ - INSERT_SQL = """ - INSERT INTO csw_file (basename, path, line) - VALUES (?, ?, ?); - """ - sqlite_cursor = self.sqlite_conn.cursor() - break_after = DEBUG_BREAK_PKGMAP_AFTER - contents_length = os.stat(pkgmap_path).st_size - if break_after: - estimated_lines = break_after - else: - estimated_lines = contents_length / INSTALL_CONTENTS_AVG_LINE_LENGTH - # The progressbar library doesn't like handling larger numbers - # It displays up to 99% if we feed it a maxval in the range of hundreds of - # thousands. - progressbar_divisor = int(estimated_lines / 1000) - if progressbar_divisor < 1: - progressbar_divisor = 1 - update_period = 1L - # To help delete old records - system_pkgmap_fd = open(pkgmap_path, "r") - stop_re = re.compile("(%s)" % "|".join(self.STOP_PKGS)) - # Creating a data structure: - # soname - {: , : , ...} - logging.debug("Building database cache db of the %s file", - pkgmap_path) - logging.info("Processing %s, it can take a few minutes", pkgmap_path) - count = itertools.count() - bar = progressbar.ProgressBar() - bar.maxval = estimated_lines / progressbar_divisor - bar.start() - # I tried dropping the csw_file_basename_idx index to speed up operation, - # but after I measured the times, it turned out that it doesn't make any - # difference to the total runnng time. - # logging.info("Dropping csw_file_basename_idx") - # sqlite_cursor.execute("DROP INDEX csw_file_basename_idx;") - for line in system_pkgmap_fd: - i = count.next() - if not i % update_period and (i / progressbar_divisor) <= bar.maxval: - bar.update(i / progressbar_divisor) - if stop_re.search(line): - continue - if line.startswith("#"): - continue - fields = re.split(c.WS_RE, line) - pkgmap_entry_path = fields[0].split("=")[0] - pkgmap_entry_dir, pkgmap_entry_base_name = os.path.split(pkgmap_entry_path) - # The following SQLObject-driven inserts are 60 times slower than the raw - # sqlite API. - # pkgmap_entry = m.CswFile(basename=pkgmap_entry_base_name, - # path=pkgmap_entry_dir, line=line.strip()) - # This page has some hints: - # http://www.mail-archive.com/sqlobject-discuss at lists.sourceforge.net/msg04641.html - # "These are simple straightforward INSERTs without any additional - # high-level burden - no SELECT, no caching, nothing. Fire and forget." - # sql = self.sqo_conn.sqlrepr( - # sqlobject.sqlbuilder.Insert(m.CswFile.sqlmeta.table, values=record)) - # self.sqo_conn.query(sql) - # ...unfortunately, it isn't any faster in practice. - # The fastest way is: - sqlite_cursor.execute(INSERT_SQL, [pkgmap_entry_base_name, - pkgmap_entry_dir, - line.strip()]) - if break_after and i > break_after: - logging.warning("Breaking after %s for debugging purposes.", break_after) - break - bar.finish() - self.sqlite_conn.commit() - logging.debug("All lines of %s were processed.", pkgmap_path) - - def _ParsePkginfoLine(self, line): - fields = re.split(c.WS_RE, line) - pkgname = fields[1] - pkg_desc = u" ".join(fields[2:]) - return pkgname, pkg_desc - - def PopulatePackagesTable(self): - logging.info("Updating the packages table") - args = ["pkginfo"] - pkginfo_proc = subprocess.Popen(args, stdout=subprocess.PIPE) - stdout, stderr = pkginfo_proc.communicate() - ret = pkginfo_proc.wait() - lines = stdout.splitlines() - bar = progressbar.ProgressBar() - bar.maxval = len(lines) - bar.start() - count = itertools.count() - INSERT_SQL = """ - INSERT INTO pkginst (pkgname, pkg_desc) - VALUES (?, ?); - """ - # If self.GetInstalledPackages calls out to the initialization, - # the result is an infinite recursion. - installed_pkgs = self.GetInstalledPackages(initialize=False) - for line in stdout.splitlines(): - pkgname, pkg_desc = self._ParsePkginfoLine(line) - if pkgname not in installed_pkgs: - # This is slow: - # pkg = m.Pkginst(pkgname=pkgname, pkg_desc=pkg_desc) - # This is much faster: - self.sqlite_conn.execute(INSERT_SQL, [pkgname, pkg_desc]) - i = count.next() - bar.update(i) - # Need to commit, otherwise subsequent SQLObject calls will fail. - self.sqlite_conn.commit() - bar.finish() - - def SetDatabaseMtime(self): - mtime = self.GetFileMtime() - res = m.CswConfig.select(m.CswConfig.q.option_key==CONFIG_MTIME) - if res.count() == 0: - logging.debug("Inserting the mtime (%s) into the database.", mtime) - config_record = m.CswConfig(option_key=CONFIG_MTIME, float_value=mtime) - else: - logging.debug("Updating the mtime (%s) in the database.", mtime) - res.getOne().float_value = mtime - - def SetDatabaseSchemaVersion(self): - try: - config_option = m.CswConfig.select( - m.CswConfig.q.option_key==CONFIG_DB_SCHEMA).getOne() - config_option.int_value = database.DB_SCHEMA_VERSION - except sqlobject.main.SQLObjectNotFound, e: - version = m.CswConfig(option_key=CONFIG_DB_SCHEMA, - int_value=database.DB_SCHEMA_VERSION) - - def GetPkgmapLineByBasename(self, filename): - """Returns pkgmap lines by basename: - { - path1: line1, - path2: line2, - } - """ - if filename in self.cache: - return self.cache[filename] - self._LazyInitializeDatabase() - res = m.CswFile.select(m.CswFile.q.basename==filename) - lines = {} - for obj in res: - lines[obj.path] = obj.line - if len(lines) == 0: - logging.debug("Cache doesn't contain filename %s", filename) - self.cache[filename] = lines - return lines - - def _InferPackagesFromPkgmapLine(self, line): - """Given a pkgmap line, return all packages it contains.""" - line = line.strip() - parts = re.split(c.WS_RE, line) - pkgs = [] - if parts[1] == 'd': - parts = parts[6:] - while parts: - part = parts.pop() - if self.digits_re.match(part): - break - elif "none" == part: - break - pkgs.append(part) - # Make the packages appear in the same order as in the install/contents - # file. - pkgs.reverse() - return pkgs - - def GetPathsAndPkgnamesByBasename(self, filename): - """Returns paths and packages by basename. - - e.g. - {"/opt/csw/lib": ["CSWfoo", "CSWbar"], - "/opt/csw/1/lib": ["CSWfoomore"]} - """ - lines = self.GetPkgmapLineByBasename(filename) - pkgs = {} - # Infer packages - for file_path in lines: - pkgs[file_path] = self._InferPackagesFromPkgmapLine(lines[file_path]) - # self.error_mgr_mock.GetPathsAndPkgnamesByBasename('libc.so.1').AndReturn({ - # "/usr/lib": (u"SUNWcsl",)}) - logging.debug("self.error_mgr_mock.GetPathsAndPkgnamesByBasename(%s).AndReturn(%s)", - repr(filename), pprint.pformat(pkgs)) - return pkgs - - def GetPkgByPath(self, full_path): - if full_path not in self.pkgs_by_path_cache: - self._LazyInitializeDatabase() - path, basename = os.path.split(full_path) - try: - obj = m.CswFile.select( - sqlobject.AND( - m.CswFile.q.path==path, - m.CswFile.q.basename==basename)).getOne() - self.pkgs_by_path_cache[full_path] = self._InferPackagesFromPkgmapLine( - obj.line) - except sqlobject.main.SQLObjectNotFound, e: - logging.debug("Couldn't find in the db: %s/%s", path, basename) - logging.debug(e) - self.pkgs_by_path_cache[full_path] = [] - logging.debug("self.error_mgr_mock.GetPkgByPath(%s).AndReturn(%s)", - repr(full_path), pprint.pformat(self.pkgs_by_path_cache[full_path])) - return self.pkgs_by_path_cache[full_path] - - def GetDatabaseMtime(self): - if not self.cache_mtime: - res = m.CswConfig.select(m.CswConfig.q.option_key==CONFIG_MTIME) - if res.count() == 1: - self.cache_mtime = res.getOne().float_value - elif res.count() < 1: - self.cache_mtime = 1 - logging.debug("GetDatabaseMtime() --> %s", self.cache_mtime) - return self.cache_mtime - - def GetFileMtime(self): - if not self.file_mtime: - stat_data = os.stat(SYSTEM_PKGMAP) - self.file_mtime = stat_data.st_mtime - return self.file_mtime - - def GetDatabaseSchemaVersion(self): - schema_on_disk = 1L - if not m.CswConfig.tableExists(): - return schema_on_disk; - res = m.CswConfig.select(m.CswConfig.q.option_key == CONFIG_DB_SCHEMA) - if res.count() < 1: - logging.debug("No db schema value found, assuming %s.", - schema_on_disk) - elif res.count() == 1: - schema_on_disk = res.getOne().int_value - return schema_on_disk - - def IsDatabaseUpToDate(self): - f_mtime_epoch = self.GetFileMtime() - d_mtime_epoch = self.GetDatabaseMtime() - f_mtime = time.gmtime(int(f_mtime_epoch)) - d_mtime = time.gmtime(int(d_mtime_epoch)) - logging.debug("IsDatabaseUpToDate: f_mtime %s, d_time: %s", f_mtime, d_mtime) - # Rounding up to integer seconds. There is a race condition: - # pkgadd finishes at 100.1 - # checkpkg reads /var/sadm/install/contents at 100.2 - # new pkgadd runs and finishes at 100.3 - # subsequent checkpkg runs won't pick up the last change. - # I don't expect pkgadd to run under 1s. - fresh = f_mtime <= d_mtime - good_version = self.GetDatabaseSchemaVersion() >= database.DB_SCHEMA_VERSION - logging.debug("IsDatabaseUpToDate: good_version=%s, fresh=%s", - repr(good_version), repr(fresh)) - return fresh and good_version - - def ClearTablesForUpdates(self): - for table in self.TABLES_THAT_NEED_UPDATES: - table.clearTable() - - def PurgeDatabase(self, drop_tables=False): - if drop_tables: - for table in self.TABLES: - if table.tableExists(): - table.dropTable() - else: - logging.debug("Truncating all tables") - for table in self.TABLES: - table.clearTable() - - def GetInstalledPackages(self, initialize=True): - """Returns a dictionary of all installed packages.""" - if initialize: - self._LazyInitializeDatabase() - res = m.Pkginst.select() - return dict([[str(x.pkgname), str(x.pkg_desc)] for x in res]) - - -class LddEmulator(object): - """A class to emulate ldd(1) - - Used primarily to resolve SONAMEs and detect package dependencies. - """ - def __init__(self): - self.runpath_expand_cache = {} - self.runpath_origin_expand_cache = {} - self.symlink_expand_cache = {} - self.symlink64_cache = {} - self.runpath_sanitize_cache = {} - - def ExpandRunpath(self, runpath, isalist, binary_path): - """Expands a signle runpath element. - - Args: - runpath: e.g. "/opt/csw/lib/$ISALIST" - isalist: isalist elements - binary_path: Necessary to expand $ORIGIN - """ - key = (runpath, tuple(isalist)) - if key not in self.runpath_expand_cache: - origin_present = False - # Emulating $ISALIST and $ORIGIN expansion - if '$ORIGIN' in runpath: - origin_present = True - if origin_present: - key_o = (runpath, tuple(isalist), binary_path) - if key_o in self.runpath_origin_expand_cache: - return self.runpath_origin_expand_cache[key_o] - else: - if not binary_path.startswith("/"): - binary_path = "/" + binary_path - runpath = runpath.replace('$ORIGIN', binary_path) - if '$ISALIST' in runpath: - expanded_list = [runpath.replace('/$ISALIST', '')] - expanded_list += [runpath.replace('$ISALIST', isa) for isa in isalist] - else: - expanded_list = [runpath] - expanded_list = [os.path.abspath(p) for p in expanded_list] - if not origin_present: - self.runpath_expand_cache[key] = expanded_list - else: - self.runpath_origin_expand_cache[key_o] = expanded_list - return self.runpath_origin_expand_cache[key_o] - return self.runpath_expand_cache[key] - - def ExpandSymlink(self, symlink, target, input_path): - key = (symlink, target, input_path) - if key not in self.symlink_expand_cache: - symlink_re = re.compile(r"%s(/|$)" % symlink) - if re.search(symlink_re, input_path): - result = input_path.replace(symlink, target) - else: - result = input_path - self.symlink_expand_cache[key] = result - return self.symlink_expand_cache[key] - - def Emulate64BitSymlinks(self, runpath_list): - """Need to emulate the 64 -> amd64, 64 -> sparcv9 symlink - - Since we don't know the architecture, we are adding both amd64 and - sparcv9. It should be safe - there are other checks that make sure - that right architectures are in the right directories. - """ - key = tuple(runpath_list) - if key not in self.symlink64_cache: - symlinked_list = [] - for runpath in runpath_list: - for symlink, expansion_list in SYSTEM_SYMLINKS: - for target in expansion_list: - expanded = self.ExpandSymlink(symlink, target, runpath) - if expanded not in symlinked_list: - symlinked_list.append(expanded) - self.symlink64_cache[key] = symlinked_list - return self.symlink64_cache[key] - - def SanitizeRunpath(self, runpath): - if runpath not in self.runpath_sanitize_cache: - self.runpath_sanitize_cache[runpath] = os.path.normpath(runpath) - return self.runpath_sanitize_cache[runpath] - - - def ResolveSoname(self, runpath_list, soname, isalist, - path_list, binary_path): - """Emulates ldd behavior, minimal implementation. - - runpath: e.g. ["/opt/csw/lib/$ISALIST", "/usr/lib"] - soname: e.g. "libfoo.so.1" - isalist: e.g. ["sparcv9", "sparcv8"] - path_list: A list of paths where the soname is present, e.g. - ["/opt/csw/lib", "/opt/csw/lib/sparcv9"] - - The function returns the one path. - """ - # Emulating the install time symlinks, for instance, if the prototype contains - # /opt/csw/lib/i386/foo.so.0 and /opt/csw/lib/i386 is a symlink to ".", - # the shared library ends up in /opt/csw/lib/foo.so.0 and should be - # findable even when RPATH does not contain $ISALIST. - original_paths_by_expanded_paths = {} - for p in path_list: - expanded_p_list = self.Emulate64BitSymlinks([p]) - # We can't just expand and return; we need to return one of the paths given - # in the path_list. - for expanded_p in expanded_p_list: - original_paths_by_expanded_paths[expanded_p] = p - logging.debug( - "%s: looking for %s in %s", - soname, runpath_list, original_paths_by_expanded_paths.keys()) - for runpath_expanded in runpath_list: - if runpath_expanded in original_paths_by_expanded_paths: - # logging.debug("Found %s", - # original_paths_by_expanded_paths[runpath_expanded]) - return original_paths_by_expanded_paths[runpath_expanded] - - -def ParseDumpOutput(dump_output): - binary_data = {RUNPATH: [], - NEEDED_SONAMES: []} - runpath = [] - rpath = [] - for line in dump_output.splitlines(): - fields = re.split(c.WS_RE, line) - if len(fields) < 3: - continue - if fields[1] == "NEEDED": - binary_data[NEEDED_SONAMES].append(fields[2]) - elif fields[1] == "RUNPATH": - runpath.extend(fields[2].split(":")) - elif fields[1] == "RPATH": - rpath.extend(fields[2].split(":")) - elif fields[1] == "SONAME": - binary_data[SONAME] = fields[2] - if runpath: - binary_data[RUNPATH].extend(runpath) - elif rpath: - binary_data[RUNPATH].extend(rpath) - - # Converting runpath to a tuple, which is a hashable data type and can act as - # a key in a dict. - binary_data[RUNPATH] = tuple(binary_data[RUNPATH]) - # the NEEDED list must not be modified, converting to a tuple. - binary_data[NEEDED_SONAMES] = tuple(binary_data[NEEDED_SONAMES]) - binary_data["RUNPATH RPATH the same"] = (runpath == rpath) - binary_data["RPATH set"] = bool(rpath) - binary_data["RUNPATH set"] = bool(runpath) - return binary_data - - -class CheckpkgManagerBase(object): - """Common functions between the older and newer calling functions.""" - - def __init__(self, name, stats_basedir, md5sum_list, debug=False): - self.debug = debug - self.name = name - self.md5sum_list = md5sum_list - self.stats_basedir = stats_basedir - self.errors = [] - self.individual_checks = [] - self.set_checks = [] - self.packages = [] - - def GetPackageStatsList(self): - return [package_stats.PackageStats(None, self.stats_basedir, x) - for x in self.md5sum_list] - - def FormatReports(self, errors, messages, gar_lines): - namespace = { - "name": self.name, - "errors": errors, - "debug": self.debug, - "textwrap": textwrap, - "messages": messages, - "gar_lines": gar_lines, - } - screen_t = Template.Template(SCREEN_ERROR_REPORT_TMPL, searchList=[namespace]) - tags_report_t = Template.Template(TAG_REPORT_TMPL, searchList=[namespace]) - return screen_t, tags_report_t - - def SetErrorsToDict(self, set_errors, a_dict): - # These were generated by a set, but are likely to be bound to specific - # packages. We'll try to preserve the package assignments. - errors = copy.copy(a_dict) - for tag in set_errors: - if tag.pkgname: - if not tag.pkgname in errors: - errors[tag.pkgname] = [] - errors[tag.pkgname].append(tag) - else: - if "package-set" not in errors: - errors["package-set"] = [] - errors["package-set"].append(tag) - return errors - - def GetOptimizedAllStats(self, stats_obj_list): - logging.info("Unwrapping candies...") - pkgs_data = [] - counter = itertools.count() - length = len(stats_obj_list) - bar = progressbar.ProgressBar() - bar.maxval = length - bar.start() - for stats_obj in stats_obj_list: - # pkg_data = {} - # This bit is tightly tied to the data structures returned by - # PackageStats. - # - # Python strings are already implementing the flyweight pattern. What's - # left is lists and dictionaries. - i = counter.next() - # logging.debug("Loading stats for %s (%s/%s)", - # stats_obj.md5sum, i, length) - raw_pkg_data = stats_obj.GetAllStats() - pkg_data = raw_pkg_data - pkgs_data.append(pkg_data) - bar.update(i) - bar.finish() - return pkgs_data - - def Run(self): - """Runs all the checks - - Returns a tuple of an exit code and a report. - """ - packages_data = self.GetPackageStatsList() - db_stat_objs_by_pkgname = {} - obj_id_list = [] - for pkg in packages_data: - db_obj = pkg.GetDbObject() - db_stat_objs_by_pkgname[db_obj.pkginst.pkgname] = db_obj - obj_id_list.append(db_obj.id) - logging.debug("Deleting old %s errors from the database.", - db_obj.pkginst.pkgname) - conn = sqlobject.sqlhub.processConnection - # It's the maximum number of ORs in a SQL statement. - # Slicing the long list up into s-sized segments. 1000 is too much. - obj_id_lists = SliceList(obj_id_list, 900) - for obj_id_list in obj_id_lists: - # WARNING: This is raw SQL, potentially breaking during a transition to - # another db. It's here for efficiency. - sql = ("DELETE FROM checkpkg_error_tag WHERE %s;" - % " OR ".join("srv4_file_id = %s" % x for x in obj_id_list)) - conn.query(sql) - # Need to construct the predicate by hand. Otherwise: - # File "/opt/csw/lib/python/site-packages/sqlobject/sqlbuilder.py", - # line 829, in OR - # return SQLOp("OR", op1, OR(*ops)) - # RuntimeError: maximum recursion depth exceeded while calling a Python object - # - # The following also tries to use recursion and fails. - # delete_predicate = sqlobject.OR(False) - # for pred in delete_predicate_list: - # delete_predicate = sqlobject.OR(delete_predicate, pred) - # conn.query( - # conn.sqlrepr(sqlbuilder.Delete(m.CheckpkgErrorTag.sqlmeta.table, - # delete_predicate - # ))) - # res = m.CheckpkgErrorTag.select(m.CheckpkgErrorTag.q.srv4_file==db_obj) - # for obj in res: - # obj.destroySelf() - errors, messages, gar_lines = self.GetAllTags(packages_data) - no_errors = len(errors) + 1 - bar = progressbar.ProgressBar() - bar.maxval = no_errors - count = itertools.count(1) - logging.info("Stuffing the candies under the pillow...") - bar.start() - for pkgname, es in errors.iteritems(): - logging.debug("Saving %s errors to the database.", pkgname) - for e in es: - db_error = m.CheckpkgErrorTag(srv4_file=db_stat_objs_by_pkgname[e.pkgname], - pkgname=e.pkgname, - tag_name=e.tag_name, - tag_info=e.tag_info, - msg=e.msg) - bar.update(count.next()) - bar.finish() - flat_error_list = reduce(operator.add, errors.values(), []) - screen_report, tags_report = self.FormatReports(errors, messages, gar_lines) - exit_code = 0 - return (exit_code, screen_report, tags_report) - - -class CheckInterfaceBase(object): - """Proxies interaction with checking functions. - - It wraps access to the /var/sadm/install/contents cache. - """ - - def __init__(self, system_pkgmap=None, lines_dict=None): - self.system_pkgmap = system_pkgmap - if not self.system_pkgmap: - self.system_pkgmap = SystemPkgmap() - self.common_paths = {} - if lines_dict: - self.lines_dict = lines_dict - else: - self.lines_dict = {} - - def GetPathsAndPkgnamesByBasename(self, basename): - """Proxies calls to self.system_pkgmap.""" - return self.system_pkgmap.GetPathsAndPkgnamesByBasename(basename) - - def GetPkgByPath(self, path): - """Proxies calls to self.system_pkgmap.""" - return self.system_pkgmap.GetPkgByPath(path) - - def GetInstalledPackages(self, initialize=True): - return self.system_pkgmap.GetInstalledPackages(initialize) - - def _GetPathsForArch(self, arch): - if not arch in self.lines_dict: - file_name = os.path.join( - os.path.dirname(__file__), "..", "..", "etc", "commondirs-%s" % arch) - logging.debug("opening %s", file_name) - f = open(file_name, "r") - self.lines_dict[arch] = f.read().splitlines() - f.close() - return self.lines_dict[arch] - - def GetCommonPaths(self, arch): - """Returns a list of paths for architecture, from gar/etc/commondirs*.""" - # TODO: If this was cached, it could save a significant amount of time. - if arch not in ('i386', 'sparc', 'all'): - logging.warn("Wrong arch: %s", repr(arch)) - return [] - if arch == 'all': - archs = ('i386', 'sparc') - else: - archs = [arch] - lines = [] - for arch in archs: - lines.extend(self._GetPathsForArch(arch)) - return lines - - -class IndividualCheckInterface(CheckInterfaceBase): - """To be passed to the checking functions. - - Wraps the creation of tag.CheckpkgTag objects. - """ - - def __init__(self, pkgname, system_pkgmap=None): - super(IndividualCheckInterface, self).__init__(system_pkgmap) - self.pkgname = pkgname - self.errors = [] - - def ReportError(self, tag_name, tag_info=None, msg=None): - logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s)", - repr(tag_name), repr(tag_info), repr(msg)) - checkpkg_tag = tag.CheckpkgTag(self.pkgname, tag_name, tag_info, msg=msg) - self.errors.append(checkpkg_tag) - - -class SetCheckInterface(CheckInterfaceBase): - """To be passed to set checking functions.""" - - def __init__(self, system_pkgmap=None): - super(SetCheckInterface, self).__init__(system_pkgmap) - self.errors = [] - - def ReportError(self, pkgname, tag_name, tag_info=None, msg=None): - logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s, %s)", - repr(pkgname), - repr(tag_name), repr(tag_info), repr(msg)) - checkpkg_tag = tag.CheckpkgTag(pkgname, tag_name, tag_info, msg=msg) - self.errors.append(checkpkg_tag) - - -class CheckpkgMessenger(object): - """Class responsible for passing messages from checks to the user.""" - def __init__(self): - self.messages = [] - self.one_time_messages = {} - self.gar_lines = [] - - def Message(self, m): - logging.debug("self.messenger.Message(%s)", repr(m)) - self.messages.append(m) - - def OneTimeMessage(self, key, m): - logging.debug("self.messenger.OneTimeMessage(%s, %s)", repr(key), repr(m)) - if key not in self.one_time_messages: - self.one_time_messages[key] = m - - def SuggestGarLine(self, m): - logging.debug("self.messenger.SuggestGarLine(%s)", repr(m)) - self.gar_lines.append(m) - - -class CheckpkgManager2(CheckpkgManagerBase): - """The second incarnation of the checkpkg manager. - - Implements the API to be used by checking functions. - - Its purpose is to reduce the amount of boilerplate code and allow for easier - unit test writing. - """ - def _RegisterIndividualCheck(self, function): - self.individual_checks.append(function) - - def _RegisterSetCheck(self, function): - self.set_checks.append(function) - - def _AutoregisterChecks(self): - """Autodetects all defined checks.""" - logging.debug("CheckpkgManager2._AutoregisterChecks()") - checkpkg_module = package_checks - members = dir(checkpkg_module) - for member_name in members: - logging.debug("Examining module member: %s", repr(member_name)) - member = getattr(checkpkg_module, member_name) - if callable(member): - if member_name.startswith("Check"): - logging.debug("Registering individual check %s", repr(member_name)) - self._RegisterIndividualCheck(member) - elif member_name.startswith("SetCheck"): - logging.debug("Registering set check %s", repr(member_name)) - self._RegisterSetCheck(member) - - def GetAllTags(self, stats_obj_list): - errors = {} - pkgmap = SystemPkgmap() - logging.debug("Loading all package statistics.") - pkgs_data = self.GetOptimizedAllStats(stats_obj_list) - logging.debug("All package statistics loaded.") - messenger = CheckpkgMessenger() - # Individual checks - count = itertools.count() - bar = progressbar.ProgressBar() - bar.maxval = len(pkgs_data) * len(self.individual_checks) - logging.info("Tasting candies one by one...") - bar.start() - for pkg_data in pkgs_data: - pkgname = pkg_data["basic_stats"]["pkgname"] - check_interface = IndividualCheckInterface(pkgname, pkgmap) - for function in self.individual_checks: - logger = logging.getLogger("%s-%s" % (pkgname, function.__name__)) - logger.debug("Calling %s", function.__name__) - function(pkg_data, check_interface, logger=logger, messenger=messenger) - if check_interface.errors: - errors[pkgname] = check_interface.errors - bar.update(count.next()) - bar.finish() - # Set checks - logging.info("Tasting them all at once...") - for function in self.set_checks: - logger = logging.getLogger(function.__name__) - check_interface = SetCheckInterface(pkgmap) - logger.debug("Calling %s", function.__name__) - function(pkgs_data, check_interface, logger=logger, messenger=messenger) - if check_interface.errors: - errors = self.SetErrorsToDict(check_interface.errors, errors) - messages = messenger.messages + messenger.one_time_messages.values() - return errors, messages, messenger.gar_lines - - def Run(self): - self._AutoregisterChecks() - return super(CheckpkgManager2, self).Run() - - -def GetIsalist(): - args = ["isalist"] - isalist_proc = subprocess.Popen(args, stdout=subprocess.PIPE) - stdout, stderr = isalist_proc.communicate() - ret = isalist_proc.wait() - if ret: - logging.error("Calling isalist has failed.") - isalist = re.split(r"\s+", stdout.strip()) - return tuple(isalist) - - -def ErrorTagsFromFile(file_name): - fd = open(file_name) - error_tags = [] - for line in fd: - if line.startswith("#"): - continue - pkgname, tag_name, tag_info = tag.ParseTagLine(line) - error_tags.append(tag.CheckpkgTag(pkgname, tag_name, tag_info)) - return error_tags - - -def SliceList(l, size): - """Trasforms a list into a list of lists.""" - idxes = xrange(0, len(l), size) - sliced = [l[i:i+size] for i in idxes] - return sliced - def IsMd5(s): # For optimization, move the compilation elsewhere. - md5_re = re.compile(MD5_RE) - return md5_re.match(s) + return MD5_RE.match(s) def GetPackageStatsByFilenamesOrMd5s(args, debug=False): filenames = [] @@ -1059,15 +128,15 @@ filenames.append(arg) srv4_pkgs = [inspective_package.InspectiveCswSrv4File(x) for x in filenames] pkgstat_objs = [] - bar = progressbar.ProgressBar() - bar.maxval = len(md5s) + len(srv4_pkgs) - bar.start() + pbar = progressbar.ProgressBar() + pbar.maxval = len(md5s) + len(srv4_pkgs) + pbar.start() counter = itertools.count() for pkg in srv4_pkgs: pkgstat_objs.append(package_stats.PackageStats(pkg, debug=debug)) - bar.update(counter.next()) + pbar.update(counter.next()) for md5 in md5s: pkgstat_objs.append(package_stats.PackageStats(None, md5sum=md5, debug=debug)) - bar.update(counter.next()) - bar.finish() + pbar.update(counter.next()) + pbar.finish() return pkgstat_objs Added: csw/mgar/gar/v2/lib/python/checkpkg2.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg2.py (rev 0) +++ csw/mgar/gar/v2/lib/python/checkpkg2.py 2010-12-10 16:48:58 UTC (rev 11879) @@ -0,0 +1,178 @@ +#!/usr/bin/env python2.6 +# +# checkpkg +# + +import logging +import operator +import optparse +import os +import sys +import textwrap +import configuration +import datetime +import database + +import package_stats +import checkpkg +import checkpkg_lib +import overrides +import models +import sqlobject + +USAGE = """%prog [ options ] pkg1 [ pkg2 [ ... ] ]""" +CHECKPKG_MODULE_NAME = "The main checking module." +BEFORE_OVERRIDES = """If any of the reported errors were false positives, you +can override them pasting the lines below to the GAR recipe.""" + +AFTER_OVERRIDES = """Please note that checkpkg isn't suggesting you should +simply add these overrides do the Makefile. It only informs what the overrides +could look like. You need to understand what are the reported issues about and +use your best judgement to decide whether to fix the underlying problems or +override them. For more information, scroll up and read the detailed +messages.""" + +UNAPPLIED_OVERRIDES = """WARNING: Some overrides did not match any errors. +They can be removed, as they don't take any effect anyway. If you're getting +errors at the same time, maybe you didn't specify the overrides correctly.""" + + +class Error(Exception): + """Generic error.""" + + +class UsageError(Error): + """Problem with usage, e.g. command line options.""" + + +def main(): + configuration.SetUpSqlobjectConnection() + parser = optparse.OptionParser(USAGE) + parser.add_option("-d", "--debug", + dest="debug", + action="store_true", + default=False, + help="Switch on debugging messages") + parser.add_option("-q", "--quiet", + dest="quiet", + action="store_true", + default=False, + help="Display less messages") + parser.add_option("--catalog-release", + dest="catrel", + default="unstable", + help="A catalog release: experimental, unstable, testing, stable.") + parser.add_option("-r", "--os-releases", + dest="osrel_commas", + help=("Comma separated list of ['SunOS5.9', 'SunOS5.10'], " + "e.g. 'SunOS5.9,SunOS5.10'.")) + parser.add_option("-a", "--architecture", + dest="arch", + help="Architecture: i386, sparc.") + parser.add_option("--profile", dest="profile", + default=False, action="store_true", + help="Enable profiling (a developer option).") + options, args = parser.parse_args() + assert len(args), "The list of files or md5 sums must be not empty." + logging_level = logging.INFO + if options.quiet: + logging_level = logging.WARNING + elif options.debug: + # If both flags are set, debug wins. + logging_level = logging.DEBUG + logging.basicConfig(level=logging_level) + logging.debug("Starting.") + + dm = database.DatabaseManager() + dm.AutoManage() + + + err_msg_list = [] + if not options.osrel_commas: + err_msg_list.append("Please specify --os-releases.") + if not options.arch: + err_msg_list.append("Please specify --architecture.") + if err_msg_list: + raise UsageError(" ".join(err_msg_list)) + + stats_list = [] + collector = package_stats.StatsCollector( + logger=logging, + debug=options.debug) + # We need to separate files and md5 sums. + md5_sums, file_list = [], [] + for arg in args: + if checkpkg.MD5_RE.match(arg): + md5_sums.append(arg) + else: + file_list.append(arg) + if file_list: + stats_list = collector.CollectStatsFromFiles(file_list, None) + # We need the md5 sums of these files + md5_sums.extend([x["basic_stats"]["md5_sum"] for x in stats_list]) + assert md5_sums, "The list of md5 sums must not be empty." + logging.debug("md5_sums: %s", md5_sums) + osrel_list = options.osrel_commas.split(",") + logging.debug("Reading packages data from the database.") + # This part might need improvements in order to handle a whole + # catalog. On the other hand, if we already have the whole catalog in + # the database, we can do it altogether differently. + # Transforming the result to a list in order to force object + # retrieval. + sqo_pkgs = list(models.Srv4FileStats.select( + sqlobject.IN(models.Srv4FileStats.q.md5_sum, md5_sums))) + tags_for_all_osrels = [] + sqo_arch = models.Architecture.selectBy(name=options.arch).getOne() + sqo_catrel = models.CatalogRelease.selectBy(name=options.catrel).getOne() + for osrel in osrel_list: + sqo_osrel = models.OsRelease.selectBy(short_name=osrel).getOne() + check_manager = checkpkg_lib.CheckpkgManager2( + CHECKPKG_MODULE_NAME, + sqo_pkgs, + osrel, + options.arch, + options.catrel, + debug=options.debug, + show_progress=(not options.quiet)) + # Running the checks, reporting and exiting. + exit_code, screen_report, tags_report = check_manager.Run() + screen_report = unicode(screen_report) + if not options.quiet and screen_report: + # TODO: Write this to screen only after overrides are applied. + sys.stdout.write(screen_report) + else: + logging.debug("No screen report.") + + overrides_list = [list(pkg.GetOverridesResult()) for pkg in sqo_pkgs] + override_list = reduce(operator.add, overrides_list) + args = (sqo_osrel, sqo_arch, sqo_catrel) + tag_lists = [list(pkg.GetErrorTagsResult(*args)) for pkg in sqo_pkgs] + error_tags = reduce(operator.add, tag_lists) + # TODO: Set the 'overriden' tag for specific error tags + (tags_after_overrides, + unapplied_overrides) = overrides.ApplyOverrides(error_tags, override_list) + tags_for_all_osrels.extend(tags_after_overrides) + if not options.quiet: + if tags_after_overrides: + print textwrap.fill(BEFORE_OVERRIDES, 80) + for checkpkg_tag in tags_after_overrides: + print checkpkg_tag.ToGarSyntax() + print textwrap.fill(AFTER_OVERRIDES, 80) + if unapplied_overrides: + print textwrap.fill(UNAPPLIED_OVERRIDES, 80) + for override in unapplied_overrides: + print "* Unused %s" % override + exit_code = bool(tags_for_all_osrels) + sys.exit(exit_code) + + +if __name__ == '__main__': + if "--profile" in sys.argv: + import cProfile + t_str = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") + home = os.environ["HOME"] + cprof_file_name = os.path.join( + home, ".checkpkg", "run-modules-%s.cprof" % t_str) + cProfile.run("main()", sort=1, filename=cprof_file_name) + else: + main() Property changes on: csw/mgar/gar/v2/lib/python/checkpkg2.py ___________________________________________________________________ Added: svn:executable + * Added: csw/mgar/gar/v2/lib/python/checkpkg_lib.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_lib.py (rev 0) +++ csw/mgar/gar/v2/lib/python/checkpkg_lib.py 2010-12-10 16:48:58 UTC (rev 11879) @@ -0,0 +1,600 @@ +# A collection of checkpkg-specific classes. +# +# This file is supposed to drain the checkpkg.py file until is becomes +# empty and goes away. + +import copy +from Cheetah import Template +import logging +import package_stats +import package_checks +import sqlobject +import itertools +import progressbar +import database +import models as m +import textwrap +import os.path +import tag +import pprint +import operator +import common_constants +import sharedlib_utils +import mute_progressbar +import cPickle + + +class Error(Exception): + pass + + +class CatalogDatabaseError(Error): + pass + + +SCREEN_ERROR_REPORT_TMPL = u"""#if $errors +#if $debug +ERROR: One or more errors have been found by $name. +#end if +#for $pkgname in $errors +$pkgname: +#for $error in $errors[$pkgname] +#if $debug + $repr($error) +#elif $error.msg +$textwrap.fill($error.msg, 78, initial_indent="# ", subsequent_indent="# ") +# -> $repr($error) + +#end if +#end for +#end for +#else +#if $debug +OK: $repr($name) module found no problems. +#end if +#end if +#if $messages +#for $msg in $messages +$textwrap.fill($msg, 78, initial_indent=" * ", subsequent_indent=" ") +#end for +#end if +#if $gar_lines + +# Checkpkg suggests adding the following lines to the GAR recipe: +# This is a summary; see above for details. +#for $line in $gar_lines +$line +#end for +#end if +""" + +# http://www.cheetahtemplate.org/docs/users_guide_html_multipage/language.directives.closures.html +TAG_REPORT_TMPL = u"""#if $errors +# Tags reported by $name module +#for $pkgname in $errors +#for $tag in $errors[$pkgname] +#if $tag.msg +$textwrap.fill($tag.msg, 70, initial_indent="# ", subsequent_indent="# ") +#end if +$pkgname: ${tag.tag_name}#if $tag.tag_info# $tag.tag_info#end if# +#end for +#end for +#end if +""" + + +class SqlobjectHelperMixin(object): + + def GetSqlobjectTriad(self, osrel, arch, catrel): + logging.debug("GetSqlobjectTriad(%s, %s, %s)", osrel, arch, catrel) + sqo_arch = m.Architecture.select( + m.Architecture.q.name==arch).getOne() + sqo_osrel = m.OsRelease.select( + m.OsRelease.q.short_name==osrel).getOne() + sqo_catrel = m.CatalogRelease.select( + m.CatalogRelease.q.name==catrel).getOne() + return sqo_osrel, sqo_arch, sqo_catrel + + +class CheckpkgManagerBase(SqlobjectHelperMixin): + """Common functions between the older and newer calling functions.""" + + def __init__(self, name, sqo_pkgs_list, osrel, arch, catrel, debug=False, + show_progress=False): + self.debug = debug + self.name = name + self.sqo_pkgs_list = sqo_pkgs_list + self.errors = [] + self.individual_checks = [] + self.set_checks = [] + self.packages = [] + self.osrel = osrel + self.arch = arch + self.catrel = catrel + self.show_progress = show_progress + + def GetProgressBar(self): + if self.show_progress: + return progressbar.ProgressBar() + else: + return mute_progressbar.MuteProgressBar() + + def GetSqlobjectTriad(self): + return super(CheckpkgManagerBase, self).GetSqlobjectTriad( + self.osrel, self.arch, self.catrel) + + def GetPackageStatsList(self): + raise RuntimeError("Please don't use this function as it violates " + "the Law of Demeter.") + + def FormatReports(self, errors, messages, gar_lines): + namespace = { + "name": self.name, + "errors": errors, + "debug": self.debug, + "textwrap": textwrap, + "messages": messages, + "gar_lines": gar_lines, + } + screen_t = Template.Template(SCREEN_ERROR_REPORT_TMPL, searchList=[namespace]) + tags_report_t = Template.Template(TAG_REPORT_TMPL, searchList=[namespace]) + return screen_t, tags_report_t + + def SetErrorsToDict(self, set_errors, a_dict): + # These were generated by a set, but are likely to be bound to specific + # packages. We'll try to preserve the package assignments. + errors = copy.copy(a_dict) + for tag in set_errors: + if tag.pkgname: + if not tag.pkgname in errors: + errors[tag.pkgname] = [] + errors[tag.pkgname].append(tag) + else: + if "package-set" not in errors: + errors["package-set"] = [] + errors["package-set"].append(tag) + return errors + + def GetOptimizedAllStats(self, stats_obj_list): + logging.info("Unwrapping candies...") + pkgs_data = [] + counter = itertools.count() + length = len(stats_obj_list) + pbar = self.GetProgressBar() + pbar.maxval = length + pbar.start() + for stats_obj in stats_obj_list: + # This bit is tightly tied to the data structures returned by + # PackageStats. + # + # Python strings are already implementing the flyweight pattern. What's + # left is lists and dictionaries. + i = counter.next() + raw_pkg_data = cPickle.loads(stats_obj.data_obj.pickle) + pkg_data = raw_pkg_data + pkgs_data.append(pkg_data) + pbar.update(i) + pbar.finish() + return pkgs_data + + def Run(self): + """Runs all the checks + + Returns a tuple of an exit code and a report. + """ + # packages_data = self.GetPackageStatsList() + assert self.sqo_pkgs_list, "The list of packages must not be empty." + db_stat_objs_by_pkgname = {} + for pkg in self.sqo_pkgs_list: + db_stat_objs_by_pkgname[pkg.pkginst.pkgname] = pkg + logging.debug("Deleting old errors from the database.") + for pkgname, db_obj in db_stat_objs_by_pkgname.iteritems(): + sqo_os_rel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad() + db_obj.RemoveCheckpkgResults( + sqo_os_rel, sqo_arch, sqo_catrel) + errors, messages, gar_lines = self.GetAllTags(self.sqo_pkgs_list) + no_errors = len(errors) + 1 + pbar = self.GetProgressBar() + pbar.maxval = no_errors + count = itertools.count(1) + logging.info("Stuffing the candies under the pillow...") + pbar.start() + for pkgname, es in errors.iteritems(): + logging.debug("Saving errors of %s to the database.", pkgname) + for e in es: + if e.pkgname not in db_stat_objs_by_pkgname: + logging.warning("Not saving an error for %s.", e.pkgname) + continue + db_error = m.CheckpkgErrorTag(srv4_file=db_stat_objs_by_pkgname[e.pkgname], + pkgname=e.pkgname, + tag_name=e.tag_name, + tag_info=e.tag_info, + msg=e.msg, + os_rel=sqo_os_rel, + catrel=sqo_catrel, + arch=sqo_arch) + pbar.update(count.next()) + pbar.finish() + flat_error_list = reduce(operator.add, errors.values(), []) + screen_report, tags_report = self.FormatReports(errors, messages, gar_lines) + exit_code = 0 + return (exit_code, screen_report, tags_report) + + +class CheckInterfaceBase(object): + """Provides an interface for checking functions. + + It wraps access to the catalog database. + """ + + def __init__(self, osrel, arch, catrel, catalog=None, lines_dict=None): + self.osrel = osrel + self.arch = arch + self.catrel = catrel + self.catalog = catalog + if not self.catalog: + self.catalog = Catalog() + self.common_paths = {} + if lines_dict: + self.lines_dict = lines_dict + else: + self.lines_dict = {} + + def GetPathsAndPkgnamesByBasename(self, basename): + """Proxies calls to class member.""" + return self.catalog.GetPathsAndPkgnamesByBasename( + basename, self.osrel, self.arch, self.catrel) + + def GetPkgByPath(self, file_path): + """Proxies calls to self.system_pkgmap.""" + return self.catalog.GetPkgByPath( + file_path, self.osrel, self.arch, self.catrel) + + def GetInstalledPackages(self): + return self.catalog.GetInstalledPackages( + self.osrel, self.arch, self.catrel) + + def _GetPathsForArch(self, arch): + if not arch in self.lines_dict: + file_name = os.path.join( + os.path.dirname(__file__), "..", "..", "etc", "commondirs-%s" % arch) + logging.debug("opening %s", file_name) + f = open(file_name, "r") + self.lines_dict[arch] = f.read().splitlines() + f.close() + return self.lines_dict[arch] + + def GetCommonPaths(self, arch): + """Returns a list of paths for architecture, from gar/etc/commondirs*.""" + # TODO: If this was cached, it could save a significant amount of time. + if arch not in ('i386', 'sparc', 'all'): + logging.warn("Wrong arch: %s", repr(arch)) + return [] + if arch == 'all': + archs = ('i386', 'sparc') + else: + archs = [arch] + lines = [] + for arch in archs: + lines.extend(self._GetPathsForArch(arch)) + return lines + + +class IndividualCheckInterface(CheckInterfaceBase): + """To be passed to the checking functions. + + Wraps the creation of tag.CheckpkgTag objects. + """ + + def __init__(self, pkgname, osrel, arch, catrel, catalog=None): + super(IndividualCheckInterface, self).__init__(osrel, arch, catrel, catalog) + self.pkgname = pkgname + self.errors = [] + + def ReportError(self, tag_name, tag_info=None, msg=None): + logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s)", + repr(tag_name), repr(tag_info), repr(msg)) + checkpkg_tag = tag.CheckpkgTag(self.pkgname, tag_name, tag_info, msg=msg) + self.errors.append(checkpkg_tag) + + +class SetCheckInterface(CheckInterfaceBase): + """To be passed to set checking functions.""" + + def __init__(self, osrel, arch, catrel, catalog=None): + super(SetCheckInterface, self).__init__(osrel, arch, catrel, catalog) + self.errors = [] + + def ReportError(self, pkgname, tag_name, tag_info=None, msg=None): + logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s, %s)", + repr(pkgname), + repr(tag_name), repr(tag_info), repr(msg)) + checkpkg_tag = tag.CheckpkgTag(pkgname, tag_name, tag_info, msg=msg) + self.errors.append(checkpkg_tag) + + +class CheckpkgMessenger(object): + """Class responsible for passing messages from checks to the user.""" + def __init__(self): + self.messages = [] + self.one_time_messages = {} + self.gar_lines = [] + + def Message(self, m): + logging.debug("self.messenger.Message(%s)", repr(m)) + self.messages.append(m) + + def OneTimeMessage(self, key, m): + logging.debug("self.messenger.OneTimeMessage(%s, %s)", repr(key), repr(m)) + if key not in self.one_time_messages: + self.one_time_messages[key] = m + + def SuggestGarLine(self, m): + logging.debug("self.messenger.SuggestGarLine(%s)", repr(m)) + self.gar_lines.append(m) + + +class CheckpkgManager2(CheckpkgManagerBase): + """The second incarnation of the checkpkg manager. + + Implements the API to be used by checking functions. + + Its purpose is to reduce the amount of boilerplate code and allow for easier + unit test writing. + """ + def _RegisterIndividualCheck(self, function): + self.individual_checks.append(function) + + def _RegisterSetCheck(self, function): + self.set_checks.append(function) + + def _AutoregisterChecks(self): + """Autodetects all defined checks.""" + logging.debug("CheckpkgManager2._AutoregisterChecks()") + checkpkg_module = package_checks + members = dir(checkpkg_module) + for member_name in members: + logging.debug("Examining module member: %s", repr(member_name)) + member = getattr(checkpkg_module, member_name) + if callable(member): + if member_name.startswith("Check"): + logging.debug("Registering individual check %s", repr(member_name)) + self._RegisterIndividualCheck(member) + elif member_name.startswith("SetCheck"): + logging.debug("Registering set check %s", repr(member_name)) + self._RegisterSetCheck(member) + + def GetAllTags(self, stats_obj_list): + errors = {} + catalog = Catalog() + logging.debug("Loading all package statistics.") + pkgs_data = self.GetOptimizedAllStats(stats_obj_list) + logging.debug("All package statistics loaded.") + messenger = CheckpkgMessenger() + # Individual checks + count = itertools.count() + pbar = self.GetProgressBar() + pbar.maxval = len(pkgs_data) * len(self.individual_checks) + logging.info("Tasting candies one by one...") + pbar.start() + for pkg_data in pkgs_data: + pkgname = pkg_data["basic_stats"]["pkgname"] + check_interface = IndividualCheckInterface( + pkgname, self.osrel, self.arch, self.catrel, catalog) + for function in self.individual_checks: + logger = logging.getLogger("%s-%s" % (pkgname, function.__name__)) + logger.debug("Calling %s", function.__name__) + function(pkg_data, check_interface, logger=logger, messenger=messenger) + if check_interface.errors: + errors[pkgname] = check_interface.errors + pbar.update(count.next()) + pbar.finish() + # Set checks + logging.info("Tasting them all at once...") + for function in self.set_checks: + logger = logging.getLogger(function.__name__) + check_interface = SetCheckInterface( + self.osrel, self.arch, self.catrel, catalog) + logger.debug("Calling %s", function.__name__) + function(pkgs_data, check_interface, logger=logger, messenger=messenger) + if check_interface.errors: + errors = self.SetErrorsToDict(check_interface.errors, errors) + messages = messenger.messages + messenger.one_time_messages.values() + return errors, messages, messenger.gar_lines + + def Run(self): + self._AutoregisterChecks() + return super(CheckpkgManager2, self).Run() + + +def SliceList(l, size): + """Trasforms a list into a list of lists.""" + idxes = xrange(0, len(l), size) + sliced = [l[i:i+size] for i in idxes] + return sliced + + +class CatalogMixin(SqlobjectHelperMixin): + """Responsible for functionality related to catalog operations. + + These include: + - getting a list of all packages + - getting a list of packages that contain certain files + - getting a list of packages that contain files of certain names + """ + + def __init__(self): + super(CatalogMixin, self).__init__() + self.pkgs_by_path_cache = {} + + def GetInstalledPackages(self, osrel, arch, catrel): + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + res = m.Srv4FileInCatalog.select( + sqlobject.AND( + m.Srv4FileInCatalog.q.osrel==sqo_osrel, + m.Srv4FileInCatalog.q.arch==sqo_arch, + m.Srv4FileInCatalog.q.catrel==sqo_catrel)) + pkgs = [] + for srv4_in_cat in res: + pkgs.append(srv4_in_cat.srv4file.pkginst.pkgname) + return pkgs + + def GetPathsAndPkgnamesByBasename(self, basename, osrel, arch, catrel): + """Retrieves pkginst names of packages that have certain files. + + Since it needs to match a specific catalog, a table join is required: + - CswFile (basename) + - related Srv4FileStats + - related Srv4FileInCatalog + + Args: + basename: u'libfoo.so.1' + osrel: u'5.9' + arch: 'sparc', 'x86' + catrel: 'stable' + + Returns: + {"/opt/csw/lib": ["CSWfoo", "CSWbar"], + "/opt/csw/1/lib": ["CSWfoomore"]} + """ + pkgs = {} + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + + # Looks like this join is hard to do that way. + # res = m.Srv4FileInCatalog.select( + # sqlobject.AND( + # m.Srv4FileInCatalog.q.osrel==sqo_osrel, + # m.Srv4FileInCatalog.q.arch==sqo_arch, + # m.Srv4FileInCatalog.q.catrel==sqo_catrel)). + # throughTo.srv4file.thoughTo.files + + # We'll implement it on the application level. First, we'll get all + # the files that match the basename, and then filter them based on + # catalog properties. + res = m.CswFile.select(m.CswFile.q.basename==basename) + file_list = [] + for f in res: + # Check whether osrel, arch and catrel are matching. + for cat in f.srv4_file.in_catalogs: + if (f.srv4_file.registered + and cat.osrel == sqo_osrel + and cat.arch == sqo_arch + and cat.catrel == sqo_catrel): + file_list.append(f) + for obj in file_list: + pkgs.setdefault(obj.path, []) + pkgs[obj.path].append(obj.pkginst.pkgname) + logging.debug("self.error_mgr_mock.GetPathsAndPkgnamesByBasename(%s)" + ".AndReturn(%s)", repr(basename), pprint.pformat(pkgs)) + return pkgs + + def GetPkgByPath(self, full_file_path, osrel, arch, catrel): + """Returns a list of packages.""" + # Memoization for performance + key = (full_file_path, osrel, arch, catrel) + if key not in self.pkgs_by_path_cache: + pkgs = [] + file_path, basename = os.path.split(full_file_path) + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + res = m.CswFile.select( + sqlobject.AND( + m.CswFile.q.path==file_path, + m.CswFile.q.basename==basename)) + for sqo_file in res: + # Making sure that we're taking packages only from the right catalog. + for cat in sqo_file.srv4_file.in_catalogs: + if (sqo_file.srv4_file.registered + and cat.osrel == sqo_osrel + and cat.arch == sqo_arch + and cat.catrel == sqo_catrel): + pkgs.append(sqo_file.srv4_file.pkginst.pkgname) + self.pkgs_by_path_cache[key] = frozenset(pkgs) + return self.pkgs_by_path_cache[key] + + def CommonArchByString(self, s): + return sharedlib_utils.ArchByString(s) + + def Srv4MatchesCatalog(self, sqo_srv4, sqo_arch): + cat_arch = self.CommonArchByString(sqo_arch.name) + pkg_arch = self.CommonArchByString(sqo_srv4.arch.name) + ans = (cat_arch == pkg_arch) or (pkg_arch == common_constants.ARCH_ALL) + if not ans: + logging.debug("Srv4MatchesCatalog(): mismatch: %s / %s and %s / %s", + cat_arch, pkg_arch, pkg_arch, common_constants.ARCH_ALL) + # Some packages have the architecture in the file saying 'all', but pkginfo + # says 'i386'. + filename_arch = self.CommonArchByString(sqo_srv4.filename_arch.name) + if filename_arch == common_constants.ARCH_ALL: + ans = True + if filename_arch != pkg_arch: + logging.warning( + "Package %s declares %s in pkginfo and %s in the filename.", + sqo_srv4, repr(pkg_arch), repr(filename_arch)) + return ans + + def AddSrv4ToCatalog(self, sqo_srv4, osrel, arch, catrel): + """Registers a srv4 file in a catalog.""" + logging.debug("AddSrv4ToCatalog(%s, %s, %s, %s)", + sqo_srv4, osrel, arch, catrel) + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + if not self.Srv4MatchesCatalog(sqo_srv4, sqo_arch): + raise CatalogDatabaseError( + "Specified package does not match the catalog. " + "Package: %s, catalog: %s %s %s" + % (sqo_srv4, osrel, arch, catrel)) + if not sqo_srv4.registered: + raise CatalogDatabaseError( + "Package %s (%s) is not registered for releases." + % (sqo_srv4.basename, sqo_srv4.md5_sum)) + # Checking for presence of a different srv4 with the same pkginst in the + # same catalog + pkginst = sqo_srv4.pkginst + res = m.Srv4FileStats.select( + m.Srv4FileStats.q.pkginst==pkginst).throughTo.in_catalogs.filter( + sqlobject.AND( + m.Srv4FileInCatalog.q.osrel==sqo_osrel, + m.Srv4FileInCatalog.q.arch==sqo_arch, + m.Srv4FileInCatalog.q.catrel==sqo_catrel, + m.Srv4FileInCatalog.q.srv4file!=sqo_srv4)) + if len(list(res)): + raise CatalogDatabaseError( + "There already is a package with that pkgname: %s" % pkginst) + # Checking for presence of the same srv4 already in the catalog. + res = m.Srv4FileInCatalog.select( + sqlobject.AND( + m.Srv4FileInCatalog.q.osrel==sqo_osrel, + m.Srv4FileInCatalog.q.arch==sqo_arch, + m.Srv4FileInCatalog.q.catrel==sqo_catrel, + m.Srv4FileInCatalog.q.srv4file==sqo_srv4)) + if len(list(res)): + logging.debug("%s is already part of %s %s %s", + sqo_srv4, osrel, arch, catrel) + # Our srv4 is already part of that catalog. + return + obj = m.Srv4FileInCatalog( + arch=sqo_arch, + osrel=sqo_osrel, + catrel=sqo_catrel, + srv4file=sqo_srv4) + + def RemoveSrv4(self, sqo_srv4, osrel, arch, catrel): + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + sqo_srv4_in_cat = m.Srv4FileInCatalog.select( + sqlobject.AND( + m.Srv4FileInCatalog.q.arch==sqo_arch, + m.Srv4FileInCatalog.q.osrel==sqo_osrel, + m.Srv4FileInCatalog.q.catrel==sqo_catrel, + m.Srv4FileInCatalog.q.srv4file==sqo_srv4)).getOne() + sqo_srv4_in_cat.registered = False + # TODO(maciej): Remove all files belonging to that one + for cat_file in sqo_srv4_in_cat.srv4file.files: + cat_file.destroySelf() + + +class Catalog(CatalogMixin): + pass Added: csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py (rev 0) +++ csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py 2010-12-10 16:48:58 UTC (rev 11879) @@ -0,0 +1,74 @@ +#!/usr/bin/env python2.6 + +import copy +import unittest +import checkpkg_lib +import tag +import package_stats +import database +import sqlobject +import models +import package_stats +import inspective_package +import mox +import test_base + +from testdata.neon_stats import pkgstats as neon_stats + + +class CheckpkgManager2UnitTest(unittest.TestCase): + + def setUp(self): + super(CheckpkgManager2UnitTest, self).setUp() + self.mox = mox.Mox() + + def testSingleTag(self): + m = checkpkg_lib.CheckpkgManager2( + "testname", [], "5.9", "sparc", "unstable") + tags = { + "CSWfoo": [ + tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), + ], + } + screen_report, tags_report = m.FormatReports(tags, [], []) + expected = u'# Tags reported by testname module\nCSWfoo: foo-tag foo-info\n' + self.assertEqual(expected, unicode(tags_report)) + + def testThreeTags(self): + m = checkpkg_lib.CheckpkgManager2( + "testname", [], "5.9", "sparc", "unstable") + tags = { + "CSWfoo": [ + tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), + tag.CheckpkgTag("CSWfoo", "bar-tag", "bar-info"), + tag.CheckpkgTag("CSWfoo", "baz-tag"), + ], + } + screen_report, tags_report = m.FormatReports(tags, [], []) + expected = (u'# Tags reported by testname module\n' + u'CSWfoo: foo-tag foo-info\n' + u'CSWfoo: bar-tag bar-info\n' + u'CSWfoo: baz-tag\n') + self.assertEqual(expected, unicode(tags_report)) + + +class CheckpkgManager2DatabaseIntegrationTest( + test_base.SqlObjectTestMixin, unittest.TestCase): + + def setUp(self): + super(CheckpkgManager2DatabaseIntegrationTest, self).setUp() + self.mox = mox.Mox() + + def testInsertNeon(self): + self.dbc.InitialDataImport() + sqo_pkg = package_stats.PackageStats.SaveStats(neon_stats[0], True) + cm = checkpkg_lib.CheckpkgManager2( + "testname", [sqo_pkg], "SunOS5.9", "sparc", "unstable", + show_progress=False) + cm.Run() + # Verifying that there are some reported error tags. + self.assertTrue(list(models.CheckpkgErrorTag.select())) + + +if __name__ == '__main__': + unittest.main() Property changes on: csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py ___________________________________________________________________ Added: svn:executable + * Modified: csw/mgar/gar/v2/lib/python/checkpkg_test.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_test.py 2010-12-10 13:48:16 UTC (rev 11878) +++ csw/mgar/gar/v2/lib/python/checkpkg_test.py 2010-12-10 16:48:58 UTC (rev 11879) @@ -1,16 +1,24 @@ -#!/opt/csw/bin/python2.6 +#!/usr/bin/env python2.6 # $Id$ +import copy import re import unittest import mox import difflib import checkpkg +import checkpkg_lib +import database +import models as m import tag -import testdata.dump_output_1 as dump_1 -import testdata.dump_output_2 as dump_2 -import testdata.dump_output_3 as dump_3 +import package_stats +import sqlite3 +import sqlobject +import test_base +from testdata.tree_stats import pkgstats as tree_stats +from testdata.neon_stats import pkgstats as neon_stats + """A set of unit tests for the library checking code. A bunch of lines to test in the interactive Python shell. @@ -23,250 +31,6 @@ SELECT * FROM systempkgmap WHERE basename = 'libncursesw.so.5'; """ -class GetLinesBySonameUnitTest(unittest.TestCase): - - def setUp(self): - self.pkgmap_mocker = mox.Mox() - self.e = checkpkg.LddEmulator() - - def testExpandRunpath_1(self): - isalist = ["foo", "bar"] - runpath = "/opt/csw/lib/$ISALIST" - expected = ["/opt/csw/lib", "/opt/csw/lib/foo", "/opt/csw/lib/bar"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_2(self): - isalist = ["foo", "bar"] - runpath = "/opt/csw/mysql5/lib/$ISALIST/mysql" - expected = ["/opt/csw/mysql5/lib/mysql", - "/opt/csw/mysql5/lib/foo/mysql", - "/opt/csw/mysql5/lib/bar/mysql"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_OriginSimple(self): - isalist = () - runpath = "$ORIGIN" - expected = ["/opt/csw/lib"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_OriginDots(self): - isalist = () - runpath = "$ORIGIN/.." - expected = ["/opt/csw/lib"] - bin_path = "opt/csw/lib/subdir" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_Caching(self): - """Make sure that the cache doesn't mess it up. - - Two invocations, where the only difference is the binary path. - """ - isalist = () - runpath = "/opt/csw/lib/foo" - expected = ["/opt/csw/lib/foo"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - expected = ["/opt/csw/lib/foo"] - bin_path = "/opt/csw/lib/foo" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_OriginCaching(self): - """Make sure that the cache doesn't mess it up. - - Two invocations, where the only difference is the binary path. - """ - isalist = () - runpath = "$ORIGIN" - expected = ["/opt/csw/lib"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, - self.e.ExpandRunpath(runpath, isalist, bin_path)) - expected = ["/opt/csw/foo/lib"] - bin_path = "/opt/csw/foo/lib" - self.assertEquals(expected, - self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_OnlyIsalist(self): - """Make sure that the cache doesn't mess it up. - - Two invocations, where the only difference is the binary path. - """ - isalist = ("bar",) - runpath = "/opt/csw/lib/$ISALIST" - expected = ["/opt/csw/lib", "/opt/csw/lib/bar"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testEmulate64BitSymlinks_1(self): - runpath_list = ["/opt/csw/mysql5/lib/foo/mysql/64"] - expected = "/opt/csw/mysql5/lib/foo/mysql/amd64" - self.assertTrue(expected in self.e.Emulate64BitSymlinks(runpath_list)) - - def testEmulate64BitSymlinks_2(self): - runpath_list = ["/opt/csw/mysql5/lib/64/mysql/foo"] - expected = "/opt/csw/mysql5/lib/amd64/mysql/foo" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - - def testEmulate64BitSymlinks_3(self): - runpath_list = ["/opt/csw/mysql5/lib/64/mysql/foo"] - expected = "/opt/csw/mysql5/lib/sparcv9/mysql/foo" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - - def testEmulate64BitSymlinks_4(self): - """No repeated paths because of symlink expansion""" - runpath_list = ["/opt/csw/lib"] - expected = "/opt/csw/lib" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertEquals(1, len(result), "len(%s) != %s" % (result, 1)) - - def testEmulateSymlinks_3(self): - runpath_list = ["/opt/csw/bdb4"] - expected = "/opt/csw/bdb42" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - - def testEmulateSymlinks_4(self): - runpath_list = ["/opt/csw/bdb42"] - expected = "/opt/csw/bdb42" - not_expected = "/opt/csw/bdb422" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, - "%s not in %s" % (expected, result)) - self.assertFalse(not_expected in result, - "%s is in %s" % (not_expected, result)) - - def testEmulateSymlinks_5(self): - """Install time symlink expansion.""" - runpath_list = ["/opt/csw/lib/i386"] - expected = "/opt/csw/lib" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - - def testEmulateSymlinks_6(self): - """ExpandSymlink for /opt/csw/lib/i386.""" - runpath_list = ["/opt/csw/lib/i386"] - expected = "/opt/csw/lib" - not_expected = "/opt/csw/lib/i386" - result = self.e.ExpandSymlink("/opt/csw/lib/i386", - "/opt/csw/lib", - "/opt/csw/lib/i386") - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - self.assertFalse(not_expected in result, - "%s is in %s" % (not_expected, result)) - - def testSanitizeRunpath_1(self): - self.assertEqual("/opt/csw/lib", - self.e.SanitizeRunpath("/opt/csw/lib/")) - - def testSanitizeRunpath_2(self): - self.assertEqual("/opt/csw/lib", - self.e.SanitizeRunpath("/opt//csw////lib/")) - - - -class ParseDumpOutputUnitTest(unittest.TestCase): - - def test_1(self): - expected = { - 'RPATH set': True, - 'RUNPATH RPATH the same': True, - 'RUNPATH set': True, - 'needed sonames': ('librt.so.1', - 'libresolv.so.2', - 'libc.so.1', - 'libgen.so.1', - 'libsocket.so.1', - 'libnsl.so.1', - 'libm.so.1', - 'libz.so.1'), - 'runpath': ('/opt/csw/lib/$ISALIST', - '/opt/csw/lib', - '/opt/csw/mysql5/lib/$ISALIST', - '/opt/csw/mysql5/lib', - '/opt/csw/mysql5/lib/$ISALIST/mysql'), - 'soname': 'libmysqlclient.so.15', - } - self.assertEqual(expected, - checkpkg.ParseDumpOutput(dump_1.DATA_DUMP_OUTPUT)) - - def testEmpty(self): - expected_runpath = () - self.assertEqual( - expected_runpath, - checkpkg.ParseDumpOutput(dump_2.DATA_DUMP_OUTPUT)["runpath"]) - - def testRpathOnly(self): - expected = { - 'RPATH set': True, - 'RUNPATH RPATH the same': False, - 'RUNPATH set': False, - 'needed sonames': ('librt.so.1', - 'libresolv.so.2', - 'libc.so.1', - 'libgen.so.1', - 'libsocket.so.1', - 'libnsl.so.1', - 'libm.so.1', - 'libz.so.1'), - 'runpath': ('/opt/csw/lib/$ISALIST', - '/opt/csw/lib', - '/opt/csw/mysql5/lib/$ISALIST', - '/opt/csw/mysql5/lib', - '/opt/csw/mysql5/lib/$ISALIST/mysql'), - 'soname': 'libmysqlclient.so.15', - } - self.assertEqual( - expected, - checkpkg.ParseDumpOutput(dump_3.DATA_DUMP_OUTPUT)) - - -class SystemPkgmapUnitTest(unittest.TestCase): - - def testParsePkginfoLine(self): - line = ('application CSWcswclassutils ' - 'cswclassutils - CSW class action utilities') - expected = ('CSWcswclassutils', - 'cswclassutils - CSW class action utilities') - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._ParsePkginfoLine(line)) - - def test_InferPackagesFromPkgmapLine(self): - line = ("/opt/csw/sbin d none 0755 root bin CSWfping CSWbonobo2 " - "CSWkrb5libdev CSWsasl CSWschilybase CSWschilyutils CSWstar " - "CSWcommon CSWcacertificates CSWfacter") - expected = ["CSWfping", "CSWbonobo2", "CSWkrb5libdev", "CSWsasl", - "CSWschilybase", "CSWschilyutils", "CSWstar", "CSWcommon", - "CSWcacertificates", "CSWfacter"] - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) - - def test_InferPackagesFromPkgmapLine_2(self): - line = ("/usr/lib/sparcv9/libpthread.so.1 f none 0755 root bin 41296 28258 " - "1018129099 SUNWcslx") - expected = ["SUNWcslx"] - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) - - def test_InferPackagesFromPkgmapLine_3(self): - line = ("/usr/lib/libCrun.so.1 f none 0755 root bin 63588 " - "6287 1256043984 SUNWlibC") - expected = ["SUNWlibC"] - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) - - def test_InferPackagesFromPkgmapLine_4(self): - line = ("/opt/csw/apache2/lib/libapr-1.so.0=libapr-1.so.0.3.8 s none " - "CSWapache2rt") - expected = ["CSWapache2rt"] - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) - - class ExtractorsUnitTest(unittest.TestCase): def testExtractDescriptionFromGoodData(self): @@ -296,68 +60,67 @@ self.assertEqual(expected, re.match(checkpkg.PSTAMP_RE, pstamp).groupdict()) -class CheckpkgManager2UnitTest(unittest.TestCase): - - def test_1(self): - m = checkpkg.CheckpkgManager2("testname", "/tmp", ["CSWfoo"]) - tags = { - "CSWfoo": [ - tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), - ], - } - screen_report, tags_report = m.FormatReports(tags, [], []) - expected = u'# Tags reported by testname module\nCSWfoo: foo-tag foo-info\n' - self.assertEqual(expected, unicode(tags_report)) - - def test_2(self): - m = checkpkg.CheckpkgManager2("testname", "/tmp", ["CSWfoo"]) - tags = { - "CSWfoo": [ - tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), - tag.CheckpkgTag("CSWfoo", "bar-tag", "bar-info"), - tag.CheckpkgTag("CSWfoo", "baz-tag"), - ], - } - screen_report, tags_report = m.FormatReports(tags, [], []) - expected = (u'# Tags reported by testname module\n' - u'CSWfoo: foo-tag foo-info\n' - u'CSWfoo: bar-tag bar-info\n' - u'CSWfoo: baz-tag\n') - self.assertEqual(expected, unicode(tags_report)) - - class SliceListUnitTest(unittest.TestCase): def testOne(self): l = [1, 2, 3, 4, 5] s = 1 expected = [[1], [2], [3], [4], [5]] - self.assertTrue(expected, checkpkg.SliceList(l, s)) + self.assertTrue(expected, checkpkg_lib.SliceList(l, s)) def testTwo(self): l = [1, 2, 3, 4, 5] s = 2 expected = [[1, 2], [3, 4], [5]] - self.assertTrue(expected, checkpkg.SliceList(l, s)) + self.assertTrue(expected, checkpkg_lib.SliceList(l, s)) -class LddEmulartorUnitTest(unittest.TestCase): +class SqliteUnitTest(unittest.TestCase): + "Makes sure that we can lose state between tests." + def setUp(self): - self.pkgmap_mocker = mox.Mox() - self.e = checkpkg.LddEmulator() + self.conn = sqlite3.connect(":memory:") + self.c = self.conn.cursor() - def testResolveSoname_1(self): - # runpath_list, soname, isalist, path_list, binary_path - runpath_list = ["/opt/csw/bdb47/lib", "/opt/csw/lib"] - soname = "foo.so.1" - path_list = ["/opt/csw/lib", "/opt/csw/bdb47/lib", "/usr/lib"] - binary_path = "unused" - isalist = ["amd64"] - result = self.e.ResolveSoname(runpath_list, soname, isalist, - path_list, binary_path) - self.assertEqual("/opt/csw/bdb47/lib", result) + def tearDown(self): + self.conn = None + def testCannotCreateTwoTables(self): + self.c.execute("CREATE TABLE foo (INT bar);") + self.assertRaises( + sqlite3.OperationalError, + self.c.execute, "CREATE TABLE foo (INT bar);") + def testOne(self): + self.c.execute("CREATE TABLE foo (INT bar);") + + def testTwo(self): + self.c.execute("CREATE TABLE foo (INT bar);") + + +class SqlobjectUnitTest(test_base.SqlObjectTestMixin, unittest.TestCase): + + "Makes sure that we can lose state between methods." + + class TestModel(sqlobject.SQLObject): + name = sqlobject.UnicodeCol(length=255, unique=True, notNone=True) + + # This does not work. Why? + # def testCannotCreateTwoTables(self): + # self.TestModel.createTable() + # self.assertRaises( + # sqlite3.OperationalError, + # self.TestModel.createTable) + + def testOne(self): + self.TestModel.createTable() + + def testTwo(self): + self.TestModel.createTable() + + if __name__ == '__main__': + # import logging + # logging.basicConfig(level=logging.DEBUG) unittest.main() @@ Diff output truncated at 100000 characters. @@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Fri Dec 10 21:55:59 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Fri, 10 Dec 2010 20:55:59 +0000 Subject: [csw-devel] SF.net SVN: gar:[11880] csw/mgar/gar/v2 Message-ID: Revision: 11880 http://gar.svn.sourceforge.net/gar/?rev=11880&view=rev Author: wahwah Date: 2010-12-10 20:55:58 +0000 (Fri, 10 Dec 2010) Log Message: ----------- Revert "checkpkg: File collision detection" This reverts commit 41873226c2f5805d914b6fb39c05efbdcafcc084. Modified Paths: -------------- csw/mgar/gar/v2/bin/checkpkg csw/mgar/gar/v2/bin/mkpackage csw/mgar/gar/v2/gar.pkg.mk csw/mgar/gar/v2/lib/python/README csw/mgar/gar/v2/lib/python/catalog.py csw/mgar/gar/v2/lib/python/checkpkg.py csw/mgar/gar/v2/lib/python/checkpkg_test.py csw/mgar/gar/v2/lib/python/configuration.py csw/mgar/gar/v2/lib/python/database.py csw/mgar/gar/v2/lib/python/dependency_checks.py csw/mgar/gar/v2/lib/python/dependency_checks_test.py csw/mgar/gar/v2/lib/python/inspective_package.py csw/mgar/gar/v2/lib/python/models.py csw/mgar/gar/v2/lib/python/opencsw.py csw/mgar/gar/v2/lib/python/package.py csw/mgar/gar/v2/lib/python/package_checks.py csw/mgar/gar/v2/lib/python/package_checks_test.py csw/mgar/gar/v2/lib/python/package_stats.py csw/mgar/gar/v2/lib/python/package_stats_test.py csw/mgar/gar/v2/lib/python/pkgdb.py csw/mgar/gar/v2/lib/python/sharedlib_utils.py csw/mgar/gar/v2/lib/python/sharedlib_utils_test.py csw/mgar/gar/v2/lib/python/tag.py csw/mgar/gar/v2/lib/python/tag_test.py csw/mgar/gar/v2/lib/python/testdata/neon_stats.py csw/mgar/gar/v2/lib/python/testdata/tree_stats.py csw/mgar/gar/v2/tests/run_tests.py Added Paths: ----------- csw/mgar/gar/v2/bin/analyze_module_results.py csw/mgar/gar/v2/bin/checkpkg_collect_stats.py csw/mgar/gar/v2/bin/checkpkg_run_modules.py Removed Paths: ------------- csw/mgar/gar/v2/lib/python/checkpkg2.py csw/mgar/gar/v2/lib/python/checkpkg_lib.py csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py csw/mgar/gar/v2/lib/python/common_constants.py csw/mgar/gar/v2/lib/python/ldd_emul.py csw/mgar/gar/v2/lib/python/ldd_emul_test.py csw/mgar/gar/v2/lib/python/models_test.py csw/mgar/gar/v2/lib/python/mute_progressbar.py csw/mgar/gar/v2/lib/python/pkgdb_test.py csw/mgar/gar/v2/lib/python/shell.py csw/mgar/gar/v2/lib/python/system_pkgmap.py csw/mgar/gar/v2/lib/python/system_pkgmap_test.py csw/mgar/gar/v2/lib/python/test_base.py Property Changed: ---------------- csw/mgar/gar/v2/bin/checkpkg csw/mgar/gar/v2/lib/python/package_stats_test.py Added: csw/mgar/gar/v2/bin/analyze_module_results.py =================================================================== --- csw/mgar/gar/v2/bin/analyze_module_results.py (rev 0) +++ csw/mgar/gar/v2/bin/analyze_module_results.py 2010-12-10 20:55:58 UTC (rev 11880) @@ -0,0 +1,73 @@ +#!/opt/csw/bin/python2.6 +# $Id$ + +import itertools +import operator +import optparse +import os +import pprint +import progressbar +import sys +import textwrap + +# The following bit of code sets the correct path to Python libraries +# distributed with GAR. +path_list = [os.path.dirname(__file__), + "..", "lib", "python"] +sys.path.append(os.path.join(*path_list)) +import checkpkg +import overrides +import package_stats + +BEFORE_OVERRIDES = """If any of the reported errors were false positives, you +can override them pasting the lines below to the GAR recipe.""" + +AFTER_OVERRIDES = """Please note that checkpkg isn't suggesting you should +simply add these overrides do the Makefile. It only informs what the overrides +could look like. You need to understand what are the reported issues about and +use your best judgement to decide whether to fix the underlying problems or +override them. For more information, scroll up and read the detailed +messages.""" + +UNAPPLIED_OVERRIDES = """WARNING: Some overrides did not match any errors. +They can be removed, as they don't take any effect anyway. If you're getting +errors at the same time, maybe you didn't specify the overrides correctly.""" + +def main(): + parser = optparse.OptionParser() + parser.add_option("-c", "--catalog_file", dest="catalog", + help="Optional catalog file") + parser.add_option("-q", "--quiet", dest="quiet", + default=False, action="store_true", + help=("Display less messages")) + options, args = parser.parse_args() + filenames = args + + # This might be bottleneck. Perhaps a list of md5 sums can be given to this + # script instead. + + # It might be a good idea to store the error tags in the database and + # eliminate the need to access the directory with the error tag files. + + pkgstats = package_stats.StatsListFromCatalog(filenames, options.catalog) + overrides_list = [pkg.GetSavedOverrides() for pkg in pkgstats] + override_list = reduce(operator.add, overrides_list) + error_tags = reduce(operator.add, [stat.GetSavedErrorTags() for stat in pkgstats]) + (tags_after_overrides, + unapplied_overrides) = overrides.ApplyOverrides(error_tags, override_list) + if not options.quiet: + if tags_after_overrides: + print textwrap.fill(BEFORE_OVERRIDES, 80) + for checkpkg_tag in tags_after_overrides: + print checkpkg_tag.ToGarSyntax() + print textwrap.fill(AFTER_OVERRIDES, 80) + if unapplied_overrides: + print textwrap.fill(UNAPPLIED_OVERRIDES, 80) + for override in unapplied_overrides: + print "* Unused %s" % override + exit_code = bool(tags_after_overrides) + sys.exit(exit_code) + + +if __name__ == '__main__': + main() Property changes on: csw/mgar/gar/v2/bin/analyze_module_results.py ___________________________________________________________________ Added: svn:executable + * Modified: csw/mgar/gar/v2/bin/checkpkg =================================================================== --- csw/mgar/gar/v2/bin/checkpkg 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/bin/checkpkg 2010-12-10 20:55:58 UTC (rev 11880) @@ -1 +1,322 @@ -link ../lib/python/checkpkg2.py \ No newline at end of file +#!/bin/ksh -p +# +# $Id$ +# +# checkpkg 1.51 +# +# diff to 1.46a +# - check multiple package files +# - checkpkg.d plugin support +# - getopts support for command line options +# - colors +# - modular architecture + unit tests +# - reliable shared library checking +# +# This script examines a package that has been put together +# for submittal to the CSW archive at opencsw.org +# +# It examines it for compliance with the packaging standards at +# http://www.opencsw.org/standards/ +# It DOES NOT CATCH EVERYTHING. However, the package will be +# tested with this script before acceptance, so you may as well +# save yourself some time, and run the script yourself! +# +# Be sure to occasionally do a "pkg-get update cswutils" so that +# you know you are tracking the most current version. +# +# TODO: +# - add message handlig to the CheckInterface class. +# + +PATH=$PATH:/usr/sbin +readonly NAME_MAX_LENGTH=${NAME_MAX_LENGTH:-20} + +command_basename=`basename $0` +command_basedir="${0%/${command_basename}}" +libshdir="${command_basedir}/../lib/sh" +readonly command_basename command_basedir libshdir +. "${libshdir}/libcheckpkg.sh" + +LOCAL_ARCH=`uname -p` +CHECKPKG_TMPDIR=${CHECKPKG_TMPDIR:-/var/tmp} +readonly CHECKPKG_TMPDIR + +# Colors only when running interactively +if [[ -t 1 ]]; then + GREEN="\\033[0;32;40m" + RED="\\033[1;31;40m" + BOLD="\\033[1m" + COLOR_RESET="\\033[00m" +else + GREEN="" + RED="" + BOLD="" + COLOR_RESET="" +fi +readonly GREEN RED BOLD COLOR_RESET + +readonly selfpath="$0" +readonly selfargs="$@" + +cleanup(){ + if [[ -d "$EXTRACTDIR" ]] ; then + rm -rf $EXTRACTDIR + fi + cleantmparchives +} + +cleantmparchives() { + for TMPARCHIVE in $tmparchives; do + if [[ "$TMPARCHIVE" != "" ]]; then + [ -f "$TMPARCHIVE" ] && rm $TMPARCHIVE + fi + done +} + +cleanupset(){ + if [ "`echo $SETINF*`" != "$SETINF*" ]; then + rm $SETINF* + fi +} + +# Print error message, and quit program. +errmsg(){ + print ERROR: $* >/dev/fd/2 + cleanup + cleanupset + print "To run checkpkg in the debug mode, add the '-d' flag, for example:" + # selfargs can be very, very long. Find a way to truncate it. + # print "${selfpath} -d ${selfargs}" + print "After you modify any overrides, you need to do gmake remerge repackage" + print "or gmake platforms-remerge platforms-repackage." + exit 1 +} + +debugmsg() { + if [[ "${DEBUG}" != "" ]]; then + print "DEBUG: $*" > /dev/fd/2 + fi +} + +# TODO: Options to add: +# - Use an pre-cached (from a catalog file?) list of md5 sums +# - Don't use the data from /var/sadm/install/contents +display_help=0 +SKIP_STATS_COLLECTION=0 +MD5_SUMS_CATALOG_FILE="" +INSTALL_CONTENTS_FILES="/var/sadm/install/contents" +ANALYZE=1 +PROFILE=0 +QUIET=0 + +while getopts hsdNM:o:c:Apq opt; do + case "${opt}" in + c) + INSTALL_CONTENTS_FILES="${INSTALL_CONTENTS_FILES} ${OPTARG}" + ;; + d) + DEBUG=1 + ;; + h) + display_help=1 + ;; + N) + SKIP_STATS_COLLECTION=1 + ;; + M) + MD5_SUMS_CATALOG_FILE="${OPTARG}" + ;; + A) + ANALYZE=0 + ;; + p) + PROFILE=1 + ;; + q) QUIET=1 + ;; + *) + echo "Unknown option '${opt}'" + ;; + esac +done +shift $(( $OPTIND -1 )) + +readonly INSTALL_CONTENTS_FILES +readonly MD5_SUMS_CATALOG_FILE +readonly SKIP_STATS_COLLECTION +readonly ANALYZE +readonly PROFILE +readonly QUIET + +if [[ "${display_help}" -eq 1 ]] ; then + print 'Usage: checkpkg [options] pkg1 [pkg2 ....]' + print 'Options:' + print ' -c use an additional install/contents file' + print ' -d display debug messages' + print ' -N skip statistics collection' + print ' -M use package md5sums from a catalog file' + print ' -A Do not analyze the results.' + print ' -p Enable profiling' + print ' -q Display less messages' + print '' + print 'Error tags are saved to the sqlite database.' + exit 0 +fi + +# a unique filename for the list of package deps and libs we see in a 'set' +SETINF=$CHECKPKG_TMPDIR/checkpkg.$$.`date +%Y%m%d%H%M%S` +SETLIBS=$SETINF.libs +SETDEPS=$SETINF.deps +pkgnames="" +tmparchives="" + +EXTRACTDIR=$CHECKPKG_TMPDIR/dissect.$$ + +if [ -d $EXTRACTDIR ] ; then + errmsg ERROR: $EXTRACTDIR already exists +fi + +for f in "$@" +do + + if [[ ! -f $f ]] ; then + errmsg ERROR: $f does not exist + fi + + +[ -d ${EXTRACTDIR} ] || mkdir ${EXTRACTDIR} + +######################################## +# Check for some common errors +######################################### + +# TODO: To be ported. +# +# # find all executables and dynamic libs,and list their filenames. +# if [[ "$basedir" != "" ]] ; then +# print +# if [[ -f $EXTRACTDIR/elflist ]] ; then +# print "Checking relocation ability..." +# xargs strings < $EXTRACTDIR/elflist| grep /opt/csw +# if [[ $? -eq 0 ]] ; then +# errmsg package build as relocatable, but binaries have hardcoded /opt/csw paths in them +# else +# print trivial check passed +# fi +# else +# echo No relocation check done for non-binary relocatable package. +# fi +# fi + +tmparchives="$tmparchives $TMPARCHIVE" +done + +# Plugin section. This is here for support for other programming languages +# than Python. As of 2010-03-16 there are no checks in there. If this keeps +# empty, if no checks in other languages get written, it could be removed. +# +# Plugins should live in checkpkg.d subdirectory in the same directory in which +# checkpkg is. Each plugin file name should be an executable and begin with +# "checkpkg-". + +test_suite_ok=1 +checkpkg_module_dir="${command_basedir}/../lib/checkpkg.d" +checkpkg_module_tag="checkpkg-" +checkpkg_stats_basedir="${HOME}/.checkpkg/stats" + +# Cleaning up old *.pyc files which can cause grief. This is because of the +# move of Python libraries. +for pyc_file in ${checkpkg_module_dir}/opencsw.pyc \ + ${checkpkg_module_dir}/checkpkg.pyc; do + if [ -f "${pyc_file}" ]; then + echo "Removing old pyc file: '${pyc_file}'" + rm "${pyc_file}" + fi +done + +if [[ "${DEBUG}" != "" ]]; then + extra_options="--debug" +fi +if [[ "${PROFILE}" -eq 1 ]]; then + extra_options="${extra_options} --profile" +fi +if [[ "${QUIET}" -eq 1 ]]; then + quiet_options="--quiet" +else + quiet_options="" +fi + +if [[ -n "${MD5_SUMS_CATALOG_FILE}" ]]; then + catalog_options="--catalog=${MD5_SUMS_CATALOG_FILE}" +else + catalog_options="" +fi + +# /var/sadm/install/contents cache update +# TODO: Either remove this section or stop the stats collection phase from +# updating the cache. +${command_basedir}/update_contents_cache.py ${extra_options} +if [[ $? -ne 0 ]]; then + errmsg "Updating the contents cache has failed." +fi +if [[ "${SKIP_STATS_COLLECTION}" -eq 0 ]]; then + # Collects package stats to be analyzed later + ${command_basedir}/checkpkg_collect_stats.py \ + ${catalog_options} \ + ${extra_options} \ + "$@" + if [[ "$?" -ne 0 ]]; then + errmsg "Stats collection phase has failed." + fi +fi + +# TODO: A performance problem. The following line means that the md5sums are +# calculated once more. +if [ "${MD5_SUMS_CATALOG_FILE}" ]; then + debugmsg "Reading md5sums from ${MD5_SUMS_CATALOG_FILE}" + md5sums=`cat "${MD5_SUMS_CATALOG_FILE}" \ + | awk '{print $5}' \ + | ggrep -E '[0-9abcdef]{32}'` +else + debugmsg "Calculating md5 sums of all the package files." + md5sums=`gmd5sum "$@" | awk '{print $1}'` +fi +debugmsg "All md5 sums: ${md5sums}" + +# Running the checks. +${command_basedir}/checkpkg_run_modules.py \ + ${extra_options} \ + -b "${checkpkg_stats_basedir}" \ + ${quiet_options} \ + ${md5sums} +if [[ "$?" -ne 0 ]]; then + print "There was a problem analyzing package stats." + test_suite_ok=0 +fi + +if [[ ${test_suite_ok} -ne 1 ]]; then + errmsg "One or more tests have finished with an error." +fi + +if [[ "${ANALYZE}" -eq 1 ]]; then +# Collecting errors and applying the overrides. +# This has to use the original files. + ${command_basedir}/analyze_module_results.py \ + ${catalog_options} \ + ${quiet_options} \ + "$@" + if [[ "$?" -ne 0 ]]; then + errmsg "${RED}Checkpkg has reported errors.${COLOR_RESET}" + else + print "${GREEN}Checkpkg reports no errors.${COLOR_RESET}" + fi +else + echo "Skipping result analysis." +fi + +print "" + +# Cleaning up after all packages +cleanup + +cleanupset Property changes on: csw/mgar/gar/v2/bin/checkpkg ___________________________________________________________________ Deleted: svn:special - * Added: svn:executable + * Added: csw/mgar/gar/v2/bin/checkpkg_collect_stats.py =================================================================== --- csw/mgar/gar/v2/bin/checkpkg_collect_stats.py (rev 0) +++ csw/mgar/gar/v2/bin/checkpkg_collect_stats.py 2010-12-10 20:55:58 UTC (rev 11880) @@ -0,0 +1,69 @@ +#!/opt/csw/bin/python2.6 +# +# $Id$ +# +# Collects statistics about a package and saves to a directory, for later use +# by checkpkg modules. + +import itertools +import logging +import optparse +import os +import os.path +import subprocess +import sys +import progressbar + +# The following bit of code sets the correct path to Python libraries +# distributed with GAR. +path_list = [os.path.dirname(__file__), + "..", "lib", "python"] +sys.path.append(os.path.join(*path_list)) +import checkpkg +import opencsw +import package_stats + +def main(): + parser = optparse.OptionParser() + parser.add_option("-d", "--debug", dest="debug", + default=False, action="store_true", + help="Turn on debugging messages") + parser.add_option("-c", "--catalog", dest="catalog", + help="Catalog file") + parser.add_option("-p", "--profile", dest="profile", + default=False, action="store_true", + help="A disabled option") + options, args = parser.parse_args() + if options.debug: + logging.basicConfig(level=logging.DEBUG) + else: + logging.basicConfig(level=logging.INFO) + logging.debug("Collecting statistics about given package files.") + args_display = args + if len(args_display) > 5: + args_display = args_display[:5] + ["...more..."] + file_list = args + logging.debug("Processing: %s, please be patient", args_display) + stats_list = package_stats.StatsListFromCatalog( + file_list, options.catalog, options.debug) + # Reversing the item order in the list, so that the pop() method can be used + # to get packages, and the order of processing still matches the one in the + # catalog file. + stats_list.reverse() + total_packages = len(stats_list) + counter = itertools.count(1) + logging.info("Juicing the srv4 package stream files...") + bar = progressbar.ProgressBar() + bar.maxval = total_packages + bar.start() + while stats_list: + # This way objects will get garbage collected as soon as they are removed + # from the list by pop(). The destructor (__del__()) of the srv4 class + # removes the temporary directory from the disk. This allows to process + # the whole catalog. + stats_list.pop().CollectStats() + bar.update(counter.next()) + bar.finish() + +if __name__ == '__main__': + main() Property changes on: csw/mgar/gar/v2/bin/checkpkg_collect_stats.py ___________________________________________________________________ Added: svn:executable + * Added: csw/mgar/gar/v2/bin/checkpkg_run_modules.py =================================================================== --- csw/mgar/gar/v2/bin/checkpkg_run_modules.py (rev 0) +++ csw/mgar/gar/v2/bin/checkpkg_run_modules.py 2010-12-10 20:55:58 UTC (rev 11880) @@ -0,0 +1,56 @@ +#!/opt/csw/bin/python2.6 +# $Id$ + +"""This script runs all the checks written in Python.""" + +import datetime +import logging +import os +import os.path +import sys +import re +import cProfile + +CHECKPKG_MODULE_NAME = "Second checkpkg API version" + +# The following bit of code sets the correct path to Python libraries +# distributed with GAR. +path_list = [os.path.dirname(__file__), + "..", "lib", "python"] +sys.path.append(os.path.join(*path_list)) +import checkpkg +import opencsw + + +def main(): + options, args = checkpkg.GetOptions() + if options.debug: + logging.basicConfig(level=logging.DEBUG) + else: + logging.basicConfig(level=logging.INFO) + md5sums = args + # CheckpkgManager2 class abstracts away things such as the collection of + # results. + check_manager = checkpkg.CheckpkgManager2(CHECKPKG_MODULE_NAME, + options.stats_basedir, + md5sums, + options.debug) + # Running the checks, reporting and exiting. + exit_code, screen_report, tags_report = check_manager.Run() + screen_report = unicode(screen_report) + if not options.quiet and screen_report: + sys.stdout.write(screen_report) + else: + logging.debug("No screen report.") + sys.exit(exit_code) + + +if __name__ == '__main__': + if "--profile" in sys.argv: + t_str = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") + home = os.environ["HOME"] + cprof_file_name = os.path.join( + home, ".checkpkg", "run-modules-%s.cprof" % t_str) + cProfile.run("main()", sort=1, filename=cprof_file_name) + else: + main() Property changes on: csw/mgar/gar/v2/bin/checkpkg_run_modules.py ___________________________________________________________________ Added: svn:executable + * Modified: csw/mgar/gar/v2/bin/mkpackage =================================================================== --- csw/mgar/gar/v2/bin/mkpackage 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/bin/mkpackage 2010-12-10 20:55:58 UTC (rev 11880) @@ -25,9 +25,6 @@ # Tool Version/Revision Information $TOOLVERSION = "1.4"; ($REVISION) = q/$Revision$/ =~ /(\d+)/; -# This shows a warning: -# "Use of uninitialized value $REVISION in sprintf at -# /home/maciej/src/opencsw/pkg/nspr/trunk/gar/bin/mkpackage line 31." $VERSION = sprintf '%s (r%d)', $TOOLVERSION, $REVISION; # Discover network support Modified: csw/mgar/gar/v2/gar.pkg.mk =================================================================== --- csw/mgar/gar/v2/gar.pkg.mk 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/gar.pkg.mk 2010-12-10 20:55:58 UTC (rev 11880) @@ -52,7 +52,6 @@ GARPKG_v1 = CSWgar-v1 GARPKG_v2 = CSWgar-v2 RUNTIME_DEP_PKGS_$(SRCPACKAGE) ?= $(or $(GARPKG_$(GARSYSTEMVERSION)),$(error GAR version $(GARSYSTEMVERSION) unknown)) -CATALOG_RELEASE ?= current _PKG_SPECS = $(filter-out $(NOPACKAGE),$(SPKG_SPECS)) @@ -843,11 +842,7 @@ # pkgcheck - check if the package is compliant # pkgcheck: $(foreach SPEC,$(_PKG_SPECS),package-$(SPEC)) - $(_DBG)( LC_ALL=C $(GARBIN)/checkpkg \ - --architecture "$(GARCH)" \ - --os-releases "$(SPKG_OSNAME)" \ - --catalog-release "$(CATALOG_RELEASE)" \ - $(foreach SPEC,$(_PKG_SPECS),$(SPKG_EXPORT)/`$(call _PKG_ENV,$(SPEC)) mkpackage --tmpdir $(SPKG_TMPDIR) -qs $(WORKDIR)/$(SPEC).gspec -D pkgfile`.gz ) || exit 2;) + $(_DBG)( LC_ALL=C $(GARBIN)/checkpkg $(foreach SPEC,$(_PKG_SPECS),$(SPKG_EXPORT)/`$(call _PKG_ENV,$(SPEC)) mkpackage --tmpdir $(SPKG_TMPDIR) -qs $(WORKDIR)/$(SPEC).gspec -D pkgfile`.gz ) || exit 2;) @$(MAKECOOKIE) pkgcheck-p: Modified: csw/mgar/gar/v2/lib/python/README =================================================================== --- csw/mgar/gar/v2/lib/python/README 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/lib/python/README 2010-12-10 20:55:58 UTC (rev 11880) @@ -21,11 +21,9 @@ tests as means to run various bits of code. Here's the dependency list for Ubuntu. -sudo aptitude install \ - python-cheetah \ - python-hachoir-parser \ - python-magic \ - python-mox \ - python-progressbar \ - python-sqlobject \ + python-cheetah + python-hachoir-parser + python-magic + python-mox + python-progressbar python-yaml Modified: csw/mgar/gar/v2/lib/python/catalog.py =================================================================== --- csw/mgar/gar/v2/lib/python/catalog.py 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/lib/python/catalog.py 2010-12-10 20:55:58 UTC (rev 11880) @@ -123,7 +123,6 @@ def _GetCatalogData(self, fd): catalog_data = [] for line in fd: - if line.startswith("#"): continue try: parsed = self._ParseCatalogLine(line) catalog_data.append(parsed) Modified: csw/mgar/gar/v2/lib/python/checkpkg.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg.py 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/lib/python/checkpkg.py 2010-12-10 20:55:58 UTC (rev 11880) @@ -3,22 +3,44 @@ # This is the checkpkg library, common for all checkpkg tests written in # Python. +import copy +import cPickle +import errno import itertools import logging +import operator import optparse +import os import os.path import re import pprint import progressbar +import socket +import sqlite3 import sqlobject +import time +from sqlobject import sqlbuilder import subprocess +import textwrap +from Cheetah import Template import database +import package import inspective_package +import package_checks +import package_stats import models as m -import common_constants +import configuration as c +import tag +DEBUG_BREAK_PKGMAP_AFTER = False +SYSTEM_PKGMAP = "/var/sadm/install/contents" +NEEDED_SONAMES = "needed sonames" +RUNPATH = "runpath" +SONAME = "soname" +CONFIG_MTIME = "mtime" +CONFIG_DB_SCHEMA = "db_schema_version" DO_NOT_REPORT_SURPLUS = set([u"CSWcommon", u"CSWcswclassutils", u"CSWisaexec"]) DO_NOT_REPORT_MISSING = set([]) DO_NOT_REPORT_MISSING_RE = [r"\*?SUNW.*"] @@ -26,11 +48,17 @@ PSTAMP_RE = r"(?P\w+)@(?P[\w\.-]+)-(?P\d+)" DESCRIPTION_RE = r"^([\S]+) - (.*)$" BAD_CONTENT_REGEXES = ( - # Slightly obfuscating these by using concatenation of strings. + # Slightly obfuscating these by using the default concatenation of + # strings. r'/export' r'/medusa', r'/opt' r'/build', ) +SYSTEM_SYMLINKS = ( + ("/opt/csw/bdb4", ["/opt/csw/bdb42"]), + ("/64", ["/amd64", "/sparcv9"]), + ("/opt/csw/lib/i386", ["/opt/csw/lib"]), +) INSTALL_CONTENTS_AVG_LINE_LENGTH = 102.09710677919261 SYS_DEFAULT_RUNPATH = [ "/usr/lib/$ISALIST", @@ -39,7 +67,8 @@ "/lib", ] -MD5_RE = re.compile(r"^[0123456789abcdef]{32}$") +CONTENT_PKG_RE = r"^\*?(CSW|SUNW)[0-9a-zA-Z\-]?[0-9a-z\-]+$" +MD5_RE = r"^[0123456789abcdef]{32}$" REPORT_TMPL = u"""#if $missing_deps or $surplus_deps or $orphan_sonames Dependency issues of $pkgname: @@ -61,6 +90,57 @@ #end if """ +SCREEN_ERROR_REPORT_TMPL = u"""#if $errors +#if $debug +ERROR: One or more errors have been found by $name. +#end if +#for $pkgname in $errors +$pkgname: +#for $error in $errors[$pkgname] +#if $debug + $repr($error) +#elif $error.msg +$textwrap.fill($error.msg, 78, initial_indent="# ", subsequent_indent="# ") +# -> $repr($error) + +#end if +#end for +#end for +#else +#if $debug +OK: $repr($name) module found no problems. +#end if +#end if +#if $messages +#for $msg in $messages +$textwrap.fill($msg, 78, initial_indent=" * ", subsequent_indent=" ") +#end for +#end if +#if $gar_lines + +# Checkpkg suggests adding the following lines to the GAR recipe: +# This is a summary; see above for details. +#for $line in $gar_lines +$line +#end for +#end if +""" + +# http://www.cheetahtemplate.org/docs/users_guide_html_multipage/language.directives.closures.html +TAG_REPORT_TMPL = u"""#if $errors +# Tags reported by $name module +#for $pkgname in $errors +#for $tag in $errors[$pkgname] +#if $tag.msg +$textwrap.fill($tag.msg, 70, initial_indent="# ", subsequent_indent="# ") +#end if +$pkgname: ${tag.tag_name}#if $tag.tag_info# $tag.tag_info#end if# +#end for +#end for +#end if +""" + + class Error(Exception): pass @@ -77,12 +157,11 @@ pass -class SetupError(Error): - pass - - def GetOptions(): parser = optparse.OptionParser() + parser.add_option("-b", "--stats-basedir", dest="stats_basedir", + help=("The base directory with package statistics " + "in yaml format, e.g. ~/.checkpkg/stats")) parser.add_option("-d", "--debug", dest="debug", default=False, action="store_true", help="Turn on debugging messages") @@ -93,6 +172,8 @@ default=False, action="store_true", help=("Print less messages")) (options, args) = parser.parse_args() + if not options.stats_basedir: + raise ConfigurationError("ERROR: the -b option is missing.") # Using set() to make the arguments unique. return options, set(args) @@ -114,9 +195,859 @@ return m.group("username") if m else None +class SystemPkgmap(database.DatabaseClient): + """A class to hold and manipulate the /var/sadm/install/contents file.""" + + STOP_PKGS = ["SUNWbcp", "SUNWowbcp", "SUNWucb"] + + def __init__(self, system_pkgmap_files=None, debug=False): + """There is no need to re-parse it each time. + + Read it slowly the first time and cache it for later.""" + super(SystemPkgmap, self).__init__(debug=debug) + self.cache = {} + self.pkgs_by_path_cache = {} + self.file_mtime = None + self.cache_mtime = None + self.initialized = False + if not system_pkgmap_files: + self.system_pkgmap_files = [SYSTEM_PKGMAP] + else: + self.system_pkgmap_files = system_pkgmap_files + self.csw_pkg_re = re.compile(CONTENT_PKG_RE) + self.digits_re = re.compile(r"^[0-9]+$") + + def _LazyInitializeDatabase(self): + if not self.initialized: + self.InitializeDatabase() + + def InitializeRawDb(self): + """It's necessary for low level operations.""" + if True: + logging.debug("Connecting to sqlite") + self.sqlite_conn = sqlite3.connect(self.GetDatabasePath()) + + def InitializeDatabase(self): + """Established the connection to the database. + + TODO: Refactor this class to first create CswFile with no primary key and + no indexes. + """ + need_to_create_tables = False + db_path = self.GetDatabasePath() + checkpkg_dir = os.path.join(os.environ["HOME"], self.CHECKPKG_DIR) + if not os.path.exists(db_path): + logging.info("Building the cache database %s.", self.system_pkgmap_files) + logging.info("The cache will be kept in %s.", db_path) + if not os.path.exists(checkpkg_dir): + logging.debug("Creating %s", checkpkg_dir) + os.mkdir(checkpkg_dir) + need_to_create_tables = True + self.InitializeRawDb() + self.InitializeSqlobject() + if not self.IsDatabaseGoodSchema(): + logging.info("Old database schema detected.") + self.PurgeDatabase(drop_tables=True) + need_to_create_tables = True + if need_to_create_tables: + self.CreateTables() + self.PerformInitialDataImport() + if not self.IsDatabaseUpToDate(): + logging.debug("Rebuilding the package cache, can take a few minutes.") + self.ClearTablesForUpdates() + self.RefreshDatabase() + self.initialized = True + + def RefreshDatabase(self): + for pkgmap_path in self.system_pkgmap_files: + self._ProcessSystemPkgmap(pkgmap_path) + self.PopulatePackagesTable() + self.SetDatabaseMtime() + + def PerformInitialDataImport(self): + """Imports data into the database. + + Original bit of code from checkpkg: + egrep -v 'SUNWbcp|SUNWowbcp|SUNWucb' /var/sadm/install/contents | + fgrep -f $EXTRACTDIR/liblist >$EXTRACTDIR/shortcatalog + """ + for pkgmap_path in self.system_pkgmap_files: + self._ProcessSystemPkgmap(pkgmap_path) + self.SetDatabaseSchemaVersion() + self.PopulatePackagesTable() + self.SetDatabaseMtime() + + def _ProcessSystemPkgmap(self, pkgmap_path): + """Update the database using data from pkgmap. + + The strategy to only update the necessary bits: + - for each new row + - look it up in the db + - if doesn't exist, create it + - if exists, check the + TODO: continue this description + """ + INSERT_SQL = """ + INSERT INTO csw_file (basename, path, line) + VALUES (?, ?, ?); + """ + sqlite_cursor = self.sqlite_conn.cursor() + break_after = DEBUG_BREAK_PKGMAP_AFTER + contents_length = os.stat(pkgmap_path).st_size + if break_after: + estimated_lines = break_after + else: + estimated_lines = contents_length / INSTALL_CONTENTS_AVG_LINE_LENGTH + # The progressbar library doesn't like handling larger numbers + # It displays up to 99% if we feed it a maxval in the range of hundreds of + # thousands. + progressbar_divisor = int(estimated_lines / 1000) + if progressbar_divisor < 1: + progressbar_divisor = 1 + update_period = 1L + # To help delete old records + system_pkgmap_fd = open(pkgmap_path, "r") + stop_re = re.compile("(%s)" % "|".join(self.STOP_PKGS)) + # Creating a data structure: + # soname - {: , : , ...} + logging.debug("Building database cache db of the %s file", + pkgmap_path) + logging.info("Processing %s, it can take a few minutes", pkgmap_path) + count = itertools.count() + bar = progressbar.ProgressBar() + bar.maxval = estimated_lines / progressbar_divisor + bar.start() + # I tried dropping the csw_file_basename_idx index to speed up operation, + # but after I measured the times, it turned out that it doesn't make any + # difference to the total runnng time. + # logging.info("Dropping csw_file_basename_idx") + # sqlite_cursor.execute("DROP INDEX csw_file_basename_idx;") + for line in system_pkgmap_fd: + i = count.next() + if not i % update_period and (i / progressbar_divisor) <= bar.maxval: + bar.update(i / progressbar_divisor) + if stop_re.search(line): + continue + if line.startswith("#"): + continue + fields = re.split(c.WS_RE, line) + pkgmap_entry_path = fields[0].split("=")[0] + pkgmap_entry_dir, pkgmap_entry_base_name = os.path.split(pkgmap_entry_path) + # The following SQLObject-driven inserts are 60 times slower than the raw + # sqlite API. + # pkgmap_entry = m.CswFile(basename=pkgmap_entry_base_name, + # path=pkgmap_entry_dir, line=line.strip()) + # This page has some hints: + # http://www.mail-archive.com/sqlobject-discuss at lists.sourceforge.net/msg04641.html + # "These are simple straightforward INSERTs without any additional + # high-level burden - no SELECT, no caching, nothing. Fire and forget." + # sql = self.sqo_conn.sqlrepr( + # sqlobject.sqlbuilder.Insert(m.CswFile.sqlmeta.table, values=record)) + # self.sqo_conn.query(sql) + # ...unfortunately, it isn't any faster in practice. + # The fastest way is: + sqlite_cursor.execute(INSERT_SQL, [pkgmap_entry_base_name, + pkgmap_entry_dir, + line.strip()]) + if break_after and i > break_after: + logging.warning("Breaking after %s for debugging purposes.", break_after) + break + bar.finish() + self.sqlite_conn.commit() + logging.debug("All lines of %s were processed.", pkgmap_path) + + def _ParsePkginfoLine(self, line): + fields = re.split(c.WS_RE, line) + pkgname = fields[1] + pkg_desc = u" ".join(fields[2:]) + return pkgname, pkg_desc + + def PopulatePackagesTable(self): + logging.info("Updating the packages table") + args = ["pkginfo"] + pkginfo_proc = subprocess.Popen(args, stdout=subprocess.PIPE) + stdout, stderr = pkginfo_proc.communicate() + ret = pkginfo_proc.wait() + lines = stdout.splitlines() + bar = progressbar.ProgressBar() + bar.maxval = len(lines) + bar.start() + count = itertools.count() + INSERT_SQL = """ + INSERT INTO pkginst (pkgname, pkg_desc) + VALUES (?, ?); + """ + # If self.GetInstalledPackages calls out to the initialization, + # the result is an infinite recursion. + installed_pkgs = self.GetInstalledPackages(initialize=False) + for line in stdout.splitlines(): + pkgname, pkg_desc = self._ParsePkginfoLine(line) + if pkgname not in installed_pkgs: + # This is slow: + # pkg = m.Pkginst(pkgname=pkgname, pkg_desc=pkg_desc) + # This is much faster: + self.sqlite_conn.execute(INSERT_SQL, [pkgname, pkg_desc]) + i = count.next() + bar.update(i) + # Need to commit, otherwise subsequent SQLObject calls will fail. + self.sqlite_conn.commit() + bar.finish() + + def SetDatabaseMtime(self): + mtime = self.GetFileMtime() + res = m.CswConfig.select(m.CswConfig.q.option_key==CONFIG_MTIME) + if res.count() == 0: + logging.debug("Inserting the mtime (%s) into the database.", mtime) + config_record = m.CswConfig(option_key=CONFIG_MTIME, float_value=mtime) + else: + logging.debug("Updating the mtime (%s) in the database.", mtime) + res.getOne().float_value = mtime + + def SetDatabaseSchemaVersion(self): + try: + config_option = m.CswConfig.select( + m.CswConfig.q.option_key==CONFIG_DB_SCHEMA).getOne() + config_option.int_value = database.DB_SCHEMA_VERSION + except sqlobject.main.SQLObjectNotFound, e: + version = m.CswConfig(option_key=CONFIG_DB_SCHEMA, + int_value=database.DB_SCHEMA_VERSION) + + def GetPkgmapLineByBasename(self, filename): + """Returns pkgmap lines by basename: + { + path1: line1, + path2: line2, + } + """ + if filename in self.cache: + return self.cache[filename] + self._LazyInitializeDatabase() + res = m.CswFile.select(m.CswFile.q.basename==filename) + lines = {} + for obj in res: + lines[obj.path] = obj.line + if len(lines) == 0: + logging.debug("Cache doesn't contain filename %s", filename) + self.cache[filename] = lines + return lines + + def _InferPackagesFromPkgmapLine(self, line): + """Given a pkgmap line, return all packages it contains.""" + line = line.strip() + parts = re.split(c.WS_RE, line) + pkgs = [] + if parts[1] == 'd': + parts = parts[6:] + while parts: + part = parts.pop() + if self.digits_re.match(part): + break + elif "none" == part: + break + pkgs.append(part) + # Make the packages appear in the same order as in the install/contents + # file. + pkgs.reverse() + return pkgs + + def GetPathsAndPkgnamesByBasename(self, filename): + """Returns paths and packages by basename. + + e.g. + {"/opt/csw/lib": ["CSWfoo", "CSWbar"], + "/opt/csw/1/lib": ["CSWfoomore"]} + """ + lines = self.GetPkgmapLineByBasename(filename) + pkgs = {} + # Infer packages + for file_path in lines: + pkgs[file_path] = self._InferPackagesFromPkgmapLine(lines[file_path]) + # self.error_mgr_mock.GetPathsAndPkgnamesByBasename('libc.so.1').AndReturn({ + # "/usr/lib": (u"SUNWcsl",)}) + logging.debug("self.error_mgr_mock.GetPathsAndPkgnamesByBasename(%s).AndReturn(%s)", + repr(filename), pprint.pformat(pkgs)) + return pkgs + + def GetPkgByPath(self, full_path): + if full_path not in self.pkgs_by_path_cache: + self._LazyInitializeDatabase() + path, basename = os.path.split(full_path) + try: + obj = m.CswFile.select( + sqlobject.AND( + m.CswFile.q.path==path, + m.CswFile.q.basename==basename)).getOne() + self.pkgs_by_path_cache[full_path] = self._InferPackagesFromPkgmapLine( + obj.line) + except sqlobject.main.SQLObjectNotFound, e: + logging.debug("Couldn't find in the db: %s/%s", path, basename) + logging.debug(e) + self.pkgs_by_path_cache[full_path] = [] + logging.debug("self.error_mgr_mock.GetPkgByPath(%s).AndReturn(%s)", + repr(full_path), pprint.pformat(self.pkgs_by_path_cache[full_path])) + return self.pkgs_by_path_cache[full_path] + + def GetDatabaseMtime(self): + if not self.cache_mtime: + res = m.CswConfig.select(m.CswConfig.q.option_key==CONFIG_MTIME) + if res.count() == 1: + self.cache_mtime = res.getOne().float_value + elif res.count() < 1: + self.cache_mtime = 1 + logging.debug("GetDatabaseMtime() --> %s", self.cache_mtime) + return self.cache_mtime + + def GetFileMtime(self): + if not self.file_mtime: + stat_data = os.stat(SYSTEM_PKGMAP) + self.file_mtime = stat_data.st_mtime + return self.file_mtime + + def GetDatabaseSchemaVersion(self): + schema_on_disk = 1L + if not m.CswConfig.tableExists(): + return schema_on_disk; + res = m.CswConfig.select(m.CswConfig.q.option_key == CONFIG_DB_SCHEMA) + if res.count() < 1: + logging.debug("No db schema value found, assuming %s.", + schema_on_disk) + elif res.count() == 1: + schema_on_disk = res.getOne().int_value + return schema_on_disk + + def IsDatabaseUpToDate(self): + f_mtime_epoch = self.GetFileMtime() + d_mtime_epoch = self.GetDatabaseMtime() + f_mtime = time.gmtime(int(f_mtime_epoch)) + d_mtime = time.gmtime(int(d_mtime_epoch)) + logging.debug("IsDatabaseUpToDate: f_mtime %s, d_time: %s", f_mtime, d_mtime) + # Rounding up to integer seconds. There is a race condition: + # pkgadd finishes at 100.1 + # checkpkg reads /var/sadm/install/contents at 100.2 + # new pkgadd runs and finishes at 100.3 + # subsequent checkpkg runs won't pick up the last change. + # I don't expect pkgadd to run under 1s. + fresh = f_mtime <= d_mtime + good_version = self.GetDatabaseSchemaVersion() >= database.DB_SCHEMA_VERSION + logging.debug("IsDatabaseUpToDate: good_version=%s, fresh=%s", + repr(good_version), repr(fresh)) + return fresh and good_version + + def ClearTablesForUpdates(self): + for table in self.TABLES_THAT_NEED_UPDATES: + table.clearTable() + + def PurgeDatabase(self, drop_tables=False): + if drop_tables: + for table in self.TABLES: + if table.tableExists(): + table.dropTable() + else: + logging.debug("Truncating all tables") + for table in self.TABLES: + table.clearTable() + + def GetInstalledPackages(self, initialize=True): + """Returns a dictionary of all installed packages.""" + if initialize: + self._LazyInitializeDatabase() + res = m.Pkginst.select() + return dict([[str(x.pkgname), str(x.pkg_desc)] for x in res]) + + +class LddEmulator(object): + """A class to emulate ldd(1) + + Used primarily to resolve SONAMEs and detect package dependencies. + """ + def __init__(self): + self.runpath_expand_cache = {} + self.runpath_origin_expand_cache = {} + self.symlink_expand_cache = {} + self.symlink64_cache = {} + self.runpath_sanitize_cache = {} + + def ExpandRunpath(self, runpath, isalist, binary_path): + """Expands a signle runpath element. + + Args: + runpath: e.g. "/opt/csw/lib/$ISALIST" + isalist: isalist elements + binary_path: Necessary to expand $ORIGIN + """ + key = (runpath, tuple(isalist)) + if key not in self.runpath_expand_cache: + origin_present = False + # Emulating $ISALIST and $ORIGIN expansion + if '$ORIGIN' in runpath: + origin_present = True + if origin_present: + key_o = (runpath, tuple(isalist), binary_path) + if key_o in self.runpath_origin_expand_cache: + return self.runpath_origin_expand_cache[key_o] + else: + if not binary_path.startswith("/"): + binary_path = "/" + binary_path + runpath = runpath.replace('$ORIGIN', binary_path) + if '$ISALIST' in runpath: + expanded_list = [runpath.replace('/$ISALIST', '')] + expanded_list += [runpath.replace('$ISALIST', isa) for isa in isalist] + else: + expanded_list = [runpath] + expanded_list = [os.path.abspath(p) for p in expanded_list] + if not origin_present: + self.runpath_expand_cache[key] = expanded_list + else: + self.runpath_origin_expand_cache[key_o] = expanded_list + return self.runpath_origin_expand_cache[key_o] + return self.runpath_expand_cache[key] + + def ExpandSymlink(self, symlink, target, input_path): + key = (symlink, target, input_path) + if key not in self.symlink_expand_cache: + symlink_re = re.compile(r"%s(/|$)" % symlink) + if re.search(symlink_re, input_path): + result = input_path.replace(symlink, target) + else: + result = input_path + self.symlink_expand_cache[key] = result + return self.symlink_expand_cache[key] + + def Emulate64BitSymlinks(self, runpath_list): + """Need to emulate the 64 -> amd64, 64 -> sparcv9 symlink + + Since we don't know the architecture, we are adding both amd64 and + sparcv9. It should be safe - there are other checks that make sure + that right architectures are in the right directories. + """ + key = tuple(runpath_list) + if key not in self.symlink64_cache: + symlinked_list = [] + for runpath in runpath_list: + for symlink, expansion_list in SYSTEM_SYMLINKS: + for target in expansion_list: + expanded = self.ExpandSymlink(symlink, target, runpath) + if expanded not in symlinked_list: + symlinked_list.append(expanded) + self.symlink64_cache[key] = symlinked_list + return self.symlink64_cache[key] + + def SanitizeRunpath(self, runpath): + if runpath not in self.runpath_sanitize_cache: + self.runpath_sanitize_cache[runpath] = os.path.normpath(runpath) + return self.runpath_sanitize_cache[runpath] + + + def ResolveSoname(self, runpath_list, soname, isalist, + path_list, binary_path): + """Emulates ldd behavior, minimal implementation. + + runpath: e.g. ["/opt/csw/lib/$ISALIST", "/usr/lib"] + soname: e.g. "libfoo.so.1" + isalist: e.g. ["sparcv9", "sparcv8"] + path_list: A list of paths where the soname is present, e.g. + ["/opt/csw/lib", "/opt/csw/lib/sparcv9"] + + The function returns the one path. + """ + # Emulating the install time symlinks, for instance, if the prototype contains + # /opt/csw/lib/i386/foo.so.0 and /opt/csw/lib/i386 is a symlink to ".", + # the shared library ends up in /opt/csw/lib/foo.so.0 and should be + # findable even when RPATH does not contain $ISALIST. + original_paths_by_expanded_paths = {} + for p in path_list: + expanded_p_list = self.Emulate64BitSymlinks([p]) + # We can't just expand and return; we need to return one of the paths given + # in the path_list. + for expanded_p in expanded_p_list: + original_paths_by_expanded_paths[expanded_p] = p + logging.debug( + "%s: looking for %s in %s", + soname, runpath_list, original_paths_by_expanded_paths.keys()) + for runpath_expanded in runpath_list: + if runpath_expanded in original_paths_by_expanded_paths: + # logging.debug("Found %s", + # original_paths_by_expanded_paths[runpath_expanded]) + return original_paths_by_expanded_paths[runpath_expanded] + + +def ParseDumpOutput(dump_output): + binary_data = {RUNPATH: [], + NEEDED_SONAMES: []} + runpath = [] + rpath = [] + for line in dump_output.splitlines(): + fields = re.split(c.WS_RE, line) + if len(fields) < 3: + continue + if fields[1] == "NEEDED": + binary_data[NEEDED_SONAMES].append(fields[2]) + elif fields[1] == "RUNPATH": + runpath.extend(fields[2].split(":")) + elif fields[1] == "RPATH": + rpath.extend(fields[2].split(":")) + elif fields[1] == "SONAME": + binary_data[SONAME] = fields[2] + if runpath: + binary_data[RUNPATH].extend(runpath) + elif rpath: + binary_data[RUNPATH].extend(rpath) + + # Converting runpath to a tuple, which is a hashable data type and can act as + # a key in a dict. + binary_data[RUNPATH] = tuple(binary_data[RUNPATH]) + # the NEEDED list must not be modified, converting to a tuple. + binary_data[NEEDED_SONAMES] = tuple(binary_data[NEEDED_SONAMES]) + binary_data["RUNPATH RPATH the same"] = (runpath == rpath) + binary_data["RPATH set"] = bool(rpath) + binary_data["RUNPATH set"] = bool(runpath) + return binary_data + + +class CheckpkgManagerBase(object): + """Common functions between the older and newer calling functions.""" + + def __init__(self, name, stats_basedir, md5sum_list, debug=False): + self.debug = debug + self.name = name + self.md5sum_list = md5sum_list + self.stats_basedir = stats_basedir + self.errors = [] + self.individual_checks = [] + self.set_checks = [] + self.packages = [] + + def GetPackageStatsList(self): + return [package_stats.PackageStats(None, self.stats_basedir, x) + for x in self.md5sum_list] + + def FormatReports(self, errors, messages, gar_lines): + namespace = { + "name": self.name, + "errors": errors, + "debug": self.debug, + "textwrap": textwrap, + "messages": messages, + "gar_lines": gar_lines, + } + screen_t = Template.Template(SCREEN_ERROR_REPORT_TMPL, searchList=[namespace]) + tags_report_t = Template.Template(TAG_REPORT_TMPL, searchList=[namespace]) + return screen_t, tags_report_t + + def SetErrorsToDict(self, set_errors, a_dict): + # These were generated by a set, but are likely to be bound to specific + # packages. We'll try to preserve the package assignments. + errors = copy.copy(a_dict) + for tag in set_errors: + if tag.pkgname: + if not tag.pkgname in errors: + errors[tag.pkgname] = [] + errors[tag.pkgname].append(tag) + else: + if "package-set" not in errors: + errors["package-set"] = [] + errors["package-set"].append(tag) + return errors + + def GetOptimizedAllStats(self, stats_obj_list): + logging.info("Unwrapping candies...") + pkgs_data = [] + counter = itertools.count() + length = len(stats_obj_list) + bar = progressbar.ProgressBar() + bar.maxval = length + bar.start() + for stats_obj in stats_obj_list: + # pkg_data = {} + # This bit is tightly tied to the data structures returned by + # PackageStats. + # + # Python strings are already implementing the flyweight pattern. What's + # left is lists and dictionaries. + i = counter.next() + # logging.debug("Loading stats for %s (%s/%s)", + # stats_obj.md5sum, i, length) + raw_pkg_data = stats_obj.GetAllStats() + pkg_data = raw_pkg_data + pkgs_data.append(pkg_data) + bar.update(i) + bar.finish() + return pkgs_data + + def Run(self): + """Runs all the checks + + Returns a tuple of an exit code and a report. + """ + packages_data = self.GetPackageStatsList() + db_stat_objs_by_pkgname = {} + obj_id_list = [] + for pkg in packages_data: + db_obj = pkg.GetDbObject() + db_stat_objs_by_pkgname[db_obj.pkginst.pkgname] = db_obj + obj_id_list.append(db_obj.id) + logging.debug("Deleting old %s errors from the database.", + db_obj.pkginst.pkgname) + conn = sqlobject.sqlhub.processConnection + # It's the maximum number of ORs in a SQL statement. + # Slicing the long list up into s-sized segments. 1000 is too much. + obj_id_lists = SliceList(obj_id_list, 900) + for obj_id_list in obj_id_lists: + # WARNING: This is raw SQL, potentially breaking during a transition to + # another db. It's here for efficiency. + sql = ("DELETE FROM checkpkg_error_tag WHERE %s;" + % " OR ".join("srv4_file_id = %s" % x for x in obj_id_list)) + conn.query(sql) + # Need to construct the predicate by hand. Otherwise: + # File "/opt/csw/lib/python/site-packages/sqlobject/sqlbuilder.py", + # line 829, in OR + # return SQLOp("OR", op1, OR(*ops)) + # RuntimeError: maximum recursion depth exceeded while calling a Python object + # + # The following also tries to use recursion and fails. + # delete_predicate = sqlobject.OR(False) + # for pred in delete_predicate_list: + # delete_predicate = sqlobject.OR(delete_predicate, pred) + # conn.query( + # conn.sqlrepr(sqlbuilder.Delete(m.CheckpkgErrorTag.sqlmeta.table, + # delete_predicate + # ))) + # res = m.CheckpkgErrorTag.select(m.CheckpkgErrorTag.q.srv4_file==db_obj) + # for obj in res: + # obj.destroySelf() + errors, messages, gar_lines = self.GetAllTags(packages_data) + no_errors = len(errors) + 1 + bar = progressbar.ProgressBar() + bar.maxval = no_errors + count = itertools.count(1) + logging.info("Stuffing the candies under the pillow...") + bar.start() + for pkgname, es in errors.iteritems(): + logging.debug("Saving %s errors to the database.", pkgname) + for e in es: + db_error = m.CheckpkgErrorTag(srv4_file=db_stat_objs_by_pkgname[e.pkgname], + pkgname=e.pkgname, + tag_name=e.tag_name, + tag_info=e.tag_info, + msg=e.msg) + bar.update(count.next()) + bar.finish() + flat_error_list = reduce(operator.add, errors.values(), []) + screen_report, tags_report = self.FormatReports(errors, messages, gar_lines) + exit_code = 0 + return (exit_code, screen_report, tags_report) + + +class CheckInterfaceBase(object): + """Proxies interaction with checking functions. + + It wraps access to the /var/sadm/install/contents cache. + """ + + def __init__(self, system_pkgmap=None, lines_dict=None): + self.system_pkgmap = system_pkgmap + if not self.system_pkgmap: + self.system_pkgmap = SystemPkgmap() + self.common_paths = {} + if lines_dict: + self.lines_dict = lines_dict + else: + self.lines_dict = {} + + def GetPathsAndPkgnamesByBasename(self, basename): + """Proxies calls to self.system_pkgmap.""" + return self.system_pkgmap.GetPathsAndPkgnamesByBasename(basename) + + def GetPkgByPath(self, path): + """Proxies calls to self.system_pkgmap.""" + return self.system_pkgmap.GetPkgByPath(path) + + def GetInstalledPackages(self, initialize=True): + return self.system_pkgmap.GetInstalledPackages(initialize) + + def _GetPathsForArch(self, arch): + if not arch in self.lines_dict: + file_name = os.path.join( + os.path.dirname(__file__), "..", "..", "etc", "commondirs-%s" % arch) + logging.debug("opening %s", file_name) + f = open(file_name, "r") + self.lines_dict[arch] = f.read().splitlines() + f.close() + return self.lines_dict[arch] + + def GetCommonPaths(self, arch): + """Returns a list of paths for architecture, from gar/etc/commondirs*.""" + # TODO: If this was cached, it could save a significant amount of time. + if arch not in ('i386', 'sparc', 'all'): + logging.warn("Wrong arch: %s", repr(arch)) + return [] + if arch == 'all': + archs = ('i386', 'sparc') + else: + archs = [arch] + lines = [] + for arch in archs: + lines.extend(self._GetPathsForArch(arch)) + return lines + + +class IndividualCheckInterface(CheckInterfaceBase): + """To be passed to the checking functions. + + Wraps the creation of tag.CheckpkgTag objects. + """ + + def __init__(self, pkgname, system_pkgmap=None): + super(IndividualCheckInterface, self).__init__(system_pkgmap) + self.pkgname = pkgname + self.errors = [] + + def ReportError(self, tag_name, tag_info=None, msg=None): + logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s)", + repr(tag_name), repr(tag_info), repr(msg)) + checkpkg_tag = tag.CheckpkgTag(self.pkgname, tag_name, tag_info, msg=msg) + self.errors.append(checkpkg_tag) + + +class SetCheckInterface(CheckInterfaceBase): + """To be passed to set checking functions.""" + + def __init__(self, system_pkgmap=None): + super(SetCheckInterface, self).__init__(system_pkgmap) + self.errors = [] + + def ReportError(self, pkgname, tag_name, tag_info=None, msg=None): + logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s, %s)", + repr(pkgname), + repr(tag_name), repr(tag_info), repr(msg)) + checkpkg_tag = tag.CheckpkgTag(pkgname, tag_name, tag_info, msg=msg) + self.errors.append(checkpkg_tag) + + +class CheckpkgMessenger(object): + """Class responsible for passing messages from checks to the user.""" + def __init__(self): + self.messages = [] + self.one_time_messages = {} + self.gar_lines = [] + + def Message(self, m): + logging.debug("self.messenger.Message(%s)", repr(m)) + self.messages.append(m) + + def OneTimeMessage(self, key, m): + logging.debug("self.messenger.OneTimeMessage(%s, %s)", repr(key), repr(m)) + if key not in self.one_time_messages: + self.one_time_messages[key] = m + + def SuggestGarLine(self, m): + logging.debug("self.messenger.SuggestGarLine(%s)", repr(m)) + self.gar_lines.append(m) + + +class CheckpkgManager2(CheckpkgManagerBase): + """The second incarnation of the checkpkg manager. + + Implements the API to be used by checking functions. + + Its purpose is to reduce the amount of boilerplate code and allow for easier + unit test writing. + """ + def _RegisterIndividualCheck(self, function): + self.individual_checks.append(function) + + def _RegisterSetCheck(self, function): + self.set_checks.append(function) + + def _AutoregisterChecks(self): + """Autodetects all defined checks.""" + logging.debug("CheckpkgManager2._AutoregisterChecks()") + checkpkg_module = package_checks + members = dir(checkpkg_module) + for member_name in members: + logging.debug("Examining module member: %s", repr(member_name)) + member = getattr(checkpkg_module, member_name) + if callable(member): + if member_name.startswith("Check"): + logging.debug("Registering individual check %s", repr(member_name)) + self._RegisterIndividualCheck(member) + elif member_name.startswith("SetCheck"): + logging.debug("Registering set check %s", repr(member_name)) + self._RegisterSetCheck(member) + + def GetAllTags(self, stats_obj_list): + errors = {} + pkgmap = SystemPkgmap() + logging.debug("Loading all package statistics.") + pkgs_data = self.GetOptimizedAllStats(stats_obj_list) + logging.debug("All package statistics loaded.") + messenger = CheckpkgMessenger() + # Individual checks + count = itertools.count() + bar = progressbar.ProgressBar() + bar.maxval = len(pkgs_data) * len(self.individual_checks) + logging.info("Tasting candies one by one...") + bar.start() + for pkg_data in pkgs_data: + pkgname = pkg_data["basic_stats"]["pkgname"] + check_interface = IndividualCheckInterface(pkgname, pkgmap) + for function in self.individual_checks: + logger = logging.getLogger("%s-%s" % (pkgname, function.__name__)) + logger.debug("Calling %s", function.__name__) + function(pkg_data, check_interface, logger=logger, messenger=messenger) + if check_interface.errors: + errors[pkgname] = check_interface.errors + bar.update(count.next()) + bar.finish() + # Set checks + logging.info("Tasting them all at once...") + for function in self.set_checks: + logger = logging.getLogger(function.__name__) + check_interface = SetCheckInterface(pkgmap) + logger.debug("Calling %s", function.__name__) + function(pkgs_data, check_interface, logger=logger, messenger=messenger) + if check_interface.errors: + errors = self.SetErrorsToDict(check_interface.errors, errors) + messages = messenger.messages + messenger.one_time_messages.values() + return errors, messages, messenger.gar_lines + + def Run(self): + self._AutoregisterChecks() + return super(CheckpkgManager2, self).Run() + + +def GetIsalist(): + args = ["isalist"] + isalist_proc = subprocess.Popen(args, stdout=subprocess.PIPE) + stdout, stderr = isalist_proc.communicate() + ret = isalist_proc.wait() + if ret: + logging.error("Calling isalist has failed.") + isalist = re.split(r"\s+", stdout.strip()) + return tuple(isalist) + + +def ErrorTagsFromFile(file_name): + fd = open(file_name) + error_tags = [] + for line in fd: + if line.startswith("#"): + continue + pkgname, tag_name, tag_info = tag.ParseTagLine(line) + error_tags.append(tag.CheckpkgTag(pkgname, tag_name, tag_info)) + return error_tags + + +def SliceList(l, size): + """Trasforms a list into a list of lists.""" + idxes = xrange(0, len(l), size) + sliced = [l[i:i+size] for i in idxes] + return sliced + def IsMd5(s): # For optimization, move the compilation elsewhere. - return MD5_RE.match(s) + md5_re = re.compile(MD5_RE) + return md5_re.match(s) def GetPackageStatsByFilenamesOrMd5s(args, debug=False): filenames = [] @@ -128,15 +1059,15 @@ filenames.append(arg) srv4_pkgs = [inspective_package.InspectiveCswSrv4File(x) for x in filenames] pkgstat_objs = [] - pbar = progressbar.ProgressBar() - pbar.maxval = len(md5s) + len(srv4_pkgs) - pbar.start() + bar = progressbar.ProgressBar() + bar.maxval = len(md5s) + len(srv4_pkgs) + bar.start() counter = itertools.count() for pkg in srv4_pkgs: pkgstat_objs.append(package_stats.PackageStats(pkg, debug=debug)) - pbar.update(counter.next()) + bar.update(counter.next()) for md5 in md5s: pkgstat_objs.append(package_stats.PackageStats(None, md5sum=md5, debug=debug)) - pbar.update(counter.next()) - pbar.finish() + bar.update(counter.next()) + bar.finish() return pkgstat_objs Deleted: csw/mgar/gar/v2/lib/python/checkpkg2.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg2.py 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/lib/python/checkpkg2.py 2010-12-10 20:55:58 UTC (rev 11880) @@ -1,178 +0,0 @@ -#!/usr/bin/env python2.6 -# -# checkpkg -# - -import logging -import operator -import optparse -import os -import sys -import textwrap -import configuration -import datetime -import database - -import package_stats -import checkpkg -import checkpkg_lib -import overrides -import models -import sqlobject - -USAGE = """%prog [ options ] pkg1 [ pkg2 [ ... ] ]""" -CHECKPKG_MODULE_NAME = "The main checking module." -BEFORE_OVERRIDES = """If any of the reported errors were false positives, you -can override them pasting the lines below to the GAR recipe.""" - -AFTER_OVERRIDES = """Please note that checkpkg isn't suggesting you should -simply add these overrides do the Makefile. It only informs what the overrides -could look like. You need to understand what are the reported issues about and -use your best judgement to decide whether to fix the underlying problems or -override them. For more information, scroll up and read the detailed -messages.""" - -UNAPPLIED_OVERRIDES = """WARNING: Some overrides did not match any errors. -They can be removed, as they don't take any effect anyway. If you're getting -errors at the same time, maybe you didn't specify the overrides correctly.""" - - -class Error(Exception): - """Generic error.""" - - -class UsageError(Error): - """Problem with usage, e.g. command line options.""" - - -def main(): - configuration.SetUpSqlobjectConnection() - parser = optparse.OptionParser(USAGE) - parser.add_option("-d", "--debug", - dest="debug", - action="store_true", - default=False, - help="Switch on debugging messages") - parser.add_option("-q", "--quiet", - dest="quiet", - action="store_true", - default=False, - help="Display less messages") - parser.add_option("--catalog-release", - dest="catrel", - default="unstable", - help="A catalog release: experimental, unstable, testing, stable.") - parser.add_option("-r", "--os-releases", - dest="osrel_commas", - help=("Comma separated list of ['SunOS5.9', 'SunOS5.10'], " - "e.g. 'SunOS5.9,SunOS5.10'.")) - parser.add_option("-a", "--architecture", - dest="arch", - help="Architecture: i386, sparc.") - parser.add_option("--profile", dest="profile", - default=False, action="store_true", - help="Enable profiling (a developer option).") - options, args = parser.parse_args() - assert len(args), "The list of files or md5 sums must be not empty." - logging_level = logging.INFO - if options.quiet: - logging_level = logging.WARNING - elif options.debug: - # If both flags are set, debug wins. - logging_level = logging.DEBUG - logging.basicConfig(level=logging_level) - logging.debug("Starting.") - - dm = database.DatabaseManager() - dm.AutoManage() - - - err_msg_list = [] - if not options.osrel_commas: - err_msg_list.append("Please specify --os-releases.") - if not options.arch: - err_msg_list.append("Please specify --architecture.") - if err_msg_list: - raise UsageError(" ".join(err_msg_list)) - - stats_list = [] - collector = package_stats.StatsCollector( - logger=logging, - debug=options.debug) - # We need to separate files and md5 sums. - md5_sums, file_list = [], [] - for arg in args: - if checkpkg.MD5_RE.match(arg): - md5_sums.append(arg) - else: - file_list.append(arg) - if file_list: - stats_list = collector.CollectStatsFromFiles(file_list, None) - # We need the md5 sums of these files - md5_sums.extend([x["basic_stats"]["md5_sum"] for x in stats_list]) - assert md5_sums, "The list of md5 sums must not be empty." - logging.debug("md5_sums: %s", md5_sums) - osrel_list = options.osrel_commas.split(",") - logging.debug("Reading packages data from the database.") - # This part might need improvements in order to handle a whole - # catalog. On the other hand, if we already have the whole catalog in - # the database, we can do it altogether differently. - # Transforming the result to a list in order to force object - # retrieval. - sqo_pkgs = list(models.Srv4FileStats.select( - sqlobject.IN(models.Srv4FileStats.q.md5_sum, md5_sums))) - tags_for_all_osrels = [] - sqo_arch = models.Architecture.selectBy(name=options.arch).getOne() - sqo_catrel = models.CatalogRelease.selectBy(name=options.catrel).getOne() - for osrel in osrel_list: - sqo_osrel = models.OsRelease.selectBy(short_name=osrel).getOne() - check_manager = checkpkg_lib.CheckpkgManager2( - CHECKPKG_MODULE_NAME, - sqo_pkgs, - osrel, - options.arch, - options.catrel, - debug=options.debug, - show_progress=(not options.quiet)) - # Running the checks, reporting and exiting. - exit_code, screen_report, tags_report = check_manager.Run() - screen_report = unicode(screen_report) - if not options.quiet and screen_report: - # TODO: Write this to screen only after overrides are applied. - sys.stdout.write(screen_report) - else: - logging.debug("No screen report.") - - overrides_list = [list(pkg.GetOverridesResult()) for pkg in sqo_pkgs] - override_list = reduce(operator.add, overrides_list) - args = (sqo_osrel, sqo_arch, sqo_catrel) - tag_lists = [list(pkg.GetErrorTagsResult(*args)) for pkg in sqo_pkgs] - error_tags = reduce(operator.add, tag_lists) - # TODO: Set the 'overriden' tag for specific error tags - (tags_after_overrides, - unapplied_overrides) = overrides.ApplyOverrides(error_tags, override_list) - tags_for_all_osrels.extend(tags_after_overrides) - if not options.quiet: - if tags_after_overrides: - print textwrap.fill(BEFORE_OVERRIDES, 80) - for checkpkg_tag in tags_after_overrides: - print checkpkg_tag.ToGarSyntax() - print textwrap.fill(AFTER_OVERRIDES, 80) - if unapplied_overrides: - print textwrap.fill(UNAPPLIED_OVERRIDES, 80) - for override in unapplied_overrides: - print "* Unused %s" % override - exit_code = bool(tags_for_all_osrels) - sys.exit(exit_code) - - -if __name__ == '__main__': - if "--profile" in sys.argv: - import cProfile - t_str = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") - home = os.environ["HOME"] - cprof_file_name = os.path.join( - home, ".checkpkg", "run-modules-%s.cprof" % t_str) - cProfile.run("main()", sort=1, filename=cprof_file_name) - else: - main() Deleted: csw/mgar/gar/v2/lib/python/checkpkg_lib.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_lib.py 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/lib/python/checkpkg_lib.py 2010-12-10 20:55:58 UTC (rev 11880) @@ -1,600 +0,0 @@ -# A collection of checkpkg-specific classes. -# -# This file is supposed to drain the checkpkg.py file until is becomes -# empty and goes away. - -import copy -from Cheetah import Template -import logging -import package_stats -import package_checks -import sqlobject -import itertools -import progressbar -import database -import models as m -import textwrap -import os.path -import tag -import pprint -import operator -import common_constants -import sharedlib_utils -import mute_progressbar -import cPickle - - -class Error(Exception): - pass - - -class CatalogDatabaseError(Error): - pass - - -SCREEN_ERROR_REPORT_TMPL = u"""#if $errors -#if $debug -ERROR: One or more errors have been found by $name. -#end if -#for $pkgname in $errors -$pkgname: -#for $error in $errors[$pkgname] -#if $debug - $repr($error) -#elif $error.msg -$textwrap.fill($error.msg, 78, initial_indent="# ", subsequent_indent="# ") -# -> $repr($error) - -#end if -#end for -#end for -#else -#if $debug -OK: $repr($name) module found no problems. -#end if -#end if -#if $messages -#for $msg in $messages -$textwrap.fill($msg, 78, initial_indent=" * ", subsequent_indent=" ") -#end for -#end if -#if $gar_lines - -# Checkpkg suggests adding the following lines to the GAR recipe: -# This is a summary; see above for details. -#for $line in $gar_lines -$line -#end for -#end if -""" - -# http://www.cheetahtemplate.org/docs/users_guide_html_multipage/language.directives.closures.html -TAG_REPORT_TMPL = u"""#if $errors -# Tags reported by $name module -#for $pkgname in $errors -#for $tag in $errors[$pkgname] -#if $tag.msg -$textwrap.fill($tag.msg, 70, initial_indent="# ", subsequent_indent="# ") -#end if -$pkgname: ${tag.tag_name}#if $tag.tag_info# $tag.tag_info#end if# -#end for -#end for -#end if -""" - - -class SqlobjectHelperMixin(object): - - def GetSqlobjectTriad(self, osrel, arch, catrel): - logging.debug("GetSqlobjectTriad(%s, %s, %s)", osrel, arch, catrel) - sqo_arch = m.Architecture.select( - m.Architecture.q.name==arch).getOne() - sqo_osrel = m.OsRelease.select( - m.OsRelease.q.short_name==osrel).getOne() - sqo_catrel = m.CatalogRelease.select( - m.CatalogRelease.q.name==catrel).getOne() - return sqo_osrel, sqo_arch, sqo_catrel - - -class CheckpkgManagerBase(SqlobjectHelperMixin): - """Common functions between the older and newer calling functions.""" - - def __init__(self, name, sqo_pkgs_list, osrel, arch, catrel, debug=False, - show_progress=False): - self.debug = debug - self.name = name - self.sqo_pkgs_list = sqo_pkgs_list - self.errors = [] - self.individual_checks = [] - self.set_checks = [] - self.packages = [] - self.osrel = osrel - self.arch = arch - self.catrel = catrel - self.show_progress = show_progress - - def GetProgressBar(self): - if self.show_progress: - return progressbar.ProgressBar() - else: - return mute_progressbar.MuteProgressBar() - - def GetSqlobjectTriad(self): - return super(CheckpkgManagerBase, self).GetSqlobjectTriad( - self.osrel, self.arch, self.catrel) - - def GetPackageStatsList(self): - raise RuntimeError("Please don't use this function as it violates " - "the Law of Demeter.") - - def FormatReports(self, errors, messages, gar_lines): - namespace = { - "name": self.name, - "errors": errors, - "debug": self.debug, - "textwrap": textwrap, - "messages": messages, - "gar_lines": gar_lines, - } - screen_t = Template.Template(SCREEN_ERROR_REPORT_TMPL, searchList=[namespace]) - tags_report_t = Template.Template(TAG_REPORT_TMPL, searchList=[namespace]) - return screen_t, tags_report_t - - def SetErrorsToDict(self, set_errors, a_dict): - # These were generated by a set, but are likely to be bound to specific - # packages. We'll try to preserve the package assignments. - errors = copy.copy(a_dict) - for tag in set_errors: - if tag.pkgname: - if not tag.pkgname in errors: - errors[tag.pkgname] = [] - errors[tag.pkgname].append(tag) - else: - if "package-set" not in errors: - errors["package-set"] = [] - errors["package-set"].append(tag) - return errors - - def GetOptimizedAllStats(self, stats_obj_list): - logging.info("Unwrapping candies...") - pkgs_data = [] - counter = itertools.count() - length = len(stats_obj_list) - pbar = self.GetProgressBar() - pbar.maxval = length - pbar.start() - for stats_obj in stats_obj_list: - # This bit is tightly tied to the data structures returned by - # PackageStats. - # - # Python strings are already implementing the flyweight pattern. What's - # left is lists and dictionaries. - i = counter.next() - raw_pkg_data = cPickle.loads(stats_obj.data_obj.pickle) - pkg_data = raw_pkg_data - pkgs_data.append(pkg_data) - pbar.update(i) - pbar.finish() - return pkgs_data - - def Run(self): - """Runs all the checks - - Returns a tuple of an exit code and a report. - """ - # packages_data = self.GetPackageStatsList() - assert self.sqo_pkgs_list, "The list of packages must not be empty." - db_stat_objs_by_pkgname = {} - for pkg in self.sqo_pkgs_list: - db_stat_objs_by_pkgname[pkg.pkginst.pkgname] = pkg - logging.debug("Deleting old errors from the database.") - for pkgname, db_obj in db_stat_objs_by_pkgname.iteritems(): - sqo_os_rel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad() - db_obj.RemoveCheckpkgResults( - sqo_os_rel, sqo_arch, sqo_catrel) - errors, messages, gar_lines = self.GetAllTags(self.sqo_pkgs_list) - no_errors = len(errors) + 1 - pbar = self.GetProgressBar() - pbar.maxval = no_errors - count = itertools.count(1) - logging.info("Stuffing the candies under the pillow...") - pbar.start() - for pkgname, es in errors.iteritems(): - logging.debug("Saving errors of %s to the database.", pkgname) - for e in es: - if e.pkgname not in db_stat_objs_by_pkgname: - logging.warning("Not saving an error for %s.", e.pkgname) - continue - db_error = m.CheckpkgErrorTag(srv4_file=db_stat_objs_by_pkgname[e.pkgname], - pkgname=e.pkgname, - tag_name=e.tag_name, - tag_info=e.tag_info, - msg=e.msg, - os_rel=sqo_os_rel, - catrel=sqo_catrel, - arch=sqo_arch) - pbar.update(count.next()) - pbar.finish() - flat_error_list = reduce(operator.add, errors.values(), []) - screen_report, tags_report = self.FormatReports(errors, messages, gar_lines) - exit_code = 0 - return (exit_code, screen_report, tags_report) - - -class CheckInterfaceBase(object): - """Provides an interface for checking functions. - - It wraps access to the catalog database. - """ - - def __init__(self, osrel, arch, catrel, catalog=None, lines_dict=None): - self.osrel = osrel - self.arch = arch - self.catrel = catrel - self.catalog = catalog - if not self.catalog: - self.catalog = Catalog() - self.common_paths = {} - if lines_dict: - self.lines_dict = lines_dict - else: - self.lines_dict = {} - - def GetPathsAndPkgnamesByBasename(self, basename): - """Proxies calls to class member.""" - return self.catalog.GetPathsAndPkgnamesByBasename( - basename, self.osrel, self.arch, self.catrel) - - def GetPkgByPath(self, file_path): - """Proxies calls to self.system_pkgmap.""" - return self.catalog.GetPkgByPath( - file_path, self.osrel, self.arch, self.catrel) - - def GetInstalledPackages(self): - return self.catalog.GetInstalledPackages( - self.osrel, self.arch, self.catrel) - - def _GetPathsForArch(self, arch): - if not arch in self.lines_dict: - file_name = os.path.join( - os.path.dirname(__file__), "..", "..", "etc", "commondirs-%s" % arch) - logging.debug("opening %s", file_name) - f = open(file_name, "r") - self.lines_dict[arch] = f.read().splitlines() - f.close() - return self.lines_dict[arch] - - def GetCommonPaths(self, arch): - """Returns a list of paths for architecture, from gar/etc/commondirs*.""" - # TODO: If this was cached, it could save a significant amount of time. - if arch not in ('i386', 'sparc', 'all'): - logging.warn("Wrong arch: %s", repr(arch)) - return [] - if arch == 'all': - archs = ('i386', 'sparc') - else: - archs = [arch] - lines = [] - for arch in archs: - lines.extend(self._GetPathsForArch(arch)) - return lines - - -class IndividualCheckInterface(CheckInterfaceBase): - """To be passed to the checking functions. - - Wraps the creation of tag.CheckpkgTag objects. - """ - - def __init__(self, pkgname, osrel, arch, catrel, catalog=None): - super(IndividualCheckInterface, self).__init__(osrel, arch, catrel, catalog) - self.pkgname = pkgname - self.errors = [] - - def ReportError(self, tag_name, tag_info=None, msg=None): - logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s)", - repr(tag_name), repr(tag_info), repr(msg)) - checkpkg_tag = tag.CheckpkgTag(self.pkgname, tag_name, tag_info, msg=msg) - self.errors.append(checkpkg_tag) - - -class SetCheckInterface(CheckInterfaceBase): - """To be passed to set checking functions.""" - - def __init__(self, osrel, arch, catrel, catalog=None): - super(SetCheckInterface, self).__init__(osrel, arch, catrel, catalog) - self.errors = [] - - def ReportError(self, pkgname, tag_name, tag_info=None, msg=None): - logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s, %s)", - repr(pkgname), - repr(tag_name), repr(tag_info), repr(msg)) - checkpkg_tag = tag.CheckpkgTag(pkgname, tag_name, tag_info, msg=msg) - self.errors.append(checkpkg_tag) - - -class CheckpkgMessenger(object): - """Class responsible for passing messages from checks to the user.""" - def __init__(self): - self.messages = [] - self.one_time_messages = {} - self.gar_lines = [] - - def Message(self, m): - logging.debug("self.messenger.Message(%s)", repr(m)) - self.messages.append(m) - - def OneTimeMessage(self, key, m): - logging.debug("self.messenger.OneTimeMessage(%s, %s)", repr(key), repr(m)) - if key not in self.one_time_messages: - self.one_time_messages[key] = m - - def SuggestGarLine(self, m): - logging.debug("self.messenger.SuggestGarLine(%s)", repr(m)) - self.gar_lines.append(m) - - -class CheckpkgManager2(CheckpkgManagerBase): - """The second incarnation of the checkpkg manager. - - Implements the API to be used by checking functions. - - Its purpose is to reduce the amount of boilerplate code and allow for easier - unit test writing. - """ - def _RegisterIndividualCheck(self, function): - self.individual_checks.append(function) - - def _RegisterSetCheck(self, function): - self.set_checks.append(function) - - def _AutoregisterChecks(self): - """Autodetects all defined checks.""" - logging.debug("CheckpkgManager2._AutoregisterChecks()") - checkpkg_module = package_checks - members = dir(checkpkg_module) - for member_name in members: - logging.debug("Examining module member: %s", repr(member_name)) - member = getattr(checkpkg_module, member_name) - if callable(member): - if member_name.startswith("Check"): - logging.debug("Registering individual check %s", repr(member_name)) - self._RegisterIndividualCheck(member) - elif member_name.startswith("SetCheck"): - logging.debug("Registering set check %s", repr(member_name)) - self._RegisterSetCheck(member) - - def GetAllTags(self, stats_obj_list): - errors = {} - catalog = Catalog() - logging.debug("Loading all package statistics.") - pkgs_data = self.GetOptimizedAllStats(stats_obj_list) - logging.debug("All package statistics loaded.") - messenger = CheckpkgMessenger() - # Individual checks - count = itertools.count() - pbar = self.GetProgressBar() - pbar.maxval = len(pkgs_data) * len(self.individual_checks) - logging.info("Tasting candies one by one...") - pbar.start() - for pkg_data in pkgs_data: - pkgname = pkg_data["basic_stats"]["pkgname"] - check_interface = IndividualCheckInterface( - pkgname, self.osrel, self.arch, self.catrel, catalog) - for function in self.individual_checks: - logger = logging.getLogger("%s-%s" % (pkgname, function.__name__)) - logger.debug("Calling %s", function.__name__) - function(pkg_data, check_interface, logger=logger, messenger=messenger) - if check_interface.errors: - errors[pkgname] = check_interface.errors - pbar.update(count.next()) - pbar.finish() - # Set checks - logging.info("Tasting them all at once...") - for function in self.set_checks: - logger = logging.getLogger(function.__name__) - check_interface = SetCheckInterface( - self.osrel, self.arch, self.catrel, catalog) - logger.debug("Calling %s", function.__name__) - function(pkgs_data, check_interface, logger=logger, messenger=messenger) - if check_interface.errors: - errors = self.SetErrorsToDict(check_interface.errors, errors) - messages = messenger.messages + messenger.one_time_messages.values() - return errors, messages, messenger.gar_lines - - def Run(self): - self._AutoregisterChecks() - return super(CheckpkgManager2, self).Run() - - -def SliceList(l, size): - """Trasforms a list into a list of lists.""" - idxes = xrange(0, len(l), size) - sliced = [l[i:i+size] for i in idxes] - return sliced - - -class CatalogMixin(SqlobjectHelperMixin): - """Responsible for functionality related to catalog operations. - - These include: - - getting a list of all packages - - getting a list of packages that contain certain files - - getting a list of packages that contain files of certain names - """ - - def __init__(self): - super(CatalogMixin, self).__init__() - self.pkgs_by_path_cache = {} - - def GetInstalledPackages(self, osrel, arch, catrel): - sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( - osrel, arch, catrel) - res = m.Srv4FileInCatalog.select( - sqlobject.AND( - m.Srv4FileInCatalog.q.osrel==sqo_osrel, - m.Srv4FileInCatalog.q.arch==sqo_arch, - m.Srv4FileInCatalog.q.catrel==sqo_catrel)) - pkgs = [] - for srv4_in_cat in res: - pkgs.append(srv4_in_cat.srv4file.pkginst.pkgname) - return pkgs - - def GetPathsAndPkgnamesByBasename(self, basename, osrel, arch, catrel): - """Retrieves pkginst names of packages that have certain files. - - Since it needs to match a specific catalog, a table join is required: - - CswFile (basename) - - related Srv4FileStats - - related Srv4FileInCatalog - - Args: - basename: u'libfoo.so.1' - osrel: u'5.9' - arch: 'sparc', 'x86' - catrel: 'stable' - - Returns: - {"/opt/csw/lib": ["CSWfoo", "CSWbar"], - "/opt/csw/1/lib": ["CSWfoomore"]} - """ - pkgs = {} - sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( - osrel, arch, catrel) - - # Looks like this join is hard to do that way. - # res = m.Srv4FileInCatalog.select( - # sqlobject.AND( - # m.Srv4FileInCatalog.q.osrel==sqo_osrel, - # m.Srv4FileInCatalog.q.arch==sqo_arch, - # m.Srv4FileInCatalog.q.catrel==sqo_catrel)). - # throughTo.srv4file.thoughTo.files - - # We'll implement it on the application level. First, we'll get all - # the files that match the basename, and then filter them based on - # catalog properties. - res = m.CswFile.select(m.CswFile.q.basename==basename) - file_list = [] - for f in res: - # Check whether osrel, arch and catrel are matching. - for cat in f.srv4_file.in_catalogs: - if (f.srv4_file.registered - and cat.osrel == sqo_osrel - and cat.arch == sqo_arch - and cat.catrel == sqo_catrel): - file_list.append(f) - for obj in file_list: - pkgs.setdefault(obj.path, []) - pkgs[obj.path].append(obj.pkginst.pkgname) - logging.debug("self.error_mgr_mock.GetPathsAndPkgnamesByBasename(%s)" - ".AndReturn(%s)", repr(basename), pprint.pformat(pkgs)) - return pkgs - - def GetPkgByPath(self, full_file_path, osrel, arch, catrel): - """Returns a list of packages.""" - # Memoization for performance - key = (full_file_path, osrel, arch, catrel) - if key not in self.pkgs_by_path_cache: - pkgs = [] - file_path, basename = os.path.split(full_file_path) - sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( - osrel, arch, catrel) - res = m.CswFile.select( - sqlobject.AND( - m.CswFile.q.path==file_path, - m.CswFile.q.basename==basename)) - for sqo_file in res: - # Making sure that we're taking packages only from the right catalog. - for cat in sqo_file.srv4_file.in_catalogs: - if (sqo_file.srv4_file.registered - and cat.osrel == sqo_osrel - and cat.arch == sqo_arch - and cat.catrel == sqo_catrel): - pkgs.append(sqo_file.srv4_file.pkginst.pkgname) - self.pkgs_by_path_cache[key] = frozenset(pkgs) - return self.pkgs_by_path_cache[key] - - def CommonArchByString(self, s): - return sharedlib_utils.ArchByString(s) - - def Srv4MatchesCatalog(self, sqo_srv4, sqo_arch): - cat_arch = self.CommonArchByString(sqo_arch.name) - pkg_arch = self.CommonArchByString(sqo_srv4.arch.name) - ans = (cat_arch == pkg_arch) or (pkg_arch == common_constants.ARCH_ALL) - if not ans: - logging.debug("Srv4MatchesCatalog(): mismatch: %s / %s and %s / %s", - cat_arch, pkg_arch, pkg_arch, common_constants.ARCH_ALL) - # Some packages have the architecture in the file saying 'all', but pkginfo - # says 'i386'. - filename_arch = self.CommonArchByString(sqo_srv4.filename_arch.name) - if filename_arch == common_constants.ARCH_ALL: - ans = True - if filename_arch != pkg_arch: - logging.warning( - "Package %s declares %s in pkginfo and %s in the filename.", - sqo_srv4, repr(pkg_arch), repr(filename_arch)) - return ans - - def AddSrv4ToCatalog(self, sqo_srv4, osrel, arch, catrel): - """Registers a srv4 file in a catalog.""" - logging.debug("AddSrv4ToCatalog(%s, %s, %s, %s)", - sqo_srv4, osrel, arch, catrel) - sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( - osrel, arch, catrel) - if not self.Srv4MatchesCatalog(sqo_srv4, sqo_arch): - raise CatalogDatabaseError( - "Specified package does not match the catalog. " - "Package: %s, catalog: %s %s %s" - % (sqo_srv4, osrel, arch, catrel)) - if not sqo_srv4.registered: - raise CatalogDatabaseError( - "Package %s (%s) is not registered for releases." - % (sqo_srv4.basename, sqo_srv4.md5_sum)) - # Checking for presence of a different srv4 with the same pkginst in the - # same catalog - pkginst = sqo_srv4.pkginst - res = m.Srv4FileStats.select( - m.Srv4FileStats.q.pkginst==pkginst).throughTo.in_catalogs.filter( - sqlobject.AND( - m.Srv4FileInCatalog.q.osrel==sqo_osrel, - m.Srv4FileInCatalog.q.arch==sqo_arch, - m.Srv4FileInCatalog.q.catrel==sqo_catrel, - m.Srv4FileInCatalog.q.srv4file!=sqo_srv4)) - if len(list(res)): - raise CatalogDatabaseError( - "There already is a package with that pkgname: %s" % pkginst) - # Checking for presence of the same srv4 already in the catalog. - res = m.Srv4FileInCatalog.select( - sqlobject.AND( - m.Srv4FileInCatalog.q.osrel==sqo_osrel, - m.Srv4FileInCatalog.q.arch==sqo_arch, - m.Srv4FileInCatalog.q.catrel==sqo_catrel, - m.Srv4FileInCatalog.q.srv4file==sqo_srv4)) - if len(list(res)): - logging.debug("%s is already part of %s %s %s", - sqo_srv4, osrel, arch, catrel) - # Our srv4 is already part of that catalog. - return - obj = m.Srv4FileInCatalog( - arch=sqo_arch, - osrel=sqo_osrel, - catrel=sqo_catrel, - srv4file=sqo_srv4) - - def RemoveSrv4(self, sqo_srv4, osrel, arch, catrel): - sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( - osrel, arch, catrel) - sqo_srv4_in_cat = m.Srv4FileInCatalog.select( - sqlobject.AND( - m.Srv4FileInCatalog.q.arch==sqo_arch, - m.Srv4FileInCatalog.q.osrel==sqo_osrel, - m.Srv4FileInCatalog.q.catrel==sqo_catrel, - m.Srv4FileInCatalog.q.srv4file==sqo_srv4)).getOne() - sqo_srv4_in_cat.registered = False - # TODO(maciej): Remove all files belonging to that one - for cat_file in sqo_srv4_in_cat.srv4file.files: - cat_file.destroySelf() - - -class Catalog(CatalogMixin): - pass Deleted: csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py 2010-12-10 20:55:58 UTC (rev 11880) @@ -1,74 +0,0 @@ -#!/usr/bin/env python2.6 - -import copy -import unittest -import checkpkg_lib -import tag -import package_stats -import database -import sqlobject -import models -import package_stats -import inspective_package -import mox -import test_base - -from testdata.neon_stats import pkgstats as neon_stats - - -class CheckpkgManager2UnitTest(unittest.TestCase): - - def setUp(self): - super(CheckpkgManager2UnitTest, self).setUp() - self.mox = mox.Mox() - - def testSingleTag(self): - m = checkpkg_lib.CheckpkgManager2( - "testname", [], "5.9", "sparc", "unstable") - tags = { - "CSWfoo": [ - tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), - ], - } - screen_report, tags_report = m.FormatReports(tags, [], []) - expected = u'# Tags reported by testname module\nCSWfoo: foo-tag foo-info\n' - self.assertEqual(expected, unicode(tags_report)) - - def testThreeTags(self): - m = checkpkg_lib.CheckpkgManager2( - "testname", [], "5.9", "sparc", "unstable") - tags = { - "CSWfoo": [ - tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), - tag.CheckpkgTag("CSWfoo", "bar-tag", "bar-info"), - tag.CheckpkgTag("CSWfoo", "baz-tag"), - ], - } - screen_report, tags_report = m.FormatReports(tags, [], []) - expected = (u'# Tags reported by testname module\n' - u'CSWfoo: foo-tag foo-info\n' - u'CSWfoo: bar-tag bar-info\n' - u'CSWfoo: baz-tag\n') - self.assertEqual(expected, unicode(tags_report)) - - -class CheckpkgManager2DatabaseIntegrationTest( - test_base.SqlObjectTestMixin, unittest.TestCase): - - def setUp(self): - super(CheckpkgManager2DatabaseIntegrationTest, self).setUp() - self.mox = mox.Mox() - - def testInsertNeon(self): - self.dbc.InitialDataImport() - sqo_pkg = package_stats.PackageStats.SaveStats(neon_stats[0], True) - cm = checkpkg_lib.CheckpkgManager2( - "testname", [sqo_pkg], "SunOS5.9", "sparc", "unstable", - show_progress=False) - cm.Run() - # Verifying that there are some reported error tags. - self.assertTrue(list(models.CheckpkgErrorTag.select())) - - -if __name__ == '__main__': - unittest.main() Modified: csw/mgar/gar/v2/lib/python/checkpkg_test.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_test.py 2010-12-10 16:48:58 UTC (rev 11879) +++ csw/mgar/gar/v2/lib/python/checkpkg_test.py 2010-12-10 20:55:58 UTC (rev 11880) @@ -1,24 +1,16 @@ -#!/usr/bin/env python2.6 +#!/opt/csw/bin/python2.6 # $Id$ -import copy import re import unittest import mox import difflib import checkpkg -import checkpkg_lib -import database -import models as m import tag -import package_stats -import sqlite3 -import sqlobject -import test_base +import testdata.dump_output_1 as dump_1 +import testdata.dump_output_2 as dump_2 +import testdata.dump_output_3 as dump_3 -from testdata.tree_stats import pkgstats as tree_stats -from testdata.neon_stats import pkgstats as neon_stats - """A set of unit tests for the library checking code. A bunch of lines to test in the interactive Python shell. @@ -31,6 +23,250 @@ SELECT * FROM systempkgmap WHERE basename = 'libncursesw.so.5'; """ +class GetLinesBySonameUnitTest(unittest.TestCase): + + def setUp(self): + self.pkgmap_mocker = mox.Mox() + self.e = checkpkg.LddEmulator() + + def testExpandRunpath_1(self): + isalist = ["foo", "bar"] + runpath = "/opt/csw/lib/$ISALIST" + expected = ["/opt/csw/lib", "/opt/csw/lib/foo", "/opt/csw/lib/bar"] + bin_path = "opt/csw/lib" + self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) + + def testExpandRunpath_2(self): + isalist = ["foo", "bar"] + runpath = "/opt/csw/mysql5/lib/$ISALIST/mysql" + expected = ["/opt/csw/mysql5/lib/mysql", + "/opt/csw/mysql5/lib/foo/mysql", + "/opt/csw/mysql5/lib/bar/mysql"] + bin_path = "opt/csw/lib" + self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) + + def testExpandRunpath_OriginSimple(self): + isalist = () + runpath = "$ORIGIN" + expected = ["/opt/csw/lib"] + bin_path = "opt/csw/lib" + self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) + + def testExpandRunpath_OriginDots(self): + isalist = () + runpath = "$ORIGIN/.." + expected = ["/opt/csw/lib"] + bin_path = "opt/csw/lib/subdir" + self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) + + def testExpandRunpath_Caching(self): + """Make sure that the cache doesn't mess it up. + + Two invocations, where the only difference is the binary path. + """ + isalist = () + runpath = "/opt/csw/lib/foo" + expected = ["/opt/csw/lib/foo"] + bin_path = "opt/csw/lib" + self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) + expected = ["/opt/csw/lib/foo"] + bin_path = "/opt/csw/lib/foo" + self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) + + def testExpandRunpath_OriginCaching(self): + """Make sure that the cache doesn't mess it up. + + Two invocations, where the only difference is the binary path. + """ + isalist = () + runpath = "$ORIGIN" + expected = ["/opt/csw/lib"] + bin_path = "opt/csw/lib" + self.assertEquals(expected, + self.e.ExpandRunpath(runpath, isalist, bin_path)) + expected = ["/opt/csw/foo/lib"] + bin_path = "/opt/csw/foo/lib" + self.assertEquals(expected, + self.e.ExpandRunpath(runpath, isalist, bin_path)) + + def testExpandRunpath_OnlyIsalist(self): + """Make sure that the cache doesn't mess it up. + + Two invocations, where the only difference is the binary path. + """ + isalist = ("bar",) + runpath = "/opt/csw/lib/$ISALIST" + expected = ["/opt/csw/lib", "/opt/csw/lib/bar"] + bin_path = "opt/csw/lib" + self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) + + def testEmulate64BitSymlinks_1(self): + runpath_list = ["/opt/csw/mysql5/lib/foo/mysql/64"] + expected = "/opt/csw/mysql5/lib/foo/mysql/amd64" + self.assertTrue(expected in self.e.Emulate64BitSymlinks(runpath_list)) + + def testEmulate64BitSymlinks_2(self): + runpath_list = ["/opt/csw/mysql5/lib/64/mysql/foo"] + expected = "/opt/csw/mysql5/lib/amd64/mysql/foo" + result = self.e.Emulate64BitSymlinks(runpath_list) + self.assertTrue(expected in result, "%s not in %s" % (expected, result)) + + def testEmulate64BitSymlinks_3(self): + runpath_list = ["/opt/csw/mysql5/lib/64/mysql/foo"] + expected = "/opt/csw/mysql5/lib/sparcv9/mysql/foo" + result = self.e.Emulate64BitSymlinks(runpath_list) + self.assertTrue(expected in result, "%s not in %s" % (expected, result)) + + def testEmulate64BitSymlinks_4(self): + """No repeated paths because of symlink expansion""" + runpath_list = ["/opt/csw/lib"] + expected = "/opt/csw/lib" + result = self.e.Emulate64BitSymlinks(runpath_list) + self.assertEquals(1, len(result), "len(%s) != %s" % (result, 1)) + + def testEmulateSymlinks_3(self): + runpath_list = ["/opt/csw/bdb4"] + expected = "/opt/csw/bdb42" + result = self.e.Emulate64BitSymlinks(runpath_list) + self.assertTrue(expected in result, "%s not in %s" % (expected, result)) + + def testEmulateSymlinks_4(self): + runpath_list = ["/opt/csw/bdb42"] + expected = "/opt/csw/bdb42" + not_expected = "/opt/csw/bdb422" + result = self.e.Emulate64BitSymlinks(runpath_list) + self.assertTrue(expected in result, + "%s not in %s" % (expected, result)) + self.assertFalse(not_expected in result, + "%s is in %s" % (not_expected, result)) + + def testEmulateSymlinks_5(self): + """Install time symlink expansion.""" + runpath_list = ["/opt/csw/lib/i386"] + expected = "/opt/csw/lib" + result = self.e.Emulate64BitSymlinks(runpath_list) + self.assertTrue(expected in result, "%s not in %s" % (expected, result)) + + def testEmulateSymlinks_6(self): + """ExpandSymlink for /opt/csw/lib/i386.""" + runpath_list = ["/opt/csw/lib/i386"] + expected = "/opt/csw/lib" + not_expected = "/opt/csw/lib/i386" + result = self.e.ExpandSymlink("/opt/csw/lib/i386", + "/opt/csw/lib", + "/opt/csw/lib/i386") + self.assertTrue(expected in result, "%s not in %s" % (expected, result)) + self.assertFalse(not_expected in result, + "%s is in %s" % (not_expected, result)) + + def testSanitizeRunpath_1(self): + self.assertEqual("/opt/csw/lib", + self.e.SanitizeRunpath("/opt/csw/lib/")) + + def testSanitizeRunpath_2(self): + self.assertEqual("/opt/csw/lib", + self.e.SanitizeRunpath("/opt//csw////lib/")) + + + +class ParseDumpOutputUnitTest(unittest.TestCase): + + def test_1(self): + expected = { + 'RPATH set': True, + 'RUNPATH RPATH the same': True, + 'RUNPATH set': True, + 'needed sonames': ('librt.so.1', + 'libresolv.so.2', + 'libc.so.1', + 'libgen.so.1', + 'libsocket.so.1', + 'libnsl.so.1', + 'libm.so.1', + 'libz.so.1'), + 'runpath': ('/opt/csw/lib/$ISALIST', + '/opt/csw/lib', + '/opt/csw/mysql5/lib/$ISALIST', + '/opt/csw/mysql5/lib', + '/opt/csw/mysql5/lib/$ISALIST/mysql'), + 'soname': 'libmysqlclient.so.15', + } + self.assertEqual(expected, + checkpkg.ParseDumpOutput(dump_1.DATA_DUMP_OUTPUT)) + + def testEmpty(self): + expected_runpath = () + self.assertEqual( + expected_runpath, + checkpkg.ParseDumpOutput(dump_2.DATA_DUMP_OUTPUT)["runpath"]) + + def testRpathOnly(self): + expected = { + 'RPATH set': True, + 'RUNPATH RPATH the same': False, + 'RUNPATH set': False, + 'needed sonames': ('librt.so.1', + 'libresolv.so.2', + 'libc.so.1', + 'libgen.so.1', + 'libsocket.so.1', + 'libnsl.so.1', + 'libm.so.1', + 'libz.so.1'), + 'runpath': ('/opt/csw/lib/$ISALIST', + '/opt/csw/lib', + '/opt/csw/mysql5/lib/$ISALIST', + '/opt/csw/mysql5/lib', + '/opt/csw/mysql5/lib/$ISALIST/mysql'), + 'soname': 'libmysqlclient.so.15', + } + self.assertEqual( + expected, + checkpkg.ParseDumpOutput(dump_3.DATA_DUMP_OUTPUT)) + + +class SystemPkgmapUnitTest(unittest.TestCase): + + def testParsePkginfoLine(self): + line = ('application CSWcswclassutils ' + 'cswclassutils - CSW class action utilities') + expected = ('CSWcswclassutils', + 'cswclassutils - CSW class action utilities') + spkgmap = checkpkg.SystemPkgmap() + self.assertEqual(expected, spkgmap._ParsePkginfoLine(line)) + + def test_InferPackagesFromPkgmapLine(self): + line = ("/opt/csw/sbin d none 0755 root bin CSWfping CSWbonobo2 " + "CSWkrb5libdev CSWsasl CSWschilybase CSWschilyutils CSWstar " + "CSWcommon CSWcacertificates CSWfacter") + expected = ["CSWfping", "CSWbonobo2", "CSWkrb5libdev", "CSWsasl", + "CSWschilybase", "CSWschilyutils", "CSWstar", "CSWcommon", + "CSWcacertificates", "CSWfacter"] + spkgmap = checkpkg.SystemPkgmap() + self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) + + def test_InferPackagesFromPkgmapLine_2(self): + line = ("/usr/lib/sparcv9/libpthread.so.1 f none 0755 root bin 41296 28258 " + "1018129099 SUNWcslx") + expected = ["SUNWcslx"] + spkgmap = checkpkg.SystemPkgmap() + self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) + + def test_InferPackagesFromPkgmapLine_3(self): + line = ("/usr/lib/libCrun.so.1 f none 0755 root bin 63588 " + "6287 1256043984 SUNWlibC") + expected = ["SUNWlibC"] + spkgmap = checkpkg.SystemPkgmap() + self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) + + def test_InferPackagesFromPkgmapLine_4(self): + line = ("/opt/csw/apache2/lib/libapr-1.so.0=libapr-1.so.0.3.8 s none " + "CSWapache2rt") + expected = ["CSWapache2rt"] + spkgmap = checkpkg.SystemPkgmap() + self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) + + class ExtractorsUnitTest(unittest.TestCase): def testExtractDescriptionFromGoodData(self): @@ -60,67 +296,68 @@ self.assertEqual(expected, re.match(checkpkg.PSTAMP_RE, pstamp).groupdict()) +class CheckpkgManager2UnitTest(unittest.TestCase): + + def test_1(self): + m = checkpkg.CheckpkgManager2("testname", "/tmp", ["CSWfoo"]) + tags = { + "CSWfoo": [ + tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), + ], + } + screen_report, tags_report = m.FormatReports(tags, [], []) + expected = u'# Tags reported by testname module\nCSWfoo: foo-tag foo-info\n' + self.assertEqual(expected, unicode(tags_report)) + + def test_2(self): + m = checkpkg.CheckpkgManager2("testname", "/tmp", ["CSWfoo"]) + tags = { + "CSWfoo": [ + tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), + tag.CheckpkgTag("CSWfoo", "bar-tag", "bar-info"), + tag.CheckpkgTag("CSWfoo", "baz-tag"), + ], + } + screen_report, tags_report = m.FormatReports(tags, [], []) + expected = (u'# Tags reported by testname module\n' + u'CSWfoo: foo-tag foo-info\n' + u'CSWfoo: bar-tag bar-info\n' + u'CSWfoo: baz-tag\n') + self.assertEqual(expected, unicode(tags_report)) + + class SliceListUnitTest(unittest.TestCase): def testOne(self): l = [1, 2, 3, 4, 5] s = 1 expected = [[1], [2], [3], [4], [5]] - self.assertTrue(expected, checkpkg_lib.SliceList(l, s)) + self.assertTrue(expected, checkpkg.SliceList(l, s)) def testTwo(self): l = [1, 2, 3, 4, 5] s = 2 expected = [[1, 2], [3, 4], [5]] - self.assertTrue(expected, checkpkg_lib.SliceList(l, s)) + self.assertTrue(expected, checkpkg.SliceList(l, s)) -class SqliteUnitTest(unittest.TestCase): +class LddEmulartorUnitTest(unittest.TestCase): - "Makes sure that we can lose state between tests." - def setUp(self): - self.conn = sqlite3.connect(":memory:") - self.c = self.conn.cursor() + self.pkgmap_mocker = mox.Mox() + self.e = checkpkg.LddEmulator() - def tearDown(self): - self.conn = None + def testResolveSoname_1(self): + # runpath_list, soname, isalist, path_list, binary_path + runpath_list = ["/opt/csw/bdb47/lib", "/opt/csw/lib"] + soname = "foo.so.1" + path_list = ["/opt/csw/lib", "/opt/csw/bdb47/lib", "/usr/lib"] + binary_path = "unused" + isalist = ["amd64"] + result = self.e.ResolveSoname(runpath_list, soname, isalist, + path_list, binary_path) + self.assertEqual("/opt/csw/bdb47/lib", result) - def testCannotCreateTwoTables(self): - self.c.execute("CREATE TABLE foo (INT bar);") - self.assertRaises( - sqlite3.OperationalError, - self.c.execute, "CREATE TABLE foo (INT bar);") - def testOne(self): - self.c.execute("CREATE TABLE foo (INT bar);") - - def testTwo(self): - self.c.execute("CREATE TABLE foo (INT bar);") - - -class SqlobjectUnitTest(test_base.SqlObjectTestMixin, unittest.TestCase): - - "Makes sure that we can lose state between methods." - - class TestModel(sqlobject.SQLObject): - name = sqlobject.UnicodeCol(length=255, unique=True, notNone=True) - - # This does not work. Why? - # def testCannotCreateTwoTables(self): - # self.TestModel.createTable() - # self.assertRaises( - # sqlite3.OperationalError, - # self.TestModel.createTable) - - def testOne(self): - self.TestModel.createTable() - - def testTwo(self): @@ Diff output truncated at 100000 characters. @@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From gadavis at users.sourceforge.net Sat Dec 11 01:26:22 2010 From: gadavis at users.sourceforge.net (gadavis at users.sourceforge.net) Date: Sat, 11 Dec 2010 00:26:22 +0000 Subject: [csw-devel] SF.net SVN: gar:[11881] csw/mgar/pkg/freeradius/trunk Message-ID: Revision: 11881 http://gar.svn.sourceforge.net/gar/?rev=11881&view=rev Author: gadavis Date: 2010-12-11 00:26:22 +0000 (Sat, 11 Dec 2010) Log Message: ----------- Include some ssl keys Modified Paths: -------------- csw/mgar/pkg/freeradius/trunk/Makefile Added Paths: ----------- csw/mgar/pkg/freeradius/trunk/files/ca.pem csw/mgar/pkg/freeradius/trunk/files/server.pem Modified: csw/mgar/pkg/freeradius/trunk/Makefile =================================================================== --- csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-10 20:55:58 UTC (rev 11880) +++ csw/mgar/pkg/freeradius/trunk/Makefile 2010-12-11 00:26:22 UTC (rev 11881) @@ -10,6 +10,8 @@ MASTER_SITES = ftp://ftp.freeradius.org:/pub/freeradius/ DISTFILES = $(GARNAME)-server-$(GARVERSION).tar.gz DISTFILES += cswfreeradius +DISTFILES += server.pem +DISTFILES += ca.pem DISTNAME = $(GARNAME)-server-$(GARVERSION) UFILES_REGEX = $(GARNAME)-(\d+(?:\.\d+)*).tar.gz @@ -194,16 +196,17 @@ PATH := /opt/csw/gnu:$(PATH) -post-install-modulated: copy-local-files - -# Copy in specialized templates -copy-local-files: +post-install-modulated: + ### Copy init script + @echo "Installing init script..." @ginstall -d $(DESTDIR)/etc/opt/csw/init.d @ginstall $(WORKDIR)/cswfreeradius $(DESTDIR)/etc/opt/csw/init.d/cswfreeradius + + # Copy self-signed sample cert + @echo "Installing sample certificate files..." + @ginstall -m 600 $(WORKDIR)/ca.pem $(DESTDIR)/$(raddbdir)/certs/ + @ginstall -m 600 $(WORKDIR)/server.pem $(DESTDIR)/$(raddbdir)/certs/ + + # Set the Make cookie @$(MAKECOOKIE) -clean-local: nuke-local-cookie - -nuke-local-cookie: - @echo Removing all copy-local-files build cookies - rm -f work/*/cookies/*/copy-local-files Added: csw/mgar/pkg/freeradius/trunk/files/ca.pem =================================================================== --- csw/mgar/pkg/freeradius/trunk/files/ca.pem (rev 0) +++ csw/mgar/pkg/freeradius/trunk/files/ca.pem 2010-12-11 00:26:22 UTC (rev 11881) @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEpzCCA4+gAwIBAgIJAKRbTh2VuAVRMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYD +VQQGEwJGUjEPMA0GA1UECBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTAT +BgNVBAoTDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBs +ZS5jb20xJjAkBgNVBAMTHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4X +DTEwMTIxMDAxMzgxM1oXDTExMTIxMDAxMzgxM1owgZMxCzAJBgNVBAYTAkZSMQ8w +DQYDVQQIEwZSYWRpdXMxEjAQBgNVBAcTCVNvbWV3aGVyZTEVMBMGA1UEChMMRXhh +bXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxlLmNvbTEmMCQG +A1UEAxMdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQDOmW+x1hkGgKVuBvxvVQJsip0hidJElWXPa/XJ +fiCHHrpgNIfNQQBKSAMpGnQEUtcdNbmwRFiyE0hzfI1pD7W5Bt4jagJbOA/iZjl3 +0suaOo/5fX66GxqlRtIH3NMQg+ts5w5JTgtuJAO/lfF76a8gZYBYJKkxEapySyvI +H6TPZYrfMSRvCxK2m/X3EAB8ut8G8r6PJXCY4SoTHwp4wQR5X1RPqrVslSluG/P4 +wYCDLD9pHinBO5TCLFvZf7g1IQgt4LbLbf9/l0eYbgoMpjQUO2FhDvOXt2OdVPCv +W9TmcVgQ6eZgxJMakN+kEJlzs6JW8qHCW7jvLDKY5HYP1McfAgMBAAGjgfswgfgw +HQYDVR0OBBYEFPt9P1VSqli9ZZdw7VFI5fH0s22sMIHIBgNVHSMEgcAwgb2AFPt9 +P1VSqli9ZZdw7VFI5fH0s22soYGZpIGWMIGTMQswCQYDVQQGEwJGUjEPMA0GA1UE +CBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTATBgNVBAoTDEV4YW1wbGUg +SW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xJjAkBgNVBAMT +HUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ggkApFtOHZW4BVEwDAYDVR0T +BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAhtCpvNy4GmqYAdMWjHzPiJ550x3H +DNmwSc+HsS+05cNoZyezVJW2OBx8N71kQYUnXJe7dVl6piF6m1FLwennFtObAsh6 +p8PjTTKEWMsPu/4fO6x39jJncoMEeYnAUq77iSwEoJoynnp6DLH+tWxbTjlnQ5bA +/NTMXVvAXeL2Izr9IneehQsTCdtjoKE10vGQa/gtDG7zlsJNvhlpU6VQEdtcrMsI +Ay1ttoaf/yaNIHCp1JSXb5IQOa5MrhQ5n7wmi1+7kEG+VER0KYFuuE9ycbax/T+R +uxFHUHpfGfdVsMvFQhDqX/O44ISqVreicuQwYr9J9iZb7n9oXeeiCMN0qw== +-----END CERTIFICATE----- Added: csw/mgar/pkg/freeradius/trunk/files/server.pem =================================================================== --- csw/mgar/pkg/freeradius/trunk/files/server.pem (rev 0) +++ csw/mgar/pkg/freeradius/trunk/files/server.pem 2010-12-11 00:26:22 UTC (rev 11881) @@ -0,0 +1,59 @@ +Bag Attributes + localKeyID: C9 79 88 27 08 0F F8 C8 01 F0 3F F9 13 BA E4 42 41 8B E8 59 +subject=/C=FR/ST=Radius/O=Example Inc./CN=Example Server Certificate/emailAddress=admin at example.com +issuer=/C=FR/ST=Radius/L=Somewhere/O=Example Inc./emailAddress=admin at example.com/CN=Example Certificate Authority +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBkzELMAkGA1UEBhMCRlIx +DzANBgNVBAgTBlJhZGl1czESMBAGA1UEBxMJU29tZXdoZXJlMRUwEwYDVQQKEwxF +eGFtcGxlIEluYy4xIDAeBgkqhkiG9w0BCQEWEWFkbWluQGV4YW1wbGUuY29tMSYw +JAYDVQQDEx1FeGFtcGxlIENlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0xMDEyMTAw +MTM4MTNaFw0xMTEyMTAwMTM4MTNaMHwxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZS +YWRpdXMxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEjMCEGA1UEAxMaRXhhbXBsZSBT +ZXJ2ZXIgQ2VydGlmaWNhdGUxIDAeBgkqhkiG9w0BCQEWEWFkbWluQGV4YW1wbGUu +Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnVoXklU4/lJN+suv +7RPfNt7Jkat7Gn32YY4VC9hDBcBXqTOi2sK2VvwcGEWFZl2xp22Jdwf08O8iqPW2 +inPfi1UfKDxV1ENrhsaIzTNcmYvEZIYkO2E82b9mBRCbhTKYTq4sCicQG7yoomB8 +foYze0pDnlILBvE3K6RU8FaFOHQGPVWBiZznrILDNhGxYDvNCMD8MUG0fETNmFKM +mQIEUahj4C1BNEBTjKNqfG+Tj7XLk92TBTOmB2AphErIBCk2xtQiDjJyI3l4W1rF +qL6IvjTpRwFiheo+IRiOvCziLw1IveVFnKKpVm67NPA2dFiioAYsV2pY6ZmwCMI6 +RQoHCQIDAQABoxcwFTATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQQF +AAOCAQEAMZx2LX+t+JiQKx+g8z0HzfhCxWpqvPpnnzeQ979GiB3tJ7ab27Tm4nqy +7pdzEKAr8zv42VBY3M1wEjY0Pjzn7ZPcNCjB7j8E0AuYRBTTkDY0NN0qVqXeMuuY +lTU81LuHKBAJ2Yy9/guwCcXihEDkeKSu0ZkWzh19WDJYuSMD8rgtGifj7X9a86Jq +SuUVrjGVVqhV0iBg3GDxLDf9cEp95T51SFh8MxglHRO6iP804bQ2DNfJFvqJcH6H +tsmcyF/4Q2x3mvertesqzM47D7Z8SeXjAlvpMg2PfkKpGJdFo7G0VwLuKmYv3lkK +oHPQfwp3/1BLeiu49A+B8cKJty/88A== +-----END CERTIFICATE----- +Bag Attributes + localKeyID: C9 79 88 27 08 0F F8 C8 01 F0 3F F9 13 BA E4 42 41 8B E8 59 +Key Attributes: +-----BEGIN RSA PRIVATE KEY----- +Proc-Type: 4,ENCRYPTED +DEK-Info: DES-EDE3-CBC,B37278D82DEC375F + +VGpQOzPZJKwS0nKlq1ewFyfwSS9sZ/FaS+47xtJZu7fyZZlOl1OlkPxkD9Vr0AIP +fzh/bziv6GXB+y8qgRy5OkGTnqBIYgF1dJXci/+DdUNsiEDcJxYgODQ5/APYRIRF +z88uZst2rzTiPtPVzDKqqi+Gosr7JXYzifeKEu7EcFCAF40nE/QChU+GpKRg/uD3 +qS+4OVEJ+G2WgzZkn5MZGG7zkQ4EJEqKh0s84i3OI0u9KU1WR7+fTkQZQvbAFqcb +MdYLK/hL0sO7eep/NZMuJXGSJaN4PsSM79PlbrX+dUZmVwIx7UXRnH40rCukMhUg ++LMxHY7CipwBkRwNHeAonKEJt/QvUAm28kHVysbPJn9CRG8OZlf53llFMtjpwHog +FotrfENhlLvWeVWGf7S54cW5rTu1TjA1kBeP5mitiE8Z2HmALfAA97je/6q0s9qt +6qGkpBoIo8mWs2ITppHl5OFxdvHnZuUDNcbfM8n0CUVDvYn3HoWPdcbnmf27j33q +f3kPdG51haDYUwtjt3ySYmJG7aNeLp9xlOizv4MtwS7SD6Pl3N6nzrInv2Mrqt43 +iTocwVKdZfxg/VcxgydkBDvtoIkfDTBI3dEOpjJSIY8O1KYFMIRQNgkrW9NzZIyn ++NHpev+9wtBKLDYrd0KMUgE3MvyqLj/1QMphfLSzX6eVKubODwE7bOvrbehDztCZ +RssbZQFdoJ1vB2tB0Uz5WoP3F5rHClkbb7r0M7GoZ5/5H/FMZQm1hsC2TfpNn/c8 +ZwSu08eovXG+ecGxII1tDAnxYJ0xVRK5TOs1kTKGrqWp0FORuj2UTLbUGLTxwDbt +7I/gCJfIexTmt/mjhuzdLVA2RH6+FcgX9UqjRbAqIw0gHrvezJcAcLryG7+FCOOr +ZjpXx1OutXXoOqLl+PiMeTbwhjxlp8cYEaTukzF0Mvt83aXnWkYa3UOG0BQrK5Pz +DLv5csVpis222KZYZIVdYhHZ7O8Y14pWKUpkD9qhiwHA0rXt5BgQBA2FQrBKqvzQ +8MLaHd2bPMy8I1NwoR5c555uXALQtLEstdT8toO2VqaA8JvuW+E/dizlZVmlD3jR +VHp3ysYu0P/MifU79DvG4fGOiGJK1HjmtBV41rO0NVrzX4Dr5waFCNwbPenf9j4k +iM6T9+b7ASIetlcjpz3BCxRmXnYTstjB69pVZNemvOr3osoD4H7JYADoYzsjtJUb +bmKmSlSG9jqmB2E/7LyauYmyyC6eQd6y5eDJxhlFjr1b4ICgs04jUIHH4KB8CG6d +Vo2MXU2uKnXdJMNdKDRd4571DU2yy/0+KiRbfPTpofMzi3ggomMfktjRp971/obx +RQJMmBUSrdOF525PiSvxXve/cnZ3cJgrgYbgEQYFc6H0zhijGgKmwvFSYKqUoDzl +rJS04oikyPPOOqhdBkS8Ys3CDe44dU5wNf61oVZvZv3dwqtK/pT+rJ3KkseQyAyw +MgSf0mLPDHwZMlz0hTlK3r7fleOU2QZ0FD9FTQZcfUMC3bRokewVDEsGg6w3Xtl7 +vjSOecwTFmkZ91PNzr1KeYqcX8HS6Z7V0FjP1hhi5aFiKIkeGdjUhuGsFQ//fDBY +-----END RSA PRIVATE KEY----- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From wahwah at users.sourceforge.net Sat Dec 11 19:01:58 2010 From: wahwah at users.sourceforge.net (wahwah at users.sourceforge.net) Date: Sat, 11 Dec 2010 18:01:58 +0000 Subject: [csw-devel] SF.net SVN: gar:[11882] csw/mgar/gar/v2 Message-ID: Revision: 11882 http://gar.svn.sourceforge.net/gar/?rev=11882&view=rev Author: wahwah Date: 2010-12-11 18:01:58 +0000 (Sat, 11 Dec 2010) Log Message: ----------- Merge branch 'collisions' into svn-merge Modified Paths: -------------- csw/mgar/gar/v2/bin/checkpkg csw/mgar/gar/v2/bin/mkpackage csw/mgar/gar/v2/gar.pkg.mk csw/mgar/gar/v2/lib/python/README csw/mgar/gar/v2/lib/python/catalog.py csw/mgar/gar/v2/lib/python/checkpkg.py csw/mgar/gar/v2/lib/python/checkpkg_test.py csw/mgar/gar/v2/lib/python/configuration.py csw/mgar/gar/v2/lib/python/database.py csw/mgar/gar/v2/lib/python/dependency_checks.py csw/mgar/gar/v2/lib/python/dependency_checks_test.py csw/mgar/gar/v2/lib/python/inspective_package.py csw/mgar/gar/v2/lib/python/models.py csw/mgar/gar/v2/lib/python/opencsw.py csw/mgar/gar/v2/lib/python/package.py csw/mgar/gar/v2/lib/python/package_checks.py csw/mgar/gar/v2/lib/python/package_checks_test.py csw/mgar/gar/v2/lib/python/package_stats.py csw/mgar/gar/v2/lib/python/package_stats_test.py csw/mgar/gar/v2/lib/python/pkgdb.py csw/mgar/gar/v2/lib/python/sharedlib_utils.py csw/mgar/gar/v2/lib/python/sharedlib_utils_test.py csw/mgar/gar/v2/lib/python/tag.py csw/mgar/gar/v2/lib/python/tag_test.py csw/mgar/gar/v2/lib/python/testdata/neon_stats.py csw/mgar/gar/v2/lib/python/testdata/tree_stats.py csw/mgar/gar/v2/tests/run_tests.py Added Paths: ----------- csw/mgar/gar/v2/lib/python/checkpkg2.py csw/mgar/gar/v2/lib/python/checkpkg_defaults.ini csw/mgar/gar/v2/lib/python/checkpkg_lib.py csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py csw/mgar/gar/v2/lib/python/common_constants.py csw/mgar/gar/v2/lib/python/ldd_emul.py csw/mgar/gar/v2/lib/python/ldd_emul_test.py csw/mgar/gar/v2/lib/python/models_test.py csw/mgar/gar/v2/lib/python/mute_progressbar.py csw/mgar/gar/v2/lib/python/pkgdb_test.py csw/mgar/gar/v2/lib/python/shell.py csw/mgar/gar/v2/lib/python/system_pkgmap.py csw/mgar/gar/v2/lib/python/system_pkgmap_test.py csw/mgar/gar/v2/lib/python/test_base.py Removed Paths: ------------- csw/mgar/gar/v2/bin/analyze_module_results.py csw/mgar/gar/v2/bin/checkpkg_collect_stats.py csw/mgar/gar/v2/bin/checkpkg_run_modules.py Property Changed: ---------------- csw/mgar/gar/v2/bin/checkpkg csw/mgar/gar/v2/lib/python/package_stats_test.py Deleted: csw/mgar/gar/v2/bin/analyze_module_results.py =================================================================== --- csw/mgar/gar/v2/bin/analyze_module_results.py 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/bin/analyze_module_results.py 2010-12-11 18:01:58 UTC (rev 11882) @@ -1,73 +0,0 @@ -#!/opt/csw/bin/python2.6 -# $Id$ - -import itertools -import operator -import optparse -import os -import pprint -import progressbar -import sys -import textwrap - -# The following bit of code sets the correct path to Python libraries -# distributed with GAR. -path_list = [os.path.dirname(__file__), - "..", "lib", "python"] -sys.path.append(os.path.join(*path_list)) -import checkpkg -import overrides -import package_stats - -BEFORE_OVERRIDES = """If any of the reported errors were false positives, you -can override them pasting the lines below to the GAR recipe.""" - -AFTER_OVERRIDES = """Please note that checkpkg isn't suggesting you should -simply add these overrides do the Makefile. It only informs what the overrides -could look like. You need to understand what are the reported issues about and -use your best judgement to decide whether to fix the underlying problems or -override them. For more information, scroll up and read the detailed -messages.""" - -UNAPPLIED_OVERRIDES = """WARNING: Some overrides did not match any errors. -They can be removed, as they don't take any effect anyway. If you're getting -errors at the same time, maybe you didn't specify the overrides correctly.""" - -def main(): - parser = optparse.OptionParser() - parser.add_option("-c", "--catalog_file", dest="catalog", - help="Optional catalog file") - parser.add_option("-q", "--quiet", dest="quiet", - default=False, action="store_true", - help=("Display less messages")) - options, args = parser.parse_args() - filenames = args - - # This might be bottleneck. Perhaps a list of md5 sums can be given to this - # script instead. - - # It might be a good idea to store the error tags in the database and - # eliminate the need to access the directory with the error tag files. - - pkgstats = package_stats.StatsListFromCatalog(filenames, options.catalog) - overrides_list = [pkg.GetSavedOverrides() for pkg in pkgstats] - override_list = reduce(operator.add, overrides_list) - error_tags = reduce(operator.add, [stat.GetSavedErrorTags() for stat in pkgstats]) - (tags_after_overrides, - unapplied_overrides) = overrides.ApplyOverrides(error_tags, override_list) - if not options.quiet: - if tags_after_overrides: - print textwrap.fill(BEFORE_OVERRIDES, 80) - for checkpkg_tag in tags_after_overrides: - print checkpkg_tag.ToGarSyntax() - print textwrap.fill(AFTER_OVERRIDES, 80) - if unapplied_overrides: - print textwrap.fill(UNAPPLIED_OVERRIDES, 80) - for override in unapplied_overrides: - print "* Unused %s" % override - exit_code = bool(tags_after_overrides) - sys.exit(exit_code) - - -if __name__ == '__main__': - main() Modified: csw/mgar/gar/v2/bin/checkpkg =================================================================== --- csw/mgar/gar/v2/bin/checkpkg 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/bin/checkpkg 2010-12-11 18:01:58 UTC (rev 11882) @@ -1,322 +1 @@ -#!/bin/ksh -p -# -# $Id$ -# -# checkpkg 1.51 -# -# diff to 1.46a -# - check multiple package files -# - checkpkg.d plugin support -# - getopts support for command line options -# - colors -# - modular architecture + unit tests -# - reliable shared library checking -# -# This script examines a package that has been put together -# for submittal to the CSW archive at opencsw.org -# -# It examines it for compliance with the packaging standards at -# http://www.opencsw.org/standards/ -# It DOES NOT CATCH EVERYTHING. However, the package will be -# tested with this script before acceptance, so you may as well -# save yourself some time, and run the script yourself! -# -# Be sure to occasionally do a "pkg-get update cswutils" so that -# you know you are tracking the most current version. -# -# TODO: -# - add message handlig to the CheckInterface class. -# - -PATH=$PATH:/usr/sbin -readonly NAME_MAX_LENGTH=${NAME_MAX_LENGTH:-20} - -command_basename=`basename $0` -command_basedir="${0%/${command_basename}}" -libshdir="${command_basedir}/../lib/sh" -readonly command_basename command_basedir libshdir -. "${libshdir}/libcheckpkg.sh" - -LOCAL_ARCH=`uname -p` -CHECKPKG_TMPDIR=${CHECKPKG_TMPDIR:-/var/tmp} -readonly CHECKPKG_TMPDIR - -# Colors only when running interactively -if [[ -t 1 ]]; then - GREEN="\\033[0;32;40m" - RED="\\033[1;31;40m" - BOLD="\\033[1m" - COLOR_RESET="\\033[00m" -else - GREEN="" - RED="" - BOLD="" - COLOR_RESET="" -fi -readonly GREEN RED BOLD COLOR_RESET - -readonly selfpath="$0" -readonly selfargs="$@" - -cleanup(){ - if [[ -d "$EXTRACTDIR" ]] ; then - rm -rf $EXTRACTDIR - fi - cleantmparchives -} - -cleantmparchives() { - for TMPARCHIVE in $tmparchives; do - if [[ "$TMPARCHIVE" != "" ]]; then - [ -f "$TMPARCHIVE" ] && rm $TMPARCHIVE - fi - done -} - -cleanupset(){ - if [ "`echo $SETINF*`" != "$SETINF*" ]; then - rm $SETINF* - fi -} - -# Print error message, and quit program. -errmsg(){ - print ERROR: $* >/dev/fd/2 - cleanup - cleanupset - print "To run checkpkg in the debug mode, add the '-d' flag, for example:" - # selfargs can be very, very long. Find a way to truncate it. - # print "${selfpath} -d ${selfargs}" - print "After you modify any overrides, you need to do gmake remerge repackage" - print "or gmake platforms-remerge platforms-repackage." - exit 1 -} - -debugmsg() { - if [[ "${DEBUG}" != "" ]]; then - print "DEBUG: $*" > /dev/fd/2 - fi -} - -# TODO: Options to add: -# - Use an pre-cached (from a catalog file?) list of md5 sums -# - Don't use the data from /var/sadm/install/contents -display_help=0 -SKIP_STATS_COLLECTION=0 -MD5_SUMS_CATALOG_FILE="" -INSTALL_CONTENTS_FILES="/var/sadm/install/contents" -ANALYZE=1 -PROFILE=0 -QUIET=0 - -while getopts hsdNM:o:c:Apq opt; do - case "${opt}" in - c) - INSTALL_CONTENTS_FILES="${INSTALL_CONTENTS_FILES} ${OPTARG}" - ;; - d) - DEBUG=1 - ;; - h) - display_help=1 - ;; - N) - SKIP_STATS_COLLECTION=1 - ;; - M) - MD5_SUMS_CATALOG_FILE="${OPTARG}" - ;; - A) - ANALYZE=0 - ;; - p) - PROFILE=1 - ;; - q) QUIET=1 - ;; - *) - echo "Unknown option '${opt}'" - ;; - esac -done -shift $(( $OPTIND -1 )) - -readonly INSTALL_CONTENTS_FILES -readonly MD5_SUMS_CATALOG_FILE -readonly SKIP_STATS_COLLECTION -readonly ANALYZE -readonly PROFILE -readonly QUIET - -if [[ "${display_help}" -eq 1 ]] ; then - print 'Usage: checkpkg [options] pkg1 [pkg2 ....]' - print 'Options:' - print ' -c use an additional install/contents file' - print ' -d display debug messages' - print ' -N skip statistics collection' - print ' -M use package md5sums from a catalog file' - print ' -A Do not analyze the results.' - print ' -p Enable profiling' - print ' -q Display less messages' - print '' - print 'Error tags are saved to the sqlite database.' - exit 0 -fi - -# a unique filename for the list of package deps and libs we see in a 'set' -SETINF=$CHECKPKG_TMPDIR/checkpkg.$$.`date +%Y%m%d%H%M%S` -SETLIBS=$SETINF.libs -SETDEPS=$SETINF.deps -pkgnames="" -tmparchives="" - -EXTRACTDIR=$CHECKPKG_TMPDIR/dissect.$$ - -if [ -d $EXTRACTDIR ] ; then - errmsg ERROR: $EXTRACTDIR already exists -fi - -for f in "$@" -do - - if [[ ! -f $f ]] ; then - errmsg ERROR: $f does not exist - fi - - -[ -d ${EXTRACTDIR} ] || mkdir ${EXTRACTDIR} - -######################################## -# Check for some common errors -######################################### - -# TODO: To be ported. -# -# # find all executables and dynamic libs,and list their filenames. -# if [[ "$basedir" != "" ]] ; then -# print -# if [[ -f $EXTRACTDIR/elflist ]] ; then -# print "Checking relocation ability..." -# xargs strings < $EXTRACTDIR/elflist| grep /opt/csw -# if [[ $? -eq 0 ]] ; then -# errmsg package build as relocatable, but binaries have hardcoded /opt/csw paths in them -# else -# print trivial check passed -# fi -# else -# echo No relocation check done for non-binary relocatable package. -# fi -# fi - -tmparchives="$tmparchives $TMPARCHIVE" -done - -# Plugin section. This is here for support for other programming languages -# than Python. As of 2010-03-16 there are no checks in there. If this keeps -# empty, if no checks in other languages get written, it could be removed. -# -# Plugins should live in checkpkg.d subdirectory in the same directory in which -# checkpkg is. Each plugin file name should be an executable and begin with -# "checkpkg-". - -test_suite_ok=1 -checkpkg_module_dir="${command_basedir}/../lib/checkpkg.d" -checkpkg_module_tag="checkpkg-" -checkpkg_stats_basedir="${HOME}/.checkpkg/stats" - -# Cleaning up old *.pyc files which can cause grief. This is because of the -# move of Python libraries. -for pyc_file in ${checkpkg_module_dir}/opencsw.pyc \ - ${checkpkg_module_dir}/checkpkg.pyc; do - if [ -f "${pyc_file}" ]; then - echo "Removing old pyc file: '${pyc_file}'" - rm "${pyc_file}" - fi -done - -if [[ "${DEBUG}" != "" ]]; then - extra_options="--debug" -fi -if [[ "${PROFILE}" -eq 1 ]]; then - extra_options="${extra_options} --profile" -fi -if [[ "${QUIET}" -eq 1 ]]; then - quiet_options="--quiet" -else - quiet_options="" -fi - -if [[ -n "${MD5_SUMS_CATALOG_FILE}" ]]; then - catalog_options="--catalog=${MD5_SUMS_CATALOG_FILE}" -else - catalog_options="" -fi - -# /var/sadm/install/contents cache update -# TODO: Either remove this section or stop the stats collection phase from -# updating the cache. -${command_basedir}/update_contents_cache.py ${extra_options} -if [[ $? -ne 0 ]]; then - errmsg "Updating the contents cache has failed." -fi -if [[ "${SKIP_STATS_COLLECTION}" -eq 0 ]]; then - # Collects package stats to be analyzed later - ${command_basedir}/checkpkg_collect_stats.py \ - ${catalog_options} \ - ${extra_options} \ - "$@" - if [[ "$?" -ne 0 ]]; then - errmsg "Stats collection phase has failed." - fi -fi - -# TODO: A performance problem. The following line means that the md5sums are -# calculated once more. -if [ "${MD5_SUMS_CATALOG_FILE}" ]; then - debugmsg "Reading md5sums from ${MD5_SUMS_CATALOG_FILE}" - md5sums=`cat "${MD5_SUMS_CATALOG_FILE}" \ - | awk '{print $5}' \ - | ggrep -E '[0-9abcdef]{32}'` -else - debugmsg "Calculating md5 sums of all the package files." - md5sums=`gmd5sum "$@" | awk '{print $1}'` -fi -debugmsg "All md5 sums: ${md5sums}" - -# Running the checks. -${command_basedir}/checkpkg_run_modules.py \ - ${extra_options} \ - -b "${checkpkg_stats_basedir}" \ - ${quiet_options} \ - ${md5sums} -if [[ "$?" -ne 0 ]]; then - print "There was a problem analyzing package stats." - test_suite_ok=0 -fi - -if [[ ${test_suite_ok} -ne 1 ]]; then - errmsg "One or more tests have finished with an error." -fi - -if [[ "${ANALYZE}" -eq 1 ]]; then -# Collecting errors and applying the overrides. -# This has to use the original files. - ${command_basedir}/analyze_module_results.py \ - ${catalog_options} \ - ${quiet_options} \ - "$@" - if [[ "$?" -ne 0 ]]; then - errmsg "${RED}Checkpkg has reported errors.${COLOR_RESET}" - else - print "${GREEN}Checkpkg reports no errors.${COLOR_RESET}" - fi -else - echo "Skipping result analysis." -fi - -print "" - -# Cleaning up after all packages -cleanup - -cleanupset +link ../lib/python/checkpkg2.py \ No newline at end of file Property changes on: csw/mgar/gar/v2/bin/checkpkg ___________________________________________________________________ Deleted: svn:executable - * Added: svn:special + * Deleted: csw/mgar/gar/v2/bin/checkpkg_collect_stats.py =================================================================== --- csw/mgar/gar/v2/bin/checkpkg_collect_stats.py 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/bin/checkpkg_collect_stats.py 2010-12-11 18:01:58 UTC (rev 11882) @@ -1,69 +0,0 @@ -#!/opt/csw/bin/python2.6 -# -# $Id$ -# -# Collects statistics about a package and saves to a directory, for later use -# by checkpkg modules. - -import itertools -import logging -import optparse -import os -import os.path -import subprocess -import sys -import progressbar - -# The following bit of code sets the correct path to Python libraries -# distributed with GAR. -path_list = [os.path.dirname(__file__), - "..", "lib", "python"] -sys.path.append(os.path.join(*path_list)) -import checkpkg -import opencsw -import package_stats - -def main(): - parser = optparse.OptionParser() - parser.add_option("-d", "--debug", dest="debug", - default=False, action="store_true", - help="Turn on debugging messages") - parser.add_option("-c", "--catalog", dest="catalog", - help="Catalog file") - parser.add_option("-p", "--profile", dest="profile", - default=False, action="store_true", - help="A disabled option") - options, args = parser.parse_args() - if options.debug: - logging.basicConfig(level=logging.DEBUG) - else: - logging.basicConfig(level=logging.INFO) - logging.debug("Collecting statistics about given package files.") - args_display = args - if len(args_display) > 5: - args_display = args_display[:5] + ["...more..."] - file_list = args - logging.debug("Processing: %s, please be patient", args_display) - stats_list = package_stats.StatsListFromCatalog( - file_list, options.catalog, options.debug) - # Reversing the item order in the list, so that the pop() method can be used - # to get packages, and the order of processing still matches the one in the - # catalog file. - stats_list.reverse() - total_packages = len(stats_list) - counter = itertools.count(1) - logging.info("Juicing the srv4 package stream files...") - bar = progressbar.ProgressBar() - bar.maxval = total_packages - bar.start() - while stats_list: - # This way objects will get garbage collected as soon as they are removed - # from the list by pop(). The destructor (__del__()) of the srv4 class - # removes the temporary directory from the disk. This allows to process - # the whole catalog. - stats_list.pop().CollectStats() - bar.update(counter.next()) - bar.finish() - -if __name__ == '__main__': - main() Deleted: csw/mgar/gar/v2/bin/checkpkg_run_modules.py =================================================================== --- csw/mgar/gar/v2/bin/checkpkg_run_modules.py 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/bin/checkpkg_run_modules.py 2010-12-11 18:01:58 UTC (rev 11882) @@ -1,56 +0,0 @@ -#!/opt/csw/bin/python2.6 -# $Id$ - -"""This script runs all the checks written in Python.""" - -import datetime -import logging -import os -import os.path -import sys -import re -import cProfile - -CHECKPKG_MODULE_NAME = "Second checkpkg API version" - -# The following bit of code sets the correct path to Python libraries -# distributed with GAR. -path_list = [os.path.dirname(__file__), - "..", "lib", "python"] -sys.path.append(os.path.join(*path_list)) -import checkpkg -import opencsw - - -def main(): - options, args = checkpkg.GetOptions() - if options.debug: - logging.basicConfig(level=logging.DEBUG) - else: - logging.basicConfig(level=logging.INFO) - md5sums = args - # CheckpkgManager2 class abstracts away things such as the collection of - # results. - check_manager = checkpkg.CheckpkgManager2(CHECKPKG_MODULE_NAME, - options.stats_basedir, - md5sums, - options.debug) - # Running the checks, reporting and exiting. - exit_code, screen_report, tags_report = check_manager.Run() - screen_report = unicode(screen_report) - if not options.quiet and screen_report: - sys.stdout.write(screen_report) - else: - logging.debug("No screen report.") - sys.exit(exit_code) - - -if __name__ == '__main__': - if "--profile" in sys.argv: - t_str = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") - home = os.environ["HOME"] - cprof_file_name = os.path.join( - home, ".checkpkg", "run-modules-%s.cprof" % t_str) - cProfile.run("main()", sort=1, filename=cprof_file_name) - else: - main() Modified: csw/mgar/gar/v2/bin/mkpackage =================================================================== --- csw/mgar/gar/v2/bin/mkpackage 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/bin/mkpackage 2010-12-11 18:01:58 UTC (rev 11882) @@ -25,6 +25,9 @@ # Tool Version/Revision Information $TOOLVERSION = "1.4"; ($REVISION) = q/$Revision$/ =~ /(\d+)/; +# This shows a warning: +# "Use of uninitialized value $REVISION in sprintf at +# /home/maciej/src/opencsw/pkg/nspr/trunk/gar/bin/mkpackage line 31." $VERSION = sprintf '%s (r%d)', $TOOLVERSION, $REVISION; # Discover network support Modified: csw/mgar/gar/v2/gar.pkg.mk =================================================================== --- csw/mgar/gar/v2/gar.pkg.mk 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/gar.pkg.mk 2010-12-11 18:01:58 UTC (rev 11882) @@ -52,6 +52,7 @@ GARPKG_v1 = CSWgar-v1 GARPKG_v2 = CSWgar-v2 RUNTIME_DEP_PKGS_$(SRCPACKAGE) ?= $(or $(GARPKG_$(GARSYSTEMVERSION)),$(error GAR version $(GARSYSTEMVERSION) unknown)) +CATALOG_RELEASE ?= current _PKG_SPECS = $(filter-out $(NOPACKAGE),$(SPKG_SPECS)) @@ -842,7 +843,11 @@ # pkgcheck - check if the package is compliant # pkgcheck: $(foreach SPEC,$(_PKG_SPECS),package-$(SPEC)) - $(_DBG)( LC_ALL=C $(GARBIN)/checkpkg $(foreach SPEC,$(_PKG_SPECS),$(SPKG_EXPORT)/`$(call _PKG_ENV,$(SPEC)) mkpackage --tmpdir $(SPKG_TMPDIR) -qs $(WORKDIR)/$(SPEC).gspec -D pkgfile`.gz ) || exit 2;) + $(_DBG)( LC_ALL=C $(GARBIN)/checkpkg \ + --architecture "$(GARCH)" \ + --os-releases "$(SPKG_OSNAME)" \ + --catalog-release "$(CATALOG_RELEASE)" \ + $(foreach SPEC,$(_PKG_SPECS),$(SPKG_EXPORT)/`$(call _PKG_ENV,$(SPEC)) mkpackage --tmpdir $(SPKG_TMPDIR) -qs $(WORKDIR)/$(SPEC).gspec -D pkgfile`.gz ) || exit 2;) @$(MAKECOOKIE) pkgcheck-p: Modified: csw/mgar/gar/v2/lib/python/README =================================================================== --- csw/mgar/gar/v2/lib/python/README 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/lib/python/README 2010-12-11 18:01:58 UTC (rev 11882) @@ -21,9 +21,11 @@ tests as means to run various bits of code. Here's the dependency list for Ubuntu. - python-cheetah - python-hachoir-parser - python-magic - python-mox - python-progressbar +sudo aptitude install \ + python-cheetah \ + python-hachoir-parser \ + python-magic \ + python-mox \ + python-progressbar \ + python-sqlobject \ python-yaml Modified: csw/mgar/gar/v2/lib/python/catalog.py =================================================================== --- csw/mgar/gar/v2/lib/python/catalog.py 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/lib/python/catalog.py 2010-12-11 18:01:58 UTC (rev 11882) @@ -123,6 +123,7 @@ def _GetCatalogData(self, fd): catalog_data = [] for line in fd: + if line.startswith("#"): continue try: parsed = self._ParseCatalogLine(line) catalog_data.append(parsed) Modified: csw/mgar/gar/v2/lib/python/checkpkg.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg.py 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/lib/python/checkpkg.py 2010-12-11 18:01:58 UTC (rev 11882) @@ -3,44 +3,22 @@ # This is the checkpkg library, common for all checkpkg tests written in # Python. -import copy -import cPickle -import errno import itertools import logging -import operator import optparse -import os import os.path import re import pprint import progressbar -import socket -import sqlite3 import sqlobject -import time -from sqlobject import sqlbuilder import subprocess -import textwrap -from Cheetah import Template import database -import package import inspective_package -import package_checks -import package_stats import models as m -import configuration as c -import tag +import common_constants -DEBUG_BREAK_PKGMAP_AFTER = False -SYSTEM_PKGMAP = "/var/sadm/install/contents" -NEEDED_SONAMES = "needed sonames" -RUNPATH = "runpath" -SONAME = "soname" -CONFIG_MTIME = "mtime" -CONFIG_DB_SCHEMA = "db_schema_version" DO_NOT_REPORT_SURPLUS = set([u"CSWcommon", u"CSWcswclassutils", u"CSWisaexec"]) DO_NOT_REPORT_MISSING = set([]) DO_NOT_REPORT_MISSING_RE = [r"\*?SUNW.*"] @@ -48,17 +26,11 @@ PSTAMP_RE = r"(?P\w+)@(?P[\w\.-]+)-(?P\d+)" DESCRIPTION_RE = r"^([\S]+) - (.*)$" BAD_CONTENT_REGEXES = ( - # Slightly obfuscating these by using the default concatenation of - # strings. + # Slightly obfuscating these by using concatenation of strings. r'/export' r'/medusa', r'/opt' r'/build', ) -SYSTEM_SYMLINKS = ( - ("/opt/csw/bdb4", ["/opt/csw/bdb42"]), - ("/64", ["/amd64", "/sparcv9"]), - ("/opt/csw/lib/i386", ["/opt/csw/lib"]), -) INSTALL_CONTENTS_AVG_LINE_LENGTH = 102.09710677919261 SYS_DEFAULT_RUNPATH = [ "/usr/lib/$ISALIST", @@ -67,8 +39,7 @@ "/lib", ] -CONTENT_PKG_RE = r"^\*?(CSW|SUNW)[0-9a-zA-Z\-]?[0-9a-z\-]+$" -MD5_RE = r"^[0123456789abcdef]{32}$" +MD5_RE = re.compile(r"^[0123456789abcdef]{32}$") REPORT_TMPL = u"""#if $missing_deps or $surplus_deps or $orphan_sonames Dependency issues of $pkgname: @@ -90,57 +61,6 @@ #end if """ -SCREEN_ERROR_REPORT_TMPL = u"""#if $errors -#if $debug -ERROR: One or more errors have been found by $name. -#end if -#for $pkgname in $errors -$pkgname: -#for $error in $errors[$pkgname] -#if $debug - $repr($error) -#elif $error.msg -$textwrap.fill($error.msg, 78, initial_indent="# ", subsequent_indent="# ") -# -> $repr($error) - -#end if -#end for -#end for -#else -#if $debug -OK: $repr($name) module found no problems. -#end if -#end if -#if $messages -#for $msg in $messages -$textwrap.fill($msg, 78, initial_indent=" * ", subsequent_indent=" ") -#end for -#end if -#if $gar_lines - -# Checkpkg suggests adding the following lines to the GAR recipe: -# This is a summary; see above for details. -#for $line in $gar_lines -$line -#end for -#end if -""" - -# http://www.cheetahtemplate.org/docs/users_guide_html_multipage/language.directives.closures.html -TAG_REPORT_TMPL = u"""#if $errors -# Tags reported by $name module -#for $pkgname in $errors -#for $tag in $errors[$pkgname] -#if $tag.msg -$textwrap.fill($tag.msg, 70, initial_indent="# ", subsequent_indent="# ") -#end if -$pkgname: ${tag.tag_name}#if $tag.tag_info# $tag.tag_info#end if# -#end for -#end for -#end if -""" - - class Error(Exception): pass @@ -157,11 +77,12 @@ pass +class SetupError(Error): + pass + + def GetOptions(): parser = optparse.OptionParser() - parser.add_option("-b", "--stats-basedir", dest="stats_basedir", - help=("The base directory with package statistics " - "in yaml format, e.g. ~/.checkpkg/stats")) parser.add_option("-d", "--debug", dest="debug", default=False, action="store_true", help="Turn on debugging messages") @@ -172,8 +93,6 @@ default=False, action="store_true", help=("Print less messages")) (options, args) = parser.parse_args() - if not options.stats_basedir: - raise ConfigurationError("ERROR: the -b option is missing.") # Using set() to make the arguments unique. return options, set(args) @@ -195,859 +114,9 @@ return m.group("username") if m else None -class SystemPkgmap(database.DatabaseClient): - """A class to hold and manipulate the /var/sadm/install/contents file.""" - - STOP_PKGS = ["SUNWbcp", "SUNWowbcp", "SUNWucb"] - - def __init__(self, system_pkgmap_files=None, debug=False): - """There is no need to re-parse it each time. - - Read it slowly the first time and cache it for later.""" - super(SystemPkgmap, self).__init__(debug=debug) - self.cache = {} - self.pkgs_by_path_cache = {} - self.file_mtime = None - self.cache_mtime = None - self.initialized = False - if not system_pkgmap_files: - self.system_pkgmap_files = [SYSTEM_PKGMAP] - else: - self.system_pkgmap_files = system_pkgmap_files - self.csw_pkg_re = re.compile(CONTENT_PKG_RE) - self.digits_re = re.compile(r"^[0-9]+$") - - def _LazyInitializeDatabase(self): - if not self.initialized: - self.InitializeDatabase() - - def InitializeRawDb(self): - """It's necessary for low level operations.""" - if True: - logging.debug("Connecting to sqlite") - self.sqlite_conn = sqlite3.connect(self.GetDatabasePath()) - - def InitializeDatabase(self): - """Established the connection to the database. - - TODO: Refactor this class to first create CswFile with no primary key and - no indexes. - """ - need_to_create_tables = False - db_path = self.GetDatabasePath() - checkpkg_dir = os.path.join(os.environ["HOME"], self.CHECKPKG_DIR) - if not os.path.exists(db_path): - logging.info("Building the cache database %s.", self.system_pkgmap_files) - logging.info("The cache will be kept in %s.", db_path) - if not os.path.exists(checkpkg_dir): - logging.debug("Creating %s", checkpkg_dir) - os.mkdir(checkpkg_dir) - need_to_create_tables = True - self.InitializeRawDb() - self.InitializeSqlobject() - if not self.IsDatabaseGoodSchema(): - logging.info("Old database schema detected.") - self.PurgeDatabase(drop_tables=True) - need_to_create_tables = True - if need_to_create_tables: - self.CreateTables() - self.PerformInitialDataImport() - if not self.IsDatabaseUpToDate(): - logging.debug("Rebuilding the package cache, can take a few minutes.") - self.ClearTablesForUpdates() - self.RefreshDatabase() - self.initialized = True - - def RefreshDatabase(self): - for pkgmap_path in self.system_pkgmap_files: - self._ProcessSystemPkgmap(pkgmap_path) - self.PopulatePackagesTable() - self.SetDatabaseMtime() - - def PerformInitialDataImport(self): - """Imports data into the database. - - Original bit of code from checkpkg: - egrep -v 'SUNWbcp|SUNWowbcp|SUNWucb' /var/sadm/install/contents | - fgrep -f $EXTRACTDIR/liblist >$EXTRACTDIR/shortcatalog - """ - for pkgmap_path in self.system_pkgmap_files: - self._ProcessSystemPkgmap(pkgmap_path) - self.SetDatabaseSchemaVersion() - self.PopulatePackagesTable() - self.SetDatabaseMtime() - - def _ProcessSystemPkgmap(self, pkgmap_path): - """Update the database using data from pkgmap. - - The strategy to only update the necessary bits: - - for each new row - - look it up in the db - - if doesn't exist, create it - - if exists, check the - TODO: continue this description - """ - INSERT_SQL = """ - INSERT INTO csw_file (basename, path, line) - VALUES (?, ?, ?); - """ - sqlite_cursor = self.sqlite_conn.cursor() - break_after = DEBUG_BREAK_PKGMAP_AFTER - contents_length = os.stat(pkgmap_path).st_size - if break_after: - estimated_lines = break_after - else: - estimated_lines = contents_length / INSTALL_CONTENTS_AVG_LINE_LENGTH - # The progressbar library doesn't like handling larger numbers - # It displays up to 99% if we feed it a maxval in the range of hundreds of - # thousands. - progressbar_divisor = int(estimated_lines / 1000) - if progressbar_divisor < 1: - progressbar_divisor = 1 - update_period = 1L - # To help delete old records - system_pkgmap_fd = open(pkgmap_path, "r") - stop_re = re.compile("(%s)" % "|".join(self.STOP_PKGS)) - # Creating a data structure: - # soname - {: , : , ...} - logging.debug("Building database cache db of the %s file", - pkgmap_path) - logging.info("Processing %s, it can take a few minutes", pkgmap_path) - count = itertools.count() - bar = progressbar.ProgressBar() - bar.maxval = estimated_lines / progressbar_divisor - bar.start() - # I tried dropping the csw_file_basename_idx index to speed up operation, - # but after I measured the times, it turned out that it doesn't make any - # difference to the total runnng time. - # logging.info("Dropping csw_file_basename_idx") - # sqlite_cursor.execute("DROP INDEX csw_file_basename_idx;") - for line in system_pkgmap_fd: - i = count.next() - if not i % update_period and (i / progressbar_divisor) <= bar.maxval: - bar.update(i / progressbar_divisor) - if stop_re.search(line): - continue - if line.startswith("#"): - continue - fields = re.split(c.WS_RE, line) - pkgmap_entry_path = fields[0].split("=")[0] - pkgmap_entry_dir, pkgmap_entry_base_name = os.path.split(pkgmap_entry_path) - # The following SQLObject-driven inserts are 60 times slower than the raw - # sqlite API. - # pkgmap_entry = m.CswFile(basename=pkgmap_entry_base_name, - # path=pkgmap_entry_dir, line=line.strip()) - # This page has some hints: - # http://www.mail-archive.com/sqlobject-discuss at lists.sourceforge.net/msg04641.html - # "These are simple straightforward INSERTs without any additional - # high-level burden - no SELECT, no caching, nothing. Fire and forget." - # sql = self.sqo_conn.sqlrepr( - # sqlobject.sqlbuilder.Insert(m.CswFile.sqlmeta.table, values=record)) - # self.sqo_conn.query(sql) - # ...unfortunately, it isn't any faster in practice. - # The fastest way is: - sqlite_cursor.execute(INSERT_SQL, [pkgmap_entry_base_name, - pkgmap_entry_dir, - line.strip()]) - if break_after and i > break_after: - logging.warning("Breaking after %s for debugging purposes.", break_after) - break - bar.finish() - self.sqlite_conn.commit() - logging.debug("All lines of %s were processed.", pkgmap_path) - - def _ParsePkginfoLine(self, line): - fields = re.split(c.WS_RE, line) - pkgname = fields[1] - pkg_desc = u" ".join(fields[2:]) - return pkgname, pkg_desc - - def PopulatePackagesTable(self): - logging.info("Updating the packages table") - args = ["pkginfo"] - pkginfo_proc = subprocess.Popen(args, stdout=subprocess.PIPE) - stdout, stderr = pkginfo_proc.communicate() - ret = pkginfo_proc.wait() - lines = stdout.splitlines() - bar = progressbar.ProgressBar() - bar.maxval = len(lines) - bar.start() - count = itertools.count() - INSERT_SQL = """ - INSERT INTO pkginst (pkgname, pkg_desc) - VALUES (?, ?); - """ - # If self.GetInstalledPackages calls out to the initialization, - # the result is an infinite recursion. - installed_pkgs = self.GetInstalledPackages(initialize=False) - for line in stdout.splitlines(): - pkgname, pkg_desc = self._ParsePkginfoLine(line) - if pkgname not in installed_pkgs: - # This is slow: - # pkg = m.Pkginst(pkgname=pkgname, pkg_desc=pkg_desc) - # This is much faster: - self.sqlite_conn.execute(INSERT_SQL, [pkgname, pkg_desc]) - i = count.next() - bar.update(i) - # Need to commit, otherwise subsequent SQLObject calls will fail. - self.sqlite_conn.commit() - bar.finish() - - def SetDatabaseMtime(self): - mtime = self.GetFileMtime() - res = m.CswConfig.select(m.CswConfig.q.option_key==CONFIG_MTIME) - if res.count() == 0: - logging.debug("Inserting the mtime (%s) into the database.", mtime) - config_record = m.CswConfig(option_key=CONFIG_MTIME, float_value=mtime) - else: - logging.debug("Updating the mtime (%s) in the database.", mtime) - res.getOne().float_value = mtime - - def SetDatabaseSchemaVersion(self): - try: - config_option = m.CswConfig.select( - m.CswConfig.q.option_key==CONFIG_DB_SCHEMA).getOne() - config_option.int_value = database.DB_SCHEMA_VERSION - except sqlobject.main.SQLObjectNotFound, e: - version = m.CswConfig(option_key=CONFIG_DB_SCHEMA, - int_value=database.DB_SCHEMA_VERSION) - - def GetPkgmapLineByBasename(self, filename): - """Returns pkgmap lines by basename: - { - path1: line1, - path2: line2, - } - """ - if filename in self.cache: - return self.cache[filename] - self._LazyInitializeDatabase() - res = m.CswFile.select(m.CswFile.q.basename==filename) - lines = {} - for obj in res: - lines[obj.path] = obj.line - if len(lines) == 0: - logging.debug("Cache doesn't contain filename %s", filename) - self.cache[filename] = lines - return lines - - def _InferPackagesFromPkgmapLine(self, line): - """Given a pkgmap line, return all packages it contains.""" - line = line.strip() - parts = re.split(c.WS_RE, line) - pkgs = [] - if parts[1] == 'd': - parts = parts[6:] - while parts: - part = parts.pop() - if self.digits_re.match(part): - break - elif "none" == part: - break - pkgs.append(part) - # Make the packages appear in the same order as in the install/contents - # file. - pkgs.reverse() - return pkgs - - def GetPathsAndPkgnamesByBasename(self, filename): - """Returns paths and packages by basename. - - e.g. - {"/opt/csw/lib": ["CSWfoo", "CSWbar"], - "/opt/csw/1/lib": ["CSWfoomore"]} - """ - lines = self.GetPkgmapLineByBasename(filename) - pkgs = {} - # Infer packages - for file_path in lines: - pkgs[file_path] = self._InferPackagesFromPkgmapLine(lines[file_path]) - # self.error_mgr_mock.GetPathsAndPkgnamesByBasename('libc.so.1').AndReturn({ - # "/usr/lib": (u"SUNWcsl",)}) - logging.debug("self.error_mgr_mock.GetPathsAndPkgnamesByBasename(%s).AndReturn(%s)", - repr(filename), pprint.pformat(pkgs)) - return pkgs - - def GetPkgByPath(self, full_path): - if full_path not in self.pkgs_by_path_cache: - self._LazyInitializeDatabase() - path, basename = os.path.split(full_path) - try: - obj = m.CswFile.select( - sqlobject.AND( - m.CswFile.q.path==path, - m.CswFile.q.basename==basename)).getOne() - self.pkgs_by_path_cache[full_path] = self._InferPackagesFromPkgmapLine( - obj.line) - except sqlobject.main.SQLObjectNotFound, e: - logging.debug("Couldn't find in the db: %s/%s", path, basename) - logging.debug(e) - self.pkgs_by_path_cache[full_path] = [] - logging.debug("self.error_mgr_mock.GetPkgByPath(%s).AndReturn(%s)", - repr(full_path), pprint.pformat(self.pkgs_by_path_cache[full_path])) - return self.pkgs_by_path_cache[full_path] - - def GetDatabaseMtime(self): - if not self.cache_mtime: - res = m.CswConfig.select(m.CswConfig.q.option_key==CONFIG_MTIME) - if res.count() == 1: - self.cache_mtime = res.getOne().float_value - elif res.count() < 1: - self.cache_mtime = 1 - logging.debug("GetDatabaseMtime() --> %s", self.cache_mtime) - return self.cache_mtime - - def GetFileMtime(self): - if not self.file_mtime: - stat_data = os.stat(SYSTEM_PKGMAP) - self.file_mtime = stat_data.st_mtime - return self.file_mtime - - def GetDatabaseSchemaVersion(self): - schema_on_disk = 1L - if not m.CswConfig.tableExists(): - return schema_on_disk; - res = m.CswConfig.select(m.CswConfig.q.option_key == CONFIG_DB_SCHEMA) - if res.count() < 1: - logging.debug("No db schema value found, assuming %s.", - schema_on_disk) - elif res.count() == 1: - schema_on_disk = res.getOne().int_value - return schema_on_disk - - def IsDatabaseUpToDate(self): - f_mtime_epoch = self.GetFileMtime() - d_mtime_epoch = self.GetDatabaseMtime() - f_mtime = time.gmtime(int(f_mtime_epoch)) - d_mtime = time.gmtime(int(d_mtime_epoch)) - logging.debug("IsDatabaseUpToDate: f_mtime %s, d_time: %s", f_mtime, d_mtime) - # Rounding up to integer seconds. There is a race condition: - # pkgadd finishes at 100.1 - # checkpkg reads /var/sadm/install/contents at 100.2 - # new pkgadd runs and finishes at 100.3 - # subsequent checkpkg runs won't pick up the last change. - # I don't expect pkgadd to run under 1s. - fresh = f_mtime <= d_mtime - good_version = self.GetDatabaseSchemaVersion() >= database.DB_SCHEMA_VERSION - logging.debug("IsDatabaseUpToDate: good_version=%s, fresh=%s", - repr(good_version), repr(fresh)) - return fresh and good_version - - def ClearTablesForUpdates(self): - for table in self.TABLES_THAT_NEED_UPDATES: - table.clearTable() - - def PurgeDatabase(self, drop_tables=False): - if drop_tables: - for table in self.TABLES: - if table.tableExists(): - table.dropTable() - else: - logging.debug("Truncating all tables") - for table in self.TABLES: - table.clearTable() - - def GetInstalledPackages(self, initialize=True): - """Returns a dictionary of all installed packages.""" - if initialize: - self._LazyInitializeDatabase() - res = m.Pkginst.select() - return dict([[str(x.pkgname), str(x.pkg_desc)] for x in res]) - - -class LddEmulator(object): - """A class to emulate ldd(1) - - Used primarily to resolve SONAMEs and detect package dependencies. - """ - def __init__(self): - self.runpath_expand_cache = {} - self.runpath_origin_expand_cache = {} - self.symlink_expand_cache = {} - self.symlink64_cache = {} - self.runpath_sanitize_cache = {} - - def ExpandRunpath(self, runpath, isalist, binary_path): - """Expands a signle runpath element. - - Args: - runpath: e.g. "/opt/csw/lib/$ISALIST" - isalist: isalist elements - binary_path: Necessary to expand $ORIGIN - """ - key = (runpath, tuple(isalist)) - if key not in self.runpath_expand_cache: - origin_present = False - # Emulating $ISALIST and $ORIGIN expansion - if '$ORIGIN' in runpath: - origin_present = True - if origin_present: - key_o = (runpath, tuple(isalist), binary_path) - if key_o in self.runpath_origin_expand_cache: - return self.runpath_origin_expand_cache[key_o] - else: - if not binary_path.startswith("/"): - binary_path = "/" + binary_path - runpath = runpath.replace('$ORIGIN', binary_path) - if '$ISALIST' in runpath: - expanded_list = [runpath.replace('/$ISALIST', '')] - expanded_list += [runpath.replace('$ISALIST', isa) for isa in isalist] - else: - expanded_list = [runpath] - expanded_list = [os.path.abspath(p) for p in expanded_list] - if not origin_present: - self.runpath_expand_cache[key] = expanded_list - else: - self.runpath_origin_expand_cache[key_o] = expanded_list - return self.runpath_origin_expand_cache[key_o] - return self.runpath_expand_cache[key] - - def ExpandSymlink(self, symlink, target, input_path): - key = (symlink, target, input_path) - if key not in self.symlink_expand_cache: - symlink_re = re.compile(r"%s(/|$)" % symlink) - if re.search(symlink_re, input_path): - result = input_path.replace(symlink, target) - else: - result = input_path - self.symlink_expand_cache[key] = result - return self.symlink_expand_cache[key] - - def Emulate64BitSymlinks(self, runpath_list): - """Need to emulate the 64 -> amd64, 64 -> sparcv9 symlink - - Since we don't know the architecture, we are adding both amd64 and - sparcv9. It should be safe - there are other checks that make sure - that right architectures are in the right directories. - """ - key = tuple(runpath_list) - if key not in self.symlink64_cache: - symlinked_list = [] - for runpath in runpath_list: - for symlink, expansion_list in SYSTEM_SYMLINKS: - for target in expansion_list: - expanded = self.ExpandSymlink(symlink, target, runpath) - if expanded not in symlinked_list: - symlinked_list.append(expanded) - self.symlink64_cache[key] = symlinked_list - return self.symlink64_cache[key] - - def SanitizeRunpath(self, runpath): - if runpath not in self.runpath_sanitize_cache: - self.runpath_sanitize_cache[runpath] = os.path.normpath(runpath) - return self.runpath_sanitize_cache[runpath] - - - def ResolveSoname(self, runpath_list, soname, isalist, - path_list, binary_path): - """Emulates ldd behavior, minimal implementation. - - runpath: e.g. ["/opt/csw/lib/$ISALIST", "/usr/lib"] - soname: e.g. "libfoo.so.1" - isalist: e.g. ["sparcv9", "sparcv8"] - path_list: A list of paths where the soname is present, e.g. - ["/opt/csw/lib", "/opt/csw/lib/sparcv9"] - - The function returns the one path. - """ - # Emulating the install time symlinks, for instance, if the prototype contains - # /opt/csw/lib/i386/foo.so.0 and /opt/csw/lib/i386 is a symlink to ".", - # the shared library ends up in /opt/csw/lib/foo.so.0 and should be - # findable even when RPATH does not contain $ISALIST. - original_paths_by_expanded_paths = {} - for p in path_list: - expanded_p_list = self.Emulate64BitSymlinks([p]) - # We can't just expand and return; we need to return one of the paths given - # in the path_list. - for expanded_p in expanded_p_list: - original_paths_by_expanded_paths[expanded_p] = p - logging.debug( - "%s: looking for %s in %s", - soname, runpath_list, original_paths_by_expanded_paths.keys()) - for runpath_expanded in runpath_list: - if runpath_expanded in original_paths_by_expanded_paths: - # logging.debug("Found %s", - # original_paths_by_expanded_paths[runpath_expanded]) - return original_paths_by_expanded_paths[runpath_expanded] - - -def ParseDumpOutput(dump_output): - binary_data = {RUNPATH: [], - NEEDED_SONAMES: []} - runpath = [] - rpath = [] - for line in dump_output.splitlines(): - fields = re.split(c.WS_RE, line) - if len(fields) < 3: - continue - if fields[1] == "NEEDED": - binary_data[NEEDED_SONAMES].append(fields[2]) - elif fields[1] == "RUNPATH": - runpath.extend(fields[2].split(":")) - elif fields[1] == "RPATH": - rpath.extend(fields[2].split(":")) - elif fields[1] == "SONAME": - binary_data[SONAME] = fields[2] - if runpath: - binary_data[RUNPATH].extend(runpath) - elif rpath: - binary_data[RUNPATH].extend(rpath) - - # Converting runpath to a tuple, which is a hashable data type and can act as - # a key in a dict. - binary_data[RUNPATH] = tuple(binary_data[RUNPATH]) - # the NEEDED list must not be modified, converting to a tuple. - binary_data[NEEDED_SONAMES] = tuple(binary_data[NEEDED_SONAMES]) - binary_data["RUNPATH RPATH the same"] = (runpath == rpath) - binary_data["RPATH set"] = bool(rpath) - binary_data["RUNPATH set"] = bool(runpath) - return binary_data - - -class CheckpkgManagerBase(object): - """Common functions between the older and newer calling functions.""" - - def __init__(self, name, stats_basedir, md5sum_list, debug=False): - self.debug = debug - self.name = name - self.md5sum_list = md5sum_list - self.stats_basedir = stats_basedir - self.errors = [] - self.individual_checks = [] - self.set_checks = [] - self.packages = [] - - def GetPackageStatsList(self): - return [package_stats.PackageStats(None, self.stats_basedir, x) - for x in self.md5sum_list] - - def FormatReports(self, errors, messages, gar_lines): - namespace = { - "name": self.name, - "errors": errors, - "debug": self.debug, - "textwrap": textwrap, - "messages": messages, - "gar_lines": gar_lines, - } - screen_t = Template.Template(SCREEN_ERROR_REPORT_TMPL, searchList=[namespace]) - tags_report_t = Template.Template(TAG_REPORT_TMPL, searchList=[namespace]) - return screen_t, tags_report_t - - def SetErrorsToDict(self, set_errors, a_dict): - # These were generated by a set, but are likely to be bound to specific - # packages. We'll try to preserve the package assignments. - errors = copy.copy(a_dict) - for tag in set_errors: - if tag.pkgname: - if not tag.pkgname in errors: - errors[tag.pkgname] = [] - errors[tag.pkgname].append(tag) - else: - if "package-set" not in errors: - errors["package-set"] = [] - errors["package-set"].append(tag) - return errors - - def GetOptimizedAllStats(self, stats_obj_list): - logging.info("Unwrapping candies...") - pkgs_data = [] - counter = itertools.count() - length = len(stats_obj_list) - bar = progressbar.ProgressBar() - bar.maxval = length - bar.start() - for stats_obj in stats_obj_list: - # pkg_data = {} - # This bit is tightly tied to the data structures returned by - # PackageStats. - # - # Python strings are already implementing the flyweight pattern. What's - # left is lists and dictionaries. - i = counter.next() - # logging.debug("Loading stats for %s (%s/%s)", - # stats_obj.md5sum, i, length) - raw_pkg_data = stats_obj.GetAllStats() - pkg_data = raw_pkg_data - pkgs_data.append(pkg_data) - bar.update(i) - bar.finish() - return pkgs_data - - def Run(self): - """Runs all the checks - - Returns a tuple of an exit code and a report. - """ - packages_data = self.GetPackageStatsList() - db_stat_objs_by_pkgname = {} - obj_id_list = [] - for pkg in packages_data: - db_obj = pkg.GetDbObject() - db_stat_objs_by_pkgname[db_obj.pkginst.pkgname] = db_obj - obj_id_list.append(db_obj.id) - logging.debug("Deleting old %s errors from the database.", - db_obj.pkginst.pkgname) - conn = sqlobject.sqlhub.processConnection - # It's the maximum number of ORs in a SQL statement. - # Slicing the long list up into s-sized segments. 1000 is too much. - obj_id_lists = SliceList(obj_id_list, 900) - for obj_id_list in obj_id_lists: - # WARNING: This is raw SQL, potentially breaking during a transition to - # another db. It's here for efficiency. - sql = ("DELETE FROM checkpkg_error_tag WHERE %s;" - % " OR ".join("srv4_file_id = %s" % x for x in obj_id_list)) - conn.query(sql) - # Need to construct the predicate by hand. Otherwise: - # File "/opt/csw/lib/python/site-packages/sqlobject/sqlbuilder.py", - # line 829, in OR - # return SQLOp("OR", op1, OR(*ops)) - # RuntimeError: maximum recursion depth exceeded while calling a Python object - # - # The following also tries to use recursion and fails. - # delete_predicate = sqlobject.OR(False) - # for pred in delete_predicate_list: - # delete_predicate = sqlobject.OR(delete_predicate, pred) - # conn.query( - # conn.sqlrepr(sqlbuilder.Delete(m.CheckpkgErrorTag.sqlmeta.table, - # delete_predicate - # ))) - # res = m.CheckpkgErrorTag.select(m.CheckpkgErrorTag.q.srv4_file==db_obj) - # for obj in res: - # obj.destroySelf() - errors, messages, gar_lines = self.GetAllTags(packages_data) - no_errors = len(errors) + 1 - bar = progressbar.ProgressBar() - bar.maxval = no_errors - count = itertools.count(1) - logging.info("Stuffing the candies under the pillow...") - bar.start() - for pkgname, es in errors.iteritems(): - logging.debug("Saving %s errors to the database.", pkgname) - for e in es: - db_error = m.CheckpkgErrorTag(srv4_file=db_stat_objs_by_pkgname[e.pkgname], - pkgname=e.pkgname, - tag_name=e.tag_name, - tag_info=e.tag_info, - msg=e.msg) - bar.update(count.next()) - bar.finish() - flat_error_list = reduce(operator.add, errors.values(), []) - screen_report, tags_report = self.FormatReports(errors, messages, gar_lines) - exit_code = 0 - return (exit_code, screen_report, tags_report) - - -class CheckInterfaceBase(object): - """Proxies interaction with checking functions. - - It wraps access to the /var/sadm/install/contents cache. - """ - - def __init__(self, system_pkgmap=None, lines_dict=None): - self.system_pkgmap = system_pkgmap - if not self.system_pkgmap: - self.system_pkgmap = SystemPkgmap() - self.common_paths = {} - if lines_dict: - self.lines_dict = lines_dict - else: - self.lines_dict = {} - - def GetPathsAndPkgnamesByBasename(self, basename): - """Proxies calls to self.system_pkgmap.""" - return self.system_pkgmap.GetPathsAndPkgnamesByBasename(basename) - - def GetPkgByPath(self, path): - """Proxies calls to self.system_pkgmap.""" - return self.system_pkgmap.GetPkgByPath(path) - - def GetInstalledPackages(self, initialize=True): - return self.system_pkgmap.GetInstalledPackages(initialize) - - def _GetPathsForArch(self, arch): - if not arch in self.lines_dict: - file_name = os.path.join( - os.path.dirname(__file__), "..", "..", "etc", "commondirs-%s" % arch) - logging.debug("opening %s", file_name) - f = open(file_name, "r") - self.lines_dict[arch] = f.read().splitlines() - f.close() - return self.lines_dict[arch] - - def GetCommonPaths(self, arch): - """Returns a list of paths for architecture, from gar/etc/commondirs*.""" - # TODO: If this was cached, it could save a significant amount of time. - if arch not in ('i386', 'sparc', 'all'): - logging.warn("Wrong arch: %s", repr(arch)) - return [] - if arch == 'all': - archs = ('i386', 'sparc') - else: - archs = [arch] - lines = [] - for arch in archs: - lines.extend(self._GetPathsForArch(arch)) - return lines - - -class IndividualCheckInterface(CheckInterfaceBase): - """To be passed to the checking functions. - - Wraps the creation of tag.CheckpkgTag objects. - """ - - def __init__(self, pkgname, system_pkgmap=None): - super(IndividualCheckInterface, self).__init__(system_pkgmap) - self.pkgname = pkgname - self.errors = [] - - def ReportError(self, tag_name, tag_info=None, msg=None): - logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s)", - repr(tag_name), repr(tag_info), repr(msg)) - checkpkg_tag = tag.CheckpkgTag(self.pkgname, tag_name, tag_info, msg=msg) - self.errors.append(checkpkg_tag) - - -class SetCheckInterface(CheckInterfaceBase): - """To be passed to set checking functions.""" - - def __init__(self, system_pkgmap=None): - super(SetCheckInterface, self).__init__(system_pkgmap) - self.errors = [] - - def ReportError(self, pkgname, tag_name, tag_info=None, msg=None): - logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s, %s)", - repr(pkgname), - repr(tag_name), repr(tag_info), repr(msg)) - checkpkg_tag = tag.CheckpkgTag(pkgname, tag_name, tag_info, msg=msg) - self.errors.append(checkpkg_tag) - - -class CheckpkgMessenger(object): - """Class responsible for passing messages from checks to the user.""" - def __init__(self): - self.messages = [] - self.one_time_messages = {} - self.gar_lines = [] - - def Message(self, m): - logging.debug("self.messenger.Message(%s)", repr(m)) - self.messages.append(m) - - def OneTimeMessage(self, key, m): - logging.debug("self.messenger.OneTimeMessage(%s, %s)", repr(key), repr(m)) - if key not in self.one_time_messages: - self.one_time_messages[key] = m - - def SuggestGarLine(self, m): - logging.debug("self.messenger.SuggestGarLine(%s)", repr(m)) - self.gar_lines.append(m) - - -class CheckpkgManager2(CheckpkgManagerBase): - """The second incarnation of the checkpkg manager. - - Implements the API to be used by checking functions. - - Its purpose is to reduce the amount of boilerplate code and allow for easier - unit test writing. - """ - def _RegisterIndividualCheck(self, function): - self.individual_checks.append(function) - - def _RegisterSetCheck(self, function): - self.set_checks.append(function) - - def _AutoregisterChecks(self): - """Autodetects all defined checks.""" - logging.debug("CheckpkgManager2._AutoregisterChecks()") - checkpkg_module = package_checks - members = dir(checkpkg_module) - for member_name in members: - logging.debug("Examining module member: %s", repr(member_name)) - member = getattr(checkpkg_module, member_name) - if callable(member): - if member_name.startswith("Check"): - logging.debug("Registering individual check %s", repr(member_name)) - self._RegisterIndividualCheck(member) - elif member_name.startswith("SetCheck"): - logging.debug("Registering set check %s", repr(member_name)) - self._RegisterSetCheck(member) - - def GetAllTags(self, stats_obj_list): - errors = {} - pkgmap = SystemPkgmap() - logging.debug("Loading all package statistics.") - pkgs_data = self.GetOptimizedAllStats(stats_obj_list) - logging.debug("All package statistics loaded.") - messenger = CheckpkgMessenger() - # Individual checks - count = itertools.count() - bar = progressbar.ProgressBar() - bar.maxval = len(pkgs_data) * len(self.individual_checks) - logging.info("Tasting candies one by one...") - bar.start() - for pkg_data in pkgs_data: - pkgname = pkg_data["basic_stats"]["pkgname"] - check_interface = IndividualCheckInterface(pkgname, pkgmap) - for function in self.individual_checks: - logger = logging.getLogger("%s-%s" % (pkgname, function.__name__)) - logger.debug("Calling %s", function.__name__) - function(pkg_data, check_interface, logger=logger, messenger=messenger) - if check_interface.errors: - errors[pkgname] = check_interface.errors - bar.update(count.next()) - bar.finish() - # Set checks - logging.info("Tasting them all at once...") - for function in self.set_checks: - logger = logging.getLogger(function.__name__) - check_interface = SetCheckInterface(pkgmap) - logger.debug("Calling %s", function.__name__) - function(pkgs_data, check_interface, logger=logger, messenger=messenger) - if check_interface.errors: - errors = self.SetErrorsToDict(check_interface.errors, errors) - messages = messenger.messages + messenger.one_time_messages.values() - return errors, messages, messenger.gar_lines - - def Run(self): - self._AutoregisterChecks() - return super(CheckpkgManager2, self).Run() - - -def GetIsalist(): - args = ["isalist"] - isalist_proc = subprocess.Popen(args, stdout=subprocess.PIPE) - stdout, stderr = isalist_proc.communicate() - ret = isalist_proc.wait() - if ret: - logging.error("Calling isalist has failed.") - isalist = re.split(r"\s+", stdout.strip()) - return tuple(isalist) - - -def ErrorTagsFromFile(file_name): - fd = open(file_name) - error_tags = [] - for line in fd: - if line.startswith("#"): - continue - pkgname, tag_name, tag_info = tag.ParseTagLine(line) - error_tags.append(tag.CheckpkgTag(pkgname, tag_name, tag_info)) - return error_tags - - -def SliceList(l, size): - """Trasforms a list into a list of lists.""" - idxes = xrange(0, len(l), size) - sliced = [l[i:i+size] for i in idxes] - return sliced - def IsMd5(s): # For optimization, move the compilation elsewhere. - md5_re = re.compile(MD5_RE) - return md5_re.match(s) + return MD5_RE.match(s) def GetPackageStatsByFilenamesOrMd5s(args, debug=False): filenames = [] @@ -1059,15 +128,15 @@ filenames.append(arg) srv4_pkgs = [inspective_package.InspectiveCswSrv4File(x) for x in filenames] pkgstat_objs = [] - bar = progressbar.ProgressBar() - bar.maxval = len(md5s) + len(srv4_pkgs) - bar.start() + pbar = progressbar.ProgressBar() + pbar.maxval = len(md5s) + len(srv4_pkgs) + pbar.start() counter = itertools.count() for pkg in srv4_pkgs: pkgstat_objs.append(package_stats.PackageStats(pkg, debug=debug)) - bar.update(counter.next()) + pbar.update(counter.next()) for md5 in md5s: pkgstat_objs.append(package_stats.PackageStats(None, md5sum=md5, debug=debug)) - bar.update(counter.next()) - bar.finish() + pbar.update(counter.next()) + pbar.finish() return pkgstat_objs Added: csw/mgar/gar/v2/lib/python/checkpkg2.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg2.py (rev 0) +++ csw/mgar/gar/v2/lib/python/checkpkg2.py 2010-12-11 18:01:58 UTC (rev 11882) @@ -0,0 +1,179 @@ +#!/usr/bin/env python2.6 +# +# checkpkg +# + +import logging +import operator +import optparse +import os +import sys +import textwrap +import configuration +import datetime +import database + +import package_stats +import checkpkg +import checkpkg_lib +import overrides +import models +import sqlobject + +USAGE = """%prog [ options ] pkg1 [ pkg2 [ ... ] ]""" +CHECKPKG_MODULE_NAME = "The main checking module." +BEFORE_OVERRIDES = """If any of the reported errors were false positives, you +can override them pasting the lines below to the GAR recipe.""" + +AFTER_OVERRIDES = """Please note that checkpkg isn't suggesting you should +simply add these overrides do the Makefile. It only informs what the overrides +could look like. You need to understand what are the reported issues about and +use your best judgement to decide whether to fix the underlying problems or +override them. For more information, scroll up and read the detailed +messages.""" + +UNAPPLIED_OVERRIDES = """WARNING: Some overrides did not match any errors. +They can be removed, as they don't take any effect anyway. If you're getting +errors at the same time, maybe you didn't specify the overrides correctly.""" + + +class Error(Exception): + """Generic error.""" + + +class UsageError(Error): + """Problem with usage, e.g. command line options.""" + + +def main(): + configuration.SetUpSqlobjectConnection() + parser = optparse.OptionParser(USAGE) + parser.add_option("-d", "--debug", + dest="debug", + action="store_true", + default=False, + help="Switch on debugging messages") + parser.add_option("-q", "--quiet", + dest="quiet", + action="store_true", + default=False, + help="Display less messages") + parser.add_option("--catalog-release", + dest="catrel", + default="unstable", + help="A catalog release: experimental, unstable, testing, stable.") + parser.add_option("-r", "--os-releases", + dest="osrel_commas", + help=("Comma separated list of ['SunOS5.9', 'SunOS5.10'], " + "e.g. 'SunOS5.9,SunOS5.10'.")) + parser.add_option("-a", "--architecture", + dest="arch", + help="Architecture: i386, sparc.") + parser.add_option("--profile", dest="profile", + default=False, action="store_true", + help="Enable profiling (a developer option).") + options, args = parser.parse_args() + assert len(args), "The list of files or md5 sums must be not empty." + logging_level = logging.INFO + if options.quiet: + logging_level = logging.WARNING + elif options.debug: + # If both flags are set, debug wins. + logging_level = logging.DEBUG + logging.basicConfig(level=logging_level) + logging.debug("Starting.") + + dm = database.DatabaseManager() + dm.AutoManage() + + + err_msg_list = [] + if not options.osrel_commas: + err_msg_list.append("Please specify --os-releases.") + if not options.arch: + err_msg_list.append("Please specify --architecture.") + if err_msg_list: + raise UsageError(" ".join(err_msg_list)) + + stats_list = [] + collector = package_stats.StatsCollector( + logger=logging, + debug=options.debug) + # We need to separate files and md5 sums. + md5_sums, file_list = [], [] + for arg in args: + if checkpkg.MD5_RE.match(arg): + md5_sums.append(arg) + else: + file_list.append(arg) + if file_list: + stats_list = collector.CollectStatsFromFiles(file_list, None) + # We need the md5 sums of these files + md5_sums.extend([x["basic_stats"]["md5_sum"] for x in stats_list]) + assert md5_sums, "The list of md5 sums must not be empty." + logging.debug("md5_sums: %s", md5_sums) + osrel_list = options.osrel_commas.split(",") + logging.debug("Reading packages data from the database.") + # This part might need improvements in order to handle a whole + # catalog. On the other hand, if we already have the whole catalog in + # the database, we can do it altogether differently. + # Transforming the result to a list in order to force object + # retrieval. + sqo_pkgs = list(models.Srv4FileStats.select( + sqlobject.IN(models.Srv4FileStats.q.md5_sum, md5_sums))) + tags_for_all_osrels = [] + sqo_arch = models.Architecture.selectBy(name=options.arch).getOne() + sqo_catrel = models.CatalogRelease.selectBy(name=options.catrel).getOne() + for osrel in osrel_list: + sqo_osrel = models.OsRelease.selectBy(short_name=osrel).getOne() + dm.VerifyContents(sqo_osrel, sqo_arch) + check_manager = checkpkg_lib.CheckpkgManager2( + CHECKPKG_MODULE_NAME, + sqo_pkgs, + osrel, + options.arch, + options.catrel, + debug=options.debug, + show_progress=(not options.quiet)) + # Running the checks, reporting and exiting. + exit_code, screen_report, tags_report = check_manager.Run() + screen_report = unicode(screen_report) + if not options.quiet and screen_report: + # TODO: Write this to screen only after overrides are applied. + sys.stdout.write(screen_report) + else: + logging.debug("No screen report.") + + overrides_list = [list(pkg.GetOverridesResult()) for pkg in sqo_pkgs] + override_list = reduce(operator.add, overrides_list) + args = (sqo_osrel, sqo_arch, sqo_catrel) + tag_lists = [list(pkg.GetErrorTagsResult(*args)) for pkg in sqo_pkgs] + error_tags = reduce(operator.add, tag_lists) + # TODO: Set the 'overriden' tag for specific error tags + (tags_after_overrides, + unapplied_overrides) = overrides.ApplyOverrides(error_tags, override_list) + tags_for_all_osrels.extend(tags_after_overrides) + if not options.quiet: + if tags_after_overrides: + print textwrap.fill(BEFORE_OVERRIDES, 80) + for checkpkg_tag in tags_after_overrides: + print checkpkg_tag.ToGarSyntax() + print textwrap.fill(AFTER_OVERRIDES, 80) + if unapplied_overrides: + print textwrap.fill(UNAPPLIED_OVERRIDES, 80) + for override in unapplied_overrides: + print "* Unused %s" % override + exit_code = bool(tags_for_all_osrels) + sys.exit(exit_code) + + +if __name__ == '__main__': + if "--profile" in sys.argv: + import cProfile + t_str = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M") + home = os.environ["HOME"] + cprof_file_name = os.path.join( + home, ".checkpkg", "run-modules-%s.cprof" % t_str) + cProfile.run("main()", sort=1, filename=cprof_file_name) + else: + main() Property changes on: csw/mgar/gar/v2/lib/python/checkpkg2.py ___________________________________________________________________ Added: svn:executable + * Added: csw/mgar/gar/v2/lib/python/checkpkg_defaults.ini =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_defaults.ini (rev 0) +++ csw/mgar/gar/v2/lib/python/checkpkg_defaults.ini 2010-12-11 18:01:58 UTC (rev 11882) @@ -0,0 +1,6 @@ +; The default setting for checkpkg. Without this file, checkpkg creates a new +; config file and starts to populate the database. + +[database] + +auto_manage = no Added: csw/mgar/gar/v2/lib/python/checkpkg_lib.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_lib.py (rev 0) +++ csw/mgar/gar/v2/lib/python/checkpkg_lib.py 2010-12-11 18:01:58 UTC (rev 11882) @@ -0,0 +1,637 @@ +# A collection of checkpkg-specific classes. +# +# This file is supposed to drain the checkpkg.py file until is becomes +# empty and goes away. + +import copy +from Cheetah import Template +import logging +import package_stats +import package_checks +import sqlobject +import itertools +import progressbar +import database +import models as m +import textwrap +import os.path +import tag +import pprint +import operator +import common_constants +import sharedlib_utils +import mute_progressbar +import cPickle +from sqlobject import sqlbuilder + + +class Error(Exception): + pass + + +class CatalogDatabaseError(Error): + pass + + +SCREEN_ERROR_REPORT_TMPL = u"""#if $errors +#if $debug +ERROR: One or more errors have been found by $name. +#end if +#for $pkgname in $errors +$pkgname: +#for $error in $errors[$pkgname] +#if $debug + $repr($error) +#elif $error.msg +$textwrap.fill($error.msg, 78, initial_indent="# ", subsequent_indent="# ") +# -> $repr($error) + +#end if +#end for +#end for +#else +#if $debug +OK: $repr($name) module found no problems. +#end if +#end if +#if $messages +#for $msg in $messages +$textwrap.fill($msg, 78, initial_indent=" * ", subsequent_indent=" ") +#end for +#end if +#if $gar_lines + +# Checkpkg suggests adding the following lines to the GAR recipe: +# This is a summary; see above for details. +#for $line in $gar_lines +$line +#end for +#end if +""" + +# http://www.cheetahtemplate.org/docs/users_guide_html_multipage/language.directives.closures.html +TAG_REPORT_TMPL = u"""#if $errors +# Tags reported by $name module +#for $pkgname in $errors +#for $tag in $errors[$pkgname] +#if $tag.msg +$textwrap.fill($tag.msg, 70, initial_indent="# ", subsequent_indent="# ") +#end if +$pkgname: ${tag.tag_name}#if $tag.tag_info# $tag.tag_info#end if# +#end for +#end for +#end if +""" + + +class SqlobjectHelperMixin(object): + + def __init__(self): + super(SqlobjectHelperMixin, self).__init__() + self.triad_cache = {} + + def GetSqlobjectTriad(self, osrel, arch, catrel): + key = (osrel, arch, catrel) + if key not in self.triad_cache: + logging.debug("GetSqlobjectTriad(%s, %s, %s)", osrel, arch, catrel) + sqo_arch = m.Architecture.select( + m.Architecture.q.name==arch).getOne() + sqo_osrel = m.OsRelease.select( + m.OsRelease.q.short_name==osrel).getOne() + sqo_catrel = m.CatalogRelease.select( + m.CatalogRelease.q.name==catrel).getOne() + self.triad_cache[key] = sqo_osrel, sqo_arch, sqo_catrel + return self.triad_cache[key] + + +class CheckpkgManagerBase(SqlobjectHelperMixin): + """Common functions between the older and newer calling functions.""" + + def __init__(self, name, sqo_pkgs_list, osrel, arch, catrel, debug=False, + show_progress=False): + super(CheckpkgManagerBase, self).__init__() + self.debug = debug + self.name = name + self.sqo_pkgs_list = sqo_pkgs_list + self.errors = [] + self.individual_checks = [] + self.set_checks = [] + self.packages = [] + self.osrel = osrel + self.arch = arch + self.catrel = catrel + self.show_progress = show_progress + + def GetProgressBar(self): + if self.show_progress and not self.debug: + return progressbar.ProgressBar() + else: + return mute_progressbar.MuteProgressBar() + + def GetSqlobjectTriad(self): + return super(CheckpkgManagerBase, self).GetSqlobjectTriad( + self.osrel, self.arch, self.catrel) + + def GetPackageStatsList(self): + raise RuntimeError("Please don't use this function as it violates " + "the Law of Demeter.") + + def FormatReports(self, errors, messages, gar_lines): + namespace = { + "name": self.name, + "errors": errors, + "debug": self.debug, + "textwrap": textwrap, + "messages": messages, + "gar_lines": gar_lines, + } + screen_t = Template.Template(SCREEN_ERROR_REPORT_TMPL, searchList=[namespace]) + tags_report_t = Template.Template(TAG_REPORT_TMPL, searchList=[namespace]) + return screen_t, tags_report_t + + def SetErrorsToDict(self, set_errors, a_dict): + # These were generated by a set, but are likely to be bound to specific + # packages. We'll try to preserve the package assignments. + errors = copy.copy(a_dict) + for tag in set_errors: + if tag.pkgname: + if not tag.pkgname in errors: + errors[tag.pkgname] = [] + errors[tag.pkgname].append(tag) + else: + if "package-set" not in errors: + errors["package-set"] = [] + errors["package-set"].append(tag) + return errors + + def GetOptimizedAllStats(self, stats_obj_list): + logging.info("Unwrapping candies...") + pkgs_data = [] + counter = itertools.count() + length = len(stats_obj_list) + pbar = self.GetProgressBar() + pbar.maxval = length + pbar.start() + for stats_obj in stats_obj_list: + # This bit is tightly tied to the data structures returned by + # PackageStats. + # + # Python strings are already implementing the flyweight pattern. What's + # left is lists and dictionaries. + i = counter.next() + raw_pkg_data = cPickle.loads(stats_obj.data_obj.pickle) + pkg_data = raw_pkg_data + pkgs_data.append(pkg_data) + pbar.update(i) + pbar.finish() + return pkgs_data + + def Run(self): + """Runs all the checks + + Returns a tuple of an exit code and a report. + """ + # packages_data = self.GetPackageStatsList() + assert self.sqo_pkgs_list, "The list of packages must not be empty." + db_stat_objs_by_pkgname = {} + for pkg in self.sqo_pkgs_list: + db_stat_objs_by_pkgname[pkg.pkginst.pkgname] = pkg + logging.debug("Deleting old errors from the database.") + for pkgname, db_obj in db_stat_objs_by_pkgname.iteritems(): + sqo_os_rel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad() + db_obj.RemoveCheckpkgResults( + sqo_os_rel, sqo_arch, sqo_catrel) + errors, messages, gar_lines = self.GetAllTags(self.sqo_pkgs_list) + no_errors = len(errors) + 1 + pbar = self.GetProgressBar() + pbar.maxval = no_errors + count = itertools.count(1) + logging.info("Stuffing the candies under the pillow...") + pbar.start() + for pkgname, es in errors.iteritems(): + logging.debug("Saving errors of %s to the database.", pkgname) + for e in es: + if e.pkgname not in db_stat_objs_by_pkgname: + logging.warning("Not saving an error for %s.", e.pkgname) + continue + db_error = m.CheckpkgErrorTag(srv4_file=db_stat_objs_by_pkgname[e.pkgname], + pkgname=e.pkgname, + tag_name=e.tag_name, + tag_info=e.tag_info, + msg=e.msg, + os_rel=sqo_os_rel, + catrel=sqo_catrel, + arch=sqo_arch) + pbar.update(count.next()) + pbar.finish() + flat_error_list = reduce(operator.add, errors.values(), []) + screen_report, tags_report = self.FormatReports(errors, messages, gar_lines) + exit_code = 0 + return (exit_code, screen_report, tags_report) + + +class CheckInterfaceBase(object): + """Provides an interface for checking functions. + + It wraps access to the catalog database. + """ + + def __init__(self, osrel, arch, catrel, catalog=None, lines_dict=None): + self.osrel = osrel + self.arch = arch + self.catrel = catrel + self.catalog = catalog + if not self.catalog: + self.catalog = Catalog() + self.common_paths = {} + if lines_dict: + self.lines_dict = lines_dict + else: + self.lines_dict = {} + + def GetPathsAndPkgnamesByBasename(self, basename): + """Proxies calls to class member.""" + return self.catalog.GetPathsAndPkgnamesByBasename( + basename, self.osrel, self.arch, self.catrel) + + def GetPkgByPath(self, file_path): + """Proxies calls to self.system_pkgmap.""" + return self.catalog.GetPkgByPath( + file_path, self.osrel, self.arch, self.catrel) + + def GetInstalledPackages(self): + return self.catalog.GetInstalledPackages( + self.osrel, self.arch, self.catrel) + + def _GetPathsForArch(self, arch): + if not arch in self.lines_dict: + file_name = os.path.join( + os.path.dirname(__file__), "..", "..", "etc", "commondirs-%s" % arch) + logging.debug("opening %s", file_name) + f = open(file_name, "r") + self.lines_dict[arch] = f.read().splitlines() + f.close() + return self.lines_dict[arch] + + def GetCommonPaths(self, arch): + """Returns a list of paths for architecture, from gar/etc/commondirs*.""" + # TODO: If this was cached, it could save a significant amount of time. + if arch not in ('i386', 'sparc', 'all'): + logging.warn("Wrong arch: %s", repr(arch)) + return [] + if arch == 'all': + archs = ('i386', 'sparc') + else: + archs = [arch] + lines = [] + for arch in archs: + lines.extend(self._GetPathsForArch(arch)) + return lines + + +class IndividualCheckInterface(CheckInterfaceBase): + """To be passed to the checking functions. + + Wraps the creation of tag.CheckpkgTag objects. + """ + + def __init__(self, pkgname, osrel, arch, catrel, catalog=None): + super(IndividualCheckInterface, self).__init__(osrel, arch, catrel, catalog) + self.pkgname = pkgname + self.errors = [] + + def ReportError(self, tag_name, tag_info=None, msg=None): + logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s)", + repr(tag_name), repr(tag_info), repr(msg)) + checkpkg_tag = tag.CheckpkgTag(self.pkgname, tag_name, tag_info, msg=msg) + self.errors.append(checkpkg_tag) + + +class SetCheckInterface(CheckInterfaceBase): + """To be passed to set checking functions.""" + + def __init__(self, osrel, arch, catrel, catalog=None): + super(SetCheckInterface, self).__init__(osrel, arch, catrel, catalog) + self.errors = [] + + def ReportError(self, pkgname, tag_name, tag_info=None, msg=None): + logging.debug("self.error_mgr_mock.ReportError(%s, %s, %s, %s)", + repr(pkgname), + repr(tag_name), repr(tag_info), repr(msg)) + checkpkg_tag = tag.CheckpkgTag(pkgname, tag_name, tag_info, msg=msg) + self.errors.append(checkpkg_tag) + + +class CheckpkgMessenger(object): + """Class responsible for passing messages from checks to the user.""" + def __init__(self): + self.messages = [] + self.one_time_messages = {} + self.gar_lines = [] + + def Message(self, m): + logging.debug("self.messenger.Message(%s)", repr(m)) + self.messages.append(m) + + def OneTimeMessage(self, key, m): + logging.debug("self.messenger.OneTimeMessage(%s, %s)", repr(key), repr(m)) + if key not in self.one_time_messages: + self.one_time_messages[key] = m + + def SuggestGarLine(self, m): + logging.debug("self.messenger.SuggestGarLine(%s)", repr(m)) + self.gar_lines.append(m) + + +class CheckpkgManager2(CheckpkgManagerBase): + """The second incarnation of the checkpkg manager. + + Implements the API to be used by checking functions. + + Its purpose is to reduce the amount of boilerplate code and allow for easier + unit test writing. + """ + def _RegisterIndividualCheck(self, function): + self.individual_checks.append(function) + + def _RegisterSetCheck(self, function): + self.set_checks.append(function) + + def _AutoregisterChecks(self): + """Autodetects all defined checks.""" + logging.debug("CheckpkgManager2._AutoregisterChecks()") + checkpkg_module = package_checks + members = dir(checkpkg_module) + for member_name in members: + logging.debug("Examining module member: %s", repr(member_name)) + member = getattr(checkpkg_module, member_name) + if callable(member): + if member_name.startswith("Check"): + logging.debug("Registering individual check %s", repr(member_name)) + self._RegisterIndividualCheck(member) + elif member_name.startswith("SetCheck"): + logging.debug("Registering set check %s", repr(member_name)) + self._RegisterSetCheck(member) + + def GetAllTags(self, stats_obj_list): + errors = {} + catalog = Catalog() + logging.debug("Loading all package statistics.") + pkgs_data = self.GetOptimizedAllStats(stats_obj_list) + logging.debug("All package statistics loaded.") + messenger = CheckpkgMessenger() + # Individual checks + count = itertools.count() + pbar = self.GetProgressBar() + pbar.maxval = len(pkgs_data) * len(self.individual_checks) + logging.info("Tasting candies one by one...") + pbar.start() + for pkg_data in pkgs_data: + pkgname = pkg_data["basic_stats"]["pkgname"] + check_interface = IndividualCheckInterface( + pkgname, self.osrel, self.arch, self.catrel, catalog) + for function in self.individual_checks: + logger = logging.getLogger("%s-%s" % (pkgname, function.__name__)) + logger.debug("Calling %s", function.__name__) + function(pkg_data, check_interface, logger=logger, messenger=messenger) + if check_interface.errors: + errors[pkgname] = check_interface.errors + pbar.update(count.next()) + pbar.finish() + # Set checks + logging.info("Tasting them all at once...") + for function in self.set_checks: + logger = logging.getLogger(function.__name__) + check_interface = SetCheckInterface( + self.osrel, self.arch, self.catrel, catalog) + logger.debug("Calling %s", function.__name__) + function(pkgs_data, check_interface, logger=logger, messenger=messenger) + if check_interface.errors: + errors = self.SetErrorsToDict(check_interface.errors, errors) + messages = messenger.messages + messenger.one_time_messages.values() + return errors, messages, messenger.gar_lines + + def Run(self): + self._AutoregisterChecks() + return super(CheckpkgManager2, self).Run() + + +def SliceList(l, size): + """Trasforms a list into a list of lists.""" + idxes = xrange(0, len(l), size) + sliced = [l[i:i+size] for i in idxes] + return sliced + + +class CatalogMixin(SqlobjectHelperMixin): + """Responsible for functionality related to catalog operations. + + These include: + - getting a list of all packages + - getting a list of packages that contain certain files + - getting a list of packages that contain files of certain names + """ + + def __init__(self): + super(CatalogMixin, self).__init__() + self.pkgs_by_path_cache = {} + + def GetInstalledPackages(self, osrel, arch, catrel): + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + logging.debug("GetInstalledPackages(%s, %s, %s)" + % (osrel, arch, catrel)) + + # Object defining a filter for our OS release, architecture and catalog + # release. + oac = sqlobject.AND( + m.Srv4FileInCatalog.q.osrel==sqo_osrel, + m.Srv4FileInCatalog.q.arch==sqo_arch, + m.Srv4FileInCatalog.q.catrel==sqo_catrel) + # Join object, responsible for connecting the tables the right way. + join = [ + sqlbuilder.INNERJOINOn(None, + m.Srv4FileStats, + m.Pkginst.q.id==m.Srv4FileStats.q.pkginst), + sqlbuilder.INNERJOINOn(None, + m.Srv4FileInCatalog, + m.Srv4FileStats.q.id==m.Srv4FileInCatalog.q.srv4file), + ] + + res = m.Pkginst.select(oac, join=join) + pkgs = [x.pkgname for x in res] + return pkgs + + def GetPathsAndPkgnamesByBasename(self, basename, osrel, arch, catrel): + """Retrieves pkginst names of packages that have certain files. + + Since it needs to match a specific catalog, a table join is required: + - CswFile (basename) + - related Srv4FileStats + - related Srv4FileInCatalog + + Args: + basename: u'libfoo.so.1' + osrel: u'5.9' + arch: 'sparc', 'x86' + catrel: 'stable' + + Returns: + {"/opt/csw/lib": ["CSWfoo", "CSWbar"], + "/opt/csw/1/lib": ["CSWfoomore"]} + """ + pkgs = {} + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + + # Looks like this join is hard to do that way. + # res = m.Srv4FileInCatalog.select( + # sqlobject.AND( + # m.Srv4FileInCatalog.q.osrel==sqo_osrel, + # m.Srv4FileInCatalog.q.arch==sqo_arch, + # m.Srv4FileInCatalog.q.catrel==sqo_catrel)). + # throughTo.srv4file.thoughTo.files + + # We'll implement it on the application level. First, we'll get all + # the files that match the basename, and then filter them based on + # catalog properties. + res = m.CswFile.select(m.CswFile.q.basename==basename) + file_list = [] + for f in res: + # Check whether osrel, arch and catrel are matching. + for cat in f.srv4_file.in_catalogs: + if (f.srv4_file.registered + and cat.osrel == sqo_osrel + and cat.arch == sqo_arch + and cat.catrel == sqo_catrel): + file_list.append(f) + for obj in file_list: + pkgs.setdefault(obj.path, []) + pkgs[obj.path].append(obj.pkginst.pkgname) + logging.debug("self.error_mgr_mock.GetPathsAndPkgnamesByBasename(%s)" + ".AndReturn(%s)", repr(basename), pprint.pformat(pkgs)) + return pkgs + + def GetPkgByPath(self, full_file_path, osrel, arch, catrel): + """Returns a list of packages.""" + # Memoization for performance + + # Memoization won't buy us much. Perhaps we can fetch all the files + # belonging to the same package, so that we quickly prepopulate the cache. + + logging.debug("GetPkgByPath(%s, %s, %s, %s)" + % (full_file_path, osrel, arch, catrel)) + key = (full_file_path, osrel, arch, catrel) + if key not in self.pkgs_by_path_cache: + file_path, basename = os.path.split(full_file_path) + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + oac = sqlobject.AND( + m.Srv4FileInCatalog.q.osrel==sqo_osrel, + m.Srv4FileInCatalog.q.arch==sqo_arch, + m.Srv4FileInCatalog.q.catrel==sqo_catrel) + path_filter = sqlobject.AND( + oac, + m.CswFile.q.path==file_path, + m.CswFile.q.basename==basename, + m.Srv4FileStats.q.registered==True) + join = [ + sqlbuilder.INNERJOINOn(None, + m.Srv4FileStats, + m.Pkginst.q.id==m.Srv4FileStats.q.pkginst), + sqlbuilder.INNERJOINOn(None, + m.Srv4FileInCatalog, + m.Srv4FileStats.q.id==m.Srv4FileInCatalog.q.srv4file), + sqlbuilder.INNERJOINOn(None, + m.CswFile, + m.Srv4FileStats.q.id==m.CswFile.q.srv4_file), + ] + res = m.Pkginst.select(path_filter, join=join) + pkgs = [x.pkgname for x in res] + self.pkgs_by_path_cache[key] = frozenset(pkgs) + return self.pkgs_by_path_cache[key] + + def CommonArchByString(self, s): + return sharedlib_utils.ArchByString(s) + + def Srv4MatchesCatalog(self, sqo_srv4, sqo_arch): + cat_arch = self.CommonArchByString(sqo_arch.name) + pkg_arch = self.CommonArchByString(sqo_srv4.arch.name) + ans = (cat_arch == pkg_arch) or (pkg_arch == common_constants.ARCH_ALL) + if not ans: + logging.debug("Srv4MatchesCatalog(): mismatch: %s / %s and %s / %s", + cat_arch, pkg_arch, pkg_arch, common_constants.ARCH_ALL) + # Some packages have the architecture in the file saying 'all', but pkginfo + # says 'i386'. + filename_arch = self.CommonArchByString(sqo_srv4.filename_arch.name) + if filename_arch == common_constants.ARCH_ALL: + ans = True + if filename_arch != pkg_arch: + logging.warning( + "Package %s declares %s in pkginfo and %s in the filename.", + sqo_srv4, repr(pkg_arch), repr(filename_arch)) + return ans + + def AddSrv4ToCatalog(self, sqo_srv4, osrel, arch, catrel): + """Registers a srv4 file in a catalog.""" + logging.debug("AddSrv4ToCatalog(%s, %s, %s, %s)", + sqo_srv4, osrel, arch, catrel) + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + if not self.Srv4MatchesCatalog(sqo_srv4, sqo_arch): + raise CatalogDatabaseError( + "Specified package does not match the catalog. " + "Package: %s, catalog: %s %s %s" + % (sqo_srv4, osrel, arch, catrel)) + if not sqo_srv4.registered: + raise CatalogDatabaseError( + "Package %s (%s) is not registered for releases." + % (sqo_srv4.basename, sqo_srv4.md5_sum)) + # Checking for presence of a different srv4 with the same pkginst in the + # same catalog + pkginst = sqo_srv4.pkginst + res = m.Srv4FileStats.select( + m.Srv4FileStats.q.pkginst==pkginst).throughTo.in_catalogs.filter( + sqlobject.AND( + m.Srv4FileInCatalog.q.osrel==sqo_osrel, + m.Srv4FileInCatalog.q.arch==sqo_arch, + m.Srv4FileInCatalog.q.catrel==sqo_catrel, + m.Srv4FileInCatalog.q.srv4file!=sqo_srv4)) + if len(list(res)): + raise CatalogDatabaseError( + "There already is a package with that pkgname: %s" % pkginst) + # Checking for presence of the same srv4 already in the catalog. + res = m.Srv4FileInCatalog.select( + sqlobject.AND( + m.Srv4FileInCatalog.q.osrel==sqo_osrel, + m.Srv4FileInCatalog.q.arch==sqo_arch, + m.Srv4FileInCatalog.q.catrel==sqo_catrel, + m.Srv4FileInCatalog.q.srv4file==sqo_srv4)) + if len(list(res)): + logging.debug("%s is already part of %s %s %s", + sqo_srv4, osrel, arch, catrel) + # Our srv4 is already part of that catalog. + return + obj = m.Srv4FileInCatalog( + arch=sqo_arch, + osrel=sqo_osrel, + catrel=sqo_catrel, + srv4file=sqo_srv4) + + def RemoveSrv4(self, sqo_srv4, osrel, arch, catrel): + sqo_osrel, sqo_arch, sqo_catrel = self.GetSqlobjectTriad( + osrel, arch, catrel) + sqo_srv4_in_cat = m.Srv4FileInCatalog.select( + sqlobject.AND( + m.Srv4FileInCatalog.q.arch==sqo_arch, + m.Srv4FileInCatalog.q.osrel==sqo_osrel, + m.Srv4FileInCatalog.q.catrel==sqo_catrel, + m.Srv4FileInCatalog.q.srv4file==sqo_srv4)).getOne() + sqo_srv4_in_cat.registered = False + # TODO(maciej): Remove all files belonging to that one + for cat_file in sqo_srv4_in_cat.srv4file.files: + cat_file.destroySelf() + + +class Catalog(CatalogMixin): + pass Added: csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py (rev 0) +++ csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py 2010-12-11 18:01:58 UTC (rev 11882) @@ -0,0 +1,74 @@ +#!/usr/bin/env python2.6 + +import copy +import unittest +import checkpkg_lib +import tag +import package_stats +import database +import sqlobject +import models +import package_stats +import inspective_package +import mox +import test_base + +from testdata.neon_stats import pkgstats as neon_stats + + +class CheckpkgManager2UnitTest(unittest.TestCase): + + def setUp(self): + super(CheckpkgManager2UnitTest, self).setUp() + self.mox = mox.Mox() + + def testSingleTag(self): + m = checkpkg_lib.CheckpkgManager2( + "testname", [], "5.9", "sparc", "unstable") + tags = { + "CSWfoo": [ + tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), + ], + } + screen_report, tags_report = m.FormatReports(tags, [], []) + expected = u'# Tags reported by testname module\nCSWfoo: foo-tag foo-info\n' + self.assertEqual(expected, unicode(tags_report)) + + def testThreeTags(self): + m = checkpkg_lib.CheckpkgManager2( + "testname", [], "5.9", "sparc", "unstable") + tags = { + "CSWfoo": [ + tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), + tag.CheckpkgTag("CSWfoo", "bar-tag", "bar-info"), + tag.CheckpkgTag("CSWfoo", "baz-tag"), + ], + } + screen_report, tags_report = m.FormatReports(tags, [], []) + expected = (u'# Tags reported by testname module\n' + u'CSWfoo: foo-tag foo-info\n' + u'CSWfoo: bar-tag bar-info\n' + u'CSWfoo: baz-tag\n') + self.assertEqual(expected, unicode(tags_report)) + + +class CheckpkgManager2DatabaseIntegrationTest( + test_base.SqlObjectTestMixin, unittest.TestCase): + + def setUp(self): + super(CheckpkgManager2DatabaseIntegrationTest, self).setUp() + self.mox = mox.Mox() + + def testInsertNeon(self): + self.dbc.InitialDataImport() + sqo_pkg = package_stats.PackageStats.SaveStats(neon_stats[0], True) + cm = checkpkg_lib.CheckpkgManager2( + "testname", [sqo_pkg], "SunOS5.9", "sparc", "unstable", + show_progress=False) + cm.Run() + # Verifying that there are some reported error tags. + self.assertTrue(list(models.CheckpkgErrorTag.select())) + + +if __name__ == '__main__': + unittest.main() Property changes on: csw/mgar/gar/v2/lib/python/checkpkg_lib_test.py ___________________________________________________________________ Added: svn:executable + * Modified: csw/mgar/gar/v2/lib/python/checkpkg_test.py =================================================================== --- csw/mgar/gar/v2/lib/python/checkpkg_test.py 2010-12-11 00:26:22 UTC (rev 11881) +++ csw/mgar/gar/v2/lib/python/checkpkg_test.py 2010-12-11 18:01:58 UTC (rev 11882) @@ -1,16 +1,24 @@ -#!/opt/csw/bin/python2.6 +#!/usr/bin/env python2.6 # $Id$ +import copy import re import unittest import mox import difflib import checkpkg +import checkpkg_lib +import database +import models as m import tag -import testdata.dump_output_1 as dump_1 -import testdata.dump_output_2 as dump_2 -import testdata.dump_output_3 as dump_3 +import package_stats +import sqlite3 +import sqlobject +import test_base +from testdata.tree_stats import pkgstats as tree_stats +from testdata.neon_stats import pkgstats as neon_stats + """A set of unit tests for the library checking code. A bunch of lines to test in the interactive Python shell. @@ -23,250 +31,6 @@ SELECT * FROM systempkgmap WHERE basename = 'libncursesw.so.5'; """ -class GetLinesBySonameUnitTest(unittest.TestCase): - - def setUp(self): - self.pkgmap_mocker = mox.Mox() - self.e = checkpkg.LddEmulator() - - def testExpandRunpath_1(self): - isalist = ["foo", "bar"] - runpath = "/opt/csw/lib/$ISALIST" - expected = ["/opt/csw/lib", "/opt/csw/lib/foo", "/opt/csw/lib/bar"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_2(self): - isalist = ["foo", "bar"] - runpath = "/opt/csw/mysql5/lib/$ISALIST/mysql" - expected = ["/opt/csw/mysql5/lib/mysql", - "/opt/csw/mysql5/lib/foo/mysql", - "/opt/csw/mysql5/lib/bar/mysql"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_OriginSimple(self): - isalist = () - runpath = "$ORIGIN" - expected = ["/opt/csw/lib"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_OriginDots(self): - isalist = () - runpath = "$ORIGIN/.." - expected = ["/opt/csw/lib"] - bin_path = "opt/csw/lib/subdir" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_Caching(self): - """Make sure that the cache doesn't mess it up. - - Two invocations, where the only difference is the binary path. - """ - isalist = () - runpath = "/opt/csw/lib/foo" - expected = ["/opt/csw/lib/foo"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - expected = ["/opt/csw/lib/foo"] - bin_path = "/opt/csw/lib/foo" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_OriginCaching(self): - """Make sure that the cache doesn't mess it up. - - Two invocations, where the only difference is the binary path. - """ - isalist = () - runpath = "$ORIGIN" - expected = ["/opt/csw/lib"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, - self.e.ExpandRunpath(runpath, isalist, bin_path)) - expected = ["/opt/csw/foo/lib"] - bin_path = "/opt/csw/foo/lib" - self.assertEquals(expected, - self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testExpandRunpath_OnlyIsalist(self): - """Make sure that the cache doesn't mess it up. - - Two invocations, where the only difference is the binary path. - """ - isalist = ("bar",) - runpath = "/opt/csw/lib/$ISALIST" - expected = ["/opt/csw/lib", "/opt/csw/lib/bar"] - bin_path = "opt/csw/lib" - self.assertEquals(expected, self.e.ExpandRunpath(runpath, isalist, bin_path)) - - def testEmulate64BitSymlinks_1(self): - runpath_list = ["/opt/csw/mysql5/lib/foo/mysql/64"] - expected = "/opt/csw/mysql5/lib/foo/mysql/amd64" - self.assertTrue(expected in self.e.Emulate64BitSymlinks(runpath_list)) - - def testEmulate64BitSymlinks_2(self): - runpath_list = ["/opt/csw/mysql5/lib/64/mysql/foo"] - expected = "/opt/csw/mysql5/lib/amd64/mysql/foo" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - - def testEmulate64BitSymlinks_3(self): - runpath_list = ["/opt/csw/mysql5/lib/64/mysql/foo"] - expected = "/opt/csw/mysql5/lib/sparcv9/mysql/foo" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - - def testEmulate64BitSymlinks_4(self): - """No repeated paths because of symlink expansion""" - runpath_list = ["/opt/csw/lib"] - expected = "/opt/csw/lib" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertEquals(1, len(result), "len(%s) != %s" % (result, 1)) - - def testEmulateSymlinks_3(self): - runpath_list = ["/opt/csw/bdb4"] - expected = "/opt/csw/bdb42" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - - def testEmulateSymlinks_4(self): - runpath_list = ["/opt/csw/bdb42"] - expected = "/opt/csw/bdb42" - not_expected = "/opt/csw/bdb422" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, - "%s not in %s" % (expected, result)) - self.assertFalse(not_expected in result, - "%s is in %s" % (not_expected, result)) - - def testEmulateSymlinks_5(self): - """Install time symlink expansion.""" - runpath_list = ["/opt/csw/lib/i386"] - expected = "/opt/csw/lib" - result = self.e.Emulate64BitSymlinks(runpath_list) - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - - def testEmulateSymlinks_6(self): - """ExpandSymlink for /opt/csw/lib/i386.""" - runpath_list = ["/opt/csw/lib/i386"] - expected = "/opt/csw/lib" - not_expected = "/opt/csw/lib/i386" - result = self.e.ExpandSymlink("/opt/csw/lib/i386", - "/opt/csw/lib", - "/opt/csw/lib/i386") - self.assertTrue(expected in result, "%s not in %s" % (expected, result)) - self.assertFalse(not_expected in result, - "%s is in %s" % (not_expected, result)) - - def testSanitizeRunpath_1(self): - self.assertEqual("/opt/csw/lib", - self.e.SanitizeRunpath("/opt/csw/lib/")) - - def testSanitizeRunpath_2(self): - self.assertEqual("/opt/csw/lib", - self.e.SanitizeRunpath("/opt//csw////lib/")) - - - -class ParseDumpOutputUnitTest(unittest.TestCase): - - def test_1(self): - expected = { - 'RPATH set': True, - 'RUNPATH RPATH the same': True, - 'RUNPATH set': True, - 'needed sonames': ('librt.so.1', - 'libresolv.so.2', - 'libc.so.1', - 'libgen.so.1', - 'libsocket.so.1', - 'libnsl.so.1', - 'libm.so.1', - 'libz.so.1'), - 'runpath': ('/opt/csw/lib/$ISALIST', - '/opt/csw/lib', - '/opt/csw/mysql5/lib/$ISALIST', - '/opt/csw/mysql5/lib', - '/opt/csw/mysql5/lib/$ISALIST/mysql'), - 'soname': 'libmysqlclient.so.15', - } - self.assertEqual(expected, - checkpkg.ParseDumpOutput(dump_1.DATA_DUMP_OUTPUT)) - - def testEmpty(self): - expected_runpath = () - self.assertEqual( - expected_runpath, - checkpkg.ParseDumpOutput(dump_2.DATA_DUMP_OUTPUT)["runpath"]) - - def testRpathOnly(self): - expected = { - 'RPATH set': True, - 'RUNPATH RPATH the same': False, - 'RUNPATH set': False, - 'needed sonames': ('librt.so.1', - 'libresolv.so.2', - 'libc.so.1', - 'libgen.so.1', - 'libsocket.so.1', - 'libnsl.so.1', - 'libm.so.1', - 'libz.so.1'), - 'runpath': ('/opt/csw/lib/$ISALIST', - '/opt/csw/lib', - '/opt/csw/mysql5/lib/$ISALIST', - '/opt/csw/mysql5/lib', - '/opt/csw/mysql5/lib/$ISALIST/mysql'), - 'soname': 'libmysqlclient.so.15', - } - self.assertEqual( - expected, - checkpkg.ParseDumpOutput(dump_3.DATA_DUMP_OUTPUT)) - - -class SystemPkgmapUnitTest(unittest.TestCase): - - def testParsePkginfoLine(self): - line = ('application CSWcswclassutils ' - 'cswclassutils - CSW class action utilities') - expected = ('CSWcswclassutils', - 'cswclassutils - CSW class action utilities') - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._ParsePkginfoLine(line)) - - def test_InferPackagesFromPkgmapLine(self): - line = ("/opt/csw/sbin d none 0755 root bin CSWfping CSWbonobo2 " - "CSWkrb5libdev CSWsasl CSWschilybase CSWschilyutils CSWstar " - "CSWcommon CSWcacertificates CSWfacter") - expected = ["CSWfping", "CSWbonobo2", "CSWkrb5libdev", "CSWsasl", - "CSWschilybase", "CSWschilyutils", "CSWstar", "CSWcommon", - "CSWcacertificates", "CSWfacter"] - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) - - def test_InferPackagesFromPkgmapLine_2(self): - line = ("/usr/lib/sparcv9/libpthread.so.1 f none 0755 root bin 41296 28258 " - "1018129099 SUNWcslx") - expected = ["SUNWcslx"] - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) - - def test_InferPackagesFromPkgmapLine_3(self): - line = ("/usr/lib/libCrun.so.1 f none 0755 root bin 63588 " - "6287 1256043984 SUNWlibC") - expected = ["SUNWlibC"] - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) - - def test_InferPackagesFromPkgmapLine_4(self): - line = ("/opt/csw/apache2/lib/libapr-1.so.0=libapr-1.so.0.3.8 s none " - "CSWapache2rt") - expected = ["CSWapache2rt"] - spkgmap = checkpkg.SystemPkgmap() - self.assertEqual(expected, spkgmap._InferPackagesFromPkgmapLine(line)) - - class ExtractorsUnitTest(unittest.TestCase): def testExtractDescriptionFromGoodData(self): @@ -296,68 +60,67 @@ self.assertEqual(expected, re.match(checkpkg.PSTAMP_RE, pstamp).groupdict()) -class CheckpkgManager2UnitTest(unittest.TestCase): - - def test_1(self): - m = checkpkg.CheckpkgManager2("testname", "/tmp", ["CSWfoo"]) - tags = { - "CSWfoo": [ - tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), - ], - } - screen_report, tags_report = m.FormatReports(tags, [], []) - expected = u'# Tags reported by testname module\nCSWfoo: foo-tag foo-info\n' - self.assertEqual(expected, unicode(tags_report)) - - def test_2(self): - m = checkpkg.CheckpkgManager2("testname", "/tmp", ["CSWfoo"]) - tags = { - "CSWfoo": [ - tag.CheckpkgTag("CSWfoo", "foo-tag", "foo-info"), - tag.CheckpkgTag("CSWfoo", "bar-tag", "bar-info"), - tag.CheckpkgTag("CSWfoo", "baz-tag"), - ], - } - screen_report, tags_report = m.FormatReports(tags, [], []) - expected = (u'# Tags reported by testname module\n' - u'CSWfoo: foo-tag foo-info\n' - u'CSWfoo: bar-tag bar-info\n' - u'CSWfoo: baz-tag\n') - self.assertEqual(expected, unicode(tags_report)) - - class SliceListUnitTest(unittest.TestCase): def testOne(self): l = [1, 2, 3, 4, 5] s = 1 expected = [[1], [2], [3], [4], [5]] - self.assertTrue(expected, checkpkg.SliceList(l, s)) + self.assertTrue(expected, checkpkg_lib.SliceList(l, s)) def testTwo(self): l = [1, 2, 3, 4, 5] s = 2 expected = [[1, 2], [3, 4], [5]] - self.assertTrue(expected, checkpkg.SliceList(l, s)) @@ Diff output truncated at 100000 characters. @@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sun Dec 12 00:58:47 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sat, 11 Dec 2010 23:58:47 +0000 Subject: [csw-devel] SF.net SVN: gar:[11883] csw/mgar/pkg/apache2/trunk Message-ID: Revision: 11883 http://gar.svn.sourceforge.net/gar/?rev=11883&view=rev Author: bdwalton Date: 2010-12-11 23:58:46 +0000 (Sat, 11 Dec 2010) Log Message: ----------- apache2: add a postinstall script for CSWap2worker that will handle (re)starting it after install if required. Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/Makefile Added Paths: ----------- csw/mgar/pkg/apache2/trunk/files/CSWap2worker.postinstall Modified: csw/mgar/pkg/apache2/trunk/Makefile =================================================================== --- csw/mgar/pkg/apache2/trunk/Makefile 2010-12-11 18:01:58 UTC (rev 11882) +++ csw/mgar/pkg/apache2/trunk/Makefile 2010-12-11 23:58:46 UTC (rev 11883) @@ -37,7 +37,7 @@ # Standard package bits DISTFILES += CSWapache2.killproc cswapache2 -DISTFILES += CSWapache2.preinstall +DISTFILES += CSWapache2.preinstall CSWap2worker.postinstall # Configuration templates DISTFILES += update20to22 Added: csw/mgar/pkg/apache2/trunk/files/CSWap2worker.postinstall =================================================================== --- csw/mgar/pkg/apache2/trunk/files/CSWap2worker.postinstall (rev 0) +++ csw/mgar/pkg/apache2/trunk/files/CSWap2worker.postinstall 2010-12-11 23:58:46 UTC (rev 11883) @@ -0,0 +1,52 @@ +#!/bin/sh + +# this is a special handler for the worker mpm of apache2. As we ship +# the init/smf script with the primary package (which provides the +# default prefork mpm), there is no hook to auto-(re)start apache when +# this package gets installed. Unfortunately, the postinstall script +# is the best way to handle this situation. + +CSW_PREFIX=/opt/csw +AP2_PREFIX=$CSW_PREFIX/apache2 +AP2_BINDIR=$AP2_PREFIX/sbin +AP2_HTTPD=$AP2_BINDIR/httpd +AP2_CTRL=$AP2_BINDIR/apachectl +AP2_CONF=/etc/opt/csw/apache2/httpd.conf +SVCADM=/usr/sbin/svcadm + +# only worry about stop/start if we're not installing via jumpstart or +# similar +if [ -z "$PKG_INSTALL_ROOT" ]; then + [ ! -f "$AP2_CONF" ] && exit 0 + + # Source csw.conf, if it exists + if [ -f /opt/csw/etc/csw.conf ] ; then + . /opt/csw/etc/csw.conf + fi + if [ -f /etc/opt/csw/csw.conf ] ; then + . /etc/opt/csw/csw.conf + fi + + daemon=yes + if [ "$autoenable_daemons" = "no" ]; then + daemon=no + fi + if [ "$autoenable_cswapache2" = "no" ]; then + daemon=no + elif [ "$autoenable_cswapache2" = "yes" ]; then + daemon=yes + fi + + if [ "$daemon" = "yes" -a -x "$AP2_HTTPD" ]; then + if [ -x "$SVCADM" ]; then + $SVCADM disable cswapache2 + $SVCADM enable cswapache2 + elif [ -x "$AP2_CTRL" ]; then + $AP2_CTRL -k stop + $AP2_CTRL -k start + fi + sleep 2 + fi +fi + +exit 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sun Dec 12 02:30:26 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sun, 12 Dec 2010 01:30:26 +0000 Subject: [csw-devel] SF.net SVN: gar:[11884] csw/mgar/pkg/apache2/trunk Message-ID: Revision: 11884 http://gar.svn.sourceforge.net/gar/?rev=11884&view=rev Author: bdwalton Date: 2010-12-12 01:30:26 +0000 (Sun, 12 Dec 2010) Log Message: ----------- apache2: stop httpd.worker prior to ap2_worker removal Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/Makefile Added Paths: ----------- csw/mgar/pkg/apache2/trunk/files/CSWap2worker.preremove Modified: csw/mgar/pkg/apache2/trunk/Makefile =================================================================== --- csw/mgar/pkg/apache2/trunk/Makefile 2010-12-11 23:58:46 UTC (rev 11883) +++ csw/mgar/pkg/apache2/trunk/Makefile 2010-12-12 01:30:26 UTC (rev 11884) @@ -37,7 +37,8 @@ # Standard package bits DISTFILES += CSWapache2.killproc cswapache2 -DISTFILES += CSWapache2.preinstall CSWap2worker.postinstall +DISTFILES += CSWapache2.preinstall +DISTFILES += CSWap2worker.postinstall CSWap2worker.preremove # Configuration templates DISTFILES += update20to22 Added: csw/mgar/pkg/apache2/trunk/files/CSWap2worker.preremove =================================================================== --- csw/mgar/pkg/apache2/trunk/files/CSWap2worker.preremove (rev 0) +++ csw/mgar/pkg/apache2/trunk/files/CSWap2worker.preremove 2010-12-12 01:30:26 UTC (rev 11884) @@ -0,0 +1,26 @@ +#!/bin/sh + +# Stop httpd.worker prior to removal + +CSW_PREFIX=/opt/csw +AP2_PREFIX=$CSW_PREFIX/apache2 +AP2_BINDIR=$AP2_PREFIX/sbin +AP2_HTTPD=$AP2_BINDIR/httpd +AP2_CTRL=$AP2_BINDIR/apachectl +AP2_CONF=/etc/opt/csw/apache2/httpd.conf +SVCADM=/usr/sbin/svcadm + +[ ! -f "$AP2_CONF" ] && exit 0 + +if [ -n "`pgrep -f apache2/sbin/httpd`" ]; then + if [ -x "$AP2_HTTPD" ]; then + if [ -x "$SVCADM" ]; then + $SVCADM disable cswapache2 + elif [ -x "$AP2_CTRL" ]; then + $AP2_CTRL -k stop + fi + sleep 2 + fi +fi + +exit 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sun Dec 12 04:30:23 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sun, 12 Dec 2010 03:30:23 +0000 Subject: [csw-devel] SF.net SVN: gar:[11885] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11885 http://gar.svn.sourceforge.net/gar/?rev=11885&view=rev Author: bdwalton Date: 2010-12-12 03:30:23 +0000 (Sun, 12 Dec 2010) Log Message: ----------- apache2: correct the last step in the config migration to avoid re-munging previous translations Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-12 01:30:26 UTC (rev 11884) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-12 03:30:23 UTC (rev 11885) @@ -27,7 +27,7 @@ # handle the new path to default ssl key files. # update various uses of the var/ paths. # ensure we use the config files from the new location - perl -pi -e "s/\/opt\/csw\/apache2\/etc\/server.crt/\/etc\/opt\/csw\/apache2\/server.crt/;" -e "s/\/opt\/csw\/apache2\/etc\/server.key/\/etc\/opt\/csw\/apache2\/server.key/;" -e "s/\/opt\/csw\/apache2\/var\/log\//\/var\/opt\/csw\/log\/apache2\//;" -e "s/\"\/opt\/csw\/apache2\/var\//\"\/var\/opt\/csw\/apache2\//;" -e "s/\"var\/log\//\"\/var\/opt\/csw\/log\/apache2\//;" -e "s/etc\//\/etc\/opt\/csw\/apache2\//;" \$NEW_CONF_FILE + perl -pi -e "s/\/opt\/csw\/apache2\/etc\/server.crt/\/etc\/opt\/csw\/apache2\/server.crt/;" -e "s/\/opt\/csw\/apache2\/etc\/server.key/\/etc\/opt\/csw\/apache2\/server.key/;" -e "s/\/opt\/csw\/apache2\/var\/log\//\/var\/opt\/csw\/log\/apache2\//;" -e "s/\"\/opt\/csw\/apache2\/var\//\"\/var\/opt\/csw\/apache2\//;" -e "s/\"var\/log\//\"\/var\/opt\/csw\/log\/apache2\//;" -e "s/ etc\//\/etc\/opt\/csw\/apache2\//;" \$NEW_CONF_FILE else # so, we're not an existing or 'needs migration' install, we must # install from the templates. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From bdwalton at users.sourceforge.net Sun Dec 12 04:49:04 2010 From: bdwalton at users.sourceforge.net (bdwalton at users.sourceforge.net) Date: Sun, 12 Dec 2010 03:49:04 +0000 Subject: [csw-devel] SF.net SVN: gar:[11886] csw/mgar/pkg/apache2/trunk/files/build_cas_template Message-ID: Revision: 11886 http://gar.svn.sourceforge.net/gar/?rev=11886&view=rev Author: bdwalton Date: 2010-12-12 03:49:04 +0000 (Sun, 12 Dec 2010) Log Message: ----------- apache2: add missing space in config migration handling Modified Paths: -------------- csw/mgar/pkg/apache2/trunk/files/build_cas_template Modified: csw/mgar/pkg/apache2/trunk/files/build_cas_template =================================================================== --- csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-12 03:30:23 UTC (rev 11885) +++ csw/mgar/pkg/apache2/trunk/files/build_cas_template 2010-12-12 03:49:04 UTC (rev 11886) @@ -27,7 +27,7 @@ # handle the new path to default ssl key files. # update various uses of the var/ paths. # ensure we use the config files from the new location - perl -pi -e "s/\/opt\/csw\/apache2\/etc\/server.crt/\/etc\/opt\/csw\/apache2\/server.crt/;" -e "s/\/opt\/csw\/apache2\/etc\/server.key/\/etc\/opt\/csw\/apache2\/server.key/;" -e "s/\/opt\/csw\/apache2\/var\/log\//\/var\/opt\/csw\/log\/apache2\//;" -e "s/\"\/opt\/csw\/apache2\/var\//\"\/var\/opt\/csw\/apache2\//;" -e "s/\"var\/log\//\"\/var\/opt\/csw\/log\/apache2\//;" -e "s/ etc\//\/etc\/opt\/csw\/apache2\//;" \$NEW_CONF_FILE + perl -pi -e "s/\/opt\/csw\/apache2\/etc\/server.crt/\/etc\/opt\/csw\/apache2\/server.crt/;" -e "s/\/opt\/csw\/apache2\/etc\/server.key/\/etc\/opt\/csw\/apache2\/server.key/;" -e "s/\/opt\/csw\/apache2\/var\/log\//\/var\/opt\/csw\/log\/apache2\//;" -e "s/\"\/opt\/csw\/apache2\/var\//\"\/var\/opt\/csw\/apache2\//;" -e "s/\"var\/log\//\"\/var\/opt\/csw\/log\/apache2\//;" -e "s/ etc\// \/etc\/opt\/csw\/apache2\//;" \$NEW_CONF_FILE else # so, we're not an existing or 'needs migration' install, we must # install from the templates. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From dmichelsen at users.sourceforge.net Sun Dec 12 12:02:46 2010 From: dmichelsen at users.sourceforge.net (dmichelsen at users.sourceforge.net) Date: Sun, 12 Dec 2010 11:02:46 +0000 Subject: [csw-devel] SF.net SVN: gar:[11887] csw/mgar/pkg/unrar/trunk Message-ID: Revision: 11887 http://gar.svn.sourceforge.net/gar/?rev=11887&view=rev Author: dmichelsen Date: 2010-12-12 11:02:46 +0000 (Sun, 12 Dec 2010) Log Message: ----------- unrar: Update to 4.0.2 Modified Paths: -------------- csw/mgar/pkg/unrar/trunk/Makefile csw/mgar/pkg/unrar/trunk/checksums Modified: csw/mgar/pkg/unrar/trunk/Makefile =================================================================== --- csw/mgar/pkg/unrar/trunk/Makefile 2010-12-12 03:49:04 UTC (rev 11886) +++ csw/mgar/pkg/unrar/trunk/Makefile 2010-12-12 11:02:46 UTC (rev 11887) @@ -1,5 +1,5 @@ GARNAME = unrar -GARVERSION = 3.9.10 +GARVERSION = 4.0.2 CATEGORIES = utils DESCRIPTION = RAR archive extractor Modified: csw/mgar/pkg/unrar/trunk/checksums =================================================================== --- csw/mgar/pkg/unrar/trunk/checksums 2010-12-12 03:49:04 UTC (rev 11886) +++ csw/mgar/pkg/unrar/trunk/checksums 2010-12-12 11:02:46 UTC (rev 11887) @@ -1,2 +1 @@ -594b777453751ee331ef241160f31499 unrar.1 -3c130ae52ff9fece50af988c343e396d unrarsrc-3.9.10.tar.gz +6dbd55a85368e784c693f42ff327354d unrarsrc-4.0.2.tar.gz This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Sun Dec 12 13:50:05 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Sun, 12 Dec 2010 12:50:05 +0000 Subject: [csw-devel] SF.net SVN: gar:[11889] csw/mgar/gar/v2/gar.mk Message-ID: Revision: 11889 http://gar.svn.sourceforge.net/gar/?rev=11889&view=rev Author: skayser Date: 2010-12-12 12:50:05 +0000 (Sun, 12 Dec 2010) Log Message: ----------- gar/v2: obsolete GARNAME, GARVERSION Modified Paths: -------------- csw/mgar/gar/v2/gar.mk Modified: csw/mgar/gar/v2/gar.mk =================================================================== --- csw/mgar/gar/v2/gar.mk 2010-12-12 12:43:48 UTC (rev 11888) +++ csw/mgar/gar/v2/gar.mk 2010-12-12 12:50:05 UTC (rev 11889) @@ -15,16 +15,9 @@ $(error Your version of 'make' is too old: $(MAKE_VERSION). Please make sure you are using at least 3.81) endif -# Prepare for the GARNAME & GARVERSION to NAME & VERSION migration. While the -# recipes have not been adjusted, we will accept both variables. Once the -# adjustment has been carried out, delete these two lines and uncomment the -# deprecation errors below. -NAME ?= $(GARNAME) -VERSION ?= $(GARVERSION) +$(if $(GARNAME),$(error The deprecated variable 'GARNAME' is defined, please replace it with 'NAME')) +$(if $(GARVERSION),$(error The deprecated variable 'GARVERSION' is defined, please replace it with 'VERSION')) -#$(if $(GARNAME),$(error The deprecated variable 'GARNAME' is defined, please replace it with 'NAME')) -#$(if $(GARVERSION),$(error The deprecated variable 'GARVERSION' is defined, please replace it with 'VERSION')) - # $(GARDIR) is pre-set by the top-level category.mk GARBIN = $(GARDIR)/bin This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. From skayser at users.sourceforge.net Sun Dec 12 13:44:24 2010 From: skayser at users.sourceforge.net (skayser at users.sourceforge.net) Date: Sun, 12 Dec 2010 12:44:24 +0000 Subject: [csw-devel] SF.net SVN: gar:[11888] csw/mgar/pkg Message-ID: Revision: 11888 http://gar.svn.sourceforge.net/gar/?rev=11888&view=rev Author: skayser Date: 2010-12-12 12:43:48 +0000 (Sun, 12 Dec 2010) Log Message: ----------- All trunks and branches: rename GARNAME, GARVERSION to NAME, VERSION Modified Paths: -------------- csw/mgar/pkg/GeoIP/trunk/Makefile csw/mgar/pkg/ImageMagick/branches/64-bit/Makefile csw/mgar/pkg/ImageMagick/branches/package-split/Makefile csw/mgar/pkg/ImageMagick/trunk/Makefile csw/mgar/pkg/MailScanner/trunk/Makefile csw/mgar/pkg/Makefile csw/mgar/pkg/Vispan/trunk/Makefile csw/mgar/pkg/ZSI/trunk/Makefile csw/mgar/pkg/a2ps/trunk/Makefile csw/mgar/pkg/achievo/trunk/Makefile csw/mgar/pkg/adobereader/trunk/Makefile csw/mgar/pkg/aide/trunk/Makefile csw/mgar/pkg/alarm-clock/trunk/Makefile csw/mgar/pkg/alpine/trunk/Makefile csw/mgar/pkg/alternatives/branches/alternatives-gar/Makefile csw/mgar/pkg/amanda/trunk/Makefile csw/mgar/pkg/amarok/trunk/Makefile csw/mgar/pkg/amavisd-new/trunk/Makefile csw/mgar/pkg/apache/trunk/Makefile csw/mgar/pkg/apache2/branches/fs-rework/Makefile csw/mgar/pkg/apache2/trunk/Makefile csw/mgar/pkg/apache2-worker/trunk/Makefile csw/mgar/pkg/apcupsd/trunk/Makefile csw/mgar/pkg/apg/trunk/Makefile csw/mgar/pkg/apr/trunk/Makefile csw/mgar/pkg/apr-iconv/trunk/Makefile csw/mgar/pkg/apr-util/trunk/Makefile csw/mgar/pkg/argtable/trunk/Makefile csw/mgar/pkg/arpwatch/trunk/Makefile csw/mgar/pkg/arts/trunk/Makefile csw/mgar/pkg/asciidoc/trunk/Makefile csw/mgar/pkg/audiofile/trunk/Makefile csw/mgar/pkg/augeas/trunk/Makefile csw/mgar/pkg/authz-tools/trunk/Makefile csw/mgar/pkg/autobench/trunk/Makefile csw/mgar/pkg/autoconf/trunk/Makefile csw/mgar/pkg/automake/trunk/Makefile csw/mgar/pkg/autoproject/trunk/Makefile csw/mgar/pkg/autossh/trunk/Makefile csw/mgar/pkg/autotrace/trunk/Makefile csw/mgar/pkg/avantfax/trunk/Makefile csw/mgar/pkg/avfs/trunk/Makefile csw/mgar/pkg/awesome/trunk/Makefile csw/mgar/pkg/awstats/trunk/Makefile csw/mgar/pkg/axel/trunk/Makefile csw/mgar/pkg/babl/trunk/Makefile csw/mgar/pkg/balance/trunk/Makefile csw/mgar/pkg/bash/trunk/Makefile csw/mgar/pkg/bash_completion/trunk/Makefile csw/mgar/pkg/bashdb/trunk/Makefile csw/mgar/pkg/bazaar/trunk/Makefile csw/mgar/pkg/bdb/trunk/Makefile csw/mgar/pkg/bdb3/trunk/Makefile csw/mgar/pkg/bdb4/trunk/Makefile csw/mgar/pkg/bdb42/trunk/Makefile csw/mgar/pkg/bdb43/trunk/Makefile csw/mgar/pkg/bdb44/trunk/Makefile csw/mgar/pkg/bdb45/trunk/Makefile csw/mgar/pkg/bdb46/trunk/Makefile csw/mgar/pkg/bdb47/trunk/Makefile csw/mgar/pkg/bdb48/trunk/Makefile csw/mgar/pkg/bdb51/trunk/Makefile csw/mgar/pkg/beautifulsoup/trunk/Makefile csw/mgar/pkg/bind/branches/stable/Makefile csw/mgar/pkg/bind/branches/stable-9.4.3p3/Makefile csw/mgar/pkg/bind/trunk/Makefile csw/mgar/pkg/bind2nsd/trunk/Makefile csw/mgar/pkg/binutils/trunk/Makefile csw/mgar/pkg/bison/trunk/Makefile csw/mgar/pkg/bitlbee/trunk/Makefile csw/mgar/pkg/bittwist/trunk/Makefile csw/mgar/pkg/blame/trunk/Makefile csw/mgar/pkg/boost/branches/boost-1.33.0/Makefile csw/mgar/pkg/boost/branches/boost-gcc/Makefile csw/mgar/pkg/boost/trunk/Makefile csw/mgar/pkg/botnet/trunk/Makefile csw/mgar/pkg/bugzilla/trunk/Makefile csw/mgar/pkg/buildbot/trunk/Makefile csw/mgar/pkg/bvi/trunk/Makefile csw/mgar/pkg/bzip2/trunk/Makefile csw/mgar/pkg/c-ares/trunk/Makefile csw/mgar/pkg/ca_certificates/trunk/Makefile csw/mgar/pkg/cabextract/trunk/Makefile csw/mgar/pkg/cacti/trunk/Makefile csw/mgar/pkg/cadaver/trunk/Makefile csw/mgar/pkg/cairomm/trunk/Makefile csw/mgar/pkg/ccache/trunk/Makefile csw/mgar/pkg/cdecl/trunk/Makefile csw/mgar/pkg/centerim/trunk/Makefile csw/mgar/pkg/cfengine/trunk/Makefile csw/mgar/pkg/cfg2html/trunk/Makefile csw/mgar/pkg/cfitsio/trunk/Makefile csw/mgar/pkg/cgit/trunk/Makefile csw/mgar/pkg/cheetah/trunk/Makefile csw/mgar/pkg/chkconfig/trunk/Makefile csw/mgar/pkg/chmlib/trunk/Makefile csw/mgar/pkg/chromium/trunk/Makefile csw/mgar/pkg/chrpath/trunk/Makefile csw/mgar/pkg/clamav/trunk/Makefile csw/mgar/pkg/clamavsigs/trunk/Makefile csw/mgar/pkg/clearsilver/trunk/Makefile csw/mgar/pkg/climm/trunk/Makefile csw/mgar/pkg/clpbar/trunk/Makefile csw/mgar/pkg/clusterit/trunk/Makefile csw/mgar/pkg/clusterssh/trunk/Makefile csw/mgar/pkg/clzip/trunk/Makefile csw/mgar/pkg/cmake/trunk/Makefile csw/mgar/pkg/colordiff/trunk/Makefile csw/mgar/pkg/colormake/trunk/Makefile csw/mgar/pkg/conserver/trunk/Makefile csw/mgar/pkg/convmv/trunk/Makefile csw/mgar/pkg/coreutils/trunk/Makefile csw/mgar/pkg/cpan/Algorithm-Annotate/trunk/Makefile csw/mgar/pkg/cpan/Algorithm-CheckDigits/trunk/Makefile csw/mgar/pkg/cpan/Algorithm-Depedency/trunk/Makefile csw/mgar/pkg/cpan/Algorithm-Diff/trunk/Makefile csw/mgar/pkg/cpan/AnyData/trunk/Makefile csw/mgar/pkg/cpan/Apache-AuthPAM/trunk/Makefile csw/mgar/pkg/cpan/Apache-DBI/trunk/Makefile csw/mgar/pkg/cpan/Apache-PAR/trunk/Makefile csw/mgar/pkg/cpan/Apache-Session/trunk/Makefile csw/mgar/pkg/cpan/Apache-Template/trunk/Makefile csw/mgar/pkg/cpan/Apache-Test/trunk/Makefile csw/mgar/pkg/cpan/Apache2-AuthzNIS/trunk/Makefile csw/mgar/pkg/cpan/App-CLI/trunk/Makefile csw/mgar/pkg/cpan/AppConfig/trunk/Makefile csw/mgar/pkg/cpan/Archive-Extract/trunk/Makefile csw/mgar/pkg/cpan/Archive-SelfExtract/trunk/Makefile csw/mgar/pkg/cpan/Archive-Tar/trunk/Makefile csw/mgar/pkg/cpan/Archive-Zip/trunk/Makefile csw/mgar/pkg/cpan/Array-Compare/trunk/Makefile csw/mgar/pkg/cpan/Array-Window/trunk/Makefile csw/mgar/pkg/cpan/Astro-FITS-Header/trunk/Makefile csw/mgar/pkg/cpan/Attribute-Handlers/trunk/Makefile csw/mgar/pkg/cpan/Audio-TagLib/trunk/Makefile csw/mgar/pkg/cpan/Authen-PAM/trunk/Makefile csw/mgar/pkg/cpan/Authen-SASL/trunk/Makefile csw/mgar/pkg/cpan/AutoXS-Header/trunk/Makefile csw/mgar/pkg/cpan/B-C/trunk/Makefile csw/mgar/pkg/cpan/B-Flags/trunk/Makefile csw/mgar/pkg/cpan/B-Generate/trunk/Makefile csw/mgar/pkg/cpan/B-Keywords/trunk/Makefile csw/mgar/pkg/cpan/B-Utils/trunk/Makefile csw/mgar/pkg/cpan/BSD-Resource/trunk/Makefile csw/mgar/pkg/cpan/Barcode-Code128/trunk/Makefile csw/mgar/pkg/cpan/BerkeleyDB/trunk/Makefile csw/mgar/pkg/cpan/Biblio-EndnoteStyle/trunk/Makefile csw/mgar/pkg/cpan/Bit-Vector/trunk/Makefile csw/mgar/pkg/cpan/C-Scan/trunk/Makefile csw/mgar/pkg/cpan/CGI/trunk/Makefile csw/mgar/pkg/cpan/CGI-Application/trunk/Makefile csw/mgar/pkg/cpan/CGI-Application-Dispatch/trunk/Makefile csw/mgar/pkg/cpan/CGI-Application-Plugin-LogDispatch/trunk/Makefile csw/mgar/pkg/cpan/CGI-Builder/trunk/Makefile csw/mgar/pkg/cpan/CGI-Session/trunk/Makefile csw/mgar/pkg/cpan/CGI-SpeedyCGI/trunk/Makefile csw/mgar/pkg/cpan/CGP-CLI/trunk/Makefile csw/mgar/pkg/cpan/CPANPLUS/trunk/Makefile csw/mgar/pkg/cpan/CSS-DOM/trunk/Makefile csw/mgar/pkg/cpan/Cache/trunk/Makefile csw/mgar/pkg/cpan/Cache-Cache/trunk/Makefile csw/mgar/pkg/cpan/Cache-Memcached/trunk/Makefile csw/mgar/pkg/cpan/Cache-Simple-TimedExpiry/trunk/Makefile csw/mgar/pkg/cpan/Cairo/trunk/Makefile csw/mgar/pkg/cpan/Calendar-CSA/trunk/Makefile csw/mgar/pkg/cpan/Calendar-Simple/trunk/Makefile csw/mgar/pkg/cpan/Capitalization/trunk/Makefile csw/mgar/pkg/cpan/Carp-Clan/trunk/Makefile csw/mgar/pkg/cpan/Catalyst/trunk/Makefile csw/mgar/pkg/cpan/Chart/trunk/Makefile csw/mgar/pkg/cpan/Check-ISA/trunk/Makefile csw/mgar/pkg/cpan/Class-Accessor/trunk/Makefile csw/mgar/pkg/cpan/Class-Adapter/trunk/Makefile csw/mgar/pkg/cpan/Class-Autouse/trunk/Makefile csw/mgar/pkg/cpan/Class-BlackHole/trunk/Makefile csw/mgar/pkg/cpan/Class-Container/trunk/Makefile csw/mgar/pkg/cpan/Class-DBI/trunk/Makefile csw/mgar/pkg/cpan/Class-DBI-Loader/trunk/Makefile csw/mgar/pkg/cpan/Class-DBI-Pg/trunk/Makefile csw/mgar/pkg/cpan/Class-DBI-SQLite/trunk/Makefile csw/mgar/pkg/cpan/Class-DBI-mysql/trunk/Makefile csw/mgar/pkg/cpan/Class-Data-Inheritable/trunk/Makefile csw/mgar/pkg/cpan/Class-Factory-Util/trunk/Makefile csw/mgar/pkg/cpan/Class-ISA/trunk/Makefile csw/mgar/pkg/cpan/Class-Inspector/trunk/Makefile csw/mgar/pkg/cpan/Class-Loader/trunk/Makefile csw/mgar/pkg/cpan/Class-ReturnValue/trunk/Makefile csw/mgar/pkg/cpan/Class-Singleton/trunk/Makefile csw/mgar/pkg/cpan/Class-Std/trunk/Makefile csw/mgar/pkg/cpan/Class-Trigger/trunk/Makefile csw/mgar/pkg/cpan/Class-WhiteHole/trunk/Makefile csw/mgar/pkg/cpan/Class-XSAccessor/trunk/Makefile csw/mgar/pkg/cpan/Clone/trunk/Makefile csw/mgar/pkg/cpan/Compress-Bzip2/trunk/Makefile csw/mgar/pkg/cpan/Compress-Raw-Bzip2/trunk/Makefile csw/mgar/pkg/cpan/Compress-Raw-Zlib/trunk/Makefile csw/mgar/pkg/cpan/Compress-Zlib/trunk/Makefile csw/mgar/pkg/cpan/Config-Augeas/trunk/Makefile csw/mgar/pkg/cpan/Config-General/trunk/Makefile csw/mgar/pkg/cpan/Config-IniFiles/trunk/Makefile csw/mgar/pkg/cpan/Config-Tiny/trunk/Makefile csw/mgar/pkg/cpan/Convert-ASCII-Armour/trunk/Makefile csw/mgar/pkg/cpan/Convert-ASN1/trunk/Makefile csw/mgar/pkg/cpan/Convert-BinHex/trunk/Makefile csw/mgar/pkg/cpan/Convert-EBCDIC/trunk/Makefile csw/mgar/pkg/cpan/Convert-PEM/trunk/Makefile csw/mgar/pkg/cpan/Convert-TNEF/trunk/Makefile csw/mgar/pkg/cpan/Convert-UUlib/trunk/Makefile csw/mgar/pkg/cpan/Crypt-Blowfish/trunk/Makefile csw/mgar/pkg/cpan/Crypt-CAST5/trunk/Makefile csw/mgar/pkg/cpan/Crypt-CBC/trunk/Makefile csw/mgar/pkg/cpan/Crypt-DES/trunk/Makefile csw/mgar/pkg/cpan/Crypt-DES_EDE3/trunk/Makefile csw/mgar/pkg/cpan/Crypt-DH/trunk/Makefile csw/mgar/pkg/cpan/Crypt-DSA/trunk/Makefile csw/mgar/pkg/cpan/Crypt-IDEA/trunk/Makefile csw/mgar/pkg/cpan/Crypt-OpenPGP/trunk/Makefile csw/mgar/pkg/cpan/Crypt-OpenSSL-Bignum/trunk/Makefile csw/mgar/pkg/cpan/Crypt-OpenSSL-DSA/trunk/Makefile csw/mgar/pkg/cpan/Crypt-OpenSSL-PKCS12/trunk/Makefile csw/mgar/pkg/cpan/Crypt-OpenSSL-RSA/trunk/Makefile csw/mgar/pkg/cpan/Crypt-OpenSSL-Random/trunk/Makefile csw/mgar/pkg/cpan/Crypt-OpenSSL-X509/trunk/Makefile csw/mgar/pkg/cpan/Crypt-PasswdMD5/trunk/Makefile csw/mgar/pkg/cpan/Crypt-Primes/trunk/Makefile csw/mgar/pkg/cpan/Crypt-RC4/trunk/Makefile csw/mgar/pkg/cpan/Crypt-RC5/trunk/Makefile csw/mgar/pkg/cpan/Crypt-RIPEMD160/trunk/Makefile csw/mgar/pkg/cpan/Crypt-RSA/trunk/Makefile csw/mgar/pkg/cpan/Crypt-Random/trunk/Makefile csw/mgar/pkg/cpan/Crypt-Rijndael/trunk/Makefile csw/mgar/pkg/cpan/Crypt-SSLeay/trunk/Makefile csw/mgar/pkg/cpan/Crypt-Twofish/trunk/Makefile csw/mgar/pkg/cpan/Curses/trunk/Makefile csw/mgar/pkg/cpan/Curses-UI/trunk/Makefile csw/mgar/pkg/cpan/DBD-AnyData/trunk/Makefile csw/mgar/pkg/cpan/DBD-CSV/trunk/Makefile csw/mgar/pkg/cpan/DBD-DB2/trunk/Makefile csw/mgar/pkg/cpan/DBD-File/trunk/Makefile csw/mgar/pkg/cpan/DBD-Oracle/trunk/Makefile csw/mgar/pkg/cpan/DBD-Pg/trunk/Makefile csw/mgar/pkg/cpan/DBD-SQLite/trunk/Makefile csw/mgar/pkg/cpan/DBD-Sybase/trunk/Makefile csw/mgar/pkg/cpan/DBD-mysql/trunk/Makefile csw/mgar/pkg/cpan/DBD-mysql5/trunk/Makefile csw/mgar/pkg/cpan/DBI/trunk/Makefile csw/mgar/pkg/cpan/DBIx-ContextualFetch/trunk/Makefile csw/mgar/pkg/cpan/DBIx-Password/trunk/Makefile csw/mgar/pkg/cpan/DBIx-SearchBuilder/trunk/Makefile csw/mgar/pkg/cpan/DB_File/trunk/Makefile csw/mgar/pkg/cpan/Data-Buffer/trunk/Makefile csw/mgar/pkg/cpan/Data-Dump/trunk/Makefile csw/mgar/pkg/cpan/Data-Flow/trunk/Makefile csw/mgar/pkg/cpan/Data-Hierarchy/trunk/Makefile csw/mgar/pkg/cpan/Data-ICal/trunk/Makefile csw/mgar/pkg/cpan/Data-OptList/trunk/Makefile csw/mgar/pkg/cpan/Data-Serializer/trunk/Makefile csw/mgar/pkg/cpan/Data-ShowTable/trunk/Makefile csw/mgar/pkg/cpan/Data-TreeDumper/trunk/Makefile csw/mgar/pkg/cpan/Data-UUID/trunk/Makefile csw/mgar/pkg/cpan/Date-Calc/trunk/Makefile csw/mgar/pkg/cpan/Date-ICal/trunk/Makefile csw/mgar/pkg/cpan/Date-Leapyear/trunk/Makefile csw/mgar/pkg/cpan/Date-Manip/trunk/Makefile csw/mgar/pkg/cpan/Date-Simple/trunk/Makefile csw/mgar/pkg/cpan/DateTime/trunk/Makefile csw/mgar/pkg/cpan/DateTime-Format-Mail/trunk/Makefile csw/mgar/pkg/cpan/DateTime-Format-W3CDTF/trunk/Makefile csw/mgar/pkg/cpan/DateTime-Locale/trunk/Makefile csw/mgar/pkg/cpan/DateTime-TimeZone/trunk/Makefile csw/mgar/pkg/cpan/Devel-Caller/trunk/Makefile csw/mgar/pkg/cpan/Devel-Cover/trunk/Makefile csw/mgar/pkg/cpan/Devel-Cycle/trunk/Makefile csw/mgar/pkg/cpan/Devel-LeakTrace/trunk/Makefile csw/mgar/pkg/cpan/Devel-LexAlias/trunk/Makefile csw/mgar/pkg/cpan/Devel-Size/trunk/Makefile csw/mgar/pkg/cpan/Devel-StackTrace/trunk/Makefile csw/mgar/pkg/cpan/Devel-Symdump/trunk/Makefile csw/mgar/pkg/cpan/Devel-Trace/trunk/Makefile csw/mgar/pkg/cpan/Digest/trunk/Makefile csw/mgar/pkg/cpan/Digest-BubbleBabble/trunk/Makefile csw/mgar/pkg/cpan/Digest-HMAC/trunk/Makefile csw/mgar/pkg/cpan/Digest-MD2/trunk/Makefile csw/mgar/pkg/cpan/Digest-Nilsimsa/trunk/Makefile csw/mgar/pkg/cpan/Digest-SHA/trunk/Makefile csw/mgar/pkg/cpan/Digest-SHA1/trunk/Makefile csw/mgar/pkg/cpan/DublinCore-Record/trunk/Makefile csw/mgar/pkg/cpan/Email-Date-Format/trunk/Makefile csw/mgar/pkg/cpan/Email-Simple/trunk/Makefile csw/mgar/pkg/cpan/Email-Valid/trunk/Makefile csw/mgar/pkg/cpan/Env-Path/trunk/Makefile csw/mgar/pkg/cpan/Error/trunk/Makefile csw/mgar/pkg/cpan/Event/trunk/Makefile csw/mgar/pkg/cpan/Event-Lib/trunk/Makefile csw/mgar/pkg/cpan/Exception-Class/trunk/Makefile csw/mgar/pkg/cpan/Exception-Class-DBI/trunk/Makefile csw/mgar/pkg/cpan/ExtUtils-AutoInstall/trunk/Makefile csw/mgar/pkg/cpan/ExtUtils-CBuilder/trunk/Makefile csw/mgar/pkg/cpan/ExtUtils-Depends/trunk/Makefile csw/mgar/pkg/cpan/ExtUtils-F77/trunk/Makefile csw/mgar/pkg/cpan/ExtUtils-Manifest/trunk/Makefile csw/mgar/pkg/cpan/ExtUtils-ParseXS/trunk/Makefile csw/mgar/pkg/cpan/ExtUtils-PkgConfig/trunk/Makefile csw/mgar/pkg/cpan/ExtUtils-XSBuilder/trunk/Makefile csw/mgar/pkg/cpan/FCGI/trunk/Makefile csw/mgar/pkg/cpan/File-Cat/trunk/Makefile csw/mgar/pkg/cpan/File-Copy-Recursive/trunk/Makefile csw/mgar/pkg/cpan/File-Fetch/trunk/Makefile csw/mgar/pkg/cpan/File-Flat/trunk/Makefile csw/mgar/pkg/cpan/File-HomeDir/trunk/Makefile csw/mgar/pkg/cpan/File-LibMagic/trunk/Makefile csw/mgar/pkg/cpan/File-MMagic/trunk/Makefile csw/mgar/pkg/cpan/File-Modified/trunk/Makefile csw/mgar/pkg/cpan/File-NFSLock/trunk/Makefile csw/mgar/pkg/cpan/File-Next/trunk/Makefile csw/mgar/pkg/cpan/File-Remove/trunk/Makefile csw/mgar/pkg/cpan/File-Slurp/trunk/Makefile csw/mgar/pkg/cpan/File-Tail/trunk/Makefile csw/mgar/pkg/cpan/File-Type/trunk/Makefile csw/mgar/pkg/cpan/File-chdir/trunk/Makefile csw/mgar/pkg/cpan/File-chmod/trunk/Makefile csw/mgar/pkg/cpan/Filesys-Df/trunk/Makefile csw/mgar/pkg/cpan/Font-AFM/trunk/Makefile csw/mgar/pkg/cpan/Font-Freetype/trunk/Makefile csw/mgar/pkg/cpan/FreezeThaw/trunk/Makefile csw/mgar/pkg/cpan/Frontier-RPC/trunk/Makefile csw/mgar/pkg/cpan/GD/trunk/Makefile csw/mgar/pkg/cpan/GD-Barcode/trunk/Makefile csw/mgar/pkg/cpan/GDGraph/trunk/Makefile csw/mgar/pkg/cpan/GDGraph3d/trunk/Makefile csw/mgar/pkg/cpan/GDTextUtil/trunk/Makefile csw/mgar/pkg/cpan/GSSAPI/trunk/Makefile csw/mgar/pkg/cpan/Geo-IP-PurePerl/trunk/Makefile csw/mgar/pkg/cpan/Geography-Countries/trunk/Makefile csw/mgar/pkg/cpan/Gimp/trunk/Makefile csw/mgar/pkg/cpan/Glib/trunk/Makefile csw/mgar/pkg/cpan/Gnome2/trunk/Makefile csw/mgar/pkg/cpan/Gnome2-Canvas/trunk/Makefile csw/mgar/pkg/cpan/Gnome2-GConf/trunk/Makefile csw/mgar/pkg/cpan/Gnome2-Print/trunk/Makefile csw/mgar/pkg/cpan/Gnome2-VFS/trunk/Makefile csw/mgar/pkg/cpan/Gnome2-Wnck/trunk/Makefile csw/mgar/pkg/cpan/Graph/trunk/Makefile csw/mgar/pkg/cpan/GraphViz/trunk/Makefile csw/mgar/pkg/cpan/Graphics-ColorNames/trunk/Makefile csw/mgar/pkg/cpan/Graphics-ColorNames-WWW/trunk/Makefile csw/mgar/pkg/cpan/Gtk2/trunk/Makefile csw/mgar/pkg/cpan/Gtk2-GladeXML/trunk/Makefile csw/mgar/pkg/cpan/Gtk2-PodViewer/trunk/Makefile csw/mgar/pkg/cpan/Gtk2-TrayIcon/trunk/Makefile csw/mgar/pkg/cpan/HTML-CalendarMonth/trunk/Makefile csw/mgar/pkg/cpan/HTML-Element-Extended/trunk/Makefile csw/mgar/pkg/cpan/HTML-Format/trunk/Makefile csw/mgar/pkg/cpan/HTML-Mason/trunk/Makefile csw/mgar/pkg/cpan/HTML-Parser/trunk/Makefile csw/mgar/pkg/cpan/HTML-Scrubber/trunk/Makefile csw/mgar/pkg/cpan/HTML-Tagset/trunk/Makefile csw/mgar/pkg/cpan/HTML-Template/trunk/Makefile csw/mgar/pkg/cpan/HTML-Template-Pro/trunk/Makefile csw/mgar/pkg/cpan/HTML-TokeParser/trunk/Makefile csw/mgar/pkg/cpan/HTML-Tree/trunk/Makefile csw/mgar/pkg/cpan/HTTP-Body/trunk/Makefile csw/mgar/pkg/cpan/HTTP-DAV/trunk/Makefile csw/mgar/pkg/cpan/Heap/trunk/Makefile csw/mgar/pkg/cpan/I18N-LangTags/trunk/Makefile csw/mgar/pkg/cpan/IDNA-Punycode/trunk/Makefile csw/mgar/pkg/cpan/IO-Compress/trunk/Makefile csw/mgar/pkg/cpan/IO-Compress-Base/trunk/Makefile csw/mgar/pkg/cpan/IO-Compress-Zlib/trunk/Makefile csw/mgar/pkg/cpan/IO-Digest/trunk/Makefile csw/mgar/pkg/cpan/IO-Multiplex/trunk/Makefile csw/mgar/pkg/cpan/IO-Pager/trunk/Makefile csw/mgar/pkg/cpan/IO-Socket-INET6/trunk/Makefile csw/mgar/pkg/cpan/IO-Socket-SSL/trunk/Makefile csw/mgar/pkg/cpan/IO-String/trunk/Makefile csw/mgar/pkg/cpan/IO-Tty/trunk/Makefile csw/mgar/pkg/cpan/IO-Util/trunk/Makefile csw/mgar/pkg/cpan/IO-Zlib/trunk/Makefile csw/mgar/pkg/cpan/IO-stringy/trunk/Makefile csw/mgar/pkg/cpan/IP-Country/trunk/Makefile csw/mgar/pkg/cpan/IPC-Cmd/trunk/Makefile csw/mgar/pkg/cpan/IPC-Run/trunk/Makefile csw/mgar/pkg/cpan/IPC-Run3/trunk/Makefile csw/mgar/pkg/cpan/IPC-ShareLite/trunk/Makefile csw/mgar/pkg/cpan/Ima-DBI/trunk/Makefile csw/mgar/pkg/cpan/Image-ExifTool/trunk/Makefile csw/mgar/pkg/cpan/Image-Info/trunk/Makefile csw/mgar/pkg/cpan/Image-Size/trunk/Makefile csw/mgar/pkg/cpan/Inline/trunk/Makefile csw/mgar/pkg/cpan/JIRA-Client/trunk/Makefile csw/mgar/pkg/cpan/JSON/trunk/Makefile csw/mgar/pkg/cpan/Jcode/trunk/Makefile csw/mgar/pkg/cpan/Lexical-Persistence/trunk/Makefile csw/mgar/pkg/cpan/Lingua-PT-Stemmer/trunk/Makefile csw/mgar/pkg/cpan/Lingua-Stem/trunk/Makefile csw/mgar/pkg/cpan/Lingua-Stem-Fr/trunk/Makefile csw/mgar/pkg/cpan/Lingua-Stem-It/trunk/Makefile csw/mgar/pkg/cpan/Lingua-Stem-Ru/trunk/Makefile csw/mgar/pkg/cpan/Lingua-Stem-Snowball-Da/trunk/Makefile csw/mgar/pkg/cpan/List-MoreUtils/trunk/Makefile csw/mgar/pkg/cpan/Locale-Gettext/trunk/Makefile csw/mgar/pkg/cpan/Locale-Maketext-Fuzzy/trunk/Makefile csw/mgar/pkg/cpan/Locale-Maketext-Lexicon/trunk/Makefile csw/mgar/pkg/cpan/Locale-Maketext-Simple/trunk/Makefile csw/mgar/pkg/cpan/Log-Any/trunk/Makefile csw/mgar/pkg/cpan/Log-Dispatch/trunk/Makefile csw/mgar/pkg/cpan/Log-Dispatch-Config/trunk/Makefile csw/mgar/pkg/cpan/Log-Log4perl/trunk/Makefile csw/mgar/pkg/cpan/Log-Message/trunk/Makefile csw/mgar/pkg/cpan/Log-Message-Simple/trunk/Makefile csw/mgar/pkg/cpan/MARC-Charset/trunk/Makefile csw/mgar/pkg/cpan/MARC-Crosswalk-DublinCore/trunk/Makefile csw/mgar/pkg/cpan/MARC-Record/trunk/Makefile csw/mgar/pkg/cpan/MARC-XML/trunk/Makefile csw/mgar/pkg/cpan/MIME-Base64/trunk/Makefile csw/mgar/pkg/cpan/MIME-Lite/trunk/Makefile csw/mgar/pkg/cpan/MIME-Types/trunk/Makefile csw/mgar/pkg/cpan/MIME-tools/trunk/Makefile csw/mgar/pkg/cpan/MLDBM/trunk/Makefile csw/mgar/pkg/cpan/MLDBM-Sync/trunk/Makefile csw/mgar/pkg/cpan/MP3-Tag/trunk/Makefile csw/mgar/pkg/cpan/Mail-Box/trunk/Makefile csw/mgar/pkg/cpan/Mail-Box-Parser-C/trunk/Makefile csw/mgar/pkg/cpan/Mail-DKIM/trunk/Makefile csw/mgar/pkg/cpan/Mail-IMAPClient/trunk/Makefile csw/mgar/pkg/cpan/Mail-SPF/trunk/Makefile csw/mgar/pkg/cpan/Mail-SPF-Query/trunk/Makefile csw/mgar/pkg/cpan/Mail-Sender/trunk/Makefile csw/mgar/pkg/cpan/Mail-Sendmail/trunk/Makefile csw/mgar/pkg/cpan/Mail-Tools/trunk/Makefile csw/mgar/pkg/cpan/Makefile csw/mgar/pkg/cpan/Math-Bezier/trunk/Makefile csw/mgar/pkg/cpan/Math-GMP/trunk/Makefile csw/mgar/pkg/cpan/Math-Interpolate/trunk/Makefile csw/mgar/pkg/cpan/Math-Pari/trunk/Makefile csw/mgar/pkg/cpan/Module-Build/trunk/Makefile csw/mgar/pkg/cpan/Module-CoreList/trunk/Makefile csw/mgar/pkg/cpan/Module-Load/trunk/Makefile csw/mgar/pkg/cpan/Module-Load-Conditional/trunk/Makefile csw/mgar/pkg/cpan/Module-Loaded/trunk/Makefile csw/mgar/pkg/cpan/Module-Pluggable/trunk/Makefile csw/mgar/pkg/cpan/Module-Refresh/trunk/Makefile csw/mgar/pkg/cpan/Module-ScanDeps/trunk/Makefile csw/mgar/pkg/cpan/Module-Signature/trunk/Makefile csw/mgar/pkg/cpan/Module-Starter/trunk/Makefile csw/mgar/pkg/cpan/Module-Version/trunk/Makefile csw/mgar/pkg/cpan/Module-Versions-Report/trunk/Makefile csw/mgar/pkg/cpan/Net-Analysis/trunk/Makefile csw/mgar/pkg/cpan/Net-CIDR/trunk/Makefile csw/mgar/pkg/cpan/Net-CIDR-Lite/trunk/Makefile csw/mgar/pkg/cpan/Net-DNS/trunk/Makefile csw/mgar/pkg/cpan/Net-DNS-Resolver-Programmable/trunk/Makefile csw/mgar/pkg/cpan/Net-Daemon/trunk/Makefile csw/mgar/pkg/cpan/Net-IDN-Encode/trunk/Makefile csw/mgar/pkg/cpan/Net-IDN-Nameprep/trunk/Makefile csw/mgar/pkg/cpan/Net-IP/trunk/Makefile csw/mgar/pkg/cpan/Net-Jabber/trunk/Makefile csw/mgar/pkg/cpan/Net-NIS/trunk/Makefile csw/mgar/pkg/cpan/Net-Netmask/trunk/Makefile csw/mgar/pkg/cpan/Net-Patricia/trunk/Makefile csw/mgar/pkg/cpan/Net-Pcap/trunk/Makefile csw/mgar/pkg/cpan/Net-SMTP-SSL/trunk/Makefile csw/mgar/pkg/cpan/Net-SSH/trunk/Makefile csw/mgar/pkg/cpan/Net-SSH-Perl/trunk/Makefile csw/mgar/pkg/cpan/Net-SSH2/trunk/Makefile csw/mgar/pkg/cpan/Net-SSLeay/trunk/Makefile csw/mgar/pkg/cpan/Net-Server/trunk/Makefile csw/mgar/pkg/cpan/Net-Syslog/trunk/Makefile csw/mgar/pkg/cpan/Net-Telnet/trunk/Makefile csw/mgar/pkg/cpan/Net-XMPP/trunk/Makefile csw/mgar/pkg/cpan/Net-Z3950-ZOOM/trunk/Makefile csw/mgar/pkg/cpan/Net-ext/trunk/Makefile csw/mgar/pkg/cpan/NetAddr-IP/trunk/Makefile csw/mgar/pkg/cpan/NetPacket/trunk/Makefile csw/mgar/pkg/cpan/Number-Compare/trunk/Makefile csw/mgar/pkg/cpan/Number-Format/trunk/Makefile csw/mgar/pkg/cpan/OLE-Storage_Lite/trunk/Makefile csw/mgar/pkg/cpan/OOTools/trunk/Makefile csw/mgar/pkg/cpan/Object-Accessor/trunk/Makefile csw/mgar/pkg/cpan/Object-MultiType/trunk/Makefile csw/mgar/pkg/cpan/Object-Realize-Later/trunk/Makefile csw/mgar/pkg/cpan/Opcodes/trunk/Makefile csw/mgar/pkg/cpan/OpenGL/trunk/Makefile csw/mgar/pkg/cpan/PAR/trunk/Makefile csw/mgar/pkg/cpan/PAR-Dist/trunk/Makefile csw/mgar/pkg/cpan/PDF-API2/trunk/Makefile csw/mgar/pkg/cpan/PDF-Reuse/trunk/Makefile csw/mgar/pkg/cpan/PDF-Reuse-Barcode/trunk/Makefile csw/mgar/pkg/cpan/PDL/trunk/Makefile csw/mgar/pkg/cpan/POE/trunk/Makefile csw/mgar/pkg/cpan/POE-Test-Loops/trunk/Makefile csw/mgar/pkg/cpan/Package-Constants/trunk/Makefile csw/mgar/pkg/cpan/PadWalker/trunk/Makefile csw/mgar/pkg/cpan/Pango/trunk/Makefile csw/mgar/pkg/cpan/Params-Check/trunk/Makefile csw/mgar/pkg/cpan/Params-Util/trunk/Makefile csw/mgar/pkg/cpan/Params-Validate/trunk/Makefile csw/mgar/pkg/cpan/Parse-CPAN-Meta/trunk/Makefile csw/mgar/pkg/cpan/Parse-RecDescent/trunk/Makefile csw/mgar/pkg/cpan/Parse-Syslog/trunk/Makefile csw/mgar/pkg/cpan/Passwd-Unix/trunk/Makefile csw/mgar/pkg/cpan/PatchReader/trunk/Makefile csw/mgar/pkg/cpan/Path-Class/trunk/Makefile csw/mgar/pkg/cpan/Perl-Tidy/trunk/Makefile csw/mgar/pkg/cpan/Perl6-Export/trunk/Makefile csw/mgar/pkg/cpan/Perl6-Export-Attrs/trunk/Makefile csw/mgar/pkg/cpan/Perl6-Slurp/trunk/Makefile csw/mgar/pkg/cpan/PerlIO-eol/trunk/Makefile csw/mgar/pkg/cpan/PerlIO-gzip/trunk/Makefile csw/mgar/pkg/cpan/PerlIO-via-Bzip2/trunk/Makefile csw/mgar/pkg/cpan/PerlIO-via-dynamic/trunk/Makefile csw/mgar/pkg/cpan/PerlIO-via-symlink/trunk/Makefile csw/mgar/pkg/cpan/PlRPC/trunk/Makefile csw/mgar/pkg/cpan/Pod-Coverage/trunk/Makefile csw/mgar/pkg/cpan/Pod-Escapes/trunk/Makefile csw/mgar/pkg/cpan/Pod-POM/trunk/Makefile csw/mgar/pkg/cpan/Pod-Readme/trunk/Makefile csw/mgar/pkg/cpan/Pod-Simple/trunk/Makefile csw/mgar/pkg/cpan/Pod-Tests/trunk/Makefile csw/mgar/pkg/cpan/PodToHTML/trunk/Makefile csw/mgar/pkg/cpan/Probe-Perl/trunk/Makefile csw/mgar/pkg/cpan/Proc-ProcessTable/trunk/Makefile csw/mgar/pkg/cpan/RADIUS-UserFile/trunk/Makefile csw/mgar/pkg/cpan/RPC-XML/trunk/Makefile csw/mgar/pkg/cpan/Readonly/trunk/Makefile csw/mgar/pkg/cpan/Regexp-Common/trunk/Makefile csw/mgar/pkg/cpan/Regexp-Shellish/trunk/Makefile csw/mgar/pkg/cpan/SDF/trunk/Makefile csw/mgar/pkg/cpan/SMS-Send/trunk/Makefile csw/mgar/pkg/cpan/SOAP-Lite/trunk/Makefile csw/mgar/pkg/cpan/SOAP-WSDL/trunk/Makefile csw/mgar/pkg/cpan/SQL-Statement/trunk/Makefile csw/mgar/pkg/cpan/SVK/trunk/Makefile csw/mgar/pkg/cpan/SVN-Dump/trunk/Makefile csw/mgar/pkg/cpan/SVN-Mirror/trunk/Makefile csw/mgar/pkg/cpan/SVN-Notify/trunk/Makefile csw/mgar/pkg/cpan/SVN-Simple/trunk/Makefile csw/mgar/pkg/cpan/Scalar-List-Utils/trunk/Makefile csw/mgar/pkg/cpan/Schedule-At/trunk/Makefile csw/mgar/pkg/cpan/Schedule-Cron/trunk/Makefile csw/mgar/pkg/cpan/Scope-Guard/trunk/Makefile csw/mgar/pkg/cpan/Search-Xapian/trunk/Makefile csw/mgar/pkg/cpan/Shout/trunk/Makefile csw/mgar/pkg/cpan/Smart-Comments/trunk/Makefile csw/mgar/pkg/cpan/Snowball-Norwegian/trunk/Makefile csw/mgar/pkg/cpan/Snowball-Swedish/trunk/Makefile csw/mgar/pkg/cpan/Socket6/trunk/Makefile csw/mgar/pkg/cpan/Solaris-DeviceTree/trunk/Makefile csw/mgar/pkg/cpan/Solaris-Sysconf/trunk/Makefile csw/mgar/pkg/cpan/Sort-Naturally/trunk/Makefile csw/mgar/pkg/cpan/Sort-Versions/trunk/Makefile csw/mgar/pkg/cpan/Spiffy/trunk/Makefile csw/mgar/pkg/cpan/Statistics-Descriptive/trunk/Makefile csw/mgar/pkg/cpan/String-Approx/trunk/Makefile csw/mgar/pkg/cpan/String-CRC32/trunk/Makefile csw/mgar/pkg/cpan/String-ShellQuote/trunk/Makefile csw/mgar/pkg/cpan/Struct-Compare/trunk/Makefile csw/mgar/pkg/cpan/Sub-Delete/trunk/Makefile csw/mgar/pkg/cpan/Sub-Exporter/trunk/Makefile csw/mgar/pkg/cpan/Sub-Install/trunk/Makefile csw/mgar/pkg/cpan/Sub-Name/trunk/Makefile csw/mgar/pkg/cpan/Sub-Override/trunk/Makefile csw/mgar/pkg/cpan/Sub-Uplevel/trunk/Makefile csw/mgar/pkg/cpan/Sys-Hostname-Long/trunk/Makefile csw/mgar/pkg/cpan/Sys-SigAction/trunk/Makefile csw/mgar/pkg/cpan/Syslog/trunk/Makefile csw/mgar/pkg/cpan/Task-Weaken/trunk/Makefile csw/mgar/pkg/cpan/Template-Extract/trunk/Makefile csw/mgar/pkg/cpan/Template-TAL/trunk/Makefile csw/mgar/pkg/cpan/Template-Toolkit/trunk/Makefile csw/mgar/pkg/cpan/Term-Cap/trunk/Makefile csw/mgar/pkg/cpan/Term-ReadLine-Gnu/trunk/Makefile csw/mgar/pkg/cpan/Term-Size/trunk/Makefile csw/mgar/pkg/cpan/Term-UI/trunk/Makefile csw/mgar/pkg/cpan/TermReadKey/trunk/Makefile csw/mgar/pkg/cpan/Test-Builder-Tester/trunk/Makefile csw/mgar/pkg/cpan/Test-Class/trunk/Makefile csw/mgar/pkg/cpan/Test-ClassAPI/trunk/Makefile csw/mgar/pkg/cpan/Test-Deep/trunk/Makefile csw/mgar/pkg/cpan/Test-Differences/trunk/Makefile csw/mgar/pkg/cpan/Test-Distribution/trunk/Makefile csw/mgar/pkg/cpan/Test-Exception/trunk/Makefile csw/mgar/pkg/cpan/Test-Inline/trunk/Makefile csw/mgar/pkg/cpan/Test-LongString/trunk/Makefile csw/mgar/pkg/cpan/Test-Manifest/trunk/Makefile csw/mgar/pkg/cpan/Test-Memory-Cycle/trunk/Makefile csw/mgar/pkg/cpan/Test-MockObject/trunk/Makefile csw/mgar/pkg/cpan/Test-NoWarnings/trunk/Makefile csw/mgar/pkg/cpan/Test-Pod/trunk/Makefile csw/mgar/pkg/cpan/Test-Pod-Coverage/trunk/Makefile csw/mgar/pkg/cpan/Test-Script/trunk/Makefile csw/mgar/pkg/cpan/Test-Simple/trunk/Makefile csw/mgar/pkg/cpan/Test-Tester/trunk/Makefile csw/mgar/pkg/cpan/Test-Warn/trunk/Makefile csw/mgar/pkg/cpan/Test-XML/trunk/Makefile csw/mgar/pkg/cpan/Test-use-ok/trunk/Makefile csw/mgar/pkg/cpan/Text-Autoformat/trunk/Makefile csw/mgar/pkg/cpan/Text-CSV/trunk/Makefile csw/mgar/pkg/cpan/Text-CSV_XS/trunk/Makefile csw/mgar/pkg/cpan/Text-Diff/trunk/Makefile csw/mgar/pkg/cpan/Text-DoubleMetaphone/trunk/Makefile csw/mgar/pkg/cpan/Text-Format/trunk/Makefile csw/mgar/pkg/cpan/Text-GenderFromName/trunk/Makefile csw/mgar/pkg/cpan/Text-German/trunk/Makefile csw/mgar/pkg/cpan/Text-Glob/trunk/Makefile csw/mgar/pkg/cpan/Text-Iconv/trunk/Makefile csw/mgar/pkg/cpan/Text-Quoted/trunk/Makefile csw/mgar/pkg/cpan/Text-Reform/trunk/Makefile csw/mgar/pkg/cpan/Text-Scraper/trunk/Makefile csw/mgar/pkg/cpan/Text-Tabs+Wrap/trunk/Makefile csw/mgar/pkg/cpan/Text-Template/trunk/Makefile csw/mgar/pkg/cpan/Text-WikiFormat/trunk/Makefile csw/mgar/pkg/cpan/Text-Wrapper/trunk/Makefile csw/mgar/pkg/cpan/Text-vFile-asData/trunk/Makefile csw/mgar/pkg/cpan/Tie-DBI/trunk/Makefile csw/mgar/pkg/cpan/Tie-EncryptedHash/trunk/Makefile csw/mgar/pkg/cpan/Tie-IxHash/trunk/Makefile csw/mgar/pkg/cpan/Tie-MLDBM/trunk/Makefile csw/mgar/pkg/cpan/Tie-Util/trunk/Makefile csw/mgar/pkg/cpan/Time-Format/trunk/Makefile csw/mgar/pkg/cpan/Time-HiRes/trunk/Makefile csw/mgar/pkg/cpan/Time-Period/trunk/Makefile csw/mgar/pkg/cpan/Time-Progress/trunk/Makefile csw/mgar/pkg/cpan/Time-modules/trunk/Makefile csw/mgar/pkg/cpan/TimeDate/trunk/Makefile csw/mgar/pkg/cpan/Tk/trunk/Makefile csw/mgar/pkg/cpan/Tree-DAG_Node/trunk/Makefile csw/mgar/pkg/cpan/Tree-Simple/trunk/Makefile csw/mgar/pkg/cpan/UNIVERSAL-can/trunk/Makefile csw/mgar/pkg/cpan/UNIVERSAL-isa/trunk/Makefile csw/mgar/pkg/cpan/UNIVERSAL-moniker/trunk/Makefile csw/mgar/pkg/cpan/UNIVERSAL-require/trunk/Makefile csw/mgar/pkg/cpan/URI/trunk/Makefile csw/mgar/pkg/cpan/Unicode-Map/trunk/Makefile csw/mgar/pkg/cpan/Unicode-Map8/trunk/Makefile csw/mgar/pkg/cpan/Unicode-MapUTF8/trunk/Makefile csw/mgar/pkg/cpan/Unicode-String/trunk/Makefile csw/mgar/pkg/cpan/Unicode-Stringprep/trunk/Makefile csw/mgar/pkg/cpan/Unix-Statgrab/trunk/Makefile csw/mgar/pkg/cpan/Unix-Syslog/trunk/Makefile csw/mgar/pkg/cpan/User-Identity/trunk/Makefile csw/mgar/pkg/cpan/VCP/trunk/Makefile csw/mgar/pkg/cpan/VCP-Dest-svk/trunk/Makefile csw/mgar/pkg/cpan/WWW-Curl/trunk/Makefile csw/mgar/pkg/cpan/WWW-Mechanize/trunk/Makefile csw/mgar/pkg/cpan/Want/trunk/Makefile csw/mgar/pkg/cpan/X11-Protocol/trunk/Makefile csw/mgar/pkg/cpan/XML-Atom/trunk/Makefile csw/mgar/pkg/cpan/XML-Atom-SimpleFeed/trunk/Makefile csw/mgar/pkg/cpan/XML-AutoWriter/trunk/Makefile csw/mgar/pkg/cpan/XML-DOM/trunk/Makefile csw/mgar/pkg/cpan/XML-Dumper/trunk/Makefile csw/mgar/pkg/cpan/XML-Encoding/trunk/Makefile csw/mgar/pkg/cpan/XML-GDOME/trunk/Makefile csw/mgar/pkg/cpan/XML-GDOME-XSLT/trunk/Makefile csw/mgar/pkg/cpan/XML-LibXML/trunk/Makefile csw/mgar/pkg/cpan/XML-LibXML-Common/trunk/Makefile csw/mgar/pkg/cpan/XML-LibXSLT/trunk/Makefile csw/mgar/pkg/cpan/XML-NamespaceSupport/trunk/Makefile csw/mgar/pkg/cpan/XML-Parser/trunk/Makefile csw/mgar/pkg/cpan/XML-RSS/trunk/Makefile csw/mgar/pkg/cpan/XML-Records/trunk/Makefile csw/mgar/pkg/cpan/XML-RegExp/trunk/Makefile csw/mgar/pkg/cpan/XML-SAX/trunk/Makefile csw/mgar/pkg/cpan/XML-SemanticDiff/trunk/Makefile csw/mgar/pkg/cpan/XML-Simple/trunk/Makefile csw/mgar/pkg/cpan/XML-Smart/trunk/Makefile csw/mgar/pkg/cpan/XML-Stream/trunk/Makefile csw/mgar/pkg/cpan/XML-TokeParser/trunk/Makefile csw/mgar/pkg/cpan/XML-Twig/trunk/Makefile csw/mgar/pkg/cpan/XML-XPath/trunk/Makefile csw/mgar/pkg/cpan/XML-XSLT/trunk/Makefile csw/mgar/pkg/cpan/YAML/trunk/Makefile csw/mgar/pkg/cpan/YAML-Syck/trunk/Makefile csw/mgar/pkg/cpan/ack/trunk/Makefile csw/mgar/pkg/cpan/common-sense/trunk/Makefile csw/mgar/pkg/cpan/constant-lexical/trunk/Makefile csw/mgar/pkg/cpan/html2text/trunk/Makefile csw/mgar/pkg/cpan/libapreq/trunk/Makefile csw/mgar/pkg/cpan/libapreq2/trunk/Makefile csw/mgar/pkg/cpan/libwww-perl/trunk/Makefile csw/mgar/pkg/cpan/libxml-perl/trunk/Makefile csw/mgar/pkg/cpan/mod_perl/trunk/Makefile csw/mgar/pkg/cpan/mod_perl2/trunk/Makefile csw/mgar/pkg/cpan/perl-ldap/trunk/Makefile csw/mgar/pkg/cpan/perlconsole/trunk/Makefile csw/mgar/pkg/cpan/pmtools/trunk/Makefile csw/mgar/pkg/cpan/prefork/trunk/Makefile csw/mgar/pkg/cpan/psh/trunk/Makefile csw/mgar/pkg/cpan/sol-inst/trunk/Makefile csw/mgar/pkg/cpan/version/trunk/Makefile csw/mgar/pkg/cpptest/trunk/Makefile csw/mgar/pkg/cronolog/trunk/Makefile csw/mgar/pkg/cscope/trunk/Makefile csw/mgar/pkg/csup/trunk/Makefile csw/mgar/pkg/cswclassutils/branches/cswclassutils-usergroup-idrange/Makefile csw/mgar/pkg/cswclassutils/trunk/Makefile csw/mgar/pkg/cswcommon/trunk/Makefile csw/mgar/pkg/cswpkgloghooks/trunk/Makefile csw/mgar/pkg/cswutils/trunk/Makefile csw/mgar/pkg/csync2/trunk/Makefile csw/mgar/pkg/cups/branches/cups-1.3/Makefile csw/mgar/pkg/cups/branches/cups-1.4.0/Makefile csw/mgar/pkg/cups/trunk/Makefile csw/mgar/pkg/curl/trunk/Makefile csw/mgar/pkg/cvs/trunk/Makefile csw/mgar/pkg/cvs2svn/trunk/Makefile csw/mgar/pkg/cvsproxy/trunk/Makefile csw/mgar/pkg/cvsps/trunk/Makefile csw/mgar/pkg/cx-oracle/trunk/Makefile csw/mgar/pkg/cyrus_imapd/trunk/Makefile csw/mgar/pkg/daemontools/trunk/Makefile csw/mgar/pkg/daimonin/trunk/Makefile csw/mgar/pkg/dante/trunk/Makefile csw/mgar/pkg/dbus/trunk/Makefile csw/mgar/pkg/dbus-glib/trunk/Makefile csw/mgar/pkg/dcc/trunk/Makefile csw/mgar/pkg/dcraw/trunk/Makefile csw/mgar/pkg/ddd/trunk/Makefile csw/mgar/pkg/ddrescue/trunk/Makefile csw/mgar/pkg/debian-vote/trunk/Makefile csw/mgar/pkg/dejagnu/trunk/Makefile csw/mgar/pkg/denyhosts/trunk/Makefile csw/mgar/pkg/dhcp/trunk/Makefile csw/mgar/pkg/dhcping/trunk/Makefile csw/mgar/pkg/di/trunk/Makefile csw/mgar/pkg/dia/trunk/Makefile csw/mgar/pkg/dia-shapes/trunk/Makefile csw/mgar/pkg/diffstat/trunk/Makefile csw/mgar/pkg/diffuse/trunk/Makefile csw/mgar/pkg/diffutils/trunk/Makefile csw/mgar/pkg/disktype/trunk/Makefile csw/mgar/pkg/distcc/trunk/Makefile csw/mgar/pkg/djbdns/trunk/Makefile csw/mgar/pkg/djvulibre/trunk/Makefile csw/mgar/pkg/dnstop/trunk/Makefile csw/mgar/pkg/dnstracer/trunk/Makefile csw/mgar/pkg/dnswalk/trunk/Makefile csw/mgar/pkg/docbook/trunk/Makefile csw/mgar/pkg/docbook-dtds/trunk/Makefile csw/mgar/pkg/docbook-style-dsssl/trunk/Makefile csw/mgar/pkg/docbook-style-xsl/trunk/Makefile csw/mgar/pkg/docbook-style-xsl/trunk/files/CSWdocbookxsl.postinstall csw/mgar/pkg/docbook-style-xsl/trunk/files/Makefile csw/mgar/pkg/dovecot/trunk/Makefile csw/mgar/pkg/doxygen/trunk/Makefile csw/mgar/pkg/dpkg/trunk/Makefile csw/mgar/pkg/drill/trunk/Makefile csw/mgar/pkg/drupal/trunk/Makefile csw/mgar/pkg/dsniff/trunk/Makefile csw/mgar/pkg/dtracetoolkit/trunk/Makefile csw/mgar/pkg/duplicity/trunk/Makefile csw/mgar/pkg/easytag/trunk/Makefile csw/mgar/pkg/ectags/trunk/Makefile csw/mgar/pkg/eet/trunk/Makefile csw/mgar/pkg/eina/trunk/Makefile csw/mgar/pkg/elinks/trunk/Makefile csw/mgar/pkg/emacs/trunk/Makefile csw/mgar/pkg/emacs_sitestart/trunk/Makefile csw/mgar/pkg/enchant/trunk/Makefile csw/mgar/pkg/enscript/trunk/Makefile csw/mgar/pkg/erlang/trunk/Makefile csw/mgar/pkg/esound/trunk/Makefile csw/mgar/pkg/esvn/trunk/Makefile csw/mgar/pkg/etckeeper/trunk/Makefile csw/mgar/pkg/eterm/trunk/Makefile csw/mgar/pkg/ethereal/trunk/Makefile csw/mgar/pkg/euler/trunk/Makefile csw/mgar/pkg/eventlog/trunk/Makefile csw/mgar/pkg/evince/trunk/Makefile csw/mgar/pkg/evolution/trunk/Makefile csw/mgar/pkg/evolution-ds/trunk/Makefile csw/mgar/pkg/evolution-exchange/trunk/Makefile csw/mgar/pkg/evolution-mapi/trunk/Makefile csw/mgar/pkg/evolution-webcal/trunk/Makefile csw/mgar/pkg/examples/loose-files/trunk/Makefile csw/mgar/pkg/examples/minimalsmf/trunk/Makefile csw/mgar/pkg/examples/modulations/branches/minimal-version-modulation/Makefile csw/mgar/pkg/examples/modulations/trunk/Makefile csw/mgar/pkg/examples/multiple-versions/trunk/Makefile csw/mgar/pkg/examples/users-and-groups/trunk/Makefile csw/mgar/pkg/exempi/trunk/Makefile csw/mgar/pkg/exiftool/trunk/Makefile csw/mgar/pkg/exim/trunk/Makefile csw/mgar/pkg/exiv2/trunk/Makefile csw/mgar/pkg/expat/trunk/Makefile csw/mgar/pkg/expect/trunk/Makefile csw/mgar/pkg/facter/trunk/Makefile csw/mgar/pkg/fakeroot/trunk/Makefile csw/mgar/pkg/fam/trunk/Makefile csw/mgar/pkg/fastcgi/trunk/Makefile csw/mgar/pkg/fax2png/trunk/Makefile csw/mgar/pkg/fbopenssl/trunk/Makefile csw/mgar/pkg/ffcall/trunk/Makefile csw/mgar/pkg/ffmpeg/trunk/Makefile csw/mgar/pkg/fftw/trunk/Makefile csw/mgar/pkg/figlet/trunk/Makefile csw/mgar/pkg/file/trunk/Makefile csw/mgar/pkg/fileutils/trunk/Makefile csw/mgar/pkg/filezilla/trunk/Makefile csw/mgar/pkg/findutils/trunk/Makefile csw/mgar/pkg/fio/trunk/Makefile csw/mgar/pkg/firefox/branches/firefox2-maintenance/Makefile csw/mgar/pkg/firefox/branches/firefox2-maintenance/files/CSWfirefox.gspec csw/mgar/pkg/firefox/branches/firefox3-packaging/Makefile csw/mgar/pkg/firefox/branches/firefox3.5-packaging/Makefile csw/mgar/pkg/firefox/branches/mwatters/Makefile csw/mgar/pkg/firefox/trunk/Makefile csw/mgar/pkg/firefox-l10n/trunk/Makefile csw/mgar/pkg/flac/trunk/Makefile csw/mgar/pkg/flex-2.5.4a/trunk/Makefile csw/mgar/pkg/flex_new/trunk/Makefile csw/mgar/pkg/flphoto/trunk/Makefile csw/mgar/pkg/fltk/trunk/Makefile csw/mgar/pkg/fontconfig/trunk/Makefile csw/mgar/pkg/fontforge/trunk/Makefile csw/mgar/pkg/formencode/trunk/Makefile csw/mgar/pkg/fortune4all/trunk/Makefile csw/mgar/pkg/fox/trunk/Makefile csw/mgar/pkg/fping/trunk/Makefile csw/mgar/pkg/fprobe/trunk/Makefile csw/mgar/pkg/freeciv/trunk/Makefile csw/mgar/pkg/freedesktop/Makefile csw/mgar/pkg/freedesktop/libxcb/trunk/Makefile csw/mgar/pkg/freedesktop/xcb-util/trunk/Makefile csw/mgar/pkg/freedesktop/xcbproto/trunk/Makefile csw/mgar/pkg/freeglut/trunk/Makefile csw/mgar/pkg/freehdl/trunk/Makefile csw/mgar/pkg/freeradius/trunk/Makefile csw/mgar/pkg/freerdp/trunk/Makefile csw/mgar/pkg/freetds/trunk/Makefile csw/mgar/pkg/freetype/trunk/Makefile csw/mgar/pkg/fribidi/trunk/Makefile csw/mgar/pkg/ftgl/trunk/Makefile csw/mgar/pkg/gaim/trunk/Makefile csw/mgar/pkg/ganglia/branches/ganglia-3.1.3-rc/Makefile csw/mgar/pkg/ganglia/branches/ganglia-3.1.4-rc/Makefile csw/mgar/pkg/ganglia/branches/ganglia-3.1.6-rc/Makefile csw/mgar/pkg/ganglia/branches/ganglia-3.1.7/Makefile csw/mgar/pkg/ganglia/trunk/Makefile csw/mgar/pkg/gar/trunk/Makefile csw/mgar/pkg/gardev/trunk/Makefile csw/mgar/pkg/gcc4/trunk/Makefile csw/mgar/pkg/gcc4/trunk/files/gar_override.mk csw/mgar/pkg/gcc4/trunk/files/package_def.mk csw/mgar/pkg/gccgo/trunk/Makefile csw/mgar/pkg/gcpio/trunk/Makefile csw/mgar/pkg/gd/branches/gd-x11-reloaded/Makefile csw/mgar/pkg/gd/trunk/Makefile csw/mgar/pkg/gdb/trunk/Makefile csw/mgar/pkg/gdbm/trunk/Makefile csw/mgar/pkg/gdmap/trunk/Makefile csw/mgar/pkg/gdome2/trunk/Makefile csw/mgar/pkg/geda/trunk/Makefile csw/mgar/pkg/geeqie/trunk/Makefile csw/mgar/pkg/gem-rake/trunk/Makefile csw/mgar/pkg/gengetopt/trunk/Makefile csw/mgar/pkg/genshi/trunk/Makefile csw/mgar/pkg/geolitedb/trunk/Makefile csw/mgar/pkg/gettext/trunk/Makefile csw/mgar/pkg/gforth/trunk/Makefile csw/mgar/pkg/gftp/trunk/Makefile csw/mgar/pkg/ghc/trunk/Makefile csw/mgar/pkg/ghostscript/trunk/Makefile csw/mgar/pkg/gif2png/trunk/Makefile csw/mgar/pkg/giflib/trunk/Makefile csw/mgar/pkg/gifsicle/trunk/Makefile csw/mgar/pkg/gimp/trunk/Makefile csw/mgar/pkg/git/trunk/Makefile csw/mgar/pkg/git-subtree/trunk/Makefile csw/mgar/pkg/gitosis/trunk/Makefile csw/mgar/pkg/gkrellm/trunk/Makefile csw/mgar/pkg/glew/trunk/Makefile csw/mgar/pkg/glib/trunk/Makefile csw/mgar/pkg/glib2/branches/glib2-2.23.x/Makefile csw/mgar/pkg/glib2/trunk/Makefile csw/mgar/pkg/glibmm/trunk/Makefile csw/mgar/pkg/glpk/trunk/Makefile csw/mgar/pkg/gluezilla/trunk/Makefile csw/mgar/pkg/gmake/trunk/Makefile csw/mgar/pkg/gmt/trunk/Makefile csw/mgar/pkg/gmtcoast/trunk/Makefile csw/mgar/pkg/gnome-base/gail/trunk/Makefile csw/mgar/pkg/gnome-base/gconf-editor/trunk/Makefile csw/mgar/pkg/gnome-base/gconf2/trunk/Makefile csw/mgar/pkg/gnome-base/gnome-icon-theme/trunk/Makefile csw/mgar/pkg/gnome-base/gnome-keyring/trunk/Makefile csw/mgar/pkg/gnome-base/gnome-mime-data/trunk/Makefile csw/mgar/pkg/gnome-base/gnome-terminal/trunk/Makefile csw/mgar/pkg/gnome-base/gnomedesktop/trunk/Makefile csw/mgar/pkg/gnome-base/gnomemedia/trunk/Makefile csw/mgar/pkg/gnome-base/gnomevfs2/trunk/Makefile csw/mgar/pkg/gnome-base/libbonobo2/trunk/Makefile csw/mgar/pkg/gnome-base/libgnomecanvas/trunk/Makefile csw/mgar/pkg/gnome-base/libgnomedb/trunk/Makefile csw/mgar/pkg/gnome-base/libgnomekbd/trunk/Makefile csw/mgar/pkg/gnome-base/libgnomeprint/trunk/Makefile csw/mgar/pkg/gnome-base/libgnomeprintui/trunk/Makefile csw/mgar/pkg/gnome-base/libgnomeui/trunk/Makefile csw/mgar/pkg/gnome-base/orbit2/trunk/Makefile csw/mgar/pkg/gnulinks/trunk/Makefile csw/mgar/pkg/gnumeric/trunk/Makefile csw/mgar/pkg/gnupg/trunk/Makefile csw/mgar/pkg/gnupg2/trunk/Makefile csw/mgar/pkg/gnupg_minimal/trunk/Makefile csw/mgar/pkg/gnuplot/trunk/Makefile csw/mgar/pkg/gnutls/trunk/Makefile csw/mgar/pkg/gobject-introspection/trunk/Makefile csw/mgar/pkg/goocanvas/trunk/Makefile csw/mgar/pkg/google-gflags/trunk/Makefile csw/mgar/pkg/googlemock/trunk/Makefile csw/mgar/pkg/googletest/trunk/Makefile csw/mgar/pkg/gource/trunk/Makefile csw/mgar/pkg/gperf/trunk/Makefile csw/mgar/pkg/gpgme/trunk/Makefile csw/mgar/pkg/gphoto2/trunk/Makefile csw/mgar/pkg/gpicview/trunk/Makefile csw/mgar/pkg/graphviz/trunk/Makefile csw/mgar/pkg/grep/trunk/Makefile csw/mgar/pkg/groff/trunk/Makefile csw/mgar/pkg/gsasl/trunk/Makefile csw/mgar/pkg/gsm/trunk/Makefile csw/mgar/pkg/gstplugins/trunk/Makefile csw/mgar/pkg/gstplugins_bad/trunk/Makefile csw/mgar/pkg/gstplugins_good/trunk/Makefile csw/mgar/pkg/gstplugins_ugly/trunk/Makefile csw/mgar/pkg/gstreamer/trunk/Makefile csw/mgar/pkg/gtar/trunk/Makefile csw/mgar/pkg/gtk-doc/trunk/Makefile csw/mgar/pkg/gtk2/trunk/Makefile csw/mgar/pkg/gtkpod/trunk/Makefile csw/mgar/pkg/gtksourceview/trunk/Makefile csw/mgar/pkg/gtkwave/trunk/Makefile csw/mgar/pkg/gts/trunk/Makefile csw/mgar/pkg/guile/trunk/Makefile csw/mgar/pkg/gvim/trunk/Makefile csw/mgar/pkg/gxmessage/trunk/Makefile csw/mgar/pkg/gzip/trunk/Makefile csw/mgar/pkg/hachoir-core/trunk/Makefile csw/mgar/pkg/hachoir-parser/trunk/Makefile csw/mgar/pkg/handbrake/trunk/Makefile csw/mgar/pkg/haproxy/trunk/Makefile csw/mgar/pkg/hatari/trunk/Makefile csw/mgar/pkg/hdf5/trunk/Makefile csw/mgar/pkg/help2man/trunk/Makefile csw/mgar/pkg/hexdump/trunk/Makefile csw/mgar/pkg/hicolor-icon-theme/trunk/Makefile csw/mgar/pkg/htmldoc/trunk/Makefile csw/mgar/pkg/htmltidy/trunk/Makefile csw/mgar/pkg/httperf/trunk/Makefile csw/mgar/pkg/httping/trunk/Makefile csw/mgar/pkg/hylafax/trunk/Makefile csw/mgar/pkg/hypermail/trunk/Makefile csw/mgar/pkg/icecast/trunk/Makefile csw/mgar/pkg/icinga/trunk/Makefile csw/mgar/pkg/icon-naming-utils/trunk/Makefile csw/mgar/pkg/idzebra/trunk/Makefile csw/mgar/pkg/iftop/trunk/Makefile csw/mgar/pkg/ilmbase/trunk/Makefile csw/mgar/pkg/image-editor/trunk/Makefile csw/mgar/pkg/imap-c-client/trunk/Makefile csw/mgar/pkg/imapfilter/trunk/Makefile csw/mgar/pkg/imapproxy/trunk/Makefile csw/mgar/pkg/imapsync/trunk/Makefile csw/mgar/pkg/imlib/trunk/Makefile csw/mgar/pkg/imlib2/trunk/Makefile csw/mgar/pkg/imlib2_loaders/trunk/Makefile csw/mgar/pkg/indent/trunk/Makefile csw/mgar/pkg/intltool/trunk/Makefile csw/mgar/pkg/iotop/trunk/Makefile csw/mgar/pkg/iozone/trunk/Makefile csw/mgar/pkg/iperf/trunk/Makefile csw/mgar/pkg/irssi/trunk/Makefile csw/mgar/pkg/iso-codes/trunk/Makefile csw/mgar/pkg/jack/trunk/Makefile csw/mgar/pkg/java/Makefile csw/mgar/pkg/java/ajcbeanutils/trunk/Makefile csw/mgar/pkg/java/ajcchain/trunk/Makefile csw/mgar/pkg/java/ajcchain/trunk/files/CSWajcchain.gspec csw/mgar/pkg/java/ajcchain/trunk/files/CSWajcchaindoc.gspec csw/mgar/pkg/java/ajccli/trunk/Makefile csw/mgar/pkg/java/ajccli/trunk/files/CSWajccli.gspec csw/mgar/pkg/java/ajccli/trunk/files/CSWajcclidoc.gspec csw/mgar/pkg/java/ajccodec/trunk/Makefile csw/mgar/pkg/java/ajccodec/trunk/files/CSWajccodec.gspec csw/mgar/pkg/java/ajccodec/trunk/files/CSWajccodecdoc.gspec csw/mgar/pkg/java/ajccollections/trunk/Makefile csw/mgar/pkg/java/ajccollections/trunk/files/CSWajccollect.gspec csw/mgar/pkg/java/ajccollections/trunk/files/CSWajccollectdoc.gspec csw/mgar/pkg/java/ajcconfig/trunk/Makefile csw/mgar/pkg/java/ajcconfig/trunk/files/CSWajcconfig.gspec csw/mgar/pkg/java/ajcconfig/trunk/files/CSWajcconfigdoc.gspec csw/mgar/pkg/java/ajcdigester/trunk/Makefile csw/mgar/pkg/java/ajcdigester/trunk/files/CSWajcdigester.gspec csw/mgar/pkg/java/ajcdigester/trunk/files/CSWajcdigesterdoc.gspec csw/mgar/pkg/java/ajcdiscovery/trunk/Makefile csw/mgar/pkg/java/ajcdiscovery/trunk/files/CSWajcdiscovery.gspec csw/mgar/pkg/java/ajcdiscovery/trunk/files/CSWajcdiscoverydoc.gspec csw/mgar/pkg/java/ajcemail/trunk/Makefile csw/mgar/pkg/java/ajcemail/trunk/files/CSWajcemail.gspec csw/mgar/pkg/java/ajcemail/trunk/files/CSWajcemaildoc.gspec csw/mgar/pkg/java/ajchttpcl/trunk/Makefile csw/mgar/pkg/java/ajchttpcl/trunk/files/CSWajchttpcldoc.gspec csw/mgar/pkg/java/ajchttpcl/trunk/files/CSWajchttpclient.gspec csw/mgar/pkg/java/ajcio/trunk/Makefile csw/mgar/pkg/java/ajcio/trunk/files/CSWajcio.gspec csw/mgar/pkg/java/ajcio/trunk/files/CSWajciodoc.gspec csw/mgar/pkg/java/ajclang/trunk/Makefile csw/mgar/pkg/java/ajclang/trunk/files/CSWajclang.gspec csw/mgar/pkg/java/ajclang/trunk/files/CSWajclangdoc.gspec csw/mgar/pkg/java/ajclogging/trunk/Makefile csw/mgar/pkg/java/ajclogging/trunk/files/CSWajclogging.gspec csw/mgar/pkg/java/ajclogging/trunk/files/CSWajcloggingdoc.gspec csw/mgar/pkg/java/ajcmath/trunk/Makefile csw/mgar/pkg/java/ajcmath/trunk/files/CSWajcmath.gspec csw/mgar/pkg/java/ajcmath/trunk/files/CSWajcmathdoc.gspec csw/mgar/pkg/java/ajcnet/trunk/Makefile csw/mgar/pkg/java/ajcnet/trunk/files/CSWajcnet.gspec csw/mgar/pkg/java/ajcnet/trunk/files/CSWajcnetdoc.gspec csw/mgar/pkg/java/ajcpool/trunk/Makefile csw/mgar/pkg/java/ajcpool/trunk/files/CSWajcpool.gspec csw/mgar/pkg/java/ajcpool/trunk/files/CSWajcpooldoc.gspec csw/mgar/pkg/java/ajcprimitives/trunk/Makefile csw/mgar/pkg/java/ajcprimitives/trunk/files/CSWajcprimitives.gspec csw/mgar/pkg/java/ajcprimitives/trunk/files/CSWajcprimitivesdoc.gspec csw/mgar/pkg/java/ajcupload/trunk/Makefile csw/mgar/pkg/java/ajcupload/trunk/files/CSWajcupload.gspec csw/mgar/pkg/java/ajcupload/trunk/files/CSWajcuploaddoc.gspec csw/mgar/pkg/java/ajcvalidator/trunk/Makefile csw/mgar/pkg/java/ajcvalidator/trunk/files/CSWajcvalidator.gspec csw/mgar/pkg/java/ajcvalidator/trunk/files/CSWajcvalidatordoc.gspec csw/mgar/pkg/java/junit/trunk/Makefile csw/mgar/pkg/java/junit/trunk/files/CSWjunit.gspec csw/mgar/pkg/java/junit/trunk/files/CSWjunitdoc.gspec csw/mgar/pkg/java/log4j/trunk/Makefile csw/mgar/pkg/java/log4j/trunk/files/CSWlog4j.gspec csw/mgar/pkg/java/log4j/trunk/files/CSWlog4jdoc.gspec csw/mgar/pkg/jboss4/trunk/Makefile csw/mgar/pkg/jdk5/trunk/Makefile csw/mgar/pkg/jdk6/trunk/Makefile csw/mgar/pkg/jetty6/trunk/Makefile csw/mgar/pkg/jetty6/trunk/files/CSWjetty6.gspec csw/mgar/pkg/jetty6/trunk/files/CSWjetty6doc.gspec csw/mgar/pkg/jhead/trunk/Makefile csw/mgar/pkg/jicmp/trunk/Makefile csw/mgar/pkg/joe/trunk/Makefile csw/mgar/pkg/jpeg/trunk/Makefile csw/mgar/pkg/jpeginfo/trunk/Makefile csw/mgar/pkg/jpegoptim/trunk/Makefile csw/mgar/pkg/jrrd/trunk/Makefile csw/mgar/pkg/json-glib/trunk/Makefile csw/mgar/pkg/jxplorer/trunk/Makefile csw/mgar/pkg/kawa/trunk/Makefile csw/mgar/pkg/kde/trunk/Makefile csw/mgar/pkg/kde4libs/trunk/Makefile csw/mgar/pkg/kdeaccessibility/trunk/Makefile csw/mgar/pkg/kdeaddons/trunk/Makefile csw/mgar/pkg/kdeadmin/trunk/Makefile csw/mgar/pkg/kdeartwork/trunk/Makefile csw/mgar/pkg/kdebase/trunk/Makefile csw/mgar/pkg/kdebindings/trunk/Makefile csw/mgar/pkg/kdeedu/trunk/Makefile csw/mgar/pkg/kdegames/trunk/Makefile csw/mgar/pkg/kdegraphics/trunk/Makefile csw/mgar/pkg/kdelibs/trunk/Makefile csw/mgar/pkg/kdemultimedia/trunk/Makefile csw/mgar/pkg/kdenetwork/trunk/Makefile csw/mgar/pkg/kdepim/trunk/Makefile csw/mgar/pkg/kdesdk/trunk/Makefile csw/mgar/pkg/kdesvn/trunk/Makefile csw/mgar/pkg/kdetoys/trunk/Makefile csw/mgar/pkg/kdeutils/trunk/Makefile csw/mgar/pkg/kdevelop/trunk/Makefile csw/mgar/pkg/keepassx/trunk/Makefile csw/mgar/pkg/keychain/trunk/Makefile csw/mgar/pkg/kile/trunk/Makefile csw/mgar/pkg/koffice/trunk/Makefile csw/mgar/pkg/koha/trunk/Makefile csw/mgar/pkg/krb5/trunk/Makefile csw/mgar/pkg/krb5-lib/trunk/Makefile csw/mgar/pkg/ksh/trunk/Makefile csw/mgar/pkg/kshdbx/trunk/Makefile csw/mgar/pkg/lame/trunk/Makefile csw/mgar/pkg/lang-python/dbus-python/trunk/Makefile csw/mgar/pkg/lang-python/django/trunk/Makefile csw/mgar/pkg/lang-python/django-auth-ldap/trunk/Makefile csw/mgar/pkg/lang-python/django-filter/trunk/Makefile csw/mgar/pkg/lang-python/django-sorting/trunk/Makefile csw/mgar/pkg/lang-python/gdata-python-client/trunk/Makefile csw/mgar/pkg/lang-python/guppy/trunk/Makefile csw/mgar/pkg/lang-python/ipython/trunk/Makefile csw/mgar/pkg/lang-python/logilab-astng/trunk/Makefile csw/mgar/pkg/lang-python/logilab-common/trunk/Makefile csw/mgar/pkg/lang-python/mod_python/trunk/Makefile csw/mgar/pkg/lang-python/mysql-python/trunk/Makefile csw/mgar/pkg/lang-python/nose/trunk/Makefile csw/mgar/pkg/lang-python/numpy/trunk/Makefile csw/mgar/pkg/lang-python/psycopg2/trunk/Makefile csw/mgar/pkg/lang-python/py_antlr/trunk/Makefile csw/mgar/pkg/lang-python/pyboto/trunk/Makefile csw/mgar/pkg/lang-python/pycairo/trunk/Makefile csw/mgar/pkg/lang-python/pychecker/trunk/Makefile csw/mgar/pkg/lang-python/pycurl/trunk/Makefile csw/mgar/pkg/lang-python/pydes/trunk/Makefile csw/mgar/pkg/lang-python/pydocutils/trunk/Makefile csw/mgar/pkg/lang-python/pyfpconst/trunk/Makefile csw/mgar/pkg/lang-python/pygobject/trunk/Makefile csw/mgar/pkg/lang-python/pygtk/trunk/Makefile csw/mgar/pkg/lang-python/pykstat/trunk/Makefile csw/mgar/pkg/lang-python/pylint/trunk/Makefile csw/mgar/pkg/lang-python/pylxml/trunk/Makefile csw/mgar/pkg/lang-python/pyorbit/trunk/Makefile csw/mgar/pkg/lang-python/pysetuptools/trunk/Makefile csw/mgar/pkg/lang-python/pysoappy/trunk/Makefile csw/mgar/pkg/lang-python/pysqlite/trunk/Makefile csw/mgar/pkg/lang-python/pysqlite2/trunk/Makefile csw/mgar/pkg/lang-python/pysvn/trunk/Makefile csw/mgar/pkg/lang-python/python/branches/libpython2_5_1_0/Makefile csw/mgar/pkg/lang-python/python/branches/python-2.7/Makefile csw/mgar/pkg/lang-python/python/branches/python-3.1/Makefile csw/mgar/pkg/lang-python/python/branches/soname-granularity/Makefile csw/mgar/pkg/lang-python/python/trunk/Makefile csw/mgar/pkg/lang-python/python-augeas/trunk/Makefile csw/mgar/pkg/lang-python/python-dateutil/trunk/Makefile csw/mgar/pkg/lang-python/python-gflags/trunk/Makefile csw/mgar/pkg/lang-python/python-graph/trunk/Makefile csw/mgar/pkg/lang-python/python-ldap/trunk/Makefile csw/mgar/pkg/lang-python/python-magic/trunk/Makefile csw/mgar/pkg/lang-python/python-pexpect/trunk/Makefile csw/mgar/pkg/lang-python/python-suds/trunk/Makefile csw/mgar/pkg/lang-python/python25/trunk/Makefile csw/mgar/pkg/lang-python/python3/trunk/Makefile csw/mgar/pkg/lang-python/pytz/trunk/Makefile csw/mgar/pkg/lang-python/pyyaml/trunk/Makefile csw/mgar/pkg/lang-python/pyzor/trunk/Makefile csw/mgar/pkg/lang-python/shout-python/trunk/Makefile csw/mgar/pkg/lang-python/soappy/trunk/Makefile csw/mgar/pkg/lang-python/supybot/trunk/Makefile csw/mgar/pkg/lang-python/twisted/trunk/Makefile csw/mgar/pkg/lang-python/virtualenv/trunk/Makefile csw/mgar/pkg/lang-python/xlrd/trunk/Makefile csw/mgar/pkg/lastx/trunk/Makefile csw/mgar/pkg/lcms/trunk/Makefile csw/mgar/pkg/ldapvi/trunk/Makefile csw/mgar/pkg/leafnode/trunk/Makefile csw/mgar/pkg/lensfun/trunk/Makefile csw/mgar/pkg/less/trunk/Makefile csw/mgar/pkg/lftp/trunk/Makefile csw/mgar/pkg/lha/trunk/Makefile csw/mgar/pkg/liba52/trunk/Makefile csw/mgar/pkg/libao/trunk/Makefile csw/mgar/pkg/libarchive/trunk/Makefile csw/mgar/pkg/libart/trunk/Makefile csw/mgar/pkg/libassuan/trunk/Makefile csw/mgar/pkg/libast/trunk/Makefile csw/mgar/pkg/libatk/trunk/Makefile csw/mgar/pkg/libatomic_ops/trunk/Makefile csw/mgar/pkg/libcairo/branches/libcairo-x11-reloaded/Makefile csw/mgar/pkg/libcairo/trunk/Makefile csw/mgar/pkg/libcddb/trunk/Makefile csw/mgar/pkg/libcdio/trunk/Makefile csw/mgar/pkg/libconfuse/trunk/Makefile csw/mgar/pkg/libcroco/trunk/Makefile csw/mgar/pkg/libdatrie/trunk/Makefile csw/mgar/pkg/libdnet/trunk/Makefile csw/mgar/pkg/libdvdcss/trunk/Makefile csw/mgar/pkg/libdvdread/trunk/Makefile csw/mgar/pkg/libebml/trunk/Makefile csw/mgar/pkg/libeggdbus/trunk/Makefile csw/mgar/pkg/libemf/trunk/Makefile csw/mgar/pkg/liberation-fonts/trunk/Makefile csw/mgar/pkg/libev/trunk/Makefile csw/mgar/pkg/libevent/branches/libevent-2.0.x/Makefile csw/mgar/pkg/libevent/trunk/Makefile csw/mgar/pkg/libexif/trunk/Makefile csw/mgar/pkg/libfaac/trunk/Makefile csw/mgar/pkg/libfaad2/trunk/Makefile csw/mgar/pkg/libfasttime/trunk/Makefile csw/mgar/pkg/libffi/trunk/Makefile csw/mgar/pkg/libfishsound/trunk/Makefile csw/mgar/pkg/libfpx/trunk/Makefile csw/mgar/pkg/libgadu/trunk/Makefile csw/mgar/pkg/libgc/trunk/Makefile csw/mgar/pkg/libgcrypt/trunk/Makefile csw/mgar/pkg/libgda/trunk/Makefile csw/mgar/pkg/libgdiplus/trunk/Makefile csw/mgar/pkg/libglade/trunk/Makefile csw/mgar/pkg/libglade2/trunk/Makefile csw/mgar/pkg/libgmp/trunk/Makefile csw/mgar/pkg/libgnugetopt/trunk/Makefile csw/mgar/pkg/libgoffice/trunk/Makefile csw/mgar/pkg/libgpg_error/trunk/Makefile csw/mgar/pkg/libgphoto2/trunk/Makefile csw/mgar/pkg/libgpod/trunk/Makefile csw/mgar/pkg/libgsf/trunk/Makefile csw/mgar/pkg/libgss/trunk/Makefile csw/mgar/pkg/libical/trunk/Makefile csw/mgar/pkg/libiconv/branches/sync-pkgname/Makefile csw/mgar/pkg/libiconv/trunk/Makefile csw/mgar/pkg/libicu/trunk/Makefile csw/mgar/pkg/libid3tag/trunk/Makefile csw/mgar/pkg/libidl/trunk/Makefile csw/mgar/pkg/libidn/trunk/Makefile csw/mgar/pkg/libiptcdata/trunk/Makefile csw/mgar/pkg/libksba/trunk/Makefile csw/mgar/pkg/liblasi/trunk/Makefile csw/mgar/pkg/liblcms/trunk/Makefile csw/mgar/pkg/libldns/trunk/Makefile csw/mgar/pkg/liblockfile/trunk/Makefile csw/mgar/pkg/liblqr/trunk/Makefile csw/mgar/pkg/libmad/trunk/Makefile csw/mgar/pkg/libmatio/trunk/Makefile csw/mgar/pkg/libmatroska/trunk/Makefile csw/mgar/pkg/libmcal/trunk/Makefile csw/mgar/pkg/libmcrypt/trunk/Makefile csw/mgar/pkg/libmhash/trunk/Makefile csw/mgar/pkg/libmikmod/trunk/Makefile csw/mgar/pkg/libmkv/trunk/Makefile csw/mgar/pkg/libmm/trunk/Makefile csw/mgar/pkg/libmp4v2/trunk/Makefile csw/mgar/pkg/libmpeg2/trunk/Makefile csw/mgar/pkg/libmpfr/trunk/Makefile csw/mgar/pkg/libneon29/trunk/Makefile csw/mgar/pkg/libnet/branches/1.1.x/Makefile csw/mgar/pkg/libnet/trunk/Makefile csw/mgar/pkg/libnids/trunk/Makefile csw/mgar/pkg/libnotify/trunk/Makefile csw/mgar/pkg/libntlm/trunk/Makefile csw/mgar/pkg/libogg/trunk/Makefile csw/mgar/pkg/liboggz/trunk/Makefile csw/mgar/pkg/liboil/trunk/Makefile csw/mgar/pkg/liborc/trunk/Makefile csw/mgar/pkg/libpaper/trunk/Makefile csw/mgar/pkg/libpcap/trunk/Makefile csw/mgar/pkg/libpopt/trunk/Makefile csw/mgar/pkg/libproxy/trunk/Makefile csw/mgar/pkg/librsvg/trunk/Makefile csw/mgar/pkg/librsync/trunk/Makefile csw/mgar/pkg/libsamplerate/trunk/Makefile csw/mgar/pkg/libschroedinger/trunk/Makefile csw/mgar/pkg/libsdl/branches/libsdl-1.2.14,REV_2009.11.10/Makefile csw/mgar/pkg/libsdl/branches/x11-reloaded/Makefile csw/mgar/pkg/libsdl/trunk/Makefile csw/mgar/pkg/libserf/trunk/Makefile csw/mgar/pkg/libsexy/trunk/Makefile csw/mgar/pkg/libshout/trunk/Makefile csw/mgar/pkg/libsigcpp/trunk/Makefile csw/mgar/pkg/libsigsegv/trunk/Makefile csw/mgar/pkg/libsmi/trunk/Makefile csw/mgar/pkg/libsndfile/branches/libsndfile-1.0.22preX/Makefile csw/mgar/pkg/libsndfile/trunk/Makefile csw/mgar/pkg/libsoup/trunk/Makefile csw/mgar/pkg/libsoup2/trunk/Makefile csw/mgar/pkg/libspectre/trunk/Makefile csw/mgar/pkg/libspf2/trunk/Makefile csw/mgar/pkg/libssh2/trunk/Makefile csw/mgar/pkg/libstatgrab/trunk/Makefile csw/mgar/pkg/libstlport/trunk/Makefile csw/mgar/pkg/libtasn1/trunk/Makefile csw/mgar/pkg/libthai/trunk/Makefile csw/mgar/pkg/libtheora/trunk/Makefile csw/mgar/pkg/libtool/branches/libldtl3/Makefile csw/mgar/pkg/libtool/branches/libtool24/Makefile csw/mgar/pkg/libtool/trunk/Makefile csw/mgar/pkg/libtorrent/trunk/Makefile csw/mgar/pkg/libunique/trunk/Makefile csw/mgar/pkg/liburiparser/trunk/Makefile csw/mgar/pkg/libvanessa-logger/trunk/Makefile csw/mgar/pkg/libvanessa-socket/trunk/Makefile csw/mgar/pkg/libvorbis/trunk/Makefile csw/mgar/pkg/libwnck/trunk/Makefile csw/mgar/pkg/libwww/trunk/Makefile csw/mgar/pkg/libxdg-basedir/trunk/Makefile csw/mgar/pkg/libxine/trunk/Makefile csw/mgar/pkg/libxml++/trunk/Makefile csw/mgar/pkg/libxml2/trunk/Makefile csw/mgar/pkg/libxpm/trunk/Makefile csw/mgar/pkg/libxslt/trunk/Makefile csw/mgar/pkg/libxspf/trunk/Makefile csw/mgar/pkg/libyaml/trunk/Makefile csw/mgar/pkg/libytnef/trunk/Makefile csw/mgar/pkg/liferea/trunk/Makefile csw/mgar/pkg/lighttpd/trunk/Makefile csw/mgar/pkg/listadmin/trunk/Makefile csw/mgar/pkg/log4sh/trunk/Makefile csw/mgar/pkg/logwatch/trunk/Makefile csw/mgar/pkg/loudmouth/trunk/Makefile csw/mgar/pkg/lpc10/trunk/Makefile csw/mgar/pkg/lsof/trunk/Makefile csw/mgar/pkg/lua/trunk/Makefile csw/mgar/pkg/lutefisk/trunk/Makefile csw/mgar/pkg/lynx/trunk/Makefile csw/mgar/pkg/lyx/trunk/Makefile csw/mgar/pkg/lzip/trunk/Makefile csw/mgar/pkg/lzlib/trunk/Makefile csw/mgar/pkg/lzo/trunk/Makefile csw/mgar/pkg/lzop/trunk/Makefile csw/mgar/pkg/m4/trunk/Makefile csw/mgar/pkg/magit/trunk/Makefile csw/mgar/pkg/maildrop/trunk/Makefile csw/mgar/pkg/mailutils/trunk/Makefile csw/mgar/pkg/mailx/trunk/Makefile csw/mgar/pkg/mairix/trunk/Makefile csw/mgar/pkg/man2html/trunk/Makefile csw/mgar/pkg/mantis/trunk/Makefile csw/mgar/pkg/maven2/trunk/Makefile csw/mgar/pkg/maven3/trunk/Makefile csw/mgar/pkg/mawk/trunk/Makefile csw/mgar/pkg/mbuffer/trunk/Makefile csw/mgar/pkg/mc/trunk/Makefile csw/mgar/pkg/mcabber/trunk/Makefile csw/mgar/pkg/mcrypt/trunk/Makefile csw/mgar/pkg/meanwhile/trunk/Makefile csw/mgar/pkg/mediawiki/trunk/Makefile csw/mgar/pkg/memcached/trunk/Makefile csw/mgar/pkg/memconf/trunk/Makefile csw/mgar/pkg/mercurial/trunk/Makefile csw/mgar/pkg/meta/CSWmeta_example/trunk/Makefile csw/mgar/pkg/meta/SAMP/trunk/Makefile csw/mgar/pkg/meta/comand/trunk/Makefile csw/mgar/pkg/meta/toplevel/trunk/Makefile csw/mgar/pkg/mharc/trunk/Makefile csw/mgar/pkg/mhonarc/trunk/Makefile csw/mgar/pkg/mibdump/trunk/Makefile csw/mgar/pkg/micq/trunk/Makefile csw/mgar/pkg/miltergreylist/trunk/Makefile csw/mgar/pkg/mimedefang/trunk/Makefile csw/mgar/pkg/minicom/trunk/Makefile csw/mgar/pkg/mixer/trunk/Makefile csw/mgar/pkg/mkpackage/trunk/Makefile csw/mgar/pkg/mkrdns/trunk/Makefile csw/mgar/pkg/mktemp/trunk/Makefile csw/mgar/pkg/mm/trunk/Makefile csw/mgar/pkg/moc/trunk/Makefile csw/mgar/pkg/mocha/trunk/Makefile csw/mgar/pkg/mod_auth_mysql/trunk/Makefile csw/mgar/pkg/mod_auth_pam/trunk/Makefile csw/mgar/pkg/mod_auth_radius/trunk/Makefile csw/mgar/pkg/mod_evasive/trunk/Makefile csw/mgar/pkg/mod_fastcgi/trunk/Makefile csw/mgar/pkg/mod_fcgid/trunk/Makefile csw/mgar/pkg/mod_geoip/trunk/Makefile csw/mgar/pkg/mod_highlight/trunk/Makefile csw/mgar/pkg/mod_jk/trunk/Makefile csw/mgar/pkg/mod_macro/trunk/Makefile csw/mgar/pkg/mod_proxy_html/trunk/Makefile csw/mgar/pkg/mod_ruby/trunk/Makefile csw/mgar/pkg/mod_svn_view/trunk/Makefile csw/mgar/pkg/mod_transform/trunk/Makefile csw/mgar/pkg/mod_wsgi/trunk/Makefile csw/mgar/pkg/mongodb/trunk/Makefile csw/mgar/pkg/mono/trunk/Makefile csw/mgar/pkg/mono-basic/trunk/Makefile csw/mgar/pkg/mono-debugger/trunk/Makefile csw/mgar/pkg/mono-tools/trunk/Makefile csw/mgar/pkg/moonbuggy/trunk/Makefile csw/mgar/pkg/mox/trunk/Makefile csw/mgar/pkg/mpage/trunk/Makefile csw/mgar/pkg/mpd/trunk/Makefile csw/mgar/pkg/mpeg4ip/trunk/Makefile csw/mgar/pkg/mpg123/trunk/Makefile csw/mgar/pkg/mpg321/trunk/Makefile csw/mgar/pkg/mplayer/trunk/Makefile csw/mgar/pkg/mplex/trunk/Makefile csw/mgar/pkg/mrtg/trunk/Makefile csw/mgar/pkg/msmtp/trunk/Makefile csw/mgar/pkg/msttcorefonts/trunk/Makefile csw/mgar/pkg/mtools/trunk/Makefile csw/mgar/pkg/mtr/trunk/Makefile csw/mgar/pkg/mtwrite/trunk/Makefile csw/mgar/pkg/mtx/trunk/Makefile csw/mgar/pkg/multitail/trunk/Makefile csw/mgar/pkg/munin/trunk/Makefile csw/mgar/pkg/mutt/trunk/Makefile csw/mgar/pkg/myodbc/trunk/Makefile csw/mgar/pkg/mysql-ruby/trunk/Makefile csw/mgar/pkg/mysql4/trunk/Makefile csw/mgar/pkg/mysql5/branches/mysql-5.0.x/Makefile csw/mgar/pkg/mysql5/branches/mysql-5.1.x/Makefile csw/mgar/pkg/mysql5/branches/mysql-5.1.x-optcsw/Makefile csw/mgar/pkg/mysql5/branches/mysql-5.5.x/Makefile csw/mgar/pkg/mysql5/trunk/Makefile csw/mgar/pkg/nagios/trunk/Makefile csw/mgar/pkg/nagios_plugins/trunk/Makefile csw/mgar/pkg/nagvis/trunk/Makefile csw/mgar/pkg/namazu/trunk/Makefile csw/mgar/pkg/namebench/trunk/Makefile csw/mgar/pkg/nano/trunk/Makefile csw/mgar/pkg/nasm/trunk/Makefile csw/mgar/pkg/ncal/trunk/Makefile csw/mgar/pkg/ncdu/trunk/Makefile csw/mgar/pkg/ncftp/trunk/Makefile csw/mgar/pkg/ncmpc/trunk/Makefile csw/mgar/pkg/ncsa-mosaic/trunk/Makefile csw/mgar/pkg/ncurses/trunk/Makefile csw/mgar/pkg/ndiff/trunk/Makefile csw/mgar/pkg/ndoutils/trunk/Makefile csw/mgar/pkg/neon/trunk/Makefile csw/mgar/pkg/netcdf/branches/gar-fortran/Makefile csw/mgar/pkg/netcdf/branches/netcdf-4/Makefile csw/mgar/pkg/netcdf/trunk/Makefile csw/mgar/pkg/netpbm/trunk/Makefile csw/mgar/pkg/netsnmp/branches/netsnmp-5.4.2.1-bug4408/Makefile csw/mgar/pkg/netsnmp/trunk/Makefile csw/mgar/pkg/nfswatch/trunk/Makefile csw/mgar/pkg/nginx/trunk/Makefile csw/mgar/pkg/ngrep/trunk/Makefile csw/mgar/pkg/ngspice/trunk/Makefile csw/mgar/pkg/nicstat/trunk/Makefile csw/mgar/pkg/nmap/trunk/Makefile csw/mgar/pkg/nmh/trunk/Makefile csw/mgar/pkg/notification-daemon/trunk/Makefile csw/mgar/pkg/npadmin/trunk/Makefile csw/mgar/pkg/nrpe/trunk/Makefile csw/mgar/pkg/nsca/trunk/Makefile csw/mgar/pkg/nsd/trunk/Makefile csw/mgar/pkg/nspr/trunk/Makefile csw/mgar/pkg/nss/trunk/Makefile csw/mgar/pkg/ntop/trunk/Makefile csw/mgar/pkg/nxcl/trunk/Makefile csw/mgar/pkg/ocaml/trunk/Makefile csw/mgar/pkg/ocrad/trunk/Makefile csw/mgar/pkg/octave/trunk/Makefile csw/mgar/pkg/ogle/trunk/Makefile csw/mgar/pkg/ogle_gui/trunk/Makefile csw/mgar/pkg/oinkmaster/trunk/Makefile csw/mgar/pkg/oniguruma/trunk/Makefile csw/mgar/pkg/openal/trunk/Makefile csw/mgar/pkg/opendbx/trunk/Makefile csw/mgar/pkg/openexr/trunk/Makefile csw/mgar/pkg/opengrok/trunk/Makefile csw/mgar/pkg/openjade/trunk/Makefile csw/mgar/pkg/openjdk/trunk/Makefile csw/mgar/pkg/openjpeg/trunk/Makefile csw/mgar/pkg/openldap/trunk/Makefile csw/mgar/pkg/openldap24/trunk/Makefile csw/mgar/pkg/openmpi/trunk/Makefile csw/mgar/pkg/opennms/trunk/Makefile csw/mgar/pkg/openoffice/trunk/Makefile csw/mgar/pkg/openssh/branches/openssh-5.4p1+lpk/Makefile csw/mgar/pkg/openssh/branches/openssh-5.6p1+lpk/Makefile csw/mgar/pkg/openssh/trunk/Makefile csw/mgar/pkg/openssl/trunk/Makefile csw/mgar/pkg/openssl1/trunk/Makefile csw/mgar/pkg/openvpn/trunk/Makefile csw/mgar/pkg/opera/trunk/Makefile csw/mgar/pkg/oracle/trunk/Makefile csw/mgar/pkg/oracle-instantclient/trunk/Makefile csw/mgar/pkg/orca/trunk/Makefile csw/mgar/pkg/otr/trunk/Makefile csw/mgar/pkg/p4/trunk/Makefile csw/mgar/pkg/p7zip/trunk/Makefile csw/mgar/pkg/pacparser/trunk/Makefile csw/mgar/pkg/pakchois/trunk/Makefile csw/mgar/pkg/pango/trunk/Makefile csw/mgar/pkg/pango-libthai/trunk/Makefile csw/mgar/pkg/par/trunk/Makefile csw/mgar/pkg/parallel/trunk/Makefile csw/mgar/pkg/parcellite/trunk/Makefile csw/mgar/pkg/pari/trunk/Makefile csw/mgar/pkg/password-gorilla/trunk/Makefile csw/mgar/pkg/patch/trunk/Makefile csw/mgar/pkg/patchutils/trunk/Makefile csw/mgar/pkg/pbzip2/trunk/Makefile csw/mgar/pkg/pca/trunk/Makefile csw/mgar/pkg/pcb/trunk/Makefile csw/mgar/pkg/pcp/trunk/Makefile csw/mgar/pkg/pcre/trunk/Makefile csw/mgar/pkg/pdfjam/trunk/Makefile csw/mgar/pkg/pen/trunk/Makefile csw/mgar/pkg/perdition/trunk/Makefile csw/mgar/pkg/perl/trunk/Makefile csw/mgar/pkg/perl/trunk/files/updatecore.mk csw/mgar/pkg/pgadmin3/trunk/Makefile csw/mgar/pkg/php4/trunk/Makefile csw/mgar/pkg/php4/trunk/legacy/Makefile csw/mgar/pkg/php5/trunk/Makefile csw/mgar/pkg/php5/trunk/Makefile.cswdir csw/mgar/pkg/php5/trunk/Makefile.php5dir csw/mgar/pkg/php5/trunk/legacy/php5-apache/trunk/Makefile csw/mgar/pkg/php5/trunk/legacy/php5-apache2/trunk/Makefile csw/mgar/pkg/php5_apc/trunk/Makefile csw/mgar/pkg/php5_xdebug/trunk/Makefile csw/mgar/pkg/phpMyAdmin/trunk/Makefile csw/mgar/pkg/phpldapadmin/trunk/Makefile csw/mgar/pkg/phpmode/trunk/Makefile csw/mgar/pkg/phpsysinfo/trunk/Makefile csw/mgar/pkg/pidgin/trunk/Makefile csw/mgar/pkg/pidgin_sipe/trunk/Makefile csw/mgar/pkg/pidginotr/trunk/Makefile csw/mgar/pkg/pigz/trunk/Makefile csw/mgar/pkg/pil/trunk/Makefile csw/mgar/pkg/pinentry/trunk/Makefile csw/mgar/pkg/pius/trunk/Makefile csw/mgar/pkg/pixman/branches/latest-upstream/Makefile csw/mgar/pkg/pixman/trunk/Makefile csw/mgar/pkg/pkg_update_watch/trunk/Makefile csw/mgar/pkg/pkgconfig/trunk/Makefile csw/mgar/pkg/pkgutil/trunk/Makefile csw/mgar/pkg/plib/trunk/Makefile csw/mgar/pkg/plzip/trunk/Makefile csw/mgar/pkg/pngwriter/trunk/Makefile csw/mgar/pkg/pnp/trunk/Makefile csw/mgar/pkg/policyd-weight/trunk/Makefile csw/mgar/pkg/polkit/trunk/Makefile csw/mgar/pkg/poppler/branches/0.10.6/Makefile csw/mgar/pkg/poppler/trunk/Makefile csw/mgar/pkg/poppler-data/trunk/Makefile csw/mgar/pkg/poster/trunk/Makefile csw/mgar/pkg/postfix/branches/postfix-2.4/Makefile csw/mgar/pkg/postfix/branches/postfix-2.6/Makefile csw/mgar/pkg/postfix/trunk/Makefile csw/mgar/pkg/postgresql/branches/optcsw/Makefile csw/mgar/pkg/postgresql/branches/postgresql-9.0/Makefile csw/mgar/pkg/postgresql/trunk/Makefile csw/mgar/pkg/postgrey/trunk/Makefile csw/mgar/pkg/pound/trunk/Makefile csw/mgar/pkg/pound2/trunk/Makefile csw/mgar/pkg/powerdns/branches/opendbx/Makefile csw/mgar/pkg/powerdns/branches/oracle/Makefile csw/mgar/pkg/powerdns/trunk/Makefile csw/mgar/pkg/ppkg_get/trunk/Makefile csw/mgar/pkg/privoxy/trunk/Makefile csw/mgar/pkg/proftpd/trunk/Makefile csw/mgar/pkg/progressbar/trunk/Makefile csw/mgar/pkg/protobuf/trunk/Makefile csw/mgar/pkg/proxytunnel/trunk/Makefile csw/mgar/pkg/pth/trunk/Makefile csw/mgar/pkg/pubcookie/trunk/Makefile csw/mgar/pkg/pulseaudio/trunk/Makefile csw/mgar/pkg/puppet/branches/puppet-0.24.x/Makefile csw/mgar/pkg/puppet/branches/puppet-0.25.x/Makefile csw/mgar/pkg/puppet/branches/puppet-2.6.x/Makefile csw/mgar/pkg/puppet/trunk/Makefile csw/mgar/pkg/puppet-dashboard/trunk/Makefile csw/mgar/pkg/pureftpd/trunk/Makefile csw/mgar/pkg/pv/trunk/Makefile csw/mgar/pkg/pwgen/trunk/Makefile csw/mgar/pkg/pwsafe/trunk/Makefile csw/mgar/pkg/pxlib/trunk/Makefile csw/mgar/pkg/pxz/trunk/Makefile csw/mgar/pkg/qhull/trunk/Makefile csw/mgar/pkg/qpopper/trunk/Makefile csw/mgar/pkg/qt-gcc/trunk/Makefile csw/mgar/pkg/qt4/trunk/Makefile csw/mgar/pkg/qt4-gcc/trunk/Makefile csw/mgar/pkg/quanta/trunk/Makefile csw/mgar/pkg/qucs/trunk/Makefile csw/mgar/pkg/quilt/trunk/Makefile csw/mgar/pkg/r/trunk/Makefile csw/mgar/pkg/rails/trunk/Makefile csw/mgar/pkg/rake/trunk/Makefile csw/mgar/pkg/rapidsvn/trunk/Makefile csw/mgar/pkg/razor/trunk/Makefile csw/mgar/pkg/rb-mysql/trunk/Makefile csw/mgar/pkg/rbgems/actionmailer/trunk/Makefile csw/mgar/pkg/rbgems/actionpack/trunk/Makefile csw/mgar/pkg/rbgems/activerecord/trunk/Makefile csw/mgar/pkg/rbgems/activeresource/trunk/Makefile csw/mgar/pkg/rbgems/activesupport/trunk/Makefile csw/mgar/pkg/rbgems/ar-extensions/trunk/Makefile csw/mgar/pkg/rbgems/bacon/trunk/Makefile csw/mgar/pkg/rbgems/bundler/trunk/Makefile csw/mgar/pkg/rbgems/cgi_multipart_eof_fix/trunk/Makefile csw/mgar/pkg/rbgems/curb/trunk/Makefile csw/mgar/pkg/rbgems/daemons/trunk/Makefile csw/mgar/pkg/rbgems/enumerated_attribute/trunk/Makefile csw/mgar/pkg/rbgems/fastthread/trunk/Makefile csw/mgar/pkg/rbgems/formtastic/trunk/Makefile csw/mgar/pkg/rbgems/gem_plugin/trunk/Makefile csw/mgar/pkg/rbgems/haml/trunk/Makefile csw/mgar/pkg/rbgems/hoe/trunk/Makefile csw/mgar/pkg/rbgems/json_pure/trunk/Makefile csw/mgar/pkg/rbgems/meta_programming/trunk/Makefile csw/mgar/pkg/rbgems/mongrel/trunk/Makefile csw/mgar/pkg/rbgems/mongrel_cluster/trunk/Makefile csw/mgar/pkg/rbgems/passenger/trunk/Makefile csw/mgar/pkg/rbgems/pg/trunk/Makefile csw/mgar/pkg/rbgems/prawn/trunk/Makefile csw/mgar/pkg/rbgems/prawn-core/trunk/Makefile csw/mgar/pkg/rbgems/prawn-layout/trunk/Makefile csw/mgar/pkg/rbgems/prawn-security/trunk/Makefile csw/mgar/pkg/rbgems/rack/trunk/Makefile csw/mgar/pkg/rbgems/rails/trunk/Makefile csw/mgar/pkg/rbgems/rake/trunk/Makefile csw/mgar/pkg/rbgems/rake-compiler/trunk/Makefile csw/mgar/pkg/rbgems/rdoc/trunk/Makefile csw/mgar/pkg/rbgems/rdoc-data/trunk/Makefile csw/mgar/pkg/rbgems/redcloth/trunk/Makefile csw/mgar/pkg/rbgems/ruby-net-ldap/trunk/Makefile csw/mgar/pkg/rbgems/rubyforge/trunk/Makefile csw/mgar/pkg/rbgems/sqlite3-ruby/trunk/Makefile csw/mgar/pkg/rbgems/will_paginate/trunk/Makefile csw/mgar/pkg/rbldnsd/trunk/Makefile csw/mgar/pkg/rc/trunk/Makefile csw/mgar/pkg/rcairo/trunk/Makefile csw/mgar/pkg/rcs/trunk/Makefile csw/mgar/pkg/rdesktop/trunk/Makefile csw/mgar/pkg/rdiff-backup/trunk/Makefile csw/mgar/pkg/re2c/Makefile csw/mgar/pkg/readline/trunk/Makefile csw/mgar/pkg/recode/trunk/Makefile csw/mgar/pkg/remake/trunk/Makefile csw/mgar/pkg/reportlab/trunk/Makefile csw/mgar/pkg/resin/trunk/Makefile csw/mgar/pkg/rhythmbox/trunk/Makefile csw/mgar/pkg/rl/trunk/Makefile csw/mgar/pkg/rlwrap/trunk/Makefile csw/mgar/pkg/rox-filer/trunk/Makefile csw/mgar/pkg/rrdtool/branches/benny/Makefile csw/mgar/pkg/rrdtool/branches/ihsan/Makefile csw/mgar/pkg/rrdtool/trunk/Makefile csw/mgar/pkg/rspec/trunk/Makefile csw/mgar/pkg/rssh/trunk/Makefile csw/mgar/pkg/rsync/trunk/Makefile csw/mgar/pkg/rsyslog/trunk/Makefile csw/mgar/pkg/rtorrent/trunk/Makefile csw/mgar/pkg/ruby/trunk/Makefile csw/mgar/pkg/ruby19/trunk/Makefile csw/mgar/pkg/rubygems/trunk/Makefile csw/mgar/pkg/samba/trunk/Makefile csw/mgar/pkg/sar2rrd/trunk/Makefile csw/mgar/pkg/sasl/branches/sasl-2.1.23-mGARv2/Makefile csw/mgar/pkg/sasl/trunk/Makefile csw/mgar/pkg/sauron/trunk/Makefile csw/mgar/pkg/sbt/trunk/Makefile csw/mgar/pkg/scala/trunk/Makefile csw/mgar/pkg/scfdot/trunk/Makefile csw/mgar/pkg/scons/trunk/Makefile csw/mgar/pkg/scponly/trunk/Makefile csw/mgar/pkg/screen/trunk/Makefile csw/mgar/pkg/scrollkeeper/trunk/Makefile csw/mgar/pkg/scummvm/trunk/Makefile csw/mgar/pkg/sdlimage/trunk/Makefile csw/mgar/pkg/sdlmixer/trunk/Makefile csw/mgar/pkg/sdlnet/trunk/Makefile csw/mgar/pkg/sdlsound/trunk/Makefile csw/mgar/pkg/sdlttf/trunk/Makefile csw/mgar/pkg/seamonkey/trunk/Makefile csw/mgar/pkg/sed/trunk/Makefile csw/mgar/pkg/sendmail/branches/benny/Makefile csw/mgar/pkg/sendmail/branches/mwatters/Makefile csw/mgar/pkg/sendmail/trunk/Makefile csw/mgar/pkg/setoolkit/trunk/Makefile csw/mgar/pkg/setxkbmap/trunk/Makefile csw/mgar/pkg/sgml-xml-common/trunk/Makefile csw/mgar/pkg/sh-utils/trunk/Makefile csw/mgar/pkg/shared-mime-info/trunk/Makefile csw/mgar/pkg/sharutils/trunk/Makefile csw/mgar/pkg/shflags/trunk/Makefile csw/mgar/pkg/shmux/trunk/Makefile csw/mgar/pkg/shunit2/trunk/Makefile csw/mgar/pkg/siege/trunk/Makefile csw/mgar/pkg/silctoolkit/trunk/Makefile csw/mgar/pkg/silvercity/trunk/Makefile csw/mgar/pkg/slack/trunk/Makefile csw/mgar/pkg/slang/trunk/Makefile csw/mgar/pkg/slocate/trunk/Makefile csw/mgar/pkg/sloccount/trunk/Makefile csw/mgar/pkg/slrn/trunk/Makefile csw/mgar/pkg/smartmontools/trunk/Makefile csw/mgar/pkg/smbldap-tools/trunk/Makefile csw/mgar/pkg/snmptt/trunk/Makefile csw/mgar/pkg/snort/trunk/Makefile csw/mgar/pkg/snownews/trunk/Makefile csw/mgar/pkg/socat/trunk/Makefile csw/mgar/pkg/sox/trunk/Makefile csw/mgar/pkg/spamass-milter/trunk/Makefile csw/mgar/pkg/spamassassin/trunk/Makefile csw/mgar/pkg/speex/trunk/Makefile csw/mgar/pkg/spider/trunk/Makefile csw/mgar/pkg/spidermonkey/trunk/Makefile csw/mgar/pkg/spine/trunk/Makefile csw/mgar/pkg/sqlalchemy/trunk/Makefile csw/mgar/pkg/sqlite3/trunk/Makefile csw/mgar/pkg/sqlobject/trunk/Makefile csw/mgar/pkg/squid/trunk/Makefile csw/mgar/pkg/squidclamav/trunk/Makefile csw/mgar/pkg/squidguard/trunk/Makefile csw/mgar/pkg/squidpurge/trunk/Makefile csw/mgar/pkg/squirrelmail/trunk/Makefile csw/mgar/pkg/ss12u1f95rt/trunk/Makefile csw/mgar/pkg/ss5/trunk/Makefile csw/mgar/pkg/sshguard/trunk/Makefile csw/mgar/pkg/stalonetray/trunk/Makefile csw/mgar/pkg/startup-notification/trunk/Makefile csw/mgar/pkg/stellarium/trunk/Makefile csw/mgar/pkg/stmpclean/trunk/Makefile csw/mgar/pkg/stress/trunk/Makefile csw/mgar/pkg/stressapptest/trunk/Makefile csw/mgar/pkg/stunnel/trunk/Makefile csw/mgar/pkg/subversion/trunk/Makefile csw/mgar/pkg/sudo/branches/old-symlink-scheme/Makefile csw/mgar/pkg/sudo/branches/sudo-1.7.2x/Makefile csw/mgar/pkg/sudo/trunk/Makefile csw/mgar/pkg/sudo_ldap/trunk/Makefile csw/mgar/pkg/sudosh2/trunk/Makefile csw/mgar/pkg/sunx11_devel/trunk/Makefile.orig csw/mgar/pkg/svclog/trunk/Makefile csw/mgar/pkg/svnmailer/trunk/Makefile csw/mgar/pkg/svnstat/trunk/Makefile csw/mgar/pkg/swaks/trunk/Makefile csw/mgar/pkg/swftools/trunk/Makefile csw/mgar/pkg/swig/trunk/Makefile csw/mgar/pkg/sword/trunk/Makefile csw/mgar/pkg/swtlibs/trunk/Makefile csw/mgar/pkg/synergy/trunk/Makefile csw/mgar/pkg/sysbench/trunk/Makefile csw/mgar/pkg/syslog_ng/trunk/Makefile csw/mgar/pkg/sysstat/trunk/Makefile csw/mgar/pkg/system-tray-applet/trunk/Makefile csw/mgar/pkg/taglib/trunk/Makefile csw/mgar/pkg/taglib_gcc/trunk/Makefile csw/mgar/pkg/tcl/trunk/Makefile csw/mgar/pkg/tcl85/trunk/Makefile csw/mgar/pkg/tcpdrop/trunk/Makefile csw/mgar/pkg/tcpdump/trunk/Makefile csw/mgar/pkg/tcpflow/trunk/Makefile csw/mgar/pkg/tcpreplay/trunk/Makefile csw/mgar/pkg/tcpstat/trunk/Makefile csw/mgar/pkg/tcpwrappers/trunk/Makefile csw/mgar/pkg/tcsh/trunk/Makefile csw/mgar/pkg/template/trunk/Makefile csw/mgar/pkg/texinfo/trunk/Makefile csw/mgar/pkg/textutils/trunk/Makefile csw/mgar/pkg/thrift/trunk/Makefile csw/mgar/pkg/thunderbird/branches/thunderbird3-packaging/Makefile csw/mgar/pkg/thunderbird/trunk/Makefile csw/mgar/pkg/thunderbird-l10n/trunk/Makefile csw/mgar/pkg/tiff/trunk/Makefile csw/mgar/pkg/tig/trunk/Makefile csw/mgar/pkg/tightvnc/branches/tightvnc-1.5/Makefile csw/mgar/pkg/tightvnc/trunk/Makefile csw/mgar/pkg/tin/trunk/Makefile csw/mgar/pkg/tinyca/trunk/Makefile csw/mgar/pkg/tk/trunk/Makefile csw/mgar/pkg/tkcvs/trunk/Makefile csw/mgar/pkg/tkdiff/trunk/Makefile csw/mgar/pkg/tme/trunk/Makefile csw/mgar/pkg/tmpreaper/trunk/Makefile csw/mgar/pkg/tmpwatch/trunk/Makefile csw/mgar/pkg/tmux/branches/tmux-broken-man-location/Makefile csw/mgar/pkg/tmux/trunk/Makefile csw/mgar/pkg/tnef/trunk/Makefile csw/mgar/pkg/tofrodos/trunk/Makefile csw/mgar/pkg/tomcat4/trunk/Makefile csw/mgar/pkg/tomcat5/trunk/Makefile csw/mgar/pkg/tomcat6/branches/ihsan/Makefile csw/mgar/pkg/tomcat6/trunk/Makefile csw/mgar/pkg/tomcat7/trunk/Makefile csw/mgar/pkg/top/trunk/Makefile csw/mgar/pkg/trac/trunk/Makefile csw/mgar/pkg/trafshow/trunk/Makefile csw/mgar/pkg/transmission/trunk/Makefile csw/mgar/pkg/tree/trunk/Makefile csw/mgar/pkg/tsclient/trunk/Makefile csw/mgar/pkg/tunctl/trunk/Makefile csw/mgar/pkg/tuntap/trunk/Makefile csw/mgar/pkg/twolame/trunk/Makefile csw/mgar/pkg/ucarp/trunk/Makefile csw/mgar/pkg/ufraw/trunk/Makefile csw/mgar/pkg/unbound/trunk/Makefile csw/mgar/pkg/unclutter/trunk/Makefile csw/mgar/pkg/unixodbc/trunk/Makefile csw/mgar/pkg/unrar/trunk/Makefile csw/mgar/pkg/unrtf/trunk/Makefile csw/mgar/pkg/unzip/trunk/Makefile csw/mgar/pkg/urt/trunk/Makefile csw/mgar/pkg/urxvt/trunk/Makefile csw/mgar/pkg/v8/trunk/Makefile csw/mgar/pkg/varnish/trunk/Makefile csw/mgar/pkg/vim/trunk/Makefile csw/mgar/pkg/vixiecron/trunk/Makefile csw/mgar/pkg/vorbistools/trunk/Makefile csw/mgar/pkg/vsftpd/trunk/Makefile csw/mgar/pkg/vttest/trunk/Makefile csw/mgar/pkg/w3m/trunk/Makefile csw/mgar/pkg/watch/trunk/Makefile csw/mgar/pkg/wavpack/trunk/Makefile csw/mgar/pkg/wdiff/trunk/Makefile csw/mgar/pkg/webfs/trunk/Makefile csw/mgar/pkg/webkit/trunk/Makefile csw/mgar/pkg/webmin/trunk/Makefile csw/mgar/pkg/websvn/trunk/Makefile csw/mgar/pkg/wesnoth/trunk/Makefile csw/mgar/pkg/wget/trunk/Makefile csw/mgar/pkg/wgetpaste/trunk/Makefile csw/mgar/pkg/which/trunk/Makefile csw/mgar/pkg/wireshark/trunk/Makefile csw/mgar/pkg/wmf/trunk/Makefile csw/mgar/pkg/wput/trunk/Makefile csw/mgar/pkg/wxwidgets/branches/wxwidgets-2.8.10-full-fix-ticket-10660/Makefile csw/mgar/pkg/wxwidgets/trunk/Makefile csw/mgar/pkg/x11/Makefile csw/mgar/pkg/x11/individual/Makefile csw/mgar/pkg/x11/individual/x11_evieextproto/trunk/Makefile csw/mgar/pkg/x11/individual/x11_fontcacheproto/trunk/Makefile csw/mgar/pkg/x11/individual/x11_printproto/trunk/Makefile csw/mgar/pkg/x11/individual/x11_trapproto/trunk/Makefile csw/mgar/pkg/x11/individual/x11_xf86miscproto/trunk/Makefile csw/mgar/pkg/x11/individual/x11_xf86rushproto/trunk/Makefile csw/mgar/pkg/x11/lib/Makefile csw/mgar/pkg/x11/lib/libdmx/trunk/Makefile csw/mgar/pkg/x11/lib/libfontenc/trunk/Makefile csw/mgar/pkg/x11/lib/libfs/trunk/Makefile csw/mgar/pkg/x11/lib/libice/trunk/Makefile csw/mgar/pkg/x11/lib/libpthread-stubs/trunk/Makefile csw/mgar/pkg/x11/lib/libsm/trunk/Makefile csw/mgar/pkg/x11/lib/libx11/trunk/Makefile csw/mgar/pkg/x11/lib/libxau/trunk/Makefile csw/mgar/pkg/x11/lib/libxaw/trunk/Makefile csw/mgar/pkg/x11/lib/libxcomposite/trunk/Makefile csw/mgar/pkg/x11/lib/libxcursor/trunk/Makefile csw/mgar/pkg/x11/lib/libxdamage/trunk/Makefile csw/mgar/pkg/x11/lib/libxdmcp/trunk/Makefile csw/mgar/pkg/x11/lib/libxext/trunk/Makefile csw/mgar/pkg/x11/lib/libxfixes/trunk/Makefile csw/mgar/pkg/x11/lib/libxfont/trunk/Makefile csw/mgar/pkg/x11/lib/libxft/trunk/Makefile csw/mgar/pkg/x11/lib/libxi/trunk/Makefile csw/mgar/pkg/x11/lib/libxinerama/trunk/Makefile csw/mgar/pkg/x11/lib/libxkbfile/trunk/Makefile csw/mgar/pkg/x11/lib/libxklavier/trunk/Makefile csw/mgar/pkg/x11/lib/libxmu/trunk/Makefile csw/mgar/pkg/x11/lib/libxpm/trunk/Makefile csw/mgar/pkg/x11/lib/libxrandr/trunk/Makefile csw/mgar/pkg/x11/lib/libxres/trunk/Makefile csw/mgar/pkg/x11/lib/libxscrnsaver/trunk/Makefile csw/mgar/pkg/x11/lib/libxt/trunk/Makefile csw/mgar/pkg/x11/lib/libxtst/trunk/Makefile csw/mgar/pkg/x11/lib/libxv/trunk/Makefile csw/mgar/pkg/x11/lib/libxvmc/trunk/Makefile csw/mgar/pkg/x11/lib/libxxf86dga/trunk/Makefile csw/mgar/pkg/x11/lib/libxxf86vm/trunk/Makefile csw/mgar/pkg/x11/lib/xrender/trunk/Makefile csw/mgar/pkg/x11/lib/xtrans/trunk/Makefile csw/mgar/pkg/x11/lib-old/Makefile csw/mgar/pkg/x11/lib-old/libxfontcache/trunk/Makefile csw/mgar/pkg/x11/lib-old/libxxf86misc/trunk/Makefile csw/mgar/pkg/x11/liblbxutil/trunk/Makefile csw/mgar/pkg/x11/liboldx/trunk/Makefile csw/mgar/pkg/x11/libwindowswm/trunk/Makefile csw/mgar/pkg/x11/libxevie/trunk/Makefile csw/mgar/pkg/x11/libxkbui/trunk/Makefile csw/mgar/pkg/x11/libxp/trunk/Makefile csw/mgar/pkg/x11/libxprintapputil/trunk/Makefile csw/mgar/pkg/x11/libxprintutil/trunk/Makefile csw/mgar/pkg/x11/libxtrap/trunk/Makefile csw/mgar/pkg/x11/proto/Makefile csw/mgar/pkg/x11/proto/x11_applewmproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_bigreqsproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_compositeproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_damageproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_dmxproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_dri2proto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_fixesproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_fontsproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_glproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_inputproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_kbproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_randrproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_recordproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_renderproto/branches/renderproto-project-x11-reloaded/Makefile csw/mgar/pkg/x11/proto/x11_renderproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_resourceproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_scrnsaverproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_videoproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_windowswmproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_xcmiscproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_xextproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_xf86bigfontproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_xf86dgaproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_xf86driproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_xf86vidmodeproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_xineramaproto/trunk/Makefile csw/mgar/pkg/x11/proto/x11_xproto/trunk/Makefile csw/mgar/pkg/x11/proto-old/Makefile csw/mgar/pkg/x11/x11common/trunk/Makefile csw/mgar/pkg/x11vnc/trunk/Makefile csw/mgar/pkg/x3270/trunk/Makefile csw/mgar/pkg/xapian-bindings/trunk/Makefile csw/mgar/pkg/xapian-core/trunk/Makefile csw/mgar/pkg/xbattle/trunk/Makefile csw/mgar/pkg/xbill/trunk/Makefile csw/mgar/pkg/xboard/trunk/Makefile csw/mgar/pkg/xchat/trunk/Makefile csw/mgar/pkg/xchm/trunk/Makefile csw/mgar/pkg/xearth/trunk/Makefile csw/mgar/pkg/xerces-c/trunk/Makefile csw/mgar/pkg/xfce/Makefile csw/mgar/pkg/xfce/appfinder/trunk/Makefile csw/mgar/pkg/xfce/dbh/trunk/Makefile csw/mgar/pkg/xfce/desktop/trunk/Makefile csw/mgar/pkg/xfce/devtools/trunk/Makefile csw/mgar/pkg/xfce/exo/trunk/Makefile csw/mgar/pkg/xfce/gtk-xfce-engine/trunk/Makefile csw/mgar/pkg/xfce/icon-theme/trunk/Makefile csw/mgar/pkg/xfce/libxfce4mcs/trunk/Makefile csw/mgar/pkg/xfce/libxfce4mcs/trunk/files/CSWlibxfce4mcs.gspec csw/mgar/pkg/xfce/libxfce4mcs/trunk/files/CSWlibxfce4mcsdev.gspec csw/mgar/pkg/xfce/libxfce4mcs/trunk/files/CSWlibxfce4mcsdoc.gspec csw/mgar/pkg/xfce/libxfce4menu/trunk/Makefile csw/mgar/pkg/xfce/libxfce4util/trunk/Makefile csw/mgar/pkg/xfce/libxfcegui4/trunk/Makefile csw/mgar/pkg/xfce/mcs-manager/trunk/Makefile csw/mgar/pkg/xfce/mcs-plugins/trunk/Makefile csw/mgar/pkg/xfce/mixer/trunk/Makefile csw/mgar/pkg/xfce/mousepad/trunk/Makefile csw/mgar/pkg/xfce/orage/trunk/Makefile csw/mgar/pkg/xfce/panel/trunk/Makefile csw/mgar/pkg/xfce/print/trunk/Makefile csw/mgar/pkg/xfce/session/trunk/Makefile csw/mgar/pkg/xfce/terminal/trunk/Makefile csw/mgar/pkg/xfce/thunar/trunk/Makefile csw/mgar/pkg/xfce/utils/trunk/Makefile csw/mgar/pkg/xfce/xfconf/trunk/Makefile csw/mgar/pkg/xfce/xfwm4/trunk/Makefile csw/mgar/pkg/xfce/xfwm4-themes/trunk/Makefile csw/mgar/pkg/xfig/trunk/Makefile csw/mgar/pkg/xine-ui/trunk/Makefile csw/mgar/pkg/xinetd/trunk/Makefile csw/mgar/pkg/xjobs/trunk/Makefile csw/mgar/pkg/xmahjongg/trunk/Makefile csw/mgar/pkg/xmlrpc_c/trunk/Makefile csw/mgar/pkg/xmlstarlet/trunk/Makefile csw/mgar/pkg/xmlto/trunk/Makefile csw/mgar/pkg/xmms/trunk/Makefile csw/mgar/pkg/xpdf/trunk/Makefile csw/mgar/pkg/xpilot/trunk/Makefile csw/mgar/pkg/xrestop/trunk/Makefile csw/mgar/pkg/xsel/trunk/Makefile csw/mgar/pkg/xsnow/trunk/Makefile csw/mgar/pkg/xterm/trunk/Makefile csw/mgar/pkg/xtide/trunk/Makefile csw/mgar/pkg/xtitle/trunk/Makefile