From da375b2f4642503531309cb5692f65bbf3394a12 Mon Sep 17 00:00:00 2001 From: "zach%zachlipton.com" <> Date: Tue, 14 Jan 2003 09:09:30 +0000 Subject: Readd the changes back on the (now updated) branch :( --- Conf.pm | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++ Configure.pl | 63 ++++++++++++++++++++++++++++++ docs/newinstall_notes | 38 ++++++++++++++++++ 3 files changed, 205 insertions(+) create mode 100644 Conf.pm create mode 100644 Configure.pl create mode 100644 docs/newinstall_notes diff --git a/Conf.pm b/Conf.pm new file mode 100644 index 000000000..6936787a0 --- /dev/null +++ b/Conf.pm @@ -0,0 +1,104 @@ +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Installer. +# +# The Initial Developer of the Original Code is Zach Lipton +# Portions created by Zach Lipton are +# Copyright (C) 2002 Zach Lipton. All +# Rights Reserved. +# +# Contributor(s): Zach Lipton +# +# Alternatively, the contents of this file may be used under the +# terms of the GNU General Public License Version 2 or later (the +# "GPL"), in which case the provisions of the GPL are applicable +# instead of those above. If you wish to allow use of your +# version of this file only under the terms of the GPL and not to +# allow others to use your version of this file under the MPL, +# indicate your decision by deleting the provisions above and +# replace them with the notice and other provisions required by +# the GPL. If you do not delete the provisions above, a recipient +# may use your version of this file under either the MPL or the +# GPL. +# + +package Conf; +no warnings; # evil beings... + +use Exporter; +@ISA = qw(Exporter); +@EXPORT = qw(ask holduntilkey output setConf getConf getParam setParam); + +# this is very important. We set a default controller which is responsible +# for getting data from the user and returning it back to us. Our default +# is rather simple, but if a packager wishes to use a Tk front-end or customize +# the look and feel of the installation process to match with their system, they +# can override our controller by making a new one and setting +# $Conf::controller = "foo" in a custom Configure.pl +# This is really intended for debian-style configuration systems +$controller = "Conf::DefaultController"; + + +unless (eval("use $controller")) { + die "ack, something went wrong when I tried to use controller $controller $@"; +} + +eval("use Conf::Supplies::Config"); # do this in an eval because it may not exist yet +# this module will store defaults for the installation + +# ASK: +# call me like this: +# ask('questionname','question?','default answer'); +sub ask { + my ($name, $question, $default) = @_; + if ($Conf::Supplies::Config::answers{$name}) { # if it's in Config.pm, use it + $default = $Conf::Supplies::Config::answers{$name}; + } + _ask($name,$question,$default); + if ($answer eq "") { $answer = $default; } # handle the default + $main::c{$name} = $answer; +} + +#HOLDUNTILKEY +# allows you to pause until the user presses a key +sub holduntilkey { + _holduntilkey(); +} + +sub output { + my ($output, $loud) = @_; + _output($output,$loud); +} + +sub setConf($$) { + my ($name, $value) = @_; + $main::c{$name} = $value; # and set it +} + + +sub getConf($) { + my $name = @_; + return $main::c{$name}; # return the value +} + +# ask for the param name +sub getParam($) { + my $param = @_; + return $params{$param}; # return the param +} + +# set a param +sub setParam($$) { + my ($name, $value) = @_; + $params{$name} = $value; # and set it +} + +1; diff --git a/Configure.pl b/Configure.pl new file mode 100644 index 000000000..2897fb950 --- /dev/null +++ b/Configure.pl @@ -0,0 +1,63 @@ +#!/usr/bonsaitools/bin/perl -w + +# The contents of this file are subject to the Mozilla Public +# License Version 1.1 (the "License"); you may not use this file +# except in compliance with the License. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS +# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or +# implied. See the License for the specific language governing +# rights and limitations under the License. +# +# The Original Code is the Bugzilla Installer. +# +# The Initial Developer of the Original Code is Zach Lipton +# Portions created by Zach Lipton are +# Copyright (C) 2002 Zach Lipton. All +# Rights Reserved. +# +# Contributor(s): Zach Lipton +# +# Alternatively, the contents of this file may be used under the +# terms of the GNU General Public License Version 2 or later (the +# "GPL"), in which case the provisions of the GPL are applicable +# instead of those above. If you wish to allow use of your +# version of this file only under the terms of the GPL and not to +# allow others to use your version of this file under the MPL, +# indicate your decision by deleting the provisions above and +# replace them with the notice and other provisions required by +# the GPL. If you do not delete the provisions above, a recipient +# may use your version of this file under either the MPL or the +# GPL. +# +eval("use Conf::Supplies::Config"); # do this in an eval so if + # it doesn't exist (new installation) + # there won't be an error. +use File::Spec; +use Conf; + +$args = join(' ',@ARGV); + +# Insert lines in this space to run .cm files like: +# runconf('Conf/Foo.cm'); +# runconf() will handle the path mapping for XP purposes +# NOT SURE IF WE REALLY NEED TO ADJUST THE PATH +runconf('Conf/Begin.cm'); + +if ($args =~ /--perl\=([\/A-Za-z0-9]+) /) { # they passed us a perl arg + setConf('perl',$1); # set the path to perl and move on... +} else { + # they haven't run configure.pl before so run PerlCheck now... + runconf('Conf/PerlCheck.cm'); +} + +runconf('Conf/UpgradeCheck.cm'); + + +sub runconf { + my ($path) = @_; + my @pathlist = split('/',$path); + require File::Spec->catfile(@pathlist); +} + diff --git a/docs/newinstall_notes b/docs/newinstall_notes new file mode 100644 index 000000000..fffa68468 --- /dev/null +++ b/docs/newinstall_notes @@ -0,0 +1,38 @@ +installtypes file format: + +typename:description filetype|location (one blank line to end one +installtype and begin the next) + +You can specify a unix path in location, or 'userdir' to indicate that +the user should be prompted and asked which directory they want to +install into. Bugzilla will attempt to provide them with a reasonible +default. + +Most packagers will not want to change very many installlayout settings. +It is important to ensure that 'res' has the appearence of being in the +same directory as cgi and req to the http server, though this can be +accomplished through careful configuration of your httpd.conf config +files. req and cgi should almost always be in the same directory +however. tst can be set to null for systems where the tests are unwanted +or unnessicary (they will be run upon installation and upgrading as part +of the 'make test' process. tem can be set to any path wanted, the +template search/include path in Bugzilla will be set automatically. mod +may also be set anywhere, use lib lines will be added to Bugzilla +scripts. + +The doc setting is "magical" in that a third paramater is used to set +which types of documentation is installed. This may be set to 'all' and +all types of documents will be copied, or to any one of the supported +documentation types (with a corresponding directory in bugzilla/docs/) + +Filetypes: res: resources (images, html, js, etc) cgi: cgi files mod: +modules req: something that must be with the other cgi scripts for +bugzilla to work null: not needed in the dist, discard tst: tests + +You MUST add any new files to the filemappings file or it will not be +copied into the installed dist. The tests will check for this. + +Do _not_ include any documentation or templates in the filemappings +list, the makefile has special rules written in to accomidate these. + + -- cgit v1.2.3-24-g4f1b