[arch-general] Any way to change .PKGINFO post build w/o Rebuilding?
All, I patched tdebase for the logind-multiseat patch as was applied to kde-workspace for Arch kde4. Doing so, I forgot to change the provides= replaces= information. Now the new package will not install due to every file conflicting with an existing file. The new file is named 'tde-tdebase-systemd' and it replaces a package named 'tde-tdebase'. Can I decompress the package and manually edit the .PKGINFO file and then recompress the file and have it work? The package is unsigned if that makes any difference. What is currently in the .PKGINFO file is: # Generated by makepkg 4.1.2 # using fakeroot version 1.20 # Wed Feb 26 06:24:01 UTC 2014 pkgname = tde-tdebase-systemd pkgver = R14preRC1-1 pkgdesc = Trinity Desktop Enviroment base components - TDE upstream GIT url = http://scm.trinitydesktop.org/scm/git/tdebase builddate = 1393395841 packager = David C. Rankin < drankinatty at gmail dot com > size = 78513152 arch = i686 license = GPL replaces = trinity-tdebase <snip> provides = tdebase provides = tde-tdebase I think the change needed is: replaces = tde-tdebase replaces = trinity-tdebase provides = tdebase provides = tde-tdebase Does this have a chance of working or should I just bite the bullet and rebuild the package? -- David C. Rankin, J.D.,P.E.
I don't mean to be rude, but have you tried it? Pacman packages are tar.gz archives, so my guess is it's possible /Emil. On Wed, Feb 26, 2014 at 4:13 PM, David C. Rankin <drankinatty@suddenlinkmail.com> wrote:
All,
I patched tdebase for the logind-multiseat patch as was applied to kde-workspace for Arch kde4. Doing so, I forgot to change the provides= replaces= information. Now the new package will not install due to every file conflicting with an existing file. The new file is named 'tde-tdebase-systemd' and it replaces a package named 'tde-tdebase'. Can I decompress the package and manually edit the .PKGINFO file and then recompress the file and have it work? The package is unsigned if that makes any difference. What is currently in the .PKGINFO file is:
# Generated by makepkg 4.1.2 # using fakeroot version 1.20 # Wed Feb 26 06:24:01 UTC 2014 pkgname = tde-tdebase-systemd pkgver = R14preRC1-1 pkgdesc = Trinity Desktop Enviroment base components - TDE upstream GIT url = http://scm.trinitydesktop.org/scm/git/tdebase builddate = 1393395841 packager = David C. Rankin < drankinatty at gmail dot com > size = 78513152 arch = i686 license = GPL replaces = trinity-tdebase <snip> provides = tdebase provides = tde-tdebase
I think the change needed is:
replaces = tde-tdebase replaces = trinity-tdebase provides = tdebase provides = tde-tdebase
Does this have a chance of working or should I just bite the bullet and rebuild the package?
-- David C. Rankin, J.D.,P.E.
On Wed, Feb 26, 2014 at 9:35 AM, Emil Lundberg <lundberg.emil@gmail.com> wrote:
I don't mean to be rude, but have you tried it? Pacman packages are tar.gz archives, so my guess is it's possible
/Emil.
On Wed, Feb 26, 2014 at 4:13 PM, David C. Rankin <drankinatty@suddenlinkmail.com> wrote:
All,
I patched tdebase for the logind-multiseat patch as was applied to kde-workspace for Arch kde4. Doing so, I forgot to change the provides= replaces= information. Now the new package will not install due to every file conflicting with an existing file. The new file is named 'tde-tdebase-systemd' and it replaces a package named 'tde-tdebase'. Can I decompress the package and manually edit the .PKGINFO file and then recompress the file and have it work? The package is unsigned if that makes any difference. What is currently in the .PKGINFO file is:
# Generated by makepkg 4.1.2 # using fakeroot version 1.20 # Wed Feb 26 06:24:01 UTC 2014 pkgname = tde-tdebase-systemd pkgver = R14preRC1-1 pkgdesc = Trinity Desktop Enviroment base components - TDE upstream GIT url = http://scm.trinitydesktop.org/scm/git/tdebase builddate = 1393395841 packager = David C. Rankin < drankinatty at gmail dot com > size = 78513152 arch = i686 license = GPL replaces = trinity-tdebase <snip> provides = tdebase provides = tde-tdebase
I think the change needed is:
replaces = tde-tdebase replaces = trinity-tdebase provides = tdebase provides = tde-tdebase
Does this have a chance of working or should I just bite the bullet and rebuild the package?
-- David C. Rankin, J.D.,P.E.
On February 26, 2014 10:52:43 AM GMT+02:00, Karol Blazewicz <karol.blazewicz@gmail.com> wrote:
I don't mean to be rude, but have you tried it? Pacman packages are tar.gz archives, so my guess is it's possible
/Emil.
On Wed, Feb 26, 2014 at 4:13 PM, David C. Rankin <drankinatty@suddenlinkmail.com> wrote:
All,
I patched tdebase for the logind-multiseat patch as was applied to kde-workspace for Arch kde4. Doing so, I forgot to change the
replaces= information. Now the new package will not install due to every file conflicting with an existing file. The new file is named 'tde-tdebase-systemd' and it replaces a package named 'tde-tdebase'. Can I decompress the
On Wed, Feb 26, 2014 at 9:35 AM, Emil Lundberg <lundberg.emil@gmail.com> wrote: provides= package and
manually edit the .PKGINFO file and then recompress the file and have it work? The package is unsigned if that makes any difference. What is currently in the .PKGINFO file is:
# Generated by makepkg 4.1.2 # using fakeroot version 1.20 # Wed Feb 26 06:24:01 UTC 2014 pkgname = tde-tdebase-systemd pkgver = R14preRC1-1 pkgdesc = Trinity Desktop Enviroment base components - TDE upstream GIT url = http://scm.trinitydesktop.org/scm/git/tdebase builddate = 1393395841 packager = David C. Rankin < drankinatty at gmail dot com > size = 78513152 arch = i686 license = GPL replaces = trinity-tdebase <snip> provides = tdebase provides = tde-tdebase
I think the change needed is:
replaces = tde-tdebase replaces = trinity-tdebase provides = tdebase provides = tde-tdebase
Does this have a chance of working or should I just bite the bullet and rebuild the package?
-- David C. Rankin, J.D.,P.E.
A naïve reading of [1] suggests that makepkg -R should do the trick. However, as I'm away from my computer, I can't test this. Gesh [1] - https://www.archlinux.org/pacman/makepkg.8.html
On 02/26/2014 05:45 AM, Gesh wrote:
A naïve reading of [1] suggests that makepkg -R should do the trick. However, as I'm away from my computer, I can't test this. Gesh [1] - https://www.archlinux.org/pacman/makepkg.8.html
With just about every other package, that is OK, but not in the case of tdebase. There are files autogenerated during Make and copied to 'pkg' that are not present if makepkg -R is called (makepkg wipes out 'pkg' before repackaging -- so in this case it will not work). That is what prompted this manual question. Thanks though. I tried manually editing Provides= and Replaces= and it would not work. Maybe I had it wrong. If the existing package is 'tde-tdebase' and I create a new package for testing 'tde-tdebase-systemd', how do I configure the Provides/Replaces variable in the PKGBUILD file. I understood it to be: pkgname='tde-tdebase-systemd' <snip> provides=('tdebase' 'tde-tdebase') replaces=('trinity-tdebase' 'tde-tdebase') Is this not correct for the package 'tde-tdebase-systemd' to install and take the place of 'tde-tdebase'? In the .PKGINFO file, I modified it and attempted the install with: replaces = trinity-tdebase replaces = tde-tdebase <snip> provides = tdebase provides = tde-tdebase It failed with the same error of each file conflicting. To get around it, I just dropped to console and did # pacman -Rdd tde-tdebase # pacman -U tde-tdebase-systemd-R14preRC1-1-i686.pkg.tar.xz That worked, but I am curious if manually changing .PKGINFO is possible. -- David C. Rankin, J.D.,P.E.
Op 26 feb. 2014 22:06 schreef "David C. Rankin" < drankinatty@suddenlinkmail.com> het volgende:
On 02/26/2014 05:45 AM, Gesh wrote:
A naïve reading of [1] suggests that makepkg -R should do the trick. However, as I'm away from my computer, I can't test this. Gesh [1] - https://www.archlinux.org/pacman/makepkg.8.html
With just about every other package, that is OK, but not in the case of
tdebase.
There are files autogenerated during Make and copied to 'pkg' that are not present if makepkg -R is called (makepkg wipes out 'pkg' before repackaging -- so in this case it will not work). That is what prompted this manual question. Thanks though. [...]
Karol's reply pointed to repkg. A script by Xyne that basically exactly what you want. I didn't completely check it, but it ends with a call to bsdtar to (re)create the pkg. So using tar directly to unpack and repack should work fine ;-). mvg, Guus
On Wed, 26 Feb 2014 15:06:36 -0600 "David C. Rankin" <drankinatty@suddenlinkmail.com> wrote:
On 02/26/2014 05:45 AM, Gesh wrote:
A naïve reading of [1] suggests that makepkg -R should do the trick. However, as I'm away from my computer, I can't test this. Gesh [1] - https://www.archlinux.org/pacman/makepkg.8.html
With just about every other package, that is OK, but not in the case of tdebase. There are files autogenerated during Make and copied to 'pkg' that are not present if makepkg -R is called (makepkg wipes out 'pkg' before repackaging -- so in this case it will not work). That is what prompted this manual question. Thanks though.
Why is this a problem? If you have a build directory in src/, then autogenerated files are there, so makepkg -R will reexec package() which will copy those files again. If make(1) copies those files directly, i.e. not being instructed by the PKGBUILD, then your package is broken. Cheers, -- Leonid Isaev GPG key fingerprint: C0DF 20D0 C075 C3F1 E1BE 775A A7AE F6CB 164B 5A6D
participants (6)
-
David C. Rankin
-
Emil Lundberg
-
Gesh
-
Guus Snijders
-
Karol Blazewicz
-
Leonid Isaev