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

Add support for AppStream 1.0 #2099

Merged
merged 21 commits into from
Feb 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
415fee6
GitHub CI: Add Fedora build and test job
meisenzahl Nov 13, 2023
ec988cd
meson: Add support for AppStream 1.0
meisenzahl Nov 13, 2023
9706f26
FlatpakBackend: Add support for AppStream 1.0
meisenzahl Nov 13, 2023
7049070
Package: Add support for AppStream 1.0
meisenzahl Nov 13, 2023
bb780e7
PackageKitBackend: Add support for AppStream 1.0
meisenzahl Nov 13, 2023
5450a42
AppInfoView: Add support for AppStream 1.0
meisenzahl Nov 13, 2023
2c5a941
AppInfoView: Add support for AppStream 1.0 locale handling
meisenzahl Nov 13, 2023
002a648
ReleaseRow: Add support for AppStream 1.0
meisenzahl Nov 13, 2023
58a6e0a
FlatpakBackend: Fix formatting
meisenzahl Nov 13, 2023
836e630
PackageKitBackend: Fix formatting
meisenzahl Nov 13, 2023
0794215
GitHub CI: Fix container image reference
meisenzahl Nov 13, 2023
89c6929
GitHub CI: Fix copy paste error
meisenzahl Nov 13, 2023
0b4f128
GitHub CI: Add more configurations
meisenzahl Nov 13, 2023
2342ea5
Merge branch 'master' into appstream-1-0
meisenzahl Nov 15, 2023
d93e135
FlatpakBackend, PackageKitBackend: Fix build after the as_component_b…
bobby285271 Dec 4, 2023
1353cfc
Update src/Core/Package.vala
davidmhewitt Dec 12, 2023
721ece3
Merge branch 'master' into appstream-1-0
davidmhewitt Dec 12, 2023
d0bde20
Merge review comments, with minor changes
danirabbit Feb 6, 2024
8589b14
Merge branch 'master' into appstream-1-0
danirabbit Feb 6, 2024
9e335a6
Update main.yml
danirabbit Feb 6, 2024
c2adcea
Update main.yml
danirabbit Feb 6, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions src/Core/FlatpakBackend.vala
Original file line number Diff line number Diff line change
Expand Up @@ -400,8 +400,13 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {

var category_array = new GLib.GenericArray<AppStream.Category> ();
category_array.add (category);
#if HAS_APPSTREAM_1_0
AppStream.utils_sort_components_into_categories (user_appstream_pool.get_components ().as_array (), category_array, false);
AppStream.utils_sort_components_into_categories (system_appstream_pool.get_components ().as_array (), category_array, false);
#else
AppStream.utils_sort_components_into_categories (user_appstream_pool.get_components (), category_array, false);
AppStream.utils_sort_components_into_categories (system_appstream_pool.get_components (), category_array, false);
#endif
components = category.get_components ();

var apps = new Gee.TreeSet<AppCenterCore.Package> ();
Expand All @@ -417,13 +422,21 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {
var apps = new Gee.TreeSet<AppCenterCore.Package> ();
var comps = user_appstream_pool.search (query);
if (category == null) {
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var packages = get_packages_for_component_id (comp.get_id ());
apps.add_all (packages);
});
} else {
var cat_packages = get_applications_for_category (category);
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var packages = get_packages_for_component_id (comp.get_id ());
foreach (var package in packages) {
if (package in cat_packages) {
Expand All @@ -435,13 +448,21 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {

comps = system_appstream_pool.search (query);
if (category == null) {
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var packages = get_packages_for_component_id (comp.get_id ());
apps.add_all (packages);
});
} else {
var cat_packages = get_applications_for_category (category);
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var packages = get_packages_for_component_id (comp.get_id ());
foreach (var package in packages) {
if (package in cat_packages) {
Expand Down Expand Up @@ -510,7 +531,11 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {
continue;
}

#if HAS_APPSTREAM_1_0
if (package.component.get_developer ().get_name () == author) {
#else
if (package.component.developer_name == author) {
#endif
package_ids.add (package.component.id);

AppCenterCore.Package? user_package = null;
Expand Down Expand Up @@ -1095,7 +1120,11 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {
warning ("Errors found in flatpak appdata, some components may be incomplete/missing: %s", e.message);
} finally {
var comp_validator = ComponentValidator.get_default ();
#if HAS_APPSTREAM_1_0
user_appstream_pool.get_components ().as_array ().foreach ((comp) => {
#else
user_appstream_pool.get_components ().foreach ((comp) => {
#endif
if (!comp_validator.validate (comp)) {
return;
}
Expand Down Expand Up @@ -1133,7 +1162,11 @@ public class AppCenterCore.FlatpakBackend : Backend, Object {
warning ("Errors found in flatpak appdata, some components may be incomplete/missing: %s", e.message);
} finally {
var comp_validator = ComponentValidator.get_default ();
#if HAS_APPSTREAM_1_0
system_appstream_pool.get_components ().as_array ().foreach ((comp) => {
#else
system_appstream_pool.get_components ().foreach ((comp) => {
#endif
if (!comp_validator.validate (comp)) {
return;
}
Expand Down
12 changes: 12 additions & 0 deletions src/Core/Package.vala
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,11 @@ public class AppCenterCore.Package : Object {
return _author;
}

#if HAS_APPSTREAM_1_0
_author = component.get_developer ().get_name ();
#else
_author = component.developer_name;
#endif

if (_author == null) {
var project_group = component.project_group;
Expand Down Expand Up @@ -677,7 +681,11 @@ public class AppCenterCore.Package : Object {
}

try {
#if HAS_APPSTREAM_1_0
description = AppStream.markup_convert (description, TEXT);
#else
description = AppStream.markup_convert_simple (description);
#endif
} catch (Error e) {
warning ("Failed to convert description to markup: %s", e.message);
}
Expand Down Expand Up @@ -919,7 +927,11 @@ public class AppCenterCore.Package : Object {
}

public AppStream.Release? get_newest_release () {
#if HAS_APPSTREAM_1_0
var releases = component.get_releases_plain ().get_entries ();
#else
var releases = component.get_releases ();
#endif
releases.sort_with_data ((a, b) => {
if (a.get_version () == null || b.get_version () == null) {
if (a.get_version () != null) {
Expand Down
27 changes: 26 additions & 1 deletion src/Core/PackageKitBackend.vala
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,11 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {
} finally {
var new_package_list = new Gee.HashMap<string, Package> ();
var comp_validator = ComponentValidator.get_default ();
#if HAS_APPSTREAM_1_0
appstream_pool.get_components ().as_array ().foreach ((comp) => {
#else
appstream_pool.get_components ().foreach ((comp) => {
#endif
if (!comp_validator.validate (comp)) {
return;
}
Expand Down Expand Up @@ -317,7 +321,12 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {
component.set_id (id);
component.set_origin (Package.APPCENTER_PACKAGE_ORIGIN);

#if HAS_APPSTREAM_0_15
#if HAS_APPSTREAM_1_0
var components = new AppStream.ComponentBox (AppStream.ComponentBoxFlags.NONE);
components.add (component);

appstream_pool.add_components (components);
#elif HAS_APPSTREAM_0_15
var components = new GenericArray<AppStream.Component> ();
components.add (component);

Expand Down Expand Up @@ -430,7 +439,11 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {
break;
}

#if HAS_APPSTREAM_1_0
if (package.component.get_developer ().get_name () == author) {
#else
if (package.component.developer_name == author) {
#endif
packages.add (package);
}
}
Expand All @@ -447,7 +460,11 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {

var category_array = new GLib.GenericArray<AppStream.Category> ();
category_array.add (category);
#if HAS_APPSTREAM_1_0
AppStream.utils_sort_components_into_categories (appstream_pool.get_components ().as_array (), category_array, true);
#else
AppStream.utils_sort_components_into_categories (appstream_pool.get_components (), category_array, true);
#endif
components = category.get_components ();

var apps = new Gee.TreeSet<AppCenterCore.Package> ();
Expand All @@ -465,15 +482,23 @@ public class AppCenterCore.PackageKitBackend : Backend, Object {
var apps = new Gee.TreeSet<AppCenterCore.Package> ();
var comps = appstream_pool.search (query);
if (category == null) {
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var package = get_package_for_component_id (comp.get_id ());
if (package != null) {
apps.add (package);
}
});
} else {
var cat_packages = get_applications_for_category (category);
#if HAS_APPSTREAM_1_0
comps.as_array ().foreach ((comp) => {
#else
comps.foreach ((comp) => {
#endif
var package = get_package_for_component_id (comp.get_id ());
if (package != null && package in cat_packages) {
apps.add (package);
Expand Down
22 changes: 21 additions & 1 deletion src/Views/AppInfoView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,16 @@ public class AppCenter.Views.AppInfoView : AppCenter.AbstractAppContainer {
oars_flowbox.add (uncurated);
}
#endif

#if HAS_APPSTREAM_1_0
var active_locale = "en-US";
if (package_component.get_context () != null) {
active_locale = package_component.get_context ().get_locale () ?? "en-US";
}
#else
var active_locale = package_component.get_active_locale ();
if (active_locale != "en_US") {
#endif
if (active_locale != "en_US" && active_locale != "en-US") {
var percent_translated = package_component.get_language (
// Expects language without locale
active_locale.split ("_")[0]
Expand Down Expand Up @@ -492,7 +500,11 @@ public class AppCenter.Views.AppInfoView : AppCenter.AbstractAppContainer {
}
}

#if HAS_APPSTREAM_1_0
screenshots = package_component.get_screenshots_all ();
#else
screenshots = package_component.get_screenshots ();
#endif

if (screenshots.length > 0) {
screenshot_carousel = new Hdy.Carousel () {
Expand Down Expand Up @@ -1030,7 +1042,11 @@ public class AppCenter.Views.AppInfoView : AppCenter.AbstractAppContainer {
get_app_download_size.begin ();

Idle.add (() => {
#if HAS_APPSTREAM_1_0
var releases = package.component.get_releases_plain ().get_entries ();
#else
var releases = package.component.get_releases ();
#endif

foreach (unowned var release in releases) {
if (release.get_version () == null) {
Expand All @@ -1049,7 +1065,11 @@ public class AppCenter.Views.AppInfoView : AppCenter.AbstractAppContainer {

release_carousel.add (release_row);

#if HAS_APPSTREAM_1_0
if (package.installed && AppStream.vercmp_simple (release.get_version (), package.get_version ()) <= 0) {
#else
if (package.installed && AppStream.utils_compare_versions (release.get_version (), package.get_version ()) <= 0) {
#endif
break;
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/Widgets/ReleaseRow.vala
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,11 @@ public class AppCenter.Widgets.ReleaseRow : Gtk.Box {
private string format_release_description (string? description ) {
if (description != null) {
try {
#if HAS_APPSTREAM_1_0
var markup = AppStream.markup_convert (description, TEXT);
#else
var markup = AppStream.markup_convert_simple (description);
#endif

if (markup.strip () != "") {
return markup;
Expand Down
4 changes: 4 additions & 0 deletions src/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ if appstream.version().version_compare('>=0.16')
args += '--define=HAS_APPSTREAM_0_16'
endif

if appstream.version().version_compare('>=1.0')
args += '--define=HAS_APPSTREAM_1_0'
endif

if get_option('packagekit_backend')
appcenter_files += files(
'Core/PackageKitBackend.vala',
Expand Down