From: Ian Lynagh Date: Mon, 4 Apr 2011 16:21:36 +0000 (+0100) Subject: Remove redundant darcs-all script X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=46a963a888863eee0548c1e4e13a15f0ba46354e;hp=aaafc986f2175958bcadd4af6b3c9889bfc89009 Remove redundant darcs-all script --- diff --git a/darcs-all b/darcs-all deleted file mode 100755 index 106eb8f..0000000 --- a/darcs-all +++ /dev/null @@ -1,437 +0,0 @@ -#!/usr/bin/perl -w - -use strict; - -# Usage: -# -# ./darcs-all [-q] [-s] [-i] [-r repo] -# [--nofib] [--testsuite] [--checked-out] cmd [darcs flags] -# -# Applies the darcs command "cmd" to each repository in the tree. -# -# e.g. -# ./darcs-all -r http://darcs.haskell.org/ghc get -# To get any repos which do not exist in the local tree -# -# ./darcs-all -r ~/ghc-validate push -# To push all your repos to the ~/ghc-validate tree -# -# ./darcs-all pull -a -# To pull everything from the default repos -# -# ./darc-all push --dry-run -# To see what local patches you have relative to the main repos -# -# -------------- Flags ------------------- -# -q says to be quite, and -s to be silent. -# -# -i says to ignore darcs errors and move on to the next repository -# -# -r repo says to use repo as the location of package repositories -# -# --checked-out says that the remote repo is in checked-out layout, as -# opposed to the layout used for the main repo. By default a repo on -# the local filesystem is assumed to be checked-out, and repos accessed -# via HTTP or SSH are assumed to be in the main repo layout; use -# --checked-out to override the latter. -# -# --nofib, --testsuite also get the nofib and testsuite repos respectively -# -# The darcs get flag you are most likely to want is --complete. By -# default we pass darcs the --partial flag. -# -# ------------ Which repos to use ------------- -# darcs-all uses the following algorithm to decide which remote repos to use -# -# It always computes the remote repos from a single base, $repo_base -# How is $repo_base set? -# If you say "-r repo", then that's $repo_base -# othewise $repo_base is set thus: -# look in _darcs/prefs/defaultrepo, -# and remove the trailing 'ghc' -# -# Then darcs-all iterates over the package found in the file -# ./packages, which has entries like: -# libraries/array packages/array darcs -# or, in general -# -# -# If $repo_base looks like a local filesystem path, or if you give -# the --checked-out flag, darcs-all works on repos of form -# $repo_base/ -# otherwise darcs-all works on repos of form -# $repo_base/ -# This logic lets you say -# both darcs-all -r http://darcs.haskell.org/ghc-6.12 pull -# and darcs-all -r ../HEAD pull -# The latter is called a "checked-out tree". - -# NB: darcs-all *ignores* the defaultrepo of all repos other than the -# root one. So the remote repos must be laid out in one of the two -# formats given by and in the file 'packages'. - - -$| = 1; # autoflush stdout after each print, to avoid output after die - -my $defaultrepo; - -my $verbose = 2; -my $ignore_failure = 0; -my $want_remote_repo = 0; -my $checked_out_flag = 0; - -my %tags; - -my @packages; - -# Figure out where to get the other repositories from. -sub getrepo { - my $basedir = "."; - my $repo = $defaultrepo || `cat $basedir/_darcs/prefs/defaultrepo`; - chomp $repo; - - my $repo_base; - my $checked_out_tree; - - if ($repo =~ /^...*:/) { - # HTTP or SSH - # Above regex says "at least two chars before the :", to avoid - # catching Win32 drives ("C:\"). - $repo_base = $repo; - - # --checked-out is needed if you want to use a checked-out repo - # over SSH or HTTP - if ($checked_out_flag) { - $checked_out_tree = 1; - } else { - $checked_out_tree = 0; - } - - # Don't drop the last part of the path if specified with -r, as - # it expects repos of the form: - # - # http://darcs.haskell.org - # - # rather than - # - # http://darcs.haskell.org/ghc - # - if (!$defaultrepo) { - $repo_base =~ s#/[^/]+/?$##; - } - } - elsif ($repo =~ /^\/|\.\.\/|.:(\/|\\)/) { - # Local filesystem, either absolute or relative path - # (assumes a checked-out tree): - $repo_base = $repo; - $checked_out_tree = 1; - } - else { - die "Couldn't work out repo"; - } - - return $repo_base, $checked_out_tree; -} - -sub message { - if ($verbose >= 2) { - print "@_\n"; - } -} - -sub warning { - if ($verbose >= 1) { - print "warning: @_\n"; - } -} - -sub darcs { - message "== running darcs @_"; - system ("darcs", @_) == 0 - or $ignore_failure - or die "darcs failed: $?"; -} - -sub parsePackages { - my @repos; - my $lineNum; - - my ($repo_base, $checked_out_tree) = getrepo(); - - open IN, "< packages" or die "Can't open packages file"; - @repos = ; - close IN; - - @packages = (); - $lineNum = 0; - foreach (@repos) { - chomp; - $lineNum++; - if (/^([^# ]+) +([^ ]+) +([^ ]+) +([^ ]+) +([^ ]+)$/) { - my %line; - $line{"localpath"} = $1; - $line{"tag"} = $2; - $line{"remotepath"} = $3; - $line{"vcs"} = $4; - $line{"upstream"} = $5; - push @packages, \%line; - } - elsif (! /^(#.*)?$/) { - die "Bad content on line $lineNum of packages file: $_"; - } - } -} - -sub darcsall { - my $localpath; - my $remotepath; - my $path; - my $tag; - my @repos; - my $command = $_[0]; - my $line; - - my ($repo_base, $checked_out_tree) = getrepo(); - - for $line (@packages) { - $localpath = $$line{"localpath"}; - $tag = $$line{"tag"}; - $remotepath = $$line{"remotepath"}; - - if ($checked_out_tree) { - $path = "$repo_base/$localpath"; - } - else { - $path = "$repo_base/$remotepath"; - } - - if (-d "$localpath/_darcs") { - if ($want_remote_repo) { - if ($command =~ /^opt/) { - # Allows ./darcs-all optimize --relink - darcs (@_, "--repodir", $localpath, "--sibling=$path"); - } else { - darcs (@_, "--repodir", $localpath, $path); - } - } else { - darcs (@_, "--repodir", $localpath); - } - } - elsif ($tag eq "-") { - message "== Required repo $localpath is missing! Skipping"; - } - else { - message "== $localpath repo not present; skipping"; - } - } -} - -sub darcsget { - my $r_flags; - my $localpath; - my $remotepath; - my $path; - my $tag; - my @repos; - my $line; - - my ($repo_base, $checked_out_tree) = getrepo(); - - if (! grep /(?:--complete|--partial|--lazy)/, @_) { - warning("adding --partial, to override use --complete"); - $r_flags = [@_, "--partial"]; - } - else { - $r_flags = \@_; - } - - for $line (@packages) { - $localpath = $$line{"localpath"}; - $tag = $$line{"tag"}; - $remotepath = $$line{"remotepath"}; - - if ($checked_out_tree) { - $path = "$repo_base/$localpath"; - } - else { - $path = "$repo_base/$remotepath"; - } - - if ($tags{$tag} eq 1) { - if (-d $localpath) { - warning("$localpath already present; omitting"); - } - else { - darcs (@$r_flags, $path, $localpath); - } - } - } -} - -sub darcsupstreampull { - my $localpath; - my $upstream; - my $line; - - for $line (@packages) { - $localpath = $$line{"localpath"}; - $upstream = $$line{"upstream"}; - - if ($upstream ne "-") { - if (-d $localpath) { - darcs ("pull", @_, "--repodir", $localpath, $upstream); - } - } - } -} - -sub main { - if (! -d "compiler") { - die "error: darcs-all must be run from the top level of the ghc tree." - } - - $tags{"-"} = 1; - $tags{"dph"} = 1; - $tags{"nofib"} = 0; - $tags{"testsuite"} = 0; - $tags{"extra"} = 0; - - while ($#_ ne -1) { - my $arg = shift; - # We handle -q here as well as lower down as we need to skip over it - # if it comes before the darcs command - if ($arg eq "-q") { - $verbose = 1; - } - elsif ($arg eq "-s") { - $verbose = 0; - } - elsif ($arg eq "-r") { - $defaultrepo = shift; - } - elsif ($arg eq "-i") { - $ignore_failure = 1; - } - # --nofib tells get to also grab the nofib repo. - # It has no effect on the other commands. - elsif ($arg eq "--nofib") { - $tags{"nofib"} = 1; - } - elsif ($arg eq "--no-nofib") { - $tags{"nofib"} = 0; - } - # --testsuite tells get to also grab the testsuite repo. - # It has no effect on the other commands. - elsif ($arg eq "--testsuite") { - $tags{"testsuite"} = 1; - } - elsif ($arg eq "--no-testsuite") { - $tags{"testsuite"} = 0; - } - # --dph tells get to also grab the dph repo. - # It has no effect on the other commands. - elsif ($arg eq "--dph") { - $tags{"dph"} = 1; - } - elsif ($arg eq "--no-dph") { - $tags{"dph"} = 0; - } - # --extralibs tells get to also grab the extra repos. - # It has no effect on the other commands. - elsif ($arg eq "--extra") { - $tags{"extra"} = 1; - } - elsif ($arg eq "--no-extra") { - $tags{"extra"} = 0; - } - # Use --checked-out if the remote repos are a checked-out tree, - # rather than the master trees. - elsif ($arg eq "--checked-out") { - $checked_out_flag = 1; - } - else { - unshift @_, $arg; - if (grep /^-q$/, @_) { - $verbose = 1; - } - last; - } - } - - if ($#_ eq -1) { - die "What do you want to do?"; - } - my $command = $_[0]; - parsePackages; - if ($command eq "get") { - darcsget @_; - } - elsif ($command eq "upstreampull") { - shift; - darcsupstreampull @_; - } - else { - if ($command =~ /^(?:w|wh|wha|what|whats|whatsn|whatsne|whatsnew)$/) { - # Hack around whatsnew failing if there are no changes - $ignore_failure = 1; - } - if ($command =~ /^(pul|pus|sen|put|opt)/) { - $want_remote_repo = 1; - } - darcsall @_; - } -} - -END { - my $ec = $?; - - message "== Checking for old bytestring repo"; - if (-d "libraries/bytestring/_darcs") { - if ((system "darcs annotate --repodir libraries/bytestring --match 'hash 20080118173113-3fd76-d5b74c04372a297b585ebea4e16d524551ce5035' > /dev/null 2> /dev/null") == 0) { - print < /dev/null 2> /dev/null") == 0) { - print <