airsdk / apm

AIR Package Manager
https://repository.airsdk.dev/
MIT License
60 stars 10 forks source link

Simple update leaving us with broken project #167

Closed SponsorAds closed 1 year ago

SponsorAds commented 1 year ago

Doing a simple "apm update" is starting with uninstalling packages and removing them from project.apm without any plausiblity check it seems.

Only on install as a last step, I get hit with e.g.

CONFLICT :: fatal error : found [1] conflicting packages
CONFLICT :: com.distriqt.Core
CONFLICT :: ├── 7.0.1 required by: com.distriqt.Application@6.12.0
CONFLICT :: └── 6.4.8 required by: com.distriqt.InAppBilling@14.0.2

Causing me half an hour of work reverting everything manually, reinstalling it, double checking the versions and testing all functionalities.

Obviously that should not happen in any circumstance.

SponsorAds commented 1 year ago

In fact this conflict bricked the entire project. It is impossible for us to revert back, effectively preventing us from app updates.

Even reverting back everything is internally still referencing libs we have no control over:

CONFLICT :: fatal error : found [1] conflicting packages
CONFLICT :: com.distriqt.Core
CONFLICT :: ├── 7.0.1 required by: com.distriqt.playservices.AppSet@16.0.201
CONFLICT :: └── 6.4.8 required by: com.distriqt.InAppBilling@14.0.0install :: 
marchbold commented 1 year ago

All of our extensions are getting updated. Please log an issue in the relevant extension and we'll prioritise the update.

SponsorAds commented 1 year ago

How does this resolve the broken update process? It should never come to bricking a project because of a random conflict. That's literally what a packet manager has to guarantee. We can't even revert back to old versions because the deps are pointing to newer versions that are unusable (like .AppSet) - how does this even happen? It completely defeats the reason behind a packet manager. And as google currently demands updates for e.g. unityAds sdk, we are dead in the water.

Besides all this I have never come accross one without an overwrite feature, so people can force a specific dependency to get around such conflicts.

marchbold commented 1 year ago

Hi, Thanks for the suggestions and please understand this is a project developed by me in my spare time so is very much in it's infancy.

The AppSet dependency was an issue I accidentally introduced and broke that package. It is resolved as I updated that package and it shouldn't block installing using an existing project file now.

distriqt is very busy updating all extensions for Xcode 14 support, this has meant that the latest ANEs are not compatible with older versions so if you try to update certain extensions at the moment you will run into a conflict, similar to the above.