Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37420333
en ru br
Репозитории ALT
S:2.53.17.1-alt1
5.1: 1.1.18-alt2
4.1: 1.1.16-alt0.M41.1
+updates:1.1.13-alt0.M41.1
4.0: 1.1.12-alt0.M40.1
www.altlinux.org/Changes

Группа :: Сети/WWW
Пакет: seamonkey

 Главная   Изменения   Спек   Патчи   Исходники   Загрузить   Gear   Bugs and FR  Repocop 

#!/usr/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 mozilla.org code.
#
# The Initial Developer of the Original Code is Christopher Blizzard.
# Portions created by Christopher Blizzard are Copyright (C)
# Christopher Blizzard. All Rights Reserved.
#
# Contributor(s):

# This script will read one of the mozilla packages- file on unix and
# copy it to a target directory. It's for unix only and is really
# designed for use in building rpms or other packages.

use Getopt::Long;
use File::Find;

use strict;

# global vars
my $install_dir = "";
my $install_root = "";
my $package_name = "";
my $package_file = "";
my $output_file = "";
my $exclude_file = "";
my $retval;

# std return val

$retval = GetOptions('install-dir=s', \$install_dir,
'install-root=s', \$install_root,
'package=s', \$package_name,
'package-file=s', \$package_file,
'output-file=s', \$output_file,
'exclude-file=s', \$exclude_file);

# make sure that all of the values are specific on the command line
if (!$retval || !$install_dir || !$install_root || !$package_name ||
!$package_file || !$output_file) {
print_usage();
exit 1;
}

# try to open the packages file

open (PACKAGE_FILE, $package_file) || die("$0: Failed to open file $package_file for reading.");

print "chdir to $install_dir\n";
chdir($install_dir);

my @file_list;
my @exclude_list;
my @final_file_list;
my $reading_package = 0;

LINE: while (<PACKAGE_FILE>) {
s/\;.*//; # it's a comment, kill it.
s/^\s+//; # nuke leading whitespace
s/\s+$//; # nuke trailing whitespace

# it's a blank line, skip it.
if (/^$/) {
next LINE;
}

# it's a new component
if (/^\[/) {
my $this_package;
( $this_package ) = /^\[(.+)\]$/;
if ($this_package eq $package_name) {
$reading_package = 1;
}
else {
$reading_package = 0;
}
next LINE;
}

# read this line
if ($reading_package) {
# see if it's a deletion
if (/^-/) {
my $this_file;
( $this_file ) = /^-(.+)$/;
push (@exclude_list, $this_file);
}
else {
push (@file_list, $_);
}
}
}

close PACKAGE_FILE;

# check if we have an exclude file

if ($exclude_file) {
print "reading exclude file $exclude_file\n";

open (EXCLUDE_FILE, $exclude_file) || die("$0: Failed to open exclude file $exclude_file for reading.");

while (<EXCLUDE_FILE>) {
chomp;
print "Ignoring $_\n";
push (@exclude_list, $_);
}

close EXCLUDE_FILE;
}

# Expand our file list

expand_file_list(\@file_list, \@exclude_list, \@final_file_list);

print "final file list\n";
foreach (@final_file_list) {
print $_ . "\n";
}

open (OUTPUT_FILE, ">>$output_file") || die("Failed to open output file\n");
foreach (@final_file_list) {
# strip off the bin/
s/^bin\///;

if ( ! -f $_ ) {
print("Skipping $_ because it doesn't exist\n");
}
else {
print ("Adding $_\n");
print (OUTPUT_FILE $install_root . "/" . $_ . "\n");
}
}
close OUTPUT_FILE;

#print "\nexlude list\n";
#foreach (@exclude_list) {
# print $_ . "\n";
#}

# this function expands a list of files

sub expand_file_list {
my $file_list_ref = shift;
my $exclude_list_ref = shift;
my $final_file_list_ref = shift;
my $this_file;
foreach $this_file (@{$file_list_ref}) {
# strip off the bin/
$this_file =~ s/^bin\///;

# is it a wild card?
if ($this_file =~ /\*/) {
print "Wild card $this_file\n";
# expand that wild card, removing anything in the exclude
# list
my @temp_list;
printf ("Expanding $this_file\n");
@temp_list = glob($this_file);
foreach $this_file (@temp_list) {
if (!in_exclude_list($this_file, $exclude_list_ref)) {
push (@{$final_file_list_ref}, $this_file);
}
}
}
else {
if (!in_exclude_list($this_file, $exclude_list_ref)) {
push (@{$final_file_list_ref}, $this_file);
}
}
}
}

# is this file in the exlude list?

sub in_exclude_list {
my $file = shift;
my $exclude_list_ref = shift;
my $this_file;
foreach $this_file (@{$exclude_list_ref}) {
if ($file eq $this_file) {
return 1;
}
}
return 0;
}

# print out a usage message

sub print_usage {
print ("$0: --install-dir dir --install-root dir --package name --package-file file --output-file file\n");
print ("\t install-dir is the directory where the files are installed.\n");
print ("\t install-root is the directory that should prefix files in the package file.\n");
print ("\t package is the name of the package to list\n");
print ("\t package-file is the file that contains the list of packages\n");
print ("\t output-file is the file which will contain the list of files\n");
}
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin