On Nov 24, 2007, at 12:59, Juan Manuel Palacios wrote:
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.
I can take a look too once I get a local environment set up.
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.
Got the database created, a user created, edited the script to point to a password file, changed the spam lovers to me, ran make. Am now trying to run the script. $ env tclsh PortIndex2MySQL It tickles my hard drive for awhile, then ends with no output. $ echo $? 1 $ So it's failing but I don't know why. I see there should be ui_error output on failures. How can I see it?
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.
Properly: <?php if (isset($_SERVER['HTTP_HOST']) && !preg_match('%(^|\.)macports\.org$ %', $_SERVER['HTTP_HOST'])) { echo "warning"; } ?> Some clients don't set $_SERVER['HTTP_HOST'] so you must test for its existence first. Fixed the regular expression to actually be a regular expression. Of course we already have a redirect in place from macports.org to www.macports.org so nobody will ever be accessing our web site as "http://macports.org/" (it'll always be "http://www.macports.org/").