Author: sandervanderburg
Date: Tue Oct 12 15:58:34 2010
New Revision: 24240
URL: https://svn.nixos.org/websvn/nix/?rev=24240&sc=1
Log:
Refactored copy-closure call into libinterface
Modified:
disnix/disnix/trunk/src/build/Makefile.am
disnix/disnix/trunk/src/build/main.c
disnix/disnix/trunk/src/distribute/Makefile.am
disnix/disnix/trunk/src/distribute/main.c
disnix/disnix/trunk/src/libinterface/client-interface.c
disnix/disnix/trunk/src/libinterface/client-interface.h
Modified: disnix/disnix/trunk/src/build/Makefile.am
==============================================================================
--- disnix/disnix/trunk/src/build/Makefile.am Tue Oct 12 15:25:22 2010
(r24239)
+++ disnix/disnix/trunk/src/build/Makefile.am Tue Oct 12 15:58:34 2010
(r24240)
@@ -3,5 +3,5 @@
bin_PROGRAMS = disnix-build
disnix_build_SOURCES = main.c
-disnix_build_LDADD = ../libdistderivation/libdistderivation.la
../libmain/libmain.la
-disnix_build_CFLAGS = -I../libdistderivation -I../libmain
+disnix_build_LDADD = ../libdistderivation/libdistderivation.la
../libmain/libmain.la ../libinterface/libinterface.la
+disnix_build_CFLAGS = -I../libdistderivation -I../libmain -I../libinterface
Modified: disnix/disnix/trunk/src/build/main.c
==============================================================================
--- disnix/disnix/trunk/src/build/main.c Tue Oct 12 15:25:22 2010
(r24239)
+++ disnix/disnix/trunk/src/build/main.c Tue Oct 12 15:58:34 2010
(r24240)
@@ -26,6 +26,7 @@
#include <sys/wait.h>
#include <derivationmapping.h>
#include <defaultoptions.h>
+#include <client-interface.h>
#define BUFFER_SIZE 4096
@@ -108,31 +109,13 @@
fprintf(stderr, "Distributing intra-dependency closure of
derivation: %s to target: %s\n", item->derivation, item->target);
- status = fork();
+ status = wait_to_finish(exec_copy_closure_to(interface,
item->target, item->derivation));
- if(status == 0)
+ /* On error stop the build process */
+ if(status != 0)
{
- char *args[] = {"disnix-copy-closure", "--to", "--target",
item->target, "--interface", interface, item->derivation, NULL};
- execvp("disnix-copy-closure", args);
- fprintf(stderr, "Error with executing copy closure
process!\n");
- _exit(1);
- }
-
- if(status == -1)
- {
- fprintf(stderr, "Error with forking copy closure
process!\n");
delete_derivation_array(derivation_array);
- return -1;
- }
- else
- {
- wait(&status);
-
- if(WEXITSTATUS(status) != 0)
- {
- delete_derivation_array(derivation_array);
- return WEXITSTATUS(status);
- }
+ return WEXITSTATUS(status);
}
}
@@ -230,36 +213,16 @@
fprintf(stderr, "Copying result: %s from: %s\n", result,
item->target);
- status = fork();
-
- if(status == 0)
- {
- char *args[] = {"disnix-copy-closure", "--from",
"--target", item->target, "--interface", interface, result, NULL};
- execvp("disnix-copy-closure", args);
- fprintf(stderr, "Error with executing copy closure
process!\n");
- _exit(1);
- }
+ status = wait_to_finish(exec_copy_closure_from(interface,
item->target, result));
- if(status == -1)
+ /* On error stop build process */
+ if(status != 0)
{
- fprintf(stderr, "Error with forking copy closure
process!\n");
- g_array_free(output_array, TRUE);
- delete_result_array(result_array);
- delete_derivation_array(derivation_array);
- return -1;
+ g_array_free(output_array, TRUE);
+ delete_result_array(result_array);
+ delete_derivation_array(derivation_array);
+ return WEXITSTATUS(status);
}
- else
- {
- wait(&status);
-
- if(WEXITSTATUS(status) != 0)
- {
- g_array_free(output_array, TRUE);
- delete_result_array(result_array);
- delete_derivation_array(derivation_array);
- return WEXITSTATUS(status);
- }
- }
}
}
Modified: disnix/disnix/trunk/src/distribute/Makefile.am
==============================================================================
--- disnix/disnix/trunk/src/distribute/Makefile.am Tue Oct 12 15:25:22
2010 (r24239)
+++ disnix/disnix/trunk/src/distribute/Makefile.am Tue Oct 12 15:58:34
2010 (r24240)
@@ -3,5 +3,5 @@
bin_PROGRAMS = disnix-distribute
disnix_distribute_SOURCES = main.c
-disnix_distribute_LDADD = ../libmanifest/libmanifest.la ../libmain/libmain.la
-disnix_distribute_CFLAGS = -I../libmanifest -I../libmain
+disnix_distribute_LDADD = ../libmanifest/libmanifest.la ../libmain/libmain.la
../libinterface/libinterface.la
+disnix_distribute_CFLAGS = -I../libmanifest -I../libmain -I../libinterface
Modified: disnix/disnix/trunk/src/distribute/main.c
==============================================================================
--- disnix/disnix/trunk/src/distribute/main.c Tue Oct 12 15:25:22 2010
(r24239)
+++ disnix/disnix/trunk/src/distribute/main.c Tue Oct 12 15:58:34 2010
(r24240)
@@ -27,6 +27,7 @@
#include <glib.h>
#include <distributionmapping.h>
#include <defaultoptions.h>
+#include <client-interface.h>
static void print_usage()
{
@@ -89,34 +90,15 @@
DistributionItem *item = g_array_index(distribution_array,
DistributionItem*, i);
int status;
- fprintf(stderr, "Distributing intra-dependency closure of
profile: %s to target: %s\n", item->profile, item->target);
+ fprintf(stderr, "Distributing intra-dependency closure of
profile: %s to target: %s\n", item->profile, item->target);
+ status = wait_to_finish(exec_copy_closure_to(interface,
item->target, item->profile));
- status = fork();
-
- if(status == 0)
- {
- char *args[] = {"disnix-copy-closure", "--to", "--target",
item->target, "--interface", interface, item->profile, NULL};
- execvp("disnix-copy-closure", args);
- fprintf(stderr, "Error with executing copy closure
process!\n");
- _exit(1);
- }
-
- if(status == -1)
+ /* On error stop the distribute process */
+ if(status != 0)
{
- exit_status = -1;
+ exit_status = WEXITSTATUS(status);
break;
}
- else
- {
- wait(&status);
-
- /* On error stop the distribute process */
- if(WEXITSTATUS(status) != 0)
- {
- exit_status = WEXITSTATUS(status);
- break;
- }
- }
}
delete_distribution_array(distribution_array);
Modified: disnix/disnix/trunk/src/libinterface/client-interface.c
==============================================================================
--- disnix/disnix/trunk/src/libinterface/client-interface.c Tue Oct 12
15:25:22 2010 (r24239)
+++ disnix/disnix/trunk/src/libinterface/client-interface.c Tue Oct 12
15:58:34 2010 (r24240)
@@ -38,7 +38,7 @@
static pid_t exec_activate_or_deactivate(gchar *operation, gchar *interface,
gchar *target, gchar *type, gchar **arguments, unsigned int arguments_size,
gchar *service)
{
- int pid = fork();
+ pid_t pid = fork();
if(pid == 0)
{
@@ -80,7 +80,7 @@
static pid_t exec_lock_or_unlock(gchar *operation, gchar *interface, gchar
*target, gchar *profile)
{
- int pid = fork();
+ pid_t pid = fork();
if(pid == 0)
{
@@ -105,7 +105,7 @@
pid_t exec_collect_garbage(gchar *interface, gchar *target, gboolean
delete_old)
{
/* Declarations */
- int pid;
+ pid_t pid;
char *delete_old_arg;
/* Determine whether to use the delete old option */
@@ -129,7 +129,7 @@
pid_t exec_query_installed(gchar *interface, gchar *target, gchar *profile)
{
- int pid = fork();
+ pid_t pid = fork();
if(pid == 0)
{
@@ -140,3 +140,27 @@
else
return pid;
}
+
+static pid_t exec_copy_closure(gchar *operation, gchar *interface, gchar
*target, gchar *component)
+{
+ pid_t pid = fork();
+
+ if(pid == 0)
+ {
+ char *args[] = {"disnix-copy-closure", operation, "--target", target,
"--interface", interface, component, NULL};
+ execvp("disnix-copy-closure", args);
+ _exit(1);
+ }
+ else
+ return pid;
+}
+
+pid_t exec_copy_closure_from(gchar *interface, gchar *target, gchar *component)
+{
+ return exec_copy_closure("--from", interface, target, component);
+}
+
+pid_t exec_copy_closure_to(gchar *interface, gchar *target, gchar *component)
+{
+ return exec_copy_closure("--to", interface, target, component);
+}
Modified: disnix/disnix/trunk/src/libinterface/client-interface.h
==============================================================================
--- disnix/disnix/trunk/src/libinterface/client-interface.h Tue Oct 12
15:25:22 2010 (r24239)
+++ disnix/disnix/trunk/src/libinterface/client-interface.h Tue Oct 12
15:58:34 2010 (r24240)
@@ -97,4 +97,24 @@
*/
pid_t exec_query_installed(gchar *interface, gchar *target, gchar *profile);
+/**
+ * Invokes the copy closure process to copy a closure from a machine
+ *
+ * @param interface Path to the interface executable
+ * @param target Target Address of the remote interface
+ * @param component Component to copy (including all intra-dependencies)
+ * @return PID of the client interface process performing the operation, or -1
in case of a failure
+ */
+pid_t exec_copy_closure_from(gchar *interface, gchar *target, gchar
*component);
+
+/**
+ * Invokes the copy closure process to copy a closure to a machine
+ *
+ * @param interface Path to the interface executable
+ * @param target Target Address of the remote interface
+ * @param component Component to copy (including all intra-dependencies)
+ * @return PID of the client interface process performing the operation, or -1
in case of a failure
+ */
+pid_t exec_copy_closure_to(gchar *interface, gchar *target, gchar *component);
+
#endif
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits