home.social

#pythonbuilder — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #pythonbuilder, aggregated by home.social.

  1. Update for pythonbuilder, my sane (😎) build system written in Python.

    Yes, I use pythonbuilder to build Java projects. But to push and pull dependent libraries, I use what is there: Maven (yes😱). To publish a jar to your local repository in ~/.m2/repository, pythonbuilder just got some new functionality.

    codeberg.org/harald/pythonbuil

    Feedback welcome.

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #buildtool
    #softwaredevelopment
    #programming

  2. Today's session in ColorFont Editor - combining #fontra-compile with #PythonBuilder and #paintcompiler to create color v1 ttf font binary from json sources

  3. Today's session in ColorFont Editor - combining #fontra-compile with #PythonBuilder and #paintcompiler to create color v1 ttf font binary from json sources

  4. Today's session in ColorFont Editor - combining #fontra-compile with #PythonBuilder and #paintcompiler to create color v1 ttf font binary from json sources

  5. I recently more often view generated SVGs in #Emacs

    - build system task dependency graph like codeberg.org/harald/pythonbuil
    - class dependency graph for a TypeScript project generated from github.com/PSeitz/ts-dependenc

    In both cases it would be great if clicking on a node would result in some emacs command being called.

    Any ideas?

    #pythonbuilder #tsDependencyGraph #graphviz #svg

  6. Why a build script instead of a straight normal script?

    A build shall not run tasks which are unnecessary
    - because the input did not change since last time and
    - the output is the same as last time produced (e.g. file not deleted or modified)
    Call it "guarded execution".

    But most build systems introduce a new language. Why?

    I use Pythonbuilder for Java, Python, Typescript. It is plain Python plus guarded execution.

    codeberg.org/harald/pythonbuil

    #pythonbuilder #buildsystem #buildtool #dev

  7. Having the freedom to chose my work environment on the computer, I move more and more tasks to Emacs recently, like running terminal windows with codeberg.org/harald/terminal-f . Another pet of mine is my python build system: codeberg.org/harald/pythonbuil

    The latter can produce a nice SVG graph, using #graphviz, of the dependency tree of the build setup.

    And should I forget which targets the build has, it is just a C-x C-f dependencies.svg away to see that graph.😀

    #emacs #terminal_frame #pythonbuilder

  8. Pythonbuilder update. Removes a feature described in the last post about #pythonbuilder. 🤦‍♀️ But we have new features which are hopefully better:😎

    - Save build state of successfully created targets even if the build stops with an exception.
    - Simplify state computation for Paths object. A Paths object is a bit like a combination of a Path + rglob.

    codeberg.org/harald/pythonbuil

    Feedback welcome.

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #buildtool
    #softwaredevelopment
    #programming

  9. A pythonbuilder update adds a technical feature hard to describe if you haven't used the software. I try anyway:

    So far you could define that a file, using a much simplified example, Path("build/README.html") is a Target to be build by writing

    Target(Path("build/README.html"), ...)

    With the new feature, that first argument of Target may be a Callable.

    codeberg.org/harald/pythonbuil

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #buildtool
    #softwaredevelopment
    #programming

  10. Nice, lazy import in Python on the way.

    peps.python.org/pep-0810/

    Though I must say that pythonbuilder (codeberg.org/harald/pythonbuil ) is able to start up, define ~20 targets, analyze them, and if there is nothing to do, finish in around 50ms. Lazy loading might hardly improve it, but lets see.

    #python #pythonbuilder #lazyimport

  11. Pythonbuilder update available.

    A maintenance release with code cleanup. See the commits from v-2025-09-21 to v-2025-09-26: codeberg.org/harald/pythonbuil

    The one publicly visible change should be that fields of the Target class got Final type hints as needed. This would show up for brave souls writing to these fields (nobody should) **and** using a type checker.😀

    codeberg.org/harald/pythonbuil

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #buildtool
    #softwaredevelopment
    #programming

  12. Pythonbuilder got some updates since Aug-21st.

    - It is now a regular python package which should need less sys.path wrestling to use it.
    - The Paths class, a Path combined with an iterator over contained files, can now be created with extensive file include/exclude and directory include/exclude regular expression patterns.

    docs.miamao.de/@main/pythonbui

    codeberg.org/harald/pythonbuil

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #buildtool
    #softwaredevelopment
    #programming

  13. Most build systems have their own syntax to write build scripts with the twist that functions are only run if their output could differ from the last call.

    I turned this upside-down thing on its feet again, providing a Python library to run functions only if needed.

    So your build script is just a Python script, but still does not run functions unnecessarily.

    codeberg.org/harald/pythonbuil

    #pythonbuilder #buildtool #cmake #gradle #ant #buildautomation

  14. Pythonbuilder got some updates since Aug-17th

    The function pbutil.main() provides a shallow wrapper around updateTargets() to parse, so far, two options out of a typical sys.argv, one to set the log level and one to force targets to be updated even if their state proves them as up-to-date. Quite practical for debugging the build process itself.

    harald.codeberg.page/pythonbui

    codeberg.org/harald/pythonbuil

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #buildtool
    #softwaredevelopment
    #programming

  15. Pythonbuilder got some updates since Aug-3rd.

    - Targets which comprise of only a subset of the files in a directory can now be represented with a Paths object: harald.codeberg.page/pythonbui

    - Improved error handling to allow for sys.exit(1) in case of a build failure.

    - Expert: a state=... function either have the Target object or the Target.item as its first parameter

    codeberg.org/harald/pythonbuil

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #buildtool
    #softwaredevelopment
    #programming

  16. The pythonbuilder got a few improvements. Apart from introducing ruff as a consistent python code formatter and for linting in addition to mypy, it got a new module pbpython.py which wraps

    - ruff check
    - ruff format
    - mypy

    calls for easy use as target builders.

    codeberg.org/harald/pythonbuil

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #buildtool
    #softwaredevelopment
    #programming
    #python
    #ruff
    #mypy

  17. An update is available for pythonbuilder, a core build system written and specified in Python.

    codeberg.org/harald/pythonbuil

    - simplified API to generate a targets state and to create it
    - build functions to support Java builds

    Tutorial Example: codeberg.org/harald/pythonbuil

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #softwaredevelopment
    #programming
    #python
    #make
    #gradle
    #ant
    #blt
    #cmake

  18. An update is available for my pythonbuilder, the core build system written and specified in Python.

    codeberg.org/harald/pythonbuil

    This improves logging with the default being less verbose as it adds a VERBOSE level which gives back the previous verbosity.

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #softwaredevelopment
    #programming
    #python
    #make
    #gradle
    #ant
    #blt
    #cmake

  19. An update is available for my pythonbuilder, the core build system written and specified in Python.

    codeberg.org/harald/pythonbuil

    The things to build, previously represented as just strings, are now arbitrary Python objects, which makes it in particular easier to use Python's modern Path in all places where file or directory references are needed.

    #pythonbuilder #buildmachine #bashbuilder #buildsystem #softwaredevelopment #programming #python #make #gradle #ant #blt #cmake

  20. 1/2

    My third implementation of the core of a build system: codeberg.org/harald/pythonbuil

    I contrast build system with script. While a script just runs all the commands according to the code you write, a build system has a means of determining whether a command really has to be run or can be skipped because the input has not changed, so no new output can be expected.

    #pythonbuilder
    #buildmachine
    #bashbuilder
    #buildsystem
    #softwaredevelopment
    #programming
    #make
    #gradle
    #ant
    #blt
    #cmake