Kruk2 / VamToolbox

28 stars 2 forks source link

Issues with dependencies #7

Open JexxTay opened 1 year ago

JexxTay commented 1 year ago

Hi I'm seeing an issue where dependencies are being missed.

For example VamTimbo.Cheer_Heels_Idle.2.var, which is available on the hub, requires the following but VamToolbox fails to add the dependency:

Cheer Heels Idle.json (3 hits) Line 2429081: "customTexture_MainTex" : "AlienAxeMan.CheerleaderCostume.latest:/Custom/Clothing/Female/YameteOuji/YameteOuji_L02_Blouse/YmO_L02_Blouse_tex_diffuse_red_cheer_3.jpg", Line 2429083: "customTexture_BumpMap" : "AlienAxeMan.CheerleaderCostume.latest:/Custom/Clothing/Female/YameteOuji/YameteOuji_L02_Blouse/YmO_L02_Blouse_tex_normal_whole.png", Line 2429101: "customTexture_MainTex" : "AlienAxeMan.CheerleaderCostume.latest:/Custom/Clothing/Female/YameteOuji/YmO_Skirt_Lo01Pl/YmO_Skirt_Lo01Pl_tex_diffuse_red_cheer.png",

Kruk2 commented 1 year ago

Can't reproduce. I used a clean vam installation, put the Cheer_Heels package. Then I run VamToolbox and hit this option: image it downloaded 21 packages: image and I can see all the dependencies including AlienAxeMan: image

Is there anything special I should do to trigger the behavior you're describing? Please remember that in order to download missing packages you have to click the option that I showed you on the first screenshot.

JexxTay commented 1 year ago

Hi,

If you move the dependencies into a repository folder and then scan/create soft-links does it create links for all dependencies for you? I'll see if I can reproduce in a clean install too.

Kruk2 commented 1 year ago

Yep, still works. image image Make sure you first select repository as "VAM" folder, use "Download missing & updated packages". Then you set "VAM" to your actual vam "REPO" to you updated repository and hit "soft-link button"

JexxTay commented 1 year ago

In testing it works fine, soft-links from repo fine.

It seems to me that if you use profiles, it will link files from other repo folders that are not in the profile if they are dependencies of files in the profile folders but it will not link files if they are dependencies of files in the addon folder. If that makes sense.. I will try and create a reproduceable example that can be followed.

JexxTay commented 1 year ago

Ok so try this, put the dependencies in the root of the repo folder, move the vamtimbo.cheer_heels_idle.5.var into a sub folder of the repo and add that subfolder as the only folder of a profile.

"Soft-link selected profile(s) to VAM" will link all the dependencies.

Now move the vamtimbo.cheer_heels_idle.5.var back to the addons folder and "Soft-link selected profile(s) to VAM" does not link any files at all.

image

Kruk2 commented 1 year ago

Sorry for late response. If I understood your reproduction steps correctly it looks to me that this is the (currently) expected behaviour. This is what I did:

  1. I created a "test" folder inside VAM_REPO/AddonPackages and moved cheer_heels var: image
  2. I created profile with that folder
  3. I pointed VAM directory to clean vam installation
  4. I clicked "soft-link profiles" with that one profile selected. It did link the dependencies.
  5. Then I moved cheer_heels var from VAM_REPO/AddonPackages/test to VAM_REPO/AddonPackages and clicked "soft-link profile". It didn't copy anything.

But why would it copy something if "test" folder is empty? Currently the "soft-link selected profiles" was designed to:

  1. Soft-link all vars matching filters (in your case after you moved cheer_heels var outside the test dir there are 0 vars matching filter)
  2. Get all dependencies for vars matching filters and also soft-link them.

it will not link files if they are dependencies of files in the addon folder.

So you're expecting that "soft link selected profiles" will not only link vars matching profile + their dependencies but also link everything in VAM_REPO/AddonPackages and their dependencies?

JexxTay commented 1 year ago

Hi, there seems to be a misunderstanding, at step 5 you are not moving the VAR to VAM_REPO/Addonpackages you are moving it to your cleaninstall\addonpackages

This may be working as intended, but the vaminstall\addonpackages folder is not checked for dependencies when using profiles. Therefore if you don't move a newly downloaded VAR to your repo it will not be included in profile scan.

I was originally leaving new VARs in the vaminstall\addonpackages and trying them out before moving to vam_repo\addonpackages, now I have adapted to move new packages to vam_repo\addonpackages\new and add that to the profile.

Initially I raised this report as I couldn't work out why some of dependencies were not linking even though they were in the repo profile folders., technically I have no issue now so this can be closed. Maybe all that is needed is a note that "Soft-linking profiles does not check for dependencies in the VAMInstall\Addonpackages folder." to avoid others having the same confusion.

JexxTay commented 1 year ago

I'd also like to add a thank you for all the replies, I'm very grateful for you not only making the tool available but the support you have provided, which has made VaM much more usable than it's original state.

Kruk2 commented 1 year ago

Thanks a lot! I will keep this issue open as I think that's a valid use case for profiles. Shouldn't be hard to implement as all needed code is already there.

To be fair I'm not using profiles anymore as I found that hard-linking (hard link is something different than softlink) clothes/hairs/envs permanently from vam_repo to vaminstall is easier/faster. Basically vam_repo/AddonPackages/clothes and vam_repo/AddonPackages/hairs are hard-linked to mirror directories: vaminstall/AddonPackages/clothes and hairs. To programs it looks like a normal file but it doesn't not take extra disk space.

Then I'm dumping new stuff to try out to vaminstall and just doing "soft-link missing dependencies" with "remove soft-links before" checked. VamToolbox will remove all existing soft-links and then soft-link dependencies for all hairs/clothes + new stuff that I just copied.

With this one https://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html you can easily hard-link whole directories.