QB64-Phoenix-Edition / QB64pe

The QB64 Phoenix Edition Repository
https://qb64phoenix.com
Other
132 stars 26 forks source link

setup_lnx.sh not installed dependancies #62

Open AtomicSlaughter opened 2 years ago

AtomicSlaughter commented 2 years ago

ive discovered that the bash script is not installing some dependacies correctly on Debian based disros, as the grep command is detecting the word make in the descriptions of the packages and assuming that make is installed.

I have found a work around that just tells apt to install everything as apt ignores previously installed packages

This is my fix:

pkg_install() {

Search

if [ "$DISTRO" == "linuxmint" ] || [ "$DISTRO" == "ubuntu" ] || [ "$DISTRO" == "debian" ] || [ "$DISTRO" == "zorin" ]; then echo "testing debian builds"
$installer_command $pkg_list

elseif

packages_to_install= for pkg in $pkg_list; do if [ -z "$(echo "$installed_packages" | grep $pkg)" ]; then packages_to_install="$packages_to_install $pkg" fi done fi

if [ -n "$packages_to_install" ]; then echo "Installing required packages. If prompted to, please enter your password." $installer_command $packages_to_install fi }

mkilgore commented 2 years ago

183 fixed the immediate problems here in regards to installing make on Ubuntu, the grep issue still remains however. We could consider the suggestion in this card, but I believe I did it the current way to avoid running sudo if it was unnecessary. In either case, biggest barrier to this card is the testing since it requires testing many distros and is generally a slow and painful process.

I think the plan here should be to add some container-based testing for the distribution artifact and ./setup_lnx.sh (We could also run the other testing in the containers as well, but I see that as less necessary and would get more complicated). I looked at it a few months ago and of the four "distribution families" that we support in ./setup_lnx.sh, they all have containers for most of their members, so we should be capable of automatically testing all the important ones. Adding this kind of testing will make any changes to ./setup_lnx.sh in the future much easier.

I think the basic idea would be a script that uses docker to control the containers externally. We can extract the distribution artifact into a directory and then share it with a container when we start it, and then docker exec .. ./setup_lnx.sh the container to run the setup script and observe the result. We could also docker exec ... ./qb64pe -v to verify that the built QB64-PE has basic functionality.