Cannot find module: /atom.asar/renderer/lib/init.js on GNU/Linux with sudo

I'm having a strange issue in some GNU/Linux systems with v0.35.2:
Uncaught Error: Cannot find module '/home/jviotti/Downloads/7193eec573c62867151d-4e63199c2cf83a13e4a2301c61deec2616f9187b/node_modules/electron-prebuilt/dist/resources/atom.asar/renderer/lib/init.js'

The file referenced above does exist:
$ asar list node_modules/electron-prebuilt/dist/resources/atom.asar | grep renderer/lib/init.js
/renderer/lib/init.js

I've been able to build a small dummy application that reproduces the error: https://gist.github.com/jviotti/7193eec573c62867151d.
Instructions:

Download the gist as a zip.
npm install.
Execute npm start as sudo: sudo npm start (the app runs fine without sudo).

Some experimentation I did:

I can reproduce the issue on Fedora 22, but not on an Ubuntu 14.04 virtual machine.
The issue is gone by downgrading to v0.31.2 (any higher version fails).
The issue happens by using npm start as well as executing the electron binary directly.

I'm bisecting between v0.32.0 and v0.31.2 but bootstrap.py is taking forever in each step here (I don't have a good internet connection currently).
What could be causing this?

A consequence of this issue is that window.require is not defined in the renderer process, making impossible to require any code.

Turns out I can reproduce in Ubuntu 14.04 running in a real machine, but not in a VM.

I'm still doing the bisect process. The first bad commit is among these ones:
53b9d61 Fix building on Windows
2c3751e Merge pull request #2696 from John-Lin/master
4a81300 Merge pull request #2695 from takashi/patch-1
73af4c0 remove -jp suffix from quick-start-jp.md
2734d67 add Traditional Chinese documents link in README to navigate
c81de98 Update brightray to Chrome 45
599e9b9 Provide task runner for the node mode
c1d7ad9 Devtools no longer uses iframes
ee0dc0d Update clang
4254eb2 Fix API changes on Linux
262b66b Feed gin::PerIsolateData with a task runner
45491ca Fix API changes
1db8432 Upgrade to Chrome 45
992aada Can only run tests on x64 machine

I'll finish the remaining steps tomorrow.

The bug was introduced in the following commits:
599e9b9 Provide task runner for the node mode
c1d7ad9 Devtools no longer uses iframes
ee0dc0d Update clang
4254eb2 Fix API changes on Linux
262b66b Feed gin::PerIsolateData with a task runner
45491ca Fix API changes
1db8432 Upgrade to Chrome 45

Sadly, all these commits are completely broken on Linux (both Ubuntu and Fedora) and do not build at all (I get lots of C++ errors), so I couldn't reduce the options anymore.
Here is the compare view between those commits: https://github.com/atom/electron/compare/1db8432...599e9b9.
Hopefully someone with more experience in the C++ side of electron can review.

As a side note, https://github.com/atom/electron/commit/992aada90f4bb53913e58d90f49b8ecce7bf02c1 is the last good commit.

These are the errors I get on the broken commits mentioned above:
parallels@ubuntu:~/Projects/electron$ ./script/build.py -c D
ninja: Entering directory `out/D'
[18/1114] CXX obj/vendor/brightray/browser/brightray.browser_client.o
FAILED: /home/parallels/Projects/electron/vendor/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/vendor/brightray/browser/brightray.browser_client.o.d -DNDEBUG -DV8_USE_EXTERNAL_STARTUP_DATA -DSK_SUPPORT_LEGACY_GETTOPDEVICE -DSK_SUPPORT_LEGACY_BITMAP_CONFIG -DSK_SUPPORT_LEGACY_DEVICE_VIRTUAL_ISOPAQUE -DSK_SUPPORT_LEGACY_N32_NAME -DSK_SUPPORT_LEGACY_SETCONFIG -DSK_IGNORE_ETC1_SUPPORT -DSK_IGNORE_GPU_DITHER -DTOOLKIT_VIEWS -DUSE_AURA -DUSE_X11 -DUSE_NSS_CERTS -DUSE_NSS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DCOMPONENT_BUILD -DGURL_DLL -DSKIA_DLL -DUSING_V8_SHARED -DWEBKIT_DLL -I../../vendor/brightray -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/skia/config -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/third_party/skia/include/core -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/third_party/mojo/src -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/third_party/WebKit -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/shared_library/gen -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gconf/2 -I/usr/include/nss -I/usr/include/nspr -Wno-deprecated-register -Wno-sentinel -m64 -march=x86-64 -std=c++11 -Wno-reserved-user-defined-literal -D__STRICT_ANSI__ -fno-rtti  -c ../../vendor/brightray/browser/browser_client.cc -o obj/vendor/brightray/browser/brightray.browser_client.o
In file included from ../../vendor/brightray/browser/browser_client.cc:7:
In file included from ../../vendor/brightray/browser/browser_context.h:8:
../../vendor/brightray/browser/permission_manager.h:26:72: error: non-virtual member function marked 'override' hides virtual member function
      const base::Callback<void(content::PermissionStatus)>& callback) override;
                                                                       ^
/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/content/public/browser/permission_manager.h:29:16: note: hidden overloaded virtual function 'content::PermissionManager::RequestPermission' declared here: type mismatch at 2nd parameter ('content::RenderFrameHost *' vs 'content::WebContents *')
  virtual void RequestPermission(
               ^
In file included from ../../vendor/brightray/browser/browser_client.cc:7:
In file included from ../../vendor/brightray/browser/browser_context.h:8:
../../vendor/brightray/browser/permission_manager.h:30:63: error: non-virtual member function marked 'override' hides virtual member function
                               const GURL& requesting_origin) override;
                                                              ^
/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/content/public/browser/permission_manager.h:39:16: note: hidden overloaded virtual function 'content::PermissionManager::CancelPermissionRequest' declared here: type mismatch at 2nd parameter ('content::RenderFrameHost *' vs 'content::WebContents *')
  virtual void CancelPermissionRequest(PermissionType permission,
               ^
2 errors generated.
[18/1114] CXX obj/vendor/brightray/browser/brightray.browser_context.o
FAILED: /home/parallels/Projects/electron/vendor/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/vendor/brightray/browser/brightray.browser_context.o.d -DNDEBUG -DV8_USE_EXTERNAL_STARTUP_DATA -DSK_SUPPORT_LEGACY_GETTOPDEVICE -DSK_SUPPORT_LEGACY_BITMAP_CONFIG -DSK_SUPPORT_LEGACY_DEVICE_VIRTUAL_ISOPAQUE -DSK_SUPPORT_LEGACY_N32_NAME -DSK_SUPPORT_LEGACY_SETCONFIG -DSK_IGNORE_ETC1_SUPPORT -DSK_IGNORE_GPU_DITHER -DTOOLKIT_VIEWS -DUSE_AURA -DUSE_X11 -DUSE_NSS_CERTS -DUSE_NSS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DCOMPONENT_BUILD -DGURL_DLL -DSKIA_DLL -DUSING_V8_SHARED -DWEBKIT_DLL -I../../vendor/brightray -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/skia/config -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/third_party/skia/include/core -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/third_party/mojo/src -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/third_party/WebKit -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/shared_library/gen -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gconf/2 -I/usr/include/nss -I/usr/include/nspr -Wno-deprecated-register -Wno-sentinel -m64 -march=x86-64 -std=c++11 -Wno-reserved-user-defined-literal -D__STRICT_ANSI__ -fno-rtti  -c ../../vendor/brightray/browser/browser_context.cc -o obj/vendor/brightray/browser/brightray.browser_context.o
In file included from ../../vendor/brightray/browser/browser_context.cc:5:
In file included from ../../vendor/brightray/browser/browser_context.h:8:
../../vendor/brightray/browser/permission_manager.h:22:16: error: no type named 'WebContents' in namespace 'content'
      content::WebContents* web_contents,
      ~~~~~~~~~^
../../vendor/brightray/browser/permission_manager.h:28:41: error: no type named 'WebContents' in namespace 'content'
                               content::WebContents* web_contents,
                               ~~~~~~~~~^
In file included from ../../vendor/brightray/browser/browser_context.cc:8:
../../vendor/brightray/browser/inspectable_web_contents_impl.h:149:68: error: non-virtual member function marked 'override' hides virtual member function
      content::SessionStorageNamespace* session_storage_namespace) override;
                                                                   ^
/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/content/public/browser/web_contents_delegate.h:293:16: note: hidden overloaded virtual function 'content::WebContentsDelegate::ShouldCreateWebContents' declared here: type mismatch at 5th parameter ('const std::string &' (aka 'const basic_string<char> &') vs 'const base::string16 &' (aka 'const basic_string<char16, base::string16_char_traits> &'))
  virtual bool ShouldCreateWebContents(
               ^
In file included from ../../vendor/brightray/browser/browser_context.cc:9:
../../vendor/brightray/browser/network_delegate.h:64:67: error: only virtual member functions can be marked 'override'
  bool OnCanThrottleRequest(const net::URLRequest& request) const override;
                                                                  ^~~~~~~~
../../vendor/brightray/browser/browser_context.cc:188:35: error: allocating an object of abstract class type 'brightray::PermissionManager'
    permission_manager_.reset(new PermissionManager);
                                  ^
/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/content/public/browser/permission_manager.h:29:16: note: unimplemented pure virtual method 'RequestPermission' in 'PermissionManager'
  virtual void RequestPermission(
               ^
/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/content/public/browser/permission_manager.h:39:16: note: unimplemented pure virtual method 'CancelPermissionRequest' in 'PermissionManager'
  virtual void CancelPermissionRequest(PermissionType permission,
               ^
5 errors generated.
[18/1114] CXX obj/vendor/brightray/browser/brightray.browser_main_parts.o
FAILED: /home/parallels/Projects/electron/vendor/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/vendor/brightray/browser/brightray.browser_main_parts.o.d -DNDEBUG -DV8_USE_EXTERNAL_STARTUP_DATA -DSK_SUPPORT_LEGACY_GETTOPDEVICE -DSK_SUPPORT_LEGACY_BITMAP_CONFIG -DSK_SUPPORT_LEGACY_DEVICE_VIRTUAL_ISOPAQUE -DSK_SUPPORT_LEGACY_N32_NAME -DSK_SUPPORT_LEGACY_SETCONFIG -DSK_IGNORE_ETC1_SUPPORT -DSK_IGNORE_GPU_DITHER -DTOOLKIT_VIEWS -DUSE_AURA -DUSE_X11 -DUSE_NSS_CERTS -DUSE_NSS -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DDEBUG -DCOMPONENT_BUILD -DGURL_DLL -DSKIA_DLL -DUSING_V8_SHARED -DWEBKIT_DLL -I../../vendor/brightray -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/skia/config -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/third_party/skia/include/core -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/third_party/mojo/src -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/src/third_party/WebKit -I/home/parallels/Projects/electron/vendor/brightray/vendor/download/libchromiumcontent/shared_library/gen -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gconf/2 -I/usr/include/nss -I/usr/include/nspr -Wno-deprecated-register -Wno-sentinel -m64 -march=x86-64 -std=c++11 -Wno-reserved-user-defined-literal -D__STRICT_ANSI__ -fno-rtti  -c ../../vendor/brightray/browser/browser_main_parts.cc -o obj/vendor/brightray/browser/brightray.browser_main_parts.o
In file included from ../../vendor/brightray/browser/browser_main_parts.cc:7:
In file included from ../../vendor/brightray/browser/browser_context.h:8:
../../vendor/brightray/browser/permission_manager.h:22:16: error: no type named 'WebContents' in namespace 'content'
      content::WebContents* web_contents,
      ~~~~~~~~~^
../../vendor/brightray/browser/permission_manager.h:28:41: error: no type named 'WebContents' in namespace 'content'
                               content::WebContents* web_contents,
                               ~~~~~~~~~^
2 errors generated.
ninja: build stopped: subcommand failed.

The issue seems to be gone by cherry picking c81de98 Update brightray to Chrome 45. I don't have access to a Linux machine at the moment (only a VM, but I can't reproduce the original issue there), but I'll keep bisecting later.

Can you try whether 0.36.0 works?

@zcbenz It still fails with the same error.

I just experienced this while using v0.36.2 as well.
On Ubuntu 14.04 x86_64, and on a custom Linux distro running on an ARM chip. Running as a non-root user lets me work around the issue on both systems.

@arashpayan Sadly I was unable to find the reason of the error. It seems to start happening right after upgrading to Chrome 45, and is still present on newer Chrome versions.

@zcbenz Any updates on this?

@jviotti I can not reproduce the problem on any machine, and I never saw similar issues in Atom, so you are basically on your own.

@jviotti : maybe a silly question because I'm unfamiliar with the build process, but shouldn't those compilation failures show up in the build process?
I'm think I'm having the same issue myself, and trying to track it down. My app actually requires root privs to run (or CAP_NET_ADMIN capabilities), so I'm glad you came up with a simpler test case :)
I'm currently attempting to build electron myself to see if i can reproduce those errors on Fedora 23.

definitely getting a ton of build errors and/or warnings when trying to build 0.36.4, so many that the output went past my shell buffer, and I don't have time to build again right now. I do that see similar brightray issues though.

@jrobeson Are you bisecting electron? I get the build errors on certain commits, unless I cherry pick c81de98 Update brightray to Chrome 45 on each step.

nah, I'm not bisecting, that'd take up too much machine time.  I just wanted to see if i could replicate your issue with the latest electron, since it seemed like nobody else did.

I wonder if it's fixed if chrome 48 updates will help.

@zcbenz I've been debugging this issue and found that the origin of this issue is _file.IsValid() returning false in asar/archive.cc when running getOrCreateArchive() on atom.asar:
// https://github.com/atom/electron/blob/master/atom/common/asar/archive.cc#L139

bool Archive::Init() {
  if (!file_.IsValid())
    return false;

...

I was able to get more information about the error like this:
if (!file_.IsValid()) {

    // Include <iostream> for std::cout and std::endl
    std::cout << file_.ErrorToString(file._error_details()) << std::endl;

    return false;
}

Which printed: FILE_ERROR_ACCESS_DENIED, which is very weird given that the process is running as root and I of course have access to the package.
What do you think?

Could this be somehow related to new Chromium policies for accessing files? The code works fine when dealing with asar archives in the main process, but fails when loading the first file inside an asar in the renderer process.
Maybe Chromium prevents I/O to filesystem files from a WebView when the process is running as root?

I'd like to share my work around for this bug, in case it helps in debugging. Please take it with a grain of sodium chloride.
When I originally extracted the electron archive, it was on my desktop which has multiple user accounts, and the file owner was set to my personal user account (arash). When I transferred it (I don't remember if I tared then scped or just straight scp) to the test system where I first experienced this bug, there was only one account, root. ls showed the files as being owned by root, but I kept experiencing the bug from this thread. On a whim, I thought maybe the uid from my desktop computer was intact in the files and causing the problem.
To test my theory, I created another account on this test system named foo, and without doing anything else, running ls now showed the electron files as belonging to foo. I presume this was because the uid of the new foo user was the same as the user id of the account on my desktop. Running electron as foo worked just fine. So I chowned the files back to root and this error went away.
So maybe the invalid uid is causing some function to fail in Electron. It's still odd, because root should have access to everything.

@arashpayan Thanks for the information.
Can you reproduce the issue without transferring files between systems, etc (by running on the same system where electron was initially downloaded)?
I've tried the chown suggestion but it sadly didn't work for me.

I reproduced this issue using @jviotti's gist on my machine.
node version: v5.4.1
npm version: 3.5.3
electron-prebuild version: 0.35.6
Distro: Arch linux natively
AppArmor/SELinux: N/A
Linux: 4.3.3-2-ARCH
I'm currently investigating two strace dumps to see the difference between running as root and running as a user.

@jviotti that's where it gets weird. If I run electron as root on my desktop where I originally extracted the files (Ubuntu 14.04), it still fails. That's why I was originally hesitant to present my work around.

I found this closed issue about the exact same problem where the author came close to what we have here: https://github.com/atom/electron/issues/3528.
He mentions that the app works in his personal computer but not in the Raspberry Pi, but notice he mentions that the app is running as root on the Pi, which supports the argument that the issue is only present when running as root.
The guy mentions that Raspbian is able to run the app without any issues, but it fails with this error on Arch, which maybe indicates some dependency issue.
Maybe @szz-dvl might want to provide more information here.

@zcbenz Could this be somehow related to Chromium's Linux SUID Sandboxing? According to https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox.md:

With r20110, Chromium on Linux can now sandbox its renderers using a SUID helper binary. This is one of our layer-1 sandboxing solutions.

According to the Chromium docs (https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox_development.md), there is an option to disable sandboxing:
--disable-setuid-sandbox

However this option doesn't seem to be supported as a Chromium switch by electron.
Can you instruct us on how to disable sandboxing programatically?

Building electron as root fixes the issue, but I have no idea why.

@jviotti The sandbox of Chromium is disabled in Electron, so it shouldn't be the cause.
Can you paste the value ofpath_.value()? Chromium does a check of whether path component contains .., and if it does the FILE_ERROR_ACCESS_DENIED error would be returned.
Refs:
https://codereview.chromium.org/1469153006
https://codereview.chromium.org/1488873002

@zcbenz The result of path_.value() is /home/jviotti/Projects/electron-current/out/D/resources/atom.asar, no ...

I've modified Archive::Init to print the mode of path_.value() before checking for it's validity:
#include <sys/stat.h>

...

int getPathMode(std::string name) {
  struct stat buffer;
  int ret = stat(name.c_str(), &buffer);
  if (ret < 0) return -1;
  return buffer.st_mode;
}

bool Archive::Init() {
  std::cout << getPathMode(path_.value()) << std::endl;
  if (!file_.IsValid()) {
    std::cout << "Archive is invalid: ("
              << file_.ErrorToString(file_.error_details())
              << "): "
              << path_.value()
              << std::endl;
    return false;
  }

...

This is the output when running my app as root (notice I packed the gist I linked above as resources/app.asar for convenience):
$ sudo ./out/D/electron
33204
33204
(electron) loadUrl is deprecated. Use loadURL instead.
33204
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
-1
Archive is invalid: (FILE_ERROR_ACCESS_DENIED): /home/jviotti/electron-current/out/D/resources/atom.asar
[30652:0128/113606:ERROR:CONSOLE(340)] "Uncaught Error: Cannot find module '/home/jviotti/electron-current/out/D/resources/atom.asar/renderer/lib/init.js'", source: module.js (340)

Notice that the stat succeeds three times at the beginning, apparently before the index.html file gets loaded.

I also noticed that the stat always succeeds on /home and /home/jviotti but not any nested directories like /home/jviotti/Projects despite root having full permissions on those of course.
 What could be going on?

Found something! The newly created /home/john home directory had execution permissions, which /home/jviotti didn't. Adding executing permissions to my home directory fixes the issue:
chmod a+x /home/jviotti

Removing the execution permissions makes the issue appear again.

I initially mentioned that this bug was not reproducible in an Ubuntu 14.04 virtual machine, which after checking, had execution permissions on the home directory by default. Under the assumption that execution permissions were the issue, I've removed execution permissions from my home directory in the virtual machine and the error didn't happen.
I also ran the same experiment in OS X and was not able to reproduce the issue.
I tried the execution permissions workaround in two real Linux boxes and that worked, so it definitely seems to be a Linux specific issue, but it doesn't happen on virtual machines. What could be the difference between running electron in both environments?

I've made some progress regarding why the file is read successfully a couple of times before failing:
I can see that running my app in Electron forks three processes:

The main process.
A renderer process with --node-integration=true whose parent process is the main process.
A renderer process without --node-integration=true whose parent process is the main process.

When running under root, the main process has a uid and gid of zero. The first three times that the file is opened is opened in original process that forks the other three. This process has full permissions over the system, and I can freely change my uid and gid with setuid and setgid correctly (as a way to check I indeed have permissions).
The rest of the times, the file is attempted to be opened in the two renderer processes. Since their parent process is the main process, they inherit the uid and gid of the parent (the main process), which inherits from the original process, but lack enough permissions for some reason (setuid returns -1, and they throw our ACCESS_DENIED error).
See more information about the three processes in this output from ps, where 23294 is the original process that forks the three ones, 23296 is the main process, and 23320 and 23321 are the renderer processes:
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
 6049 23293 23293  6049 pts/10   23293 S+       0   0:00          |   |   \_ sudo ./out/D/electron /home/jviotti/Downloads/7193eec573c62867151d-4e63199c2cf83a13e4a2301c61deec2616f9187b
23293 23294 23293  6049 pts/10   23293 Sl+      0   0:01          |   |       \_ /home/jviotti/electron-current/out/D/electron /home/jviotti/Downloads/7193eec573c62867151d-4e63199c2cf83a13e4a2301c61deec2616f9187b
23294 23296 23293  6049 pts/10   23293 S+       0   0:00          |   |           \_ /home/jviotti/electron-current/out/D/electron --type=zygote --no-sandbox
23296 23320 23293  6049 pts/10   23293 Sl+      0   0:00          |   |               \_ /home/jviotti/electron-current/out/D/electron --type=renderer --no-sandbox --lang=en-US --node-integration=true --num-raster-threads=2 --content-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --video-image-texture-target=3553 --disable-accelerated-video-decode --disable-webrtc-hw-encoding --disable-gpu-compositing --channel=23294.0.921772104 --v8-natives-passed-by-fd --v8-snapshot-passed-by-fd
23296 23321 23293  6049 pts/10   23293 Sl+      0   0:00          |   |               \_ /home/jviotti/electron-current/out/D/electron --type=renderer --no-sandbox --lang=en-US --num-raster-threads=2 --content-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --video-image-texture-target=3553 --disable-accelerated-video-decode --disable-webrtc-hw-encoding --disable-gpu-compositing --channel=23294.1.175272910 --v8-natives-passed-by-fd --v8-snapshot-passed-by-fd

@zcbenz Why are there two renderer process threads? Also, why is node-integration=true only enabled in one of them?

After some strace digging I found the offending syscall. The threads that run the node code will do
capset({_LINUX_CAPABILITY_VERSION_3, 0}, {0, 0, 0})

which drops all the capabilities. This is ok when the process is running as a user that has access to every directory in the path leading to atom.asar, but it will fail if one directory isn't accessible. That's why doing chmod a+x on the home directory fixes the problem.
Here is an example C program that demonstrates the above
#include <sys/capability.h>
#include <stdio.h>
#include <fcntl.h>

#define FILENAME "/home/petrosagg/somefile"

int main () {
	struct __user_cap_header_struct hdr;
	struct __user_cap_data_struct data;

	hdr.version = _LINUX_CAPABILITY_VERSION;
	hdr.pid = 0;

	data.effective = 0;
	data.permitted = 0;
	data.inheritable = 0;

	if (capset(&hdr, &data) < 0)
		printf("capset failed");

	if (open(FILENAME, O_RDONLY) < 0)
		printf("open failed");

	return 0;
}

Change the FILENAME accordingly for your system and run it once with and once without sudo. Only without will work.
Now that we know what the problem is, I'm not sure what the fix should be. On one hand, it sounds too invasive to disable that syscall. On the other hand, standalone nodejs doesn't do that by default when running under root.
Some input from the maintainers would be highly appreciated.

The sys call seems to proceed from chromium. There is a function called Credentials::DropAllCapabilitiesOnCurrentThread() that performs this:
// See https://code.google.com/p/chromium/codesearch#chromium/src/sandbox/linux/services/credentials.cc&q=DropAllCapabilitiesOnCurrentThread&sq=package:chromium&type=cs&l=173

// static
bool Credentials::DropAllCapabilitiesOnCurrentThread() {
  return SetCapabilitiesOnCurrentThread(std::vector<Capability>());
}

// static
bool Credentials::SetCapabilitiesOnCurrentThread(
    const std::vector<Capability>& caps) {
  struct cap_hdr hdr = {};
  hdr.version = _LINUX_CAPABILITY_VERSION_3;
  struct cap_data data[_LINUX_CAPABILITY_U32S_3] = {{}};

  // Initially, cap has no capability flags set. Enable the effective and
  // permitted flags only for the requested capabilities.
  for (const Capability cap : caps) {
    const int cap_num = CapabilityToKernelValue(cap);
    const size_t index = CAP_TO_INDEX(cap_num);
    const uint32_t mask = CAP_TO_MASK(cap_num);
    data[index].effective |= mask;
    data[index].permitted |= mask;
  }

  return sys_capset(&hdr, data) == 0;
}

This is itself used in a function called Credentials::ForkAndDropCapabilitiesInChild:
// See https://code.google.com/p/chromium/codesearch#chromium/src/sandbox/linux/services/credentials.cc&q=ForkAndDrop&sq=package:chromium&type=cs&l=325

pid_t Credentials::ForkAndDropCapabilitiesInChild() {
  pid_t pid = fork();
  if (pid != 0) {
    return pid;
  }

  // Since we just forked, we are single threaded.
  PCHECK(DropAllCapabilitiesOnCurrentThread());
  return 0;
}

Which is called by Zygote, which drops capabilities independently on sandbox settings:
// See https://code.google.com/p/chromium/codesearch#chromium/src/content/zygote/zygote_linux.cc&q=ForkAndDropCapabilitiesInChild&sq=package:chromium&type=cs&l=448

if (sandbox_flags_ & kSandboxLinuxPIDNS && sandbox_flags_ & kSandboxLinuxUserNS) {
   pid = sandbox::NamespaceSandbox::ForkInNewPidNamespace(/*drop_capabilities_in_child=*/true);
} else {
   pid = sandbox::Credentials::ForkAndDropCapabilitiesInChild();
}

I guess we could submit a patch to libchromiumcontent to not drop capabilities when sandbox is not enabled, although I'm not sure about the impact of such change.

Awesome research on this! Patching the ForkAndDropCapabilitiesInChild code looks good to me, we are not using sandbox at all so it doesn't hurt to give more capabilities to renderer process.

@zcbenz Do you have any instructions on how to build electron with a local checkout of libchromiumcontent? I've made my changes to libchromiumcontent but having problems following the nested script/bootstrap calls, and the fact that brightray always seems to call the download script.

@jviotti You can find some instructions at https://github.com/atom/libchromiumcontent/issues/174#issuecomment-178409045, the key is to pass the file:// URL to the bootstrap script.

@zcbenz Thanks for the instructions. The patch seems to be working great! See https://github.com/atom/libchromiumcontent/pull/180


Visualizer Settings Attributes?

Hi,
I am having trouble understanding how to actually use the Visualize Settings Attributes. eg:
  visualizer.config = {
  noteHeight: 4,
  pixelsPerTimeStep: 60,
  minPitch: 30
};

Can this be used as an attribute within the embed code? eg:
<midi-player
<sound-font="https://storage.googleapis.com/magentadata/js/soundfonts/sgm_plus"
  src="my.mid"
  sound-font visualizer="#myPianoRollVisualizer">
</midi-player>

<midi-visualizer type="piano-roll" config="configname: option" id="myPianoRollVisualizer"
  src="my.mid">
</midi-visualizer>

Or if it is not used as an attribute option within the embed code, then how do I apply the config to it?
I am trying to make the note sizes bigger.

Hi!
Currently, the only way to set the config is with JavaScript, so you would need to do something like:
<midi-visualizer type="piano-roll" id="myPianoRollVisualizer" src="my.mid">
</midi-visualizer>

<script>
document.querySelector("#myPianoRollVisualizer").config = {
  noteHeight: 4,
  pixelsPerTimeStep: 60,
  minPitch: 30
};
</script>

I'm open to suggestions on how to enable to do this from HTML. I considered having separate attributes, e.g. config-note-height, config-pixels-per-time-step...  Or indeed putting the whole JSON string inside a single attribute. Perhaps the most elegant way would be via custom CSS properties, e.g. style="--note-height: 4; --pixels-per-time-step: 60;"... but it doesn't seem to be possible to listen to their changes.

Oh,
The script snippet actually worked perfect for me! I actually tried to embed it in a script tag previously before making this issue but I forgot to do a document query selector on it LOL. So that was my fault, my bad.
I am currently working on implementing this on my website and once it is done I will share a link with you so you can use it as another example case if you like. If my testers find any bugs I will post them as separate issues.
Thank you so much for open sourcing this project, this is exactly what I was looking for!


WCA needs to be expanded. Add context to routine

An example of what it might look like is notan.
The state can be the WCA itself or another type with certain restrictions.
It can be used to execute a chain of commands, where "subject" is a command from the map of commands in command aggregator.
Example of initialization:
let ca = wca::commands_aggregator()
  .changing_exit_code( true )
  .commands( commands::commands_form() )
  .form();

ca.set_context(&ca); // or map of commands, or function to setup context(think about it)
ca.instruction_perform( args.join( " " ).as_str() )

Usage example:
pub fn command_name( instruction : &crate::instruction::Instruction, ctx : &mut State ) -> Result< (), BasicError >
{
  // do something
}

Completed in: #916 , #919 , #925


Remove datalad element?

I am not really using the datalad feature and if this project is going to the direction for report generation, I don't see the point keeping it

Not including datalad component in this repo any more...


refactor: update blas/ext/base/sdssum to follow current project conventions

Resolves #1525
Description

What is the purpose of this pull request?

This pull request updates @stdlib/blas/ext/base/sdssum to follow current project conventions.
Related Issues

Does this pull request have any related issues?

This pull request:

resolves #1525

Questions

Any questions for reviewers of this pull request?

No.
Other

Any other information relevant to this pull request? This may include screenshots, references, and/or implementation notes.

No.
Checklist

Please ensure the following tasks are completed before submitting this pull request.

[x] Read, understood, and followed the contributing guidelines.

@stdlib-js/reviewers

@Planeshifter Please review my PR?

Please also check the box in the OP indicating that you have read and understood the contribution guidelines.

@kgryte Thanks for your review, I will implement these ass soon as possible

@kgryte
The requested changes have been addressed. Please take a look

@kgryte
The requested changes have been addressed. Please take a look

@kgryte @Planeshifter  Please see this

Closing as this refactoring was meanwhile merged per https://github.com/stdlib-js/stdlib/pull/2080. Thanks either way for your contribution even though it didn't make it in this time!


Add support for Low-Code Application Platforms (LCAP)

Many enterprise applications are developed and deployed to Low-Code Application Platforms (LCAP). These applications may consist of configuration, a minimum amount of code, workflow, and integrations.
Low-code components should be considered for a future version of the CycloneDX spec. Example LCAP platforms include:

Appian
Mendix
Salesforce
ServiceNow

Semi-related is a new OWASP Top 10 project for low-code
https://owasp.org/www-project-top-10-low-code-no-code-security-risks/

Possibly reach out to https://www.prophecy.io/ as they have a low code platform and a COSS model.

Semi-related is a new OWASP Top 10 project for low-code https://owasp.org/www-project-top-10-low-code-no-code-security-risks/

Hi, I lead the project above. We'd be happy to collaborate!

Support for low-code apps have been implemented indirectly through component type expansion and machine learning enhancements. Together, these two enhancements had everything necessary for low-code apps. This include:

New platform and data component type
Data components that can contain source code, configuration, and templates

This should make it possible to support any low-code app and any citizen developed app.


STO scan-build-scan-push tutorial initial commit STO-6834

Preview: Create a build-scan-push pipeline (STO only)

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://657a6320ca11983a5d7d7507--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://657b4d66acd2990f9ddfe496--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://657c8fdefcc49113400173b0--harness-developer.netlify.app


Service broker provides a internal api for checking an application's …

…binding
[#151906019]

let us hold this PR before we make a decision whether we go this way


Problem with Username and Password when publishing

Hello everybody,
I'm quite new at packaging: that's my first time. I've been told by many people that flit is the best and easier tool to publish a package.
So, I'm trying.
I've install flit using python3 -m pip install flit. Then, I've launch flit script in the repertory I want to package by: flit init. Finally, I try flit publish.
But I'm stuck here:
Writing generated setup.py                                                                  I-flit.sdist
Built sdist: dist/RiemannSphere-1.0.tar.gz                                             I-flit_core.sdist
Copying package file(s) from /var/folders/yt/w719pb7551j9yn78qk5d5shr0000gn/T/tmp78xctcrx/RiemannSphere-1.0/RiemannSphere.py  I-flit_core.wheel
Writing metadata files                                                                 I-flit_core.wheel
Writing the record of files                                                            I-flit_core.wheel
Built wheel: dist/RiemannSphere-1.0-py2.py3-none-any.whl                               I-flit_core.wheel
Using repository at https://upload.pypi.org/legacy/                                        I-flit.upload
Install keyring to store passwords securely                                                W-flit.upload
Server  : https://upload.pypi.org/legacy/
Username: pytest
Password:

I've created an account, but the username is not pytest... I do not remember to have entered this somewhere when installing flit... How to change this Username?
Could someone gives me some help, please?

Hi! Do you have a .pypirc file in your home folder? That might have the wrong username stored in it.
(The bit about finding PyPI login credentials is definitely a weak spot at the moment - it's focused on making things 'just work' for an experienced user who's already got things set up, and doesn't do a great job at helping you correct when there's a mistake)

Thanks you for your rapid answer,
I did not have got a .pypirc in my home folder. Then, I tried with one whose content was  [server-login] repository: https://pypi.python.org/pypi username: tolliob password: xxxxxxx
But it change nothing...
Actually, I do not understand where the flit Username pytest comes from... Could it be when installing flit?

Have you maybe set a FLIT_USERNAME environment variable? Try echo $FLIT_USERNAME in a terminal.
The group in the config file should be called [pypi] (rather than [server-login]) for Flit to use it by default.
This is where it looks for your username (click through to that file if you want to check the code to find it):
https://github.com/takluyver/flit/blob/cfd71d81be95300266c6e989cf2d1bf57aa637fc/flit/upload.py#L75-L79


ci: single workflow

:tada: This PR is included in version 2.1.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Support creation of new type templates

It would be very useful to support creation of new type templates when creating complex types (typically a hierarchy of records and arrays) that appear many times in code with only some parameters (an array size for example) changing.
This could for example look as follow:
types:
  my_type:
    context:
      T: type
      S: integer
    type:
      type: array
      size: "${S}"
      subtype: T
data:
  d1:
    type: my_type
    S: 3
    T: int

To achieve that, we should follow an approach similar to Expression:

the current DatatypeTemplate class should be renamed DatatypeExpression, i.e. something that can be evaluated to a datatype given a context,
a new DatatypeTemplate class should be created that contains a LocalContext and a DatatypeExpression, this should behave like a function, i.e. the LocalContext acts as a Context providing local variables for the inner expression,
a new TemplateReference that inherits from Datatype and references a DatatypeTemplate should be created, this should behave like a function, i.e. store values associated to the local variables of the DatatypeTemplate local variables,
it should be possible to create instances of DatatypeTemplate from YAML just like it is possible to create instances of Datatype.

In GitLab by @ksiero on Oct 4, 2021, 13:00
Shouldn't it be:
data:
  d1:
    type: my_type
    S: 3
    T: int

Shouldn't it be:

indeed, that was on purpose to see if you paid attention ;p (no, it wasn't)


[documentation/feature] Consul/etcd support atomic multiple key changes now

According to current traefik documentation, Consul and etcd backends
do not support updating multiple keys atomically.
However, the referenced issues for consul and etcd have been closed.
Wouldn't this also mean that this feature can be deprecated now
(maybe still useful for older consul and etcd servers)?

@strarsis We use https://github.com/docker/libkv to abstract kv stores connections. Until this feature is supported in libkv, we still need to use the hacky way http://docs.traefik.io/toml/#atomic-configuration-changes.

So an issue is left in libkv and not in Consul or etcd.

It's been a while and it looks like libkv supports it now:

It's possible that I'm looking at a wrong thing though, @emilevauge could you possibly link libkv issue re. Consul support so we could track that?


Mikhail kasimov patch 1

Sorry, have missed one fix to add.

So what's the reason to rename main package's Group to "Development/Tools/Other"?

Yeah, but I'd rather rename the Group of devel package to "Productivity/Security"

Two days ago I also thought in the same way, but faced with RPMLint error, that devel package should be in development group. And to put "Development/Tools/Other" both for main package and its devel add-on is the easiest way to have successfully built package for all RPM-based distros with no error messages. So, there are no conflicts.

That way no package could be in any group other than in "Development", as long as both packages must share the same group and devel package should be in "Development".
I have just synced both groups to "Productivity/Security" and see no problems with RPMLint:
# grep ^Group gost3411-2012.spec
Group:          Productivity/Security
Group:          Productivity/Security

# rpmlint gost3411-2012.spec
0 packages and 1 specfiles checked; 0 errors, 0 warnings.

# rpmlint --version
rpmlint version 1.8 Copyright (C) 1999-2007 Frederic Lepied, Mandriva

OK, just re-built RPM: https://build.opensuse.org/package/live_build_log/home:k_mikhail/GOST34.11-2012/openSUSE_Leap_42.3/x86_64
[   34s] +GOST34.11-2012-devel.x86_64: W: devel-package-with-non-devel-group Productivity/Security

That's why I removed Group:  from Productivity/Security to Development/Tools/Other for both of packages, which OK and gives no such crappy error-messages of RPMLint. Possibly, it is SUSE-specific issue just like a %dir %{_includedir}/gost34.11-2012 for %files, when RH-based distros builts normally instead of SUSE's ones.

UPD: So, SUSE specific: https://en.opensuse.org/openSUSE:Package_group_guidelines
Tools

Groups from this section contain tools useful for developing that are not connected to a particular programming language.

    Development/Tools/Building
    Development/Tools/Debuggers
    Development/Tools/Doc Generators
    Development/Tools/GUI Builders
    Development/Tools/IDE
    Development/Tools/Navigators
    Development/Tools/Other
    Development/Tools/Version Control

Sorry, but, please accept Group: Development/Tools/Other both for gost34.11-2012 and gost34.11-2012-devel packages. Thanks!

The group name "Development/Tools/Other" for the main package does not looks valid for me.
Following the guideline you linked I came up with:

main package: Productivity/Security - Groups from this section are intended for security related stuff like virus scanners, safe password generators, utilities for encrypting, decrypting, signing data, and permission settings
devel package: Development/Libraries/C - that group is intended for packages that allow developing with a library. They are primarily sorted by programming language.

Committed to branch 'add-devel-rpm', please review.

Committed to branch 'add-devel-rpm', please review.

https://build.opensuse.org/package/live_build_log/home:k_mikhail/GOST34.11-2012/openSUSE_Leap_42.3/x86_64
And again:
[   30s] -GOST34.11-2012-devel.x86_64: W: devel-package-with-non-devel-group Productivity/Security

Finally success:  Development/Libraries/C and C++, not  Development/Libraries/C
https://build.opensuse.org/package/live_build_log/home:k_mikhail/GOST34.11-2012/openSUSE_Leap_42.3/x86_64
[   69s] RPMLINT report:
[   69s] ===============
[   69s] 3 packages and 0 specfiles checked; 0 errors, 0 warnings.

I still cannot understand & accept why a devel-package would require a main package? We can install any of both packages regardless of installing a second one.

Yes, in general way, these two packages can be installed separately. But devel-package (in particular, in our case) is only set of header files for /usr/include/ folder and there's no sense of them if main package is not installed. They are orphaned without main package.
Here is, just for an example, snippet of spec-file for python3: https://build.opensuse.org/package/view_file/devel:languages:python:Factory/python3/python3-base.spec?expand=1
%package -n python3-devel
Summary:        Include Files and Libraries Mandatory for Building Python Modules
Group:          Development/Languages/Python
Requires:       %{name} = %{version}

%description -n python3-devel
The Python programming language's interpreter can be extended with
dynamically loaded extensions and can be embedded in other programs.

This package contains header files, a static library, and development
tools for building Python modules, extending the Python interpreter or
embedding Python in applications.

This also includes the Python distutils, which were in the Python
package up to version 2.2.2.

%package -n python3-testsuite
Summary:        Unit tests for Python and its standard library
Group:          Development/Languages/Python
Requires:       python3 = %{version}
Requires:       python3-tk = %{version}

And Requires: on main package ( Requires:       python3 = %{version}) is normal and adequate practice. Why not to use such in our case? And, again, this avoids mess on versions between main and devel packages. Personally, I want to avoid such mess. Mess = vulnerability (in generic case). Something like this...

and there's no sense of them if main package is not installed.

No, that's wrong.
You install devel-package to have the GOST 34.11-2012 engine available to build your application:
# rpm -i /usr/src/packages/RPMS/x86_64/GOST34.11-2012-devel-*.rpm

# gcc -I. -I/usr/include/gost3411-2012 your-cool-app-with-gost-digest.c

The CLI tool in the main package is just that kind of application, to be exact. Check the docs for the example of usage.

Yes, and you are right here. The main problem here is -- both of us are right: 1) to give external developers possibility to use gost34.11-2012 header files in their own applications and 2) to keep versions between gost34.11-2012 main and devel packages synchronized. What shall we do here?

UPD: Found a package, where devel is not depended on its main package: https://build.opensuse.org/package/view_file/openSUSE:Leap:15.0/4ti2/4ti2.spec?expand=1
Name: 4ti2
...
%package devel
Summary:        Development files for 4ti2
Group:          Development/Libraries/C and C++
Requires:       lib4ti2-0 = %version
Requires:       libzsolve0 = %version

OK, let's have your variation in release, although I'm still not sure, this is correct.


[Feature Request]: option to resize album art for full screen mode

Choose the extension for feature request.
Full Screen Mode
📝 Provide a description of the new feature
Makes the album art resizeable so it looks good on narrow window szie.
➕ Additional Information

This is how it shows stuff when the window is not wide enough

@catalpaaa  This should be solved in v2.1.0. I added responsive styles, this means that the album art will get smaller when there is not much space. Let me know if this doesn't solve the issue.


uBPF jitter is should have option to apply constant blinding

uBPF jitter is should have option to apply constant blinding
Code generated by the uBPF jitter is susceptible to JIT spray attacks. See: https://www.usenix.org/sites/default/files/conference/protected-files/woot18_slides_gawlik.pdf
For a good description of the attack.
Proposed fix:
https://samsung.github.io/kspp-study/bpf.html#hardening-hostile-code-in-ebpf

SGTM

This is primarily needed when jitting code from untrusted sources. This and issue #73 are needed when loading code from untrusted users.


Send Move Description to Chat without Roll #69 - [merged]

In GitLab by @s.paquay1 on Jun 17, 2023, 06:54
Merges SP-Issue69 -> master
Add icon after rollable moves icon to shows description of the move in chat, without rolling.

In GitLab by @s.paquay1 on Jun 25, 2023, 17:28
added 6 commits
292b5b5d...12720e48 - 4 commits from branch asacolips-projects/foundry-mods:master0a52441a - Merge branch pbta:master into masterd28d4e37 - Merge branch 'master' into SP-Issue69
Compare with previous version

In GitLab by @mclemente on Nov 13, 2023, 16:16
added 2 commits
10897791 - Update _item-form.scssad7e0d64 - Merge branch 'master' into SP-Issue69
Compare with previous version

In GitLab by @mclemente on Nov 13, 2023, 16:51
mentioned in commit 72b7ea4e3d9fcc74117e81a9b6fa78892441ca0f

In GitLab by @mclemente on Nov 13, 2023, 16:21
added 1 commit
824a4715 - Change icon
Compare with previous version

In GitLab by @mclemente on Nov 13, 2023, 16:50
marked this merge request as ready

In GitLab by @mclemente on Nov 13, 2023, 16:36
added 18 commits
824a4715...593ab532 - 17 commits from branch asacolips-projects/foundry-mods:master49d06777 - Merge branch 'master' into 'SP-Issue69'
Compare with previous version


Positions reported by Manipulation_Delta are not correct

Describe the bug
In using WinUI 3 the positions reported by the ManipulationDelta event seem to be scaled by a factor compared to real world. The same code compiled with Windows.UI references works perfectly
Steps to reproduce the bug

Create a WinUI3 C# application

Use this XAML:

<Path.RenderTransform>

</Path.RenderTransform>
<Path.Data>

</Path.Data>

and these event handlers:
    Point _startingPoint;

    private void Path_ManipulationStarted(object sender, Microsoft.UI.Xaml.Input.ManipulationStartedRoutedEventArgs e)
    {
        var transform = ((sender as Path).RenderTransform as CompositeTransform);
        _startingPoint = new Point(transform.TranslateX, transform.TranslateY);
    }

    private void Path_ManipulationDelta(object sender, Microsoft.UI.Xaml.Input.ManipulationDeltaRoutedEventArgs e)
    {
        var transform = ((sender as Path).RenderTransform as CompositeTransform);
        transform.TranslateX = _startingPoint.X + e.Cumulative.Translation.X;
        transform.TranslateY = _startingPoint.Y + e.Cumulative.Translation.Y;
    }

Expected behavior
When you run the app, you should be able to drag the circle with mouse. However the circle moves less that mouse movements. Compiling this code referencing Windows.UI gives correct behaviour
Screenshots

Version Info
WinUI: 3.0.0-alpha.200210.0
NuGet package version:
3.0.0-alpha.200210.0

Windows 10 version
Saw the problem?

Insider Build (xxxxx)

November 2019 Update (18363)

May 2019 Update (18362)

October 2018 Update (17763)

April 2018 Update (17134)

Fall Creators Update (16299)

Creators Update (15063)

This bug was reproed on Surface book at 200% scale.
Additional context

    <Grid>         <Path x:Name="theCircle" Fill="Red" ManipulationMode="TranslateX,TranslateY" ManipulationStarted="Path_ManipulationStarted" ManipulationDelta="Path_ManipulationDelta">             <Path.RenderTransform>                 <CompositeTransform TranslateX="200" TranslateY="200"></CompositeTransform>             </Path.RenderTransform>             <Path.Data>                 <EllipseGeometry RadiusX="100" RadiusY="100"></EllipseGeometry>             </Path.Data>         </Path>     </Grid>

@gegao18 as FYI

There's more details in #7221 related to this issue, I'm not sure why this was closed if it's still an issue?

Sorry, this and 7221 are duplicates and two different people closed them as dups of the other.  I chose to keep this one because it was filed earlier.

This appears to be fixed in 1.3 as I am unable to repro it.  There were a number of scale issues early on but most of those have been fixed.  If you can repro this on 1.3 or later, feel free to reopen.


[ci skip] adding user @xylar

Hi! This is the friendly automated conda-forge-webservice.
I've added user @xylar as instructed in #20.
Merge this PR to add the user. Please do not rerender this PR or change it in any way. It has [ci skip] in the commit message to avoid pushing a new build and so the build configuration in the feedstock should not be changed.
Please contact conda-forge/core to have this PR merged, if the maintainer is unresponsive.
Fixes #20

@parthea, could you please add me as a maintainer so I can take care of adding https://github.com/googleapis/python-dlp/releases/tag/v1.0.1, needed by https://github.com/conda-forge/apache-airflow-providers-google-feedstock/pull/15?

Thank you, @parthea.


Fix build_ccache_wrappers:

Description

Fix broken ccache links
Make it idempotent
fixes https://github.com/apache/incubator-mxnet/pull/13456
fixes https://github.com/apache/incubator-mxnet/issues/14117

Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[x] The PR title starts with [MXNET-$JIRA_ID], where $JIRA_ID refers to the relevant JIRA issue created (except PRs with tiny changes)
[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[x] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
Check the API doc at http://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
[x] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

@mxnet-label-bot add [CI]

@mxnet-label-bot add [pr-awaiting-review]

Thanks for making it idempotent!

https://github.com/ccache/ccache/issues/373

@marcoabreu can you have another look please? CI is passing.

@KellenSunderland you might want to chime in as well.

@marcoabreu @KellenSunderland Can you help review this PR?

This code produces the following output:
    ls -l /usr/local/bin
    ln -s ccache /usr/local/bin/gcc
    ln -s ccache /usr/local/bin/gcc-8
    ln -s ccache /usr/local/bin/g++
    ln -s ccache /usr/local/bin/g++-8
    ln -s ccache /usr/local/bin/nvcc
    ln -s ccache /usr/local/bin/clang++-3.9
    ln -s ccache /usr/local/bin/clang-3.9
    ln -s ccache /usr/local/bin/clang++-5.0
    ln -s ccache /usr/local/bin/clang-5.0
    ln -s ccache /usr/local/bin/clang++-6.0
    ln -s ccache /usr/local/bin/clang-6.0
    ls -l /usr/local/bin

+ ls -l /usr/local/bin
total 872
drwxr-xr-x 1 jenkins_slave root   4096 Apr 16 22:48 __pycache__
-rwxr-xr-x 1 jenkins_slave root    229 Apr 16 22:48 backend-test-tools
-rwxr-xr-x 1 jenkins_slave root    216 Apr 16 22:49 breathe-apidoc
-rwxr-xr-x 1 jenkins_slave root 497848 Apr 16 22:36 ccache
-rwxr-xr-x 1 jenkins_slave root    224 Apr 16 22:37 chardetect
-rwxr-xr-x 1 jenkins_slave root    232 Apr 16 22:48 check-model
-rwxr-xr-x 1 jenkins_slave root    230 Apr 16 22:48 check-node
-rwxr-xr-x 1 jenkins_slave root    228 Apr 16 22:49 cm2html
-rwxr-xr-x 1 jenkins_slave root    230 Apr 16 22:49 cm2latex
-rwxr-xr-x 1 jenkins_slave root    226 Apr 16 22:49 cm2man
-rwxr-xr-x 1 jenkins_slave root    238 Apr 16 22:49 cm2pseudoxml
-rwxr-xr-x 1 jenkins_slave root    230 Apr 16 22:49 cm2xetex
-rwxr-xr-x 1 jenkins_slave root    226 Apr 16 22:49 cm2xml
lrwxrwxrwx 1 jenkins_slave root     20 Apr 16 22:35 cmake -> /opt/cmake/bin/cmake
-rwxr-xr-x 1 jenkins_slave root   1108 Apr 16 22:49 cmark.py
-rw-r--r-- 1 jenkins_slave root   1462 Apr 16 22:49 cmark.pyc
-rwxr-xr-x 1 jenkins_slave root    218 Apr 16 22:48 coverage
-rwxr-xr-x 1 jenkins_slave root    218 Apr 16 22:48 coverage-2.7
-rwxr-xr-x 1 jenkins_slave root    218 Apr 16 22:48 coverage-3.5
-rwxr-xr-x 1 jenkins_slave root    218 Apr 16 22:48 coverage2
-rwxr-xr-x 1 jenkins_slave root    218 Apr 16 22:48 coverage3
-rwxr-xr-x 1 jenkins_slave root    209 Apr 16 22:37 cpplint
-rwxr-xr-x 1 jenkins_slave root    223 Apr 16 22:46 cygdb
-rwxr-xr-x 1 jenkins_slave root    244 Apr 16 22:46 cython
-rwxr-xr-x 1 jenkins_slave root    224 Apr 16 22:46 cythonize
-rwxr-xr-x 1 jenkins_slave root    233 Apr 16 22:36 easy_install
-rwxr-xr-x 1 jenkins_slave root    233 Apr 16 22:36 easy_install-2.7
-rwxr-xr-x 1 jenkins_slave root    233 Apr 16 22:36 easy_install-3.5
-rwxr-xr-x 1 jenkins_slave root    222 Apr 16 22:49 epylint
-rwxr-xr-x 1 jenkins_slave root    758 Apr 16 22:37 f2py
-rw-r--r-- 1 jenkins_slave root  18864 Apr 16 22:47 gflags2man.py
-rw-r--r-- 1 jenkins_slave root  18063 Apr 16 22:47 gflags2man.pyc
-rwxr-xr-x 1 jenkins_slave root    234 Apr 16 22:47 iptest
-rwxr-xr-x 1 jenkins_slave root    234 Apr 16 22:47 iptest2
-rwxr-xr-x 1 jenkins_slave root    227 Apr 16 22:47 ipython
-rwxr-xr-x 1 jenkins_slave root    227 Apr 16 22:47 ipython2
-rwxr-xr-x 1 jenkins_slave root    212 Apr 16 22:37 isort
-rwxr-xr-x 1 jenkins_slave root   1675 Apr 16 22:37 jp.py
-rw-r--r-- 1 jenkins_slave root   1846 Apr 16 22:37 jp.pyc
-rwxr-xr-x 1 jenkins_slave root  12538 Apr 16 22:38 lein
-rwxr-xr-x 1 jenkins_slave root    214 Apr 16 22:37 nosetests
-rwxr-xr-x 1 jenkins_slave root    214 Apr 16 22:36 nosetests-2.7
-rwxr-xr-x 1 jenkins_slave root    214 Apr 16 22:37 nosetests-3.4
-rwxr-xr-x 1 jenkins_slave root    214 Apr 16 22:49 pbr
-rwxr-xr-x 1 jenkins_slave root    215 Apr 16 22:36 pip
-rwxr-xr-x 1 jenkins_slave root    215 Apr 16 22:36 pip2
-rwxr-xr-x 1 jenkins_slave root    215 Apr 16 22:36 pip2.7
-rwxr-xr-x 1 jenkins_slave root    215 Apr 16 22:36 pip3
-rwxr-xr-x 1 jenkins_slave root    215 Apr 16 22:36 pip3.5
-rwxr-xr-x 1 jenkins_slave root    208 Apr 16 22:48 py.test
-rwxr-xr-x 1 jenkins_slave root    225 Apr 16 22:49 pybabel
-rwxr-xr-x 1 jenkins_slave root    218 Apr 16 22:48 pygmentize
-rwxr-xr-x 1 jenkins_slave root    220 Apr 16 22:49 pylint
-rwxr-xr-x 1 jenkins_slave root    226 Apr 16 22:49 pyreverse
-rwxr-xr-x 1 jenkins_slave root    208 Apr 16 22:48 pytest
-rwxr-xr-x 1 jenkins_slave root    594 Apr 16 22:37 rst2html.py
-rw-r--r-- 1 jenkins_slave root    604 Apr 16 22:37 rst2html.pyc
-rwxr-xr-x 1 jenkins_slave root    714 Apr 16 22:37 rst2html4.py
-rw-r--r-- 1 jenkins_slave root    726 Apr 16 22:37 rst2html4.pyc
-rwxr-xr-x 1 jenkins_slave root   1139 Apr 16 22:37 rst2html5.py
-rw-r--r-- 1 jenkins_slave root    730 Apr 16 22:37 rst2html5.pyc
-rwxr-xr-x 1 jenkins_slave root    791 Apr 16 22:37 rst2latex.py
-rw-r--r-- 1 jenkins_slave root    734 Apr 16 22:37 rst2latex.pyc
-rwxr-xr-x 1 jenkins_slave root    600 Apr 16 22:37 rst2man.py
-rw-r--r-- 1 jenkins_slave root    709 Apr 16 22:37 rst2man.pyc
-rwxr-xr-x 1 jenkins_slave root    764 Apr 16 22:37 rst2odt.py
-rw-r--r-- 1 jenkins_slave root    803 Apr 16 22:37 rst2odt.pyc
-rwxr-xr-x 1 jenkins_slave root   1698 Apr 16 22:37 rst2odt_prepstyles.py
-rw-r--r-- 1 jenkins_slave root   2044 Apr 16 22:37 rst2odt_prepstyles.pyc
-rwxr-xr-x 1 jenkins_slave root    601 Apr 16 22:37 rst2pseudoxml.py
-rw-r--r-- 1 jenkins_slave root    600 Apr 16 22:37 rst2pseudoxml.pyc
-rwxr-xr-x 1 jenkins_slave root    637 Apr 16 22:37 rst2s5.py
-rw-r--r-- 1 jenkins_slave root    649 Apr 16 22:37 rst2s5.pyc
-rwxr-xr-x 1 jenkins_slave root    871 Apr 16 22:37 rst2xetex.py
-rw-r--r-- 1 jenkins_slave root    817 Apr 16 22:37 rst2xetex.pyc
-rwxr-xr-x 1 jenkins_slave root    602 Apr 16 22:37 rst2xml.py
-rw-r--r-- 1 jenkins_slave root    612 Apr 16 22:37 rst2xml.pyc
-rwxr-xr-x 1 jenkins_slave root    670 Apr 16 22:37 rstpep2html.py
-rw-r--r-- 1 jenkins_slave root    680 Apr 16 22:37 rstpep2html.pyc
-rwxr-xr-x 1 jenkins_slave root    223 Apr 16 22:47 skivi
-rwxr-xr-x 1 jenkins_slave root    215 Apr 16 22:49 sphinx-apidoc
-rwxr-xr-x 1 jenkins_slave root    233 Apr 16 22:49 sphinx-autogen
-rwxr-xr-x 1 jenkins_slave root    208 Apr 16 22:49 sphinx-build
-rwxr-xr-x 1 jenkins_slave root    219 Apr 16 22:49 sphinx-quickstart
-rwxr-xr-x 1 jenkins_slave root    222 Apr 16 22:49 symilar
-rwxr-xr-x 1 jenkins_slave root    212 Apr 16 22:48 tabulate
-rwxr-xr-x 1 jenkins_slave root    211 Apr 16 22:36 wheel
+ ln -s ccache /usr/local/bin/gcc
+ ln -s ccache /usr/local/bin/gcc-8
+ ln -s ccache /usr/local/bin/g++
+ ln -s ccache /usr/local/bin/g++-8
+ ln -s ccache /usr/local/bin/nvcc
+ ln -s ccache /usr/local/bin/clang++-3.9
+ ln -s ccache /usr/local/bin/clang-3.9
+ ln -s ccache /usr/local/bin/clang++-5.0
+ ln -s ccache /usr/local/bin/clang-5.0
+ ln -s ccache /usr/local/bin/clang++-6.0
+ ln -s ccache /usr/local/bin/clang-6.0
+ ls -l /usr/local/bin
total 872
drwxr-xr-x 1 jenkins_slave root            4096 Apr 16 22:48 __pycache__
-rwxr-xr-x 1 jenkins_slave root             229 Apr 16 22:48 backend-test-tools
-rwxr-xr-x 1 jenkins_slave root             216 Apr 16 22:49 breathe-apidoc
-rwxr-xr-x 1 jenkins_slave root          497848 Apr 16 22:36 ccache
-rwxr-xr-x 1 jenkins_slave root             224 Apr 16 22:37 chardetect
-rwxr-xr-x 1 jenkins_slave root             232 Apr 16 22:48 check-model
-rwxr-xr-x 1 jenkins_slave root             230 Apr 16 22:48 check-node
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 clang++-3.9 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 clang++-5.0 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 clang++-6.0 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 clang-3.9 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 clang-5.0 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 clang-6.0 -> ccache
-rwxr-xr-x 1 jenkins_slave root             228 Apr 16 22:49 cm2html
-rwxr-xr-x 1 jenkins_slave root             230 Apr 16 22:49 cm2latex
-rwxr-xr-x 1 jenkins_slave root             226 Apr 16 22:49 cm2man
-rwxr-xr-x 1 jenkins_slave root             238 Apr 16 22:49 cm2pseudoxml
-rwxr-xr-x 1 jenkins_slave root             230 Apr 16 22:49 cm2xetex
-rwxr-xr-x 1 jenkins_slave root             226 Apr 16 22:49 cm2xml
lrwxrwxrwx 1 jenkins_slave root              20 Apr 16 22:35 cmake -> /opt/cmake/bin/cmake
-rwxr-xr-x 1 jenkins_slave root            1108 Apr 16 22:49 cmark.py
-rw-r--r-- 1 jenkins_slave root            1462 Apr 16 22:49 cmark.pyc
-rwxr-xr-x 1 jenkins_slave root             218 Apr 16 22:48 coverage
-rwxr-xr-x 1 jenkins_slave root             218 Apr 16 22:48 coverage-2.7
-rwxr-xr-x 1 jenkins_slave root             218 Apr 16 22:48 coverage-3.5
-rwxr-xr-x 1 jenkins_slave root             218 Apr 16 22:48 coverage2
-rwxr-xr-x 1 jenkins_slave root             218 Apr 16 22:48 coverage3
-rwxr-xr-x 1 jenkins_slave root             209 Apr 16 22:37 cpplint
-rwxr-xr-x 1 jenkins_slave root             223 Apr 16 22:46 cygdb
-rwxr-xr-x 1 jenkins_slave root             244 Apr 16 22:46 cython
-rwxr-xr-x 1 jenkins_slave root             224 Apr 16 22:46 cythonize
-rwxr-xr-x 1 jenkins_slave root             233 Apr 16 22:36 easy_install
-rwxr-xr-x 1 jenkins_slave root             233 Apr 16 22:36 easy_install-2.7
-rwxr-xr-x 1 jenkins_slave root             233 Apr 16 22:36 easy_install-3.5
-rwxr-xr-x 1 jenkins_slave root             222 Apr 16 22:49 epylint
-rwxr-xr-x 1 jenkins_slave root             758 Apr 16 22:37 f2py
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 g++ -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 g++-8 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 gcc -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 gcc-8 -> ccache
-rw-r--r-- 1 jenkins_slave root           18864 Apr 16 22:47 gflags2man.py
-rw-r--r-- 1 jenkins_slave root           18063 Apr 16 22:47 gflags2man.pyc
-rwxr-xr-x 1 jenkins_slave root             234 Apr 16 22:47 iptest
-rwxr-xr-x 1 jenkins_slave root             234 Apr 16 22:47 iptest2
-rwxr-xr-x 1 jenkins_slave root             227 Apr 16 22:47 ipython
-rwxr-xr-x 1 jenkins_slave root             227 Apr 16 22:47 ipython2
-rwxr-xr-x 1 jenkins_slave root             212 Apr 16 22:37 isort
-rwxr-xr-x 1 jenkins_slave root            1675 Apr 16 22:37 jp.py
-rw-r--r-- 1 jenkins_slave root            1846 Apr 16 22:37 jp.pyc
-rwxr-xr-x 1 jenkins_slave root           12538 Apr 16 22:38 lein
-rwxr-xr-x 1 jenkins_slave root             214 Apr 16 22:37 nosetests
-rwxr-xr-x 1 jenkins_slave root             214 Apr 16 22:36 nosetests-2.7
-rwxr-xr-x 1 jenkins_slave root             214 Apr 16 22:37 nosetests-3.4
lrwxrwxrwx 1 jenkins_slave jenkins_slave      6 Apr 19 01:20 nvcc -> ccache
-rwxr-xr-x 1 jenkins_slave root             214 Apr 16 22:49 pbr
+ export NVCC=ccache
+ NVCC=ccache
-rwxr-xr-x 1 jenkins_slave root             215 Apr 16 22:36 pip
-rwxr-xr-x 1 jenkins_slave root             215 Apr 16 22:36 pip2
-rwxr-xr-x 1 jenkins_slave root             215 Apr 16 22:36 pip2.7
-rwxr-xr-x 1 jenkins_slave root             215 Apr 16 22:36 pip3
-rwxr-xr-x 1 jenkins_slave root             215 Apr 16 22:36 pip3.5
-rwxr-xr-x 1 jenkins_slave root             208 Apr 16 22:48 py.test
-rwxr-xr-x 1 jenkins_slave root             225 Apr 16 22:49 pybabel
-rwxr-xr-x 1 jenkins_slave root             218 Apr 16 22:48 pygmentize
-rwxr-xr-x 1 jenkins_slave root             220 Apr 16 22:49 pylint
-rwxr-xr-x 1 jenkins_slave root             226 Apr 16 22:49 pyreverse
-rwxr-xr-x 1 jenkins_slave root             208 Apr 16 22:48 pytest
-rwxr-xr-x 1 jenkins_slave root             594 Apr 16 22:37 rst2html.py
-rw-r--r-- 1 jenkins_slave root             604 Apr 16 22:37 rst2html.pyc
-rwxr-xr-x 1 jenkins_slave root             714 Apr 16 22:37 rst2html4.py
-rw-r--r-- 1 jenkins_slave root             726 Apr 16 22:37 rst2html4.pyc
-rwxr-xr-x 1 jenkins_slave root            1139 Apr 16 22:37 rst2html5.py
-rw-r--r-- 1 jenkins_slave root             730 Apr 16 22:37 rst2html5.pyc
-rwxr-xr-x 1 jenkins_slave root             791 Apr 16 22:37 rst2latex.py
-rw-r--r-- 1 jenkins_slave root             734 Apr 16 22:37 rst2latex.pyc
-rwxr-xr-x 1 jenkins_slave root             600 Apr 16 22:37 rst2man.py
-rw-r--r-- 1 jenkins_slave root             709 Apr 16 22:37 rst2man.pyc
-rwxr-xr-x 1 jenkins_slave root             764 Apr 16 22:37 rst2odt.py
-rw-r--r-- 1 jenkins_slave root             803 Apr 16 22:37 rst2odt.pyc
-rwxr-xr-x 1 jenkins_slave root            1698 Apr 16 22:37 rst2odt_prepstyles.py
-rw-r--r-- 1 jenkins_slave root            2044 Apr 16 22:37 rst2odt_prepstyles.pyc
-rwxr-xr-x 1 jenkins_slave root             601 Apr 16 22:37 rst2pseudoxml.py
-rw-r--r-- 1 jenkins_slave root             600 Apr 16 22:37 rst2pseudoxml.pyc
-rwxr-xr-x 1 jenkins_slave root             637 Apr 16 22:37 rst2s5.py
-rw-r--r-- 1 jenkins_slave root             649 Apr 16 22:37 rst2s5.pyc
-rwxr-xr-x 1 jenkins_slave root             871 Apr 16 22:37 rst2xetex.py
-rw-r--r-- 1 jenkins_slave root             817 Apr 16 22:37 rst2xetex.pyc
-rwxr-xr-x 1 jenkins_slave root             602 Apr 16 22:37 rst2xml.py
-rw-r--r-- 1 jenkins_slave root             612 Apr 16 22:37 rst2xml.pyc
-rwxr-xr-x 1 jenkins_slave root             670 Apr 16 22:37 rstpep2html.py
-rw-r--r-- 1 jenkins_slave root             680 Apr 16 22:37 rstpep2html.pyc
-rwxr-xr-x 1 jenkins_slave root             223 Apr 16 22:47 skivi
-rwxr-xr-x 1 jenkins_slave root             215 Apr 16 22:49 sphinx-apidoc
-rwxr-xr-x 1 jenkins_slave root             233 Apr 16 22:49 sphinx-autogen
-rwxr-xr-x 1 jenkins_slave root             208 Apr 16 22:49 sphinx-build
-rwxr-xr-x 1 jenkins_slave root             219 Apr 16 22:49 sphinx-quickstart
-rwxr-xr-x 1 jenkins_slave root             222 Apr 16 22:49 symilar
-rwxr-xr-x 1 jenkins_slave root             212 Apr 16 22:48 tabulate
-rwxr-xr-x 1 jenkins_slave root             211 Apr 16 22:36 wheel

Thus, I can not confirm the statement that the creation of the simlinks don't work.
I have made the experience that in some cases the PATH method with /usr/local/bin was not picked up. Thus, I added /usr/local/bin as suggested by CCache.
When I developed this integration, I did my due diligence to compare the ccache hit rates. I don't have the cycles to dive deep into this again and stand by the stance that my developed solution is working without major issues. This modification would reduce the CCache hitrate and thus my veto stands - as I have thoroughly explained to you over the course of the last months.

We don't want to write in /usr/local/bin because then the script requires root privileges.
Here is an example of what I'm trying to explain to you, what I fixed, and that links in /usr/local/bin are not necessary.
piotr@ip-172-31-27-211:0:~/mxnet_master ((ff04de0a7...))+$ docker \
>         run \
>         --cap-add \
>         SYS_PTRACE \
>         --rm \
>         --shm-size=500m \
>         -v \
>         /home/piotr/mxnet_master:/work/mxnet \
>         -v \
>         /home/piotr/mxnet_master/build:/work/build \
>         -v \
>         /home/piotr/.ccache:/work/ccache \
>         -u \
>         1001:1002 \
>         -e \
>         CCACHE_MAXSIZE=500G \
>         -e \
>         CCACHE_TEMPDIR=/tmp/ccache \
>         -e \
>         CCACHE_DIR=/work/ccache \
>         -e \
>         CCACHE_LOGFILE=/tmp/ccache.log \
>         -ti \
>         mxnetci/build.ubuntu_cpu
jenkins_slave@9c9d63f274c2:/work/mxnet$ /work/runtime_functions.sh build_ccache_wrappers
+ NOSE_COVERAGE_ARGUMENTS='--with-coverage --cover-inclusive --cover-xml --cover-branches --cover-package=mxnet'
+ NOSE_TIMER_ARGUMENTS='--with-timer --timer-ok 1 --timer-warning 15 --timer-filter warning,error'
+ CI_CUDA_COMPUTE_CAPABILITIES='-gencode=arch=compute_52,code=sm_52 -gencode=arch=compute_70,code=sm_70'
+ CI_CMAKE_CUDA_ARCH_BIN=52,70
+ set +x
+ '[' -z ']'
+ echo 'No $CC set, defaulting to gcc'
No $CC set, defaulting to gcc
+ export CC=gcc
+ CC=gcc
+ '[' -z ']'
+ echo 'No $CXX set, defaulting to g++'
No $CXX set, defaulting to g++
+ export CXX=g++
+ CXX=g++
+ mkdir /tmp/ccache-redirects
+ export PATH=/tmp/ccache-redirects:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+ ln -s ccache /tmp/ccache-redirects/gcc
+ ln -s ccache /tmp/ccache-redirects/gcc-8
+ ln -s ccache /tmp/ccache-redirects/g++
+ ln -s ccache /tmp/ccache-redirects/g++-8
+ ln -s ccache /tmp/ccache-redirects/nvcc
+ ln -s ccache /tmp/ccache-redirects/clang++-3.9
+ ln -s ccache /tmp/ccache-redirects/clang-3.9
+ ln -s ccache /tmp/ccache-redirects/clang++-5.0
+ ln -s ccache /tmp/ccache-redirects/clang-5.0
+ ln -s ccache /tmp/ccache-redirects/clang++-6.0
+ ln -s ccache /tmp/ccache-redirects/clang-6.0
+ ln -s ccache /usr/local/bin/gcc
+ ln -s ccache /usr/local/bin/gcc-8
+ ln -s ccache /usr/local/bin/g++
+ ln -s ccache /usr/local/bin/g++-8
+ ln -s ccache /usr/local/bin/nvcc
+ ln -s ccache /usr/local/bin/clang++-3.9
+ ln -s ccache /usr/local/bin/clang-3.9
+ ln -s ccache /usr/local/bin/clang++-5.0
+ ln -s ccache /usr/local/bin/clang-5.0
+ ln -s ccache /usr/local/bin/clang++-6.0
+ ln -s ccache /usr/local/bin/clang-6.0
+ export NVCC=ccache
+ NVCC=ccache
jenkins_slave@9c9d63f274c2:/work/mxnet$ ls -l /tmp/ccache-redirects/
total 0
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 clang++-3.9 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 clang++-5.0 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 clang++-6.0 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 clang-3.9 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 clang-5.0 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 clang-6.0 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 g++ -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 g++-8 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 gcc -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 gcc-8 -> ccache
lrwxrwxrwx 1 jenkins_slave jenkins_slave 6 Apr 19 01:40 nvcc -> ccache
jenkins_slave@9c9d63f274c2:/work/mxnet$ /work/runtime_functions.sh build_ccache_wrappers2^C
jenkins_slave@9c9d63f274c2:/work/mxnet$ test -e /tmp/ccache-redirects/g++
jenkins_slave@9c9d63f274c2:/work/mxnet$ test -e /tmp/ccache-redirects/g++ ^C
jenkins_slave@9c9d63f274c2:/work/mxnet$ man test
jenkins_slave@9c9d63f274c2:/work/mxnet$ test -e /tmp/ccache-redirects/g++
jenkins_slave@9c9d63f274c2:/work/mxnet$ test -e /tmp/ccache-redirects/g++ && echo "marco is wrong"
jenkins_slave@9c9d63f274c2:/work/mxnet$ rm /tmp/ccache-redirects/g++
jenkins_slave@9c9d63f274c2:/work/mxnet$ ln -s `which ccache` /tmp/ccache-redirects/g++
jenkins_slave@9c9d63f274c2:/work/mxnet$ test -e /tmp/ccache-redirects/g++ && echo "pedro is right"
pedro is right
jenkins_slave@9c9d63f274c2:/work/mxnet$

Btw I tested that this is calling ccache using statistics as expected. And I'm using the redirect method as in the ccache documentation, just not in /usr/local/bin path. Why are you insisting on having them in /usr/local/bin when you admit that the reason is that in /tmp/ccache-redirects it didn't work for you due to your broken links?

As you can see in your patch, ccache is disabled from one build because there's a problem. My PR fixes that problems, makes the function work without needing root privileges and more. Can you provide a reason why are you blocking this PR?
This PR doesn't affect the hit rate of ccache but increase it, based on what are you making these claims?
It's also not idempotent, the second time you call it it will fail, preventing all the build functions to be called multiple times which is essential if you are making changes or want to rebuild.
jenkins_slave@9c9d63f274c2:/work/mxnet$ /work/runtime_functions.sh build_ubuntu_cpu
+ NOSE_COVERAGE_ARGUMENTS='--with-coverage --cover-inclusive --cover-xml --cover-branches --cover-package=mxnet'
+ NOSE_TIMER_ARGUMENTS='--with-timer --timer-ok 1 --timer-warning 15 --timer-filter warning,error'
+ CI_CUDA_COMPUTE_CAPABILITIES='-gencode=arch=compute_52,code=sm_52 -gencode=arch=compute_70,code=sm_70'
+ CI_CMAKE_CUDA_ARCH_BIN=52,70
+ set +x
+ export CC=gcc
+ CC=gcc
+ export CXX=g++
+ CXX=g++
+ build_ccache_wrappers
+ set -ex
+ '[' -z x ']'
+ '[' -z x ']'
+ mkdir /tmp/ccache-redirects
mkdir: cannot create directory '/tmp/ccache-redirects': File exists

As written in the description, addresses and (fully) fixes the two linked issues.

My PR increases ccache hit rate because ccache is disabled for "build_ubuntu_gpu_cuda91_cudnn7" as you can see in the PR. This is slowing down development if you need to use this build, as it doesn't use ccache.

jenkins_slave@1a383a8c60d8:/work/mxnet$ ccache -s
cache directory                     /work/ccache
primary config                      /work/ccache/ccache.conf
secondary config      (readonly)    /usr/local/etc/ccache.conf
stats zero time                     Fri Apr 19 03:06:17 2019
cache hit (direct)                     4
cache hit (preprocessed)               0
cache miss                             0
cache hit rate                    100.00 %
called for link                       21
unsupported compiler option           21
no input file                         16
cleanups performed                     0
files in cache                      5953
cache size                          11.1 GB
max cache size                     500.0 GB

@mxnet-label-bot add [pr-awaiting-review] remove [pr-awaiting-response]

Our Docker setup is running under the expectation to fully run as root.
Usually these scripts are not intended to be called multiple times within the same session, so idempotency was never an issue. But great that you fixed, I'm happy to merge that part.
For the broken symlink, it now makes sense - thanks for pointing that out.
Since the /usr/local/bin method is recommended by the ccache authors, I'd just keep it in to not divert from the standard usage. It doesn't hurt to stay in, so I don't see much reason to have a discussion about it.
Back when I worked on ccache, I had no issue with NVCC and it was officially supported (although the hit-rate wasn't that high). And as we can see, the setup we have works since otherwise our CI would break. There might be some use-cases in which it doesn't work, but until https://github.com/ccache/ccache/issues/373#issuecomment-481857655 is confirmed and contains proper steps to reproduce the error, I would like to keep it as-is á la "never change a running system".
As a summary, please split your change into two atomic PRs that address a single concern:

Make mkdir and symlinking idempotent
Disable CCache-NVCC

I won't merge removing /usr/local/bin, so there's no need to make a PR for that.
I'm happy to merge PR 1 right away and would wait with merging PR 2 until detailed instructions to reproduce are available and have been confirmed. In my tests it worked and thus I'd like to have confirmation first. Right now, CI works and thus I'd keep it until it breaks.

Thanks for your response. I don't think NVCC through ccache worked, otherwise why did you leave the build that this PR enables disabled?
Having the ccache links in /usr/local/bin makes absolutely no difference versus having them in any other path is which prepended to the PATH variable. The result of insisting on keeping the paths in /usr/local/bin results in our build functions not working from a local environment to reproduce exact builds (since they require root) and because they are not idempotent.
I can split the PR as you request. Have you seen that I verified that the hit rate is 100% while using the redirects in the /tmp path? Isn't this enough validation that the links in /usr/local/bin are not needed?

@larroy can you please update the PR as per your comments above

@marcoabreu Can this PR be merged ?
@mxnet-label-bot Update [pr-awaiting-merge, CI}


Cannot require in cljs repl

I couldn't get flow-storm-debugger to work with my main cljs project.
To simplify things, I tried reproducing it with a bare-bones project.
This was created with lein new figwheel-main krager --reagent.
I've done nothing to it but add flow-storm-debugger to the dependency vector.
https://github.com/Reefersleep/krager
On calling (require '[flow-storm.api :as fsa]) in the repl, I get
cljs.user=> (require '[flow-storm.api :as fsa])
Could not Analyze: Not supported: class clojure.core$print

Following that, fsa is not a valid reference.

I was able to reproduce the issue. First time I see that error message, but also first time I'm trying without shadow-cljs to be honest.
I'll try to figure out what is going on.
Thanks for reporting @Reefersleep !

@Reefersleep just figured out that it happens only when you try to require from the repl. Requiring it from the ns macro works fine:
(ns ^:figwheel-hooks krager.core
  (:require
   [goog.dom :as gdom]
   [flow-storm.api :as fsa]))

You can then :
lein fig:build

cljs.user=> (in-ns 'krager.core)
krager.core=> (fsa/connect)
krager.core=> #trace (+ 1 2)

So it is maybe an artifact of how fighwheel load files from the repl, no idea.
Let me know if it works for you.

Closing this for now, please reopen if the solution doesn't work.


Update About section on repository main page

It would be great if an administrator could update the "About" section on the main page. See my fork for suggested text and labels.

This is now updated


Grammar fix in references body text

Thanks. Merged manually in https://github.com/TypeStrong/atom-typescript/commit/f58de230dd6474b24586cccd5b463831baef4c3a


(ArgumentError) the configuration parameter :access_token is not set

even if enabled is false or :log, same for environment

I think it's the same as #9.

Good point, but we can maybe find a better solution, like warning? I'm not sure.

Ah yes, my bad. Will comment there.

Never mind is closed.. I think newcomers are able to see the parameters required from the documentation. I'd get kind of annoyed if every time I started my app in development, it warned me that my app wasn't setup ready for production (I know, its not, I'm running in development mode!)

So, it makes sense not to issue a warning but then it makes sense to blow up with an error everytime if it's not set (plus the implementation is very easy this way, raising when there's no :access_token). Let's close this with the same discussion as #9.


Still not updated

Despite the previous issue being closed, this page still shows as being proposed. Is there a reason that this page has not been updated to show it's final?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: d273731d-0f9a-1870-1275-bde4f4b3f69d
Version Independent ID: 7d8b872e-6d86-77c1-2fad-afa110ab8f4c
Content: Null coalescing assignment - C# 8.0 specification proposals
Content Source: proposals/csharp-8.0/null-coalescing-assignment.md
Product: dotnet-csharp
Technology: csharp-spec
GitHub Login: @dotnet-bot
Microsoft Alias: wiwagn

Thanks for writing this @RachelAmbler
In this section (under the C# specification), these features are listed as "proposed", because they have not yet been accepted into the ECMA standard, or the Microsoft proposed updates (listed in the C# 6 draft specification).
Admittedly, the committee is behind. (I'm on the committee, and we are working on the plan to update the official standard through the standards bodies).
The overview page for this section does explain the state. I'd like to know if that's hard to find so we can increase visibility for that explanation.


IF statement fails with LEFT$ comparison

junk.zip

I just did some quick testing, and if you swap the conditions around putting left$ on the left hand side of the equal sign, it works.
if left$(searchme, len(findme)) = findme then
So the bug may be in how the if statement compares the condition on the right side, rather than with the result of the left$ function.


Specifying endpoints/deployments for Azure OpenAI embeddings

Context
Currently, it is possible to use Azure both for chatbot and "chat with your data" use cases but this requires to adjust the environment variables locally to get it to work.
With the following set of environment variables (without OPENAI_API_KEY as we are using Azure-only), it is possible to perform a simple chat but the addition of data (in the assistant or in the chat itself) results in an error :
ANTHROPIC_API_KEY=placeholder
YDC_API_KEY=placeholder
TAVILY_API_KEY=placeholder
AZURE_OPENAI_DEPLOYMENT_NAME=placeholder
AZURE_OPENAI_API_KEY=placeholder
AZURE_OPENAI_API_BASE=placeholder
AZURE_OPENAI_API_VERSION=placeholder
CONNERY_RUNNER_URL=https://your-personal-connery-runner-url
CONNERY_RUNNER_API_KEY=placeholder
PROXY_URL=your_proxy_url
POSTGRES_PORT=placeholder
POSTGRES_DB=placeholder
POSTGRES_USER=placeholder
POSTGRES_PASSWORD=placeholder
SCARF_NO_ANALYTICS=true

The error occurs when ingesting data :
Traceback (most recent call last):
opengpts-backend   |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 314, in _bootstrap
opengpts-backend   |     self.run()
opengpts-backend   |   File "/usr/local/lib/python3.11/multiprocessing/process.py", line 108, in run
opengpts-backend   |     self._target(*self._args, **self._kwargs)
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/_subprocess.py", line 76, in subprocess_started
opengpts-backend   |     target(sockets=sockets)
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 61, in run
opengpts-backend   |     return asyncio.run(self.serve(sockets=sockets))
opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 190, in run
opengpts-backend   |     return runner.run(main)
opengpts-backend   |            ^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/runners.py", line 118, in run
opengpts-backend   |     return self._loop.run_until_complete(task)
opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
opengpts-backend   |     return future.result()
opengpts-backend   |            ^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/server.py", line 68, in serve
opengpts-backend   |     config.load()
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/config.py", line 467, in load
opengpts-backend   |     self.loaded_app = import_from_string(self.app)
opengpts-backend   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/site-packages/uvicorn/importer.py", line 21, in import_from_string
opengpts-backend   |     module = importlib.import_module(module_str)
opengpts-backend   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
opengpts-backend   |     return _bootstrap._gcd_import(name[level:], package, level)
opengpts-backend   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
opengpts-backend   |   File "<frozen importlib._bootstrap_external>", line 940, in exec_module
opengpts-backend   |   File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
opengpts-backend   |   File "/backend/app/server.py", line 9, in <module>
opengpts-backend   |     from app.api import router as api_router
opengpts-backend   |   File "/backend/app/api/__init__.py", line 3, in <module>
opengpts-backend   |     from app.api.assistants import router as assistants_router
opengpts-backend   |   File "/backend/app/api/assistants.py", line 7, in <module>
opengpts-backend   |     import app.storage as storage
opengpts-backend   |   File "/backend/app/storage.py", line 6, in <module>
opengpts-backend   |     from app.agent import AgentType, get_agent_executor
opengpts-backend   |   File "/backend/app/agent.py", line 24, in <module>
opengpts-backend   |     from app.tools import (
opengpts-backend   |   File "/backend/app/tools.py", line 27, in <module>
opengpts-backend   |     from app.upload import vstore
opengpts-backend   |   File "/backend/app/upload.py", line 138, in <module>
opengpts-backend   |     vstore = _determine_azure_or_openai_embeddings()
opengpts-backend   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "/backend/app/upload.py", line 66, in _determine_azure_or_openai_embeddings
opengpts-backend   |     embedding_function=AzureOpenAIEmbeddings(),
opengpts-backend   |                        ^^^^^^^^^^^^^^^^^^^^^^^
opengpts-backend   |   File "pydantic/main.py", line 341, in pydantic.main.BaseModel.__init__
opengpts-backend   | pydantic.error_wrappers.ValidationError: 1 validation error for AzureOpenAIEmbeddings
opengpts-backend   | __root__
opengpts-backend   |   Must provide one of the `base_url` or `azure_endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variable (type=value_error)

A similar problem is reported there (if I am not mistaken) :

https://github.com/langchain-ai/opengpts/issues/286

Resolution
Unfortunately, AzureOpenAIEmbeddings expects AZURE_OPENAI_ENDPOINT to be set and we only have AZURE_OPENAI_BASE in the environment which causes the issues. Additionally, it might be useful to make the deployment name for embeddings configurable. Therefore the suggestion would be to read the needed variables and provide them as attributes to AzureOpenAIEmbeddings.

Thank you for the contribution!


Document the fact that this action is not supported on GitHub Enterprise Server

I have added some information in the readme to let user know that it is not supported in GitHub Enterprise Server. This would avoid seeing user trying and failing on such deployment.
see #687

Merged this. Thanks @tgrall  @brcrista 🚀