summaryrefslogtreecommitdiff
path: root/builder
diff options
context:
space:
mode:
Diffstat (limited to 'builder')
-rw-r--r--builder/builder-manifest.c66
-rw-r--r--builder/builder-manifest.h3
-rw-r--r--builder/xdg-app-builder-main.c6
3 files changed, 75 insertions, 0 deletions
diff --git a/builder/builder-manifest.c b/builder/builder-manifest.c
index 3d4bfb1..404149a 100644
--- a/builder/builder-manifest.c
+++ b/builder/builder-manifest.c
@@ -41,8 +41,10 @@ struct BuilderManifest {
char *id_platform;
char *branch;
char *runtime;
+ char *runtime_commit;
char *runtime_version;
char *sdk;
+ char *sdk_commit;
char *metadata;
char *metadata_platform;
char **cleanup;
@@ -83,6 +85,7 @@ enum {
PROP_RUNTIME,
PROP_RUNTIME_VERSION,
PROP_SDK,
+ PROP_SDK_COMMIT,
PROP_METADATA,
PROP_METADATA_PLATFORM,
PROP_BUILD_OPTIONS,
@@ -114,8 +117,10 @@ builder_manifest_finalize (GObject *object)
g_free (self->id);
g_free (self->branch);
g_free (self->runtime);
+ g_free (self->runtime_commit);
g_free (self->runtime_version);
g_free (self->sdk);
+ g_free (self->sdk_commit);
g_free (self->metadata);
g_free (self->metadata_platform);
g_free (self->command);
@@ -172,6 +177,10 @@ builder_manifest_get_property (GObject *object,
g_value_set_string (value, self->sdk);
break;
+ case PROP_SDK_COMMIT:
+ g_value_set_string (value, self->sdk_commit);
+ break;
+
case PROP_METADATA:
g_value_set_string (value, self->metadata);
break;
@@ -303,6 +312,11 @@ builder_manifest_set_property (GObject *object,
self->sdk = g_value_dup_string (value);
break;
+ case PROP_SDK_COMMIT:
+ g_free (self->sdk_commit);
+ self->sdk_commit = g_value_dup_string (value);
+ break;
+
case PROP_METADATA:
g_free (self->metadata);
self->metadata = g_value_dup_string (value);
@@ -469,6 +483,13 @@ builder_manifest_class_init (BuilderManifestClass *klass)
NULL,
G_PARAM_READWRITE));
g_object_class_install_property (object_class,
+ PROP_SDK_COMMIT,
+ g_param_spec_string ("sdk-commit",
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE));
+ g_object_class_install_property (object_class,
PROP_METADATA,
g_param_spec_string ("metadata",
"",
@@ -744,6 +765,49 @@ builder_manifest_get_runtime_version (BuilderManifest *self)
return self->runtime_version ? self->runtime_version : "master";
}
+
+static char *
+xdg_app (GError **error,
+ ...)
+{
+ gboolean res;
+ g_autofree char *output = NULL;
+ va_list ap;
+
+ va_start (ap, error);
+ res = xdg_app_spawn (NULL, &output, error, "xdg-app", ap);
+ va_end (ap);
+
+ if (res)
+ {
+ g_strchomp (output);
+ return g_steal_pointer (&output);
+ }
+ return NULL;
+}
+
+gboolean
+builder_manifest_start (BuilderManifest *self,
+ BuilderContext *context,
+ GError **error)
+{
+ self->sdk_commit = xdg_app (NULL, "info", "--show-commit", self->sdk,
+ builder_manifest_get_runtime_version (self), NULL);
+ if (self->sdk_commit == NULL)
+ return xdg_app_fail (error, "Unable to find sdk %s version %s",
+ self->sdk,
+ builder_manifest_get_runtime_version (self));
+
+ self->runtime_commit = xdg_app (NULL, "info", "--show-commit", self->runtime,
+ builder_manifest_get_runtime_version (self), NULL);
+ if (self->runtime_commit == NULL)
+ return xdg_app_fail (error, "Unable to find runtime %s version %s",
+ self->runtime,
+ builder_manifest_get_runtime_version (self));
+
+ return TRUE;
+}
+
gboolean
builder_manifest_init_app_dir (BuilderManifest *self,
BuilderContext *context,
@@ -822,6 +886,7 @@ builder_manifest_checksum (BuilderManifest *self,
builder_cache_checksum_str (cache, self->runtime);
builder_cache_checksum_str (cache, builder_manifest_get_runtime_version (self));
builder_cache_checksum_str (cache, self->sdk);
+ builder_cache_checksum_str (cache, self->sdk_commit);
builder_cache_checksum_str (cache, self->metadata);
builder_cache_checksum_boolean (cache, self->writable_sdk);
builder_cache_checksum_strv (cache, self->sdk_extensions);
@@ -888,6 +953,7 @@ builder_manifest_checksum_for_platform (BuilderManifest *self,
{
builder_cache_checksum_str (cache, BUILDER_MANIFEST_CHECKSUM_PLATFORM_VERSION);
builder_cache_checksum_str (cache, self->id_platform);
+ builder_cache_checksum_str (cache, self->runtime_commit);
builder_cache_checksum_str (cache, self->metadata);
builder_cache_checksum_strv (cache, self->cleanup_platform);
builder_cache_checksum_strv (cache, self->platform_extensions);
diff --git a/builder/builder-manifest.h b/builder/builder-manifest.h
index 007394b..d983c37 100644
--- a/builder/builder-manifest.h
+++ b/builder/builder-manifest.h
@@ -48,6 +48,9 @@ const char * builder_manifest_get_id_platform (BuilderManifest *self);
BuilderOptions *builder_manifest_get_build_options (BuilderManifest *self);
GList * builder_manifest_get_modules (BuilderManifest *self);
+gboolean builder_manifest_start (BuilderManifest *self,
+ BuilderContext *context,
+ GError **error);
gboolean builder_manifest_init_app_dir (BuilderManifest *self,
BuilderContext *context,
GError **error);
diff --git a/builder/xdg-app-builder-main.c b/builder/xdg-app-builder-main.c
index 1835239..801e21a 100644
--- a/builder/xdg-app-builder-main.c
+++ b/builder/xdg-app-builder-main.c
@@ -234,6 +234,12 @@ main (int argc,
return 1;
}
+ if (!builder_manifest_start (manifest, build_context, &error))
+ {
+ g_print ("Failed to init: %s\n", error->message);
+ return 1;
+ }
+
if (!opt_disable_download &&
!builder_manifest_download (manifest, !opt_disable_updates, build_context, &error))
{