hi Short explanation. 'debdelta-upgrade' uses the installed files of packages, and patches from a repository, to build new versions of debs for upgrading. One requisite is then (obviously) that all local data must be pristine; for this reason, it was not compatible with 'prelink'. That was an annoying shortcoming. Recently, [EMAIL PROTECTED] provided me with the solution: 'prelink -u' is guaranteed to bring back an ELF file to the previous form (byte-by-byte identical). So I designed this simple patch that follows.
-- debdelta-0.26/debdelta 2008-05-03 19:19:10.000000000 +0200 +++ debdelta-0.27/debdelta 2008-09-15 12:42:14.000000000 +0200 @@ -669,6 +669,8 @@ if TD[-1] != '/': TD = TD + '/' + HAVE_PRELINK=os.path.exists('/usr/sbin/prelink') + delta=abspath(delta) if newdeb: newdeb=abspath(newdeb) @@ -789,8 +791,17 @@ d=os.path.dirname(a) if not os.path.exists(d): os.makedirs(d) - if VERBOSE > 3 : print ' symlinking ',divert,' to ',a - os.symlink(divert, a) + #the following code idea was provided by [EMAIL PROTECTED] + if HAVE_PRELINK and '\x7fELF' == open(divert).read(4): + shutil.copyfile(divert, a) + if VERBOSE > 3 or DEBUG > 1: + print ' copying/unprelinking ',divert,' to ',a + os.system('/usr/sbin/prelink -u '+a) + else: + os.system('/usr/sbin/prelink -u '+a+' >/dev/null 2>&1') + else: + if VERBOSE > 3 : print ' symlinking ',divert,' to ',a + os.symlink(divert, a) else: if VERBOSE > 3 : print ' not symlinking ',divert,' to ',orig I asked help to Roman and to pabs; we tested this patch for some days on ~5 different hosts, and it seems to work. (It is indeed a win-win patch: if prelink is absent, the code works exactly as before). This patch is now part of debdelta 0.27 . In the release guideline it was said > [...] changes that will be > accepted into testing during the freeze [...] > - fixes for severity: important bugs in packages of priority: optional > or extra, only when this can be done via unstable; I dont clearly understand if my update is in this case, so I just ask. Would you let it in? a. ps: let me tell honestly that there is not a bug in BTS that this update formally closes. The reason is that I lazily associated this problem to bug 374892 (that tells that debdelta is incompatible with 'localepurge'). Yes, I know I should have probably cloned that bug, so I now may close it! :-> -- Andrea Mennucc "The EULA sounds like it was written by a team of lawyers who want to tell me what I can't do, and the GPL sounds like it was written by a human being who wants me to know what I can do." Anonymous, http://www.securityfocus.com/columnists/420
signature.asc
Description: Digital signature