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

Windows build in release #4

Closed
graphixillusion opened this issue Jun 22, 2023 · 30 comments
Closed

Windows build in release #4

graphixillusion opened this issue Jun 22, 2023 · 30 comments
Assignees

Comments

@graphixillusion
Copy link

graphixillusion commented Jun 22, 2023

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 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

@PrajwalVandana
Copy link
Owner

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
Copy link
Author

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

@PrajwalVandana
Copy link
Owner

PrajwalVandana commented Jul 10, 2023

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
Copy link
Owner

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 PrajwalVandana self-assigned this Jul 14, 2023
@PrajwalVandana
Copy link
Owner

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
Copy link
Author

@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
Copy link
Contributor

kaneryu commented Nov 28, 2023

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/. Or, try this:

Download and extract the source
Then cd to the directory of the source code

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
Copy link
Owner

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

@PrajwalVandana PrajwalVandana moved this to In Progress in maestro-cli Jul 25, 2024
@graphixillusion
Copy link
Author

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

@PrajwalVandana
Copy link
Owner

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
Copy link
Author

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

@PrajwalVandana
Copy link
Owner

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
Copy link
Author

graphixillusion commented Jul 27, 2024

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

@PrajwalVandana
Copy link
Owner

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
Copy link
Author

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

@PrajwalVandana
Copy link
Owner

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
Copy link
Owner

Is it faster now, btw?

@graphixillusion
Copy link
Author

Nope, still the same performance as before.

@PrajwalVandana
Copy link
Owner

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
Copy link
Author

graphixillusion commented Jul 28, 2024

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
Copy link
Owner

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
Copy link
Author

Same for all runs.

@PrajwalVandana
Copy link
Owner

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
Copy link
Author

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

@PrajwalVandana
Copy link
Owner

Should be even faster now

pip install --force-reinstall --no-deps https://github.com/PrajwalVandana/maestro-cli/archive/dev.zip

@graphixillusion
Copy link
Author

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
Copy link
Owner

PrajwalVandana commented Jul 31, 2024

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
Copy link
Author

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

@PrajwalVandana
Copy link
Owner

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
Copy link
Author

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

@github-project-automation github-project-automation bot moved this from In Progress to Done in maestro-cli Aug 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

3 participants