resources/RooUsage.txt
[app.Builder.js] / tools / build_debs.php
1 <?php
2
3 /**
4  * what jhdebuild does..
5  * 
6  * apt-get update
7  * ?? tarball from debian?
8  * sudo apt-get --yes build-dep libxml2
9  * apt-get source libxml2
10  * -- need to determine what version 
11  * -- 
12  * 
13  * cp -R /home/alan/checkout/gnome2/deb-src/libxml2-2.7.6.dfsg/debian libxml2-2.7.7/
14  * debchange --preserve -v 2.7.7.2010-08-28-0 --distribution UNRELEASED jhdebuild snapshot
15  * dpkg-buildpackage -rfakeroot -us -uc -D
16  *
17  * 
18  * 
19  * 
20  * dpkg -s libxml2
21  * lookfor  libxml ...whitespace.... version .... whitespace..
22  * 
23  * apt-get source libxml2=version
24  * VERSION==> 2.7.6.dfsg-1ubuntu1
25  * DIRECTORY => libxml2-2.7.6.dfsg (split on '-')
26  * 
27  * 
28  * 
29  * 
30  */
31  
32 $HOME = $_SERVER["HOME"];
33 if (!file_exists($HOME.'/.debgnome')) {
34     mkdir( $HOME.'/.debgnome' );
35 }
36 if (!file_exists($HOME.'/.debgnome-work')) {
37     mkdir( $HOME.'/.debgnome-work' );
38 }
39 $cdir =  $HOME.'/.debgnome';
40 $cfg = (array) json_decode(file_get_contents("$cdir/build.cfg.js"));
41 $state = (array) json_decode(file_get_contents("$cdir/state.cfg.js"));
42 // fix json objects..
43 foreach($state as $pkg => $data) {
44     $state[$pkg] = (array) $data;
45 }
46
47 function dpkg_s($data) {
48     global $state;
49     $dpkg = empty($data['deb.name']) ? $data['pkg'] : $data['deb.name'];
50     $pkg = $data['pkg'];
51     $out = trim(`dpkg -l $dpkg`);
52     $last = preg_split('/\s+/',array_pop(explode("\n", $out)));
53     $state[$pkg]['deb.avail'] = $last[2];
54     $state[$pkg]['deb.ver'] = array_shift(explode('-',$last[2]));
55 }
56
57 function apt_get_source($data)
58 {
59     global $state, $HOME;
60       $dpkg = empty($data['deb.name']) ? $data['pkg'] : $data['deb.name'];
61     $pkg = $data['pkg'];
62     if ($state[$pkg]['deb.cached'] ==  $state[$pkg]['deb.ver']) {
63         return;
64     }
65   
66     chdir('/tmp');
67     echo `sudo apt-get --yes build-dep $dpkg`;
68     $cmd = 'apt-get source ' . $dpkg . '=' . $state[$pkg]['deb.avail'];
69     echo $cmd."\n";
70     echo `$cmd`;
71     $cmd = 'cp -a /tmp/'. $dpkg . '-'. $state[$pkg]['deb.ver'].'/debian  '. $HOME.'/.debgnome/'.$pkg;
72     echo $cmd ."\n";
73     echo `$cmd`;
74     $state[$pkg]['deb.cached'] =  $state[$pkg]['deb.ver'];
75
76 }
77
78 $cfg = array(
79     'libxml2' =>  array('repo' => 'git://git.gnome.org/libxml2')
80 );
81           
82 foreach($cfg as $pkg => $data)
83 {
84     // checkout or pull...
85     $data = (array) $data;
86     $data['pkg'] = $pkg;
87     
88     $src = $HOME .'/.debgnome-work/'. $pkg;
89     if (file_exists($src)) {
90         chdir($src);
91         echo `git pull --rebase`;
92         
93     } else {
94         $repo = $data['repo'];
95         echo `git clone $repo $src`;
96         
97     }
98     
99     dpkg_s($data);
100     apt_get_source($data);
101     
102     $cmd = 'rm -rf ' . $src . '/debian';
103     `$cmd`;
104     $cmd = 'cp -a '.$HOME.'/.debgnome/'.$pkg . ' ' . $src . '/debian';
105     
106     
107     echo `$cmd`;
108     chdir($src);
109     echo `./autogen.sh --prefix=/usr`;
110     echo `touch COPYING`;
111     
112     $cmd = 'debchange --preserve -v ' . $state[$pkg]['deb.ver']. '-' . 
113             date('YmdH') .' --distribution UNRELEASED jhdebuild snapshot';
114     echo `$cmd`;
115     echo `dpkg-buildpackage -rfakeroot -us -uc -D`;
116     
117     
118     
119     file_put_contents("$cdir/state.cfg.js",json_encode($state));
120     
121 }
122
123
124 print_R($state);
125
126