Commit Graph

133 Commits

Author SHA1 Message Date
Matthias Koefferlein b2b5e5ad55 Modifications to enable building of Qt-less canvas in setup.py 2022-05-12 01:53:16 +02:00
Matthias Koefferlein 86cee4118b Updated copyright for 2022 for remaining files. 2022-01-07 22:22:31 +01:00
Matthias Koefferlein 12fd26663d Merge branch 'qt6' 2022-01-06 21:48:02 +01:00
Matthias Koefferlein 10456516db Updated copyright to 2022, preparations for 0.27.6 (was delayed due to code signing certificate issues) 2022-01-04 21:20:04 +01:00
Matthias Koefferlein 9aed8529f8 Build needs C++11 2021-12-11 16:37:05 +01:00
Matthias Koefferlein eecda3222b Fixed pymod_tests 2021-12-11 15:17:16 +01:00
Matthias Koefferlein 0aca56b1c6 Fixed pymod tests 2021-12-10 01:23:54 +01:00
Matthias Koefferlein 3ef28c8a9d WIP: fixed some string extractors 2021-12-04 23:57:24 +01:00
Matthias Koefferlein 82909001c4 Build fixes with pymod 2021-12-03 07:28:09 +01:00
Matthias Koefferlein a4d2e7891c WIP 2021-11-24 23:59:36 +01:00
Matthias Koefferlein ca15d9ec9d WIP 2021-10-18 00:12:46 +02:00
Matthias Koefferlein 1285868546 Skip private-only tests without private data access 2021-05-01 21:36:52 +02:00
Matthias Koefferlein 687059525c Fine-grained Qt module selection for Qt binding and disabling of view_25d plugin without OpenGL 2021-03-02 23:28:35 +01:00
Matthias Koefferlein 2a9564856b Fixed Qt-binding less builds 2021-02-28 23:31:06 +01:00
Matthias Koefferlein 33ae3b0239 Added a build system option to enable/disable uitools support as some distributions do not support that 2021-02-27 18:03:37 +01:00
Matthias Koefferlein 9350b33bcb Squashed commit of the following:
commit 2a8a2d228d
Author: Matthias Koefferlein <matthias@koefferlein.de>
Date:   Fri Feb 26 23:54:08 2021 +0100

    One more fix.

commit 8c4d76505c
Author: Matthias Koefferlein <matthias@koefferlein.de>
Date:   Fri Feb 26 23:03:07 2021 +0100

    More patches for uitools-less build for CentOS 8

commit 2ac28292b8
Author: Matthias Koefferlein <matthias@koefferlein.de>
Date:   Fri Feb 26 22:52:27 2021 +0100

    First steps for fixing build on CentOS 8 without uitools
2021-02-26 23:59:23 +01:00
Matthias Köfferlein b968f2b47f
#730: providing a new Qt module named QtUiTools for QUiLoader class s… (#735)
* #730: providing a new Qt module named QtUiTools for QUiLoader class support.

* Fixed a compile error on Mac

* Added QtUiTools to some more places

* Fixed a linker issue in the QtUiTools Python lib

* On occasion fixed a infinite recursion problem in the debugger

The recursion happened because by mistake I instantiated a
QApplication inside an in-application Python script. This
crashed the debugger due to infinite recursion. This is not
a real use case but to prevent similar issues, a recursion
sentinel was added.

* Removed QCoreApplication#notify from script bindings

Reasoning: "notify" made standalone scripts using QApplication and
QUiLoader virtually impossible.

Problem description:
- When a QApplication object is instantiated, e.g. in Python, the Qt binding
  will install reimplementation hooks as the object may be dynamically
  extended.
- A notify is virtual this means the *every* "notify" call in the application
  is routed through the interpreter.
- For one thing this will slow down the application
- But as "notify" is called a zillion times this has more than this side effect.
- Specifically "notify" is called from within the QWidget constructor to
  indicate a new widget. Then, if a QDialog for example is instatiated, it's
  base class constructor will call "notify" when the object isn't ready yet.
- This has another severe side effect: as the object isn't ready yet, it gets
  registered in the Python space with the wrong class and QDialog is not visible
  as such.

To mitigate these problems, the most efficient solution is to disable "notify"
in general. There is hardly any use case in a script environment (in C++,
apart from hacking the only reasonable use case is exception handling, but
this does not apply to scripts). For providing the call functionality of
"notify" you should better use "postEvent" or "sendEvent" anyway.

So farewell QCoreApplication.notify ...

* Fixed python test for QtUiTools module

* Fixed UiTools test on Qt4 - QUiLoader needs an application object

Co-authored-by: Kazunari Sekigawa <kazunari.sekigawa@gmail.com>
2021-02-25 21:29:21 +01:00
Matthias Koefferlein 245bf93429 Some build fixes to enable basic compilation on CentOS6 2021-01-24 17:37:46 +00:00
Matthias Koefferlein 7d4310d343 Updated copyright to 2021 2021-01-05 22:57:48 +01:00
Matthias Koefferlein 1a30fdf4b7 Exceptions must not be strings in Python 2020-04-25 23:25:53 +02:00
Matthias Koefferlein b8c82c4f8b Updated copyright notice to 2020 2020-01-05 00:59:43 +01:00
Matthias Koefferlein 61a61a2a5a WIP: added lib module to qmake-based python module build
This works:

  import klayout.db
  import klayout.lib
  print(klayout.db.Library.library_names())   # says ["Basic"]

Also works:

  from klayout import *

Does not work:

  # import klayout.lib needs to be done before the libraries
  # are used initially
  import klayout.db
  print(klayout.db.Library.library_names())   # says []
  import klayout.lib
  print(klayout.db.Library.library_names())   # says []
2019-04-03 01:07:22 +02:00
Matthias Koefferlein b0d7f5f7f5 Updated copyright. 2019-01-08 00:58:45 +01:00
Thomas Ferreira de Lima 6b37e67de6
fixing pya module. adding tests 2018-12-20 16:10:55 -05:00
Matthias Koefferlein a36cf6a2e5 Force relink of pymod/tl to trigger correct build for MSVC 2018-11-18 22:57:17 +01:00
Matthias Koefferlein 7ade9cf079 Added standard Python tests to pymod too
This will include the normal Python tests also
in pymod, hence aligning the test base for pymod
and pya.

This feature requires the pya compatibility module.
2018-11-18 22:42:13 +01:00
Matthias Koefferlein 00a124ce64 Added pya compatibility module 2018-10-23 23:43:52 +02:00
Matthias Koefferlein 863144603c Fixed MSVC builds ... 2018-10-22 23:48:15 +02:00
Matthias Koefferlein 58239650aa Fixed pymod initialization for Python 2
Python 2 is a bit more picky with respect to
the correct name of the module. If passing "db"
to a module called dbcore, it will exit with
a SystemError.
2018-10-22 23:28:55 +02:00
Matthias Koefferlein a25db86046 Fixed pymod.pri for Linux builds. 2018-10-22 21:25:53 +02:00
Matthias Koefferlein b80ce12c12 Some refactoring to fix qmake-based pymod builds
- Unify structure of Python module sources so the pymod.pri can be used for all modules
- switch to tlcore, dbcore and rdbcore + distutils_src wrapper modules
2018-10-22 20:53:49 +02:00
Thomas Ferreira de Lima c1dbb023ae
fixing editable install 'python setup.py develop' 2018-10-19 19:09:20 -04:00
Thomas Ferreira de Lima c3ab951c8a
passing python unit tests 2018-10-19 19:02:38 -04:00
Thomas Ferreira de Lima 87a49007ff
Fixing distutils_src folder structure due to setuptools bug
Also: adding PCellDeclarationHelper to klayout.db
2018-10-19 18:53:37 -04:00
Thomas Ferreira de Lima d3fa4465f6
Renaming core modules to klayout.dbcore, klayout.rdbcore and klayout.tlcore 2018-10-19 17:55:56 -04:00
Matthias Koefferlein 222b98fd70 Some fixes for the testsuite
With these fixes, unit tests pass with MacOS
(set DYLD_LIBRARY_PATH!)

1.) MacOS takes popen vs. pclose seriously
By using fopen we basically spoil the system and other popen
won't work.

2.) For system integrity, MacOS does not propagate DYLD_LIBRARY_PATH
to child processes such as sh. This has to be done explictly.

3.) Search the klayout binary in the right path (klayout.app/...)

4.) Reset KLAYOUT_HOME for less intervention by installed macros
2018-10-09 13:57:26 -07:00
Matthias Köfferlein fe26785203 Fixed install target for MSVC - copy needs to use Windows paths. 2018-09-13 22:31:45 +02:00
Matthias Koefferlein ad03533a7b OASIS tests made robust against hash implementation
The text writer was made "normalizing": it will introduce
a certain element order (string sorting). This way, OASIS
files can be compared against golden data without
changes in the order due to different implementation of
hash containers.
2018-09-10 01:16:49 +02:00
Matthias Köfferlein 5be469af90 Support "klayout-bits" for building on MSVC 2018-09-06 00:23:10 +02:00
Matthias Köfferlein 356a468d66 A couple of changes to make MSVC work - not done yet. 2018-09-02 00:40:35 +02:00
Matthias Köfferlein af50c0f0c3 Many warnings fixed for MSVC 2018-08-29 01:46:18 +02:00
Matthias Köfferlein 860014e3ae MSVC builds for the first time - still a lot of patches required
Some suspicious compiler warnings remain.
2018-08-28 23:19:58 +02:00
Matthias Koefferlein 9dcfa140c3 Added __init__.py file to Python package. 2018-07-15 19:33:44 +00:00
Matthias Koefferlein 5351922440 Enabled minimum build configuration
Minimum build configuration is without Qt, Ruby, curl and expat.
Only Python is required.

This commit also provides a functional (through polling) Qt-less HTTP
implementation through libcurl if enabled.
2018-07-15 19:59:45 +02:00
klayoutmatthias 6858190a20 Fixed Windows build and tests
* tl::is_same_file works with directories now too
* Unit tests added for this
* bridge_mod sample produces the proper DLL now
2018-07-15 18:03:42 +02:00
Matthias Koefferlein fc9783432b Bugfix: db_plugin modules were not loaded for python modules
* Added unit test for this
* Provided an option for easier debugging such issues:
  Setting env var KLAYOUT_VERBOSITY will enable debug levels on Python
  modules (and all other binaries). Plugin loading issues can
  be debugged by setting KLAYOUT_VERBOSITY=21.
2018-07-15 14:14:14 +02:00
Matthias Koefferlein 937fa96245 Some bug fixes
* Case folding table fixed: lowercase "i without dot" overlaps "i"
* Fixed build of bridge sample in non-Qt case
2018-07-13 08:03:00 +02:00
klayoutmatthias 616c2942e1 WIP: made pymod functional on Windows (without Qt). Tests pass. 2018-07-10 23:34:30 +02:00
Matthias Koefferlein d2c890ab6d WIP: fixed unit tests for Qt-less build. 2018-07-10 01:17:35 +02:00
Matthias Koefferlein ad7a9836b0 Using pipes instead of QProcess for pymod tests, enable pipes on Windows (needs testing) 2018-07-04 20:26:34 +02:00
Matthias Koefferlein ab06ce3445 Made the code build without Qt. 2018-07-03 01:08:02 +02:00
Matthias Koefferlein a82adbbe83 Massive reduction of Qt dependencies, but also massive refactoring. 2018-07-03 00:51:36 +02:00
Matthias Koefferlein 94a4c0df27 WIP: added force-link to rdb Python module so the rdb library is always linked 2018-06-22 00:02:27 +02:00
Matthias Koefferlein c2341ff213 WIP: speedup for CI development, fixed deb package (python needs to be part of dependency), fixed gcc build with Python3 2018-06-21 22:18:17 +02:00
Matthias Koefferlein 0d6da0e49d WIP: fixed unit test fails with python module import tests - what a hack ... 2018-06-20 23:19:26 +02:00
Matthias Koefferlein 087740d326 WIP: pass sub-process output through tl::Log in unit tests for proper XML escaping into JUnit files. 2018-06-20 22:25:03 +02:00
Matthias Koefferlein 4dc0065028 WIP: fixed installation target for pymod __init__.py file for older Qt versions. 2018-06-20 13:37:41 +02:00
Matthias Koefferlein e447c175d8 WIP: fixed pymod install targets for some Qt versions 2018-06-20 08:25:13 +02:00
Matthias Koefferlein 33a9782f77 Proper installation target for klayout Python module. 2018-06-19 01:07:53 +02:00
Matthias Koefferlein 8845d18c74 Renamed pykl to klayout - because of name clash with the klayout binary, the python module now sits inside 'pymod' 2018-06-19 00:50:27 +02:00
Matthias Koefferlein 4744c90557 WIP: futher fixes for Windows build. 2018-06-18 00:19:18 +02:00
Matthias Koefferlein 741e9d73e3 WIP: fixed build 2018-06-17 19:09:54 +02:00
Matthias Koefferlein 757c6af80f WIP: rdb module for Python, fixed unit tests for non-Qt bindings case 2018-06-15 22:49:01 +02:00
Matthias Koefferlein acacdc3997 Included ext definitions in Python module (currently: lay) 2018-06-10 21:45:58 +02:00
Matthias Koefferlein 7f2e740dd4 WIP: some refactoring of pya to reduce dependency on GSI for bridge applications. 2018-06-09 10:32:26 +02:00
Matthias Koefferlein d938bb999b WIP: modifications for Python 3 2018-06-09 09:42:13 +02:00
Matthias Koefferlein e1858973e2 Added unit test for briding sample lib. 2018-06-09 02:11:32 +02:00
Matthias Koefferlein 9418185771 WIP: added sample lib with bridging code 2018-06-09 01:52:13 +02:00
Matthias Koefferlein 2737e14b13 WIP: some refactoring of the GSI Python binding (less static objects, new conversion operators, preparations for external use) 2018-06-09 01:50:16 +02:00
Matthias Koefferlein eca8697398 WIP: some refactoring of pya binding and data keeping. Added more conversion functions for use in external code. Needs testing. 2018-06-07 01:05:36 +02:00
Matthias Koefferlein 17846d12dd WIP: fixed installation part for pykl module, robustness of build system. 2018-06-06 21:27:18 +02:00
Matthias Koefferlein 98256ebc66 WIP: pymod tests work for Qt4 now too. 2018-06-04 00:32:02 +02:00
Matthias Koefferlein f3f6e2e7ba WIP: unit tests for pykl, some build errors fixed. 2018-06-03 23:36:06 +02:00
Matthias Koefferlein 655e59d11a WIP: Fixed build dependencies and code dependencies for Python modules (Qt5) 2018-06-03 19:54:18 +02:00
Matthias Koefferlein f093b305bf WIP: include __init__.py generation in .pro files. 2018-06-03 13:05:12 +02:00
Matthias Koefferlein 0ed898e3c2 WIP: proper dependencies to avoid build issues. 2018-06-03 12:16:52 +02:00
Matthias Koefferlein a522a14109 WIP: Fixed Python 2 build and import. 2018-06-03 02:44:56 +02:00
Matthias Koefferlein 3cabb23be1 WIP: more Qt Python modules and better build scheme. 2018-06-02 00:50:57 +02:00
Matthias Koefferlein 3882f6a3b1 WIP: further generation of Python module (kind of slow currently + dependent modules need to be loaded manually) 2018-05-31 23:22:35 +02:00
Matthias Koefferlein 07d9363ea7 WIP: more python modules, made gsi initialization safe against duplicate init. 2018-05-31 20:51:09 +02:00
Matthias Koefferlein 73297a3810 WIP: fixed some build issues. 2018-05-31 17:59:54 +02:00
Matthias Koefferlein ecc0520ffb WIP: Qt5 compatibility 2018-05-31 17:54:29 +02:00
Matthias Koefferlein 6468bb7ab9 WIP: refactoring of GSI structure for separated modules. 2018-05-30 00:39:58 +02:00