4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the Revised BSD License.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 Revised BSD License for more details.
12 Copyright 2011-2016 Game Maker 2k - https://github.com/GameMaker2k
13 Copyright 2011-2016 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski
15 $FileInfo: pypkg-gen.py - Last Update: 6/1/2016 Ver. 0.2.0 RC 1 - Author: cooldude2k $
18 from __future__
import absolute_import
, division
, print_function
, unicode_literals
;
19 import re
, os
, sys
, time
, platform
, datetime
, argparse
, subprocess
;
21 __version_info__
= (0, 2, 0, "rc1");
22 if(__version_info__
[3]!=None):
23 __version__
= str(__version_info__
[0])+"."+str(__version_info__
[1])+"."+str(__version_info__
[2])+"+"+str(__version_info__
[3]);
24 if(__version_info__
[3]==None):
25 __version__
= str(__version_info__
[0])+"."+str(__version_info__
[1])+"."+str(__version_info__
[2]);
27 proname
= "pypkg-gen";
29 profullname
= proname
+" "+prover
;
31 def which_exec(execfile):
32 for path
in os
.environ
["PATH"].split(":"):
33 if os
.path
.exists(path
+ "/" + execfile):
34 return path
+ "/" + execfile;
36 getlinuxdist
= platform
.linux_distribution();
37 setdistroname
= "debian";
38 setdistrocname
= "jessie";
39 if(getlinuxdist
[0].lower()=="debian" or getlinuxdist
[0].lower()=="ubuntu" or getlinuxdist
[0].lower()=="linuxmint"):
40 setdistroname
= getlinuxdist
[0].lower();
41 setdistrocname
= getlinuxdist
[2].lower();
42 if(setdistrocname
==""):
43 lsblocatout
= which_exec("lsb_release");
44 pylsblistp
= subprocess
.Popen([lsblocatout
, "-c"], stdout
=subprocess
.PIPE
, stderr
=subprocess
.PIPE
);
45 pylsbout
, pylsberr
= pylsblistp
.communicate();
46 if(sys
.version
[0]=="3"):
47 pylsbout
= pylsbout
.decode("utf-8");
48 pylsb_esc
= re
.escape("Codename:")+'([a-zA-Z\t+\s+]+)';
49 pylsbname
= re
.findall(pylsb_esc
, pylsbout
)[0].lower();
50 setdistrocname
= pylsbname
.strip();
51 if(getlinuxdist
[0].lower()=="archlinux"):
52 setdistroname
= getlinuxdist
[0].lower();
53 setdistrocname
= None;
54 parser
= argparse
.ArgumentParser(conflict_handler
= "resolve", add_help
= True);
55 parser
.add_argument("-v", "--version", action
= "version", version
= profullname
);
56 parser
.add_argument("-s", "--source", default
= os
.path
.realpath(os
.getcwd()), help = "source dir");
57 parser
.add_argument("-d", "--distro", default
= setdistroname
, help = "enter linux distribution name");
58 parser
.add_argument("-c", "--codename", default
= setdistrocname
, help = "enter release code name");
59 parser
.add_argument("-p", "--pyver", default
= sys
.version
[0], help = "enter version of python to use");
60 getargs
= parser
.parse_args();
62 bashlocatout
= which_exec("bash");
64 getargs
.source
= os
.path
.realpath(getargs
.source
);
65 getargs
.codename
= getargs
.codename
.lower();
66 getargs
.distro
= getargs
.distro
.lower();
68 if(getargs
.pyver
=="2"):
70 if(getargs
.pyver
=="3"):
72 if(getargs
.pyver
!="2" and getargs
.pyver
!="3"):
73 if(sys
.version
[0]=="2"):
75 if(sys
.version
[0]=="3"):
78 get_pkgbuild_dir
= os
.path
.realpath(getargs
.source
+os
.path
.sep
+"pkgbuild");
79 get_pkgbuild_dist_pre_list
= [d
for d
in os
.listdir(get_pkgbuild_dir
) if os
.path
.isdir(os
.path
.join(get_pkgbuild_dir
, d
))];
80 get_pkgbuild_dist_list
= [];
81 for dists
in get_pkgbuild_dist_pre_list
:
82 tmp_pkgbuild_python
= os
.path
.realpath(get_pkgbuild_dir
+os
.path
.sep
+dists
+os
.path
.sep
+getpyver
);
83 if(os
.path
.exists(tmp_pkgbuild_python
) and os
.path
.isdir(tmp_pkgbuild_python
)):
84 get_pkgbuild_dist_list
.append(dists
);
85 if(not getargs
.distro
in get_pkgbuild_dist_list
):
86 print("Could not build for "+getargs
.distro
+" distro.");
89 if(getargs
.distro
=="debian" or getargs
.distro
=="ubuntu" or getargs
.distro
=="linuxmint"):
90 pypkgpath
= os
.path
.realpath(getargs
.source
+os
.path
.sep
+"pkgbuild"+os
.path
.sep
+getargs
.distro
+os
.path
.sep
+getpyver
+os
.path
.sep
+"pydeb-gen.sh");
91 pypkgenlistp
= subprocess
.Popen([bashlocatout
, pypkgpath
, getargs
.source
, getargs
.codename
], stdout
=subprocess
.PIPE
, stderr
=subprocess
.PIPE
);
92 pypkgenout
, pypkgenerr
= pypkgenlistp
.communicate();
93 if(sys
.version
[0]=="3"):
94 pypkgenout
= pypkgenout
.decode("utf-8");
98 if(getargs
.distro
=="archlinux"):
99 pypkgpath
= os
.path
.realpath(getargs
.source
+os
.path
.sep
+"pkgbuild"+os
.path
.sep
+getargs
.distro
+os
.path
.sep
+getpyver
+os
.path
.sep
+"pypac-gen.sh");
100 pypkgenlistp
= subprocess
.Popen([bashlocatout
, pypkgpath
, getargs
.source
, getargs
.codename
], stdout
=subprocess
.PIPE
, stderr
=subprocess
.PIPE
);
101 pypkgenout
, pypkgenerr
= pypkgenlistp
.communicate();
102 if(sys
.version
[0]=="3"):
103 pypkgenout
= pypkgenout
.decode("utf-8");