jeff-hughes / shellcaster

Terminal-based podcast manager built in Rust
GNU General Public License v3.0
199 stars 13 forks source link

Build issues on ARM: caused by pancurses dependency #27

Closed kotajacob closed 2 years ago

kotajacob commented 3 years ago

Hello! First of all I quite like your podcast client and it looks like a number of people are working on packaging it up for void linux. Unfortunately it doesn't seem to build on ARM right now which is stopping it from getting merged in. It seems like the issue is that shellcaster uses pancurses, which uses ncurses-rs which has the bug. There is currently an open PR with a fix on ncurses-rs, but both ncurses-rs and pancurses look to be dead/inactive since October 2019.

A similar thing was discovered with a program called dijo when it was being packaged for void. In that case the author wound up replacing the pancurses dependency with termion. It might be easier to fork pancurses and ncurses-rs, merge in the patch, and then update shellcaster to use the forked version of pancurses.

That's obviously quite a bit of work and probably not a priority, but I wanted to make you aware of the issue. Some of the people working on getting it packaged might be able to maintain a fork of pancurses.

jeff-hughes commented 3 years ago

Thanks for letting me know about this. Yeah, in hindsight, I wish I had built on termion instead, which has a lot more activity -- I hadn't realized at the time how little maintenance was being done on ncurses-rs/pancurses. One of my long-term projects may be to completely refactor everything to switch to termion. But that's definitely a lot of work.

I think it should be possible to fork the ncurses-rs and pancurses repos and use them as git repos when building from source. The tricky part is that it would mean building with different dependencies based on compiling from source vs. installing directly from crates.io (i.e., with cargo install shellcaster), but I think it would work out alright. I'll have to do some testing first to make sure the PR you linked to for ncurses-rs doesn't break anything for x86, but I don't think it will. The ideal solution is still to move to termion, but in the meantime, I think I can make something work. I'll follow up further on the Void PR you linked to. Thanks again for alerting me to this!

jeff-hughes commented 2 years ago

Issue should now be resolved with release of v2.0.0, which removes the dependency on pancurses/ncurses.