Skip to content

Commit 4e78f1b

Browse files
authored
Packages (Linux): adds support for package detection for CRUX linux
1 parent 62f78ca commit 4e78f1b

5 files changed

Lines changed: 13 additions & 1 deletion

File tree

doc/json_schema.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@
446446
"type": "string"
447447
},
448448
"packagesFormat": {
449-
"description": "Output format for the `Packages` module. See Wiki for formatting syntax\n 1. {am-system}: Number of am-system packages\n 2. {am-user}: Number of am-user (aka appman) packages\n 3. {appimage}: Number of appimage packages\n 4. {apk}: Number of apk packages\n 5. {brew}: Number of brew packages\n 6. {brew-cask}: Number of brew-cask packages\n 7. {cards}: Number of cards packages\n 8. {choco}: Number of choco packages\n 9. {dpkg}: Number of dpkg packages\n 10. {emerge}: Number of emerge packages\n 11. {eopkg}: Number of eopkg packages\n 12. {flatpak-system}: Number of flatpak-system app packages\n 13. {flatpak-user}: Number of flatpak-user app packages\n 14. {guix-home}: Number of guix-home packages\n 15. {guix-system}: Number of guix-system packages\n 16. {guix-user}: Number of guix-user packages\n 17. {hpkg-system}: Number of hpkg-system packages\n 18. {hpkg-user}: Number of hpkg-user packages\n 19. {install-release}: Number of install-release packages\n 20. {kiss}: Number of kiss packages\n 21. {linglong}: Number of linglong packages\n 22. {lpkg}: Number of lpkg packages\n 23. {lpkgbuild}: Number of lpkgbuild packages\n 24. {macports}: Number of macports packages\n 25. {mport}: Number of mport packages\n 26. {moss}: Number of moss packages\n 27. {nix-default}: Number of nix-default packages\n 28. {nix-system}: Number of nix-system packages\n 29. {nix-user}: Number of nix-user packages\n 30. {opkg}: Number of opkg packages\n 31. {pacman}: Number of pacman packages\n 32. {pacman-branch}: Pacman branch on manjaro\n 33. {pacstall}: Number of pacstall packages\n 34. {paludis}: Number of paludis packages\n 35. {pisi}: Number of pisi packages\n 36. {pkg}: Number of pkg packages\n 37. {pkgsrc}: Number of pkgsrc packages\n 38. {pkgtool}: Number of pkgtool packages\n 39. {porg}: Number of porg packages\n 40. {rpm}: Number of rpm packages\n 41. {scoop-global}: Number of scoop-global packages\n 42. {scoop-user}: Number of scoop-user packages\n 43. {snap}: Number of snap packages\n 44. {soar}: Number of soar packages\n 45. {sorcery}: Number of sorcery packages\n 46. {winget}: Number of winget packages\n 47. {xbps}: Number of xbps packages\n 48. {brew-all}: Total number of all brew packages\n 49. {flatpak-all}: Total number of all flatpak app packages\n 50. {guix-all}: Total number of all guix packages\n 51. {hpkg-all}: Total number of all hpkg packages\n 52. {nix-all}: Total number of all nix packages\n 53. {all}: Number of all packages",
449+
"description": "Output format for the `Packages` module. See Wiki for formatting syntax\n 1. {am-system}: Number of am-system packages\n 2. {am-user}: Number of am-user (aka appman) packages\n 3. {appimage}: Number of appimage packages\n 4. {apk}: Number of apk packages\n 5. {brew}: Number of brew packages\n 6. {brew-cask}: Number of brew-cask packages\n 7. {cards}: Number of cards packages\n 8. {choco}: Number of choco packages\n 9. {crux}: Number of crux packages\n 10. {dpkg}: Number of dpkg packages\n 11. {emerge}: Number of emerge packages\n 12. {eopkg}: Number of eopkg packages\n 13. {flatpak-system}: Number of flatpak-system app packages\n 14. {flatpak-user}: Number of flatpak-user app packages\n 15. {guix-home}: Number of guix-home packages\n 16. {guix-system}: Number of guix-system packages\n 17. {guix-user}: Number of guix-user packages\n 18. {hpkg-system}: Number of hpkg-system packages\n 19. {hpkg-user}: Number of hpkg-user packages\n 20. {install-release}: Number of install-release packages\n 21. {kiss}: Number of kiss packages\n 22. {linglong}: Number of linglong packages\n 23. {lpkg}: Number of lpkg packages\n 24. {lpkgbuild}: Number of lpkgbuild packages\n 25. {macports}: Number of macports packages\n 26. {mport}: Number of mport packages\n 27. {moss}: Number of moss packages\n 28. {nix-default}: Number of nix-default packages\n 29. {nix-system}: Number of nix-system packages\n 30. {nix-user}: Number of nix-user packages\n 31. {opkg}: Number of opkg packages\n 32. {pacman}: Number of pacman packages\n 33. {pacman-branch}: Pacman branch on manjaro\n 34. {pacstall}: Number of pacstall packages\n 35. {paludis}: Number of paludis packages\n 36. {pisi}: Number of pisi packages\n 37. {pkg}: Number of pkg packages\n 38. {pkgsrc}: Number of pkgsrc packages\n 39. {pkgtool}: Number of pkgtool packages\n 40. {porg}: Number of porg packages\n 41. {rpm}: Number of rpm packages\n 42. {scoop-global}: Number of scoop-global packages\n 43. {scoop-user}: Number of scoop-user packages\n 44. {snap}: Number of snap packages\n 45. {soar}: Number of soar packages\n 46. {sorcery}: Number of sorcery packages\n 47. {winget}: Number of winget packages\n 48. {xbps}: Number of xbps packages\n 49. {brew-all}: Total number of all brew packages\n 50. {flatpak-all}: Total number of all flatpak app packages\n 51. {guix-all}: Total number of all guix packages\n 52. {hpkg-all}: Total number of all hpkg packages\n 53. {nix-all}: Total number of all nix packages\n 54. {all}: Number of all packages",
450450
"type": "string"
451451
},
452452
"physicaldiskFormat": {
@@ -3763,6 +3763,7 @@
37633763
"apk",
37643764
"brew",
37653765
"choco",
3766+
"crux",
37663767
"dpkg",
37673768
"emerge",
37683769
"eopkg",

src/detection/packages/packages.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ typedef struct FFPackagesResult {
1212
uint32_t brewCask;
1313
uint32_t cards;
1414
uint32_t choco;
15+
uint32_t crux;
1516
uint32_t dpkg;
1617
uint32_t emerge;
1718
uint32_t eopkg;

src/detection/packages/packages_linux.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,9 @@ static void getPackageCounts(FFstrbuf* baseDir, FFPackagesResult* packageCounts,
487487
if (FF_PACKAGES_IS_ENABLED(options, APK)) {
488488
packageCounts->apk += getNumStrings(baseDir, "/lib/apk/db/installed", "C:Q", "apk");
489489
}
490+
if (FF_PACKAGES_IS_ENABLED(options, CRUX)) {
491+
packageCounts->crux += getNumStrings(baseDir, "/var/lib/pkg/db", "\n\n", "crux");
492+
}
490493
if (FF_PACKAGES_IS_ENABLED(options, DPKG)) {
491494
packageCounts->dpkg += getNumStrings(baseDir, "/var/lib/dpkg/status", "Status: install ok installed", "dpkg");
492495
}

src/modules/packages/option.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ typedef enum FFPackagesFlags: uint64_t {
4141
FF_PACKAGES_FLAG_CARDS_BIT = UINT64_C(1) << 34U,
4242
FF_PACKAGES_FLAG_PORG_BIT = UINT64_C(1) << 35U,
4343
FF_PACKAGES_FLAG_INSTALLRELEASE_BIT = UINT64_C(1) << 36U,
44+
FF_PACKAGES_FLAG_CRUX_BIT = UINT64_C(1) << 37U,
4445
} FFPackagesFlags;
4546
static_assert(sizeof(FFPackagesFlags) == sizeof(uint64_t), "");
4647

src/modules/packages/packages.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ bool ffPrintPackages(FFPackagesOptions* options) {
6363
}
6464
FF_PRINT_PACKAGE(cards)
6565
FF_PRINT_PACKAGE(choco)
66+
FF_PRINT_PACKAGE(crux)
6667
FF_PRINT_PACKAGE(dpkg)
6768
FF_PRINT_PACKAGE(emerge)
6869
FF_PRINT_PACKAGE(eopkg)
@@ -154,6 +155,7 @@ bool ffPrintPackages(FFPackagesOptions* options) {
154155
FF_ARG(counts.brewCask, "brew-cask"),
155156
FF_ARG(counts.cards, "cards"),
156157
FF_ARG(counts.choco, "choco"),
158+
FF_ARG(counts.choco, "crux"),
157159
FF_ARG(counts.dpkg, "dpkg"),
158160
FF_ARG(counts.emerge, "emerge"),
159161
FF_ARG(counts.eopkg, "eopkg"),
@@ -257,6 +259,7 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module) {
257259
;
258260
FF_TEST_PACKAGE_NAME(CARDS)
259261
FF_TEST_PACKAGE_NAME(CHOCO)
262+
FF_TEST_PACKAGE_NAME(CRUX)
260263
break;
261264
case 'D':
262265
if (false)
@@ -390,6 +393,7 @@ void ffGeneratePackagesJsonConfig(FFPackagesOptions* options, yyjson_mut_doc* do
390393
FF_TEST_PACKAGE_NAME(BREW)
391394
FF_TEST_PACKAGE_NAME(CARDS)
392395
FF_TEST_PACKAGE_NAME(CHOCO)
396+
FF_TEST_PACKAGE_NAME(CRUX)
393397
FF_TEST_PACKAGE_NAME(DPKG)
394398
FF_TEST_PACKAGE_NAME(EMERGE)
395399
FF_TEST_PACKAGE_NAME(EOPKG)
@@ -451,6 +455,7 @@ bool ffGeneratePackagesJsonResult(FFPackagesOptions* options, yyjson_mut_doc* do
451455
FF_APPEND_PACKAGE_COUNT(brewCask)
452456
FF_APPEND_PACKAGE_COUNT(cards)
453457
FF_APPEND_PACKAGE_COUNT(choco)
458+
FF_APPEND_PACKAGE_COUNT(crux)
454459
FF_APPEND_PACKAGE_COUNT(dpkg)
455460
FF_APPEND_PACKAGE_COUNT(emerge)
456461
FF_APPEND_PACKAGE_COUNT(eopkg)
@@ -549,6 +554,7 @@ FFModuleBaseInfo ffPackagesModuleInfo = {
549554
{ "Number of brew-cask packages", "brew-cask" },
550555
{ "Number of cards packages", "cards" },
551556
{ "Number of choco packages", "choco" },
557+
{ "Number of crux packages", "crux" },
552558
{ "Number of dpkg packages", "dpkg" },
553559
{ "Number of emerge packages", "emerge" },
554560
{ "Number of eopkg packages", "eopkg" },

0 commit comments

Comments
 (0)