diff options
author | Allan McRae <allan@archlinux.org> | 2011-06-15 08:02:22 +0200 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-06-15 16:20:52 +0200 |
commit | d21f6ca4aa3209938fa312f29ac03446f57e6a66 (patch) | |
tree | 7c581aa57c7b9d75673ab2dcc645bf5b99899b12 | |
parent | 06cb713f3915cc858de0388b0a5232326101a9fa (diff) | |
download | pacman-d21f6ca4aa3209938fa312f29ac03446f57e6a66.tar.gz pacman-d21f6ca4aa3209938fa312f29ac03446f57e6a66.tar.xz |
makepkg: create source package inside fakeroot
Create source package files inside the fakeroot environment to
ensure reasonable ownership of files within the archive.
Fixes FS#24330.
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r-- | scripts/makepkg.sh.in | 65 |
1 files changed, 40 insertions, 25 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 5de10718..dfb79768 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -188,6 +188,16 @@ trap 'trap_exit "$(gettext "An unknown error has occurred. Exiting...")"' ERR # 1) "filename::http://path/to/file" # 2) "http://path/to/file" +enter_fakeroot() { + msg "$(gettext "Entering fakeroot environment...")" + + if [[ -n $newpkgver ]]; then + fakeroot -- $0 --forcever $newpkgver -F "${ARGLIST[@]}" || exit $? + else + fakeroot -- $0 -F "${ARGLIST[@]}" || exit $? + fi +} + # Return the absolute filename of a source entry # # This function accepts a source entry or the already extracted filename of a @@ -1214,23 +1224,6 @@ create_signature() { } create_srcpackage() { - cd "$startdir" - - # Get back to our src directory so we can begin with sources. - mkdir -p "$srcdir" - chmod a-s "$srcdir" - cd "$srcdir" - if (( ! SKIPINTEG || SOURCEONLY == 2 )); then - download_sources - fi - if (( ! SKIPINTEG )); then - # We can only check checksums if we have all files. - check_checksums - else - warning "$(gettext "Skipping integrity checks.")" - fi - cd "$startdir" - msg "$(gettext "Creating source package...")" local srclinks="$(mktemp -d "$startdir"/srclinks.XXXXXXXXX)" mkdir "${srclinks}"/${pkgbase} @@ -2006,6 +1999,12 @@ fi # Run the bare minimum in fakeroot if (( INFAKEROOT )); then + if (( SOURCEONLY )); then + create_srcpackage + msg "$(gettext "Leaving fakeroot environment.")" + exit 0 # $E_OK + fi + if (( ! SPLITPKG )); then if (( ! PKGFUNC )); then if (( ! REPKG )); then @@ -2041,7 +2040,29 @@ if (( SOURCEONLY )); then error "$(gettext "A source package has already been built. (use -f to overwrite)")" exit 1 fi - create_srcpackage + + # Get back to our src directory so we can begin with sources. + mkdir -p "$srcdir" + chmod a-s "$srcdir" + cd "$srcdir" + if (( ! SKIPINTEG || SOURCEONLY == 2 )); then + download_sources + fi + if (( ! SKIPINTEG )); then + # We can only check checksums if we have all files. + check_checksums + else + warning "$(gettext "Skipping integrity checks.")" + fi + cd "$startdir" + + # if we are root or if fakeroot is not enabled, then we don't use it + if [[ $(check_buildenv fakeroot) != "y" ]] || (( EUID == 0 )); then + create_srcpackage + else + enter_fakeroot + fi + msg "$(gettext "Source package created: %s")" "$pkgbase ($(date))" exit 0 fi @@ -2158,13 +2179,7 @@ else cd "$startdir" fi - msg "$(gettext "Entering fakeroot environment...")" - - if [[ -n $newpkgver ]]; then - fakeroot -- $0 --forcever $newpkgver -F "${ARGLIST[@]}" || exit $? - else - fakeroot -- $0 -F "${ARGLIST[@]}" || exit $? - fi + enter_fakeroot fi fi |