Skip to content

Commit 5b78b2e

Browse files
xoascfCarterLi
andauthored
Packages (Linux): add Linglong support (#1214)
Support for counting Linglong applications installed in Deepin, Ubuntu and Debian distros. Packages are installed using the ``ll-cli`` package manager frontend: https://linglong.dev/guide/ll-cli/introduction.html#ll-cli%E7%AE%80%E4%BB%8B --------- Co-authored-by: Carter Li <[email protected]>
1 parent 773b8db commit 5b78b2e

File tree

4 files changed

+12
-2
lines changed

4 files changed

+12
-2
lines changed

Diff for: src/detection/packages/packages.h

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ typedef struct FFPackagesResult
1717
uint32_t guixHome;
1818
uint32_t guixSystem;
1919
uint32_t guixUser;
20+
uint32_t linglong;
2021
uint32_t lpkg;
2122
uint32_t lpkgbuild;
2223
uint32_t nixDefault;

Diff for: src/detection/packages/packages_linux.c

+1
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,7 @@ static void getPackageCounts(FFstrbuf* baseDir, FFPackagesResult* packageCounts,
471471
{
472472
packageCounts->guixSystem += getGuixPackages(baseDir, "/run/current-system/profile");
473473
}
474+
if (!(options->disabled & FF_PACKAGES_FLAG_LINGLONG_BIT)) packageCounts->linglong += getNumElements(baseDir, "/var/lib/linglong/repo/refs/heads/main", DT_DIR);
474475
}
475476

476477
static void getPackageCountsRegular(FFstrbuf* baseDir, FFPackagesResult* packageCounts, FFPackagesOptions* options)

Diff for: src/modules/packages/option.h

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ typedef enum FFPackagesFlags
3131
FF_PACKAGES_FLAG_LPKG_BIT = 1 << 21,
3232
FF_PACKAGES_FLAG_LPKGBUILD_BIT = 1 << 22,
3333
FF_PACKAGES_FLAG_GUIX_BIT = 1 << 23,
34+
FF_PACKAGES_FLAG_LINGLONG_BIT = 1 << 24,
3435
} FFPackagesFlags;
3536

3637
typedef struct FFPackagesOptions

Diff for: src/modules/packages/packages.c

+9-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "modules/packages/packages.h"
55
#include "util/stringUtils.h"
66

7-
#define FF_PACKAGES_NUM_FORMAT_ARGS 36
7+
#define FF_PACKAGES_NUM_FORMAT_ARGS 37
88

99
void ffPrintPackages(FFPackagesOptions* options)
1010
{
@@ -71,6 +71,7 @@ void ffPrintPackages(FFPackagesOptions* options)
7171
FF_PRINT_PACKAGE_NAME(guixSystem, "guix-system")
7272
FF_PRINT_PACKAGE_NAME(guixUser, "guix-user")
7373
FF_PRINT_PACKAGE_NAME(guixHome, "guix-home")
74+
FF_PRINT_PACKAGE(linglong)
7475

7576
putchar('\n');
7677
}
@@ -113,6 +114,7 @@ void ffPrintPackages(FFPackagesOptions* options)
113114
{FF_FORMAT_ARG_TYPE_UINT, &counts.guixSystem, "guix-system"},
114115
{FF_FORMAT_ARG_TYPE_UINT, &counts.guixUser, "guix-user"},
115116
{FF_FORMAT_ARG_TYPE_UINT, &counts.guixHome, "guix-home"},
117+
{FF_FORMAT_ARG_TYPE_UINT, &counts.linglong, "linglong"},
116118
{FF_FORMAT_ARG_TYPE_UINT, &nixAll, "nix-all"},
117119
{FF_FORMAT_ARG_TYPE_UINT, &flatpakAll, "flatpak-all"},
118120
{FF_FORMAT_ARG_TYPE_UINT, &brewAll, "brew-all"},
@@ -171,6 +173,7 @@ bool ffParsePackagesCommandOptions(FFPackagesOptions* options, const char* key,
171173
case 'L': if (false);
172174
FF_TEST_PACKAGE_NAME(LPKG)
173175
FF_TEST_PACKAGE_NAME(LPKGBUILD)
176+
FF_TEST_PACKAGE_NAME(LINGLONG)
174177
break;
175178
case 'M': if (false);
176179
FF_TEST_PACKAGE_NAME(MACPORTS)
@@ -279,6 +282,7 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module)
279282
case 'L': if (false);
280283
FF_TEST_PACKAGE_NAME(LPKG)
281284
FF_TEST_PACKAGE_NAME(LPKGBUILD)
285+
FF_TEST_PACKAGE_NAME(LINGLONG)
282286
break;
283287
case 'M': if (false);
284288
FF_TEST_PACKAGE_NAME(MACPORTS)
@@ -356,6 +360,7 @@ void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* do
356360
FF_TEST_PACKAGE_NAME(AM)
357361
FF_TEST_PACKAGE_NAME(SORCERY)
358362
FF_TEST_PACKAGE_NAME(GUIX)
363+
FF_TEST_PACKAGE_NAME(LINGLONG)
359364
#undef FF_TEST_PACKAGE_NAME
360365
}
361366
}
@@ -406,12 +411,13 @@ void ffGeneratePackagesJsonResult(FF_MAYBE_UNUSED FFPackagesOptions* options, yy
406411
FF_APPEND_PACKAGE_COUNT(guixSystem)
407412
FF_APPEND_PACKAGE_COUNT(guixUser)
408413
FF_APPEND_PACKAGE_COUNT(guixHome)
414+
FF_APPEND_PACKAGE_COUNT(linglong)
409415
yyjson_mut_obj_add_strbuf(doc, obj, "pacmanBranch", &counts.pacmanBranch);
410416
}
411417

412418
void ffPrintPackagesHelpFormat(void)
413419
{
414-
FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_PACKAGES_MODULE_NAME, "{2} (pacman){?3}[{3}]{?}, {4} (dpkg), {5} (rpm), {6} (emerge), {7} (eopkg), {8} (xbps), {9} (nix-system), {10} (nix-user), {11} (nix-default), {12} (apk), {13} (pkg), {14} (flatpak-system), {15} (flatpack-user), {16} (snap), {17} (brew), {18} (brew-cask), {19} (MacPorts), {20} (scoop), {21} (choco), {22} (pkgtool), {23} (paludis), {24} (winget), {25} (opkg), {26} (am), {27} (sorcery), {28} (lpkg), {29} (lpkgbuild), {30} (guix-system), {31} (guix-user), {32} (guix-home)", FF_PACKAGES_NUM_FORMAT_ARGS, ((const char* []) {
420+
FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_PACKAGES_MODULE_NAME, "{2} (pacman){?3}[{3}]{?}, {4} (dpkg), {5} (rpm), {6} (emerge), {7} (eopkg), {8} (xbps), {9} (nix-system), {10} (nix-user), {11} (nix-default), {12} (apk), {13} (pkg), {14} (flatpak-system), {15} (flatpack-user), {16} (snap), {17} (brew), {18} (brew-cask), {19} (MacPorts), {20} (scoop), {21} (choco), {22} (pkgtool), {23} (paludis), {24} (winget), {25} (opkg), {26} (am), {27} (sorcery), {28} (lpkg), {29} (lpkgbuild), {30} (guix-system), {31} (guix-user), {32} (guix-home), {33} (linglong)", FF_PACKAGES_NUM_FORMAT_ARGS, ((const char* []) {
415421
"Number of all packages - all",
416422
"Number of pacman packages - pacman",
417423
"Pacman branch on manjaro - pacman-branch",
@@ -444,6 +450,7 @@ void ffPrintPackagesHelpFormat(void)
444450
"Number of guix-system packages - guix-system",
445451
"Number of guix-user packages - guix-user",
446452
"Number of guix-home packages - guix-home",
453+
"Number of linglong packages - linglong",
447454
"Total number of all nix packages - nix-all",
448455
"Total number of all flatpak app packages - flatpak-all",
449456
"Total number of all brew packages - brew-all",

0 commit comments

Comments
 (0)