xpra icon
Bug tracker and wiki

Ticket #2040: InstallUtils.pm

File InstallUtils.pm, 2.7 KB (added by Antoine Martin, 15 months ago)

missing perl module

Line 
1#
2# Copyright 2017 Google Inc.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17package InstallUtils;
18
19use strict;
20use warnings;
21
22
23sub ActivePidFile {
24    my $pidfile = shift;
25   
26    if (-f $pidfile) {
27        if (open(PIDFILE, $pidfile)) {
28            my $pid = <PIDFILE>;
29            chomp $pid;
30            close(PIDFILE);
31
32            my $ret = kill(0, $pid);
33            return ($ret == 1);
34        }
35    }
36
37    return 0;
38}
39
40sub GetPlatform
41{
42    if (open(LSB, '/etc/lsb-release')) {
43        while (<LSB>) {
44            return "ubuntu" if (/Ubuntu/);
45        }
46        close(LSB);
47    }
48
49    if (-f "/etc/sysconfig/grhat") {
50        return "grhat-9";
51    } else {
52        my $uname = `uname -m`;
53        chomp $uname;
54        return $uname;
55    }
56}
57
58sub LibMatchesPlatform
59{
60    my ($file, $platform) = @_;
61
62    my $wantbits = ($platform =~ /64/) ? 64 : 32;
63    my $numbits = 0;
64    open(FILE, "file $file |") || die "Unable to query file type\n";
65    while (<FILE>) {
66        if (/ELF 32-bit LSB shared object/) {
67            $numbits = 32;
68            last;
69        } elsif (/ELF 64-bit LSB shared object/) {
70            $numbits = 64;
71            last;
72        }
73    }
74    close(FILE);
75
76    return ($numbits == $wantbits);
77}
78
79
80sub systemordie
81{
82    if (system(@_) != 0) {
83        die "Failed to execute: @_\n";
84    }
85}
86
87sub InstallScriptOrDie
88{
89  my $installer;
90  if (-f "/sbin/chkconfig") {
91    $installer = "/sbin/chkconfig --add @_";
92  } else {
93    $installer = "/usr/sbin/update-rc.d @_ defaults 90 10";
94  }
95  print "Executing command: $installer";
96  systemordie($installer);
97}
98
99sub RemoveScript
100{
101  my $remover;
102  if (-f "/sbin/chkconfig") {
103    $remover = "/sbin/chkconfig --del $_ >/dev/null 2>&1";
104  } else {
105    $remover = "/usr/sbin/update-rc.d $_ remove >/dev/null 2>&1";
106  }
107  print "Executing command: $remover";
108  system($remover);
109}
110
111# Replaces all occurrences of a specified token in a file.
112# usage ReplaceTokenInFile(filename, token, value);
113sub ReplaceTokenInFile($$$) {
114   my $filename = shift @_;
115   my $varname = shift @_;
116   my $value = shift @_;
117   # Escape the string
118   $value =~ s/\//\\\//g;
119   my $searchpattern="s/$varname/$value/";
120   my $command = "sed -i '$searchpattern' $filename";
121   `$command`;
122}
123
1241;