[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