hetepeperfan
hetepeperfan

Reputation: 4431

Meson project stays dirty

I've got a meson.build project. The project works like a charm on linux and I'm generally very happy using it.

Unfortunately, I'm loosing this fortunate feeling once I start to try it on windows, using msys2. I'm using msys2 in order to install all of my dependencies. gtk4, gstreamer etc.

The initial configuration of the project works nicely once I have all dependencies my setup is something like:

meson setup build -Dalsa=false -Ddocumentation=false

This succeeds as expected, my problems start when I try to build the project:

ninja -C build

What I see the that building restarts the configuration of the project. And now it runs in a loop that never seems to terminate.

ninja -d explain -C build > output.txt 2> debug.txt

The output of stdout this keeps repeating so I post it until it repeats =

ninja: Entering directory `build/'
[0/1] Regenerating build files.
Cleaning... 0 files.
The Meson build system
Version: 1.5.2
Source dir: C:/msys64/home/maarten/psy-lib
Build dir: C:/msys64/home/maarten/psy-lib/build
Build type: native build
Project name: libpsy
Project version: 0.1
C compiler for the host machine: cc (gcc 14.2.0 "cc (Rev1, Built by MSYS2 project) 14.2.0")
C linker for the host machine: cc ld.bfd 2.43.1
C++ compiler for the host machine: c++ (gcc 14.2.0 "c++ (Rev1, Built by MSYS2 project) 14.2.0")
C++ linker for the host machine: c++ ld.bfd 2.43.1
Host machine cpu family: x86_64
Host machine cpu: x86_64
Library m found: YES
Dependency glib-2.0 found: YES 2.82.1 (cached)
Dependency gobject-2.0 found: YES 2.82.1 (cached)
Dependency gio-2.0 found: YES 2.82.1 (cached)
Dependency gstreamer-1.0 found: YES 1.24.8 (cached)
Dependency gstreamer-app-1.0 found: YES 1.24.8 (cached)
Dependency gtk4 found: YES 4.16.2 (cached)
Dependency epoxy found: YES 1.5.10 (cached)
Dependency cairo found: YES 1.18.2 (cached)
Dependency pango found: YES 1.54.0 (cached)
Dependency pangocairo found: YES 1.54.0 (cached)
Message: Using portaudio
Dependency portaudio-2.0 found: YES 19 (cached)
Message: the depencies are: 
Message:  -  glib-2.0
Message:  -  gobject-2.0
Message:  -  gtk4
Message:  -  epoxy
Message:  -  gstreamer-1.0
Message:  -  gstreamer-app-1.0
Message:  -  portaudio-2.0
Checking for function "__builtin_add_overflow" : YES (cached)
Checking for function "__builtin_sub_overflow" : YES (cached)
Checking for function "__builtin_mul_overflow" : YES (cached)
Checking for function "usleep" : YES (cached)
Has header "unistd.h" : YES (cached)
Has header "linux/parport.h" : NO (cached)
Has header "linux/ppdev.h" : NO (cached)
Has header "sys/random.h" : NO (cached)
Has header "jack/jack.h" : NO (cached)
Has header "portaudio.h" : YES (cached)
Has header "pa_linux_alsa.h" : NO (cached)
Has header "alsa/asoundlib.h" : NO (cached)
Has header "boost/lockfree/spsc_queue.hpp" : YES (cached)
Has header "windows.h" : YES (cached)
Configuring psy-config.h using configuration
Dependency glib-2.0 found: YES 2.82.1 (cached)
Program C:/msys64/ucrt64/bin/glib-mkenums.exe found: YES (C:/msys64/ucrt64/bin/glib-mkenums.exe)
Dependency glib-2.0 found: YES 2.82.1 (cached)
Program C:/msys64/ucrt64/bin/glib-mkenums.exe found: YES (C:/msys64/ucrt64/bin/glib-mkenums.exe)
Dependency gobject-introspection-1.0 found: YES 1.82.0 (cached)
Dependency gobject-introspection-1.0 found: YES 1.82.0 (cached)
Program C:/msys64/ucrt64/bin/g-ir-scanner.exe found: YES (C:/msys64/ucrt64/bin/g-ir-scanner.exe)
Dependency gobject-introspection-1.0 found: YES 1.82.0 (cached)
Program C:/msys64/ucrt64/bin/g-ir-compiler.exe found: YES (C:/msys64/ucrt64/bin/g-ir-compiler.exe)
Found pkg-config: YES (C:\msys64\ucrt64\bin/pkg-config.EXE) 2.3.0
Dependency cunit found: YES 2.1-3 (cached)
Program python3 found: YES (C:\msys64\ucrt64\bin/python3.EXE)
Build targets in project: 14

libpsy 0.1

  User defined options
    alsa         : false
    documentation: false

Found ninja-1.12.1 at C:\msys64\ucrt64\bin/ninja.EXE
[0/2] Regenerating build files.
The Meson build system

The output of stderr until the repeat is:

ninja explain: output ../share/Itálica_Owl.jpg of phony edge with no inputs doesn't exist
ninja explain: ../meson.build is dirty
ninja explain: ../meson_options.txt is dirty
ninja explain: ../psy/meson.build is dirty
ninja explain: ../psy/psy-config.h.in is dirty
ninja explain: ../psy/gl/meson.build is dirty
ninja explain: ../psy/backend_gtk/meson.build is dirty
ninja explain: ../psy/hw/meson.build is dirty
ninja explain: ../psy/portaudio/meson.build is dirty
ninja explain: ../psy/v-shader.vert is dirty
ninja explain: ../psy/f-shader.frag is dirty
ninja explain: ../psy/uniform-color.vert is dirty
ninja explain: ../psy/uniform-color.frag is dirty
ninja explain: ../psy/picture.vert is dirty
ninja explain: ../psy/picture.frag is dirty
ninja explain: ../share/meson.build is dirty
ninja explain: ../share/Itálica_Owl.jpg is dirty
ninja explain: ../tests/meson.build is dirty
ninja explain: ../programs/meson.build is dirty
ninja explain: ../examples/meson.build is dirty
ninja explain: ../examples/c/meson.build is dirty
ninja explain: ../examples/python/meson.build is dirty
ninja explain: meson-private/coredata.dat is dirty
ninja explain: output ../share/Itálica_Owl.jpg of phony edge with no inputs doesn't exist
ninja explain: ../meson.build is dirty
.
. And then i press ctrl+c
.
ninja explain: meson-private/coredata.dat is dirty
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:/msys64/ucrt64/bin/meson.exe/__main__.py", line 7, in <module>
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/mesonmain.py", line 291, in main
    return run(sys.argv[1:], launcher)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/mesonmain.py", line 275, in run
    return msetup.run(['--reconfigure'] + args[2:])
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/msetup.py", line 364, in run
    app.generate()
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/msetup.py", line 187, in generate
    return self._generate(env, capture, vslite_ctx)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/msetup.py", line 226, in _generate
    intr.run()
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreter/interpreter.py", line 3032, in run
    super().run()
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 169, in run
    self.evaluate_codeblock(self.ast, start=1)
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 201, in evaluate_statement
    return self.function_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 528, in function_call
    res = func(node, func_args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/decorators.py", line 250, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/decorators.py", line 569, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreter/interpreter.py", line 2451, in func_subdir
    self.evaluate_codeblock(codeblock)
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 219, in evaluate_statement
    return self.evaluate_if(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 309, in evaluate_if
    self.evaluate_codeblock(i.block)
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 187, in evaluate_codeblock
    self.evaluate_statement(cur)
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 205, in evaluate_statement
    self.assignment(cur)
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 642, in assignment
    value = self.evaluate_statement(node.value)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 207, in evaluate_statement
    return self.method_call(cur)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/interpreterbase.py", line 557, in method_call
    res = obj.method_call(method_name, args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreter/interpreterobjects.py", line 858, in method_call
    ret = method(state, args, kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/decorators.py", line 250, in wrapper
    return f(*nargs, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/interpreterbase/decorators.py", line 569, in wrapper
    return f(*wrapped_args, **wrapped_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/modules/gnome.py", line 1157, in generate_gir
    self._get_dependencies_flags(deps, state, depends, use_gir_args=True)
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/modules/gnome.py", line 747, in _get_dependencies_flags
    cflags, internal_ldflags_raw, external_ldflags_raw, gi_includes, depends = self._get_dependencies_flags_raw(deps, state, depends, include_rpath, use_gir_args)
                                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/modules/gnome.py", line 675, in _get_dependencies_flags_raw
    libdepflags = self._get_dependencies_flags_raw(lib.get_external_deps(), state, depends, include_rpath,
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/modules/gnome.py", line 726, in _get_dependencies_flags_raw
    if use_gir_args and self._gir_has_option('--extra-library'):
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/modules/gnome.py", line 804, in _gir_has_option
    p, o, _ = Popen_safe(exe.get_command() + ['--help'], stderr=subprocess.STDOUT)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/utils/universal.py", line 1552, in Popen_safe
    p, o, e = Popen_safe_legacy(args, write=write, stdin=stdin, stdout=stdout, stderr=stderr, **kwargs)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/site-packages/mesonbuild/utils/universal.py", line 1579, in Popen_safe_legacy
    o, e = p.communicate(input_)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:/msys64/ucrt64/lib/python3.11/subprocess.py", line 1196, in communicate
    stdout = self.stdout.read()
             ^^^^^^^^^^^^^^^^^^
KeyboardInterrupt
ninja: error: rebuilding 'build.ninja': interrupted by user

So for some reason, ninja thinks that my project is dirty and as such it will restart the configuration, starts the build and then comes to the conclusion that my meson project is dirty...

So I would like to know what is going on, why are my files dirty over and over again.

Update, the following git diff creates a work around for my issue:

configure_file(
-    input : Itálica_Owl.jpg
-    output : Itálica_Owl.jpg
+    input : owl.jpg
+    output : owl.jpg

So, i removed non-ascii characters from the build, renamed the image, and now everything is happy... But I don't understand why I run into this issue... But this is a workaround, what is the issue?

Upvotes: 0

Views: 72

Answers (0)

Related Questions