Dec 012005
 

Sam Lawrance found a bug. If a port is deleted, then a file added back in, and then it’s removed, FreshPorts doesn’t know that the port is deleted.

He found this with x11/ruby-gnome. You can see that it is marked as an expired port. On 05 Nov 2005 08:07:45, kris removed it from the tree. FreshPorts would have marked it as DELETED. A short time later, he added a file Makefile.common back into the tree. FreshPorts would have marked the port as ACTIVE. Then kris remove that file. FreshPorts did not mark the file as deleted. FreshPorts only marks a port as deleted when the Makefile is removed.

I went to check if all the files under this port were marked as DELETED in the database. First I find the Element ID of the port:

freshports.org=# select pathname_id('ports/x11/ruby-gnome');
 pathname_id
-------------
       53098
(1 row)

Then I check all the files/directories under that point in the tree:

freshports.org=# select * from element where parent_id = 53098;
  id   |      name       | parent_id | directory_file_flag | status
-------+-----------------+-----------+---------------------+--------
 53103 | Makefile.common |     53098 | F                   | D
 53106 | pkg-plist       |     53098 | F                   | D
 53105 | pkg-descr       |     53098 | F                   | D
 53099 | distinfo        |     53098 | F                   | D
 53102 | Makefile        |     53098 | F                   | D
 53104 | pkg-comment     |     53098 | F                   | D
 53100 | files           |     53098 | D                   | A
(7 rows)

Good. All the files deleted (status = ‘D’, as in deleted). What about the files directory? Let’s check there too:

freshports.org=# select * from element where parent_id = 53100;
  id   |       name       | parent_id | directory_file_flag | status
-------+------------------+-----------+---------------------+--------
 53101 | patch-extconf.rb |     53100 | F                   | D
(1 row)

freshports.org=#

Good. Everything is gone. Perhaps I should change FreshPorts to verify a port is deleted using the above strategy.

In the meantime, I’ll fix this port up soon and scan the tree for other such problems.

See also Are all files deleted?

Website Pin Facebook Twitter Myspace Friendfeed Technorati del.icio.us Digg Google StumbleUpon Premium Responsive