loot / libloot-python

A Python module that wraps libloot.
GNU General Public License v3.0
6 stars 1 forks source link

Distribute pip-compatible archives #12

Closed Ortham closed 4 years ago

Ortham commented 4 years ago

This follows on from #11 but takes a slightly different approach.

It currently builds the archives but pip thinks the package is already installed when run on AppVeyor, and after installing locally pip uninstall thinks there's nothing to uninstall. It also dumps the binaries into the site-packages root directory, which doesn't seem right. I'd also like to include the README.md in the archives but haven't figured out how to do that (and I've got no idea how it knows to package the binaries, it's magic to me).

This setup.py also doesn't handle installing the MSVC redist, I plan to address that once the basic usage has been sorted out.

GandaG commented 4 years ago

This setup.py also doesn't handle installing the MSVC redist

Since you said this, I'm assuming installing MSVC would be handled by setup.py. Now, I'm not able to test this locally right now so everything I say is from reading the code, but this doesn't accomplish the primary goal - Building the package into a wheel is unfortunately not an option since we need setup.py to auto-install msvc if needed., as I said before.

If the goal is to package into a wheel it won't install MSVC and if the goal is to distribute it in a zip archive then cmake needs to be pre-installed and we have to build the package locally (which is an even bigger problem imo).

So at best this template solves nothing and probably will create more issues.

Ortham commented 4 years ago

Why can't a wheel install the MSVC redistributable?

On Sat, 19 Oct 2019, 12:30 Daniel Nunes, notifications@github.com wrote:

This setup.py also doesn't handle installing the MSVC redist

Since you said this, I'm assuming installing MSVC would be handled by setup.py. Now, I'm not able to test this locally right now so everything I say is from reading the code, but this doesn't accomplish the primary goal - Building the package into a wheel is unfortunately not an option since we need setup.py to auto-install msvc if needed., as I said before.

If the goal is to package into a wheel it won't install MSVC and if the goal is to distribute it in a zip archive then cmake needs to be pre-installed and we have to build the package locally (which is an even bigger problem imo).

So at best this template solves nothing and probably will create more issues.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/loot/loot-api-python/pull/12?email_source=notifications&email_token=AASROEUZR2QCJVNYCVN56DTQPLVTRA5CNFSM4JCPDKL2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEBXM2EQ#issuecomment-544132370, or unsubscribe https://github.com/notifications/unsubscribe-auth/AASROERWX2O6ZJGABRGYPGTQPLVTRANCNFSM4JCPDKLQ .

GandaG commented 4 years ago

A wheel is just an archive of install-ready files - no script is run when installing a wheel. For most projects it's a huge advantage since a package can be "built" before deployment (for example, os-dependent configs - you can build wheels specifically for python version, os and bit architecture) but here we really need a script to run

PS: Wheels were also part of the move to get independence from setuptools - no need to run setup.py if the entire structure is already defined and stored in an archive.

Ortham commented 4 years ago

Ah, my misunderstanding then, I thought setup.py would still get run but not perform the build step... I'll close this PR and reopen yours.