Pshy0/es-ruin-the-fun

make plugin-update makes RTF shipyard and outfitters disappear

Closed this issue · 14 comments

I am using stable endless sky from an arch package.
I've installed the Midnight Plugins and the High DPI plugin.
In the Makefile is set the data directory to the data directory of the arch package /usr/share/games/endless-sky/data
The rtf plugin was missing a few exoctic outfits in its all-outfits.txt, e.g. the Huge Systems Core.
So I tried make plugin-update.
The all-outfits.txt gets regenerated correctly. However, the RTF planet does not have a shipyard anymore, nor an outfitter.
I tried make clean, make update, make plugin-update, same result.
In the generated planets.txt I spotted strange lines starting with \toutfitter, I guess that's what might be messing things up.

planet RTF0-P
        landscape land/fields6
        description "   Ruin The Fun                                                                    RTF0-P"
        description ""
        description "  [         Shipyard ] All ships (enable variants with the Variants job)"
        description "  [       Outfitter ] All outfits"
        description "  [ Job Board     ] Many other features"
        description "  [ Spaceport     ] Help & Quick actions"
        spaceport "You can access the Spaceport again by taking off and landing back."
        government Ruin-The-Fun
        tribute 1000000
                fleet "Ruin-The-Fun Dread Fleet (Planet Defense)" 8
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
       outfitter `Advanced Fuel`
        outfitter `Advanced Turbo Blasters`
        outfitter `Aluminum`
        outfitter `Ammo North`
        outfitter `Ammo South`
...

Regards,

Hello,

The Huge Systems Core is called Systems Core (Large).
I tried reproducing this bug by enabling the midnight plugins and using make plugin-update, but this outfit was added in the list in all-outfits.txt.

This is a screen from the game after I regenerated the data:
image

Could you please provide additional information:

The System Core (Huge) is part of the Lost in Midnight, do you have it installed?
Is the plugin enabled?
What is the output of git reset --hard && make clean && make plugin-update?
What are the folder names of the plugins?
Output of tmp/outfitters.list.tmp and tmp/plugin-outfitters.list.tmp?

I spotted strange lines starting with \toutfitter, I guess that's what might be messing things up.

While I could not reproduce this, I am trying to figure out why this could be happening.

I found out that the RTF plugin data is being parsed if I use your folder name, which is not supposed to happen. And the errorneous lines are related to this data.

I fixed this and pushed a commit to main. Could you udpate the RTF plugin to use the head of main and try again?

Oh, something important, some of the files have no sources, they are only updated, so to really clean the plugin you need to do git reset --hard if the plugin is still a git repository (reinstall it if not), followed by make clean.

I just pushed a commit again.
Be sure to run git reset --hard if the plugin is a git repository (or reinstall it), and run make clean && make plugin-update

outfitters.list.tmp.txt
plugin-outfitters.list.tmp.txt
Hello,
yes, the Huge Systems Core is part of the Lost in Midnight plugin.
I've installed the plugins using eslauncher2, except for rtf, which i git-cloned.
The list of all outfits correctly has the Huge Systems Core.
The planets.txt looks a bit different now:

planet RTF0-P
	landscape land/fields6
	description "	Ruin The Fun                                                                    RTF0-P"
	description ""
	description "  [         Shipyard ] All ships (enable variants with the Variants job)"
	description "  [       Outfitter ] All outfits"
	description "  [ Job Board     ] Many other features"
	description "  [ Spaceport     ] Help & Quick actions"
	spaceport "You can access the Spaceport again by taking off and landing back."
	government Ruin-The-Fun
	tribute 1000000
		fleet "Ruin-The-Fun Dread Fleet (Planet Defense)" 8
\toutfitter "Ruin-The-Fun Outfits"
\toutfitter "Ruin-The-Fun Stat Outfits"
\toutfitter "Ruin-The-Fun All Outfits"
\tshipyard "Ruin-The-Fun All Base Ships"
\tshipyard `modships`
\toutfitter `modoutfits`
	outfitter `Advanced Fuel`
	outfitter `Advanced Turbo Blasters`
	outfitter `Aluminum`
	outfitter `Ammo North`
...

The only rule where I see this "\t" stuff in the Makefile is the rule for data/maps/planet.temp
Those lines starting with "\t" appear in the planets.temp, too.
I guess the "\t" are supposed to get replaced by tabstopps, but that does not happen.

I have attached the two tmp files you requested. I had to add the .txt suffix to them for gh to allow the upload...

Regards,

Oh, I tried something: I replaced the \t with tabstopps, and the RTF planets' shipyards and outfitters are back again.

The only rule where I see this "\t" stuff in the Makefile is the rule for data/maps/planet.temp

image
The \t is indeed expected to be replaced by a tab.

This could be happening because I am using single quotes for this string.

I tested the following rule

print:
	@echo "with @, doublequotes: A\tB"
	echo "without @, doublequotes: A\tB"
	@echo 'with @, singlequotes: A\tB'
	echo 'without @, singlequotes: A\tB'

which outputs

with @, doublequotes: A B
echo "without @, doublequotes: A\tB"
without @, doublequotes: A B
with @, singlequotes: A\tB
echo 'without @, singlequotes: A\tB'
without @, singlequotes: A\tB

However, the following rule

print:
	@echo "with @, doublequotes: A\tB" >> "test"
	echo "without @, doublequotes: A\tB" >> "test"
	@echo 'with @, singlequotes: A\tB' >> "test"
	echo 'without @, singlequotes: A\tB' >> "test"
	cat test

outputs

with @, doublequotes: A B
without @, doublequotes: A B
with @, singlequotes: A B
without @, singlequotes: A B

So my echo does not behave consistently when redirecting output to files or not. The difference in behavior between you and me could be due to a bug in make.

I am replacing those quotes.

I pushed a commit, you will again need to git reset --hard and then git plugin-update.

Hmmm, the modships and modoutfits line had single quotes and the \t not replaced...

Anyway, I tried the latest commit. I can see the double quotes are single quotes now. The lines still start with "\t", though.
I am using gnu make 4.4.1-2 (arch package).
Could one not use sed for replacing the \t with a tab? My sed version is gnu sed 4.9-3 (arch package).

Regards,

I can see the double quotes are single quotes now.

I replaced the double quotes around outfitter and shipyard names by backticks (not single quotes), because it was supposed to be my norm.
In the makefile, I replaced the single quotes used with the echo command by double quotes.

The problem apparently is echo, having different behaviors in different implementations.

To be radical, I just replaced echo by printf.
Please tell me if that fixes it.

Hello,

yes, the latest commit fixes the issue. I was wondering how make might use shell builtins for echo and/or printf. I am using zsh instead of bash. zsh should be standards compliant in that regard, but who knows...

Thanks for your quick help, it is much appreciated :-)

Regards,

Thank you for reporting the issue!