Added support for embedded scripts into rom-o-matic.net
[people/pravin/rom-o-matic-BKO.git] / build.php
1 <?php // -*- Mode: PHP; -*-
2 include 'setup.php' ;
3
4 // If user chose "Configure" option on form
5 if ( $_GET['A'] == "Configure" ) {
6
7   // Enable  more extensive customization of options
8   include "flags.php";
9
10   exit ();
11
12 //  The next conditional  includes all other cases except "Get ROM"
13 //    particularly the explicit ($A == "Start Over") case
14
15 } elseif ( $_GET['A'] != "Get ROM" ) { 
16
17   // Note that this method of redirections discards all the configuration 
18   // flags, which is what I want to happen.
19   // ( To pass through all the flags, we could just 'include ( "index.php" );' here )
20
21   $dir = dirname ( $_SERVER['PHP_SELF'] );
22
23   if ( $dir == "." || $dir == "/" ) {
24     $dir = "";
25   }
26
27   $isHTTPS = ( isset ( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
28   $port = ( isset($_SERVER["SERVER_PORT"] ) && 
29             ( ( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || 
30               ( $isHTTPS  && $_SERVER["SERVER_PORT"] != "443" ) ) );
31
32   $port = ( $port ) ? ':' . $_SERVER["SERVER_PORT"] : '';
33
34   $dest = ( $isHTTPS ? 'https://' : 'http://' ) .
35           $_SERVER["SERVER_NAME"] . $dir . "/";
36
37  header ( "Location: $dest" );
38  
39
40   // This should normally not be seen, but just in case...
41   echo "Try this: <a href=\"$dest\">$dest</a>";
42
43   exit (); 
44
45 }
46
47 // OK, we're going to try to use whatever options have been set
48 // to build an image.
49
50 include "configinfo.php";
51
52 $flags = get_flags ();
53
54 // (debug) show flags
55 if ($DEBUG) {
56 //      echo "<p>Flags: </p>";
57 //      showflags ( $flags );
58 //      exit ();
59 }
60
61 /*
62 ** Make temporary copy of src directory
63 */
64 $dir = mktempcopy ( "$src_dir", "/tmp" );
65
66 if ($DEBUG) {
67         print "<blockquote>"."<pre>\n";
68         print "tempdir is [$dir]\n" ;
69         print "</pre>"."</blockquote>\n";
70 }
71 // $dir = "/var/romtmp/src";
72
73 /*
74 ** Create a config.h file for this build
75 */
76 write_config_file ( "$dir/config.h", "all", $flags );
77 // exec ( "/bin/touch '$dir/config.h' 2>&1", $touchtxt, $status );
78
79 // (debug) show flags
80 // echo "<p>Flags: </p>";
81 // showflags ( $flags );
82 // exit ();
83
84 $nicfile = get_nicfile();
85 $nicfilename = "gpxe-$version-$nicfile";
86 $target = "bin/$nicfile";
87
88 if ($DEBUG) {
89         print "<blockquote>"."<pre>\n";
90         print "nicfile is $nicfile, nicfilename = $nicfilename, target is $target \n";
91         
92 }
93
94 $noOfScripts = $_GET['noOfScripts'] ;
95 if ($DEBUG) {
96         print "no of scripts are  $noOfScripts \n" ; 
97 }
98
99 if ( $noOfScripts > 0 ) {
100         
101         $scriptList="";
102         for ($i = 1 ; $i <= $noOfScripts ; $i++ ) {
103                 $scriptName = "scriptNo$i" ;
104                 
105                 $bad = $_GET[$scriptName] ;
106                 $c = 0 ;
107                 $content = str_replace ("\r\n", "\n", $bad, &$c );
108                 $scriptPath = "$dir/$scriptName.gpxe";
109                 write_file ($scriptPath, $content);
110                 if ($i == 1 ) {
111                         $scriptList = "$scriptName.gpxe" ;
112                 } else {
113                         $scriptList = "$scriptList,$scriptName.gpxe" ;                  
114                 }
115                 if ($DEBUG) {
116                         print "dealing with $scriptNO script with content\n$content\n" ;
117                         print "Replaced $c in file";
118                         print "path of file is $scriptPath\n";
119                         print "Script list is $scriptList";
120                 }
121         } // end for : for each embedded script
122         $cmd = "make -C '$dir' EMBEDDED_IMAGE='$scriptList' '$target' 2>&1";
123         if ($DEBUG) {
124                 print "Make command is as follows\n";
125                 print "cmd = [$cmd]\n";
126         }
127         
128 //      Make the requested image with embedded script.  $status is set to 0 on success
129         exec ( $cmd, $maketxt, $status );
130         
131 } else {
132         $cmd = "make -C '$dir' '$target' 2>&1" ;
133         if ($DEBUG) {
134                 print "Not adding Embedded scripts" ;
135                 print "Make command is as follows\n";
136                 print "cmd = [$cmd]\n";
137         }
138         
139         //      Make the requested image.  $status is set to 0 on success
140         exec ( $cmd, $maketxt, $status );
141 }
142
143 // (debugging) take a look at the Make output
144 // deltempdir ( $dir );
145 if ($DEBUG) {
146         print "<blockquote>"."<pre>";
147         print htmlentities ( implode("\n", $maketxt ) );
148         print "</pre>"."</blockquote>";
149         print "<h2> Downloading is disabled for debugging purpose </h2>" ;
150         print "</pre>"."</blockquote>\n" ;
151         exit ();
152 }
153
154 /*
155 ** Send ROM to browser (with extreme prejudice)
156 */
157
158 if ( $status == 0 ) {
159
160   $fp = fopen("$dir/$target", "rb" );
161   if ( $fp > 0 ) {
162
163     $len = filesize ( "$dir/$target" );
164     if ( $len > 0 ) {
165
166       $buf = fread ( $fp, $len );
167       fclose ( $fp );
168       deltempdir ( $dir );
169
170       // Try to force IE to handle downloading right.
171       Header ( "Cache-control: private");
172       Header ( "Content-Type: application/x-octet-stream; " .
173              "name=$nicfilename");
174       Header ( "Content-Disposition: attachment; " .
175              "Filename=$nicfilename");
176       Header ( "Content-Location: $nicfilename");
177       Header ( "Content-Length: $len");
178
179       echo $buf;
180
181       exit ();
182     }
183   }
184 }
185
186 // Remove build directory
187 deltempdir ( $dir );
188
189 $header_title = "$HOME_URL: $nicfile Build Failed";
190 $html_title   = "$nicfile Build Failed";
191 $description  = "$nicfile ROM driver build failed";
192
193 include ( $top_inc );
194
195 ?>
196
197 Build failed.  Status = <? echo $status ?>.
198 <br><br>
199 Following is the output from <code>make</code>:
200 <br><br>
201
202 <blockquote>
203 <pre>
204 <? echo htmlentities ( implode ( "\n", $maketxt ) ); ?>
205 </pre>
206 </blockquote>
207
208 Please let us know that this happened.
209
210 <? include $bottom_inc ?>