create_tarball.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/env bash
  2. # shellcheck disable=SC1091
  3. source ../common.build.sh
  4. WORKDIR="$( pwd )"
  5. VERSION="$( sed -ne '/^Version:/s/.* *//p' "${WORKDIR}"/pkg-src/jellyfin.spec )"
  6. package_temporary_dir="${WORKDIR}/pkg-dist-tmp"
  7. pkg_src_dir="${WORKDIR}/pkg-src"
  8. GNU_TAR=1
  9. echo "Bundling all sources for RPM build."
  10. tar \
  11. --transform "s,^\.,jellyfin-${VERSION}," \
  12. --exclude='.git*' \
  13. --exclude='**/.git' \
  14. --exclude='**/.hg' \
  15. --exclude='**/.vs' \
  16. --exclude='**/.vscode' \
  17. --exclude='deployment' \
  18. --exclude='**/bin' \
  19. --exclude='**/obj' \
  20. --exclude='**/.nuget' \
  21. --exclude='*.deb' \
  22. --exclude='*.rpm' \
  23. -czf "$pkg_src_dir/jellyfin-${VERSION}.tar.gz" \
  24. -C "../.." ./ || GNU_TAR=0
  25. if [ $GNU_TAR -eq 0 ]; then
  26. echo "The installed tar binary did not support --transform. Using workaround."
  27. mkdir -p "${package_temporary_dir}/jellyfin"{,-"${VERSION}"}
  28. # Not GNU tar
  29. tar \
  30. --exclude='.git*' \
  31. --exclude='**/.git' \
  32. --exclude='**/.hg' \
  33. --exclude='**/.vs' \
  34. --exclude='**/.vscode' \
  35. --exclude='deployment' \
  36. --exclude='**/bin' \
  37. --exclude='**/obj' \
  38. --exclude='**/.nuget' \
  39. --exclude='*.deb' \
  40. --exclude='*.rpm' \
  41. -zcf \
  42. "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" \
  43. -C "../.." ./
  44. echo "Extracting filtered package."
  45. tar -xzf "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}/jellyfin-${VERSION}"
  46. echo "Removing filtered package."
  47. rm -f "${package_temporary_dir}/jellyfin/jellyfin-${VERSION}.tar.gz"
  48. echo "Repackaging package into final tarball."
  49. tar -czf "${pkg_src_dir}/jellyfin-${VERSION}.tar.gz" -C "${package_temporary_dir}" "jellyfin-${VERSION}"
  50. fi