#! @PERLBIN@
# Copyright (C) 2010 by Dirk Krause
# All rights reserved.
#
# Redistribution and use in source and binary forms,
# with or without modification, are permitted provided
# that the following conditions are met:
#
# * Redistributions of source code must retain the above
# copyright notice, this list of conditions and the
# following disclaimer.
# * Redistributions in binary form must reproduce the above
# opyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
# * Neither the name of the Dirk Krause nor the names of
# contributors may be used to endorse or promote
# products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
# ##### Start of configuration section
#
my $USER = "bin";
my $GROUP = "bin";
#
# ##### End of configuration section
sub getpwd() {
my $back = undef;
my $line;
if(open(INPUT, "pwd |")) {
while() {
$line = $_; chomp $line;
if($line =~ /\S+/o) {
$back = $line;
}
}
close(INPUT);
}
return $back;
}
my $cwd = getpwd();
my @files = (
"compver", "depend", "space", "copyright", "request",
"checkinstall", "preinstall", "postinstall",
"preremove", "postremove"
);
if(open(OUTPUT, ">prototype")) {
if( -f "pkginfo") {
system("chmod 644 pkginfo");
print OUTPUT "i pkginfo=$cwd/pkginfo\n";
foreach my $i (@files) {
if( -f "$i" ) {
system("chmod 644 $i");
print OUTPUT "i $i=$cwd/$i\n";
}
}
if(open(INPUT, "find . -type d -print |")) {
my $line;
while() {
$line = $_; chomp $line;
if("$line" ne ".") {
if($line =~ /^\.(.*)$/o) {
$line = $1;
}
print OUTPUT "d none $line 0755 bin bin\n";
}
}
close(INPUT);
}
if(open(INPUT, "find . -type f -print |")) {
my $mode = "0644";
my $line;
my $must_use_this;
while() {
$line = $_; chomp $line;
$must_use_this = 1;
if($line =~ /^\.(.*)$/o) {
$line = $1;
}
foreach my $i (@files) {
if ("$i" eq "$line") {
$must_use_this = 0;
}
if ("/$i" eq "$line") {
$must_use_this = 0;
}
}
if($must_use_this) {
if("$line" ne "prototype") {
if("$line" ne "/prototype") {
if($line =~ /\/bin\//o) {
$mode = "0755";
}
if($line =~ /\/sbin\//o) {
$mode = "0755";
}
if($line =~ /\/libexec\//o) {
$mode = "0755";
}
print OUTPUT "f none $line=$cwd$line";
print OUTPUT " $mode $USER $GROUP\n";
}
}
}
}
close(INPUT);
}
} else {
print "dkmkproto: ERROR: Missing pkginfo file!\n";
}
close(OUTPUT);
}