Forráskód Böngészése

uppkg -> 30.0.1-1

Noah Vogt 1 éve
szülő
commit
efc76d57a0
3 módosított fájl, 95 hozzáadás és 19 törlés
  1. 5 3
      .SRCINFO
  2. 23 16
      PKGBUILD
  3. 67 0
      xdg-basedir.patch

+ 5 - 3
.SRCINFO

@@ -1,5 +1,5 @@
-pkgbase = electron30
-	pkgdesc = Build cross platform desktop apps with web technologies
+pkgbase = electron30-xdg
+	pkgdesc = Build cross platform desktop apps with web technologies - patched to support the xdg basedir spec
 	pkgver = 30.0.1
 	pkgrel = 1
 	url = https://electronjs.org
@@ -245,6 +245,7 @@ pkgbase = electron30
 	source = chromium-mirror_third_party_vulkan-deps_vulkan-tools_src::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git#commit=733fd2b522918f81f9c4669350dafd066f99c5d5
 	source = chromium-mirror_third_party_vulkan-deps_vulkan-utility-libraries_src::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries.git#commit=a4140c5fd47dcf3a030726a60b293db61cfb54a3
 	source = chromium-mirror_third_party_vulkan-deps_vulkan-validation-layers_src::git+https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git#commit=5b8af92af052c83444ac560ff1e28c1c322424ef
+	source = xdg-basedir.patch
 	sha256sums = cf40db276fb33e553947b29166eaab227839d7afdaa049744e7c1c4c428facf2
 	sha256sums = c2bc4e65ed2a4e23528dd10d5c15bf99f880b7bbb789cc720d451b78098a7e12
 	sha256sums = 3bd35dab1ded5d9e1befa10d5c6c4555fe0a76d909fb724ac57d0bf10cb666c1
@@ -411,5 +412,6 @@ pkgbase = electron30
 	sha256sums = aa8bbfcfe4c153bfff99a203d06cf13519423054f745b847855a9df34c5f70fd
 	sha256sums = c90d55dbff2f09ea9fce383ddaa3987b4fca15537467ee4a9297be18a95244d5
 	sha256sums = cb023b113d3413928eb16efc78c02c86800279fdfe8d03648d922c07e714f875
+	sha256sums = a7d9c117e713e8fc68c777fcc046da5dcae7706055d6d1af7555687086ff4266
 
-pkgname = electron30
+pkgname = electron30-xdg

+ 23 - 16
PKGBUILD

@@ -12,8 +12,8 @@ pkgver=30.0.1
 _gcc_patches=124
 pkgrel=1
 _major_ver=${pkgver%%.*}
-pkgname="electron${_major_ver}"
-pkgdesc='Build cross platform desktop apps with web technologies'
+pkgname="electron${_major_ver}-xdg"
+pkgdesc='Build cross platform desktop apps with web technologies - patched to support the xdg basedir spec'
 arch=(x86_64)
 url='https://electronjs.org'
 license=(MIT BSD-3-Clause)
@@ -399,6 +399,13 @@ sha256sums=('cf40db276fb33e553947b29166eaab227839d7afdaa049744e7c1c4c428facf2'
             'c90d55dbff2f09ea9fce383ddaa3987b4fca15537467ee4a9297be18a95244d5'
             'cb023b113d3413928eb16efc78c02c86800279fdfe8d03648d922c07e714f875')
 
+# add custom patches by extending the bash array, as this is both cleaner
+# and easier to maintain
+source=(${source[@]}
+        xdg-basedir.patch)
+sha256sums=(${sha256sums[@]}
+            'a7d9c117e713e8fc68c777fcc046da5dcae7706055d6d1af7555687086ff4266')
+
 # Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
 # Keys are the names in the above script; values are the dependencies in Arch
 # plus any so names that are provided + linked
@@ -433,13 +440,13 @@ _unwanted_bundled_libs=(
 depends+=(${_system_libs[@]})
 
 _update_sources() {
-  python makepkg-source-roller.py update "v$pkgver" "$pkgname"
+  python makepkg-source-roller.py update "v$pkgver" "${pkgname%-*}"
   updpkgsums
 }
 
 prepare() {
-  sed -i "s|@ELECTRON@|${pkgname}|" electron-launcher.sh
-  sed -i "s|@ELECTRON@|${pkgname}|" electron.desktop
+  sed -i "s|@ELECTRON@|${pkgname%-*}|" electron-launcher.sh
+  sed -i "s|@ELECTRON@|${pkgname%-*}|" electron.desktop
   sed -i "s|@ELECTRON_NAME@|Electron ${_major_ver}|" electron.desktop
 
   cp -r chromium-mirror_third_party_depot_tools depot_tools
@@ -448,7 +455,7 @@ prepare() {
 
   echo "Putting together electron sources"
   # Generate gclient gn args file and prepare-electron-source-tree.sh
-  python makepkg-source-roller.py generate electron/DEPS $pkgname
+  python makepkg-source-roller.py generate electron/DEPS ${pkgname%-*}
   rbash prepare-electron-source-tree.sh "$CARCH"
   mv electron src/electron
 
@@ -614,24 +621,24 @@ build() {
 }
 
 package() {
-  install -dm755 "${pkgdir:?}/usr/lib/${pkgname}"
-  bsdtar -xf src/out/Release/dist.zip -C "${pkgdir}/usr/lib/${pkgname}"
+  install -dm755 "${pkgdir:?}/usr/lib/${pkgname%-*}"
+  bsdtar -xf src/out/Release/dist.zip -C "${pkgdir}/usr/lib/${pkgname%-*}"
 
-  chmod u+s "${pkgdir}/usr/lib/${pkgname}/chrome-sandbox"
+  chmod u+s "${pkgdir}/usr/lib/${pkgname%-*}/chrome-sandbox"
 
-  install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}"
-  for l in "${pkgdir}/usr/lib/${pkgname}"/{LICENSE,LICENSES.chromium.html}; do
+  install -dm755 "${pkgdir}/usr/share/licenses/${pkgname%-*}"
+  for l in "${pkgdir}/usr/lib/${pkgname%-*}"/{LICENSE,LICENSES.chromium.html}; do
     ln -s  \
-      "$(realpath --relative-to="${pkgdir}/usr/share/licenses/${pkgname}" "${l}")" \
-      "${pkgdir}/usr/share/licenses/${pkgname}"
+      "$(realpath --relative-to="${pkgdir}/usr/share/licenses/${pkgname%-*}" "${l}")" \
+      "${pkgdir}/usr/share/licenses/${pkgname%-*}"
   done
 
   install -Dm755 "${srcdir}/electron-launcher.sh" \
-    "${pkgdir}/usr/bin/${pkgname}"
+    "${pkgdir}/usr/bin/${pkgname%-*}"
 
   # Install .desktop and icon file (see default_app-icon.patch)
   install -Dm644 electron.desktop \
-    "${pkgdir}/usr/share/applications/${pkgname}.desktop"
+    "${pkgdir}/usr/share/applications/${pkgname%-*}.desktop"
   install -Dm644 src/electron/default_app/icon.png \
-          "${pkgdir}/usr/share/pixmaps/${pkgname}.png"  # hicolor has no 1024x1024
+          "${pkgdir}/usr/share/pixmaps/${pkgname%-*}.png"  # hicolor has no 1024x1024
 }

+ 67 - 0
xdg-basedir.patch

@@ -0,0 +1,67 @@
+# Move ~/.pki directory to ${XDG_DATA_HOME:-$HOME/.local}/share/pki on linux
+# builds to follow the XDG Base Directory Specification. For details, refer to
+# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
+
+--- a/base/nix/xdg_util.cc
++++ b/base/nix/xdg_util.cc
+@@ -29,6 +29,8 @@
+ const char kXdgConfigHomeEnvVar[] = "XDG_CONFIG_HOME";
+ const char kXdgCurrentDesktopEnvVar[] = "XDG_CURRENT_DESKTOP";
+ const char kXdgSessionTypeEnvVar[] = "XDG_SESSION_TYPE";
++const char kDotDataDir[] = ".local/share";
++const char kXdgDataHomeEnvVar[] = "XDG_DATA_HOME";
+
+ FilePath GetXDGDirectory(Environment* env, const char* env_name,
+                          const char* fallback_dir) {
+
+--- a/base/nix/xdg_util.h
++++ b/base/nix/xdg_util.h
+@@ -37,6 +37,12 @@
+ // The XDG session type environment variable.
+ BASE_EXPORT extern const char kXdgSessionTypeEnvVar[];
+
++// The default XDG data directory name.
++BASE_EXPORT extern const char kDotDataDir[];
++
++// The XDG data directory environment variable.
++BASE_EXPORT extern const char kXdgDataHomeEnvVar[];
++
+ // Utility function for getting XDG directories.
+ // |env_name| is the name of an environment variable that we want to use to get
+ // a directory path. |fallback_dir| is the directory relative to $HOME that we
+
+--- a/crypto/nss_util.cc
++++ b/crypto/nss_util.cc
+@@ -30,6 +30,9 @@
+ #include "build/chromeos_buildflags.h"
+ #include "crypto/nss_crypto_module_delegate.h"
+ #include "crypto/nss_util_internal.h"
++#include "base/environment.h"
++#include "base/nix/xdg_util.h"
++#include "chrome/common/chrome_constants.h"
+
+ namespace crypto {
+
+@@ -45,12 +48,21 @@
+
+ base::FilePath GetDefaultConfigDirectory() {
+   base::FilePath dir;
++#if defined(OS_LINUX)
++  std::unique_ptr<base::Environment> env(base::Environment::Create());
++  dir = base::nix::GetXDGDirectory(env.get(), base::nix::kXdgDataHomeEnvVar, base::nix::kDotDataDir);
++#else
+   base::PathService::Get(base::DIR_HOME, &dir);
++#endif
+   if (dir.empty()) {
+-    LOG(ERROR) << "Failed to get home directory.";
++    LOG(ERROR) << "Failed to get $HOME or $XDG_DATA_HOME directory.";
+     return dir;
+   }
++#if defined(OS_LINUX)
++  dir = dir.Append(chrome::kBrowserProcessExecutableName).AppendASCII("pki").AppendASCII("nssdb");
++#else
+   dir = dir.AppendASCII(".pki").AppendASCII("nssdb");
++#endif
+   if (!base::CreateDirectory(dir)) {
+     LOG(ERROR) << "Failed to create " << dir.value() << " directory.";
+     dir.clear();