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

Allow installing standalone binaries from Toolpacks #1079

Closed
00sapo opened this issue Nov 5, 2024 · 106 comments · Fixed by #1096
Closed

Allow installing standalone binaries from Toolpacks #1079

00sapo opened this issue Nov 5, 2024 · 106 comments · Fixed by #1096

Comments

@00sapo
Copy link
Contributor

00sapo commented Nov 5, 2024

Is your feature request related to a problem? Please describe.

Just expanding the number of packages provided

Describe the solution you'd like

I see two options:

  1. including the whole Toolpacks list in the package list of AM
  2. provide an option to act as package manager for Toolpacks (this option is better suited if users don't trust Toolpacks)
@00sapo 00sapo changed the title Allow installing standalone binaries from Toolpacks Allow installing standalone binaries from [Toolpacks](https://github.com/Azathothas/Toolpacks) Nov 5, 2024
@00sapo 00sapo changed the title Allow installing standalone binaries from [Toolpacks](https://github.com/Azathothas/Toolpacks) Allow installing standalone binaries from Toolpacks Nov 5, 2024
@Samueru-sama
Copy link
Contributor

I was talking with Ivan about this yesterday lol

@00sapo
Copy link
Contributor Author

00sapo commented Nov 5, 2024

I was talking with Ivan about this yesterday lol

I guess GitHub is pushing that repository in the recommendations of our home :P

@Samueru-sama
Copy link
Contributor

I was talking with Ivan about this yesterday lol

I guess GitHub is pushing that repository in the recommendations of our home :P

We are actually in contact with @Azathothas

He also has this repo for appimages and other portable formats. And there are two package managers that use it already dbin and soar

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

Maybe I can add a --toolpacks flag to -i, without adding new options.

If enabled, it will check if the program exists, and if so, it will create an installation script on-the-fly to install the program and to made it updatable.

@Samueru-sama please provide me a direct link to a toolpack and a direct URL to an info page that contains the version of the program.

@Azathothas
Copy link

Hi @ivan-hc

If you use json/toml/yaml, you can have all the information you are looking for, check:
https://github.com/pkgforge/pkgcache/blob/main/Docs/METADATA.md

However if you don't want to parse json, you can still download the binaries but you won't have access to any metadata like version, description or homepage
You also won't be able to view build_logs & build_script which might make the users question trust & security.
Regardless, here's how you can get direct downloads:

!#Static Binaries
wget "https://bin.pkgforge.dev/$(uname -m)/${BIN}"

#For example to download fastfetch
wget "https://bin.pkgforge.dev/$(uname -m)/fastfetch"

#It is not possible to get version without parsing metadata
!#AppImages,AppBundles,FlatImages etc
wget "https://pkg.pkgforge.dev/$(uname -m)/${PKG}.${FORMAT}"

#Examples:
wget "https://pkg.pkgforge.dev/$(uname -m)/steam.AppImage"
wget "https://pkg.pkgforge.dev/$(uname -m)/steam.FlatImage"

!#It is possible to get versions here directly, just add .version at end
curl -qfsSL "https://pkg.pkgforge.dev/$(uname -m)/steam.AppImage.version"
curl -qfsSL "https://pkg.pkgforge.dev/$(uname -m)/steam.FlatImage.version"

A very long (will take long time to load) Readme is here:

For pkgs, it is here:

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

Hi @Azathothas , I just asked:

  • the URL to one app
  • the URL to a file that contains the version

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

Hi @Azathothas , I just asked:

* the URL to one app

* the URL to a file that contains the version

I'll do the test with

wget https://pkg.pkgforge.dev/x86_64/steam.AppImage
curl -Ls https://pkg.pkgforge.dev/x86_64/steam.AppImage.version

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

does --appimage-extract work on flatimages?

@Samueru-sama
Copy link
Contributor

does --appimage-extract work on flatimages?

I don't think so and also it doesn't work on appbundles either.

Only NixAppImages have compatible flags I think.

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

that said, I'll allow only appimages

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

this is the function to create the script on the fly

_toolbox() {
	mkdir -p "$CACHEDIR/toolboxes"
	arg=$(echo "$arg" | tr '[:upper:]' '[:lower:]' )
	curl -Ls "$AMREPO"/templates/AM-SAMPLE-AppImage > "$CACHEDIR/toolboxes/$arg.sh" || exit 1
	sed -i "s#APP=SAMPLE#APP=$arg#g; \
	s#FUNCTION#curl -Ls https://pkg.pkgforge.dev/$ARCH/$arg.version#g; \
	s#wget \"\$version\"#wget https://pkg.pkgforge.dev/$ARCH/$arg#g" "$CACHEDIR/toolboxes/$arg.sh"
	chmod a+x "$CACHEDIR/toolboxes/$arg.sh"
	arg="$CACHEDIR/toolboxes/$arg.sh"
}

I must correct it, because

arg=$(echo "$arg" | tr '[:upper:]' '[:lower:]' )

will made, for example steam.AppImage lowercased, as steam.appimage, and this causes wget to have errors


this is instead how this function will be used, as a local script

				elif curl --output /dev/null --silent --head --fail "$APPSDB"/"$arg"  1>/dev/null; then
					_install_normally
				elif echo "$@" | grep -q -- "--toolpack"; then
					if curl --output /dev/null --silent --head --fail "https://pkg.pkgforge.dev/$ARCH/$arg"  1>/dev/null; then
						_toolbox
						_install_local_script
					else
						echo " 💀 ERROR: \"$arg\" does NOT exist in Toolpacks"
					fi
				else
					echo " 💀 ERROR: \"$arg\" does NOT exist in the database, see \"$AMCLI -l\""
				fi

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

to undestand my issue with lowercased URLs, this is what happe if I remove the

arg=$(echo "$arg" | tr '[:upper:]' '[:lower:]' )

from that function, using this instead

_toolbox() {
	mkdir -p "$CACHEDIR/toolboxes"
	curl -Ls "$AMREPO"/templates/AM-SAMPLE-AppImage > "$CACHEDIR/toolboxes/$arg.sh" || exit 1
	sed -i "s#APP=SAMPLE#APP=$arg#g; \
	s#FUNCTION#curl -Ls https://pkg.pkgforge.dev/$ARCH/$arg.version#g; \
	s#wget \"\$version\"#wget https://pkg.pkgforge.dev/$ARCH/$arg#g" "$CACHEDIR/toolboxes/$arg.sh"
	chmod a+x "$CACHEDIR/toolboxes/$arg.sh"
	arg="$CACHEDIR/toolboxes/$arg.sh"
}
simplescreenrecorder-2024-11-05_19.30.16.mkv.mp4

@Samueru-sama
Copy link
Contributor

will made, for example steam.AppImage lowercased, as steam.appimage, and this causes wget to have errors

I think this needs to be fixed upstream, because yeah when using dbin and soar the user also has to be careful with capitalization.

However if you will only allow appimages, you can instead inject https://pkg.pkgforge.dev/$ARCH/$arg.AppImage having that hardcoded at the end.

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

However if you will only allow appimages, you can instead inject https://pkg.pkgforge.dev/$ARCH/$arg.AppImage having that hardcoded at the end.

this is a good idea

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

anyone who wants to test and improve this function

am --devmode-enable
am -s

the syntax is this

appman -i --toolpack {PROGRAM}

or

am -i --toolpack {PROGRAM}

in addition you can use the flags --user, --debug, while --force-latest should not work

only AppImages are supported.

Have fun!

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

simplescreenrecorder-2024-11-05_19.52.36.mkv.mp4

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

Istantanea_2024-11-05_19-59-04 png

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

Istantanea_2024-11-05_20-00-24 png

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

Maybe, also -a should be redirected on that database

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

@Azathothas how to get only the description and the URL reference of one app from the info?

I'm working on the info creation for -a

	elif echo "$package_name" | grep -q ".toolpack$"; then
		toolpack_appimage_name=$(echo "$package_name" | sed 's/\.toolpack//g')
		toolpack_markdown_page="https://raw.githubusercontent.com/pkgforge/pkgcache/refs/heads/main/$ARCH-Linux/DETAILED.min.md"
		if curl -Ls "$toolpack_markdown_page" | grep -q "$toolpack_appimage_name"; then
			toolpack_description=

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

I have solved with the description

	elif echo "$package_name" | grep -q ".toolpack$"; then
		toolpack_appimage_name=$(echo "$package_name" | sed 's/\.toolpack//g')
		toolpack_markdown_page="https://raw.githubusercontent.com/pkgforge/pkgcache/refs/heads/main/$ARCH-Linux/DETAILED.min.md"
		if curl -Ls "$toolpack_markdown_page" | grep -q "$toolpack_appimage_name"; then
			toolpack_description=$(curl -Ls "https://pkg.pkgforge.dev/$ARCH/86box.AppImage.repology.json" \
			| grep "\"summary\":" | head -1 | sed 's/"summary": //g; s/  //g; s/^"//g; s/",$/./g')
			toolpack_site=
	else

now I need a source

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

This is the first draft of the function changed to show info about the single app installed

_about_show_markdown() {
	if curl -o /dev/null -sIf "$markdown_url"; then
		markdown_page=$(curl -Ls "$markdown_url" \
		| sed '1,${ /^\s*#/ d; /^\s*!/ d; /\[Applications]/d; /\ --- /d; /\ | - | /d; /\!\[/d; }' \
		| sed '$!N;s/^\s*\n\s*$//;P;D')
		echo "$markdown_page" | fold -sw 72 | sed 's/^ //g; s/^/ /g'
	elif echo "$package_name" | grep -q ".toolpack"; then
		toolpack_appimage_name=$(echo "$arg" | sed 's/\.toolpack//g')
		if curl -o /dev/null -sIf "https://pkg.pkgforge.dev/$ARCH/$toolpack_appimage_name.AppImage.repology.json"; then
			toolpack_description=""
			toolpack_site=""
			echo ""
			echo "$toolpack_description" | fold -sw 72 | sed 's/^ //g; s/^/ /g'
			echo ""
			echo "SOURCE: $toolpack_site" | fold -sw 72 | sed 's/^ //g; s/^/ /g'
		fi
	else
		printf ' "%s" IS NOT A VALID ARGUMENT\n' "$package_name"
	fi
}

...however, I give up for the description and source

Istantanea_2024-11-06_00-36-23 png

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 5, 2024

a115057

any contribution is wellcome

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 6, 2024

For AppImages it is much more feasible to create on-the-fly install scripts... but not for other types of Toolpacks, since they may or may not require a launcher or icons. Automating the creation of these scripts like this is out of my reach for now (see option -e)... but I might give it a try anyway (if only the data provided in the project's JSON files were more easily... "decipherable"... and without jq).

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 6, 2024

For AppImages it is much more feasible to create on-the-fly install scripts... but not for other types of Toolpacks, since they may or may not require a launcher or icons. Automating the creation of these scripts like this is out of my reach for now (see option -e)... but I might give it a try anyway (if only the data provided in the project's JSON files were more easily... "decipherable"... and without jq).

will made, for example steam.AppImage lowercased, as steam.appimage, and this causes wget to have errors

I think this needs to be fixed upstream, because yeah when using dbin and soar the user also has to be careful with capitalization.

However if you will only allow appimages, you can instead inject https://pkg.pkgforge.dev/$ARCH/$arg.AppImage having that hardcoded at the end.

@Samueru-sama this kind of approach (currently implemented in "dev") favors AppImage but prevents other formats. @Azathothas I find the indexing of application links a bit "confusing" for management via AM. So either we leave this function only for AppImage and increase the functions for other formats, or we unify the function so that it can handle both.

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 6, 2024

???

Istantanea_2024-11-06_02-58-21 png Istantanea_2024-11-06_03-00-23 png

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 6, 2024

just noticed that this page contain all the info I need also for -a https://raw.githubusercontent.com/pkgforge/pkgcache/refs/heads/main/x86_64-Linux/README.md and maybe I can extend it to -l

EDIT: however, it is for AppImages (and similar) only

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

My command is imprecise because it counts the installed apps

so it should show more lines, not 100 less

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

you are right... I forget to jump counting "metapackages"

@00sapo
Copy link
Contributor Author

00sapo commented Nov 10, 2024

But when using -l I find more packages. I find this:

image

image

image

image

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

bb0638f

there are 79 items I don't include in total count, I call them "metapackages", i.e. many scripts with th exact same content to hel installing programs usinga keyword easier to remember, for example to install platform-tools you can use

am -i adb

or

am -i fastboot

because there are three scripts for platform-tools with the same content but three different names.

kdegames has more than 40 scripts, run am -q kdegames to see them. Same for kdeutils and node (the latter has one other script, npm).


Also, htere are some items that start with ffwa-, they are Firefox profiles, they are 9 in total. Also them are not included in the count.


so in total they are 79 "duplicated" I don't include in the total count.

Try now with am -l --all, the apps should be less than 5000 in total

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

Now am -l --all lists 4989 programs, but am -l --all | awk '/◆/{print $2}' | sort | uniq | wc -l shows 4965

@00sapo
Copy link
Contributor Author

00sapo commented Nov 10, 2024

Try now with am -l --all, the apps should be less than 5000 in total

It is 4989, indeed. But my command still shows different numbers (same as the screenshots above).

@00sapo
Copy link
Contributor Author

00sapo commented Nov 10, 2024

Now am -l --all lists 4989 programs, but am -l --all | awk '/◆/{print $2}' | sort | uniq | wc -l shows 4965

exactly

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

why? 🤔

@xplshn
Copy link
Contributor

xplshn commented Nov 10, 2024

@ivan-hc this is what you call "deduplication", the original metadata uses the binary names, and in the repo, there exists sub-folders for different implementations of the same tool, for example, on the repo, there's busybox/whoami, coreutils/whoami, and so on.

But on the dbin-flavored metadata, the name field accounts for this and in fact reflects the actual download_url.

It looks like this:
image
image

If it weren't for the "deduplication", you wouldn't be missing out on 606 binaries (these binaries are part of Baseutils, there exists "Bin", which contains statically linked executables, "Pkg", which contains portable formats, and "Base", which contains statically linked executables that could be categorized as System Utilities)

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

ok, thanks @xplshn

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

I think many people want to see the total items when closing the list

Istantanea_2024-11-10_02-56-44 png

@Azathothas
Copy link

Azathothas commented Nov 10, 2024

ncdu is not in this list https://bin.ajam.dev/x86_64_Linux/AM.txt

It has been fixed in: https://bin.pkgforge.dev/x86_64/AM.txt (pkgforge/pkgcache@af5067d)

❯ curl -qfsSL "https://bin.pkgforge.dev/x86_64/AM.txt" | grep -i 'ncdu'
| ncdu | disk usage analyzer | https://dev.yorhel.nl | https://bin.pkgforge.dev/x86_64/ncdu | 5decfa473168 |

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

Hey guys, get ready to run

am --devmode-disable

...to exit the developer mode. It's time to merge!

Get ready for AM 9.1 stable!

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

https://github.com/ivan-hc/AM/releases/tag/9.1

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 10, 2024

Folks, I'm sorry for this necrobumping... I have prepared a commit into a parallel branch main...toolpacks-without-appimages

In brief, a lot of AppImages listed among the Toolpacks are duplicates of the existing ones in the AM repository, so this change prevents the installation and the listing of programs with name ending with .appimage... for the ones that are missing, we can dedicate a script for AM, so AM can manage the AppImages, while static binaries, appbundles and flatimages are provided by Toolpacks.

This is the list of Toolpacks without AppImages

Istantanea_2024-11-10_22-44-10

...do you agree with that 👍 ? Or should I leave all as is 👎 ?

@xplshn
Copy link
Contributor

xplshn commented Nov 11, 2024

I don't agree because most AppImages in AM are glibc-only, while most appimages in Toolpacks are meant to work in any system, but I guess its okay, I don't use AM because it requires bash anyways, so this change doesn't really affect me

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 11, 2024

I don't agree because most AppImages in AM are glibc-only, while most appimages in Toolpacks are meant to work in any system, but I guess its okay, I don't use AM because it requires bash anyways, so this change doesn't really affect me

I noticed that there are some appimages I own and that are already in the repo of AM, same for others that come from their upstream developers... this is why I asked.

These are all appimages listed in Toolpacks if you run am -q --toolpack "\.appimage"

 SEARCH RESULTS FOR "\.APPIMAGE":

 ◆ 86box.appimage : Emulator of x86-based machines.
 ◆ acreom.appimage : An IDE based Knowledge Base using Markdown  (AppImage).
 ◆ actual.appimage : A local-first personal finance app.
 ◆ advanced-passgen.appimage : Advanced Password Generator.
 ◆ android-platform-tools.appimage : Android SDK Platform-Tools (adb, fastboot & more).
 ◆ anydesk.appimage : Desktop sharing application, providing remote support and online meetings.
 ◆ bottles.appimage : An easy-to-use wineprefix manager to Run Windows software and games on Linux.
 ◆ brave.appimage : Privacy-oriented browser for Desktop and Laptop computers.
 ◆ browservice.appimage : Browse the modern web on historical browsers.
 ◆ cemu.appimage : Wii U emulator.
 ◆ cpu-x.appimage : A FOSS tool to gather information on CPU, motherboard and more.
 ◆ cursor.appimage : The AI Code Editor.
 ◆ czkawka.appimage : Multi functional app to find duplicates, empty folders, similar images, broken files etc..
 ◆ deadbeef-nightly.appimage : A Modular (Extensible with Plugins) Audio Player that can play & convert almost all Audio Formats (Nightly).
 ◆ deadbeef-stable.appimage : A Modular (Extensible with Plugins) Audio Player that can play & convert almost all Audio Formats (Stable).
 ◆ desktopeditors.appimage : Office suite with text, spreadsheet and presentation editors.
 ◆ discord.appimage : All-in-one cross-platform voice and text chat for gamers.
 ◆ dolphin-emu.appimage : A GameCube / Wii emulator.
 ◆ duckstation.appimage : A fast Simulator/Emulator of the Sony PlayStation(TM) Console.
 ◆ dunst.appimage : Lightweight and customizable notification daemon.
 ◆ firefox-dev.appimage : A web browser built from Firefox source tree (Developer Edition).
 ◆ firefox-esr.appimage : A web browser built from Firefox source tree (ESR).
 ◆ firefox-nightly.appimage : A web browser built from Firefox source tree (Nightly).
 ◆ freetube.appimage : An Open Source YouTube app for privacy.
 ◆ gimp.appimage : The GNU Image Manipulation Program.
 ◆ heroic.appimage : A Native GOG, Epic, and Amazon Games Launcher.
 ◆ i3.appimage : A Tiling Window Manager.
 ◆ inkscape.appimage : FOSS Vector Graphics Editor.
 ◆ inkscape-dev.appimage : FOSS Vector Graphics Editor.
 ◆ kdenlive.appimage : FOSS video editor, based on MLT Framework and KDE Frameworks.
 ◆ krita.appimage : A free and open source painting application.
 ◆ lite-xl.appimage : A lightweight, simple, fast, feature-filled, and extremely extensible Text Editor.
 ◆ microsoft-edge-dev.appimage : The web browser from Microsoft (Dev).
 ◆ microsoft-edge-stable.appimage : The web browser from Microsoft (Stable).
 ◆ mpv.appimage : 🎥 Command line video player.
 ◆ nvtop.appimage : GPU & Accelerator process monitoring for AMD, Apple, Huawei, Intel, NVIDIA and Qualcomm.
 ◆ obsidian.appimage : A powerful knowledge base that works on top of a local folder of plain text Markdown files.
 ◆ obs-studio.appimage : FOSS cross-platform screencasting and streaming app (AppImage
 ◆ olive-editor.appimage : Free open-source non-linear video editor.
 ◆ opera.appimage : Faster, safer and smarter web browser.
 ◆ polybar.appimage : A fast and easy-to-use tool for creating status bars.
 ◆ prismlauncher.appimage : Free, open source launcher for Minecraft.
 ◆ protonup-qt.appimage : Install and manage Proton-GE and Luxtorpeda for Steam and Wine-GE for Lutris.
 ◆ puddletag.appimage : Powerful, simple, audio tag editor for GNU/Linux.
 ◆ qbittorrent-enhanced.appimage : A qBittorrent for with Enhanced Features.
 ◆ rofi.appimage : A window switcher, application launcher and dmenu replacement.
 ◆ ryujinx.appimage : A simple, experimental Nintendo Switch emulator.
 ◆ signal-desktop.appimage : A private messenger for Windows, macOS, and Linux.
 ◆ siyuan.appimage : A privacy-first personal knowledge management system that supports complete offline usage.
 ◆ spotify.appimage : Play music from the Spotify music service.
 ◆ steam.appimage : A video game digital distribution service and storefront from Valve.
 ◆ vlc.appimage : Cross-platform media player and streaming server.
 ◆ vscode.appimage : Open source source code editor developed by Microsoft.
 ◆ wezterm.appimage : A GPU-accelerated cross-platform Terminal Emulator and Multiplexer.
 ◆ wps-office.appimage : Office suite, formerly Kingsoft Office.
 ◆ xemu.appimage : Original Xbox emulator.
 ◆ zettlr.appimage : A markdown editor for writing academic texts and taking notes.

@xplshn I remember I have already many of them, and I suppose that they are the ones owned by their respective packagers... the reason is not to have duplicates.

What are the missing ones in AM?

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 11, 2024

Just checked and the only one I have not in the database is the appimage of VScode, since I have the original portable archive code from upstream... also, the one you named desktopeditors.appimage is onlyoffice in my repo.

EDIT: also, the mpv script allows the installation of two different appimages of MPV, the mine and the one of @Samueru-sama

@Azathothas
Copy link

All of the appimages that are added to pkgcache are done so only after validating icons, desktops etc.
Zsync is also embedded.
So these no longer resemble the source i.e official releases from "developers"
This is done so end users don't have to deal with broken appimages.

So if you want to only include official appimages, you should exclude the entire catalog.

What are the missing ones in AM?

None. And probably for a long time, since we will try adding appimages that AM already has first, before adding new ones.

the one you named desktopeditors.appimage is onlyoffice in my repo.

We use repology & official app_id for naming schema. It's done this way so we can generate additional metadata easily.

so AM can manage the AppImages, while static binaries, appbundles and flatimages are provided by Toolpacks.

Good Decision. I agree.
In the future, pkgforge's AppImage will not resemble anything from the official sources, so it can be misleading.

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 11, 2024

All of the appimages that are added to pkgcache are done so only after validating icons, desktops etc. Zsync is also embedded. So these no longer resemble the source i.e official releases from "developers" This is done so end users don't have to deal with broken appimages.

that's exactly the point. I built my database by relying on the work of the people who own the AppImage packages, whether they are working or not, and with the -a option and the download URLs inside the scripts... but especially for -a, which uses the catalog pages... users have direct contact with the original developer or packager. And they can ask him to add features or improve the quality of the packages. In this way, users push the developer to improve what he does.

If we decided to do everything ourselves, and without notifying the upstream developer, we would go against the very concept of "open-source community". Projects improve because there are users who report bugs, request features... and other users who contribute to improving the project. And that's exactly what happened for this AM release, 9.1. I wouldn't have gotten to release it if I hadn't received proposals.

So, your packages can be better, of course... I don't doubt it. But if I were the developer of these packages (and for a good part they ARE REALLY packages made by me), I would prefer you to make me a pull request. Also because in the metadata there is a reference to my repository as a source. I prefer to take my responsibilities, take my blame as well as the credit.

That said, I really thank you for the work you have done... but I will merge that commit into main. I have to do it, at this point.

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 11, 2024

I've screwed up my projects so many times... but if they're better today it's because I've learned from my mistakes.

I guess I'm not the only one who thinks this way, right?

@Azathothas
Copy link

whether they are working or not, and with the -a option and the download URLs inside the scripts... but especially for -a, which uses the catalog pages... users have direct contact with the original developer or packager.

soar query steam.appimage #will display everything

soar log steam.appimage | less #will display the raw CI Build logs

soar inspect steam.appimage | less #will display the build script that was used

Even if the upstream doesn't provide logs or behaves shady, the way of extracting and checking the contents and repacking ensures that you will always have logs for any package from pkgcache

But if I were the developer of these packages (and for a good part they ARE REALLY packages made by me), I would prefer you to make me a pull request.

You can see my activity on GitHub, though you would have to filter by the date ranging at least a year ago
The tldr is, 99% of them don't care. The 1% who do, they are slow to respond, lack the technical skills or don't even want to fix it.
That leaves about 0.1% or less who actually behave like you are describing them, but this 0.1% means I waste 10–15 mins writing a detailed issue or PR for an app which will statistically will prove to be just a massive waste of time.
The decision to fix stuff was born out of necessity not necessarily frustration, but frustration also makes up the majority of the rationale.

I've screwed up my projects so many times... but if they're better today it's because I've learned from my mistakes.
I guess I'm not the only one who thinks this way, right?

I went from Toolpacks >> Toolpacks Extras >> PkgForge, and still can't migrate Toolpacks completely to pkgforge because I was dumb when I started it and screwed up so much that now it's impossible to migrate it.
We all make silly mistakes, it's part of the process.

@Samueru-sama
Copy link
Contributor

Samueru-sama commented Nov 11, 2024

If we decided to do everything ourselves, and without notifying the upstream developer, we would go against the very concept of "open-source community". Projects improve because there are users who report bugs, request features... and other users who contribute to improving the project.

Ivan see this PR I made at helix fixing an issue with their appimage: helix-editor/helix#11243

the lead dev didn't like that I used go-appimage because what if malware?! (even though they were already using linuxdeploy) so I went and modified the PR to even not use either of the two.

The PR is still open waiting...

I also have another at lite-xl open and waiting, this is one is even worse because the current appimage no longer works.

@ivan-hc
Copy link
Owner

ivan-hc commented Nov 11, 2024

@Samueru-sama @Azathothas Guys, the more you come to tell me... all the more reason, YOU should take the place of the upstream packager/developer... with all the merits of the case.

I say this for you, you risk doing the work for those who do not deserve it.

And @Azathothas , precisely because you mentioned the slow responsiveness of certain developers... I am always here, actively, and at your disposal, as long as I am well... so why do the work twice? Help me to do it well instead, if you have better solutions.

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

Successfully merging a pull request may close this issue.

5 participants