portupgrade regression?

Simon L. Nielsen simon at FreeBSD.org
Thu May 5 06:40:24 PDT 2005


On 2005.04.29 11:10:43 +0200, Simon L. Nielsen wrote:

[portupgrade regression in portupgrade-20041226_2]

> I think I have found the way to fix this both so it works for
> non-root, make pkgdb.db not be updated all the time, and so it does
> not cause new security problems, but I need to work out a few quirks
> (my first version did not work correctly).  Hopefully I will get it
> working this weekend, if not I will add a bandaid so you can make it
> work by setting an environment variable.

OK, I think the attached patch should fix the issues so portversion
works again as non-root and the package database is only regenerated
when needed.

I would appreciate if somebody could test the attached patch to
minimize the risk that I have broken something else.

-- 
Simon L. Nielsen
-------------- next part --------------
Index: Makefile
===================================================================
RCS file: /home/ncvs/ports/sysutils/portupgrade/Makefile,v
retrieving revision 1.195
diff -u -d -r1.195 Makefile
--- Makefile	12 Apr 2005 08:24:48 -0000	1.195
+++ Makefile	5 May 2005 13:27:54 -0000
@@ -7,7 +7,7 @@
 
 PORTNAME=	portupgrade
 PORTVERSION=	20041226
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	sysutils
 MASTER_SITES=	ftp://ftp.iDaemons.org/pub/distfiles/ \
 		${MASTER_SITE_LOCAL}
Index: files/patch-CAN-2005-0610
===================================================================
RCS file: /home/ncvs/ports/sysutils/portupgrade/files/patch-CAN-2005-0610,v
retrieving revision 1.1
diff -u -d -r1.1 patch-CAN-2005-0610
--- files/patch-CAN-2005-0610	12 Apr 2005 08:24:48 -0000	1.1
+++ files/patch-CAN-2005-0610	5 May 2005 13:27:48 -0000
@@ -1,46 +1,34 @@
-diff -ru ../orig.pkgtools-20041224/lib/pkgdb.rb ./lib/pkgdb.rb
---- ../orig.pkgtools-20041224/lib/pkgdb.rb	Wed Mar 23 21:37:47 2005
-+++ ./lib/pkgdb.rb	Tue Mar 29 00:27:02 2005
-@@ -97,7 +97,7 @@
+diff -ru orig.pkgtools-20041224/lib/pkgdb.rb pkgtools-20041224/lib/pkgdb.rb
+--- orig.pkgtools-20041224/lib/pkgdb.rb	Wed Mar 23 21:37:47 2005
++++ pkgtools-20041224/lib/pkgdb.rb	Tue May  3 19:37:40 2005
+@@ -96,8 +96,13 @@
+     @db_dir = File.expand_path(new_db_dir || ENV['PKG_DBDIR'] || '/var/db/pkg')
  
      @db_file = File.join(@db_dir, 'pkgdb.db')
-     @tmp_dir = ENV['PKG_TMPDIR'] || ENV['TMPDIR'] || '/var/tmp'
+-    @tmp_dir = ENV['PKG_TMPDIR'] || ENV['TMPDIR'] || '/var/tmp'
 -    @fixme_file = File.join(@tmp_dir, 'pkgdb.fixme')
-+    @fixme_file = File.join(@db_dir, 'pkgdb.fixme')
++    if ! ENV['PKG_FIXME_FILE'] then
++      if $tmpdir.nil? then
++	init_tmpdir
++      end
++      ENV['PKG_FIXME_FILE'] = $tmpdir + "/pkgdb.fixme"
++    end
++    @fixme_file = ENV['PKG_FIXME_FILE']
      @db_filebase = @db_file.sub(/\.db$/, '')
      close_db
  
-diff -ru ../orig.pkgtools-20041224/lib/pkgsqldb.rb ./lib/pkgsqldb.rb
---- ../orig.pkgtools-20041224/lib/pkgsqldb.rb	Wed Mar 23 21:37:47 2005
-+++ ./lib/pkgsqldb.rb	Tue Mar 29 00:29:51 2005
-@@ -74,7 +74,7 @@
- 
-     @db_file = File.join(@db_dir, 'pkgdb.sqldb')
-     @tmp_dir = ENV['PKG_TMPDIR'] || ENV['TMPDIR'] || '/var/tmp'
--    @fixme_file = File.join(@tmp_dir, 'pkgdb.fixme')
-+    @fixme_file = File.join(@db_dir, 'pkgdb.fixme')
-     close_db
- 
-     @db_dir
-diff -ru ../orig.pkgtools-20041224/lib/pkgtools.rb ./lib/pkgtools.rb
---- ../orig.pkgtools-20041224/lib/pkgtools.rb	Wed Mar 23 21:37:47 2005
-+++ ./lib/pkgtools.rb	Wed Mar 30 23:51:50 2005
-@@ -204,7 +204,7 @@
-   $ports_dir = $portsdb.ports_dir
-   $packages_base = ENV['PACKAGES'] || File.join($ports_dir, 'packages')
-   $packages_dir = File.join($packages_base, 'All')
--  $tmpdir = ENV['PKG_TMPDIR'] || ENV['TMPDIR'] || '/var/tmp'
-+  init_tmpdir
-   $pkg_path = ENV['PKG_PATH'] || $packages_dir
- 
-   $pkg_sites = (ENV['PKG_SITES'] || '').split
-@@ -222,6 +222,31 @@
- 
-   $portsdb.ignore_categories = config_value(:IGNORE_CATEGORIES) || []
-   $portsdb.extra_categories = config_value(:EXTRA_CATEGORIES) || []
-+end
+diff -ru orig.pkgtools-20041224/lib/pkgmisc.rb pkgtools-20041224/lib/pkgmisc.rb
+--- orig.pkgtools-20041224/lib/pkgmisc.rb	Wed Mar 23 21:37:47 2005
++++ pkgtools-20041224/lib/pkgmisc.rb	Thu May  5 14:09:37 2005
+@@ -95,3 +95,31 @@
+     end
+   end
+ end
 +
 +def init_tmpdir
++  if ! $tmpdir.nil? && $tmpdir != "" then
++    return
++  end
 +  maintmpdir = ENV['PKG_TMPDIR'] || ENV['TMPDIR'] || '/var/tmp'
 +  if !FileTest.directory?(maintmpdir)
 +    raise "Temporary directory #{maintmpdir} does not exist"
@@ -63,6 +51,34 @@
 +    end
 +    }
 +  $tmpdir=tmpdir
- end
++end
+diff -ru orig.pkgtools-20041224/lib/pkgsqldb.rb pkgtools-20041224/lib/pkgsqldb.rb
+--- orig.pkgtools-20041224/lib/pkgsqldb.rb	Wed Mar 23 21:37:47 2005
++++ pkgtools-20041224/lib/pkgsqldb.rb	Tue May  3 19:46:35 2005
+@@ -74,7 +74,13 @@
  
- def parse_pattern(str, regex = false)
+     @db_file = File.join(@db_dir, 'pkgdb.sqldb')
+     @tmp_dir = ENV['PKG_TMPDIR'] || ENV['TMPDIR'] || '/var/tmp'
+-    @fixme_file = File.join(@tmp_dir, 'pkgdb.fixme')
++    if ! ENV['PKG_FIXME_FILE'] then
++      if $tmpdir.nil? then
++	init_tmpdir
++      end
++      ENV['PKG_FIXME_FILE'] = $tmpdir + "/pkgdb.fixme"
++    end
++    @fixme_file = ENV['PKG_FIXME_FILE']
+     close_db
+ 
+     @db_dir
+diff -ru orig.pkgtools-20041224/lib/pkgtools.rb pkgtools-20041224/lib/pkgtools.rb
+--- orig.pkgtools-20041224/lib/pkgtools.rb	Wed Mar 23 21:37:47 2005
++++ pkgtools-20041224/lib/pkgtools.rb	Tue May  3 19:29:59 2005
+@@ -204,7 +204,7 @@
+   $ports_dir = $portsdb.ports_dir
+   $packages_base = ENV['PACKAGES'] || File.join($ports_dir, 'packages')
+   $packages_dir = File.join($packages_base, 'All')
+-  $tmpdir = ENV['PKG_TMPDIR'] || ENV['TMPDIR'] || '/var/tmp'
++  init_tmpdir
+   $pkg_path = ENV['PKG_PATH'] || $packages_dir
+ 
+   $pkg_sites = (ENV['PKG_SITES'] || '').split
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20050505/f29fd40d/attachment.bin


More information about the freebsd-ports mailing list