* [devel] perl.{req,prov} improvements
@ 2000-11-30 10:32 Mikhail Zabaluev
0 siblings, 0 replies; only message in thread
From: Mikhail Zabaluev @ 2000-11-30 10:32 UTC (permalink / raw)
To: devel
[-- Attachment #1: Type: text/plain, Size: 757 bytes --]
Доброе время суток.
Предлагаются новые доработки скриптов автоматического поиска зависимостей
для rpm. Теперь perl.req записывает в зависимости только те файлы,
которые существуют в системе или устанавливаются текущей сборкой.
Не знаю, насколько это хорошо идеологически, но позволяет избавиться от
некоторых совсем фантомных зависимостей.
Дмитрию: c find-{provides,requires} была проблема, они дают
начальную пустую строку на вход этих скриптов. Я от этого защитился, но
все же лучше формировать списки так (поскольку порядок неважен):
LIST_PERL="$f
$LIST_PERL"
--
Stay tuned,
MhZ mailto:mookid@sigent.ru
-----------
Neurotics build castles in the sky,
Psychotics live in them,
And psychiatrists collect the rent.
[-- Attachment #2: reqprov.patch --]
[-- Type: text/plain, Size: 2255 bytes --]
--- perl.req.orig Thu Nov 30 12:32:34 2000
+++ perl.req Thu Nov 30 13:01:51 2000
@@ -58,15 +58,37 @@
}
+# obtain the list of library directories. If not provided, use @INC
+
+if (exists $ENV{RPM_PERL_LIB_PATH}) {
+ @perl_inc = split(/[:,\s]+/, $ENV{RPM_PERL_LIB_PATH});
+}
+else {
+ @perl_inc = grep { m|^/| } @INC;
+}
+
+# add installation mirrors to the library search list
+
+my $buildroot = $ENV{RPM_BUILD_ROOT};
+push @perl_inc, map { "${buildroot}$_" } @perl_inc;
+
+
foreach $module (sort keys %require) {
+
+ # search for the file to be installed in the system or in this same package
+
+ my $found = 0;
+ for (@perl_inc) {
+ if (-e "$_/$module") {
+ $found = 1;
+ last;
+ }
+ }
+ next unless $found;
+
if (length($require{$module}) == 0) {
print "perl($module)\n";
} else {
-
- # I am not using rpm3.0 so I do not want spaces arround my
- # operators. Also I will need to change the processing of the
- # $RPM_* vairable when I upgrage.
-
print "perl($module) >= $require{$module}\n";
}
}
@@ -80,6 +102,8 @@
my ($file) = @_;
chomp($file);
+ return if $file eq '';
+
open(FILE, "<$file")||
die("$0: Could not open file: '$file' : $!\n");
@@ -147,11 +171,6 @@
next if $2 eq '"' && $module =~ /\$/;
- # ignore files with non-perl suffixes because they will not be detected
- # by find-provides
-
- next unless $module =~ /\.p[lmh]/;
-
$module = File::Spec->canonpath($module);
if (File::Spec->file_name_is_absolute) {
@@ -164,7 +183,7 @@
# unsure what to do with paths that lead to parent directories
- next if $module =~ /\.\.\//;
+ next if $module =~ /(^|\/)\.\.\//;
# otherwise, continue with $module set
@@ -210,7 +229,7 @@
sub package_version {
my $version = shift;
- if ($version =~ s/^v// || $version =~ /\.\d+\./) {
+ if ($version =~ s/^v// || $version =~ /\.[\d_]+\./) {
return "1:$version";
}
else {
--- perl.prov.orig Thu Nov 30 13:00:32 2000
+++ perl.prov Thu Nov 30 13:00:39 2000
@@ -124,6 +124,8 @@
my ($file) = @_;
chomp $file;
+ return if $file eq '';
+
# find the longest matching prefix among Perl library search directories
my $prefix = '';
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2000-11-30 10:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-11-30 10:32 [devel] perl.{req,prov} improvements Mikhail Zabaluev
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git