Yet another small bugfix to pypkgbuild.
[PyMotherless.git] / pkgbuild / archlinux / python2 / pypac-gen.py
blob3beb84839e08001ed29e8090012e4dcc51750952
1 #!/usr/bin/env python2
3 '''
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: pypac-gen.py - Last Update: 6/1/2016 Ver. 0.2.0 RC 1 - Author: cooldude2k $
16 '''
18 from __future__ import absolute_import, division, print_function, unicode_literals;
19 import re, os, sys, time, datetime, argparse, hashlib, subprocess, json;
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 = "pypac-gen";
28 prover = __version__;
29 profullname = proname+" "+prover;
31 parser = argparse.ArgumentParser(conflict_handler = "resolve", add_help = True);
32 parser.add_argument("-v", "--version", action = "version", version = profullname);
33 parser.add_argument("-s", "--source", default = os.path.realpath(os.getcwd()), help = "source dir");
34 parser.add_argument("-g", "--getsource", action = "store_true", help = "get source dir");
35 parser.add_argument("-p", "--getparent", action = "store_true", help = "get parent dir");
36 parser.add_argument("-t", "--gettarname", action = "store_true", help = "get tar name");
37 parser.add_argument("-d", "--getdirname", action = "store_true", help = "get dir name");
38 getargs = parser.parse_args();
39 getargs.source = os.path.realpath(getargs.source);
40 pkgsetuppy = os.path.realpath(getargs.source+os.path.sep+"setup.py");
41 pyexecpath = os.path.realpath(sys.executable);
42 if(not os.path.exists(getargs.source) or not os.path.isdir(getargs.source)):
43 raise Exception("Could not find directory.");
44 if(not os.path.exists(pkgsetuppy) or not os.path.isfile(pkgsetuppy)):
45 raise Exception("Could not find setup.py in directory.");
47 pypkgenlistp = subprocess.Popen([pyexecpath, pkgsetuppy, "getversioninfo"], stdout=subprocess.PIPE, stderr=subprocess.PIPE);
48 pypkgenout, pypkgenerr = pypkgenlistp.communicate();
49 if(sys.version[0]=="3"):
50 pypkgenout = pypkgenout.decode('utf-8');
51 pymodule = json.loads(pypkgenout);
52 setuppy_verinfo = pymodule['versionlist'];
53 setuppy_author = pymodule['author'];
54 setuppy_authoremail = pymodule['authoremail'];
55 setuppy_maintainer = pymodule['maintainer'];
56 setuppy_maintaineremail = pymodule['maintaineremail'];
57 setuppy_description = pymodule['description'];
58 setuppy_license = pymodule['license'];
59 setuppy_keywords = pymodule['keywords'];
60 setuppy_url = pymodule['url'];
61 setuppy_downloadurl = pymodule['downloadurl'];
62 setuppy_longdescription = pymodule['longdescription'];
63 setuppy_platforms = pymodule['platforms'];
65 if(sys.version[0]=="2"):
66 pkgsource = "py2motherless";
67 if(sys.version[0]=="3"):
68 pkgsource = "py3motherless";
69 pkgupstreamname = "PyMotherless";
70 pkgveralt = str(setuppy_verinfo[0])+"."+str(setuppy_verinfo[1])+"."+str(setuppy_verinfo[2]);
71 pkgveraltrel = str(setuppy_verinfo[4]);
72 pkgver = str(pkgveralt)+"-rc"+str(setuppy_verinfo[4]);
73 pkgurgency = "urgency=low";
74 pkgauthorname = setuppy_author;
75 pkgauthoremail = setuppy_authoremail;
76 pkgauthoremailalt = setuppy_authoremail.replace("@", "[at]").replace(".", "[dot]");
77 pkgauthor = pkgauthorname+" <"+pkgauthoremail+">";
78 pkgauthoralt = pkgauthorname+" <"+pkgauthoremailalt+">";
79 pkgmaintainername = setuppy_maintainer;
80 pkgmaintaineremail = setuppy_maintaineremail;
81 pkgmaintaineremailalt = setuppy_maintaineremail.replace("@", "[at]").replace(".", "[dot]");
82 pkgmaintainer = pkgmaintainername+" <"+pkgmaintaineremail+">";
83 pkgmaintaineralt = pkgmaintainername+" <"+pkgmaintaineremailalt+">";
84 pkggiturl = "https://github.com/GameMaker2k/PyMotherless.git";
85 pkghomepage = setuppy_url;
86 pkgsection = "python";
87 pkgpriority = "optional";
88 if(sys.version[0]=="2"):
89 pkgbuilddepends = "'python2'";
90 if(sys.version[0]=="3"):
91 pkgbuilddepends = "'python'";
92 pkgstandardsversion = "3.9.5";
93 if(sys.version[0]=="2"):
94 pkgpackage = "python2-pymotherless";
95 pkgoldname = "python2-motherless";
96 if(sys.version[0]=="3"):
97 pkgpackage = "python-pymotherless";
98 pkgoldname = "python-motherless";
99 pkgarchitecture = "'any' 'i686' 'x86_64'";
100 if(sys.version[0]=="2"):
101 pkgdepends = "'python2-setuptools'";
102 if(sys.version[0]=="3"):
103 pkgdepends = "'python-setuptools'";
104 pkgdescription = setuppy_description+"\n "+setuppy_longdescription;
105 pkgtzstr = time.strftime("%a, %d %b %Y %H:%M:%S %z");
107 if(getargs.getsource==True):
108 print(getargs.source);
109 sys.exit();
110 if(getargs.getparent==True):
111 print(os.path.realpath(os.path.dirname(getargs.source)));
112 sys.exit();
113 if(getargs.getdirname==True):
114 print(pkgsource+"_"+pkgveralt+".orig");
115 sys.exit();
116 if(getargs.gettarname==True):
117 print(pkgsource+"_"+pkgveralt+".orig.tar.gz");
118 sys.exit();
120 print("generating arch linux package build directory");
122 pacpkg_pkgbuild_dir = os.path.realpath(getargs.source+os.path.sep+pkgsource);
123 print("creating directory "+pacpkg_pkgbuild_dir);
124 if(not os.path.exists(pacpkg_pkgbuild_dir)):
125 os.makedirs(pacpkg_pkgbuild_dir);
126 os.chmod(pacpkg_pkgbuild_dir, int("0755", 8));
128 gzparentdir = os.path.realpath(os.path.dirname(getargs.source));
129 filetargz = open(os.path.realpath(gzparentdir+os.path.sep+pkgsource+"_"+pkgveralt+".orig.tar.gz"), "rb");
130 filetargzmd5 = hashlib.md5(filetargz.read()).hexdigest();
131 filetargz.seek(0);
132 filetargzsha1 = hashlib.sha1(filetargz.read()).hexdigest();
133 filetargz.seek(0);
134 filetargzsha224 = hashlib.sha224(filetargz.read()).hexdigest();
135 filetargz.seek(0);
136 filetargzsha256 = hashlib.sha256(filetargz.read()).hexdigest();
137 filetargz.seek(0);
138 filetargzsha384 = hashlib.sha384(filetargz.read()).hexdigest();
139 filetargz.seek(0);
140 filetargzsha512 = hashlib.sha512(filetargz.read()).hexdigest();
141 filetargz.close();
143 pacpkg_pkgbuild_file = os.path.realpath(pacpkg_pkgbuild_dir+os.path.sep+"PKGBUILD");
144 print("generating file "+pacpkg_pkgbuild_file);
145 if(sys.version[0]=="2"):
146 pacpkg_string_temp = "# Maintainer: "+pkgmaintaineralt+"\n";
147 pacpkg_string_temp += "# This file was automatically generated by "+profullname+" at\n";
148 pacpkg_string_temp += "# "+pkgtzstr+"\n\n";
149 pacpkg_string_temp += "pkgname="+pkgpackage+"\n";
150 pacpkg_string_temp += "pkgver="+pkgveralt+"\n";
151 pacpkg_string_temp += "pkgrel="+pkgveraltrel+"\n";
152 pacpkg_string_temp += "pkgdesc='"+setuppy_description+"'\n";
153 pacpkg_string_temp += "url='"+setuppy_url+"'\n";
154 pacpkg_string_temp += "arch=("+pkgarchitecture+")\n";
155 pacpkg_string_temp += "license=('"+setuppy_license+"')\n";
156 pacpkg_string_temp += "groups=()\n";
157 pacpkg_string_temp += "depends=("+pkgbuilddepends+")\n";
158 pacpkg_string_temp += "optdepends=()\n";
159 pacpkg_string_temp += "makedepends=("+pkgdepends+")\n";
160 pacpkg_string_temp += "conflicts=()\n";
161 pacpkg_string_temp += "replaces=('"+pkgoldname+"')\n";
162 pacpkg_string_temp += "backup=()\n";
163 pacpkg_string_temp += "options=(!strip !emptydirs)\n";
164 pacpkg_string_temp += "install=''\n";
165 pacpkg_string_temp += "source=('."+os.path.sep+pkgsource+"_"+pkgveralt+".orig.tar.gz')\n";
166 pacpkg_string_temp += "md5sums=('"+filetargzmd5+"')\n";
167 pacpkg_string_temp += "sha1sums=('"+filetargzsha1+"')\n";
168 pacpkg_string_temp += "sha224sums=('"+filetargzsha224+"')\n";
169 pacpkg_string_temp += "sha256sums=('"+filetargzsha256+"')\n";
170 pacpkg_string_temp += "sha384sums=('"+filetargzsha384+"')\n";
171 pacpkg_string_temp += "sha512sums=('"+filetargzsha512+"')\n\n";
172 pacpkg_string_temp += "build() {\n";
173 pacpkg_string_temp += " cd \"${srcdir}/"+pkgsource+"_${pkgver}.orig\"\n";
174 pacpkg_string_temp += " python2 ./setup.py build\n";
175 pacpkg_string_temp += "}\n\n";
176 pacpkg_string_temp += "package() {\n";
177 pacpkg_string_temp += " cd \"${srcdir}/"+pkgsource+"_${pkgver}.orig\"\n";
178 pacpkg_string_temp += " python2 ./setup.py install --root=\"${pkgdir}\" --optimize=1\n";
179 pacpkg_string_temp += "}\n\n";
180 pacpkg_string_temp += "# vim:set ts=2 sw=2 et:\n";
181 if(sys.version[0]=="3"):
182 pacpkg_string_temp = "# Maintainer: "+pkgmaintaineralt+"\n";
183 pacpkg_string_temp += "# This file was automatically generated by "+profullname+" at\n";
184 pacpkg_string_temp += "# "+pkgtzstr+"\n\n";
185 pacpkg_string_temp += "pkgname="+pkgpackage+"\n";
186 pacpkg_string_temp += "pkgver="+pkgveralt+"\n";
187 pacpkg_string_temp += "pkgrel="+pkgveraltrel+"\n";
188 pacpkg_string_temp += "pkgdesc='"+setuppy_description+"'\n";
189 pacpkg_string_temp += "url='"+setuppy_url+"'\n";
190 pacpkg_string_temp += "arch=("+pkgarchitecture+")\n";
191 pacpkg_string_temp += "license=('"+setuppy_license+"')\n";
192 pacpkg_string_temp += "groups=()\n";
193 pacpkg_string_temp += "depends=("+pkgbuilddepends+")\n";
194 pacpkg_string_temp += "optdepends=()\n";
195 pacpkg_string_temp += "makedepends=("+pkgdepends+")\n";
196 pacpkg_string_temp += "conflicts=()\n";
197 pacpkg_string_temp += "replaces=('"+pkgoldname+"')\n";
198 pacpkg_string_temp += "backup=()\n";
199 pacpkg_string_temp += "options=(!strip !emptydirs)\n";
200 pacpkg_string_temp += "install=''\n";
201 pacpkg_string_temp += "source=('."+os.path.sep+pkgsource+"_"+pkgveralt+".orig.tar.gz')\n";
202 pacpkg_string_temp += "md5sums=('"+filetargzmd5+"')\n";
203 pacpkg_string_temp += "sha1sums=('"+filetargzsha1+"')\n";
204 pacpkg_string_temp += "sha224sums=('"+filetargzsha224+"')\n";
205 pacpkg_string_temp += "sha256sums=('"+filetargzsha256+"')\n";
206 pacpkg_string_temp += "sha384sums=('"+filetargzsha384+"')\n";
207 pacpkg_string_temp += "sha512sums=('"+filetargzsha512+"')\n\n";
208 pacpkg_string_temp += "build() {\n";
209 pacpkg_string_temp += " cd \"${srcdir}/"+pkgsource+"_${pkgver}.orig\"\n";
210 pacpkg_string_temp += " python3 ./setup.py build\n";
211 pacpkg_string_temp += "}\n\n";
212 pacpkg_string_temp += "package() {\n";
213 pacpkg_string_temp += " cd \"${srcdir}/"+pkgsource+"_${pkgver}.orig\"\n";
214 pacpkg_string_temp += " python3 ./setup.py install --root=\"${pkgdir}\" --optimize=1\n";
215 pacpkg_string_temp += "}\n\n";
216 pacpkg_string_temp += "# vim:set ts=2 sw=2 et:\n";
217 pacpkg_file_temp = open(pacpkg_pkgbuild_file, "w");
218 pacpkg_file_temp.write(pacpkg_string_temp);
219 pacpkg_file_temp.close();
220 os.chmod(pacpkg_pkgbuild_file, int("0755", 8));