[pacman-dev] [PATCH 5/7] remove support for .pacorig files

Allan McRae allan at archlinux.org
Sun Jan 11 10:33:17 UTC 2015


On 01/10/14 17:05, Andrew Gregory wrote:
> Leave user files in place and save new config files with a .pacnew
> extension.  This reduces the complexity of file extraction and respects
> the principle that pacman shouldn't modify files it didn't create.
> 
> Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
> ---
>  contrib/README                  |  2 +-
>  contrib/pacdiff.sh.in           |  9 ++---
>  doc/pacman.8.txt                |  5 ++-
>  lib/libalpm/add.c               | 82 ++++++++++++-----------------------------
>  lib/libalpm/alpm.h              | 15 +-------
>  src/pacman/callback.c           | 16 --------
>  test/pacman/README              |  1 -
>  test/pacman/pmrule.py           |  3 --
>  test/pacman/tests/upgrade015.py |  1 -
>  test/pacman/tests/upgrade016.py |  5 +--
>  test/pacman/tests/upgrade027.py |  1 -
>  test/pacman/tests/upgrade028.py |  1 -
>  test/pacman/tests/upgrade029.py |  1 -
>  13 files changed, 34 insertions(+), 108 deletions(-)
> 

As Dan pointed out, it would be good to keep pacdiff as-is until a
suitable period has passed for the removal of pacorig files.  I am
undecided whether you should remove "pacorig" from its description
still, but leaning towards yes.

> diff --git a/contrib/README b/contrib/README
> index ae33bb2..8b5dd3c 100644
> --- a/contrib/README
> +++ b/contrib/README
> @@ -16,7 +16,7 @@ sync databases (for safety on rolling release distributions).
>  paccache - a flexible package cache cleaning utility that allows greater
>  control over which packages are removed.
>  
> -pacdiff - a simple pacnew/pacorig/pacsave updater for /etc/.
> +pacdiff - a simple pacnew/pacsave updater for /etc/.
>  
>  paclist - list all packages installed from a given repository. Useful for
>  seeing which packages you may have installed from the testing repository,
> diff --git a/contrib/pacdiff.sh.in b/contrib/pacdiff.sh.in
> index ecb6ae2..d94754c 100644
> --- a/contrib/pacdiff.sh.in
> +++ b/contrib/pacdiff.sh.in
> @@ -1,5 +1,5 @@
>  #!/bin/bash
> -#   pacdiff : a simple pacnew/pacorig/pacsave updater
> +#   pacdiff : a simple pacnew/pacsave updater
>  #
>  #   Copyright (c) 2007 Aaron Griffin <aaronmgriffin at gmail.com>
>  #   Copyright (c) 2013-2014 Pacman Development Team <pacman-dev at archlinux.org>
> @@ -35,7 +35,7 @@ usage() {
>  	cat <<EOF
>  ${myname} (pacman) v${myver}
>  
> -A simple program to merge or remove pacnew/pacorig/pacsave files.
> +A simple program to merge or remove pacnew/pacsave files.
>  
>  Usage: $myname [-l | -f | -p] [--nocolor]
>  
> @@ -77,9 +77,9 @@ print_existing_pacsave(){
>  
>  cmd() {
>  	if (( USE_LOCATE )); then
> -		locate -0 -e -b \*.pacnew \*.pacorig \*.pacsave '*.pacsave.[0-9]*'
> +		locate -0 -e -b \*.pacnew \*.pacsave '*.pacsave.[0-9]*'
>  	elif (( USE_FIND )); then
> -		find $diffsearchpath \( -name \*.pacnew -o -name \*.pacorig -o -name \*.pacsave -o -name '*.pacsave.[0-9]*' \) -print0
> +		find $diffsearchpath \( -name \*.pacnew -o -name \*.pacsave -o -name '*.pacsave.[0-9]*' \) -print0
>  	elif (( USE_PACDB )); then
>  		awk '/^%BACKUP%$/ {
>  		while (getline) {
> @@ -88,7 +88,6 @@ cmd() {
>  			}
>  		}' "${pac_db}"/*/files | while read -r bkup; do
>  			print_existing "/$bkup.pacnew"
> -			print_existing "/$bkup.pacorig"
>  			print_existing_pacsave "/$bkup.pacsave"
>  		done
>  	fi
> diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
> index 152b261..4c05167 100644
> --- a/doc/pacman.8.txt
> +++ b/doc/pacman.8.txt
> @@ -454,8 +454,9 @@ original=X, current=Y, new=Z::
>  
>  original=NULL, current=Y, new=Z::
>  	The package was not previously installed, and the file already exists on the
> -	file system. Save the current file with a '.pacorig' extension, install the
> -	new file, and warn the user.
> +	file system. Install the new file with a '.pacnew' extension and warn the
> +	user. The user must then manually merge any necessary changes into the
> +	original file.
>  
>  
>  Examples

OK.

> diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
> index ee92414..74c1595 100644
> --- a/lib/libalpm/add.c
> +++ b/lib/libalpm/add.c
> @@ -334,69 +334,33 @@ static int extract_single_file(alpm_handle_t *handle, struct archive *archive,
>  		} else {
>  			/* none of the three files matched another, unpack the new file alongside
>  			 * the local file */
> +			char *newpath;
> +			size_t newlen = strlen(filename) + strlen(".pacnew") + 1;
>  
> -			if(oldpkg) {
> -				char *newpath;
> -				size_t newlen = strlen(filename) + strlen(".pacnew") + 1;
> -
> -				_alpm_log(handle, ALPM_LOG_DEBUG,
> -						"action: keeping current file and installing"
> -						" new one with .pacnew ending\n");
> -
> -				MALLOC(newpath, newlen,
> -						errors++; handle->pm_errno = ALPM_ERR_MEMORY; goto needbackup_cleanup);
> -				snprintf(newpath, newlen, "%s.pacnew", filename);
> -
> -				if(try_rename(handle, checkfile, newpath)) {
> -					errors++;
> -				} else {
> -					alpm_event_pacnew_created_t event = {
> -						.type = ALPM_EVENT_PACNEW_CREATED,
> -						.from_noupgrade = 0,
> -						.oldpkg = oldpkg,
> -						.newpkg = newpkg,
> -						.file = filename
> -					};
> -					EVENT(handle, &event);
> -					alpm_logaction(handle, ALPM_CALLER_PREFIX,
> -							"warning: %s installed as %s\n", filename, newpath);
> -				}
> +			_alpm_log(handle, ALPM_LOG_DEBUG,
> +					"action: keeping current file and installing"
> +					" new one with .pacnew ending\n");
>  
> -				free(newpath);
> -			} else {
> -				char *newpath;
> -				size_t newlen = strlen(filename) + strlen(".pacorig") + 1;
> -
> -				_alpm_log(handle, ALPM_LOG_DEBUG,
> -						"action: saving existing file with a .pacorig ending"
> -						" and installing a new one\n");
> -
> -				MALLOC(newpath, newlen,
> -						errors++; handle->pm_errno = ALPM_ERR_MEMORY; goto needbackup_cleanup);
> -				snprintf(newpath, newlen, "%s.pacorig", filename);
> -
> -				/* move the existing file to the "pacorig" */
> -				if(try_rename(handle, filename, newpath)) {
> -					errors++;   /* failed rename filename  -> filename.pacorig */
> -					errors++;   /* failed rename checkfile -> filename */
> -				} else {
> -					/* rename the file we extracted to the real name */
> -					if(try_rename(handle, checkfile, filename)) {
> -						errors++;
> -					} else {
> -						alpm_event_pacorig_created_t event = {
> -							.type = ALPM_EVENT_PACORIG_CREATED,
> -							.newpkg = newpkg,
> -							.file = filename
> -						};
> -						EVENT(handle, &event);
> -						alpm_logaction(handle, ALPM_CALLER_PREFIX,
> -								"warning: %s saved as %s\n", filename, newpath);
> -					}
> -				}
> +			MALLOC(newpath, newlen,
> +					errors++; handle->pm_errno = ALPM_ERR_MEMORY; goto needbackup_cleanup);
> +			snprintf(newpath, newlen, "%s.pacnew", filename);
>  
> -				free(newpath);
> +			if(try_rename(handle, checkfile, newpath)) {
> +				errors++;
> +			} else {
> +				alpm_event_pacnew_created_t event = {
> +					.type = ALPM_EVENT_PACNEW_CREATED,
> +					.from_noupgrade = 0,
> +					.oldpkg = oldpkg,
> +					.newpkg = newpkg,
> +					.file = filename
> +				};
> +				EVENT(handle, &event);
> +				alpm_logaction(handle, ALPM_CALLER_PREFIX,
> +						"warning: %s installed as %s\n", filename, newpath);
>  			}
> +
> +			free(newpath);
>  		}
>  
>  needbackup_cleanup:

OK.

PS: Wow!!!   That is some serious deletions!



> diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
> index 1cfd4f5..7c64f34 100644
> --- a/lib/libalpm/alpm.h
> +++ b/lib/libalpm/alpm.h
> @@ -445,10 +445,7 @@ typedef enum _alpm_event_type_t {
>  	ALPM_EVENT_PACNEW_CREATED,
>  	/** A .pacsave file was created; See alpm_event_pacsave_created_t for
>  	 * arguments */
> -	ALPM_EVENT_PACSAVE_CREATED,
> -	/** A .pacorig file was created; See alpm_event_pacorig_created_t for
> -	 * arguments */
> -	ALPM_EVENT_PACORIG_CREATED

Add note to README about this change.

> +	ALPM_EVENT_PACSAVE_CREATED
>  } alpm_event_type_t;
>  
>  typedef struct _alpm_event_any_t {
> @@ -539,15 +536,6 @@ typedef struct _alpm_event_pacsave_created_t {
>  	const char *file;
>  } alpm_event_pacsave_created_t;
>  
> -typedef struct _alpm_event_pacorig_created_t {
> -	/** Type of event. */
> -	alpm_event_type_t type;
> -	/** New package. */
> -	alpm_pkg_t *newpkg;
> -	/** Filename of the file without the .pacorig suffix. */
> -	const char *file;
> -} alpm_event_pacorig_created_t;
> -

And this one.

>  /** Events.
>   * This is an union passed to the callback, that allows the frontend to know
>   * which type of event was triggered (via type). It is then possible to
> @@ -564,7 +552,6 @@ typedef union _alpm_event_t {
>  	alpm_event_pkgdownload_t pkgdownload;
>  	alpm_event_pacnew_created_t pacnew_created;
>  	alpm_event_pacsave_created_t pacsave_created;
> -	alpm_event_pacorig_created_t pacorig_created;
>  } alpm_event_t;
>  

And this one.

>  /** Event callback. */
> diff --git a/src/pacman/callback.c b/src/pacman/callback.c
> index 4993382..6e3fbbe 100644
> --- a/src/pacman/callback.c
> +++ b/src/pacman/callback.c
> @@ -313,22 +313,6 @@ void cb_event(alpm_event_t *event)
>  				}
>  			}
>  			break;
> -		case ALPM_EVENT_PACORIG_CREATED:
> -			{
> -				alpm_event_pacorig_created_t *e = &event->pacorig_created;
> -				if(on_progress) {
> -					char *string = NULL;
> -					pm_sprintf(&string, ALPM_LOG_WARNING, _("%s saved as %s.pacorig\n"),
> -							e->file, e->file);
> -					if(string != NULL) {
> -						output = alpm_list_add(output, string);
> -					}
> -				} else {
> -					pm_printf(ALPM_LOG_WARNING, _("%s saved as %s.pacorig\n"),
> -							e->file, e->file);
> -				}
> -			}
> -			break;
>  		/* all the simple done events, with fallthrough for each */
>  		case ALPM_EVENT_FILECONFLICTS_DONE:
>  		case ALPM_EVENT_CHECKDEPS_DONE:

OK

> diff --git a/test/pacman/README b/test/pacman/README
> index 8d8354a..6c601b2 100644
> --- a/test/pacman/README
> +++ b/test/pacman/README
> @@ -310,7 +310,6 @@ its DEPENDS field.
>    FILE_TYPE=path/to/file|type  (possible types: dir, file, link)
>    FILE_PACNEW=path/to/file
>    FILE_PACSAVE=path/to/file
> -  FILE_PACORIG=path/to/file
>  
>  Example:
>  	FILE_EXIST=etc/test.conf

OK

> diff --git a/test/pacman/pmrule.py b/test/pacman/pmrule.py
> index 0eec8ea..57f1786 100644
> --- a/test/pacman/pmrule.py
> +++ b/test/pacman/pmrule.py
> @@ -148,9 +148,6 @@ def check(self, test):
>              elif case == "PACNEW":
>                  if not os.path.isfile("%s.pacnew" % filename):
>                      success = 0
> -            elif case == "PACORIG":
> -                if not os.path.isfile("%s.pacorig" % filename):
> -                    success = 0
>              elif case == "PACSAVE":
>                  if not os.path.isfile("%s.pacsave" % filename):
>                      success = 0

OK

> diff --git a/test/pacman/tests/upgrade015.py b/test/pacman/tests/upgrade015.py
> index ea6046c..64fe281 100644
> --- a/test/pacman/tests/upgrade015.py
> +++ b/test/pacman/tests/upgrade015.py
> @@ -12,4 +12,3 @@
>  self.addrule("PKG_EXIST=dummy")
>  self.addrule("FILE_MODIFIED=etc/dummy.conf")
>  self.addrule("!FILE_PACNEW=etc/dummy.conf")
> -self.addrule("!FILE_PACORIG=etc/dummy.conf")

OK

> diff --git a/test/pacman/tests/upgrade016.py b/test/pacman/tests/upgrade016.py
> index b6b3f3a..ddf57e8 100644
> --- a/test/pacman/tests/upgrade016.py
> +++ b/test/pacman/tests/upgrade016.py
> @@ -11,6 +11,5 @@
>  
>  self.addrule("PACMAN_RETCODE=0")
>  self.addrule("PKG_EXIST=dummy")
> -self.addrule("FILE_MODIFIED=etc/dummy.conf")
> -self.addrule("!FILE_PACNEW=etc/dummy.conf")
> -self.addrule("FILE_PACORIG=etc/dummy.conf")
> +self.addrule("!FILE_MODIFIED=etc/dummy.conf")
> +self.addrule("FILE_PACNEW=etc/dummy.conf")

OK

> diff --git a/test/pacman/tests/upgrade027.py b/test/pacman/tests/upgrade027.py
> index 99087f3..3dd694a 100644
> --- a/test/pacman/tests/upgrade027.py
> +++ b/test/pacman/tests/upgrade027.py
> @@ -18,5 +18,4 @@
>  self.addrule("PKG_VERSION=dummy|1.0-2")
>  self.addrule("FILE_PACNEW=etc/dummy.conf")
>  self.addrule("!FILE_PACSAVE=etc/dummy.conf")
> -self.addrule("!FILE_PACORIG=etc/dummy.conf")
>  self.addrule("FILE_EXIST=etc/dummy.conf")

OK

> diff --git a/test/pacman/tests/upgrade028.py b/test/pacman/tests/upgrade028.py
> index 18a10f5..1e31aa3 100644
> --- a/test/pacman/tests/upgrade028.py
> +++ b/test/pacman/tests/upgrade028.py
> @@ -18,5 +18,4 @@
>  self.addrule("PKG_VERSION=dummy|1.0-2")
>  self.addrule("!FILE_PACNEW=etc/dummy.conf")
>  self.addrule("!FILE_PACSAVE=etc/dummy.conf")
> -self.addrule("!FILE_PACORIG=etc/dummy.conf")
>  self.addrule("FILE_EXIST=etc/dummy.conf")

OK

> diff --git a/test/pacman/tests/upgrade029.py b/test/pacman/tests/upgrade029.py
> index c308f42..eef5c70 100644
> --- a/test/pacman/tests/upgrade029.py
> +++ b/test/pacman/tests/upgrade029.py
> @@ -20,5 +20,4 @@
>  self.addrule("PKG_VERSION=dummy|1.0-1")
>  self.addrule("!FILE_PACNEW=etc/dummy.conf")
>  self.addrule("!FILE_PACSAVE=etc/dummy.conf")
> -self.addrule("!FILE_PACORIG=etc/dummy.conf")
>  self.addrule("FILE_EXIST=etc/dummy.conf")
> 

OK.


More information about the pacman-dev mailing list