Oct 112007
 

MASTERPORT is a tool Mark Linimon and I have used for a while. It seems to have entered into common usage now.

freshports.org=# select master_port, category, name from ports_active 
where master_port like '/%' order by category, name;
                  master_port                  |   category   |           name
-----------------------------------------------+--------------+---------------------------
 /usr/home/dan/ports/devel/ocaml-camlidl       | archivers    | ocaml-zip
 /usr/home/dan/ports/devel/ocaml-camlidl       | graphics     | ocaml-lablgl
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-canna
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-canna+freewnn
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-canna+freewnn+sj3
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-canna+sj3
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-canna+sj3+wnn6
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-canna+sj3+wnn7
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-canna+wnn6
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-canna+wnn7
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-freewnn+sj3
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-sj3
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-sj3+wnn6
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-sj3+wnn7
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-wnn6
 /usr/home/dan/ports/japanese/kinput2-freewnn/ | japanese     | kinput2-wnn7
 /usr/home/dan/ports/math/spooles/             | math         | spooles-mpich
 /usr/home/dan/ports/science/mpqc/             | science      | mpqc-mpich
 /usr/home/dan/ports/devel/ocaml-camlidl       | security     | ocaml-cryptgps
 /usr/home/dan/ports/x11-toolkits/fltk/        | x11-toolkits | fltk-threads
 /usr/home/dan/ports/devel/ocaml-camlidl       | x11-toolkits | ocaml-lablgtk
(21 rows)

freshports.org=#

These ports appear to set MASTERPORT within themselves. This breaks some stuff in FreshPorts.

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

  3 Responses to “MASTERPORT : who uses it?”

  1. I now think this problem can be solved with a simple string match and optional removal. In which case, the problem goes away entirely.

  2. The fix may be as simple as:

    $ cvs di port.pm
    Index: port.pm
    ===================================================================
    RCS file: /home/repositories/freshports-1/scripts/port.pm,v
    retrieving revision 1.43
    diff -r1.43 port.pm
    534a535,536
    >
    > $master_port =~ s|$FreshPorts::Config::path_to_ports/||;
    $

    I’m running the Verify/set-master-port.pl script now.

  3. After running set-master-port.pl, the master port for each port is correctly set. Then, I ran refresh-slave-ports.pl to refresh all the slave ports based on the current master port definitions. This needed to be done because all slave ports are updated automatically after a commit to a master port. Since master/slave relationships were not correct in the database, this last step was required to get things up to date.

    One relationship was missed in all this: I needed to clear the cache for each master port. Each master port lists all the slave ports. Similarly, each slave port list its master port. Rather than code a solution, I did this:

    SELECT DISTINCT('rm -rf /usr/websites/freshports.org/dynamic/caching/cache/ports/' 
    || master_port || '/*') FROM ports_active WHERE master_port <> '';
    

    The resulting output became a shell script, which cleared out the cache.

    More about this in the next article.