Windows build in release

#4 · closed · 30 comments

View on GitHub ↗

graphixillusion

Hi there. This is a cool program indeed but please consider to add the Windows build during release. Right now you need to install atleast 6GB of buildtools/visual studio environment just for make the compile of just_playback lib. I've already tried this command pip install PATH_TO_DOWNLOADED_WIN64_WHEEL with [this file](https://github.com/PrajwalVandana/maestro-cli/blob/master/dependency_builds/just_playback-0.1.6-cp310-cp310-win_amd64.whl ) but it doesn't work on my system (Windows 11 x64). The only solution is to install buildtools and Windows SDK plus Visual C libraries for buildtools for make the compile successfull

Comments

PrajwalVandana

Hi Gabe, Yeah, I need to look into this ... if you don't mind me asking, do you have any idea how I can do that? I only own a Mac ... is there any way to have GitHub do it for me with GitHub Actions or something? It's ok if you're not familiar, I'll try to figure it out sometime

graphixillusion

@PrajwalVandana Sadly i can't help you with this, i'm not as much advanced about these things...

PrajwalVandana

Hey @graphixillusion, just wanted to lyk I'm working on this right now. Turns out the reason the prebuilt wheel didn't work for you is because you are using Windows 11, not 10. I'll see if I can figure out a way to get the prebuilt Windows 11 wheel as well.

PrajwalVandana

Hey @graphixillusion, found a cool replacement for `just_playback`: https://github.com/irmen/pyminiaudio will port over audio playback to this package, which doesn’t seem to have the same cumbersome build tool requirements for Windows 👍🏾

PrajwalVandana

Hey @graphixillusion, I looked deeper into this and porting the playback code to pyminiaudio is too daunting a task for me, and after some digging it doesn't seem like it'll even work (i.e. allow maestro-cli to install without Visual C++ build tools). Is normal `pip install just-playback` also throwing the same error? Because I checked the just-playback repo and they added Github Actions recently for the build process ... so it install precompiled binaries and not need build tools ... If that's still not working, I'm sorry but there's not much I can do right now, although I'll keep researching

graphixillusion

@PrajwalVandana yep: ``` Building wheels for collected packages: just-playback, tinytag Building wheel for just-playback (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for just-playback (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [15 lines of output] running bdist_wheel running build running build_py creating build creating build\lib.win-amd64-cpython-311 creating build\lib.win-amd64-cpython-311\just_playback copying just_playback\ma_result.py -> build\lib.win-amd64-cpython-311\just_playback copying just_playback\playback.py -> build\lib.win-amd64-cpython-311\just_playback copying just_playback\__init__.py -> build\lib.win-amd64-cpython-311\just_playback running build_ext generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\_ma_playback.c' creating build\temp.win-amd64-cpython-311 creating build\temp.win-amd64-cpython-311\Release building '_ma_playback' extension error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/ [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for just-playback Building wheel for tinytag (pyproject.toml) ... done Created wheel for tinytag: filename=tinytag-1.9.0-py3-none-any.whl size=36847 sha256=cdac72d0d12418ec15e285893459b6643cb9dffbb87c1764467d1e28694234c6 Stored in directory: c:\users\mefisto\appdata\local\pip\cache\wheels\12\f5\8c\8abec9cd815a9c49d3c49d4a2fdf808509a27994948dec1d0c Successfully built tinytag Failed to build just-playback ERROR: Could not build wheels for just-playback, which is required to install pyproject.toml-based projects ```

kaneryu

I ran into the same issue! Unfortunately just_playback does not have that many wheels, and the only solution I found was to build it myself and then share it around for other people (in fact, i built the cp312 version that didn't work for you, lol) if you do ever end up building a wheel, please share it with the devs. Here is a page that can help you with building: [https://pypi.org/project/build/](https://pypi.org/project/build/). Or, try this: Download and extract the source Then cd to the directory of the source code ```batch py -m pip install build py -m pip build ``` Note that this is not tested, just writing this from my (foggy) memory, so it may not work.

PrajwalVandana

hey @graphixillusion, I have a windows installer for maestro available now! Will be available as a release soon, im still working on the dev branch right now, but i've attached it here. I think there are some issues (my friends tested it on their computers, i only have a Mac) with startup speed, but it should work overall! Let me know if you have any issues. https://github.com/PrajwalVandana/maestro-cli/actions/runs/10066965427/artifacts/1732586111 let me know if the link doesn't work, it might not be a permalink

graphixillusion

Thank you. Could you provide it as binary/portable?

PrajwalVandana

Do you mean the direct executable instead of an installer? If so, here it is: https://github.com/PrajwalVandana/maestro-cli/actions/runs/10116171397/artifacts/1745133528 But it has a maestro.exe and a _internal folder with dependencies when unzipped

graphixillusion

Ok, everything seems to work fine with the Windows build.

PrajwalVandana

Any issues with startup speed/performance in general? Also there are a lot more features in this dev version (e.g. listen-along streaming with the `-S` flag to `maestro play`) that aren't in the README, just lyk

graphixillusion

Well actually is a little bit slow to start, even the maestro -h tooks around 3 seconds to print to stdout.

PrajwalVandana

Yeah, my friends had that issue as well ... unfortunately I don't have a Windows device to test on so I wasn't able to figure out why On my Mac it's also slow to startup but only on the first run of any command, I think it's slow for all runs on Windows though 😔 I guess `pip install` is the best way for now ... I think the author of `just-playback` has provided wheels for Windows, so it shouldn't need visual c++ tools anymore ...

graphixillusion

I managed to install maestro from pip install but the performance are the same of the binary, still slow to start.

PrajwalVandana

Ah, that's probably because it's the old version, I've made a lot of updates since then that I haven't yet published (soon though!) You can install the dev branch with ``` pip install --force-reinstall --upgrade https://github.com/PrajwalVandana/maestro-cli/archive/dev.zip ```

PrajwalVandana

Is it faster now, btw?

graphixillusion

Nope, still the same performance as before.

PrajwalVandana

That's odd ... I'll see if I can set up a Windows VM to test What commands are you running? Is it slow for `maestro -h` too??? Also can you run `where maestro` or `gcm maestro` (not sure what the exact command is, I use mac) to ensure that the version installed by Python is picked up first (rather than the executable)?

graphixillusion

maestro is running from: /c/Users/USER/scoop/apps/python/current/Scripts/maestro I've python installed with scoop. About the performance, here's a gif: https://imgur.com/GBBmdRx Every command has this type of delay

PrajwalVandana

Hmm that is … odd to say the least I’m looking into it, one last question: is the performance the same on all runs? Like if you run the same command right after, does it get any quicker?

graphixillusion

Same for all runs.

PrajwalVandana

Hey Gabe, I was able to get much better performance even on my Mac after making some fixes! Can you try the latest dev commit again? same command as above ``` pip install --force-reinstall --upgrade https://github.com/PrajwalVandana/maestro-cli/archive/dev.zip ```

graphixillusion

Yep i confirm that this build is faster now, not immediate but now the delay is around 1s since you hit enter

PrajwalVandana

Should be even faster now ``` pip install --force-reinstall --no-deps https://github.com/PrajwalVandana/maestro-cli/archive/dev.zip ```

graphixillusion

Yep, i confirm: now the output of the maestro -h command is immediate. All the other commands are slower: they can be optimized too?

PrajwalVandana

Hmm ... not sure how what else to speedup as the fixes I made till now were to localize heavy imports as much as possible Which other commands do you find slow, and how slow? I'll see what I can do from there

graphixillusion

Now `maestro -h` is almost immediate. Every other command has around 1s delay since you press enter, even `maestro version`

PrajwalVandana

Ok, got it; most likely the issue was with the code in the `cli` function that runs on every non-help command. I _think_ the latest dev commit should fix it, try that?

graphixillusion

Yep, new dev is ok with all the other cli commands. Good job!