[pacman-dev] [PATCH 2/2] Move logging of sysupgrade start, add log when done

jjacky i.am.jack.mail at gmail.com
Sun Dec 16 09:25:17 EST 2012



On 12/16/12 15:05, Allan McRae wrote:
> On 13/12/12 23:19, Olivier Brunel wrote:
>> The "starting sysupgrade" message was logged quite soon, making it be added
>> even when nothing was actually done, because there was nothing to do, the user
>> didn't confirm, or asked to only download packages.
>>
>> The log message is now added only when (before) committing the transaction. And
>> we also log a message at the end (in case of success or failure).
>>
>> Signed-off-by: Olivier Brunel <i.am.jack.mail at gmail.com>
>> ---
>>  src/pacman/sync.c | 9 ++++++++-
>>  1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/pacman/sync.c b/src/pacman/sync.c
>> index f8fce7f..77fd573 100644
>> --- a/src/pacman/sync.c
>> +++ b/src/pacman/sync.c
>> @@ -793,7 +793,6 @@ static int sync_trans(alpm_list_t *targets)
>>  
>>  	if(config->op_s_upgrade) {
>>  		printf(_(":: Starting full system upgrade...\n"));
>> -		alpm_logaction(config->handle, "starting full system upgrade\n");
> 
> I really do not like that moving this prints effectively the same
> message at two different times.  Also, the line below really is the
> start of the system upgrade.

By two different times, you mean to the user and in the log? In such a
case, this first message could be something else, e.g. "preparing full
system upgrade" or something to that effect, and moving the "starting"
along with the log one.

What I don't like with the current situation, is that the message (in
the log) says "starting sysupgrade" while it might not really be the
case, because of a conflict, user didn't confirmed, or there was nothing
to do.
That's why I wanted the message to do logged before the operation was
confirmed, and the sysupgrade will effectively be attempted/started.


> 
>>  		if(alpm_sync_sysupgrade(config->handle, config->op_s_upgrade >= 2) == -1) {
>>  			pm_printf(ALPM_LOG_ERROR, "%s\n", alpm_strerror(alpm_errno(config->handle)));
>>  			trans_release();
>> @@ -879,6 +878,9 @@ int sync_prepare_execute(void)
>>  		goto cleanup;
>>  	}
>>  
>> +	if(config->op_s_upgrade) {
>> +		alpm_logaction(config->handle, "starting full system upgrade\n");
>> +	}
>>  	if(alpm_trans_commit(config->handle, &data) == -1) {
>>  		alpm_errno_t err = alpm_errno(config->handle);
>>  		pm_printf(ALPM_LOG_ERROR, _("failed to commit transaction (%s)\n"),
>> @@ -911,11 +913,16 @@ int sync_prepare_execute(void)
>>  			default:
>>  				break;
>>  		}
>> +		alpm_logaction(config->handle, "failed to commit transaction (%s)\n",
>> +				alpm_strerror(err));
> 
> Why only this error?  There are other just as valid error conditions to log.

I wanted to log something after the "start" message, to either say it
was successful, or failed. Other errors occur before the start message
is logged, that's why they're not logged.

> 
>>  		/* TODO: stderr? */
>>  		printf(_("Errors occurred, no packages were upgraded.\n"));
>>  		retval = 1;
>>  		goto cleanup;
>>  	}
>> +	alpm_logaction(config->handle, (config->op_s_upgrade)
>> +			? "full system upgrade completed\n"
>> +			: "installation completed\n");

Just realized, that this probably should account for another case:
"download completed"

>>  
>>  	/* Step 4: release transaction resources */
>>  cleanup:
>>
> 
> 


More information about the pacman-dev mailing list