From: DRC Date: Sat, 10 Dec 2016 15:00:39 +0000 (-0600) Subject: Build: Don't require sudo for `make tarball` X-Git-Tag: 1.5.90~83 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=67ad535022fa4092da428bc21b75ecfb4fc17111;p=libjpeg-turbo Build: Don't require sudo for `make tarball` The whole point of `make tarball` is to make it easy for users to create a binary distribution of libjpeg-turbo on platforms that aren't supported by our official build system, so requiring root permissions somewhat defeated that purpose. Intead, the script now attempts to detect whether the system has GNU tar or a recent version of BSD tar that supports setting the ownership of the files in the tarball. --- diff --git a/release/maketarball.in b/release/maketarball.in index 147484a..00a9c7e 100644 --- a/release/maketarball.in +++ b/release/maketarball.in @@ -12,7 +12,7 @@ SUDO= onexit() { if [ ! "$TMPDIR" = "" ]; then - $SUDO rm -rf $TMPDIR + rm -rf $TMPDIR fi } @@ -21,23 +21,31 @@ uid() id | cut -f2 -d = | cut -f1 -d \(; } -PACKAGE_NAME=@PKGNAME@ +PKGNAME=@PKGNAME@ VERSION=@VERSION@ ARCH=@CPU_TYPE@ OS=@CMAKE_SYSTEM_NAME@ PREFIX=@CMAKE_INSTALL_PREFIX@ -if [ ! `uid` -eq 0 ]; then - SUDO=sudo -fi - umask 022 -rm -f $PACKAGE_NAME-$VERSION-$OS-$ARCH.tar.bz2 -TMPDIR=`mktemp -d /tmp/$PACKAGE_NAME-build.XXXXXX` +rm -f $PKGNAME-$VERSION-$OS-$ARCH.tar.bz2 +TMPDIR=`mktemp -d /tmp/$PKGNAME-build.XXXXXX` mkdir -p $TMPDIR/install make install DESTDIR=$TMPDIR/install -$SUDO chown -Rh root:root $TMPDIR/install -tar cf - -C $TMPDIR/install .$PREFIX | bzip2 -c >$PACKAGE_NAME-$VERSION-$OS-$ARCH.tar.bz2 +echo tartest >$TMPDIR/tartest +GNUTAR=0 +BSDTAR=0 +tar cf $TMPDIR/tartest.tar --owner=root --group=root -C $TMPDIR tartest >/dev/null 2>&1 && GNUTAR=1 +if [ "$GNUTAR" = "1" ]; then + tar cf - --owner=root --group=root -C $TMPDIR/install .$PREFIX | bzip2 -c >$PKGNAME-$VERSION-$OS-$ARCH.tar.bz2 +else + tar cf $TMPDIR/tartest.tar --uid 0 --gid 0 -C $TMPDIR tartest >/dev/null 2>&1 && BSDTAR=1 + if [ "$BSDTAR" = "1" ]; then + tar cf - --uid=0 --gid=0 -C $TMPDIR/install .$PREFIX | bzip2 -c >$PKGNAME-$VERSION-$OS-$ARCH.tar.bz2 + else + tar cf - -C $TMPDIR/install .$PREFIX | bzip2 -c >$PKGNAME-$VERSION-$OS-$ARCH.tar.bz2 + fi +fi exit