- Timestamp:
- Jul 30, 2007, 2:21:01 AM (17 years ago)
- Location:
- devel/pb
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
devel/pb/bin/pb.pl
r9 r11 20 20 use common qw (env_init); 21 21 use pb qw (defpkgdir extpkgdir version pb_init); 22 use distro qw (distro_init); 22 23 use cms; 23 24 … … 126 127 print " OK\n"; 127 128 } 129 open(D,"$ENV{'PBCONF'}/DISTROS") || die "Unable to find $ENV{'PBCONF'}/DISTROS\n"; 130 while (<D>) { 131 my $d = $_; 132 my ($dir,$ver) = split(/_/,$d); 133 chomp($ver); 134 print "Generating build files for $dir ($ver)\n"; 135 my ($ddir, $dver, $dfam, $dtype, $dsuf) = distro_init($dir,$ver); 136 #print Dumper($ddir, $dver, $dfam, $dtype, $dsuf); 137 } 138 close(D); 128 139 } 129 140 } else { -
devel/pb/lib/common.pm
r9 r11 57 57 # Check pb conf compliance 58 58 # 59 die "Project $ENV{'PBPROJ'} not ProjectBuild compliant. Please populate $ENV{'PBROOT'}/pbconf" if ( not -d "$ENV{'PBROOT'}/pbconf"); 59 $ENV{'PBCONF'} = "$ENV{'PBROOT'}/pbconf"; 60 die "Project $ENV{'PBPROJ'} not ProjectBuild compliant. Please populate $ENV{'PBCONF'}" if ( not -d "$ENV{'PBCONF'}"); 60 61 61 62 # 62 63 # Get global VERSION 63 64 # 64 open(VER, "$ENV{'PB ROOT'}/pbconf/VERSION") || die "Unable to open $ENV{'PBROOT'}/pbconf/VERSION: $?";65 open(VER, "$ENV{'PBCONF'}/VERSION") || die "Unable to open $ENV{'PBCONF'}/VERSION: $?"; 65 66 $ver = <VER>; 66 67 chomp($ver); … … 73 74 #Get global TAG 74 75 # 75 open(TAG, "$ENV{'PB ROOT'}/pbconf/TAG") || die "Unable to open $ENV{'PBROOT'}/pbconf/TAG: $?";76 open(TAG, "$ENV{'PBCONF'}/TAG") || die "Unable to open $ENV{'PBCONF'}/TAG: $?"; 76 77 $tag = <TAG>; 77 78 chomp($tag); -
devel/pb/lib/distro.pm
r2 r11 1 #!/ bin/bash1 #!/usr/bin/perl -w 2 2 # 3 # Create env depending on the distro on which we are3 # Creates common environment for distributions 4 4 # 5 5 # $Id$ 6 6 # 7 # Input parameters : $ddir (distro name) and $dver (distro version)8 # If they do not exist then deduce from current distro9 # Exports : $dfam (distro family) $suf (pkg suffix) $dtype (distro type) TOPBUILDDIR (dir to build packages)10 7 11 # 12 # Guess ddir and dver from the underlying distro 13 # 14 if [ _"$ddir" = _"" ]; then 15 if [ -e /etc/mandriva-release ]; then 16 export ddir="mandriva" 17 export dver=`awk '{print $4}' /etc/mandriva-release` 18 elif [ -e /etc/mandrake-release ]; then 19 export ddir="mandrake" 20 export dver=`awk '{print $3}' /etc/mandrake-release` 21 elif [ -e /etc/redhat-release ]; then 22 grep -q Enterprise /etc/redhat-release 23 if [ $? -eq 0 ]; then 24 export ddir="rhel" 25 export dver=`awk '{print $7}' /etc/redhat-release` 26 elif grep -q Fedora /etc/redhat-release ; then 27 export ddir="fedora" 28 grep -qi core /etc/redhat-release 29 if [ $? -eq 0 ]; then 30 export dver=`awk '{print $4}' /etc/redhat-release` 31 else 32 export dver=`awk '{print $3}' /etc/redhat-release` 33 fi 34 elif grep -q CentOS /etc/redhat-release ; then 35 export ddir="centos" 36 export dver=`awk '{print $3}' /etc/redhat-release | cut -d. -f1` 37 else 38 export ddir="redhat" 39 export dver=`awk '{print $5}' /etc/redhat-release` 40 fi 41 elif [ -e /etc/SuSE-release ]; then 42 grep -q Enterprise /etc/SuSE-release 43 if [ $? -eq 0 ]; then 44 export ddir="sles" 45 export dver=`head -1 /etc/SuSE-release | awk '{print $5}'` 46 elif grep -q openSUSE /etc/SuSE-release ; then 47 export ddir="suse" 48 export dver=`head -1 /etc/SuSE-release | awk '{print $2}'` 49 else 50 export ddir="suse" 51 export dver=`head -1 /etc/SuSE-release | awk '{print $3}'` 52 fi 53 elif [ -e /etc/slackware-version ]; then 54 export ddir="slackware" 55 export dver=`awk '{print $2}' /etc/slackware-version | cut -d. -f1-2` 56 elif [ -e /etc/gentoo-release ]; then 57 export ddir="gentoo" 58 export dver=`awk '{print $5}' /etc/gentoo-release | cut -d. -f1-2` 59 elif [ -e /etc/debian_version ]; then 60 export ddir="debian" 61 export dver=`cat /etc/debian_version` 62 # Debian assigns release names only once a release actually happens. 63 # Debian does not distinguish between testing and unstable because 64 # unstable today is what testing will be in about ten days time. So, 65 # in case we encounter "tesing/unstable", we assume unstable, i.e. sid. 66 # Note that for released versions, the numeric version will be contained 67 # in debian_version, e.g. on a sarge system, the value will be '3.1'. 68 if [ $dver = "testing/unstable" ]; then 69 export dver = "sid" 70 fi 71 if [ -e /etc/lsb-release ]; then 72 grep -qi ubuntu /etc/lsb-release 73 if [ $? -eq 0 ]; then 74 export ddir="ubuntu" 75 export dver=`cat /etc/lsb-release | grep DISTRIB_RELEASE | cut -d= -f2` 76 fi 77 fi 78 elif [ -e /etc/motd ]; then 79 head -1 /etc/motd | grep -q FreeBSD 80 if [ $? -eq 0 ]; then 81 export ddir="freebsd" 82 export dver=`head -1 /etc/motd | awk '{print $2}' /etc/motd | cut -d- -f1` 83 else 84 export ddir="unknown" 85 export dver="" 86 fi 87 else 88 export ddir="unknown" 89 export dver="" 90 fi 91 fi 8 require Exporter; 9 @ISA = qw(Exporter); 10 @EXPORT = qw(distro_init distro_get); 92 11 93 # 94 # Generate all other parameters 95 # 96 if [ $ddir = "debian" -o $ddir = "ubuntu" ]; then 97 dfam="debian" 98 dtype="deb" 99 suf=".${ddir}${dver}" 100 elif [ $ddir = "gentoo" ]; then 101 dfam="gentoo" 102 dtype="ebuild" 103 dver1=`echo ${dver} | sed "s/\.//"` 104 suf=".${ddir}${dver1}" 105 elif [ $ddir = "slackware" ]; then 106 dfam="slackware" 107 dtype="tgz" 108 suf=".${dfam}${dver}" 109 elif [ $ddir = "sles" -o $ddir = "suse" ]; then 110 dfam="suse" 111 dtype="rpm" 112 suf=".${ddir}${dver}" 113 elif [ $ddir = "fedora" -o $ddir = "redhat" -o $ddir = "rhel" -o $ddir = "centos" ]; then 114 dfam="redhat" 115 dtype="rpm" 116 dver1=`echo ${dver} | sed "s/\.//"` 117 if [ $ddir = "fedora" ]; then 118 suf=".fc${dver1}" 119 elif [ $ddir = "centos" ]; then 120 dver1=`echo ${dver} | sed "s/\.[0-9]//"` 121 suf=".centos${dver1}" 122 elif [ $ddir = "redhat" ]; then 123 suf=".rh${dver1}" 124 else 125 suf=".rhel${dver1}" 126 fi 127 elif [ $ddir = "mandrake" ]; then 128 dfam="mandriva" 129 dtype="rpm" 130 suf=".`echo $dver | sed 's/\.//'`mdk" 131 elif [ $ddir = "mandriva" ]; then 132 dfam="mandriva" 133 dtype="rpm" 134 suf=".`echo $dver | sed 's/\.//'`mdv" 135 elif [ $ddir = "freebsd" ]; then 136 dfam="freebsd" 137 dtype="port" 138 suf=".`echo $dver | sed 's/\.//'`fbsd" 139 else 140 dfam="unknown" 141 dtype="unknown" 142 suf="unknown" 143 fi 12 use strict; 144 13 145 export dfam 146 export dtype 147 export suf 14 sub distro_init { 148 15 149 # 150 # Additional exports and preparation for some distros 151 # 16 my $ddir = shift; 17 my $dver = shift; 18 my $dfam = "unknown"; 19 my $dtype = "unknown"; 20 my $dsuf = "unknown"; 152 21 153 # Default154 export TOPBUILDDIR=${TOPDIR}/../build 22 # If we don't know which distribution we're on, then guess it 23 ($ddir, $dver) = distro_get() if ((not defined $ddir) || (not defined $dver)); 155 24 156 if [ _"$dtype" = _"rpm" ]; then 157 export TOPBUILDDIR=`rpmquery --eval '%{_topdir}' 2> /dev/null` 158 export ARCH=`rpm --showrc | egrep "^build arch" | awk '{print $4}'` 159 mkdir -p ${TOPBUILDDIR}/{RPMS,SRPMS,SPECS,SOURCES,BUILD} 160 if [ $? -ne 0 ]; then 161 echo "Please ensure that you can write into ${TOPBUILDDIR}" 162 echo "Solution: setup _topdir in your ~/.rpmmacros or" 163 echo "chown the ${TOPBUILDDIR} to your uid" 164 exit -1 165 fi 166 elif [ _"$dtype" = _"deb" ]; then 167 mkdir -p ${TOPBUILDDIR} 168 elif [ _"$dtype" = _"port" ]; then 169 mkdir -p ${TOPBUILDDIR} 170 elif [ _"$dfam" = _"slackware" ]; then 171 mkdir -p ${TOPBUILDDIR}/install 172 elif [ _"$dtype" = _"ebuild" ]; then 173 mkdir -p ${TOPBUILDDIR}/portage 174 fi 25 if (($ddir =~ /debian/) || 26 ($ddir =~ /ubuntu/)) { 27 $dfam="debian"; 28 $dtype="deb"; 29 $dsuf=".$ddir$dver"; 30 } elsif ($ddir =~ /gentoo/) { 31 $dfam="gentoo"; 32 $dtype="ebuild"; 33 my $dver1 = $dver; 34 $dver1 =~ s/\.//; 35 $dsuf=".$ddir$dver1"; 36 } elsif ($ddir =~ /slackware/) { 37 $dfam="slackware"; 38 $dtype="tgz"; 39 $dsuf=".$dfam$dver"; 40 } elsif (($ddir =~ /suse/) || 41 ($ddir =~ /sles/)) { 42 $dfam="suse"; 43 $dtype="rpm"; 44 $dsuf=".$ddir$dver"; 45 } elsif (($ddir =~ /redhat/) || 46 ($ddir =~ /rhel/) || 47 ($ddir =~ /fedora/) || 48 ($ddir =~ /centos/)) { 49 $dfam="redhat"; 50 $dtype="rpm"; 51 my $dver1 = $dver; 52 $dver1 =~ s/\.//; 53 if ($ddir =~ /fedora/) { 54 $dsuf=".fc$dver1"; 55 } elsif ($ddir =~ /redhat/) { 56 $dsuf=".rh$dver1"; 57 } else { 58 $dsuf=".$ddir$dver1"; 59 } 60 } elsif (($ddir =~ /mandrake/) || 61 ($ddir =~ /mandriva/)) { 62 $dfam="mandriva"; 63 $dtype="rpm"; 64 if ($ddir =~ /mandrake/) { 65 my $dver1 = $dver; 66 $dver1 =~ s/\.//; 67 $dsuf=".mdk$dver1"; 68 } else { 69 $dsuf=".mdv$dver"; 70 } 71 } elsif ($ddir =~ /freebsd/) { 72 $dfam="freebsd"; 73 $dtype="port"; 74 my $dver1 = $dver; 75 $dver1 =~ s/\.//; 76 $dsuf=".$dfam$dver1"; 77 } else { 78 $dfam="unknown"; 79 $dtype="unknown"; 80 $dsuf="unknown"; 81 } 82 83 return($ddir, $dver, $dfam, $dtype, $dsuf); 84 } 85 86 sub distro_get { 87 } 88 1;
Note:
See TracChangeset
for help on using the changeset viewer.