Vega-strike-engine-source: Vega Strike v0.7.0-beta1 Ubuntu bionic py3 installer missing at least one boost dependency

Created on 7 Jan 2021  路  19Comments  路  Source: vegastrike/Vega-Strike-Engine-Source

It doesn't specify the Boost date-time library as a .deb dependency, even though the Vega Strike binary needs it to run.

Installer bug

All 19 comments

Well, unfortunately, this still isn't fixed. Vega Strike v0.7.0-beta10 encounters the same error as before.

Maybe I'm referencing the wrong Boost version? Maybe it should be 1.65.1 instead of 1.58.0? All the more reason to use a Boost version variable, I guess.

@stephengtuggy does boost-datetime end up in the dependency.list file generated by scripts/package? It directly checks against what ldd reports are dependencies of the binary and then does a reverse lookup to determine which packages own the library, dropping the unique results into dependency.list.

@BenjamenMeyer boost-datetime probably does end up in dependency.list. But for some reason, the dependency.list mechanism has never worked. It seems to fail at some point after the initial list gets generated, perhaps during sorting/deduplication. If you want to take a stab at troubleshooting that whole mechanism, that would probably be a worthwhile effort.

I reviewed the scripts/package and it does seem to be working just fine; though it didn't have a couple changes with the binaries as it expected them in different locations. I've got a couple branches staged for the fix on that part.

423 fixes 0.7.x and #424 fixes master for the script/package; we should verify the package dependencies in the next release

NOTE: This is the Debian dependencies using #424:

libpython3.8, libjpeg62, libpng16-16, freeglut3,
libgtk-3-0, libvorbis0a, libopenal1, libsdl-gfx1.2-5, xdg-utils,
libgl1, libopengl0,
libboost-python1.67.0,
libboost-log1.67.0,
libboost-date-time1.67.0,
libboost-chrono1.67.0,
libboost-atomic1.67.0

@stephengtuggy it could be a order of operations issue.

The dependency.list generated by script/package requires the build to be present for it to be generated, but the list has to exist for CMake to find it...we can probably fix by adding another call to cmake ../engine from within the build directory after generating the dependency list, or figuring out a way to make generating it regen the Cmake cache.

When CMake runs and finds the dependency.list it generates output like the following:

-- Configuring Debian Packaging
Looking for /home/bmeyer/Devel/opensource/vegastrike/Vega-Strike-Engine-Source/build/dependency.list
Found Dependency file at /home/bmeyer/Devel/opensource/vegastrike/Vega-Strike-Engine-Source/build/dependency.list
** Found Dependency 
** Found Dependency freeglut3
** Found Dependency libapparmor1
** Found Dependency libasound2
** Found Dependency libasyncns0
** Found Dependency libatk1.0-0
** Found Dependency libatk-bridge2.0-0
** Found Dependency libatspi2.0-0
** Found Dependency libblkid1
** Found Dependency libboost-filesystem1.67.0
** Found Dependency libboost-log1.67.0
** Found Dependency libboost-regex1.67.0
** Found Dependency libboost-system1.67.0
** Found Dependency libboost-thread1.67.0
** Found Dependency libbsd0
** Found Dependency libc6
** Found Dependency libcaca0
** Found Dependency libcairo2
** Found Dependency libcairo-gobject2
** Found Dependency libdatrie1
** Found Dependency libdbus-1-3
** Found Dependency libepoxy0
** Found Dependency libexpat1
** Found Dependency libffi7
** Found Dependency libflac8
** Found Dependency libfontconfig1
** Found Dependency libfreetype6
** Found Dependency libfribidi0
** Found Dependency libgcc-s1
** Found Dependency libgcrypt20
** Found Dependency libgdk-pixbuf2.0-0
** Found Dependency libgl1
** Found Dependency libglib2.0-0
** Found Dependency libglu1-mesa
** Found Dependency libglvnd0
** Found Dependency libglx0
** Found Dependency libgpg-error0
** Found Dependency libgraphite2-3
** Found Dependency libgtk-3-0
** Found Dependency libharfbuzz0b
** Found Dependency libicu66
** Found Dependency libjpeg62
** Found Dependency liblz4-1
** Found Dependency liblzma5
** Found Dependency libmount1
** Found Dependency libncursesw6
** Found Dependency libogg0
** Found Dependency libopenal1
** Found Dependency libopengl0
** Found Dependency libpango-1.0-0
** Found Dependency libpangocairo-1.0-0
** Found Dependency libpangoft2-1.0-0
** Found Dependency libpcre2-8-0
** Found Dependency libpcre3
** Found Dependency libpixman-1-0
** Found Dependency libpng16-16
** Found Dependency libpulse0
** Found Dependency libpython3.8
** Found Dependency libsdl1.2debian
** Found Dependency libselinux1
** Found Dependency libslang2
** Found Dependency libsndfile1
** Found Dependency libsndio7.0
** Found Dependency libstdc++6
** Found Dependency libsystemd0
** Found Dependency libthai0
** Found Dependency libtinfo6
** Found Dependency libuuid1
** Found Dependency libvorbis0a
** Found Dependency libvorbisenc2
** Found Dependency libvorbisfile3
** Found Dependency libwayland-client0
** Found Dependency libwayland-cursor0
** Found Dependency libwayland-egl1
** Found Dependency libwrap0
** Found Dependency libx11-6
** Found Dependency libxau6
** Found Dependency libxcb1
** Found Dependency libxcb-render0
** Found Dependency libxcb-shm0
** Found Dependency libxcomposite1
** Found Dependency libxcursor1
** Found Dependency libxdamage1
** Found Dependency libxdmcp6
** Found Dependency libxext6
** Found Dependency libxfixes3
** Found Dependency libxi6
** Found Dependency libxinerama1
** Found Dependency libxkbcommon0
** Found Dependency libxrandr2
** Found Dependency libxrender1
** Found Dependency libxxf86vm1
** Found Dependency zlib1g
-- Configuring done
-- Generating done

Looking at https://github.com/vegastrike/Vega-Strike-Engine-Source/runs/1755001345?check_suite_focus=true it definitely ran and generated the dependency.list, but it likely needs to have cmake run again to that CPack picks it up properly.

Added a fix to #424 so that the release process will run cmake again before doing the packaging

Reran it to validate the DEB with the additional change in #424 and got the following in the Deb binary:

libpython3.8, libjpeg62, libpng16-16, freeglut3, libgtk-3-0, libvorbis0a, libopenal1, libsdl-gfx1.2-5,
xdg-utils, libgl1, libopengl0,
libboost-python1.67.0,
libboost-log1.67.0,
libboost-date-time1.67.0,
libboost-chrono1.67.0,
libboost-atomic1.67.0

If there is any other issue it's with the CMake/CPack and dependency variables.

BTW, those look like the hard-coded values, so there's likely a bug in the CMake side.

About six months ago or more, I think I overrode the dynamic dependency list mechanism with hard-coded values, since the dynamic mechanism didn't seem to be working. Now I know why: We needed to run CMake one more time.

So now we can probably revert my change from back then, and start using the dynamic dependency.list again. At least give it a try.

Looking at the auto-generated dependencies and libboost-date-time doesn't get included. I wonder if it's just a compile time dependency, not a run-time dependency, in which case that needs to be documented elsewhere.

Here's the complete auto-generated list (all 92 of them) from my local system:

Architecture: amd64
Depends: freeglut3, libapparmor1, libasound2, libasyncns0, libatk1.0-0, libatk-bridge2.0-0, libatspi2.0-0, libblkid1, libboost-filesystem1.67.0, libboost-log1.67.0, libboost-regex1.67.0, libboost-system1.67.0, libboost-thread1.67.0, libbsd0, libc6, libcaca0, libcairo2, libcairo-gobject2, libdatrie1, libdbus-1-3, libepoxy0, libexpat1, libffi7, libflac8, libfontconfig1, libfreetype6, libfribidi0, libgcc-s1, libgcrypt20, libgdk-pixbuf2.0-0, libgl1, libglib2.0-0, libglu1-mesa, libglvnd0, libglx0, libgpg-error0, libgraphite2-3, libgtk-3-0, libharfbuzz0b, libicu66, libjpeg62, liblz4-1, liblzma5, libmount1, libncursesw6, libogg0, libopenal1, libopengl0, libpango-1.0-0, libpangocairo-1.0-0, libpangoft2-1.0-0, libpcre2-8-0, libpcre3, libpixman-1-0, libpng16-16, libpulse0, libpython3.8, libsdl1.2debian, libselinux1, libslang2, libsndfile1, libsndio7.0, libstdc++6, libsystemd0, libthai0, libtinfo6, libuuid1, libvorbis0a, libvorbisenc2, libvorbisfile3, libwayland-client0, libwayland-cursor0, libwayland-egl1, libwrap0, libx11-6, libxau6, libxcb1, libxcb-render0, libxcb-shm0, libxcomposite1, libxcursor1, libxdamage1, libxdmcp6, libxext6, libxfixes3, libxi6, libxinerama1, libxkbcommon0, libxrandr2, libxrender1, libxxf86vm1, zlib1g

Checking the dynamic linkage doesn't show needing libboost-date-time either:

$ ldd vegastrike | grep boost
        libboost_log.so.1.67.0 => /lib/x86_64-linux-gnu/libboost_log.so.1.67.0 (0x00007f39fceed000)
        libboost_log_setup.so.1.67.0 => /lib/x86_64-linux-gnu/libboost_log_setup.so.1.67.0 (0x00007f39fce3a000)
        libboost_system.so.1.67.0 => /lib/x86_64-linux-gnu/libboost_system.so.1.67.0 (0x00007f39fce33000)
        libboost_filesystem.so.1.67.0 => /lib/x86_64-linux-gnu/libboost_filesystem.so.1.67.0 (0x00007f39fce16000)
        libboost_thread.so.1.67.0 => /lib/x86_64-linux-gnu/libboost_thread.so.1.67.0 (0x00007f39fcde7000)
        libboost_regex.so.1.67.0 => /lib/x86_64-linux-gnu/libboost_regex.so.1.67.0 (0x00007f39fbfe6000)

Pushed up my changes that generated the comments in https://github.com/vegastrike/Vega-Strike-Engine-Source/issues/391#issuecomment-800799357 as #435

The auto-generated list of dependencies from your local system includes several Wayland libraries? That doesn't seem right. I don't think we want to depend specifically on Wayland. At least, not unless we want to build one set of .debs for Wayland and another for X.

@stephengtuggy I was thinking perhaps the script just pulled the first thing that matched the dependency, but those are actually installed even though I don't use Wayland. I'm guessing it's probably due to migration and preparation of moving folks from X to Wayland as more and more distros (Ubuntu included) are starting to test spins with Wayland instead of X.

If the script is really picking up things that are not installed on the build system and attaching them as dependencies then we should fix the script to match things up better since it is possible that a single file on disk might belong to one or more packages and I probably did a more dumb method matching that doesn't include installation status.

As always I'm flexible on what's there - let's just find the right solution.

Maybe when more than one package includes the same file, we can combine those packages with an OR clause?

@stephengtuggy possibly...but it'll require quite a bit of work in the script/package to do the work. Merged #435; so let's cut a pre-alpha 0.8.x release to see how it comes out.

Okay - here's the list of dependencies for the various Debian/Ubuntu platforms using the v0.8.8-pre-alpha0 release binaries built on GitHub which used the dependency script to dynamically detect the dependencies.

Notable differences:

  • Ubuntu Xenial (16.04) uses Boost 1.58 and doesn't depend on libboost-datetime
  • Debian 9 and Ubuntu Xential (16.04) have a different Wayland dependency set than the rest (libwayland-egl1-mesa versus libwayland-egl1).

Not sure what other dependencies differences are there; but it's nice that the script detects and links these nicely. That's not to say it shouldn't be smarter about which files to chose from, it probably could be but it's a good start.

If we're not comfortable with the script yet, then for 0.7.x and possibly 0.8.x we could update the static dependencies to match some of the builds as we go, and we can revert #435 on the 0.8.x branch once it's made.

NOTE: I've only looked at the Debian dependencies b/c we don't support RPM auto-detection yet.

Any how...here's the Debian dependencies:

  • Debian

    • Buster (Debian 10)

Depends: freeglut3, libasound2, libasyncns0, libatk-bridge2.0-0, libatk1.0-0, libatomic1, libatspi2.0-0, libblkid1, libboost-atomic1.67.0, libboost-chrono1.67.0, libboost-date-time1.67.0, libboost-filesystem1.67.0, libboost-log1.67.0, libboost-python1.67.0, libboost-regex1.67.0, libboost-system1.67.0, libboost-thread1.67.0, libbsd0, libc6, libcaca0, libcairo-gobject2, libcairo2, libcap2, libdatrie1, libdbus-1-3, libepoxy0, libexpat1, libffi6, libflac8, libfontconfig1, libfreetype6, libfribidi0, libgcc1, libgcrypt20, libgdk-pixbuf2.0-0, libgl1, libglib2.0-0, libglu1-mesa, libglvnd0, libglx0, libgpg-error0, libgraphite2-3, libgtk-3-0, libharfbuzz0b, libice6, libicu63, libjpeg62-turbo, liblz4-1, liblzma5, libmount1, libncursesw6, libogg0, libopenal1, libopengl0, libpango-1.0-0, libpangocairo-1.0-0, libpangoft2-1.0-0, libpcre3, libpixman-1-0, libpng16-16, libpulse0, libpython3.7, libsdl1.2debian, libselinux1, libslang2, libsm6, libsndfile1, libsndio7.0, libstdc++6, libsystemd0, libthai0, libtinfo6, libuuid1, libvorbis0a, libvorbisenc2, libvorbisfile3, libwayland-client0, libwayland-cursor0, libwayland-egl1, libwrap0, libx11-6, libx11-xcb1, libxau6, libxcb-render0, libxcb-shm0, libxcb1, libxcomposite1, libxcursor1, libxdamage1, libxdmcp6, libxext6, libxfixes3, libxi6, libxinerama1, libxkbcommon0, libxmu6, libxrandr2, libxrender1, libxt6, libxtst6, libxxf86vm1, zlib1g
  • Stretch (Debian 9)
Depends: freeglut3, libasound2, libasyncns0, libatk-bridge2.0-0, libatk1.0-0, libatspi2.0-0, libblkid1, libboost-atomic1.62.0, libboost-chrono1.62.0, libboost-date-time1.62.0, libboost-filesystem1.62.0, libboost-log1.62.0, libboost-python1.62.0, libboost-regex1.62.0, libboost-system1.62.0, libboost-thread1.62.0, libbsd0, libc6, libcaca0, libcairo-gobject2, libcairo2, libcap2, libdatrie1, libdbus-1-3, libdrm2, libepoxy0, libexpat1, libffi6, libflac8, libfontconfig1, libfreetype6, libgcc1, libgcrypt20, libgdk-pixbuf2.0-0, libgl1-mesa-glx, libglapi-mesa, libglib2.0-0, libglu1-mesa, libgpg-error0, libgraphite2-3, libgtk-3-0, libharfbuzz0b, libice6, libicu57, libjpeg62-turbo, liblz4-1, liblzma5, libmount1, libncursesw5, libogg0, libopenal1, libpango-1.0-0, libpangocairo-1.0-0, libpangoft2-1.0-0, libpcre3, libpixman-1-0, libpng16-16, libpulse0, libpython3.5, libsdl1.2debian, libselinux1, libslang2, libsm6, libsndfile1, libsndio6.1, libstdc++6, libsystemd0, libthai0, libtinfo5, libuuid1, libvorbis0a, libvorbisenc2, libvorbisfile3, libwayland-client0, libwayland-cursor0, libwayland-egl1-mesa, libwrap0, libx11-6, libx11-xcb1, libxau6, libxcb-dri2-0, libxcb-dri3-0, libxcb-glx0, libxcb-present0, libxcb-render0, libxcb-shm0, libxcb-sync1, libxcb1, libxcomposite1, libxcursor1, libxdamage1, libxdmcp6, libxext6, libxfixes3, libxi6, libxinerama1, libxkbcommon0, libxmu6, libxrandr2, libxrender1, libxshmfence1, libxt6, libxtst6, libxxf86vm1, zlib1g
  • Ubuntu

    • Xenial (Ubuntu 16.04)

Depends: freeglut3, libasound2, libasyncns0, libatk-bridge2.0-0, libatk1.0-0, libatspi2.0-0, libboost-filesystem1.58.0, libboost-log1.58.0, libboost-python1.58.0, libboost-regex1.58.0, libboost-system1.58.0, libboost-thread1.58.0, libc6, libcaca0, libcairo-gobject2, libcairo2, libcapnp-0.5.3, libdatrie1, libdbus-1-3, libdrm2, libepoxy0, libexpat1, libffi6, libflac8, libfontconfig1, libfreetype6, libgcc1, libgcrypt20, libgdk-pixbuf2.0-0, libgl1-mesa-glx, libglapi-mesa, libglib2.0-0, libglu1-mesa, libgpg-error0, libgraphite2-3, libgtk-3-0, libharfbuzz0b, libicu55, libjpeg-turbo8, liblzma5, libmirclient9, libmircommon7, libmircore1, libmirprotobuf3, libncursesw5, libogg0, libopenal1, libpango-1.0-0, libpangocairo-1.0-0, libpangoft2-1.0-0, libpcre3, libpixman-1-0, libpng12-0, libprotobuf-lite9v5, libpulse0, libpython3.5, libsdl1.2debian, libselinux1, libslang2, libsndfile1, libstdc++6, libsystemd0, libthai0, libtinfo5, libvorbis0a, libvorbisenc2, libvorbisfile3, libwayland-client0, libwayland-cursor0, libwayland-egl1-mesa, libwrap0, libx11-6, libx11-xcb1, libxau6, libxcb-dri2-0, libxcb-dri3-0, libxcb-glx0, libxcb-present0, libxcb-render0, libxcb-shm0, libxcb-sync1, libxcb1, libxcomposite1, libxcursor1, libxdamage1, libxdmcp6, libxext6, libxfixes3, libxi6, libxinerama1, libxkbcommon0, libxrandr2, libxrender1, libxshmfence1, libxxf86vm1, zlib1g
  • Bionic (Ubuntu 18.04)
Depends: freeglut3, libasound2, libasyncns0, libatk-bridge2.0-0, libatk1.0-0, libatspi2.0-0, libblkid1, libboost-atomic1.65.1, libboost-chrono1.65.1, libboost-date-time1.65.1, libboost-filesystem1.65.1, libboost-log1.65.1, libboost-python1.65.1, libboost-regex1.65.1, libboost-system1.65.1, libboost-thread1.65.1, libbsd0, libc6, libcaca0, libcairo-gobject2, libcairo2, libdatrie1, libdbus-1-3, libepoxy0, libexpat1, libffi6, libflac8, libfontconfig1, libfreetype6, libgcc1, libgcrypt20, libgdk-pixbuf2.0-0, libgl1, libglib2.0-0, libglu1-mesa, libglvnd0, libglx0, libgpg-error0, libgraphite2-3, libgtk-3-0, libharfbuzz0b, libice6, libicu60, libjpeg-turbo8, liblz4-1, liblzma5, libmount1, libncursesw5, libogg0, libopenal1, libpango-1.0-0, libpangocairo-1.0-0, libpangoft2-1.0-0, libpcre3, libpixman-1-0, libpng16-16, libpulse0, libpython3.6, libsdl1.2debian, libselinux1, libslang2, libsm6, libsndfile1, libsndio6.1, libstdc++6, libsystemd0, libthai0, libtinfo5, libuuid1, libvorbis0a, libvorbisenc2, libvorbisfile3, libwayland-client0, libwayland-cursor0, libwayland-egl1, libwrap0, libx11-6, libxau6, libxcb-render0, libxcb-shm0, libxcb1, libxcomposite1, libxcursor1, libxdamage1, libxdmcp6, libxext6, libxfixes3, libxi6, libxinerama1, libxkbcommon0, libxmu6, libxrandr2, libxrender1, libxt6, libxxf86vm1, zlib1g
  • Focal (Ubuntu 20.04)
Depends: freeglut3, libasound2, libasyncns0, libatk-bridge2.0-0, libatk1.0-0, libatspi2.0-0, libblkid1, libboost-atomic1.67.0, libboost-chrono1.67.0, libboost-date-time1.67.0, libboost-filesystem1.67.0, libboost-log1.67.0, libboost-python1.67.0, libboost-regex1.67.0, libboost-system1.67.0, libboost-thread1.67.0, libbsd0, libc6, libcaca0, libcairo-gobject2, libcairo2, libdatrie1, libdbus-1-3, libepoxy0, libexpat1, libffi7, libflac8, libfontconfig1, libfreetype6, libfribidi0, libgcc-s1, libgcrypt20, libgdk-pixbuf2.0-0, libgl1, libglib2.0-0, libglu1-mesa, libglvnd0, libglx0, libgpg-error0, libgraphite2-3, libgtk-3-0, libharfbuzz0b, libice6, libicu66, libjpeg62, liblz4-1, liblzma5, libmount1, libncursesw6, libogg0, libopenal1, libopengl0, libpango-1.0-0, libpangocairo-1.0-0, libpangoft2-1.0-0, libpcre2-8-0, libpcre3, libpixman-1-0, libpng16-16, libpulse0, libpython3.8, libsdl1.2debian, libselinux1, libslang2, libsm6, libsndfile1, libsndio7.0, libstdc++6, libsystemd0, libthai0, libtinfo6, libuuid1, libvorbis0a, libvorbisenc2, libvorbisfile3, libwayland-client0, libwayland-cursor0, libwayland-egl1, libwrap0, libx11-6, libxau6, libxcb-render0, libxcb-shm0, libxcb1, libxcomposite1, libxcursor1, libxdamage1, libxdmcp6, libxext6, libxfixes3, libxi6, libxinerama1, libxkbcommon0, libxmu6, libxrandr2, libxrender1, libxt6, libxxf86vm1, zlib1g
Was this page helpful?
0 / 5 - 0 ratings

Related issues

nabaco picture nabaco  路  3Comments

LifWirser picture LifWirser  路  6Comments

BenjamenMeyer picture BenjamenMeyer  路  3Comments

nabaco picture nabaco  路  4Comments

nabaco picture nabaco  路  3Comments