text:
Error when using cross-compiled plugin inside Nvidia DeepStream container in Jetson

I have built the gst-plugin-pylon inside deepstream-l4t:6.4-triton-multiarch in a x86_64 workstation using qemu machine emulator. As the plugin depends on libnvbufsurface.so library for enabling NVMM feature, I download the L4T BSP inside the container, extract it and copy the corresponding library in /opt/nvidia/deepstream/deepstream/lib. I provide the code snippet in the dockerfile below:
FROM --platform=linux/arm64 nvcr.io/nvidia/deepstream-l4t:6.4-triton-multiarch
...
ARG L4T_PATH=https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v3.0/release/jetson_linux_r36.3.0_aarch64.tbz2
RUN wget ${L4T_PATH} \
    && tar -xf jetson_linux_r3*aarch64.tbz2 \
    && cd Linux_for_Tegra/nv_tegra \
    && tar -jxpf nvidia_drivers.tbz2 \
    && cp -aprf usr/lib/aarch64-linux-gnu/tegra/libnvbuf*.so.1.0.0 /opt/nvidia/deepstream/deepstream/lib/ \
    && cp -aprf usr/lib/aarch64-linux-gnu/tegra/libnvdsbufferpool.so.1.0.0 /opt/nvidia/deepstream/deepstream/lib/ \
    && cd /opt/nvidia/deepstream/deepstream/lib/ \
    && rm libnvbufsurface.so libnvbufsurftransform.so libnvdsbufferpool.so \
    && ln -s libnvbufsurface.so.1.0.0 libnvbufsurface.so \
    && ln -s libnvbufsurftransform.so.1.0.0 libnvbufsurftransform.so \
    && ln -s libnvdsbufferpool.so.1.0.0 libnvdsbufferpool.so \
    && cd /code_libs && rm -rf Linux_for_Tegra && rm jetson_linux_r3*_aarch64.tbz2
...

Also, I have previously installed the pylon SDK for arm64 in the container in /opt/pylon. The plugin is then built successfully with NVMM support inside the container as you can see below:
#18 29.99 Cloning into 'gst-plugin-pylon'...
#18 60.68 The Meson build system
#18 60.68 Version: 1.4.1
#18 60.68 Source dir: /code_libs/gst-plugin-pylon
#18 60.68 Build dir: /code_libs/gst-plugin-pylon/builddir
#18 60.68 Build type: native build
#18 60.68 Project name: gst-plugin-pylon
#18 60.68 Project version: 0.7.0
#18 60.68 C compiler for the host machine: cc (gcc 11.4.0 "cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
#18 60.68 C linker for the host machine: cc ld.bfd 2.38
#18 60.68 C++ compiler for the host machine: c++ (gcc 11.4.0 "c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
#18 60.68 C++ linker for the host machine: c++ ld.bfd 2.38
#18 60.68 Host machine cpu family: aarch64
#18 60.68 Host machine cpu: aarch64
#18 60.68 Found pkg-config: YES (/usr/bin/pkg-config) 0.29.2
#18 60.68 Run-time dependency gstreamer-1.0 found: YES 1.20.3
#18 60.68 Message: Building against GStreamer 1.20.3
#18 60.68 Program python3 found: YES (/usr/bin/python3)
#18 60.68 Compiler for C supports link arguments -Wl,-Bsymbolic-functions: YES
#18 60.68 Compiler for C supports arguments -fno-strict-aliasing: YES
#18 60.68 Message: Disabling GLib cast checks
#18 60.68 Checking for size of "char" : 1
#18 60.68 Checking for size of "int" : 4
#18 60.68 Checking for size of "long" : 8
#18 60.68 Checking for size of "short" : 2
#18 60.68 Checking for size of "void*" : 8
#18 60.68 Checking for size of "off_t" : 8
#18 60.68 Compiler for C supports arguments -fvisibility=hidden: YES
#18 60.68 Compiler for C supports arguments -Wmissing-declarations: YES
#18 60.68 Compiler for C++ supports arguments -Wmissing-declarations: YES
#18 60.68 Compiler for C supports arguments -Wredundant-decls: YES
#18 60.68 Compiler for C++ supports arguments -Wredundant-decls: YES
#18 60.68 Compiler for C supports arguments -Wwrite-strings: YES
#18 60.68 Compiler for C++ supports arguments -Wwrite-strings: YES
#18 60.68 Compiler for C supports arguments -Winit-self: YES
#18 60.68 Compiler for C++ supports arguments -Winit-self: YES
#18 60.68 Compiler for C supports arguments -Wmissing-include-dirs: YES
#18 60.68 Compiler for C++ supports arguments -Wmissing-include-dirs: YES
#18 60.68 Compiler for C supports arguments -Wno-multichar: YES
#18 60.68 Compiler for C++ supports arguments -Wno-multichar: YES
#18 60.68 Compiler for C supports arguments -Wvla: YES
#18 60.68 Compiler for C++ supports arguments -Wvla: YES
#18 60.68 Compiler for C supports arguments -Wpointer-arith: YES
#18 60.68 Compiler for C++ supports arguments -Wpointer-arith: YES
#18 60.68 Compiler for C supports arguments -Wmissing-prototypes: YES
#18 60.68 Compiler for C supports arguments -Wdeclaration-after-statement: YES
#18 60.68 Compiler for C supports arguments -Wold-style-definition: YES
#18 60.68 Compiler for C supports arguments -Waggregate-return: YES
#18 60.68 Run-time dependency gstreamer-base-1.0 found: YES 1.20.3
#18 60.68 Run-time dependency gstreamer-check-1.0 found: YES 1.20.3
#18 60.68 Run-time dependency gstreamer-pbutils-1.0 found: YES 1.20.1
#18 60.68 Run-time dependency gstreamer-allocators-1.0 found: YES 1.20.1
#18 60.68 Run-time dependency gstreamer-video-1.0 found: YES 1.20.1
#18 60.68 Run-time dependency glib-2.0 found: YES 2.72.4
#18 60.68 Run-time dependency gobject-2.0 found: YES 2.72.4
#18 60.68 Header "gst/gstconfig.h" has symbol "GST_DISABLE_GST_DEBUG" with dependency gstreamer-1.0: NO
#18 60.68 Message: GStreamer debug system is enabled
#18 60.68 Found CMake: /usr/bin/cmake (3.22.1)
#18 60.68 Run-time dependency pylon (modules: pylon::pylon) found: YES 7.4.0
#18 60.68 Library nvbufsurface found: YES
#18 60.68 Run-time dependency CUDA (modules: cudart_static) found: YES 12.2 (/usr/local/cuda)
#18 60.68 Run-time dependency valgrind found: NO (tried pkgconfig)
#18 60.68 Run-time dependency gstreamer-plugins-base-1.0 found: YES 1.20.1
#18 60.68 Dependency gstpylon found: YES 0.7.0 (overridden)
#18 60.68 Program /usr/libexec/gstreamer-1.0/gst-plugins-doc-cache-generator found: NO
#18 60.68 docs/meson.build:32: WARNING: GStreamer plugin inspector for documentation not found, can't update the cache
#18 60.68 Program hotdoc found: NO
#18 60.68 Message: Hotdoc not found, not building the documentation
#18 60.68 Message: Meta python bindings enabled
#18 60.68 Program python3 found: YES (/usr/bin/python3)
#18 60.68 Run-time dependency python found: YES 3.10
#18 60.68 bindings/meson.build:4: WARNING: Project targets '>= 0.61' but uses feature deprecated since '0.55.0': ExternalProgram.path. use ExternalProgram.full_path() instead
#18 60.68 Message: /usr/bin/python3
#18 60.68 Message: /usr/lib/python3/dist-packages/
#18 60.68 pybind11-config found: NO
#18 60.68 Run-time dependency pybind11 found: NO (tried pkgconfig, config-tool and cmake)
#18 60.68 Looking for a fallback subproject for the dependency pybind11
#18 60.68 Downloading pybind11 source from https://github.com/pybind/pybind11/archive/refs/tags/v2.10.0.tar.gz
#18 63.33 Downloading pybind11 patch from https://wrapdb.mesonbuild.com/v2/pybind11_2.10.0-1/get_patch
#18 65.09
#18 65.09 Executing subproject pybind11
#18 65.09
#18 65.09 pybind11| Project name: pybind11
#18 65.09 pybind11| Project version: 2.10.0
#18 65.09 pybind11| C++ compiler for the host machine: c++ (gcc 11.4.0 "c++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0")
#18 65.09 pybind11| C++ linker for the host machine: c++ ld.bfd 2.38
#18 65.09 pybind11| Build targets in project: 8
#18 65.09 pybind11| Subproject pybind11 finished.
#18 65.09
#18 65.09 Dependency pybind11 from subproject subprojects/pybind11-2.10.0 found: YES 2.10.0
#18 65.09 Dependency gstpylon found: YES 0.7.0 (overridden)
#18 65.09 Configuring config.h using configuration
#18 65.09 Message: install git commit hooks
#18 65.09 Build targets in project: 9
#18 65.09 WARNING: Deprecated features used:
#18 65.09  * 0.55.0: {'ExternalProgram.path'}
#18 65.09
#18 65.09 gst-plugin-pylon 0.7.0
#18 65.09
#18 65.09     Plugins        : pylon
#18 65.09
#18 65.09   Subprojects
#18 65.09     pybind11       : YES
#18 65.09
#18 65.09   User defined options
#18 65.09     prefix         : /usr/
#18 65.09     python-bindings: enabled
#18 65.09
#18 65.09 Found ninja-1.11.1.git.kitware.jobserver-1 at /usr/local/bin/ninja
#18 65.50 ninja: Entering directory `builddir'
#18 68.63 [1/34] Generating version.h with a custom command (wrapped by meson because command contains newlines)
#18 69.91 [2/34] Compiling C object tests/examples/pylon/list_properties.p/list_properties.c.o
#18 70.16 [3/34] Compiling C++ object gst-libs/gst/pylon/libgstpylon-1.0.so.p/gstpylondebug.cpp.o
#18 71.05 [4/34] Compiling C object tests/examples/pylon/pylonsrc.p/pylonsrc.c.o
#18 71.67 [5/34] Compiling C object tests/check/generic_states.p/generic_states.c.o
#18 73.32 [6/34] Compiling C object tests/examples/pylon/show_meta.p/show_meta.c.o
#18 75.99 [7/34] Compiling C++ object ext/pylon/libgstpylon.so.p/gstpylonplugin.cpp.o
#18 86.66 [8/34] Compiling C++ object gst-libs/gst/pylon/libgstpylon-1.0.so.p/gstpylonmeta.cpp.o
#18 86.68 [9/34] Compiling C++ object ext/pylon/libgstpylon.so.p/gstpylondisconnecthandler.cpp.o
#18 86.77 [10/34] Compiling C++ object ext/pylon/libgstpylon.so.p/gstpylonsysmembufferfactory.cpp.o
#18 87.00 [11/34] Compiling C++ object ext/pylon/libgstpylon.so.p/gstpylonimagehandler.cpp.o
#18 87.61 [12/34] Compiling C++ object ext/pylon/libgstpylon.so.p/gstchildinspector.cpp.o
#18 87.78 [13/34] Linking target tests/check/generic_states
#18 87.88 [14/34] Linking target tests/examples/pylon/pylonsrc
#18 87.99 [15/34] Linking target tests/examples/pylon/list_properties
#18 90.60 [16/34] Compiling C++ object ext/pylon/libgstpylon.so.p/gstpylonsrc.cpp.o
#18 91.95 [17/34] Compiling C++ object gst-libs/gst/pylon/libgstpylon-1.0.so.p/gstpylonparamspecs.cpp.o
#18 92.49 [18/34] Compiling C++ object gst-libs/gst/pylon/libgstpylon-1.0.so.p/gstpyloncache.cpp.o
#18 94.42 [19/34] Compiling C++ object ext/pylon/libgstpylon.so.p/gstpylondsnvmmbufferfactory.cpp.o
#18 95.04 [20/34] Compiling C++ object gst-libs/gst/pylon/libgstpylon-1.0.so.p/gstpylonparamfactory.cpp.o
#18 101.9 [21/34] Compiling C++ object gst-libs/gst/pylon/libgstpylon-1.0.so.p/gstpylonobject.cpp.o
#18 107.8 [22/34] Compiling C++ object tests/prototypes/dynamic_limits.p/dynamic_limits.cpp.o
#18 108.5 [23/34] Linking target tests/prototypes/dynamic_limits
#18 114.5 [24/34] Compiling C++ object gst-libs/gst/pylon/libgstpylon-1.0.so.p/gstpylonfeaturewalker.cpp.o
#18 132.3 [25/34] Compiling C++ object gst-libs/gst/pylon/libgstpylon-1.0.so.p/gstpylonintrospection.cpp.o
#18 133.0 [26/34] Linking target gst-libs/gst/pylon/libgstpylon-1.0.so
#18 134.2 [27/34] Generating symbol file gst-libs/gst/pylon/libgstpylon-1.0.so.p/libgstpylon-1.0.so.symbols
#18 134.8 [28/34] Linking target tests/examples/pylon/show_meta
#18 138.1 [29/34] Compiling C++ object ext/pylon/libgstpylon.so.p/gstpylon.cpp.o
#18 138.9 [30/34] Linking target ext/pylon/libgstpylon.so
#18 167.0 [31/34] Compiling C++ object bindings/pygstpylon.cpython-310-aarch64-linux-gnu.so.p/src_pygstpylon.cpp.o
#18 177.4 [32/34] Compiling C++ object bindings/pygstpylon.cpython-310-aarch64-linux-gnu.so.p/src_bindaccessfunctions.cpp.o
#18 195.1 [33/34] Compiling C++ object bindings/pygstpylon.cpython-310-aarch64-linux-gnu.so.p/src_bindpylonmeta.cpp.o
#18 195.8 [34/34] Linking target bindings/pygstpylon.cpython-310-aarch64-linux-gnu.so
#18 196.1 ninja: Entering directory `builddir'
#18 197.5 [1/4] Generating version.h with a custom command (wrapped by meson because command contains newlines)
#18 197.5 [1/2] Installing files.
#18 199.5 Installing gst-libs/gst/pylon/libgstpylon-1.0.so to /usr/lib/aarch64-linux-gnu
#18 199.5 Installing ext/pylon/libgstpylon.so to /usr/lib/aarch64-linux-gnu/gstreamer-1.0
#18 199.5 Installing bindings/pygstpylon.cpython-310-aarch64-linux-gnu.so to /usr/lib/python3/dist-packages
#18 199.5 Installing /code_libs/gst-plugin-pylon/gst-libs/gst/pylon/gstpylon-prelude.h to /usr/include/gstreamer-1.0/gst/pylon
#18 199.5 Installing /code_libs/gst-plugin-pylon/gst-libs/gst/pylon/gstpyloncache.h to /usr/include/gstreamer-1.0/gst/pylon
#18 199.5 Installing /code_libs/gst-plugin-pylon/gst-libs/gst/pylon/gstpylondebug.h to /usr/include/gstreamer-1.0/gst/pylon
#18 199.5 Installing /code_libs/gst-plugin-pylon/gst-libs/gst/pylon/gstpylonfeaturewalker.h to /usr/include/gstreamer-1.0/gst/pylon
#18 199.5 Installing /code_libs/gst-plugin-pylon/gst-libs/gst/pylon/gstpylonintrospection.h to /usr/include/gstreamer-1.0/gst/pylon
#18 199.5 Installing /code_libs/gst-plugin-pylon/gst-libs/gst/pylon/gstpylonmeta.h to /usr/include/gstreamer-1.0/gst/pylon
#18 199.5 Installing /code_libs/gst-plugin-pylon/gst-libs/gst/pylon/gstpylonmetaprivate.h to /usr/include/gstreamer-1.0/gst/pylon
#18 199.5 Installing /code_libs/gst-plugin-pylon/gst-libs/gst/pylon/gstpylonobject.h to /usr/include/gstreamer-1.0/gst/pylon
#18 199.5 Installing /code_libs/gst-plugin-pylon/gst-libs/gst/pylon/gstpylonparamspecs.h to /usr/include/gstreamer-1.0/gst/pylon
#18 199.5 Installing /code_libs/gst-plugin-pylon/builddir/meson-private/gstpylon-1.0.pc to /usr/lib/aarch64-linux-gnu/pkgconfig
#18 199.5 Running custom install script '/usr/bin/python3 /code_libs/gst-plugin-pylon/builddir/meson-private/pycompile.py python-3.10-installed.json 0'
#18 199.5 Running custom install script '/usr/bin/python3 /code_libs/gst-plugin-pylon/builddir/meson-private/pycompile.py python-3.10-installed.json 0'
#18 DONE 199.6s

As, I want to deploy my application to a Jetson device, I build a docker image based on deepstream-l4t:6.4-samples-multiarch that contains only the runtime libraries of deepstream. I copy the plugin library libgstpylon.so and all the shared libraries it depends on at runtime into the container from the image I built previously (base). I provide the corresponding dockerfile code snippet below:
# Gst-pylon plugin
COPY --from=base /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpylon.so /usr/lib/aarch64-linux-gnu/gstreamer-1.0
# Pylon libraries
COPY --from=base /usr/lib/aarch64-linux-gnu/libgstpylon-1.0.so /usr/lib/aarch64-linux-gnu
COPY --from=base /opt/pylon/lib/libGCBase_gcc_v3_1_Basler_pylon.so /usr/local/lib
COPY --from=base /opt/pylon/lib/libGenApi_gcc_v3_1_Basler_pylon.so /usr/local/lib
COPY --from=base /opt/pylon/lib/libpylonbase.so /usr/local/lib
COPY --from=base /opt/pylon/lib/libpylonutility.so /usr/local/lib
COPY --from=base /opt/pylon/lib/libMathParser_gcc_v3_1_Basler_pylon.so /usr/local/lib
COPY --from=base /opt/pylon/lib/libXmlParser_gcc_v3_1_Basler_pylon.so /usr/local/lib
COPY --from=base /opt/pylon/lib/libLog_gcc_v3_1_Basler_pylon.so /usr/local/lib
COPY --from=base /opt/pylon/lib/libNodeMapData_gcc_v3_1_Basler_pylon.so /usr/local/lib

When, I run the final production image on Jetson device I am taking the below errors:
** (deepstreamer:53): CRITICAL **: 19:46:15.506: void gst_pylon_set_nvsurface_layout(GstPylon*, GstPylonNvsurfaceLayoutEnum): assertion 'self' failed

** (deepstreamer:53): CRITICAL **: 19:46:15.506: void gst_pylon_set_gpu_id(GstPylon*, gint): assertion 'self' failed

... pylonsrc gstpylonsrc.cpp:821:gst_pylon_src_start:<basler_1-src_elem> error: Failed to start camera.
... pylonsrc gstpylonsrc.cpp:821:gst_pylon_src_start:<basler_1-src_elem> error: No devices found matching the specified criteria

The plugin is successfully loaded and inspected inside the container, but there are two messages globbing failed printed:
globbing failed
globbing failed
Factory Details:
  Rank                     none (0)
  Long-name                Basler/Pylon source element
  Klass                    Source/Video/Hardware
  Description              Source element for Basler cameras
  Author                   Basler AG <support.europe@baslerweb.com>

Plugin Details:
  Name                     pylon
  Description              Basler/Pylon plugin for pylon SDK 7.4.0(38864)
  Filename                 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstpylon.so
  Version                  0.7.1-6-gf9dc08c
  License                  BSD
  Source module            gst-plugin-pylon
  Binary package           GStreamer Pylon Plug-in source release
  Origin URL               https://github.com/basler/gst-plugin-pylon
...

Regarding the hardware setup, I use two basler GigE cameras each connected to a different network port in a basler GigE interface card that is connected on a Jetson AGX Orin via the PCIe bus.
I have also installed the pylon SDK on Jetson (out of the container) and I have verified that the cameras operate successfully. In addition, to verify that the cameras can be accessed from inside the container I have installed pypylon and I have run the startup.py sample successfully.
Has anyone with a similar setup experienced this problem? Can anyone give a direction in resolving this issue?

Currently working on exactly what you did.
Will check your issues

The above errors are also raised when I install and use the plugin natively on AGX Orin Jetpack 6.0 (L4T r36.3.0) with pylon SDK 7.4.0 installed. Thus it does not seem to be related to docker. Also, the version of the plugin that raises the above errors in my setup is 0.7.1-6-gf9dc08c. I downgraded the plugin version to 0.7.0-12-geffb041 by checking out to feature/fix_build_on_pylon7.4.0 and the plugin works successfully without errors.

UPDATE
While the plugin works after I downgraded the version to 0.7.0 it does not work when running inside a container using the setup a dockerfile I described above. I am getting a segmentation fault. I provide the stacktrace below:
Thread 1 "streamer" received signal SIGSEGV, Segmentation fault.
0x0000ffff7ec9b4ec in gst_pylon_new (gstpylonsrc=gstpylonsrc@entry=0xaaaaab6d9e80, device_user_name=<optimized out>, device_serial_number=<optimized out>, device_index=<optimized out>, enable_correction=<optimized out>, err=err@entry=0xffffffffdee0) at ../ext/pylon/gstpylon.cpp:340
340     ../ext/pylon/gstpylon.cpp: No such file or directory.
(gdb) bt
#0  0x0000ffff7ec9b4ec in gst_pylon_new(_GstElement*, char const*, char const*, int, int, _GError**)
    (gstpylonsrc=gstpylonsrc@entry=0xaaaaab6d9e80, device_user_name=<optimized out>, device_serial_number=<optimized out>, device_index=<optimized out>, enable_correction=<optimized out>, err=err@entry=0xffffffffdee0) at ../ext/pylon/gstpylon.cpp:340
#1  0x0000ffff7eca497c in gst_pylon_src_start(GstBaseSrc*) (src=<optimized out>) at ../ext/pylon/gstpylonsrc.cpp:780
#2  0x0000fffff6cd72e0 in  () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#3  0x0000fffff6cd8340 in  () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#4  0x0000fffff7a3d288 in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#5  0x0000fffff7a3dae0 in gst_pad_set_active () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#6  0x0000fffff7a2166c in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#7  0x0000fffff7a2b0f8 in gst_iterator_fold () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#8  0x0000fffff7a9fb1c in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#9  0x0000fffff7a1ed58 in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#10 0x0000fffff7a21968 in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#11 0x0000fffff6cd84e0 in  () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#12 0x0000fffff7a20be8 in gst_element_change_state () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#13 0x0000fffff7a21374 in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#14 0x0000fffff79f678c in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#15 0x0000fffff7a20be8 in gst_element_change_state () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0

Is the fault raised because it cannot find the source file  ../ext/pylon/gstpylon.cpp? If yes, why the source file is needed as long as we have built the plugin and using the final executable inside the container?

UPDATE
While the plugin works after I downgraded the version to 0.7.0 it does not work when running inside a container using the setup and the Dockerfile I described above. I am getting a segmentation fault. I provide the stacktrace below:
Thread 1 "streamer" received signal SIGSEGV, Segmentation fault.
0x0000ffff7ec9b4ec in gst_pylon_new (gstpylonsrc=gstpylonsrc@entry=0xaaaaab6d9e80, device_user_name=<optimized out>, device_serial_number=<optimized out>, device_index=<optimized out>, enable_correction=<optimized out>, err=err@entry=0xffffffffdee0) at ../ext/pylon/gstpylon.cpp:340
340     ../ext/pylon/gstpylon.cpp: No such file or directory.
(gdb) bt
#0  0x0000ffff7ec9b4ec in gst_pylon_new(_GstElement*, char const*, char const*, int, int, _GError**)
    (gstpylonsrc=gstpylonsrc@entry=0xaaaaab6d9e80, device_user_name=<optimized out>, device_serial_number=<optimized out>, device_index=<optimized out>, enable_correction=<optimized out>, err=err@entry=0xffffffffdee0) at ../ext/pylon/gstpylon.cpp:340
#1  0x0000ffff7eca497c in gst_pylon_src_start(GstBaseSrc*) (src=<optimized out>) at ../ext/pylon/gstpylonsrc.cpp:780
#2  0x0000fffff6cd72e0 in  () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#3  0x0000fffff6cd8340 in  () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#4  0x0000fffff7a3d288 in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#5  0x0000fffff7a3dae0 in gst_pad_set_active () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#6  0x0000fffff7a2166c in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#7  0x0000fffff7a2b0f8 in gst_iterator_fold () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#8  0x0000fffff7a9fb1c in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#9  0x0000fffff7a1ed58 in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#10 0x0000fffff7a21968 in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#11 0x0000fffff6cd84e0 in  () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#12 0x0000fffff7a20be8 in gst_element_change_state () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#13 0x0000fffff7a21374 in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#14 0x0000fffff79f678c in  () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#15 0x0000fffff7a20be8 in gst_element_change_state () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0

Is the fault raised because it cannot find the source file ../ext/pylon/gstpylon.cpp? If yes, why the source file is needed since we have built the plugin and using the final executable inside the container?
Also, I keep getting two messages globbing failed each time I inspect or use the plugin inside the container.

I managed to solve the above issue by copying all the contents of /opt/pylon/lib from the host into the container. I came up with this solution after checking with lsof what files are opened when I run the command gst-inspect-1.0 pylonsrc. I can mark this issue as closed, but the other issue about using the latest plugin with version 0.7.1-6-gf9dc08c and pylon 7.4.0 still remains unresolved.

Hi @kostastsing,
we now have binary debian packages for multiple debian and ubuntu versions:
https://github.com/basler/gst-plugin-pylon/releases/tag/v0.7.3
and an explanation to build the plugin debian packages for NVIDIA deepstream including nvmm support:
https://github.com/basler/gst-plugin-pylon?tab=readme-ov-file#debian-nvidia-packaging

authors: kostastsing thiesmoeller

repo: basler/gst-plugin-pylon


text:
No wheels for Python > 3.6?

The latest supported Python version supported by the provided wheels seems to be 3.6:
https://github.com/bastibe/python-soundfile/blob/5f650bc017176424cb39ffbc544f4d80ca5179e9/setup.py#L9-L12
I'm wondering why there haven't been any complaints about that so far ... or am I missing something?

Good question. Perhaps 3.7/3.8 users have been downloading the source-only wheel? Or something conda-related?
This might actually explain the (small number of) complaints we see pop up from time to time about (mostly) Windows users missing the libsndfile library.
Or perhaps soundfile is more commonly downloaded via apt these days?
At any rate, adding the newer versions or some kind of wildcard is probably a good idea.

Note that the current wheels already include the py2.py3 tag which makes any extra cp and pp tags redundant.  py2.py3 is the 'universal' Python tag and is enough to match all current versions of CPython and PyPy.
I can personally verify that soundfile-0.10.3.post1 installs and runs fine on Python 3.10 x64.
The extra Python tags don't cause problems other than making the wheel filename harder to read.

source: gharchive/issue

authors: HexDecimal bastibe mgeier

repo: bastibe/python-soundfile

license_type: permissive

license_source: github-api


text:
Refactor to use task selection

Currently sheetload only does uploading (or skips the pushing given some arguments).
I'd like to refactor this process so as to allow for more controlled (less optional override arguments) task selection and pave the way for some functions such as preview (no pushing) and dropping sheet (using the gspread API directly).

Closed in #76

repo: bastienboutonnet/sheetload

license: MIT


text:
ドキュメントのRequirements記述が不足している

Ubuntu 20.04環境にてbayardを動かそうと sudo apt install rustc を実行したあと
https://bayard-search.github.io/bayard/install.html に従い「cargo install bayard」を実行したところ、パッケージが足りずに失敗しました。
最終的には 「sudo apt install librust-openssl-dev cmake golang」を行うことでセットアップが完了しました。

ご報告ありがとうございます。
後で修正しておきます。

authors: mosuka osakanataro

repo: bayard-search/bayard


text:
ibazel ought to use CQuery instead of regular query

Describe the bug
Running bazel build <target> then bazel query <target> invalidates the cache sometimes because bazel query doesn't consider select statements.
Reproduction instructions
Any repo with a target with select statements. Run the above commands and see the cache is invalidated.
Expected behavior
The cache should not be invalidated. This leads to really long boot up times.
Version (please complete the following information):

OS: MacOS 13.3
Browser: N/A
ibazel Version: v0.16.2
Bazel version: 6.1.0

same here!

Same error here. Any chance we could rollback the change @achew22 ?

Yeah, let's roll it back

Looks like there may be more complexity here than initially thought. Rolling back to restore functionality. Thanks for the reporting everyone!

This issue should be reopened. The cache invalidation issue still exists

authors: achew22 jakeleventhal loeffel-io purkhusid

repo: bazelbuild/bazel-watcher


text:
Add support for bazel option "--remote_cache="

Hi! I'd like to be able to specify the --remote_cache= option when running bazel commands with ibazel.
If I understand things correctly, this is what is required, but if I missed anything, please let me know.

Not sure how to re-run those tests. I don't think they're failing due to this.

source: gharchive/pull-request


text:
Build Bazel Plugin for Clion_2021_3 error (clion-oss-under-dev)

Building error when running the command (without any further code changes) on both Ubuntu 20.04 and macOS:
bazelisk build //clwb:clwb_bazel_zip --define=ij_product=clion-oss-under-dev --verbose_failures
The outputs from the terminal:
bazelisk build //clwb:clwb_bazel_zip --define=ij_product=clion-oss-under-dev --verbose_failures                                                                                2m 16s py base INFO: Analyzed target //clwb:clwb_bazel_zip (0 packages loaded, 0 targets configured). INFO: Found 1 target... ERROR: /home/user_name/opt/Bazel/intellij/aspect/tools/BUILD:18:13: Building aspect/tools/liblib.jar (6 source files) failed: (Exit 1): java failed: error executing command    (cd /home/user_name/.cache/bazel/_bazel_user_name/4b8d771e7a452a6eecba6ad1168d3b14/execroot/intellij_with_bazel && \   exec env - \     LC_CTYPE=en_US.UTF-8 \     LD_LIBRARY_PATH=...... \     PATH=/home/user_name/.cache/bazelisk/downloads/bazelbuild/bazel-4.2.2-linux-x86_64/bin:...... \   external/remotejdk11_linux/bin/java -XX:+UseParallelOldGC -XX:-CompactStrings '--patch-module=java.compiler=external/remote_java_tools_linux/java_tools/java_compiler.jar' '--patch-module=jdk.compiler=external/remote_java_tools_linux/java_tools/jdk_compiler.jar' '--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-opens=java.base/java.nio=ALL-UNNAMED' '--add-opens=java.base/java.lang=ALL-UNNAMED' -jar external/remote_java_tools_linux/java_tools/JavaBuilder_deploy.jar @bazel-out/k8-fastbuild/bin/aspect/tools/liblib.jar-0.params @bazel-out/k8-fastbuild/bin/aspect/tools/liblib.jar-1.params) Execution platform: @local_config_platform//:host aspect/tools/src/com/google/idea/blaze/aspect/ArtifactLocationParser.java:18: error: package com.google.common.annotations does not exist import com.google.common.annotations.VisibleForTesting;                                     ^ aspect/tools/src/com/google/idea/blaze/aspect/ArtifactLocationParser.java:19: error: package com.google.common.base does not exist import com.google.common.base.Splitter;                              ^ aspect/tools/src/com/google/idea/blaze/aspect/ArtifactLocationParser.java:20: error: package com.google.common.collect does not exist import com.google.common.collect.ImmutableList;                                 ^ aspect/tools/src/com/google/idea/blaze/aspect/ArtifactLocationParser.java:29: error: cannot find symbol @VisibleForTesting  ^   symbol: class VisibleForTesting aspect/tools/src/com/google/idea/blaze/aspect/ArtifactLocationParser.java:33: error: cannot find symbol   private static final Splitter SPLITTER = Splitter.on(',');                        ^   symbol:   class Splitter   location: class ArtifactLocationParser aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:18: error: package com.google.common.annotations does not exist import com.google.common.annotations.VisibleForTesting;                                     ^ aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:19: error: package com.google.common.base does not exist import com.google.common.base.Preconditions;                              ^ aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:20: error: package com.google.common.io does not exist import com.google.common.io.ByteStreams;                            ^ aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:21: error: package com.google.common.io does not exist import com.google.common.io.Files;                            ^ aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:54: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class CreateAar aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:20: error: package com.google.common.annotations does not exist import com.google.common.annotations.VisibleForTesting;                                     ^ aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:21: error: package com.google.common.base does not exist import com.google.common.base.Preconditions;                              ^ aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:22: error: package com.google.common.collect does not exist import com.google.common.collect.ImmutableList;                                 ^ aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:23: error: package com.google.common.collect does not exist import com.google.common.collect.Lists;                                 ^ aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:24: error: package com.google.common.io does not exist import com.google.common.io.Files;                            ^ aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:25: error: package com.google.common.util.concurrent does not exist import com.google.common.util.concurrent.Futures;                                         ^ aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:26: error: package com.google.common.util.concurrent does not exist import com.google.common.util.concurrent.ListenableFuture;                                         ^ aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:27: error: package com.google.common.util.concurrent does not exist import com.google.common.util.concurrent.ListeningExecutorService;                                         ^ aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:28: error: package com.google.common.util.concurrent does not exist import com.google.common.util.concurrent.MoreExecutors;                                         ^ aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:60: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/OptionParser.java:18: error: package com.google.common.collect does not exist import com.google.common.collect.ImmutableList;                                 ^ aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:18: error: package com.google.common.annotations does not exist import com.google.common.annotations.VisibleForTesting;                                     ^ aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:19: error: package com.google.common.base does not exist import com.google.common.base.Preconditions;                              ^ aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:20: error: package com.google.common.collect does not exist import com.google.common.collect.Maps;                                 ^ aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:21: error: package com.google.common.io does not exist import com.google.common.io.Files;                            ^ aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:22: error: package com.google.common.util.concurrent does not exist import com.google.common.util.concurrent.ListenableFuture;                                         ^ aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:23: error: package com.google.common.util.concurrent does not exist import com.google.common.util.concurrent.ListeningExecutorService;                                         ^ aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:24: error: package com.google.common.util.concurrent does not exist import com.google.common.util.concurrent.MoreExecutors;                                         ^ aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:49: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParserIoProvider.java:18: error: package com.google.common.annotations does not exist import com.google.common.annotations.VisibleForTesting;                                     ^ aspect/tools/src/com/google/idea/blaze/aspect/PackageParserIoProvider.java:28: error: cannot find symbol @VisibleForTesting  ^   symbol: class VisibleForTesting aspect/tools/src/com/google/idea/blaze/aspect/ArtifactLocationParser.java:35: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class ArtifactLocationParser aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:62: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class CreateAar aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:75: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class CreateAar aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:70: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:104: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:286: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:55: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:104: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:109: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:129: error: cannot find symbol   @VisibleForTesting    ^   symbol:   class VisibleForTesting   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/ArtifactLocationParser.java:33: error: cannot find symbol   private static final Splitter SPLITTER = Splitter.on(',');                                            ^   symbol:   variable Splitter   location: class ArtifactLocationParser aspect/tools/src/com/google/idea/blaze/aspect/ArtifactLocationParser.java:45: error: package ImmutableList does not exist     ImmutableList.Builder<ArtifactLocation> builder = ImmutableList.builder();                  ^ aspect/tools/src/com/google/idea/blaze/aspect/ArtifactLocationParser.java:45: error: cannot find symbol     ImmutableList.Builder<ArtifactLocation> builder = ImmutableList.builder();                                                       ^   symbol:   variable ImmutableList   location: class ArtifactLocationParser aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:89: error: cannot find symbol       Preconditions.checkNotNull(options.outputAar);       ^   symbol:   variable Preconditions   location: class CreateAar aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:90: error: cannot find symbol       Preconditions.checkNotNull(options.manifestFile);       ^   symbol:   variable Preconditions   location: class CreateAar aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:91: error: cannot find symbol       Preconditions.checkNotNull(options.resourceRoot);       ^   symbol:   variable Preconditions   location: class CreateAar aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:119: error: cannot find symbol       ByteStreams.copy(fis, zos);       ^   symbol:   variable ByteStreams   location: class CreateAar aspect/tools/src/com/google/idea/blaze/aspect/CreateAar.java:130: error: cannot find symbol       return Files.readLines(paramFile, StandardCharsets.UTF_8).toArray(new String[0]);              ^   symbol:   variable Files   location: class CreateAar aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:106: error: cannot find symbol     Preconditions.checkNotNull(options.filteredJar);     ^   symbol:   variable Preconditions   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:109: error: cannot find symbol       options.filterJars = ImmutableList.of();                            ^   symbol:   variable ImmutableList   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:112: error: cannot find symbol       options.filterSourceJars = ImmutableList.of();                                  ^   symbol:   variable ImmutableList   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:115: error: cannot find symbol     final List<String> archiveFileNamePrefixes = Lists.newArrayList();                                                  ^   symbol:   variable Lists   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:141: error: cannot find symbol       return Files.readLines(paramFile, StandardCharsets.UTF_8).toArray(new String[0]);              ^   symbol:   variable Files   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:149: error: cannot find symbol     ListeningExecutorService executorService =     ^   symbol:   class ListeningExecutorService   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:150: error: cannot find symbol         MoreExecutors.listeningDecorator(         ^   symbol:   variable MoreExecutors   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:153: error: cannot find symbol     List<ListenableFuture<String>> futures = Lists.newArrayList();          ^   symbol:   class ListenableFuture   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:153: error: cannot find symbol     List<ListenableFuture<String>> futures = Lists.newArrayList();                                              ^   symbol:   variable Lists   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:165: error: cannot find symbol       List<String> archiveFileNamePrefixes = Futures.allAsList(futures).get();                                              ^   symbol:   variable Futures   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:166: error: cannot find symbol       List<String> result = Lists.newArrayList();                             ^   symbol:   variable Lists   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/JarFilter.java:182: error: cannot find symbol     List<String> result = Lists.newArrayList();                           ^   symbol:   variable Lists   location: class JarFilter aspect/tools/src/com/google/idea/blaze/aspect/OptionParser.java:87: error: cannot find symbol     return result == null ? ImmutableList.of() : result;                             ^   symbol:   variable ImmutableList   location: class OptionParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:73: error: cannot find symbol     Preconditions.checkNotNull(options.outputManifest);     ^   symbol:   variable Preconditions   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:96: error: cannot find symbol       return Files.readLines(paramFile, StandardCharsets.UTF_8).toArray(new String[0]);              ^   symbol:   variable Files   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:133: error: cannot find symbol     ListeningExecutorService executorService =     ^   symbol:   class ListeningExecutorService   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:134: error: cannot find symbol         MoreExecutors.listeningDecorator(         ^   symbol:   variable MoreExecutors   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:137: error: cannot find symbol     Map<ArtifactLocation, ListenableFuture<String>> futures = Maps.newHashMap();                           ^   symbol:   class ListenableFuture   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:137: error: cannot find symbol     Map<ArtifactLocation, ListenableFuture<String>> futures = Maps.newHashMap();                                                               ^   symbol:   variable Maps   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:141: error: cannot find symbol     Map<ArtifactLocation, String> map = Maps.newHashMap();                                         ^   symbol:   variable Maps   location: class PackageParser aspect/tools/src/com/google/idea/blaze/aspect/PackageParser.java:142: error: cannot find symbol     for (Entry<ArtifactLocation, ListenableFuture<String>> entry : futures.entrySet()) {                                  ^   symbol:   class ListenableFuture   location: class PackageParser Target //clwb:clwb_bazel_zip failed to build INFO: Elapsed time: 0.349s, Critical Path: 0.25s INFO: 4 processes: 4 internal. FAILED: Build did NOT complete successfully

So, this particular error is actually pretty easy to fix, https://github.com/bazelbuild/intellij/blob/7881568fd4c029d36b6a4d681258645b90135c01/intellij_platform_sdk/BUILD.clion213#L31
just needs to be changed to "clion-*/lib/3rd-party-rt.jar".
However, there are a lot more breaking changes in the CLion internal interface that needs to get fixed before the plugin can remotely work again.

With PR #3131, these errors are gone now. The plugin compiles successfully against CLion 2021.3 and the CI is green. I hence went ahead and pushed a corresponding version of the plugin to the beta channel of JetBrains' marketplace. It's currently pending approval by JetBrains, which is typically given within a day.

authors: alice-ks oceanusxiv wniu9

repo: bazelbuild/intellij

license_source: bigquery


text:
Integrating Sync Cache with Goland's Shared Indexes

Description of the feature request:
Storing the sync results into Goland's shared indexes to enable sharing with other machines.
What underlying problem are you trying to solve with this feature?
Not requiring to do a Bazel sync on earch machine.
What operating system, Intellij IDE and programming languages are you using? Please provide specific versions.
All. For now we are only interested in Go.
Have you found anything relevant by searching the web?
https://bazel.build/remote/caching and https://www.jetbrains.com/help/go/indexing.html
Any other information, logs, or outputs that you want to share?
No response

While this is a useful feature we'd love to have, we don't have the bandwidth to implement it right now. We're open to PRs, and I'm happy to provide guidance/reviews if I can.

So I have officially started working on such feature. I'm considering disabling it by default and implementing it incrementally. The method I'm considering is imitating the STARTUP sync type, copying the files from a remote repo and just running a STARTUP sync.
I know that we need to make that the cache is in sync with the local files etc... but let's take it one step at a time.

After thinking thoroughly about it and especially the case of loading a part of a mono-repo, I'll do this first and I think I know what I need to do it.

1- Add a method that creates a compressed file containing all the intellij-info files. This is to be used by CI/CD tools mainly to populate a central repo.
2- Upon synchronization, the plugin should first parse the targets and then try to get their intellij-info files from the remote cache. If they do exist, then we can run a NO_BUILD sync which creates the project's proto cache.
3- Versioning of cached intellij-info files need to be considered.
4- I'm also considering using the native IntelliJ Shared Indexing

What about version management? How can we be sure that we are pulling the correct version?

If using the Bazel remote cache, the ide-info files generated by the aspect will be cached based on the hashes of the input files. So, if a version changes (either on a third party dependency, on the IDE, or in your source code), the cache key of the ide-info will change, so invalidation is transparent.
I agree with @tpasternak that using Bazel's remote cache is "free" and correct if you already have it set up.

authors: ahmedyarub blorente


text:
Fix scala rules if scala compiler plugins provided

In BUILD.bazel if you have:
scala_library(
name = "testapp",
plugins = ["@org_spire_math_kind_projector_2_12"]
)
It fails with following error:
File "..../io_bazel_rules_scala/scala/private/rule_impls.bzl", line 123, in paths.append
p.scala.outputs.jar
'struct' object has no attribute 'jar'
Seems like jar attributed has been changed to jars some time ago. This pull request fixes this problem.

I signed it!

+1 to a test.
@johnynek this is a bit aside to this PR as my comment is bigger in scope but I'd really like to kill the scala attr

+1 to killng the scala attr. Maybe bazel has finally added all the things and fixed all the bugs making that possible.
The last time I tried, we could not.

Guys, I would like to add tests for it as well, but I have no idea where to start. Could you please give me an example of your tests?

The tests are here:
I thought we already may have had a test with a plug-in, e.g. wart remover, but I couldn’t find it on my phone.
Maybe try kind projector as you suggest above and make sure it builds and your code compiles?

@johnynek Added tests, please check. Most likely you didn't see this issue, because you use maven_jar rule, not scala_maven_import_external. I've noticed that scala_maven_import_external rules triggers the path with hassattr['scala']

//cc @ittaiz

btw, if you'd rather I do this check please let me know and I'll do it

Sure, let me check

Yep, it fails with:
ERROR: Analysis of target '//test/src/main/scala/scalarules/test/compiler_plugin:compiler_plugin' failed;
build aborted: Analysis of target '//test/src/main/scala/scalarules/test/compiler_plugin:compiler_plugin' failed; build aborted

@ittaiz So I removed the e2e test. Please, let me know if any other help needed.

@ittaiz , @johnynek any updates on when could it be released?

Sorry for the review latency here. I really appreciate your help.

Thanks!

Indeed.
Thanks!
On Sat, 4 May 2019 at 11:43 Dmitry Naumenko notifications@github.com
wrote:

Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/bazelbuild/rules_scala/pull/719#issuecomment-489307589,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAKQQFYXFHF7QLICWYVPX3TPTVEBZANCNFSM4HAEOVMA
.

authors: dnaumenko ittaiz johnynek


text:
typo, showstopper preventing openid from working, error when realm is mismatched.

typo in log message (missing trailing space on continued line)
request.settings -> request.registry.settings
openid consumer realm mismatch results in None, del of session results in error

Indeed, wonder why that didn't pop up in my testing, merging.

repo: bbangert/velruse

license: mit


text:
Allow autocorrect to be configured by cop

it would be great to be able to warn on a cop, but not autocorrect for it (maybe the cop is good, but not always valid is some situations)
something like the following in a rubocop.yml would be nice.
UnusedBlockArgument:
  AutoCorrect: false

i'm happy to implement this if anyone thinks it would be usable

Generally our policy so far has been to improve problematic auto-corrections, but I can see the point in making it possible to disable them. @jonas054 Thoughts?

There is a chance that people might turn off auto-correct in cops instead of reporting them, but I don't think that will happen a lot. So this feature could be useful, because there are other reasons than bugs why someone would want to turn off auto-correct per cop.

@jdoconnor Btw, what's wrong with UnusedBlockArgument's autocorrect?

just a preference in style for some situations. In the situation below, it would be helpful for grepping purposes to have the signatures (while read, not just executed) match
class OsxClass
  def foo(bar)
    raise NotImplementedError
  end
end

class Win32Class
  def foo(bar)
    bar = 42
  end
end

I'd suggest us fix #1601 then. We can simply add a check for raise NotImplementedError as well. :-)
Feel free to implement auto-correct disabling as well.

authors: bbatsov jdoconnor jonas054

repo: bbatsov/rubocop


text:
Documentation request: some guidance on how to write a rubocop extension with custom cops

Or maybe just some tips on which direction to start looking :smile:

Maybe taking a look here would help https://github.com/nevir/rubocop-rspec
We never actually got to creating an extension API, but hooking in RuboCop proper is pretty easy. I plan to spin the Rails stuff in a separate gem some day, hopefully this will motivate me to work on an a proper extension API. :-)

That sounds like a cool idea!
rubocop rspec seems cool, and works for me, but I wasn't sure how confident to feel about it as a learning example because it's based on a not-super-recent version of rubocop. I ended up focusing more on looking at the rubocop source code and got one working. I wasn't really sure if I was doing it right along the way but got it working :smile: (that one is kind of a joke)

@bbatsov just to follow-up on this one...
I'm a bit more familiar with rubocop internals than I was when I wrote this, and I've made a few extensions for my use which didn't feel appropriate to submit to the main project. I've just bumped into a limitation that might require the extension API, but I'm not sure.
Let's say I make a custom cop. By inheriting from Rubocop::Cop::Cop, it will get included in the rubocop checking process because it gets added to the CopStore because of this method.
Buuut what if I want to configure my custom cop to only be included for one file? I can try adding a line to my .rubocop.yml file, but then I get an error, because that cop isn't included in the default configuration, so it's not recognized. Is there currently a way to get around that?
I'd be happy to submit a pull request adding some explanation to the README about how to create a custom cop without an extension API for the sake of addressing people who shared my confusion from a few months ago, btw. Or do you think the extension API is coming soon? Happy to try and help on that too :smile:

One pitfall that could be mentioned in the Readme is that you should disable the cache when you're working on your custom cop (AllCops:UseCache)
Happy to add it if you agree @bbatsov :)
Also, I'm still having an 'unrecognized cop' warning with my custom cop even though it's poperly loaded and executed. I'll tell you when I find the solution to this too but if you have suggestions I'm interested !

Buuut what if I want to configure my custom cop to only be included for one file? I can try adding a line to my .rubocop.yml file, but then I get an error, because that cop isn't included in the default configuration, so it's not recognized. Is there currently a way to get around that?

Here's how rubocop-rspec got around it. Bummer that it has to be so invasive, but it works.
Also, I've started work on my own plugin for linting Homebrew-cask files: rubocop-cask. There's only one cop so far, but I'm working on adding more.

Whoa, that's intense

I am commenting because I would also like documentation on how to create custom cops. I have been searching and unable to find it.

+1

Wow, those docs look great, great job @jonatas.
I think it would still be valuable to have a section about how to make a cop that lives outside of the bbatsov/rubocop codebase, and rather in a gem like rubocop-rspec. I'm happy to leave this closed if you think that's already clear enough? @bbatsov

Well remembered @maxjacobson. I think we can create another section mentioning rubocop-rspec and other approaches like custom cops for a specific project. For example, you can create a internal folder in your project and create a custom cop for it simply mentioning the require in the .rubocop.yml configuration:
require:
  - rubocop-rspec
  - ./lib/custom-cop/rubocop/namespace/cop-name

It works in the same way 🎉

For example, you can create a internal folder in your project and create a custom cop for it simply mentioning the require in the .rubocop.yml configuration.

This works, but there's a downside. You can't refer to it in the configuration file, so you can't make a custom cop and apply it to a single directory, for example. Fixing this is on my TODO list.

authors: Dbz Drenmi adipasquale bbatsov horaciob jawshooah jonatas maxjacobson


text:
Text issue

Help
How can i fix it  or decrease the font size of text ?

Hi,
The plugin is capable of resizing text, but for 90% of cases this is a manual process.
How to do this is documented in the README of this repository.
You can also draw some inspiration of how it is done in the translation repositories for AI Girl / Honey Select 2.
https://github.com/IllusionMods/HS2-Translation

Closing due to inactivity.


text:
webmock must be fully enabled after disabling for disable_net_connect to work

The following spec file demonstrates that disable! followed by disable_net_connect! doesn't work as expected. You have to enable! after disable! in order to then disable_net_connect!:
require 'rails_helper'

RSpec.describe 'webmock' do
  context 'shouldnt work' do
    it 'webmock enabled' do # fails
      WebMock.enable!
      Excon.get('https://google.com')
    end
    it 'webmock disable net connect' do #fails
      WebMock.disable_net_connect!
      Excon.get('https://google.com')
    end
    it 'disable net after disable' do #passes!!!
      WebMock.disable!
      WebMock.disable_net_connect!
      Excon.get('https://google.com')
    end
    it 'disable after enable' do #fails
      WebMock.disable!
      WebMock.enable!
      WebMock.disable_net_connect!
      Excon.get('https://google.com')
    end
  end
end

I'm not sure if this is "as intended" or is a bug.

@thoraxe yes, this is intended. when WebMock is disabled, disable_net_connect doesn't have any effect on WebMock since WebMock doesn't do anything.

@bblimke it's not clear to me from the documentation that you need to re-enable everything to then disable net connections. I'd be willing to attempt a docs PR if you'd consider it.

@thoraxe enabling/disabling WebMock and enabling/disabling net connections are orthogonal concerns.
enable! and disable! make WebMock to start interacting or stop interacting with http client adapters.
disable_net_connect! is a configuration which tells WebMock whether to allow real net connections to occur or whether the requests should be blocked by WebMock unless they are allowed or stubbed.
WebMock is not only used to stub but also to track the real requests. In that case WebMock needs to be enabled to track the requests but net connections are not disabled.
If WebMock is disabled, then it has no way of neither intercepting nor tracking the requests, therefore disable_net_connect has no effect as no requests go through WebMock.
I'll be very happy to merge a PR if you can improve the documentation to clarify that. Thank you.

authors: bblimke thoraxe

repo: bblimke/webmock


text:
fix: replace merge-graphql-schemas with @graphql-tools/merge

Hi, I tried to fix the issue #142 I've opened previously by following the migration docs pointed by the deprecation notice on the merge-graphql-schemas repository.

Also excuse me, but I have no idea of what I did wrong.
Can someone explain what's up with the "Semantic Pull Request" check?

Thank you @adriantodt
Semantic Pull Request just checks that the commit follows this pattern
This LGTM! Just update the snapshots

@bboure snapshots updated!

Thank you @adriantodt !

@all-contributors add @adriantodt for code

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

authors: adriantodt bboure

repo: bboure/serverless-appsync-simulator


text:
Application groups

Problem
When we have multiple apps, we don't want to share profiles between them (e.g. my-list, continue watching, etc).
We have "applications" and we could split profiles per application.
The problem is that it has fields like "client version", "frontpage", "searchpage", etc. which we may want to distuingish between platforms (web, mobile, and tv). So we would end up with split profiles between platforms.
Proposed solution
Introduce Application Groups, example:

Application Group: bccm

Child Applications: bccm-mobile, bccm-tvos, bccm-web

Application group: kids

Child applications: kids-mobile, kids-web

We would then split profiles and usergroups per application group, while allowing us to customize frontpage etc per platform.

@KillerX

Why do we not want to share profiles?

Why do we not want to share profiles?

We want to split bcc media users from biblekids users because there are likely different "profiles" using them.
But we need to keep in mind that in the future we may want to share profiles across groups. So maybe make profiles<->appgroups many-to-many

Should only the pages be per application or also the content?

authors: KillerX andreasgan

repo: bcc-code/brunstadtv


text:
Supported pgp subkey types

Hello!
I've faced some issue related to RSA-E type of the pgp subkey. All works fine with the RSA type, but cannot recognize the key when it has type RSA-E. Could you please verify if RSA-E type is supported in Bouncy Castle java library?

I assume by RSA-E you mean RSA Encrypt-Only?
Can you provide more details as to what goes wrong? A stacktrace and perhaps a test key would be useful.

@ArtMek As you didn't answer, has your issue been resolved? Can this ticket be closed?

authors: ArtMek vanitasvitae winfriedgerlach

repo: bcgit/bc-java


text:
Bouncy castle - Subkeys Support?

I am working on a project where it requires key management(Creation of Secret, Public and subkeys) and use them to perform cryptographic operations.
I have tried a POC on PGP Subkey creation with Bouncy Castle and try to perform cryptographic operations with it.
Following are the observations –
Subkeys can be created only at the beginning with Secret Key. It cannot be created later and associated with Secret Key (while in gpg it can be added later).
Documents encrypted with subkeys cannot be decrypted with Secret Key. (results in an Exception)
Bouncy Castle treats subkeys as PGP MESSAGE (while Secret Key - PGP PRIVATE KEY BLOCK and Public Key - PGP PUBLIC KEY BLOCK)
Specific Bouncy Castle APIs for Subkeys are not available.
Please help me understand how subkeys can be used in cryptographic operations with Bouncy Castle. It will be more helpful if anyone provide me code for the same.

It is possible to add new certifications to an existing key. For example PGPPublicKey#addCertification can be used to add a new signature. This can be used to "add" new sub-keys. A sub key is nothing more than a key which has some signature signed by the master key. You do not add sub keys to a secret key. You only need the (master) secret key to create a certification that a key is a sub key. A document encrypted with a sub-public key can be decrypted with the sub-secret key.

This was implemented in https://github.com/bcgit/bc-java/commit/8ff0b3ba07f0bc627469f5d8b28964de709fc426 which is contained in the 1.67 release.

The same issue exists for BouncyCastle.NetCore. The library encrypts with the primary key but other PGP tools such as GnuPG commonly uses sub keys for encryption. The Bouncy Castle library can't decrypted any message encrypted with sub keys.

At least for the Java Bouncy Castle this is not true.
When decrypting a message, you just have to supply the (sub) key which the message is addressed to during decryption.

Closing as now resolved.


text:
Review production agent configuration

IDIM agent was running a single instance in prod, when we've had it configured to run three instances.  That instance was interrupted by platform updates, causing a 6 minute outage for the service.
Review the configuration of the production services to ensure they are HA.

During the review I found the old vc-authn instances were still running in dev, test, and prod.  After talking with @esune I've scaled these down to see if anyone complains.  All services should be using the new instances now.

The configuration of the following agents has been updated to include HPAs and anti-affinity rules to ensure a minimum number of pods are running and they are explicitly distributed across compute nodes.

A2A (Demo A2A issuer), in dev and test only
BCReg, in dev only
BC VC Pilot Issuer
IDIM Issuers
LSBC Issuers

@esune, Do you also know the current operational status of the LCRB issuers?  They already have HPA configurations but are all set to min 1 max 1 and they are only operational in dev and test, the prod instance is scaled to 0.

Also reviewed the mediator and endorser instance configurations, they both have HPA configurations and are scaled appropriately.

BC Wallet Demo has HPA configurations and is scaled appropriately.

Review of the following environments is complete (pending any feedback):

Digital Trust Shared Services
Digital Trust Services Trust Over IP
Digital Trust Demo Apps

@WadeBarnes I am not sure on whether the LCRB and BuyBC issuer agents are currently being used - I suspect they only issue credentials sporadically, if any.

@esune, What's the best way to find out?  I don't have contacts for either.

@esune, What's the best way to find out? I don't have contacts for either.

I'll try to track things down

Both LCRB and BuyBC agents seem to not be in use right now. We will spin them down and see if we receive inquiries/complaints and act accordingly.
@WadeBarnes if these were the last two agents requiring review we might be able to close this issue.

authors: WadeBarnes esune

repo: bcgov/DITP-DevOps


text:
Update clhs cost layer from raster package

Update the current method from gdistance to raster. Initially leastcostpath package was suggested, however this also relies on raster objects and is slow.
Code to be re-written in Terra package compatible.

Ok great - I was looking at the cran version. I am working up a version with the github V.2.0 release. It seems much faster, just trying to work out how to incorporate the road speeds...
some relevant examples / notes here:
https://gis.stackexchange.com/questions/280197/working-out-travel-time-from-gdistances-conductance-values-in-r
https://mran.microsoft.com/snapshot/2014-11-17/web/packages/gdistance/vignettes/gdistance.pdf
https://gis.stackexchange.com/questions/280593/understanding-the-values-from-transition-layers-produced-by-the-r-package-gdist

Updated but requires more testing and add water mask

Updated to new package least cost path, after testing this seems too generatizes and if not picking up the detail of the topography. Required digging into the calculations as to how the smoothing is generated (within the leastcost path package).

New version (see lower left corner for generalised costs)

Previous version using gdistance package (this is not 100% correct but notice the detail is much higher and closely related to topography).

repo: bcgov/PEMsamplr


text:
A&R-> Error when entering data to "Historical" sub areas of ORCS 0281

Scenario:

Navigate to the A&R on TEST environment
Log in and navigate to the "Enter Data" page
Select a year/month, the park "Tsútswecw Park" with the ORCS number 0281.
Select a sub-area that has the "Historical" tag.
Select a facility and try to add date and save the form.

Issue:

Error displayed "Failed to update report" when saving the record.

https://github.com/bcgov/bcparks-ar-admin/assets/65190263/c5779e41-aecc-434c-99af-4119b6153e52

Tested on both TEST and PROD: Passed

Verified that this issue has been fixed.

repo: bcgov/bcparks-ar-admin


text:
CM-948: Add time fields to parkOperation and parkOperationSubArea collection

Jira Ticket:
CM-948
Description:

Add time fields to parkOperation and parkOperationSubArea collection

Close this ticket as it was a duplicate of https://bcparksdigital.atlassian.net/browse/CM-1078.
Please see the comment by Rob: https://bcparksdigital.atlassian.net/browse/CM-1078?focusedCommentId=22396


text:
Moved staff payment to review page, updated styles and have it captur…

…ed by validation
Issue #: /bcgov/entity#6378
Description of changes: Moved staff payment to review page, updated styles and have it captured by validation
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of the bcrs-entities-create-ui license (Apache 2.0).

Please update the app draft version number in package.json, then do npm i, then commit both package.json and the updated package-lock.json files.

authors: jachurchill severinbeauvais

repo: bcgov/business-edit-ui


text:
Ordering & Grouping Updates

Card: https://github.com/bcgov/cas-cif/issues/1101
Note: See comment on EmissionIntensityReportForm.tsx re: assigning templates to UI schemas.

This is ready for a second pass. Fixed e2e test and existing issue on summary form. Captured opportunity for future work in a tech debt ticket here: https://github.com/bcgov/cas-cif/issues/1401

repo: bcgov/cas-cif


text:
Incompatible files shows up on Error tab

Describe the bug in current situation
Incompatible files showing up on "Errors"  tab
Link bug to the User Story
Impact of this bug
Describe the impact, i.e. what the impact is, and number of users impacted.
Chance of Occurring (high/medium/low/very low)
Pre Conditions: which Env, any pre-requesites or assumptions to execute steps?
Test -marshal
Steps to Reproduce
Steps to reproduce the behavior:

Go to request EDU-2023-1442
Go to records tab
Click on errors tab
Incompatible files also showing up there

Actual/ observed behaviour/ results
Expected behaviour
A clear and concise description of what you expected to happen. Use the gherking language.
Screenshots/ Visual Reference/ Source
If applicable, add screenshots to help explain your problem. You an use screengrab.

Confirmed this is fixed in test-marshal. Added to 7.0 release. Closing.

authors: KyEggleston nimya-aot

repo: bcgov/foi-flow


text:
IEN-734 Create test report 4

Created four test cases for Report 4. It includes hard coded data in a separate file as well.
The tests mainly cover the adding and removing of milestones for applicants. I had to include a delete function for each test so that Report 5 would not fail.

I see the issue, also, need to reformat the tests using the functions Cory created for 5.

repo: bcgov/internationally-educated-nurses


text:
Need to increase the ability to zoom in further in mobile

[ ] user testing indicated that the mobile app is not yet able to zoom in far enough to adequately draw a polygon for a record.

Additional info: the zoom in level is adequate in the web, just not the mobile app.  on the app it greys out the plus icon on the zoom tool and bounces the user back out.

mike to push up code.

#1205

authors: CrystalChadburn micheal-w-wells

repo: bcgov/invasivesbc


text:
No issuer-web log in screen.

I'm trying to run the issuer-kit in demo mode. If I navigate to http://localhost:8082/ to access the issuer-web page it shows the unauthorized screen and no option to log in. I can't find a way to log in any other way.

@Laderlappen you will need to go to http://localhost:8081, sign-in with the admin credentials (issuer-admin/issuer-admin) and generate an invite for yourself in order to be able to use the issuer.
Alternatively, you can run the demo without requiring an invite after setting this flag to false.

Thanks @esune, I thought I was probably missing something. When I create an invite in the admin page no email is sent to the email address that I specify there. So I'll have to debug why that is. The flag will be super useful in the mean time.

That is because in demo mode emails go to a maildev sink, see https://github.com/bcgov/issuer-kit#demo-mode - you can find the email there. Closing this issue as resolved.

authors: Laderlappen esune

repo: bcgov/issuer-kit


text:
💥 💥 💥 💥 dependabot weekly 💥 💥 💥 💥

Description
runing dependabot weekly
Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Refactoring / Documentation

GENIUS MOVE

repo: bcgov/jag-file-submission


text:
Add a link to the quota increase document

Describe the issue
We have some guidelines for app teams before they request for a quota increase. Doc is here: https://developer.gov.bc.ca/Need-more-quota-for-OpenShift-project-set
The plan is to add the ref link in Registry and make sure teams have read and completed the documented steps before they submit the quota increase request.
Definition of done

[ ] some sort of confirmation window for teams to go through the guideline doc before submitting quota increase request

PR: https://github.com/bcgov/platform-services-registry/pull/460

repo: bcgov/platform-services-registry


text:
fix: handle invalid GH link in edit

Thanks for the PR!
Any successful deployments (not always required) will be available below.
Frontend available
Once merged, code will be promoted and handed off to following workflow run.
Main Merge Workflow

resolves #74

repo: bcgov/public-code


text:
WBCAMS-151 occupational interest filter drop down and tooltip

had some help from you and Jonathan

repo: bcgov/workbc-main


text:
Fix YesNo Error

Summary
When YesNo is launched for first time and arrow key (up) is pressed, the application crashes.
catching AttributeError should help to fix the bug.
Crash Information
crash.py
from bullet import YesNo,colors

if __name__ == "__main__":
    cli = YesNo("Are you sure to continue? ",
        word_color = colors.foreground["yellow"])
    print(cli.launch())

command log
$ python3 crash.py
[y/n] Are you sure to continue? [y]Traceback (most recent call last):
  File "crash.py", line 6, in <module>
    print(cli.launch())
  File "/usr/local/lib/python3.7/site-packages/bullet/client.py", line 393, in launch
    if not self.valid(ans):
  File "/usr/local/lib/python3.7/site-packages/bullet/client.py", line 377, in valid
    ans = ans.lower()
AttributeError: 'NoneType' object has no attribute 'lower'

OS: OSX 10.14.3
Python version: 3.7.3

@rcfox seems like that one in line 92 is the root cause of this bug.
I think the developer needs to fix it asap..

I've fixed this issue in the launch login in YesNo class, rather than in valid. I'll update the package soon.


text:
Can u do a tutorial video

can u make a tutorial video please

Not interested, sorry!

can u make a tutorial video please

This can help: https://youtu.be/EdlGgn9uhPU


text:
memcached driver for session and cache does not work

Hi,
I am trying to use memcached as session and cache storage and running into troubles doing so.
For session setting userdata works for the 2 first requests, after that there are huge delays, up 20 sec, and I'm not sure where this comes from. I tested the same server setup without using codeigniter and it works fine:

ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', 'tcp://10.126.1.17:11211');

session_start();

$_SESSION['foo'] = 'bar';
$_SESSION['time'] = time();

var_dump($_SESSION);

For cache there are no delays but the data is never stored. In the code below both var_dumps output bool(false):

public function test() {
$this->load->driver('cache', array(
    'adapter' => 'memcached',
    'backup' => 'file'
));

var_dump($this->cache->get('foo'));
$this->cache->save('foo', 'test test', 300);
var_dump($this->cache->get('foo'));
}

Should know the memory space for storing session datas. Core PHP provides
more memory than the Codeigniter. So you couldn't store more datas and
retrieve itself quickly.
That's why you get the different time delays !
On Jun 19, 2015 2:43 AM, "Tobias Boonstoppel" notifications@github.com
wrote:

Hi,
I am trying to use memcached as session and cache storage and running into
troubles doing so.
For session setting userdata works for the 2 first requests, after that
there are huge delays, up 20 sec, and I'm not sure where this comes from. I
tested the same server setup without using codeigniter and it works fine:
ini_set('session.save_handler', 'memcached');
ini_set('session.save_path', 'tcp://10.126.1.17:11211');
session_start();
$_SESSION['foo'] = 'bar';
$_SESSION['time'] = time();
var_dump($_SESSION);
For cache there are no delays but the data is never stored. In the code
below both var_dumps output bool(false):
public function test() {
$this->load->driver('cache', array(
'adapter' => 'memcached',
'backup' => 'file'
));
var_dump($this->cache->get('foo'));
$this->cache->save('foo', 'test test', 300);
var_dump($this->cache->get('foo'));
}
—
Reply to this email directly or view it on GitHub
https://github.com/bcit-ci/CodeIgniter/issues/3919.

The session delays are caused by emulated locks that serve for avoiding concurrency issues ... don't worry about that - the delays will disappear once the writes start working again.
That being said however, I'm afraid you'd have to debug this one on your own.

I'm not sure this comment belongs here, but the CI 3 documentation sample code for memcached doesn't work. The docs need to be updated to reflect the more complex driver loading that actually works.
http://www.codeigniter.com/userguide3/libraries/caching.html#memcached-caching

@sneakyimp & @narfbg
One very important and easy to miss thing... If you are using memcache then save_path must have the "tcp://" prefix, if you are using memcached then the save_path should not have the "tcp://" prefix.

I am using memcached for session handling and cache purposes. With the upgrade to CI 3.0.4, it starts to throw the following error (while it was working as expected on CI 3.0.3:
Unknown: Failed to write session data (user). Please verify that the current setting of session.save_path is correct (/var/lib/php5)

If I replace CI 3.0.4's Session_memcached_driver.php file with 3.0.3's Session_memcached_driver.php it is working again.

@yahyaerturan I highly doubt that it is in fact working if you revert to 3.0.3.
The only change in 3.0.4 is that it actually tells you that there's an error, while previously you'd never know that.

@narfbg It's a short video for making it certain that it works with 3.0.3.
I reviewed the diff, beside error structure, there is some changes on _get_lock($session_id) method, though I am not sure whether it is the reason.
I am working on PHP 5.5.9. There is no line info I can found.

You're confusing "not showing an error" with "working", and in fact the video shows that ...
See that <sessionId>:lock key at the 58 second mark? If it actually worked, you'd have one more without the ':lock' suffix.
As I said, the only difference is that 3.0.4 actually tells you that something's wrong.

So the question is, which line returns $this->_failure for you? You'll have to do some debugging ...

So I proved that you are right :smile: I'll try to dig more..

@narfbg, @yahyaerturan
I have taken the codeigniter version 3.0.3 and 3.0.4 for testing this error.. I used xdebug with netbeans editor.
I noticed that, $this->_success and $this->_failure variables introduced in the 3.0.04 version.
In the write function of session_memcached_driver.php, the line no 198 is a return statement which returns $this->_failure; This is where the problem starts.
If you change this variable from $this->_failure to FALSE, then it is perfectly working in v3.0.04 also without any error(Unknown: Failed to write session data (user). Please verify that the current setting of session...)
If my fix is correct, then guide me how to commit it.

@cmeenatchisundaram Not correct ... you're doing the same thing @yahyaerturan did - thinking that the error message itself is the problem and trying to hide it. That doesn't solve anything.
Line 198 returning failure means that you were unable to obtain a lock. If you're running PHP7, this should fix the issue: c4de3c2f93cb6d2af65b325ae2812fccad7e98b8 (given that the lock was actually acquired, but falsely reported in your case)

@narfbg
It is returning the value 16( Memcached::RES_NOTFOUND ) when the key doesn't exist in memcached

The above is obtained from getResultCode after executing the touch
The touch returns FALSE(bool)

Why would I ask you what touch() returns if that was the final fix?

@narfbg
I found the difference between v3.0.3 and 3.0.4..
V3.0.4
In the read function,
The lock is aquired but the sessionid is not yet set.
Because of this,  In write function, the $this->_session_id is NULL.
There is a condition check available at the line no. 205 for the lock acquisition.
But before itself in line 196 the below condition is there to check again the lock
if ( ! $this->_release_lock() OR ! $this->_get_lock($session_id))
{
return false;
}
V3.0.3
In the read function,
The lock is aquired but the sessionid is also set.
Because of this,  In write function, the $this->_session_id is not NULL. So it is not failing to write the stuff.
Solution
In line no 196, we can add the condition if the lock key is not set then return failure. or else set the session id and fingerprint..then continue the execution...
if (!isset($this->_lock_key) && (! $this->_release_lock() OR ! $this->_get_lock($session_id)))
{
return $this->_failure;
}

Nonsense, $this->_session_id() is set by read immediately after acquiring the lock, here: https://github.com/bcit-ci/CodeIgniter/blob/3.0.4/system/libraries/Session/drivers/Session_memcached_driver.php#L166
Stop looking for the difference between 3.0.3 and 3.0.4. For the Nth time - if it doesn't work in 3.0.4, it didn't work (properly) in 3.0.3 either; you just didn't get notified with an error about it.
Instead, please just try with a54a2b90bf057d7883ea7506d78a1073478ea4cf (on top of the previous patch) and tell me if it works.

@narfbg
I tried with your patch. But the same error is throwing...

You've tried with both c4de3c2f93cb6d2af65b325ae2812fccad7e98b8 and a54a2b90bf057d7883ea7506d78a1073478ea4cf at the same time and it still doesn't work?
Is the error still triggered on line 198?

Yes.. Both are throwing error...
Now it is failing on this condition inside the write fn in line no 190
$this->_memcached->getResultCode() === Memcached::RES_NOTSTORED

Line 190 is an opening brace ... whatever you mean by that, I want to know which line returns $this->_failure.

Line no 221 in a54a2b9...  and line no 222 in c4de3c2...

That you're still referring to them separately makes me think you're still doing it wrong - you're supposed to apply both of them and never revert. Or directly pull the 3.0-stable branch if that's easier for you.
If you've done that and it still shows an error, can you do a var_dump($this->_memcached->getResultCode() immediately before the return and give me the result?

For what it's worth we've run into this issue ("Failed to write session data (user). Please verify...") in v3.0.4 vs v3.0.3 and we've tracked it down to the change in Session_driver.php where _success and _failure are set to 0 and -1 respectively.
If we set the _success to TRUE and _failure to FALSE, with no other changes applied to the v3.0.4 code base then it works properly as it did before.
I don't know the full context that relates to this comment and change:
"Necessary due to a bug in all PHP 5 versions where return values
from userspace handlers are not handled properly. PHP 7 fixes the
bug, so we need to return different values depending on the version."
But at least on the version of PHP 5 we run (PHP 5.5.9-1ubuntu4.14 (cli) (built: Oct 28 2015 01:34:46)) using 0 and -1 does not have the intended effect which could be because it's been patched by Ubuntu.
Hope this helps.

@omodica Excuse me if this comment would appear hostile, but you're now the third person in a row making the same mistake and basically ignoring what I've been saying over and over again ...
It's not helping, you didn't track down the issue and it hasn't worked properly before.
The PHP 5 bug in question is that the otherwise expected boolean return values are basically ignored and don't work for error reporting. Here's the RFC about its fix going into PHP 7: https://wiki.php.net/rfc/session.user.return-value
And because of this, when you eventually upgrade to PHP 7, TRUE/FALSE wouldn't "solve" the problem for you, because again - the error message being triggered is not the problem in the first place.
It doesn't matter that when you return FALSE instead of -1 you don't get an error message, the write() call has still failed and you still have a problem. Difference in 3.0.4 is that you actually know that there is a problem. What you're doing is trying to hide it and that's not a solution.
What we have to do in order to fix the issue is find out why FALSE/-1 is returned instead of TRUE/0.

Hi @narfbg, ok that's fair enough. I think part of my frustration is that Memcached-backed sessions definitely worked well enough in 3.0.3 although I do not know what the complete implications of that PHP bug were.
Moving forward, after I applied the commits you mentioned above it turns out that the getResultCode() value is 16, which is Memcached::RES_NOTFOUND. I believe that's an expected result when the key does not exist and I've added the following check:
OR ($this->_memcached->getResultCode() === Memcached::RES_NOTFOUND && $this->_memcached->set($key, $session_data, $this->_config['expiration']))
in addition to checking for the Memcached::RES_NOTSTORED result. I've tested this change and it's now working properly; at least for our use cases.

@omodica Great, that's what I've been waiting for someone to verify. Thanks!
607b159dcdf6c0df118266b9111f1b67d46d3f9b
We don't need the RES_NOTSTORED check, it was only there because the manual for Memcached::replace() said this:

the operation fails if the key does not exist on the server

and this:

The Memcached::getResultCode() will return Memcached::RES_NOTSTORED if the key does not exist.

Apparently, we can't trust the ext/memcached manual.
@yahyaerturan @cmeenatchisundaram Can you confirm that this fixes it for you?

@narfbg I was on a active development process so I switched to DB driven session. However, I'll try to fork and try to confirm if this fixes it (I think I will, it makes perfectly sense). Will tell more on Tuesday. Thanks.

@narfbg  8215e2f  commit is working fine.. no errors... happy engineering...

OK, 2 out of 3 is good enough for me to consider it case closed. Thanks for the assistance to you all. :)

It does not work for me. And frankly, I dont understand how it can work for anyone else.
Lets take a look at lines 213-214:
if (
					$this->_memcached->replace($key, $session_data, $this->_config['expiration'])
					OR ($this->_memcached->getResultCode() === Memcached::RES_NOTFOUND && $this->_memcached->set($key, $session_data, $this->_config['expiration']))
				)

Let's take a closer look what happens there. We assume that session is being written for the first time and memcache has been just flushed.
First, call to replace fails, as there is no data in memcache.
Second, $this->_memcached->getResultCode() === Memcached::RES_NOTFOUND evaluates to false,  because as @omodica said, getResultCode returns Memcached::RES_NOTFOUND as expected.
Therefore, because of characteristics of the && operator, the $this->_memcached->set($key, $session_data, $this->_config['expiration']) fragment never gets executed.
So, session data will never be written in the first place.
Obvious fix would be to change the whole fragment simply to if($this->_memcached->set($key, $session_data, $this->_config['expiration'])). However, It's been so in the past, but that check has been added.
Perhaps the intent was to use the error code for better error messages, but it's not achieving that and such a complex if-statement is now breaking things...

Getting confused with my own thoughts here, sorry. For me, getResultCode() returns code 14, not 16 as with @omodica. Therefore $this->_memcached->getResultCode() === Memcached::RES_NOTFOUND evaluates to false, and as the && must be false anyway, PHP does not bother to execute the memcached->set call.
I have no idea why we get different error codes. But is checking the error code here meaningful anyway? Anyway, fix would be the same, and it would propably work for all. (As we really dont need to know the exact reason of failure for replace.)

For me, getResultCode() returns code 14

... what is 14?

I have no idea why we get different error codes.

Well, we'll never properly fix it until we find that out.

But is checking the error code here meaningful anyway?

Yes.

Anyway, fix would be the same, and it would propably work for all.

"The same" as ... ?

(As we really dont need to know the exact reason of failure for replace.)

Yes, we really do need to know the failure cause. Please, don't go the same route everybody else in this thread did with trying to mask the problem - that is not an acceptable solution.

Quoting PHP documentation:

RES_NOTSTORED = 14
Item was not stored: but not because of an error. This normally means that either the condition for an "add" or a "replace" command wasn't met, or that the item is in a delete queue.

RES_NOTFOUND = 16
Item with this key was not found (with "get" operation or "cas" operations).

16 should be an impossible result, as neither get or cas is called. @omodica, what's your platform?
14 makes sense: the condition for "replace" command is not being met, because no data what to replace exists.
We don't need replace(). Set() does all replace() does, and more. If for some reason we need to know if session is being generated for the first time, then it might be useful. But for now that information is not being needed in any way.

But is checking the error code here meaningful anyway?
Yes.

By "here", I meant the if statement. It would make sense if we do it afterwards, just before calling fail().

"The same" as ... ?

Same as in my first comment on this thread. Like this - and now with spaceholder for error handling:
if($this->_memcached->set($key, $session_data, $this->_config['expiration']))
				{
					$this->_fingerprint = $fingerprint;
					return $this->_success;

				}

				$failure_reason = $this->_memcached->getResultCode();

				// TODO Use $failure_reason to produce better error message
				// Alternatively, $this->_memcached->getResultMessage() may be used

				return $this->_fail();

Set() does all replace() does, and more.

Does it? It is true that I have written all of this code "blindly" and I'm not that familiar with Memcached, but why the hell would replace() exist if set() supersedes it?
I'd comment on the rest of your feedback, but everything else depends on this point. ^

From Memcached documentation:

set
Most common command. Store this data, possibly overwriting any existing data. New items are at the top of the LRU.
replace
Store this data, but only if the data already exists. Almost never used, and exists for protocol completeness (set, add, replace, etc)

So it exist mainly to make their API neat and tidy. Clearly "set" is considered a best practice by Memcached authors.

Great, thanks for clearing that up - it does make the whole thing much simpler too.

Frankly it's been long enough that I have forgotten some of the details but I think it makes sense what you're saying with using set vs replace. @niglu per your question we've been running PHP 5.5.x on Ubuntu and since this issue was closed the Memcached sessions have definitely worked properly for us... so I'd suggest any change be properly tested (and maybe a new issue / PR created).

What is the solution for this warning?
Message: Unknown: Failed to write session data (user). Please verify that the current setting of session.save_path is correct
After reading all of this i didn't catch any solution to fix this warning, please help, it happens on 3.1.6. Thank You

		if ($this->_memcached->get($lock_key))
		{
			sleep(1);
			continue;
		}

		$method = ($this->_memcached->getResultCode() === Memcached::RES_NOTFOUND) ? 'add' : 'set';
		if ( ! $this->_memcached->$method($lock_key, time(), 300))
		{
			log_message('error', 'Session: Error while trying to obtain lock for '.$this->_key_prefix.$session_id);
			return FALSE;

I got problem, Always return FALSE on this part.

Ah i got it,

Message: Unknown: Failed to write session data (user). Please verify that the current setting of session.save_path is correct

It happens because function open is never calling on Session_memcached_driver is never execute. When it actually triggered? I tried to put "$this->open($this->_config['save_path'], '');
" on construct and its never get any error again.
@narfbg please let me know if it correct. If not when function open actually calling?

authors: cmeenatchisundaram erwinsetiawan ghost narfbg niglu omodica shankarbala33 sneakyimp yahyaerturan

repo: bcit-ci/CodeIgniter


text:
guard against illegal positions

Istanbul can sometimes return illegal position values. Clamp them so they can be used by the source map consumer.
See https://github.com/bcoe/nyc/pull/143#issuecomment-173554681 for background.

@novemberborn nice elegant patch :+1:
@albertogasparin would you be able to give this branch a try, and see if it solves your problems?

authors: bcoe novemberborn

repo: bcoe/nyc

license: isc


text:
tostring of response body corrupts download of binary files

Maybe not purpose of the library itself to download binary files but on line 250:
response.body = response.body.toString();
corrupts download of binary files
Ciao!
:m

Just set encoding=null, so that crawler won't try to convert to string.

setting encoding to null trows exception:
TypeError [ERR_UNKNOWN_ENCODING]: Unknown encoding: null
So this is not an option either...

authors: marinovdev mattimatti mike442144

repo: bda-research/node-crawler


text:
Render crash upon adding this mod

Not sure why, but as soon as I added this mod, Minecraft decided working was too good for me. Related crashlog here: http://pastebin.com/fDWCFk5C
As far as I can tell, it's AE2Stuff, which is strange considering how a) I haven't even started AE yet, b) I was in the Twilight Forest and my base is in the overworld, but the only mod referenced is ae2Stuff and adding this mod (and the dependency) was literally the only thing changed when I went from stable to crash.

Please try this build and report if it fixes the crash (or not) - http://jenkins.bdew.net/job/ae2stuff-1.7.10/50/artifact/build/libs/ae2stuff-0.5.0.50-mc1.7.10.jar

Gave it a try - near as I can tell, that's fixed it. Played around in-game for ten minutes, checked the same areas I was in before, mobs, etc, no crashes occurred.

authors: Serifina bdew


text:
🛑 Jenkins is down

In 3481d9b, Jenkins ($SECRET_SITE_1) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Jenkins is back up in 52fa568.

repo: bdlangton/uptime


text:
🛑 NextCloud is down

In 5eb8f1f, NextCloud ($SECRET_SITE_3) was down:

HTTP code: 0
Response time: 0 ms

Resolved: NextCloud is back up in a8d0966.


text:
Bug: starswith is not being respecting in the workflow.

https://github.com/bdougie/awesome-black-developers/tree/main/.github/workflows
if: startsWith(${{ github.event.issue.title }}, "Add handle")

should be
if: startsWith( "Add handle", ${{ github.event.issue.title }})

Great catch!

It looks like it should be if: ${{ startsWith(github.event.issue.title, 'Add handle') }}

authors: bdougie damaneice

repo: bdougie/awesome-black-developers


text:
Only one start/per day

Prevent to user add two record of /work start

Also need to query for the userId.

repo: be-codified/case-study-work-bot


text:
Default Browser Settings not stored

I would like to set Beaker as default browser for hyper:// links. When I click to Settings > General > Default Browser Settings > hyper://, then go outside the General tab, then go back to General tab, I see that the "Default Browser Settings" wasn't updated. It always shows this:
Set Beaker as the default browser for:

[ ] http://
[ ] hyper://
[x] dat://

Operation System: Ubuntu Linux 20.04
Beaker version: recent from git

Are you running from source using npm start? It might be related to that.

Are you running from source using npm start? It might be related to that.

The desktop file wouldn’t be registered in that instance, so that could indeed be the cause of this problem.
There’s no default browser hijack protection system to worry about, as seen on Windows and macOS. However, there also isn’t a good way to do this from within a sandbox. I ’m seeing in Bugzilla that Firefox haven’t been able to fix this problem either.
https://github.com/beakerbrowser/beaker/blob/9239d3b68c58bcaca017e690d36b6080821d472c/app/background-process/browser.js#L288
The above won’t work in Flatpak and Snap. The DOT_DESKTOP_FILENAME file doesn’t exist in these distributions. You’d need to specify the modified desktop files these install instead. These execute flatpak start or snap run instead of the binary directly. And it wouldn’t help anyway as the sandbox would prevent it from making changes to host system.
Maybe hide these options when OS == Linux? Installing the desktop file will add Beaker to the default apps screen on KDE and GNOME. It will also be the default handler for dat: and hyper: by default as there is — presumably — no other apps that register these protocols. You could replace the options with an unconditional call to action: “Please use Beaker as your default web browser! 😍”

Are you running from source using npm start? It might be related to that.

Yes, I run Beaker from source using npm start.

Same issue here: appimage Version: 1.0.0-prerelease.7

Same here as well on Ubuntu 20.04 installed with snap. About to try to build from source.

So I have installed this on two machines and installing with snap, flatpak, and building from source, all with the same problem. I cant see any dat pages and none of the changes i make in settings remain after refresh.

repo: beakerbrowser/beaker


text:
🛑 Thai Translate site is down

In 29fc2db, Thai Translate site (https://thaitranslateby.bezathecat.com/) was down:

HTTP code: 520
Response time: 803 ms

Resolved: Thai Translate site is back up in 64812b6 after 5 minutes.

Resolved: Thai Translate site is back up in 64812b6 after 5 minutes.


text:
There is a problem with the formatted result

Input
The code looked like this before beautification:
# """test"""

for (let i = 0; i < 3; i++) {
            console.log('hello world')
}

Expected Output
The code should have looked like this after beautification:
# """test"""

for (let i = 0; i < 3; i++) {
  console.log('hello world')
}

Actual Output
The  code actually looked like this after beautification:
# ""
"test"
""

for (let i = 0; i < 3; i++) {
  console.log('hello world')
}

Settings
Example:
{
    "indent_size": 2,
    "indent_char": " ",
    "indent_level": 0,
    "indent_with_tabs": false,
    "preserve_newlines": true,
    "max_preserve_newlines": 10,
    "jslint_happy": false,
    "space_after_anon_function": false,
    "brace_style": "collapse,preserve-inline",
    "keep_array_indentation": false,
    "keep_function_indentation": false,
    "space_before_conditional": true,
    "break_chained_methods": false,
    "eval_code": false,
    "unescape_strings": false,
    "wrap_line_length": 0
}

I don't want it to wrap here, can it be done
# "" "test" ""

What part of the javascript spec is # """test"""?

repo: beautify-web/js-beautify


text:
Add support for new record types (cont.)

Description

[X] Source branch in your fork has meaningful name (not main)

Fixes #2062
Continuing from pull request #2099
Before Merge Checklist
These items can be completed after PR is created.
(Check any items that are not applicable (NA) for this PR)

[X] JavaScript implementation
[X] Python implementation (NA if HTML beautifier)
[x] Added Tests to data file(s)
[NA] Added command-line option(s) (NA if
[NA] README.md documents new feature/option(s)

The checklists are done now. Let me know for any updates from your review.
Sorry for a bit messy history while I was trying to rename the commit message.

The make commands are passed on my end now

Delete the .DS_store file, please.

Done, brought it back.. it was deleted accidentally

Well done! Thanks!

authors: antoniusanggito bitwiseman