Small bug in ports.php
Juan Manuel Palacios
jmpp at macports.org
Sat Nov 24 10:59:39 PST 2007
On Nov 24, 2007, at 12:42 PM, Chris Pickel wrote:
> On 24 Nov, 2007, at 5:58, Ryan Schmidt wrote:
>> I believe I fixed it in r31443. I did not test it locally because I
>> haven't looked into what's required to set up a local installation
>> of the web site. But it's a very simple change and I believe it's
>> correct. If there's a document telling me what to do to set up a
>> local installation of the site, please let me know. I already have
>> apache2, php5 and mysql5 installed and have no trouble
>> administering them so as long as I just have to install a database
>> and user that's no trouble.
>>
>>> That bug might also affect the categories.
>>
>> Ports with multiple categories look fine.
>
> Indeed you did [1]. However, I'm now noticing that the order of
> those maintainers and categories is wrong. Do we not enforce any
> ordering in the SELECT statement? I don't believe MySQL guarantees
> any.
Yes, we impose an ordering in our maintainers query:
$nquery = "SELECT maintainer FROM $portsdb.maintainers WHERE
portfile='" . mysql_real_escape_string($row['name']) . "' ORDER BY
is_primary DESC, maintainer";
And the primary key is enforced by the PortIndex2MySQL script for
categories and maintainers, so I don't really know what's at fault
here. At first I thought that it had to be order in which addresses
appear in your portfile (gnutls), but clicking on a single link
reveals that's not it either. I'll investigate.
>
> As for setting up a mirror of the website, it seems to have gotten
> much more complex to get the PortIndex2MySQL script working than it
> was when I set up my mirror. Maybe jmpp can enlighten us as to how
> to get /opt/local/share/macports/resources/portmgr to be created?
The website is very easy to mirror:
pre-1) Setup your web server to work with php & mysql (I don't think
we have any versioning requirements on any of those);
1) manually create a database for the site (just the DB entry,
PortIndex2MySQL does all the tables and records):
*) PortIndex2MySQL has parameters for write access to that DB,
including its name, so adapt them as necessary (I standardized
variable naming across the board in r31455 & r31456, so remember to
svn up first);
*) trunk/www/includes/common.inc has parameters for read access to
the DB, including its name, so adapt them as necessary (I standardized
variable naming across the board in r31455 & r31456, so remember to
svn up first);
2) setup the PortIndex2MySQL script to run periodically; we provide
both the script and a launchd plist, but their installation locations
and run frequency are completely arbitrary:
*) to craete the script off of its .tcl file you first have to run
configure for your MacPorts base sources and then cd into portmgr/jobs
and "make";
*) I use the ${prefix}/share/macports/resources/portmgr location
simply because that's where the script used to be installed long ago,
but we no longer do that (totally unnecessary to install that script,
I believe, so I create the location manually);
*) the $passwdfile variable in PortIndex2MySQL has to be adapted to
point it to a file with the password for your $portsdb_name database,
and it has to be an absolute path as otherwise the script will not be
able to find the file when running off launchd (which seems to do a
chdir to / for its jobs);
*) I run the script twice a day, exactly an hour after the refreshed
index comes in (no sense at all in running it more frequently, as it
takes all of its information from the index), with its plist installed
into /Library/LaunchDaemons;
*) the $SPAM_LOVERS variable in the script is adapted to send mail to
me locally in case something goes wrong, as it wouldn't make any sense
at all having that information go to this list;
3) create a location for your webserver to access the appropriate
files in trunk/www (which on my server it's just a symlink to
precisely my trunk/www checkout);
And that's it! It might seem like a long list for an "easy" setup,
but if you read over it again you'll realize that I'm just being
verbose in explanations (as always ;-), but the steps themselves are
really short and easy.
>
>
> However, the question makes me think: once the MacPorts website is
> moved over, we want to remove the "not official" notice.
Sure thing! I have this on my list as the last (victorious!) commit
I'll make to those files right before we move the files over to the
official web server :-D
> However, there's still a use for mirrors, for testing purposes. So,
> perhaps we should add an additional warning if !preg_match('(www.)?
> macports.org', $_SERVER['HTTP_HOST']) to the effect of "this is a
> mirror and may not contain up-to-date information".
Very good suggestion indeed! Will add it once we go live with the
website.
Regards,....
-jmpp
More information about the macports-dev
mailing list