Update of /cvsroot/fink/fink
In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv17358
Modified Files:
ChangeLog INSTALL INSTALL.html MANIFEST Makefile
Added Files:
bootstrap
Removed Files:
bootstrap.pl bootstrap.sh
Log Message:
finish update
Index: INSTALL.html
===================================================================
RCS file: /cvsroot/fink/fink/INSTALL.html,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- INSTALL.html 15 Jun 2006 17:21:52 -0000 1.27
+++ INSTALL.html 15 Jun 2006 19:13:00 -0000 1.28
@@ -52,14 +52,14 @@
</p>
<pre>[frodo:~] testuser% <b>tar xzf fink-0.8.1-full.tar.gz</b>
[frodo:~] testuser% <b>cd fink-0.8.1-full</b>
-[frodo:~/fink-0.8.1-full] testuser% <b>./bootstrap.sh /sw</b>
+[frodo:~/fink-0.8.1-full] testuser% <b>./bootstrap /sw</b>
Welcome to Fink.
...
Choose a method: [1] <b>1</b>
-sudo /Users/testuser/fink-0.8.1-full/bootstrap.pl .sudo '/sw'
+sudo /Users/testuser/fink-0.8.1-full/bootstrap .sudo '/sw'
Password:<b>(your normal password here)</b>
...
OK, I'll ask you some questions and update the configuration file in
@@ -264,14 +264,11 @@
</p>
<p>
The actual installation is performed by the perl script
-bootstrap.pl.
-It is accompanied by a small shell script, bootstrap.sh, which checks
-some basic requirements and then hands over control to the perl
-script.
+bootstrap.
So, to start installation, go to the fink-0.8.1-full directory and run
this command:
</p>
-<pre>./bootstrap.sh</pre>
+<pre>./bootstrap</pre>
<p>
After running some tests, the script will ask you what method should
be used to gain root privileges.
--- bootstrap.sh DELETED ---
Index: ChangeLog
===================================================================
RCS file: /cvsroot/fink/fink/ChangeLog,v
retrieving revision 1.421
retrieving revision 1.422
diff -u -d -r1.421 -r1.422
--- ChangeLog 30 May 2006 07:10:54 -0000 1.421
+++ ChangeLog 15 Jun 2006 19:13:00 -0000 1.422
@@ -1,3 +1,7 @@
+2006-06-15 Chris Zubrzycki <[EMAIL PROTECTED]>
+
+ * bootstrap.pl, bootstrap.sh: Merged both into bootstrap, Updated
references.
+
2006-05-28 Dave Morrison <[EMAIL PROTECTED]>
* bootstrap.pl: Don't query the user about 10.4 vs. 10.4-transitional;
--- NEW FILE: bootstrap ---
#!/usr/bin/perl -w
# -*- mode: Perl; tab-width: 4; -*-
#
# bootstrap - perl script to install and bootstrap a Fink
# installation
from source
#
# Fink - a package manager that downloads source and installs it
# Copyright (c) 2001 Christoph Pfisterer
# Copyright (c) 2001-2006 The Fink Package Manager Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA.
#
$| = 1;
use 5.008_001; # perl 5.8.1 or newer required
use strict;
use FindBin;
my ($answer);
my ($script, $cmd);
### check the perl version
# acceptable perl versions: "$] value" => "human-readable version string"
my %ok_perl_versions = (
"5.008001" => "5.8.1",
"5.008002" => "5.8.2",
"5.008006" => "5.8.6"
);
if (exists $ok_perl_versions{"$]"}) {
print "Found perl version $].\n";
} else {
die "\nSorry, your /usr/bin/perl is version $], but Fink can only use" . (
join "", map {
( $ok_perl_versions{$_} =~ /0$/ ? "\n " : ", " ) .
"$ok_perl_versions{$_} ($_)"
} sort keys %ok_perl_versions
)."\n\n";
}
### patch FinkVersion.pm.in ###
my ($homebase, $file);
$homebase = $FindBin::RealBin;
chdir $homebase;
my $output = "$FindBin::RealBin/perlmod/Fink/FinkVersion.pm";
my $outputhandle = IO::Handle->new();
my $input = "$output" . ".in";
my $inputhandle = IO::Handle->new();
chomp(my $version = `cat VERSION`);
open($inputhandle, "<$input") or die ("cannot open $input for reading");
open($outputhandle, ">$output") or die ("cannot open $output for writing");
while (defined ($_=<$inputhandle>))
{
s/[EMAIL PROTECTED]@/$version/g;
print $outputhandle "$_";
}
close $inputhandle;
close $outputhandle;
### check if we are unharmed ###
print "Checking package...";
use lib "$FindBin::RealBin/perlmod";
require Fink::Bootstrap;
import Fink::Bootstrap qw(&check_host &check_files);
require Fink::FinkVersion;
import Fink::FinkVersion qw(&fink_version &default_binary_version);
my $res = check_files();
if( $res == 1 ) {
exit 1;
}
printf " looks good (fink-%s).\n", fink_version();
### load some modules
require Fink::Services;
import Fink::Services qw(&read_config &execute &get_arch);
require Fink::CLI;
import Fink::CLI qw(&print_breaking &prompt &prompt_boolean &prompt_selection);
import Fink::Bootstrap qw(&create_tarball &fink_packagefiles ©_description
&get_version_revision);
### check if we like this system
print "Checking system...";
my ($host, $distribution);
$host = `update/config.guess`;
chomp($host);
if ($host =~ /^\s*$/) {
print " ERROR: Can't determine host type.\n";
exit 1;
}
print " $host\n";
$distribution = check_host($host,1);
if ($distribution eq "unknown") {
exit(1);
}
print "Distribution $distribution\n";
# temporary code to instruct users until we retire the 10.4-transitional tree
if (($> == 0) and ($distribution ne "10.3") and ($host =~ /^powerpc/)) {
print("\n");
&print_breaking("On powerpc hardware, you can bootstrap into the
10.4-transitional tree rather than the 10.4 tree by setting the environment
variable FINK_NOTRANS to \"false\" while bootstrapping. To use 10.4, set it to
\"true\" or don't set it at all.");
print("\n");
&print_breaking("If you wish to interrupt the current bootstrap in
order to change an environment variable, use control-C.");
print("\n");
sleep(10);
}
# end of temporary code
### get version
my ($packageversion, $packagerevision) =
&get_version_revision(".",$distribution);
### choose root method
my ($rootmethod);
if ($> != 0) {
my $sel_intro = "Fink must be installed and run with superuser (root) ".
"privileges. Fink can automatically try to become ".
"root when it's run from a user account. Since you're ".
"currently running this script as a normal user, the ".
"method you choose will also be used immediately for ".
"this script. Avaliable methods:";
$answer = &prompt_selection("Choose a method:",
intro => $sel_intro,
default => [ value => "sudo" ],
choices => [
"Use sudo" => "sudo",
"Use su" => "su",
"None, fink must be run as root" =>
"none" ] );
$cmd = "'$homebase/bootstrap' .$answer";
if ($#ARGV >= 0) {
$cmd .= " '".join("' '", @ARGV)."'";
}
if ($answer eq "sudo") {
$cmd = "/usr/bin/sudo $cmd";
} elsif ($answer eq "su") {
$cmd = "$cmd | /usr/bin/su";
} else {
print "ERROR: Can't continue as non-root.\n";
exit 1;
}
print "\n";
exit &execute($cmd, quiet=>1);
} else {
if (defined $ARGV[0] and substr($ARGV[0],0,1) eq ".") {
$rootmethod = shift;
$rootmethod = substr($rootmethod,1);
} else {
print "\n";
&print_breaking("Fink must be installed and run with superuser
(root) ".
"privileges. Fink can
automatically try to become ".
"root when it's run from a user
account. ".
"Avaliable methods:");
$answer = &prompt_selection("Choose a method:",
default => [ value => "sudo" ],
choices => [
"Use sudo" => "sudo",
"Use su" => "su",
"None, fink must be run as
root" => "none" ] );
$rootmethod = $answer;
}
}
umask oct("022");
### run some more system tests
my ($response);
print "Checking cc...";
if (-x "/usr/bin/cc") {
print " looks good.\n";
} else {
print " not found.\n";
&print_breaking("ERROR: There is no C compiler on your system. ".
"Make sure that the Developer Tools are
installed.");
exit 1;
}
print "Checking make...";
if (-x "/usr/bin/make") {
$response = `/usr/bin/make --version 2>&1`;
if ($response =~ /GNU Make/si) {
print " looks good.\n";
} else {
print " is not GNU make.\n";
&print_breaking("ERROR: /usr/bin/make exists, but is not the ".
"GNU version. You must correct
this situation before ".
"installing Fink. /usr/bin/make
should be a symlink ".
"pointing to
/usr/bin/gnumake.");
exit 1;
}
} else {
print " not found.\n";
&print_breaking("ERROR: There is no make utility on your system. ".
"Make sure that the Developer Tools are
installed.");
exit 1;
}
print "Checking head...";
if (-x "/usr/bin/head") {
$response = `/usr/bin/head -1 /dev/null 2>&1`;
if ($response =~ /Unknown option/si) {
print " is broken.\n";
&print_breaking("ERROR: /usr/bin/head seems to be corrupted. ".
"This can happen if you
manually installed Perl libwww. ".
"You'll have to restore
/usr/bin/head from another ".
"machine or from installation
media.");
exit 1;
} else {
print " looks good.\n";
}
} else {
print " not found.\n";
&print_breaking("ERROR: There is no head utility on your system. ".
"Make sure that the Developer Tools are
installed.");
exit 1;
}
### setup the correct packages directory
# (no longer needed: we just use $distribution directly...)
#
#if (-e "packages") {
# rename "packages", "packages-old";
# unlink "packages";
#}
#symlink "$distribution", "packages" or die "Cannot create symlink";
### choose installation path
# Check if a location has installed software
sub has_installed_software {
my $loc = shift;
return (-d "$loc/bin" or -d "$loc/lib" or -d "$loc/include");
}
my $retrying = 0;
my $nonstandard_warning = 0;
my $installto = shift || "";
OPT_BASEPATH: { ### install path redo block
# ask if the path wasn't passed as a parameter
if ($retrying || not $installto) {
my $default = '/sw';
while (1) {
last if !has_installed_software($default);
$default =~ /^(.*?)(\d*)$/;
$default = $1 . (($2 || 1) + 1);
}
print "\n";
if ($default ne '/sw' && !$nonstandard_warning) {
print "It looks like you already have Fink installed in /sw,
trying "
. "$default instead.\n\n"
. "WARNING: This is a non-standard location.\n\n";
$nonstandard_warning = 1;
}
my $prompt = "Please choose the path where Fink should be installed.
Note "
. "that you will be able to use the binary distribution only if
you "
. "choose '/sw'.";
$installto =
&prompt($prompt, default => $default);
}
$retrying = 1;
print "\n";
# catch formal errors
if ($installto eq "") {
print "ERROR: Install path is empty.\n";
redo OPT_BASEPATH;
}
if (substr($installto,0,1) ne "/") {
print "ERROR: Install path '$installto' doesn't start with a slash.\n";
redo OPT_BASEPATH;
}
if ($installto =~ /\s/) {
print "ERROR: Install path '$installto' contains whitespace.\n";
redo OPT_BASEPATH;
}
# remove any trailing slash(es)
$installto =~ s,^(/.*?)/*$,$1,;
# check well-known path (NB: these are regexes!)
foreach my $forbidden (
qw(/ /etc /usr /var /bin /sbin /lib /tmp /dev
/usr/lib /usr/include /usr/bin /usr/sbin /usr/share
/usr/libexec /usr/X11R6
/root /private /cores /boot
/debian /debian/.*)
) {
if ($installto =~ /^$forbidden$/i) {
print "ERROR: Refusing to install into '$installto'.\n";
redo OPT_BASEPATH;
}
}
if ($installto =~ /^\/usr\/local$/i) {
$answer =
&prompt_boolean("Installing Fink in /usr/local is not
recommended. ".
"It may conflict with third
party software also ".
"installed there. It will be
more difficult to get ".
"rid of Fink when something
breaks. Are you sure ".
"you want to install to
/usr/local?", default => 0);
if ($answer) {
&print_breaking("You have been warned. Think twice before
reporting ".
"problems as a bug.");
} else {
redo OPT_BASEPATH;
}
} elsif (-d $installto) {
# check existing contents
if (has_installed_software $installto) {
&print_breaking("ERROR: '$installto' exists and contains
installed ".
"software. Refusing to install
there.");
redo OPT_BASEPATH;
} else {
&print_breaking("WARNING: '$installto' already exists. If
bootstrapping ".
"fails, try removing the
directory altogether and ".
"re-run bootstrap.");
}
} else {
&print_breaking("OK, installing into '$installto'.");
}
print "\n";
}
### create directories
print "Creating directories...\n";
my ($dir, @dirlist);
if (not -d $installto) {
if (&execute("/bin/mkdir -p -m755 $installto")) {
print "ERROR: Can't create directory '$installto'.\n";
exit 1;
}
}
my $arch = get_arch();
@dirlist = qw(etc etc/alternatives etc/apt src fink fink/debs var var/lib
var/lib/fink);
push @dirlist, "fink/$distribution", "fink/$distribution/stable",
"fink/$distribution/local";
foreach $dir (qw(stable/main stable/crypto local/main)) {
push @dirlist, "fink/$distribution/$dir",
"fink/$distribution/$dir/finkinfo",
"fink/$distribution/$dir/binary-darwin-$arch";
}
foreach $dir (@dirlist) {
if (not -d "$installto/$dir") {
if (&execute("/bin/mkdir -m755 $installto/$dir")) {
print "ERROR: Can't create directory
'$installto/$dir'.\n";
exit 1;
}
}
}
unlink "$installto/fink/dists";
symlink "$distribution", "$installto/fink/dists" or die "ERROR: Can't create
symlink $installto/fink/dists";
### create fink tarball for bootstrap
my $packagefiles = &fink_packagefiles();
my $result = &create_tarball($installto, "fink", $packageversion,
$packagefiles);
if ($result == 1 ) {
exit 1;
}
### copy package info needed for bootstrap
$script = "/bin/mkdir -p $installto/fink/dists/stable/main/finkinfo/base\n";
$script .= "/bin/cp $distribution/*.info $distribution/*.patch
$installto/fink/dists/stable/main/finkinfo/base/\n";
$result = ©_description($script,$installto, "fink", $packageversion,
$packagerevision, "stable/main/finkinfo/base");
if ($result == 1 ) {
exit 1;
}
### load the Fink modules
require Fink::Config;
require Fink::Engine;
require Fink::Configure;
require Fink::Bootstrap;
### setup initial configuration
print "Creating initial configuration...\n";
my ($configpath, $config, $engine);
$configpath = "$installto/etc/fink.conf";
open(CONFIG, ">$configpath") or die "can't create configuration: $!";
print CONFIG <<"EOF";
# Fink configuration, initially created by bootstrap
Basepath: $installto
RootMethod: $rootmethod
Trees: local/main stable/main stable/crypto
Distribution: $distribution
EOF
close(CONFIG) or die "can't write configuration: $!";
$config = &read_config($configpath);
# override path to data files (update, mirror)
no warnings 'once';
$Fink::Config::libpath = $homebase;
use warnings 'once';
$engine = Fink::Engine->new_with_config($config);
### interactive configuration
Fink::Configure::configure();
### bootstrap
Fink::Bootstrap::bootstrap();
### remove dpkg-bootstrap.info, to avoid later confusion
&execute("/bin/rm -f
$installto/fink/dists/stable/main/finkinfo/base/dpkg-bootstrap.info");
### copy included package info tree if present
my $showversion = "";
if ($packageversion !~ /cvs/) {
$showversion = "-$packageversion";
}
my $endmsg = "Internal error.";
chdir $homebase;
my $dbv = default_binary_version($distribution);
if (-d "pkginfo") {
if (&execute("cd pkginfo && ./inject.pl $installto -quiet")) {
# inject failed
$endmsg = <<"EOF";
Copying the package description tree failed. This is no big harm;
your Fink installation should work nonetheless.
You can add the package descriptions at a later time if you want to
compile packages yourself.
You can get them
EOF
if (defined $dbv) {
$endmsg .= "by installing the dists-$distribution-$dbv.tar.gz
tarball, or";
}
$endmsg .= " by running the command 'fink selfupdate'.";
} else {
# inject worked
$endmsg = <<"EOF";
You should now have a working Fink installation in '$installto'.
EOF
}
} else {
# this was not the 'full' tarball
$endmsg = <<"EOF";
You should now have a working Fink installation in '$installto'.
You still need package descriptions if you want to compile packages yourself.
You can get them
EOF
if (defined $dbv) {
$endmsg .= "by installing the dists-$distribution-$dbv.tar.gz
tarball, or";
}
$endmsg .= " by running the command 'fink selfupdate'.";
}
### create Packages.gz files for apt
# set PATH so we find dpkg-scanpackages
$ENV{PATH} = "$installto/sbin:$installto/bin:".$ENV{PATH};
Fink::Engine::cmd_scanpackages();
### the final words...
$endmsg =~ s/\s+/ /gs;
$endmsg =~ s/ $//;
print "\n";
&print_breaking($endmsg);
print "\n";
&print_breaking(
"Run '. $installto/bin/init.sh' to set up this terminal session ".
"environment to use Fink. To make the software installed by Fink ".
"available in all of your future terminal shells, add ".
"'. $installto/bin/init.sh' to the init script '.profile' or ".
"'.bash_profile' in your home directory. The program ".
"$installto/bin/pathsetup.sh can help with this. Enjoy."
);
print "\n";
### eof
exit 0;
# vim: ts=4 sw=4 noet
Index: Makefile
===================================================================
RCS file: /cvsroot/fink/fink/Makefile,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- Makefile 24 Mar 2006 16:41:31 -0000 1.30
+++ Makefile 15 Jun 2006 19:13:00 -0000 1.31
@@ -18,7 +18,7 @@
@cvs commit
bootstrap: test
- @sh bootstrap.sh $(PREFIX)
+ @sh bootstrap $(PREFIX)
install:
./inject.pl $(PREFIX)
Index: MANIFEST
===================================================================
RCS file: /cvsroot/fink/fink/MANIFEST,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- MANIFEST 24 Mar 2006 19:29:25 -0000 1.2
+++ MANIFEST 15 Jun 2006 19:13:00 -0000 1.3
@@ -16,8 +16,7 @@
STYLE
TODO
TODO.shlibs
-bootstrap.pl
-bootstrap.sh
+bootstrap
dpkg-checkall.sh
fink.in
fink.8.in
Index: INSTALL
===================================================================
RCS file: /cvsroot/fink/fink/INSTALL,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- INSTALL 15 Jun 2006 17:21:52 -0000 1.23
+++ INSTALL 15 Jun 2006 19:13:00 -0000 1.24
@@ -40,14 +40,14 @@
[frodo:~] testuser% tar_xzf_fink-0.8.1-full.tar.gz
[frodo:~] testuser% cd_fink-0.8.1-full
- [frodo:~/fink-0.8.1-full] testuser% ./bootstrap.sh_/sw
+ [frodo:~/fink-0.8.1-full] testuser% ./bootstrap /sw
Welcome to Fink.
...
Choose a method: [1] 1
- sudo /Users/testuser/fink-0.8.1-full/bootstrap.pl .sudo '/sw'
+ sudo /Users/testuser/fink-0.8.1-full/bootstrap .sudo '/sw'
Password:(your_normal_password_here)
...
OK, I'll ask you some questions and update the configuration file in
@@ -218,10 +218,9 @@
You now have a directory named fink-0.8.1-full. Change to it with "cd
fink-0.8.1-full" .
-The actual installation is performed by the perl script bootstrap.pl. It is
-accompanied by a small shell script, bootstrap.sh, which checks some basic
-requirements and then hands over control to the perl script. So, to start
-installation, go to the fink-0.8.1-full directory and run this command:
+The actual installation is performed by the perl script bootstrap. So, to
+start the installation, go to the fink-0.8.1-full directory and run this
+command:
./bootstrap.sh
--- bootstrap.pl DELETED ---
_______________________________________________
Fink-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fink-commits