]> granicus.if.org Git - libjpeg-turbo/commitdiff
Build: Don't require sudo for `make tarball`
authorDRC <information@libjpeg-turbo.org>
Sat, 10 Dec 2016 15:00:39 +0000 (09:00 -0600)
committerDRC <information@libjpeg-turbo.org>
Sat, 10 Dec 2016 15:02:53 +0000 (09:02 -0600)
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.

release/maketarball.in

index 147484a82964a1a7951a5ddd879223860556243e..00a9c7e37a3344f2287f2868d53334e46592face 100644 (file)
@@ -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