On Fri, May 09, 2025 at 04:33:44PM -0400, Nikolaos Chatzikonstantinou wrote:
> Hello lists,
> 
> I rewrote GNU m4 in Python. Long story short, I wanted to learn m4 to
> fix some issues I had with GNU Guile and Autotools, and after
> realizing m4 1.4 is ~8000 lines of code and reading e.g.
> <https://www.owlfolio.org/development/autoconf-swot/> which claims
> "Feature gaps in GNU M4 hold back development of Autoconf." I thought
> I'd rewrite it in Rust. (It turned out to be more beneficial to
> rewrite in Python due to faster prototyping for the time being.)
> Eventually I plan to get back to my original purpose of fixing the
> integration of GNU Guile and Autotools.
> 
> You can find the project home page here,
> <https://codeberg.org/annoyingusername/m4p> and you can install with
> pip via `pip install m4p`.

I've checked out the repository, but the README.txt was very sparse at
the command line I should use to build and install the binary into any
place where I can quickly use it.  I'd rather run it from git than
from a pip checkout (so that I can experiment with patching your code
and instantly testing those results, rather than having to wait for
the next release to land on pip).

My initial attempt, 'python m4p', fails:

$ python m4p
/usr/bin/python: can't find '__main__' module in '/home/eblake/m4p/m4p'

and this also fails:

$ python m4p/main.py 
/home/eblake/m4p/m4p/main.py:18: DeprecationWarning: pkg_resources is 
deprecated as an API. See 
https://setuptools.pypa.io/en/latest/pkg_resources.html
  import pkg_resources
Traceback (most recent call last):
  File "/home/eblake/m4p/m4p/main.py", line 20, in <module>
    from m4p.stream import Stream
ModuleNotFoundError: No module named 'm4p'

Maybe it's my naivete with python, but unless I can figure out how to
run your code, I can't compare it against the C version to spot out
where you are still incomplete in your implementation.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization:  qemu.org | libguestfs.org


Reply via email to