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

Incomplete extraction into Baselines #192

Open
txtsd opened this issue Nov 28, 2022 · 1 comment
Open

Incomplete extraction into Baselines #192

txtsd opened this issue Nov 28, 2022 · 1 comment

Comments

@txtsd
Copy link
Contributor

txtsd commented Nov 28, 2022

When a baseline does not exist, PyLNP downloads the appropriate zip to extract into the baselines folder.

However, I've found that it skips/fails to extract several important files like the .txt files in the init folder, even though they exist in the zip.

LNP/Baselines/df_47_05
λ tree -a LNP/Baselines 
LNP/Baselines
└── df_47_05
    ├── data
    │   ├── announcement
    │   ├── art
    │   │   ├── curses_640x300.bmp
    │   │   ├── curses_640x300.png
    │   │   ├── curses_800x600.bmp
    │   │   ├── curses_800x600.png
    │   │   ├── curses_square_16x16.bmp
    │   │   ├── curses_square_16x16.png
    │   │   ├── font license.txt
    │   │   ├── font.ttf
    │   │   ├── mouse.bmp
    │   │   └── mouse.png
    │   ├── dipscript
    │   │   └── text
    │   ├── help
    │   ├── init
    │   │   └── macros
    │   ├── initial_movies
    │   ├── movies
    │   ├── readme.txt
    │   ├── sound
    │   └── speech
    │       ├── ab_specific_hf_seeker.txt
    │       ├── animal_slayer.txt
    │       ├── arch_info_justification.txt
    │       ├── child_age_proclamation.txt
    │       ├── current_profession_no_year.txt
    │       ├── current_profession_year.txt
    │       ├── curse.txt
    │       ├── dwarf.txt
    │       ├── elf.txt
    │       ├── family_relationship_additional_dead.txt
    │       ├── family_relationship_additional.txt
    │       ├── family_relationship_no_spec_dead.txt
    │       ├── family_relationship_no_spec.txt
    │       ├── family_relationship_spec_dead.txt
    │       ├── family_relationship_spec.txt
    │       ├── general.txt
    │       ├── goodbye_worship_1.txt
    │       ├── goodbye_worship_2.txt
    │       ├── goodbye_worship_3.txt
    │       ├── greet_baby.txt
    │       ├── greet_reply_after_hero.txt
    │       ├── greet_reply_diff_language.txt
    │       ├── greet_reply.txt
    │       ├── greet_reply_unusual_first.txt
    │       ├── greet.txt
    │       ├── greet_worship.txt
    │       ├── guard_profession.txt
    │       ├── guard_warning.txt
    │       ├── hist_fig_slayer.txt
    │       ├── hunting_profession.txt
    │       ├── hunting_profession_year.txt
    │       ├── justification_antithetical.txt
    │       ├── justification_experience.txt
    │       ├── justification_proximity.txt
    │       ├── justification_reminder.txt
    │       ├── justification_representation.txt
    │       ├── lair_hunter_minotaur.txt
    │       ├── mercenary_profession.txt
    │       ├── mercenary_profession_year.txt
    │       ├── no_family.txt
    │       ├── past_hunting_profession.txt
    │       ├── past_mercenary_profession.txt
    │       ├── past_profession_no_year.txt
    │       ├── past_profession_year.txt
    │       ├── past_snatcher_profession.txt
    │       ├── past_thief_profession.txt
    │       ├── past_wandering_profession.txt
    │       ├── positive.txt
    │       ├── same_site_ab_specific_hf_seeker.txt
    │       ├── same_site_specific_hf_seeker.txt
    │       ├── site_specific_hf_seeker.txt
    │       ├── slayer.txt
    │       ├── snatcher_profession.txt
    │       ├── snatcher_profession_year.txt
    │       ├── soldier_profession.txt
    │       ├── task_recommendation.txt
    │       ├── temple_already_member.txt
    │       ├── temple_become_member.txt
    │       ├── thief_profession.txt
    │       ├── thief_profession_year.txt
    │       ├── threat.txt
    │       ├── unknown_hf_seeker.txt
    │       ├── wandering_profession.txt
    │       └── wandering_profession_year.txt
    ├── raw
    │   ├── graphics
    │   │   ├── example
    │   │   │   └── dwarves.bmp
    │   │   └── graphics_example.txt
    │   ├── interaction examples
    │   │   ├── example - bogeyman transformation.txt
    │   │   ├── example - shrine effects.txt
    │   │   ├── interaction_disturbance.txt
    │   │   ├── interaction_region.txt
    │   │   ├── interaction_secret.txt
    │   │   ├── interaction_underground_special.txt
    │   │   ├── interaction_vampire.txt
    │   │   └── interaction_werebeast.txt
    │   ├── objects
    │   │   ├── b_detail_plan_default.txt
    │   │   ├── body_default.txt
    │   │   ├── body_rcp.txt
    │   │   ├── building_custom.txt
    │   │   ├── creature_amphibians.txt
    │   │   ├── creature_annelids.txt
    │   │   ├── creature_birds_new.txt
    │   │   ├── creature_birds.txt
    │   │   ├── creature_bug_slug_new.txt
    │   │   ├── creature_desert_new.txt
    │   │   ├── creature_domestic.txt
    │   │   ├── creature_equipment.txt
    │   │   ├── creature_fanciful.txt
    │   │   ├── creature_insects.txt
    │   │   ├── creature_large_mountain.txt
    │   │   ├── creature_large_ocean.txt
    │   │   ├── creature_large_riverlake.txt
    │   │   ├── creature_large_temperate.txt
    │   │   ├── creature_large_tropical.txt
    │   │   ├── creature_large_tundra.txt
    │   │   ├── creature_mountain_new.txt
    │   │   ├── creature_next_underground.txt
    │   │   ├── creature_ocean_new.txt
    │   │   ├── creature_other.txt
    │   │   ├── creature_reptiles.txt
    │   │   ├── creature_riverlakepool_new.txt
    │   │   ├── creature_small_mammal_new.txt
    │   │   ├── creature_small_mammals.txt
    │   │   ├── creature_small_ocean.txt
    │   │   ├── creature_small_riverlake.txt
    │   │   ├── creature_standard.txt
    │   │   ├── creature_subterranean.txt
    │   │   ├── creature_temperate_new.txt
    │   │   ├── creature_tropical_new.txt
    │   │   ├── creature_tundra_taiga_new.txt
    │   │   ├── c_variation_default.txt
    │   │   ├── descriptor_color_standard.txt
    │   │   ├── descriptor_pattern_iris_eye.txt
    │   │   ├── descriptor_pattern_pupil_eye.txt
    │   │   ├── descriptor_pattern_special.txt
    │   │   ├── descriptor_shape_standard.txt
    │   │   ├── entity_default.txt
    │   │   ├── examples and notes
    │   │   │   ├── gaits.txt
    │   │   │   ├── item_instrument_example.txt
    │   │   │   └── reaction_instrument_example.txt
    │   │   ├── inorganic_metal.txt
    │   │   ├── inorganic_other.txt
    │   │   ├── inorganic_stone_gem.txt
    │   │   ├── inorganic_stone_layer.txt
    │   │   ├── inorganic_stone_mineral.txt
    │   │   ├── inorganic_stone_soil.txt
    │   │   ├── interaction_standard.txt
    │   │   ├── item_ammo.txt
    │   │   ├── item_armor.txt
    │   │   ├── item_food.txt
    │   │   ├── item_gloves.txt
    │   │   ├── item_helm.txt
    │   │   ├── item_pants.txt
    │   │   ├── item_shield.txt
    │   │   ├── item_shoes.txt
    │   │   ├── item_siegeammo.txt
    │   │   ├── item_tool.txt
    │   │   ├── item_toy.txt
    │   │   ├── item_trapcomp.txt
    │   │   ├── item_weapon.txt
    │   │   ├── language_DWARF.txt
    │   │   ├── language_ELF.txt
    │   │   ├── language_GOBLIN.txt
    │   │   ├── language_HUMAN.txt
    │   │   ├── language_SYM.txt
    │   │   ├── language_words.txt
    │   │   ├── material_template_default.txt
    │   │   ├── plant_crops.txt
    │   │   ├── plant_garden.txt
    │   │   ├── plant_grasses.txt
    │   │   ├── plant_new_trees.txt
    │   │   ├── plant_standard.txt
    │   │   ├── reaction_adv_carpenter.txt
    │   │   ├── reaction_other.txt
    │   │   ├── reaction_smelter.txt
    │   │   ├── text
    │   │   │   ├── book_art.txt
    │   │   │   ├── book_instruction.txt
    │   │   │   └── secret_death.txt
    │   │   └── tissue_template_default.txt
    │   └── readme.txt
    ├── readme.txt
    └── sdl

21 directories, 171 files

This causes loading keybinds to fail like so:

λ python launch.py
INFO: Registering path root as .
INFO: Registering path lnp as ./LNP
INFO: Registering path keybinds as ./LNP/Keybinds
INFO: Registering path graphics as ./LNP/Graphics
INFO: Registering path utilities as ./LNP/Utilities
INFO: Registering path colors as ./LNP/Colors
INFO: Registering path embarks as ./LNP/Embarks
INFO: Registering path tilesets as ./LNP/Tilesets
INFO: Registering path baselines as ./LNP/Baselines
INFO: Registering path mods as ./LNP/Mods
INFO: Registering path df as ./Dwarf Fortress df_47_05_linux
INFO: Registering path data as ./Dwarf Fortress df_47_05_linux/data
INFO: Registering path init as ./Dwarf Fortress df_47_05_linux/data/init
INFO: Registering path save as ./Dwarf Fortress df_47_05_linux/data/save
INFO: Registering path extras as ./LNP/Extras
INFO: Registering path defaults as ./LNP/Defaults
INFO: Registering path dfhack_config as ./Dwarf Fortress df_47_05_linux/dfhack-config/init
WARNING: Field PRIESTHOOD_UNIT_COUNTS seems to be missing from file ./Dwarf Fortress df_47_05_linux/data/init/d_init.txt!
WARNING: Field GUILD_UNIT_COUNTS seems to be missing from file ./Dwarf Fortress df_47_05_linux/data/init/d_init.txt!
WARNING: Can't load or change keybinds with missing baseline!
INFO: Read installed graphics (Phoebus) from log
INFO: Extracting archives in baselines: ['./LNP/Baselines/df_47_05_win_s.zip']
INFO: Simplifying baselines: df_47_05
INFO: Loading keybinds:  ./LNP/Keybinds/Laptop with mouse.txt
Exception in Tkinter callback
Traceback (most recent call last):
  File "/home/txtsd/.pyenv/versions/3.7.14/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
    return self.func(*args)
  File "/home/txtsd/git/python-lnp/tkgui/options.py", line 129, in <lambda>
    self.keybinding_files.bind(seq, lambda e: self.load_keybinds())
  File "/home/txtsd/git/python-lnp/tkgui/options.py", line 283, in load_keybinds
    keybinds.load_keybinds(listbox.get(items[0]))
  File "/home/txtsd/git/python-lnp/core/keybinds.py", line 99, in load_keybinds
    _sdl_write_binds(target, _sdl_get_binds(filename), expanded=True)
  File "/home/txtsd/git/python-lnp/core/keybinds.py", line 51, in _sdl_get_binds
    van = _get_vanilla_binds()
  File "/home/txtsd/git/python-lnp/core/keybinds.py", line 81, in _get_vanilla_binds
    return _sdl_get_binds(vanfile, compressed=False)
  File "/home/txtsd/git/python-lnp/core/keybinds.py", line 41, in _sdl_get_binds
    with open(filename, encoding='cp437') as f:
FileNotFoundError: [Errno 2] No such file or directory: './LNP/Baselines/df_47_05/data/init/interface.txt'

This happens on master with Python 3.7.x as well as 3.10.x

@txtsd
Copy link
Contributor Author

txtsd commented Sep 5, 2023

Seems like #163 and #186 are basically this same problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant