Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GNU make vs. OBI #1

Open
andreas-prouza opened this issue Jun 14, 2024 · 0 comments
Open

GNU make vs. OBI #1

andreas-prouza opened this issue Jun 14, 2024 · 0 comments

Comments

@andreas-prouza
Copy link
Owner

A long time I used GNU make for building my projects: ibm-i-build

However, I encountered some challenges over time:

  • GNU make uses many shell operations
    --> shell operations are specially on IBM i very slow
  • GNU make is compatible with Linux, IBM i, and Mac, but not Windows.
    Even there are some possibilities to install it on Windows:
    • Cygwin with GNU make
      Unfortunately not really compatible with the configuration (makefile) I used under Linux and IBM i.
    • Windows Subsystem for Linux (WSL)
      • It's like crack a nut with a sledgehammer
      • Because WSL has it's own Network you may have problems with VPN, DNS, ...
  • As the number of features to be supported increased, the complexity of the makefiles also grew.
  • It also took a lot of time to figure out how to set up the makefile for a simple new feature.
  • GNU make checks the timestamp of a source to see which one has changed and needs to be compiled.
    • It's really annoying when a developer clones a project from Git. All the sources have the current timestamp, so GNU make thinks they all need to be compiled.
    • There are a few workarounds you can try to get around this.
    • You also need to think about different time zones, ...
    • If you make changes and then undo them, you also need to reset the source date
    • ...
      --> You see: very annoying

So, I decided to create my own build tool: OBI (Object Builder fo i)
It's a python based app which solves my problems with GNU make:

  • Less shell operations
    --> much more better performance on IBM i
  • OBI is can be used on all OS, since you just need to install Python
  • New features are easier to implement
    --> E.g. it generates a well formatted report at the end:
    compile-overview
  • OBI uses the hash value of the source instead of the change date to find out if the source has changed.
  • I decided to use the toml format for configurations. This has many advantages against JSON, XML, etc.:
    • Easy to ready
    • You can do comments
    • You can use trees and table structures
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant