mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-23 16:28:50 -05:00
fbd88a8212
This is something pacman can do on its own straight from the archive, and we will reduce the chance of problems occurring becuase of inproper FILELIST generation as we have had in the past with special characters in filenames. Once we remove it from makepkg. we can remove any usage of it from all of our other tools, including pacman, pactest, and contrib/ utilities. Note that removing it from pacman uncovered a few other bugs anyway, so this was probably a good move. Signed-off-by: Dan McGee <dan@archlinux.org>
78 lines
2.2 KiB
Bash
Executable File
78 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# re-pacman: regenerate a pacman package based on installed files and the
|
|
# pacman database entries. Useful for reuse, or possible config file
|
|
# extension
|
|
#
|
|
# Copyright (c) 2006 Aaron Griffin <aaron@archlinux.org>
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
|
|
#TODO
|
|
# * Check for md5 changes in backup lines and change pkgrel
|
|
|
|
pacinfo () {
|
|
[ $# -ne 2 ] && return 1
|
|
#use echo to strip spaces
|
|
echo $(pacman -Qi ${1} | grep "${2}" | cut -d: -f2-)
|
|
}
|
|
|
|
make_pkginfo () {
|
|
echo "# Generated by re-pacman 1.0.0"
|
|
echo "# On $(date)"
|
|
echo "pkgname =$(pacinfo ${1} Name)"
|
|
echo "pkgver =$(pacinfo ${1} Version)"
|
|
echo "pkgdesc =$(pacinfo ${1} Description)"
|
|
echo "url =$(pacinfo ${1} URL)"
|
|
echo "builddate =$(pacinfo ${1} 'Build Date')"
|
|
echo "packager =$(pacinfo ${1} Packager)"
|
|
echo "size =$(pacinfo ${1} Size)"
|
|
echo "arch =$(pacinfo ${1} Architecture)"
|
|
deps=$(pacinfo ${1} 'Depends On')
|
|
for d in ${deps}; do
|
|
echo "depend = ${d}"
|
|
done
|
|
}
|
|
|
|
LANG="POSIX"
|
|
|
|
if [ $# -ne 1 ]; then
|
|
echo "usage: re-pacman <installed package name>"
|
|
exit 1
|
|
fi
|
|
|
|
ver=$(pacinfo ${1} Version)
|
|
if [ "x${ver}" = "x" ]; then
|
|
echo "Package '${1}' not found, aborting."
|
|
exit 1
|
|
fi
|
|
|
|
echo ":: Cleaning up old files"
|
|
rm -f .PKGINFO "${1}-${ver}.pkg.tar.gz"
|
|
|
|
echo ":: Building PKGINFO"
|
|
make_pkginfo ${1} > .PKGINFO
|
|
|
|
flist=".PKGINFO"
|
|
flist="${flist} $(pacman -Ql ${1} | sed 's|\w* \(.*\)|/\1|g' | grep -v '/$')"
|
|
|
|
echo ":: Building final package tarball"
|
|
echo ${flist} | tr ' ' '\n' | tar czf "${1}-${ver}.pkg.tar.gz" -T - 2>/dev/null
|
|
|
|
rm -f .PKGINFO
|
|
echo ":: Package '${1}-${ver}.pkg.tar.gz' is now ready for installation"
|
|
|
|
# vim: set ts=2 sw=2 noet:
|