mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Prettified the build system by getting rid of those "gen.py" files and hardcoded "python3" calls. Also, ported Qt's block.c to Python3, which hadn't been done yet.
This commit is contained in:
parent
8d56f4c33b
commit
e2f240ebc9
46
build.py
46
build.py
@ -13,6 +13,7 @@ import os.path as op
|
|||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
from setuptools import setup
|
from setuptools import setup
|
||||||
|
from distutils.extension import Extension
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from hscommon import helpgen
|
from hscommon import helpgen
|
||||||
@ -65,14 +66,47 @@ def build_cocoa(edition, dev, help_destpath):
|
|||||||
os.chdir('..')
|
os.chdir('..')
|
||||||
|
|
||||||
def build_qt(edition, dev):
|
def build_qt(edition, dev):
|
||||||
|
print("Building Qt stuff")
|
||||||
build_all_qt_ui(op.join('qtlib', 'ui'))
|
build_all_qt_ui(op.join('qtlib', 'ui'))
|
||||||
build_all_qt_ui(op.join('qt', 'base'))
|
build_all_qt_ui(op.join('qt', 'base'))
|
||||||
build_all_qt_ui(op.join('qt', edition))
|
build_all_qt_ui(op.join('qt', edition))
|
||||||
print_and_do("pyrcc4 -py3 {0} > {1}".format(op.join('qt', 'base', 'dg.qrc'), op.join('qt', 'base', 'dg_rc.py')))
|
print_and_do("pyrcc4 -py3 {0} > {1}".format(op.join('qt', 'base', 'dg.qrc'), op.join('qt', 'base', 'dg_rc.py')))
|
||||||
if edition == 'pe':
|
|
||||||
os.chdir(op.join('qt', edition))
|
def build_pe_modules(ui):
|
||||||
os.system('python3 gen.py')
|
def move(src, dst):
|
||||||
os.chdir(op.join('..', '..'))
|
if not op.exists(src):
|
||||||
|
return
|
||||||
|
if op.exists(dst):
|
||||||
|
os.remove(dst)
|
||||||
|
print('Moving %s --> %s' % (src, dst))
|
||||||
|
os.rename(src, dst)
|
||||||
|
|
||||||
|
print("Building PE Modules")
|
||||||
|
exts = [
|
||||||
|
Extension("_block", [op.join('core_pe', 'modules', 'block.c'), op.join('core_pe', 'modules', 'common.c')]),
|
||||||
|
Extension("_cache", [op.join('core_pe', 'modules', 'cache.c'), op.join('core_pe', 'modules', 'common.c')]),
|
||||||
|
]
|
||||||
|
if ui == 'qt':
|
||||||
|
exts.append(Extension("_block_qt", [op.join('qt', 'pe', 'modules', 'block.c')]))
|
||||||
|
elif ui == 'cocoa':
|
||||||
|
exts.append(Extension(
|
||||||
|
"_block_osx", [op.join('core_pe', 'modules', 'block_osx.m'), op.join('core_pe', 'modules', 'common.c')],
|
||||||
|
extra_link_args=[
|
||||||
|
"-framework", "CoreFoundation",
|
||||||
|
"-framework", "Foundation",
|
||||||
|
"-framework", "ApplicationServices",]
|
||||||
|
))
|
||||||
|
setup(
|
||||||
|
script_args = ['build_ext', '--inplace'],
|
||||||
|
ext_modules = exts,
|
||||||
|
)
|
||||||
|
move('_block.so', op.join('core_pe', '_block.so'))
|
||||||
|
move('_block.pyd', op.join('core_pe', '_block.pyd'))
|
||||||
|
move('_block_osx.so', op.join('core_pe', '_block_osx.so'))
|
||||||
|
move('_cache.so', op.join('core_pe', '_cache.so'))
|
||||||
|
move('_cache.pyd', op.join('core_pe', '_cache.pyd'))
|
||||||
|
move('_block_qt.so', op.join('qt', 'pe', '_block.so'))
|
||||||
|
move('_block_qt.pyd', op.join('qt', 'pe', '_block.pyd'))
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
conf = yaml.load(open('conf.yaml'))
|
conf = yaml.load(open('conf.yaml'))
|
||||||
@ -93,9 +127,7 @@ def main():
|
|||||||
helpgen.gen(help_basepath, help_destpath, profile=profile)
|
helpgen.gen(help_basepath, help_destpath, profile=profile)
|
||||||
print("Building dupeGuru")
|
print("Building dupeGuru")
|
||||||
if edition == 'pe':
|
if edition == 'pe':
|
||||||
os.chdir('core_pe')
|
build_pe_modules(ui)
|
||||||
os.system('python3 gen.py')
|
|
||||||
os.chdir('..')
|
|
||||||
if ui == 'cocoa':
|
if ui == 'cocoa':
|
||||||
build_cocoa(edition, dev, help_destpath)
|
build_cocoa(edition, dev, help_destpath)
|
||||||
elif ui == 'qt':
|
elif ui == 'qt':
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# Created By: Virgil Dupras
|
|
||||||
# Created On: 2009-05-26
|
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
|
||||||
#
|
|
||||||
# This software is licensed under the "HS" License as described in the "LICENSE" file,
|
|
||||||
# which should be included with this package. The terms are also available at
|
|
||||||
# http://www.hardcoded.net/licenses/hs_license
|
|
||||||
|
|
||||||
import os
|
|
||||||
import os.path as op
|
|
||||||
|
|
||||||
def move(src, dst):
|
|
||||||
if not op.exists(src):
|
|
||||||
return
|
|
||||||
if op.exists(dst):
|
|
||||||
os.remove(dst)
|
|
||||||
print('Moving %s --> %s' % (src, dst))
|
|
||||||
os.rename(src, dst)
|
|
||||||
|
|
||||||
os.chdir('modules')
|
|
||||||
os.system('python3 setup.py build_ext --inplace')
|
|
||||||
os.chdir('..')
|
|
||||||
move(op.join('modules', '_block.so'), '_block.so')
|
|
||||||
move(op.join('modules', '_block.pyd'), '_block.pyd')
|
|
||||||
move(op.join('modules', '_block_osx.so'), '_block_osx.so')
|
|
||||||
move(op.join('modules', '_cache.so'), '_cache.so')
|
|
||||||
move(op.join('modules', '_cache.pyd'), '_cache.pyd')
|
|
@ -1,30 +0,0 @@
|
|||||||
# Created By: Virgil Dupras
|
|
||||||
# Created On: 2009-04-23
|
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
|
||||||
#
|
|
||||||
# This software is licensed under the "HS" License as described in the "LICENSE" file,
|
|
||||||
# which should be included with this package. The terms are also available at
|
|
||||||
# http://www.hardcoded.net/licenses/hs_license
|
|
||||||
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from distutils.core import setup
|
|
||||||
from distutils.extension import Extension
|
|
||||||
|
|
||||||
exts = []
|
|
||||||
|
|
||||||
exts.append(Extension("_block", ["block.c", "common.c"]))
|
|
||||||
exts.append(Extension("_cache", ["cache.c", "common.c"]))
|
|
||||||
|
|
||||||
if sys.platform == 'darwin':
|
|
||||||
exts.append(Extension(
|
|
||||||
"_block_osx", ["block_osx.m", "common.c"],
|
|
||||||
extra_link_args=[
|
|
||||||
"-framework", "CoreFoundation",
|
|
||||||
"-framework", "Foundation",
|
|
||||||
"-framework", "ApplicationServices",
|
|
||||||
]))
|
|
||||||
|
|
||||||
setup(
|
|
||||||
ext_modules = exts,
|
|
||||||
)
|
|
25
qt/pe/gen.py
25
qt/pe/gen.py
@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# Created By: Virgil Dupras
|
|
||||||
# Created On: 2009-05-22
|
|
||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
|
||||||
#
|
|
||||||
# This software is licensed under the "HS" License as described in the "LICENSE" file,
|
|
||||||
# which should be included with this package. The terms are also available at
|
|
||||||
# http://www.hardcoded.net/licenses/hs_license
|
|
||||||
|
|
||||||
import os
|
|
||||||
import os.path as op
|
|
||||||
|
|
||||||
def move(src, dst):
|
|
||||||
if not op.exists(src):
|
|
||||||
return
|
|
||||||
if op.exists(dst):
|
|
||||||
os.remove(dst)
|
|
||||||
print('Moving %s --> %s' % (src, dst))
|
|
||||||
os.rename(src, dst)
|
|
||||||
|
|
||||||
os.chdir('modules')
|
|
||||||
os.system('python setup.py build_ext --inplace')
|
|
||||||
os.chdir('..')
|
|
||||||
move(op.join('modules', '_block.so'), op.join('.', '_block.so'))
|
|
||||||
move(op.join('modules', '_block.pyd'), op.join('.', '_block.pyd'))
|
|
@ -40,14 +40,14 @@ getblock(PyObject *image, int width, int height)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
pi = PyObject_CallMethod(image, "bytesPerLine", NULL);
|
pi = PyObject_CallMethod(image, "bytesPerLine", NULL);
|
||||||
bytes_per_line = PyInt_AsSsize_t(pi);
|
bytes_per_line = PyLong_AsLong(pi);
|
||||||
Py_DECREF(pi);
|
Py_DECREF(pi);
|
||||||
|
|
||||||
sipptr = PyObject_CallMethod(image, "bits", NULL);
|
sipptr = PyObject_CallMethod(image, "bits", NULL);
|
||||||
/* int(sipptr) returns the address of the pointer */
|
/* int(sipptr) returns the address of the pointer */
|
||||||
pi = PyObject_CallMethod(sipptr, "__int__", NULL);
|
pi = PyObject_CallMethod(sipptr, "__int__", NULL);
|
||||||
Py_DECREF(sipptr);
|
Py_DECREF(sipptr);
|
||||||
s = (char *)PyInt_AsSsize_t(pi);
|
s = (char *)PyLong_AsLong(pi);
|
||||||
Py_DECREF(pi);
|
Py_DECREF(pi);
|
||||||
/* Qt aligns all its lines on 32bit, which means that if the number of bytes per
|
/* Qt aligns all its lines on 32bit, which means that if the number of bytes per
|
||||||
* line for image is not divisible by 4, there's going to be crap inserted in "s"
|
* line for image is not divisible by 4, there's going to be crap inserted in "s"
|
||||||
@ -74,9 +74,9 @@ getblock(PyObject *image, int width, int height)
|
|||||||
blue /= pixel_count;
|
blue /= pixel_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
pred = PyInt_FromSsize_t(red);
|
pred = PyLong_FromLong(red);
|
||||||
pgreen = PyInt_FromSsize_t(green);
|
pgreen = PyLong_FromLong(green);
|
||||||
pblue = PyInt_FromSsize_t(blue);
|
pblue = PyLong_FromLong(blue);
|
||||||
result = PyTuple_Pack(3, pred, pgreen, pblue);
|
result = PyTuple_Pack(3, pred, pgreen, pblue);
|
||||||
Py_DECREF(pred);
|
Py_DECREF(pred);
|
||||||
Py_DECREF(pgreen);
|
Py_DECREF(pgreen);
|
||||||
@ -107,10 +107,10 @@ block_getblocks(PyObject *self, PyObject *args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pi = PyObject_CallMethod(image, "width", NULL);
|
pi = PyObject_CallMethod(image, "width", NULL);
|
||||||
width = PyInt_AsSsize_t(pi);
|
width = PyLong_AsLong(pi);
|
||||||
Py_DECREF(pi);
|
Py_DECREF(pi);
|
||||||
pi = PyObject_CallMethod(image, "height", NULL);
|
pi = PyObject_CallMethod(image, "height", NULL);
|
||||||
height = PyInt_AsSsize_t(pi);
|
height = PyLong_AsLong(pi);
|
||||||
Py_DECREF(pi);
|
Py_DECREF(pi);
|
||||||
|
|
||||||
if (!(width && height)) {
|
if (!(width && height)) {
|
||||||
@ -157,11 +157,24 @@ static PyMethodDef BlockMethods[] = {
|
|||||||
{NULL, NULL, 0, NULL} /* Sentinel */
|
{NULL, NULL, 0, NULL} /* Sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
PyMODINIT_FUNC
|
static struct PyModuleDef BlockDef = {
|
||||||
init_block(void)
|
PyModuleDef_HEAD_INIT,
|
||||||
|
"_block",
|
||||||
|
NULL,
|
||||||
|
-1,
|
||||||
|
BlockMethods,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
PyObject *
|
||||||
|
PyInit__block(void)
|
||||||
{
|
{
|
||||||
PyObject *m = Py_InitModule("_block", BlockMethods);
|
PyObject *m = PyModule_Create(&BlockDef);
|
||||||
if (m == NULL) {
|
if (m == NULL) {
|
||||||
return;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
return m;
|
||||||
}
|
}
|
@ -1,12 +0,0 @@
|
|||||||
# Copyright 2010 Hardcoded Software (http://www.hardcoded.net)
|
|
||||||
#
|
|
||||||
# This software is licensed under the "HS" License as described in the "LICENSE" file,
|
|
||||||
# which should be included with this package. The terms are also available at
|
|
||||||
# http://www.hardcoded.net/licenses/hs_license
|
|
||||||
|
|
||||||
from distutils.core import setup
|
|
||||||
from distutils.extension import Extension
|
|
||||||
|
|
||||||
setup(
|
|
||||||
ext_modules = [Extension("_block", ["block.c"])]
|
|
||||||
)
|
|
2
run.py
2
run.py
@ -34,7 +34,7 @@ def main():
|
|||||||
add_to_pythonpath('qt')
|
add_to_pythonpath('qt')
|
||||||
add_to_pythonpath(op.join('qt', 'base'))
|
add_to_pythonpath(op.join('qt', 'base'))
|
||||||
os.chdir(op.join('qt', edition))
|
os.chdir(op.join('qt', edition))
|
||||||
os.system('python3 start.py')
|
os.system('{0} start.py'.format(sys.executable))
|
||||||
os.chdir('..')
|
os.chdir('..')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user