Author: sandervanderburg
Date: Mon Feb 13 12:31:04 2012
New Revision: 32254
URL: https://nixos.org/websvn/nix/?rev=32254&sc=1
Log:
Added --no-lock option to disnix-activate
Modified:
disnix/disnix/trunk/doc/manual/disnix-activate.xml
disnix/disnix/trunk/src/activate/activate.c
disnix/disnix/trunk/src/activate/activate.h
disnix/disnix/trunk/src/activate/main.c
Modified: disnix/disnix/trunk/doc/manual/disnix-activate.xml
==============================================================================
--- disnix/disnix/trunk/doc/manual/disnix-activate.xml Mon Feb 13 09:02:26
2012 (r32253)
+++ disnix/disnix/trunk/doc/manual/disnix-activate.xml Mon Feb 13 12:31:04
2012 (r32254)
@@ -117,6 +117,16 @@
</listitem>
</varlistentry>
<varlistentry>
+ <term><option>--no-lock</option></term>
+ <listitem>
+ <para>
+ By enabling this option Disnix
will not acquire any locks, which is not recommended.
+ </para>
+ </listitem>
+ </varlistentry>
+
+
+ <varlistentry>
<term><option>-h</option>,
<option>--help</option></term>
<listitem>
<para>
Modified: disnix/disnix/trunk/src/activate/activate.c
==============================================================================
--- disnix/disnix/trunk/src/activate/activate.c Mon Feb 13 09:02:26 2012
(r32253)
+++ disnix/disnix/trunk/src/activate/activate.c Mon Feb 13 12:31:04 2012
(r32254)
@@ -31,7 +31,7 @@
#include <activationmapping.h>
#include <targets.h>
-int activate_system(gchar *interface, const gchar *new_manifest, const gchar
*old_manifest, const gchar *coordinator_profile_path, gchar *profile, const
gboolean no_coordinator_profile, const gboolean no_target_profiles, const
gboolean no_upgrade)
+int activate_system(gchar *interface, const gchar *new_manifest, const gchar
*old_manifest, const gchar *coordinator_profile_path, gchar *profile, const
gboolean no_coordinator_profile, const gboolean no_target_profiles, const
gboolean no_upgrade, const gboolean no_lock)
{
gchar *old_manifest_file;
GArray *old_activation_mappings;
@@ -94,7 +94,11 @@
old_activation_mappings = NULL;
/* Try to acquire a lock */
- status = lock(interface, distribution_array, profile);
+
+ if(no_lock)
+ status = 0;
+ else
+ status = lock(interface, distribution_array, profile);
if(status == 0)
{
@@ -111,7 +115,9 @@
}
/* Try to release the lock */
- unlock(interface, distribution_array, profile);
+
+ if(!no_lock)
+ unlock(interface, distribution_array, profile);
/* If setting the profiles succeeds -> set the coordinator
profile */
if(status == 0 && !no_coordinator_profile)
@@ -127,12 +133,20 @@
else
{
/* Try to release the lock */
- unlock(interface, distribution_array, profile);
+
+ if(!no_lock)
+ unlock(interface, distribution_array, profile);
+
exit_status = status;
}
}
else
+ {
exit_status = status;
+
+ if(!no_lock)
+ unlock(interface, distribution_array, profile); /* Try to
release the lock */
+ }
}
/* Cleanup */
Modified: disnix/disnix/trunk/src/activate/activate.h
==============================================================================
--- disnix/disnix/trunk/src/activate/activate.h Mon Feb 13 09:02:26 2012
(r32253)
+++ disnix/disnix/trunk/src/activate/activate.h Mon Feb 13 12:31:04 2012
(r32254)
@@ -38,8 +38,9 @@
* @param no_coordinator_profile Do not create a coordinator profile
* @param no_target_profiles Do not create Disnix profiles on the target
machines
* @param no_upgrade Force Disnix to not look at the previous configuration
+ * @param no_lock Force Disnix to not acquire locks
* @return 0 if the process succeeds, else a non-zero exit value
*/
-int activate_system(gchar *interface, const gchar *new_manifest, const gchar
*old_manifest, const gchar *coordinator_profile_path, gchar *profile, const
gboolean no_coordinator_profile, const gboolean no_target_profiles, const
gboolean no_upgrade);
+int activate_system(gchar *interface, const gchar *new_manifest, const gchar
*old_manifest, const gchar *coordinator_profile_path, gchar *profile, const
gboolean no_coordinator_profile, const gboolean no_target_profiles, const
gboolean no_upgrade, const gboolean no_lock);
#endif
Modified: disnix/disnix/trunk/src/activate/main.c
==============================================================================
--- disnix/disnix/trunk/src/activate/main.c Mon Feb 13 09:02:26 2012
(r32253)
+++ disnix/disnix/trunk/src/activate/main.c Mon Feb 13 12:31:04 2012
(r32254)
@@ -34,6 +34,7 @@
fprintf(stderr, "--target-property targetProperty\n");
fprintf(stderr, "--no-coordinator-profile\n");
fprintf(stderr, "--no-target-profiles\n");
+ fprintf(stderr, "--no-lock\n");
fprintf(stderr, "\n");
fprintf(stderr, "%s {-h | --help}\n", command);
@@ -52,6 +53,7 @@
{"no-coordinator-profile", no_argument, 0, 'c'},
{"no-target-profiles", no_argument, 0, 'C'},
{"no-upgrade", no_argument, 0, 'u'},
+ {"no-lock", no_argument, 0, 'l'},
{"help", no_argument, 0, 'h'},
{0, 0, 0, 0}
};
@@ -62,6 +64,7 @@
int no_coordinator_profile = FALSE;
int no_target_profiles = FALSE;
int no_upgrade = FALSE;
+ int no_lock = FALSE;
/* Parse command-line options */
while((c = getopt_long(argc, argv, "o:p:h", long_options, &option_index))
!= -1)
@@ -89,6 +92,9 @@
case 'u':
no_upgrade = TRUE;
break;
+ case 'l':
+ no_lock = TRUE;
+ break;
case 'h':
case '?':
print_usage(argv[0]);
@@ -107,5 +113,5 @@
return 1;
}
else
- return activate_system(interface, argv[optind], old_manifest,
coordinator_profile_path, profile, no_coordinator_profile, no_target_profiles,
no_upgrade); /* Execute activation operation */
+ return activate_system(interface, argv[optind], old_manifest,
coordinator_profile_path, profile, no_coordinator_profile, no_target_profiles,
no_upgrade, no_lock); /* Execute activation operation */
}
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits