gstreamermm: 1.10.0 -> unstable-2021-09-15

Description of changes
fix #170186
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Why not just fetchpatch the build fix, or switch to git fully using fetchFromGitLab?

switch to git fully using fetchFromGitLab

too much work, see https://github.com/NixOS/nixpkgs/issues/170186#issuecomment-1115029640

Why not just fetchpatch the build fix

i wanted all 11 commits since 1.10.0
not just https://gitlab.gnome.org/GNOME/gstreamermm/-/merge_requests/4

fixed

I will try to fix the glibmm.

Gave it a try but did not manage to get any further than @austinbutler.
I am still not sure what part is supposed to generate Makefile targets for the cc files, none of the following looks promising:

https://gitlab.gnome.org/GNOME/gstreamermm/-/blob/dfd80ddb4eac02ae6c48a076a9cd9a1dc9e7bed2/gstreamer/src/Makefile.am
https://gitlab.gnome.org/GNOME/mm-common/-/blob/1e163f565e907d71cbec98728aaa74ce2241adaf/am_include/generate-binding.am
https://gitlab.gnome.org/GNOME/gstreamermm/-/blob/dfd80ddb4eac02ae6c48a076a9cd9a1dc9e7bed2/gstreamer/gstreamermm/Makefile.am
https://gitlab.gnome.org/GNOME/mm-common/-/blob/1e163f565e907d71cbec98728aaa74ce2241adaf/am_include/compile-binding.am
https://gitlab.gnome.org/GNOME/gstreamermm/-/blob/dfd80ddb4eac02ae6c48a076a9cd9a1dc9e7bed2/gstreamer/gstreamermm/filelist.am

The files_built_cc defined in the last file only seem to be used in dependencies side of the rules.
diff --git a/pkgs/development/libraries/glibmm/default.nix b/pkgs/development/libraries/glibmm/default.nix
index f409935372e..49c39a8e353 100644
--- a/pkgs/development/libraries/glibmm/default.nix
+++ b/pkgs/development/libraries/glibmm/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, pkg-config, gnum4, glib, libsigcxx, gnome, darwin, meson, ninja }:
+{ lib, stdenv, fetchurl, pkg-config, gnum4, perl, glib, libsigcxx, gnome, darwin, meson, ninja }:

 stdenv.mkDerivation rec {
   pname = "glibmm";
@@ -22,7 +22,15 @@ stdenv.mkDerivation rec {
   buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
     Cocoa
   ]);
-  propagatedBuildInputs = [ glib libsigcxx ];
+  propagatedBuildInputs = [
+    glib
+    libsigcxx
+
+    # For gmmproc
+    (perl.withPackages (p: [
+      p.XMLParser
+    ]))
+  ];

   doCheck = false; # fails. one test needs the net, another /etc/fstab

diff --git a/pkgs/development/libraries/gstreamer/gstreamermm/default.nix b/pkgs/development/libraries/gstreamer/gstreamermm/default.nix
index 3eb8a002c93..3953502ad5b 100644
--- a/pkgs/development/libraries/gstreamer/gstreamermm/default.nix
+++ b/pkgs/development/libraries/gstreamer/gstreamermm/default.nix
@@ -1,8 +1,24 @@
-{ lib, stdenv, fetchFromGitLab, fetchurl, pkg-config, file, glibmm, gst_all_1, gnome }:
+{ lib
+, stdenv
+, fetchFromGitLab
+, fetchurl
+, autoconf
+, automake
+, libtool
+, mm-common
+, pkg-config
+, file
+, glibmm
+, gst_all_1
+, nix-update-script
+}:
+
 stdenv.mkDerivation rec {
   pname = "gstreamermm";
   version = "unstable-2021-09-15";

+  outputs = [ "out" "dev" ];
+
   src = fetchFromGitLab {
     # https://gitlab.gnome.org/GNOME/gstreamermm
     domain = "gitlab.gnome.org";
@@ -12,29 +28,34 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-4VwVyu0RzvtsTq/UWZ3//KCY0qxfMrdqDCpMnEGe9YA=";
   };

-  srcStable = let version = "1.10.0"; in fetchurl {
-    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0q4dx9sncqbwgpzma0zvj6zssc279yl80pn8irb95qypyyggwn5y";
-  };

-  # add generated sources from tarball release: allocator.cc ...
-  postUnpack = ''
-    tar -x --skip-old-files -C source/ --strip-components=1 -f $srcStable
-  '';
+  nativeBuildInputs = [
+    autoconf
+    automake
+    libtool
+    mm-common
+    pkg-config
+    file
+  ];

-  outputs = [ "out" "dev" ];
+  propagatedBuildInputs = [
+    glibmm
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+  ];

-  nativeBuildInputs = [ pkg-config file ];
+  # enableParallelBuilding = true;

-  propagatedBuildInputs = [ glibmm gst_all_1.gst-plugins-base ];
+  preConfigure = ''
+    makeFlagsArray+=("PERL=$(type -P perl)")
+    NOCONFIGURE=1 ./autogen.sh
+  '';

-  enableParallelBuilding = true;
+  makeFlags = "V=1";

   passthru = {
-    updateScript = gnome.updateScript {
+    updateScript = nix-update-script {
       attrPath = "gst_all_1.gstreamermm";
-      packageName = "gstreamermm";
-      versionPolicy = "odd-unstable";
     };
   };

thanks for exploring that rabbithole : )

I am still not sure what part is supposed to generate Makefile targets for the cc files

blame gstreamermm for its' incomplete build files
we need to run ${glibmm}/lib/glibmm-2.4/proc/gmmproc manually, to generate allocator.cc etc

current draft to build from source

/*
nix-build -E 'with import <nixpkgs> {}; callPackage ./default.nix {}'
*/

{ lib
, stdenv
, fetchFromGitLab
, fetchurl
, autoreconfHook
, perl
, mm-common
, pkg-config
, file
, glibmm
, gst_all_1
, nix-update-script
}:

let
  perlWithPkgs = (perl.withPackages (p: [ p.XMLParser ]));
in

stdenv.mkDerivation rec {
  pname = "gstreamermm";
  version = "unstable-2021-09-15";

  outputs = [ "out" "dev" ];

  src = fetchFromGitLab {
    # https://gitlab.gnome.org/GNOME/gstreamermm
    domain = "gitlab.gnome.org";
    owner = "GNOME";
    repo = "gstreamermm";
    rev = "dfd80ddb4eac02ae6c48a076a9cd9a1dc9e7bed2";
    sha256 = "sha256-4VwVyu0RzvtsTq/UWZ3//KCY0qxfMrdqDCpMnEGe9YA=";
  };

  nativeBuildInputs = [
    autoreconfHook
    mm-common
    pkg-config
    file
  ];

  propagatedBuildInputs = [
    glibmm
    gst_all_1.gst-plugins-base
    gst_all_1.gst-plugins-good
  ];

  # enableParallelBuilding = true;

  GMMPROC_DIR = "${glibmm}/lib/glibmm-2.4/proc";
  PERL = "${perlWithPkgs}/bin/perl";

  # must run before autoreconfHook
  postPatch = ''
    autoupdate
    sed -i '/^autoreconf /d' autogen.sh
    NOCONFIGURE=1 ./autogen.sh
  '';

  makeFlags = "V=1";

  passthru = {
    updateScript = nix-update-script {
      attrPath = "gst_all_1.gstreamermm";
    };
  };

  meta = with lib; {
    description = "C++ interface for GStreamer";
    homepage = "https://gstreamer.freedesktop.org/bindings/cplusplus.html";
    license = licenses.lgpl21Plus;
    platforms = platforms.linux;
    maintainers = with maintainers; [ romildo ];
  };
}

still getting
make[2]: Entering directory '/build/source/gstreamer/gstreamermm'
make[2]: *** No rule to make target 'allocator.cc', needed by 'allocator.lo'.  Stop.

Staring at the void some more, apparently the stamps are responsible for creating the .cc files.
I was able to generate the file (gstreamer/gstreamermm/allocator.cc) using:
  preBuild = ''
    make -C gstreamer/src .stamps/allocator.stamp "''${makeFlagsArray[@]}"
  '';

Though it later fails in buildPhase on
In file included from allocator.cc:6:
../gstreamermm/allocator.h:30:10: fatal error: gstreamermm/object.h: No such file or directory
   30 | #include <gstreamermm/object.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~

yay!
had to add
{
  configureFlags = [ "--enable-maintainer-mode" ];

:woman_facepalming: Not sure why I have not tried that.
That one is reported upstream is https://gitlab.gnome.org/GNOME/gstreamermm/-/issues/15 (with no answers).

looks like a version mismatch ...

With a lot of elbow grease: https://gitlab.gnome.org/GNOME/gstreamermm/-/merge_requests/5

thanks : )
errors were
No C++ return translation from GstMiniObject* is defined.
No C++ return translation from GstBufferList* is defined.
No C++ return translation from GstValueArray is defined.
No C++ return translation from GDateTime* is defined.
../gstreamermm/audioconvert.h:17:10: fatal error: gstreamermm/valuearray.h: No such file or directory

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-ready-for-review/3032/844

Can't we fetchpatch the commits?

Looking at the history, we would only need four fetchpatch invocation:

https://gitlab.gnome.org/GNOME/gstreamermm/-/commit/37116547fb5f9066978e39b4cf9f79f2154ad425.patch
https://gitlab.gnome.org/GNOME/gstreamermm/-/commit/20090e4db48fa30e193be2637e881add4cb6d3d4.patch
https://gitlab.gnome.org/GNOME/gstreamermm/-/commit/3f5fe44d45f4c2cefd0731bbd874a9bc9ae2dc5c.patch
https://gitlab.gnome.org/GNOME/gstreamermm/-/commit/4d1efb14d2e99b7525f222a561bb1eb9f4576026.patch

I feel many crate maintainers are way too perfectionist, for example, despite all the developer hours that went into this PR, it took the effort within years to be (halfway) merged. There's always a reason not to merge, isn't there?

so ... what is the "perfect" nix code here?
(because "it works" is apparently not enough for nixpkgs)

{
  src = fetchFromGitLab {
    # https://gitlab.gnome.org/GNOME/gstreamermm
    domain = "gitlab.gnome.org";
    owner = "GNOME";
    repo = "gstreamermm";
    # https://gitlab.gnome.org/GNOME/gstreamermm/-/merge_requests/5
    rev = "89b2ece5cab32b5094686bb96426a004029a9449";
    sha256 = "sha256-b6719eTiBJ21eNA/tgul6GuAkKF0gmsbbG2x9NAtW3s=";
  };

{
  src = fetchFromGitLab {
    # https://gitlab.gnome.org/GNOME/gstreamermm
    domain = "gitlab.gnome.org";
    owner = "GNOME";
    repo = "gstreamermm";
    # https://gitlab.gnome.org/GNOME/gstreamermm/-/merge_requests/5
    ref = "heads/wip/jtojnar/build-fixes";
    rev = "89b2ece5cab32b5094686bb96426a004029a9449";
    sha256 = "sha256-b6719eTiBJ21eNA/tgul6GuAkKF0gmsbbG2x9NAtW3s=";
  };

{
  src = fetchFromGitLab {
    # https://gitlab.gnome.org/GNOME/gstreamermm
    domain = "gitlab.gnome.org";
    owner = "GNOME";
    repo = "gstreamermm";
    # dear nix reader. beware! this is *unperfect* nix code.
    # this src is an *unmerged* upstream PR
    # and if upstream is in a bad mood, they will delete our patch branch,
    # and our perfect little nix world will collapse
    # https://gitlab.gnome.org/GNOME/gstreamermm/-/merge_requests/5
    ref = "heads/wip/jtojnar/build-fixes";
    rev = "89b2ece5cab32b5094686bb96426a004029a9449";
    sha256 = "sha256-b6719eTiBJ21eNA/tgul6GuAkKF0gmsbbG2x9NAtW3s=";
  };

{
  src = fetchFromGitLab {
    # https://gitlab.gnome.org/GNOME/gstreamermm
    domain = "gitlab.gnome.org";
    owner = "GNOME";
    repo = "gstreamermm";
    # base commit of https://gitlab.gnome.org/GNOME/gstreamermm/-/merge_requests/5
    rev = "dfd80ddb4eac02ae6c48a076a9cd9a1dc9e7bed2";
    sha256 = ""; # todo
  };
  patches = [
    # https://gitlab.gnome.org/GNOME/gstreamermm/-/merge_requests/5
    # still not perfect. let's invest another five minutes to refactor the commit hashes
    (fetchpatch "https://gitlab.gnome.org/GNOME/gstreamermm/-/commit/f675074707002c5862fd56b3fb935fa893be9e7a.patch")
    (fetchpatch "https://gitlab.gnome.org/GNOME/gstreamermm/-/commit/5eb8722380d8bb41f7c69fc5cae6bcb42484d926.patch")
    (fetchpatch "https://gitlab.gnome.org/GNOME/gstreamermm/-/commit/89b2ece5cab32b5094686bb96426a004029a9449.patch")
  ];

or use the stable tarball as patch base?
or commit the full patch (vs tarball) to nixpkgs? (as i did in my first draft)
or use a library function to make the code look cleaner? (but under the hood, its doing the same nonsense)

seriously, you guys have waaaay too much time for such nonsense : /

so ... what is the "perfect" nix code here?

I wouldn't call any of these "perfect" (that's not the goal anyway), but solution 4 is by far my preferred one.

At a much higher level, now that I've spent more time looking at this PR: would you mind better motivating this choice?

i wanted all 11 commits since 1.10.0

The issue with gstreamermm not building (#170186) doesn't actually seem to require this at all. In fact, applying a single cherry-picked patch on top of the 1.10.0 release seems to be entirely sufficient to make the derivation build, along with all its current nixpkgs dependencies (i.e. nixpkgs-review is clean).
This is what I've tested on my side: https://github.com/delroth/nixpkgs/commit/a9f5b7dbfe16c81a026946f2c9931479be31171d

would you mind better motivating this choice?

i wanted all 11 commits since 1.10.0

generally

i prefer a fixed HEAD over a buggy stable
building from git source makes it easier for nixpkgs users to build a custom git version

specifically

Gst::BaseTransform: fix copy_metadata_vfunc memory leak

fixing a memleak sounds important

Gst::BaseTransform: pass writable buffer to transform_ip function

bugfix - also important

Gst::AudioBaseSink: increase refcount of returned buffer in create_ring_buffer()

looks like a bugfix

Remove the trailing semicolon in videoinfo.hg, to get rid of double semicolons...

cosmetic

Change the parameter names of constructors, to prevent member shadowing in value.hg.

looks like a bugfix

Change the parameter names of constructors, to prevent member shadowing in iterator.hg

looks like a bugfix

Replace Bugzilla by Gitlab URL in DOAP file

cosmetic

Fix build against glib 2.68

bugfix. hard requirement to fix build

I would fetch master here. Nothing really happened in the last 4 years since the last tag.

Master does not build without the patch from my unmerged MR.

Then I would suggest to use master plus that patch.

Then I would suggest to use master plus that patch.

that's what i'm doing in
{
  src = fetchFromGitLab {
    # https://gitlab.gnome.org/GNOME/gstreamermm
    domain = "gitlab.gnome.org";
    owner = "GNOME";
    repo = "gstreamermm";
    # https://gitlab.gnome.org/GNOME/gstreamermm/-/merge_requests/5
    rev = "89b2ece5cab32b5094686bb96426a004029a9449";
    sha256 = "sha256-b6719eTiBJ21eNA/tgul6GuAkKF0gmsbbG2x9NAtW3s=";
  };

(and i dont see why fetchFromGitLab + fetchpatch + fetchpatch + fetchpatch would make this "better")

testing the runtime is on my todo list ...

$ nix-review pr 171274

4 packages built:
gst_all_1.gstreamermm mapmap obs-studio-plugins.obs-gstreamer subtitleeditor

these apps build and run: subtitleeditor mapmap obs
subtitleeditor looks broken, as it starts an external video player
but that is expected, as subtitleeditor has no internal video player
(that's why i switched to the gaupol subtitle editor)
mapmap and obs run, but i cannot test, as i have no webcam

This is what I've tested on my side: delroth@a9f5b7d

also builds and runs

$ nixpkgs-review wip -r https://github.com/delroth/nixpkgs -b gstreamermm-build-fix

does not build subtitleeditor (or any other child packages) → nix-shell
# shell.nix
{ pkgs ? import <nixpkgs> {} }:
let
gstreamermm = pkgs.gst_all_1.gstreamermm.overrideAttrs (old: {
  # https://github.com/NixOS/nixpkgs/pull/171274#issuecomment-1119011973
  patches = [
    # For GCC11 compatibility.
    (pkgs.fetchpatch {
      url = "https://gitlab.gnome.org/GNOME/gstreamermm/-/commit/37116547fb5f9066978e39b4cf9f79f2154ad425.patch";
      sha256 = "sha256-YHtmOiOl4POwas3eWHsew3IyGK7Aq22MweBm3JPwyBM=";
    })
  ];
});
in
pkgs.mkShell {
buildInputs = with pkgs; [
  (subtitleeditor.override { gst_all_1 = pkgs.gst_all_1 // { inherit gstreamermm; }; })
];
}

This seems to be fixed upstream now.


Warnings from assembly files in golang.org/x/*

When run on projects that refer to x/sys or x/crypto, go-licenses prints warnings like:
W0329 16:23:18.204626  221077 library.go:86] "[golang.org/x/sys/unix](http://golang.org/x/sys/unix)" contains non-Go code that can't be inspected for further dependencies:
/home/drigz/go/pkg/mod/[golang.org/x/sys<EMAIL_ADDRESS>
It might print 10-20 warnings per run, which can be confusing the first time you see them, but the tool is operating as expected as these files don't introduce external dependencies (as far as I'm aware - I'm not sure how go mod would handle an external dependency from a non-go file).
This doesn't block use of the tool but it's nice to avoid printing warnings in the normal case, as it teaches people to ignore warnings.
I can imagine the following alternatives although I'm not sure how to choose between them:

Completely ignore OtherFiles: go mod will ignore these files so they are unable to pull in external dependencies. Instead, those projects should vendor the external dependencies and record this in their LICENSE file.
Ignore .[sS] files in OtherFiles, as assembly doesn't have a way of modelling external dependencies, whereas plausibly other files might.
Ignore a hardcoded list of .[sS] files from golang.org/x/*, after manually reviewing them to check that they don't have external dependencies.
Allow the user to ignore individual files with a similar approach to the --ignore flag in #46. This would allow users to record in a script which files they have manually reviewed. This would be useful if we expect users to manually review these files, rather than ignoring the warnings.

I do not know how I would review the files listed in the "non-Go code" warning for external dependencies that should be listed. For example, asm_linux_amd64.s has no reference to an external repository (that I can see), but includes textflag.h, which has the same license header. Is this sufficient to conclude that the warning can be ignored? What is the user expected to do when they see this warning? Can it be automated?

Good points raised for "ignorable warnings teaches people to ignore all warnings".
I think the main decision comes from -- "how does OtherFiles include extra dependencies into the built go binary?"

Ignore .[sS] files in OtherFiles, as assembly doesn't have a way of modelling external dependencies, whereas plausibly other files might.

I have never worked with Go + assembly files, but if this is true, we can safely ignore .[sS] files then.

I too am unsure, so I sent a question to https://groups.google.com/g/golang-nuts (I guess it's waiting to get through moderation at the moment).

I got an answer to this on an intranet message board:

If you are building using go build, then an assembly file can't introduce additional dependencies.
In general, as you suggest, the go tool will only pull in new dependencies based on the contents of Go files. The go tool is aware of non-Go files, and it will build them, but it will never use them to identify dependencies.
That said it's perhaps worth noting that although the go tool won't pull in dependencies because of a C file, a C file can of course #include and link against libraries that are already installed on your system. The go tool won't bring them in, but if they are already there then it is possible that it will build a binary that uses them.

I would expect that for .s files we can skip the warning. For other suffixes including .S, the C preprocessor might include otherwise-licensed files from the host filesystem, so we could like to a README entry that describes this. How does that sound?

That sounds good!
Ideally, we can link to a public go documentation for this, but I think it's optional.

Is there any workaround for this? Is it possible to ignore .s files with current release?
Thanks.

I'm afraid not, I never got around to implementing the suggested approach :(

Has there been any work done here?


discussion: list of sentences, blurbs, quotes ideas etc

this discussion is for brainstorming app names, logos, quotes, tips etc
anything that has to with the app and sentences go here
for example, i think adding tips would be a decent idea
everytime you load up you query a tips api endpoint and it gives you a college tip : "you're not as good at cooking as you think you are" or "remember, bacon sets off fire alarms"

can find a lot of these from peoples stories about college and then make a funny tip out of it ...

app name idea RoomU : simple, but that looks like a UofU app name right?

app name idea DormBuddy : I like this one

DormParty, DormDays

DormHub


pcap_breakloop() with indefinitely-blocking captures

There's currently no way to break a blocking pcap receiver loop in the Rust wrapper, and it's not clear how one would go about implementing such a thing (without adding a bunch of unwanted overhead).
Applications can call pcap_breakloop() to request that the loop be terminated, this however does not actually break a blocking receiver, it just sets a flag to indicate that the loop should terminate.  Whatever platform-specific mechanism is available to unblock a syscall must be used in conjunction with pcap_breakloop().  On unixy platforms this would typically mean that another thread uses signals (without SA_RESTART) to wake the blocking thread.
Calling pcap_breakloop() from a different thread has some pretty nasty implications -- most notably that pcap* must exist in two threads.
We could add a nice - safe - abstraction to solve all of this, but it would - as mentioned above - involve some unwanted overhead, and beside that it would likely involve some design time.
Another way is to simply allow the application to solve these issues themselves, but it's currently not possible because we don't expose what the application needs.
I suggest that we expose some means for an application to call pcap_breakloop() through some unsafe interface.  Either we expose a means to get a raw pcap* and expose a pcap_breakloop(), or we add something like:
struct BreakLoop {
  pcap: *const pcap_t
}
impl BreakLoop {
  unsafe fn trigger(&self) {
    pcap_breakloop(self.pcap);
  }
}

The pcap_breakloop() manpage mentions breaking pcap loops from other threads, so it's designed to allow this.
To be clear, developers can use timeouts and poll a termination request flag; but I think we should offer developers the building blocks to enable a non-polled mechanism for terminating capture loops.

https://github.com/rust-pcap/pcap/pull/310 is about adding pcap_loop, since we don't use it in pcap yet I don't understand your issue

Oh, right -- I thought pcap_loop() was already implemented -- sorry, for some reason I was convinced I had seen it.
We have some legacy C and C++ code that we're looking to port to Rust, and the first step is to do as "straight" port as possible.  Some of the projects use pcap_loop on one thread and uses signals & pcap_breakloop() from a different thread to terminate the loop; I want whoever ports the code to be able to do the same in Rust.
So basically, once we have pcap_loop() I'll want pcap_breakloop() as well. :)

As of 1.3.0 pcap_loop is available via the for_each call. I think your simple trigger idea is good. I would only ask to hide it behind a feature as I would hope that eventually somebody can propose the nice abstraction you speak of after having used the simple solution. If you would like to submit a PR for that, it would be welcome!

Applications can call pcap_breakloop() to request that the loop be terminated, this however does not actually break a blocking receiver, it just sets a flag to indicate that the loop should terminate. Whatever platform-specific mechanism is available to unblock a syscall must be used in conjunction with pcap_breakloop().

In more recent versions of libpcap pcap_breakloop can actually wake up the blocked thread in some cases (specifically, this works on Linux when doing network capture; see start of https://www.tcpdump.org/manpages/libpcap-1.10.4/pcap_breakloop.3pcap.html).

#310 is about adding pcap_loop, since we don't use it in pcap yet I don't understand your issue

pcap_breakloop is also useful to interrupt a call to pcap_next_ex if there are currently no packets being received (on several platforms, including Linux, pcap_next_ex will block indefinitely if there are no packets received).

I propse adding a lock that protects calls to pcap_breakloop and pcap_close, to ensure they don't overlap and that pcap_breakloop is not called after pcap_close. The implementation would look approximately like this:
pub struct BreakLoop {
    handle: NonNull<raw::pcap_t>,
    handle_valid: Arc<RwLock<bool>>,
}

impl BreakLoop {
    pub fn trigger(&self) {
        if let Ok(handle_valid_guard) = self.handle_valid.try_read() {
            if *handle_valid_guard {
                unsafe { raw::pcap_breakloop(self.handle.as_ptr()) };
            }
        }
    }
}

pub struct Capture<T: State + ?Sized> {
    nonblock: bool,
    handle: NonNull<raw::pcap_t>,
    /// Indicates if the handle has been deallocated. This is only set to false when this capture is dropped.
    handle_valid: Arc<RwLock<bool>>,
    _marker: PhantomData<T>,
}

impl<T: State + ?Sized> Drop for Capture<T> {
    fn drop(&mut self) {
        // This is the only place where handle_valid is locked for writing, so if the lock is poisoned then something is deeply wrong, best to just panic
        let mut handle_valid_guard = self.handle_valid.write().unwrap();
        *handle_valid_guard = false;
        unsafe { raw::pcap_close(self.handle.as_ptr()) }
    }
}

The main drawback as far as I can tell is that BreakLoop.trigger is not safe to call inside a signal handler (because another signal could interrupt the locking or unlocking operation and corrupt the internal state of the lock). In practice this probably won't matter too much, because writing signal handlers that run custom code is discouraged in Rust, because of the large number of potential safety issues surrounding it.

We have some legacy C and C++ code that we're looking to port to Rust, and the first step is to do as "straight" port as possible. Some of the projects use pcap_loop on one thread and uses signals & pcap_breakloop() from a different thread to terminate the loop; I want whoever ports the code to be able to do the same in Rust.

I have the exact same use-case. Given the absence of pcap_breakloop what are my other options to stop an already running (indefinite) packet capture (either running a synchronous or a PacketStream based packet capture)?
Also, referring to @FeldrinH's code snippet above
pub struct BreakLoop {
    handle: NonNull<raw::pcap_t>,
    handle_valid: Arc<RwLock<bool>>,
}

How would this approach work if we need to invoke pcap_breakloop from some other thread, given that the existing raw::pcap_t is not Send or Sync?

According to pcap documentation it is safe to call pcap_breakloop from other threads. Since that is the only function that BreakLoop uses the raw::pcap_t for it should be fine to just do unsafe impl Send for BreakLoop.


feat: repositories page styling updates with extended BranchSelector functionality

Description:
This pull request introduces the following changes:

Enhancement and revision of the color palette: Expands and adjusts the existing color palette to align with updated design requirements.
Refactoring, expansion, and bug fixes in component styles: Updates styles for multiple components, including Badge, Button, BranchesList, Pagination, SearchBox, Skeleton, StakedList, DropdownMenu, Tabs, and Text to improve consistency and usability.
Styling updates and fixes for the Repositories page: Implements design-based updates and corrections to enhance visual consistency. – Preview
Extension of functionality for the Branch Selector component: Adds new features and improves the component's functionality. – Preview

Screenshots:
Repositories page

Branch Selector

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.:x: andrewgolovanov:x: 3emYou have signed the CLA already but the status is still pending? Let us recheck it.

Currently this PR contains breaking changes in the contracts of some components. This will break Gitness.
Let's discuss today around what process we will need to follow to manage these contract changes smoothly.

This pull request has been automatically closed due to 30 days of inactivity. If you believe this was done in error, please feel free to reopen the PR or reach out to the BT team for further assistance. Thank you for your contributions!


[Snyk] Security upgrade com.nimbusds:nimbus-jose-jwt from 9.35 to 9.37.2

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to fix one or more vulnerable packages in the `maven` dependencies of this project.
Changes included in this PR

Changes to the following files to upgrade the vulnerable dependencies to a fixed version:

pom.xml

Vulnerabilities that will be fixed
With an upgrade:

Severity
Priority Score (*)
Issue
Upgrade
Breaking Change
Exploit Maturity
Reachability

575/1000  Why? Recently disclosed, Has a fix available, CVSS 7.5
Allocation of Resources Without Limits or Throttling SNYK-JAVA-COMNIMBUSDS-6247633
com.nimbusds:nimbus-jose-jwt:  9.35 -> 9.37.2
No
No Known Exploit
No Path Found

(*) Note that the real score may have changed since the PR was raised.
Check the changes in this PR to ensure they won't cause issues with your project.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
🛠 Adjust project settings
📚 Read more about Snyk's upgrade and patch logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Allocation of Resources Without Limits or Throttling

Fixed in https://github.com/swedenconnect/algorithm-registry/pull/27


Create a menubar app

Nice one!
I think a menubar app for macOS would be nice.
If anyone wants to try electron out. There's a boilerplate app that could be used here:
https://github.com/maxogden/menubar
I think the wrapping would be rather easy 🙏

Oh this is a great idea! I'd be more than open to a PR if you want to explore it 👍


⚠ Update to Ruby 2.3.1 - Update circle config - Wait until CF is updated

⚠  Do not merge until the buildpack in CloudFoundry is updated ⚠

Update code to run in Ruby 2.3.1
Update config of circle.yml file

@theharq needs rebasing, and CF is now updated

 Upgrade ruby version to 2.3.1 after buildpack updated


Will there be any open source communication options?

Currently only Discord and Reddit are listed, but these bifurcate the community on lines of privacy, accessibility, and philosophy (open source tools for open source formats).

Is the bridge down?

For communication around libjxl, there's of course also github.

That's a bit ironic, as GitHub isn't really accessible either. It's similar in vein to Discord, being proprietary and discriminatory in nature. It took me 2 years to sign up on GitHub because their captcha system is absolutely broken. I wish mailing lists, IRC, and XMPP would make a comeback in more portions of the free software community.


CLOUDP-47296: Add help flag

Users can pass either a --help or -h flag to get a nice description (with the current version) of the broker with some helpful links. We should also add links to the third-party notices once they are available in the docs.

Should we add a --version flag as well?

Added!

Reverted commit for passing version as argument to build script.
@BenElgar:

I think the build script should determine the version
The reason being is that people should be able to build a production binary at any time, off any version of the codebase
and they shouldn’t have to provide a meaningless version number to do so
it also prevents the binary from having a bad version number because it was passed incorrectly


A bunch of little analysis cleanups

Some of these I'd been meaning to do for a while and just never got around to. Others are my own ultra nitpicks that I could never feel OK actually leaving in a review, but still want to make anyways :-P
r? @emilio

@bors-servo r_

:pushpin: Commit 24ece6d has been approved by emilio

:lock: Merge conflict

:umbrella: The latest upstream changes (presumably #827) made this pull request unmergeable. Please resolve the merge conflicts.

Thanks for the speedy review :)
@bors-servo r=emilio

:pushpin: Commit faebc0c has been approved by emilio

:hourglass: Testing commit faebc0c74886ebec7c48ea5058082a7f2781fb51 with merge 680094a8697547c80cbe4b036bd9b77b039c116f...

:sunny: Test successful - status-travis
Approved by: emilio
Pushing 680094a8697547c80cbe4b036bd9b77b039c116f to master...


Need to change icons of wallet detail screen

Currently we are using Bitcoin Tribe icons for all the wallet details screen which is not correct .... we can use the coin of wallet we are using on Home Screen

Resolved,

Completed 1.2.1 (326)


Git blame: Off by one row

It seems to consistently be off by one row. I dont get a blame line on the top row, and then it is off by one on the following rows. Hopefully it is easy to reproduce. If it is not, I might be able to create a repo where it is reproducable.

right, ty


Offer quantization-based algorithm as an alternative

I have started implementing a second algorithm in the proposed-algorithm branch, as described in creating center-weighted linear gradients with variable-width stops.
As December is a terribly busy month I have opened this ticket to collect thoughts on GitHub rather than Twitter.
What work is still to be done on the branch?

[ ] Finding a name for the second algorithm, preferably a single word.
[ ] Making the number of extracted color stops variable, as well as the size of the color palette, and creating options for both.
[ ] Exporting both algorithms as functions and making opts.algorithm accept a function.

Sounds good to me, I think we can probably extract out the algorithms into a separate module afterwards? 😄

Separate npm modules? Great idea!
But then we have to find yet two more names 😄

I was thinking resemble-image which is currently free. 😄

Quick Update
There is now a resemble-image package with just the two algorithms.
I hope to find some time in the next month or so to open a pull request. If someone else can do it earlier there'd be no hard feelings, though ;)


HTTP push fails with Error 500

Hi all,
I am trying to upload an insanely oversized repo (ex SVN) using plain http to my freshly installed gitea 1.0.1. on windows, installed as a service. Smaller repos worked fine.
$ git push mine --all
Counting objects: 85538, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19927/19927), done.
Writing objects: 100% (85538/85538), 1.99 GiB | 11.15 MiB/s, done.
Total 85538 (delta 69000), reused 79958 (delta 64546)
error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 Internal Server Error
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
Everything up-to-date

http.log:
2017/02/28 13:06:12 [...routers/repo/http.go:385 serviceRPC()] [E] fail to serve RPC(receive-pack): exit status 128

Other logs did not show correlated events.
It seems I am hitting some POST size limit. Is it possible to adjust this limit?
(I know how to organize repos better and smaller in general...)

This is an known issue #218 and should be resolved by #1030 which has been merged to v1.1.

Sorry I didn't find it, thanks a lot!


Warning: Executable "flutter_distributor" runs "bin/main.dart", which was not found in flutter_distributor.

binary is missing?
...
Installed executable flutter_distributor.
Warning: Executable "flutter_distributor" runs "bin/main.dart", which was not found in flutter_distributor.
Activated flutter_distributor 0.0.9.

~ > dart --version
Dart SDK version: 2.15.1 (stable) (Tue Dec 14 13:32:21 2021 +0100) on "linux_x64"

Need to configure environment variables
export PATH="$PATH":"$HOME/.pub-cache/bin"

I have it

~ > echo $PATH                                                                                ± master | 27 Dec 06:14:45 (1)
/home/user/.asdf/shims:/home/user/.asdf/bin:/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/home/user/.local/share/flatpak/exports/bin:/var/lib/flatpak/exports/bin:/opt/flutter/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/plan9/bin:/home/user/bin:/home/user/.pub-cache/bin:/home/user/.dcli/bin:/home/user/.cargo/bin:/home/user/.go/bin:/home/user/.poetry/bin

Try
which flutter_distributor

I reinstall it and now it works for some reason

Thank you for trying again, please feel free to give us feedback if you have any questions


[AppBar] Title typography is too small

I have updated my app to the latest beta and now the typography of the title in the AppBar has changed. In this demos the title is shown correctly, but if you open them in the code sandbox the title looks like this.

[x] I have searched the issues of this repository and believe that this is not a duplicate.

Expected Behavior

The title should look like this:

Current Behavior

The title looks like this:

Steps to Reproduce (for bugs)

Codesandbox link here.

Simply insert any AppBar example of the demo site with a title.

Context

It's a bug.
Your Environment

Tech
Version

Material-UI
1.0.0-beta.32

React
16.2.0

browser
64.0.3282.140

Upgrade to 1.0.0-beta.32, your demo is using 1.0.0-beta.31. https://codesandbox.io/s/1ym14opk04


upgrading acs-aem-commons-content version from 1.10.2 to 3.3.0

We are in a process of upgrading AEM 5.6.1 to 6.2. Along with that we are also upgrading acs-aem-commons package to 3.3.0 from 1.10.2. We are using many of the widgets provided by acs-aem-commons. After the upgrade the page does not even loads. Please let me know if there is a roadmap for this upgrage?

Version 3.3.0 works with AEM 6.2

Closing this issue as it is extremely vague and unqualified. Please create an issue which describes in detail the specific problem you are having and includes steps to reproduce.

I could see an error while rebuilding the clientlib
building /etc/clientlibs/acs-commons/vendor/angularjs/v1.3/modules/ng-storage.min.js...error: java.io.IOException: Error while reading cached library: javax.jcr.RepositoryException: Error during assembly of /etc/clientlibs/acs-commons/vendor/angularjs/v1.3/modules/ng-storage.js

As I said, please create a new issue with the steps to reproduce.


pilot-postsubmit.sh fails with: bin/toolbox/pkg_coverage.sh no such file

https://k8s-gubernator.appspot.com/build/istio-prow/pilot-postsubmit/87/
W0830 20:13:30.694] prow/pilot-postsubmit.sh: line 57: bin/toolbox/pkg_coverage.sh: No such file or directory
E0830 20:13:30.694] Build failed
I0830 20:13:30.694] process 348 exited with code 1 after 2.5m
E0830 20:13:30.695] FAIL: pilot-postsubmit

@chxchx Could you please look into this ?

@yutongz has been working on a fix but have a hard time merging since pilot/master has been red. He will take over from here.

it seems the UI showing an outdated branch is missing in pilot repo
is there a / command to rebase a PR - seems there is  some chicken and egg / deadlock where the presubmit fails because it needs rebase but it won't rebase because the pre submit failed ?
talking about https://github.com/istio/pilot/pull/1168

Need rebase should not be the reason for the presubmit failure. As we mentioned couple times before: Prow will rebase before run tests:
https://github.com/istio/test-infra/tree/master/mungegithub#stage-two
If you take a look at full logs, you can see the rebase processes:
https://k8s-gubernator.appspot.com/build/istio-prow/pull/istio_pilot/1168/pilot-presubmit/808/
https://k8s-gubernator.appspot.com/build/istio-prow/pull/istio_pilot/1168/pilot-presubmit/809/
I am with, I am also confused why I rebased and then it passed. But it seems pilot-presubmit is flaky? I don't know. Let's rerun presubmit multiple times to find it out.

I didn't know prow silentely rebased, my bad. maybe that's why I have a pr with a mysterious error.
maybe having some indication or way to actually do the rebase would help the humans.
this being said we should keep the UI anyway - specially given pilot bots have been "disabled"

/close


[RFC (Sorta)] Camelizing Engine Config is Annoying, Let's Not

In parent application's we're asked to build out engine configurations using camelized package names. This is both surprising, and awkward — especially for scoped packages. Surprising because our packages already have names used by NPM/Yarn, e.g. "my-blog", or "my-super-awesome-engine". Awkward for scoped packages, e.g. given "@precision-nutrition/my-engine" becomes "@precisionNutrition/myEngine". Both require me to internalize camelization rules.
I hereby propose that we deprecate camelized engine names in the parent configs in favour of their natural package names.
Before
const engineConfig = {
  '@precisionNutrition/myEngine': {
    // snip snip snip
  },
};

After
const engineConfig = {
  '@precision-nutrition/my-engine': {
    // snip snip snip
  },
};

Alternatives
Beef up the documentation so that scoped package users aren't spelunking the code to figure out why things aren't working.

@jherdman I thinks that it already works right now after this https://github.com/ember-engines/ember-asset-loader/pull/63

👋! I just ran into an "issue" as well because of this. I couldn't get a dependency injection to work as ember-engines camelizes the engine's name (my engine's name contains a scope as well). I'm also in favour of dropping this and have users define the correct name themselves.
Can I help with this?

@bertdeblock personally I totally agree, that this is annoying. A PR changing this would surely be appreciated. I will also bring this up in the next ember-engines dev meeting on Friday next week. You'd also be welcome to join yourself!
As for the PR, I think we need to still support the old way, but issue a deprecation warning, when we detect its usage.

@buschtoens I'd be happy to help with this. I already had something working locally to support both options actually, but I didn't create a PR yet because I wasn't sure if a change like this requires an RFC of some sort.

I think it does not require a fully-fledged RFC, as it doesn't really change anything in the framework core, I believe. And it's not a breaking change yet, but just a deprecation, it's also fine. But @rwjblue and @dgeb be the judges on this.
If you can hold out until next week Friday, I'd love for you to join our meeting and we can also discuss it more "officially".

As for the PR, I think we need to still support the old way, but issue a deprecation warning, when we detect its usage.

I fully support this approach. We should deprecate camelized names in favor of using exact package names.

I think it does not require a fully-fledged RFC, as it doesn't really change anything in the framework core, I believe. And it's not a breaking change yet, but just a deprecation, it's also fine.

I agree here as well.

I think it does not require a fully-fledged RFC, as it doesn't really change anything in the framework core, I believe. And it's not a breaking change yet, but just a deprecation, it's also fine.

I fully agree!
Feel free to create a PR @bertdeblock I'd love to review that

Happy to create one when I find some time in the coming days 👍


[BUG] - Table

NextUI Version
2.4.6
Describe the bug
ReferenceError: Can't find variable: useMemo
ReferenceError: Can't find variable: args
Your Example Website or App
No response
Steps to Reproduce the Bug or Issue
In terminal we got the error
Expected behavior
I expected proper table
Screenshots or Videos
No response
Operating System Version
macOS
Browser
Chrome

Please share your code. Probably you missed the import.

import React from "react";
import {Table, TableHeader, TableColumn, TableBody, TableRow, TableCell, getKeyValue, Spinner} from "@nextui-org/react";
import {useAsyncList} from "@react-stately/data";
export default function App() {
const [isLoading, setIsLoading] = React.useState(true);
let list = useAsyncList({
async load({signal}) {
let res = await fetch('https://swapi.py4e.com/api/people/?search', {
signal,
});
let json = await res.json();
setIsLoading(false);
  return {
    items: json.results,
  };
},
async sort({items, sortDescriptor}) {
  return {
    items: items.sort((a, b) => {
      let first = a[sortDescriptor.column];
      let second = b[sortDescriptor.column];
      let cmp = (parseInt(first) || first) < (parseInt(second) || second) ? -1 : 1;

      if (sortDescriptor.direction === "descending") {
        cmp *= -1;
      }

      return cmp;
    }),
  };
},

});
return (
<Table
aria-label="Example table with client side sorting"
sortDescriptor={list.sortDescriptor}
onSortChange={list.sort}
classNames={{
table: "min-h-[400px]",
}}
>

Name

Height

Mass

Birth year

<TableBody
items={list.items}
isLoading={isLoading}
loadingContent={}
>
{(item) => (

{(columnKey) => {getKeyValue(item, columnKey)}}

)}

);
}

https://codesandbox.io/p/devbox/immutable-moon-rrfcm6?file=%2FApp.jsx%3A5%2C18&utm_medium=sandpack

Please share your code. Probably you missed the import.

I checked your code. It's not related to NextUI at all.

ReferenceError: Can't find variable: useMemo

You can either import from react like import {useMemo} from "react"; or use React.useMemo

ReferenceError: Can't find variable: args

I can't see you've defined args.

I checked your code. It's not related to NextUI at all.

ReferenceError: Can't find variable: useMemo

You can either import from react like import {useMemo} from "react"; or use React.useMemo

ReferenceError: Can't find variable: args

I can't see you've defined args.

I checked your code. It's not related to NextUI at all.

ReferenceError: Can't find variable: useMemo

You can either import from react like import {useMemo} from "react"; or use React.useMemo

ReferenceError: Can't find variable: args

I can't see you've defined args.

I checked your code. It's not related to NextUI at all.

ReferenceError: Can't find variable: useMemo

You can either import from react like import {useMemo} from "react"; or use React.useMemo

ReferenceError: Can't find variable: args

I can't see you've defined args.

I know the solution but I am asking you to update your code. https://nextui.org/docs/components/table

Okay. You could've mentioned here at the first place. Will update it soon.


baseUri should not be required

According to the RAML spec (https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/#base-uri-and-base-uri-parameters) the baseUri key is optional, but ramlfications validate fails if it is missing

+1

ramlfications does not support RAML 1.0 yet. RAML 0.8 specs say that baseUri is required after implementation.

Good point!
But that does mean ramlfications is targeting implemented API's, and not to develop new ones.
Since this is a "Reference implementation", it would be nice to have it support for both.

Even better point!
There should be some sort of flag or option to set the level of strictness.


graphql_ppx code gets confusing hints

plugin version:
0.51
Description
This can be reproduced here https://github.com/Coobaha/reasonml-idea-plugin-graphql-ppx-issue

yes, the ppx makes things confused.I'm not even sure what the correct types are.

In 0.722, display the signature of the generated 'make' function.


Update Blog “test1”

Automatically generated by Netlify CMS

👷 Deploy Preview for quiet-chimera-c1d66f processing.

Name
Link

🔨 Latest commit
ba79dd2e2481fadb11c8b344c5a7e0da0b3bec1c

🔍 Latest deploy log
https://app.netlify.com/sites/quiet-chimera-c1d66f/deploys/64e2866e9267c80008e14757


Errors seen when clicking on knowledge or files when there is no chat done yet.

Steps to reproduce the problem:

Create an agent.
Publish url.
Use the published url to launch chat with this agent

Notice that errors are seen when clicking on knowledge or files when there is no chat done yet.
https://github.com/user-attachments/assets/19e8ea65-1e93-4c7e-bb67-ecc8c72e344e

This issue is not seen anymore when testing with latest builds.


Memory is not released

I start it from a collectionView with 100+ images, someone bigger than 5MB
SKPhotoBrowser(originImage: images[indexPath.row].underlyingImage, photos: images, animatedFromView: cell)
when select a cellview the browsers shows but when I scroll the images the memory occupation continues to increase until the app crashes for excessive memory usage (500+MB)
the memory of the not visible images don't seem to be released and neither the browser itself when closed
using ios 10.3.2

+1

+1

@rogomantik did you solve this problem?

@alexanderkhitev no. I'm using https://github.com/thiagoperes/IDMPhotoBrowser with various modifications. I also tested https://github.com/CodeEagle/SSImageBrowser but have the same memory issues. Probably the problem is Swift related

@rogomantik thanks for response. I'm sure this is not not a Swift problem.

Same issue here, it most like fixed for latest
https://github.com/suzuki-0000/SKPhotoBrowser/issues/294


Safari: not honoring  in dynamic imports in inlined modules

https://bugs.webkit.org/show_bug.cgi?id=201692
Description is an extraction from comments in the bug (only dynamic imports, inlined modules).
Today I bumped into that problem myself

Thanks!


Write an user testing guide

Dandelion User Testing & Feedback
Hi!
We are excited to share the work we have been doing on Dandelion, an Aragon organization template and set of apps that is inspired by the Moloch DAO mechanism design.  If you are interest in being an early tester and providing feedback before our mainnet release please continue reading! :)
If you haven't already done so, I recommend reading our the Dandelion overview post, which explains the how the different apps work together and how the overall template compares to the original Moloch design.
To facilitate testing on rinkeby we have created a shared testing org, as well as an onboarding flow for creating your own org on rinkeby.
In order to test you will need some Rinkeby ETH, you can get some using the Rinkeby: Authenticated Faucet, or simply hop on our keybase and I can send you some.  You will also need to make sure your web3 provider (eg metamask) is connected to Rinkeby test network.
Step 1: Creating a test organization
Navigate to preview.1hive.org and select create new organization. Scroll through the available templates until you find the Dandelion org.
You'll need to provide some details related to the parameters of the applications. Most of it should be self-explanatory, but if you find anything confusing please make a note and share with us.
You will be prompted to provide a payment token to use with the Lock app, Token Request app, and Redemptions app. Since this is on Rinkeby you may want to use a standard test token that can easily be acquired by yourself or other members of your organization.  You can get "test" ANT and DAI at the test token faucet provided by Aragon Black.
Step 2: Token Request Flow
In order to join a dandelion org a user must request tokens. This is a multi-step process where a user submits a request and deposits tokens, then an existing member must submit the request to the voting queue. If accepted the deposit will be transferred to the vault and there requested tokens will be minted for the user.
You can try this process out, including some specific edge cases, if a user submits a request, they can withdraw their deposit at any time, but if their request is approved, tokens will not be minted unless the deposit is still available to transfer to the org.
Step 3: Creating Votes and Locking Tokens
Only existing members of the org have the permission to create votes, and each time a member creates a vote they are required to lock a configurable number of tokens for a configurable amount of time. Additionally, if a specific member tries to submit another vote while a lock is still pending the amount of tokens and duration will increase with each subsequent lock created.
This is a bit different than the anti-spam mechanism in Moloch but serves a similar functional purpose. Since proposals are processed in sequence, an individual pays an increasing cost the more actions they add to the queue.
As you submit votes, you will be required to lock tokens, you can view the status of your locked tokens using the "time lock" app, and withdraw your tokens once the locks expire.
Step 4: Voting and Redemptions
Similar to Moloch members can redeem their tokens for a proportional share of the organizations treasury, unless they have voted yes in a pending vote.
To accomplish this we have forked the standard Aragon voting app to ensure that votes are processed sequentially with predictable time between each vote, that votes cannot be executed early, and whenever a user votes yes on a proposal the event is timestamped. Additionally we have created an ACL oracle which restricts redemptions based on this timestamp. As a result if you vote yes you should not be able to redeem tokens until that vote has been fully processed.
Known Issues
* Currently there is limited information about a token request shown to voters. We have submitted an upstream PR to radspec to enable us to include additional information, which should be included soon. In the meantime it is required that voters look at the ID and cross-reference the request in the token request app. We will also include deep linking to requests, when that pattern gets added to aragonJS in the near future. [Include more information about the request to voters · Issue #56 · 1Hive/token-request-app · GitHub](https://github.com/1Hive/token-request-app/issues/56)
* Currently you cannot make a token request and provide 0 tribute. We plan to resolve this issue before launch. [Allow users to create a request that offers 0  token · Issue #70 · 1Hive/token-request-app · GitHub](https://github.com/1Hive/token-request-app/issues/70)
* Dandelion Voting uses blocks as its unit of time, Delay uses block time, and the dissent oracle uses blocks, this can make it difficult and potentially dangerous to determine the time that should be configured in the dissent oracle to ensure that users have a window to redeem if they haven't voted yes on any pending votes, but also that if they do vote yes they are not able to redeem before the vote is processed. We plan to update Voting and Dissent oracle to use block-time rather than blocks before release.

Providing Feedback
We really appreciate any feedback on the functionality and UX of Dandelion. We have created a repository for user feedback, and are also offering Honey tokens as a reward for those who participate and provide quality feedback.
GitHub - 1Hive/user-feedback: User feedback bounties for 1Hive apps
If you experience issues or have suggestions related to specific application, we also welcome you to create an issue in the applications respective repo.

this is looking really good! nice work @lkngtn


MICOM elasticity calculation  can be run in paralle

Currently, elasticities are computed sequentially for each reaction or taxa. This can be parallelized to speed up computation, which becomes crucial for scalability.

Implemented parallel execution in my micom's fork


February 2015 Starts on Monday, but should start on Sunday. March Ends on Wednesday, but should end on Tuesday.

In the datepicker, I'm not sure how this is happening, but there is a weird date issue for February and March - if you check these images (on your demo) you'll see it.
January-February 2015, missing day

March-April 2015, overlapping day

Thank you so much for finding this bug. There was some issue, if we use Monday as the first day of the week. This has been resolved in the new version v0.9.0


non-zero exit status 139 for rnnt

Hi
Is there any clue about the following error in RNNT:
[I] Starting running actual test.
Segmentation fault (core dumped)
Traceback (most recent call last):
  File "code/main.py", line 303, in handle_run_harness
    result = harness.run_harness()
  File "/work/code/common/harness.py", line 264, in run_harness
    output = run_command(cmd, get_output=True, custom_env=self.env_vars)
  File "/work/code/common/__init__.py", line 64, in run_command
    raise subprocess.CalledProcessError(ret, cmd)
subprocess.CalledProcessError: Command './build/bin/harness_rnnt --logfile_outdir="/work/build/logs/2022.07.19-12.45.14/mahmood2022_TRT/rnnt/Offline" --logfile_prefix="mlperf_log_" --performance_sample_count=2513 --audio_batch_size=256 --audio_buffer_num_lines=4096 --dali_batches_issue_ahead=4 --dali_pipeline_depth=4 --num_warmups=512 --mlperf_conf_path="measurements/mahmood2022_TRT/rnnt/Offline/mlperf.conf" --user_conf_path="measurements/mahmood2022_TRT/rnnt/Offline/user.conf" --batch_size=128 --cuda_graph=true --pipelined_execution=true --batch_sorting=true --enable_audio_processing=true --use_copy_kernel=true --streams_per_gpu=1 --audio_fp16_input=true --start_from_device=false --audio_serialized_pipeline_file="build/bin/dali/dali_pipeline_gpu_fp16.pth" --scenario Offline --model rnnt --engine_dir="./build/engines/mahmood2022/rnnt/Offline"' returned non-zero exit status 139.
Traceback (most recent call last):
  File "code/main.py", line 772, in <module>
    main(main_args, DETECTED_SYSTEM)
  File "code/main.py", line 744, in main
    dispatch_action(main_args, config_dict, workload_id, equiv_engine_setting=equiv_engine_setting)
  File "code/main.py", line 574, in dispatch_action
    handle_run_harness(benchmark_conf, need_gpu, need_dla, profile, power)
  File "code/main.py", line 312, in handle_run_harness
    raise RuntimeError("Run harness failed!")
RuntimeError: Run harness failed!

I have no idea how to proceed further to narrow the problem.

@nv-etcheng Could you have a look at this?

Ahh, I see. You are trying to do an nsys profile on the harness. The issue here is that code/main.py is a Python wrapper that constructs the command for and launches a subprocess for the actual harness binary. What you want to do is run nsys on the subprocess command itself.
When running the make run_harness target, it will print something like:
Running command: ./build/bin/harness_rnnt --logfile_outdir="/work/build/logs/2022.07.19-12.45.14/mahmood2022_TRT/rnnt/Offline" --logfile_prefix="mlperf_log_" ....

You will want to copy that entire command and run nsys profile on that command.

I understand that, but I couldn't find the place that the command is built. I assume that there are a lot of variables in scripts and are put together to form the final command and that is printed on the screen as you mentioned. But, the scripts and Makeiles are nested and I am not able to find the exact location.

@nv-etcheng Do you mean to change
    def _get_harness_executable(self):
        return "./build/bin/harness_rnnt"

to
    def _get_harness_executable(self):
        return "nsys profile ./build/bin/harness_rnnt"

? I am referring to harness.py

Hi @mahmoodn , you don't need to modify any part of the code. You can just copy the command that the python harness builds and prints, and then run nsys profile <that command>.  i.e. if the command printed is ./build/bin/harness_foo --some_flag, you will want to do nsys profile ./build/bin/harness_foo --some_flag.

OK that helps, but I wonder why no gputrace is generated. Please see the complete output:
(mlperf) mnaderan@mlperf-inference-mnaderan-x86_64:/work$ /home/mnaderan/nsight-systems-2022.2.1/bin/nsys profile -t cuda,cudnn,nvtx -o nsys_rnnt ./build/bin/harness_rnnt --logfile_outdir="/work/build/logs/2022.07.21-09.39.05/mahmood2022_TRT/rnnt/Offline" --logfile_prefix="mlperf_log_" --performance_sample_count=2513 --audio_batch_size=256 --audio_buffer_num_lines=4096 --dali_batches_issue_ahead=4 --dali_pipeline_depth=4 --num_warmups=512 --mlperf_conf_path="measurements/mahmood2022_TRT/rnnt/Offline/mlperf.conf" --user_conf_path="measurements/mahmood2022_TRT/rnnt/Offline/user.conf" --batch_size=128 --cuda_graph=true --pipelined_execution=true --batch_sorting=true --enable_audio_processing=true --use_copy_kernel=true --streams_per_gpu=1 --audio_fp16_input=true --start_from_device=false --audio_serialized_pipeline_file="build/bin/dali/dali_pipeline_gpu_fp16.pth" --scenario Offline --model rnnt --engine_dir="./build/engines/mahmood2022/rnnt/Offline"
Warning: LBR backtrace method is not supported on this platform. DWARF backtrace method will be used.
&&&& RUNNING RNN-T_Harness # /work/./build/bin/harness_rnnt
I0722 08:20:07.714337   762 main_rnnt.cc:2903] Found 1 GPUs
[I] Starting creating QSL.
[I] Finished creating QSL.
[I] Starting creating SUT.
[I] Set to device 0
Dali pipeline creating..

[I] Starting warming up SUT.
[I] Finished warming up SUT.
[I] Starting running actual test.
Generating '/tmp/nsys-report-701f.qdstrm'
[1/1] [========================100%] nsys_rnnt.nsys-rep
Generated:
    /work/nsys_rnnt.nsys-rep
(mlperf) mnaderan@mlperf-inference-mnaderan-x86_64:/work$ /home/mnaderan/nsight-systems-2022.2.1/bin/nsys stats --report gputrace --format csv --output . nsys_rnnt.nsys-rep
Generating SQLite file nsys_rnnt.sqlite from nsys_rnnt.nsys-rep
Exporting 7415602 events: [================================================100%]
Using nsys_rnnt.sqlite for SQL queries.
Running [/home/mnaderan/nsight-systems-2022.2.1/target-linux-x64/reports/gputrace.py nsys_rnnt.sqlite] to [nsys_rnnt_gputrace.csv]... SKIPPED: nsys_rnnt.sqlite does not contain GPU trace data.

I used cuda,cudnn,nvtx in the profile option similar to other workloads. Any thoughts on that?


Remove duplicated h1 tag in search results page

Describe the bug
There are two h1 tags in the same page
Expected behavior
Have only one h1 tag
Current behavior
The SROnly component is rendering a H1 tag instead of a span
Steps to reproduce

Navigate to the search results page
Two H1 will appear, one of them with the data-fs-sr-only attribute

Possible Solution
Remove the as="h1" attribute to render a span instead of a H1 tag
Workspace
Add a workspace where you tested the bug behavior.
Additional context
Here is the code that needs to be modified: https://github.com/vtex/faststore/blob/e1489a02bc5e4de1aec3f9d60f77a3c4455cc22b/packages/core/src/pages/s.tsx#L97

Nice catch! 🚀
Fixed here


unmanaged-cluster deployed with multiple nodes and port mappings fails

Bug Report
When creating a new unmanaged-cluster with the following command:
$ tanzu unmanaged-cluster create test --worker-node-count 2 -p 80:80

the following error occurs:
Creating cluster.             failed to create cluster, Error: docker run error: command "docker run --hostname test-worker2 --name test-worker2 --label io.x-k8s.kind.role=worker --privileged --security-opt seccomp=unconfined --security-opt apparmor=unconfined --tmpfs /tmp --tmpfs /run --volume /var --volume /lib/modules:/lib/modules:ro --detach --tty --label io.x-k8s.kind.cluster=test --net kind --restart=on-failure:1 --init=false --publish=<IP_ADDRESS>:88:88/TCP --publish=<IP_ADDRESS>:444:444/TCP projects.registry.vmware.com/tce/kind/node:v1.21.5" failed with error: exit status 125

This is due to the 80 port already being allocated. If you attempt to run one of the workers with the above command and than another, you get the following error from docker:
docker: Error response from daemon: driver failed programming external connectivity on endpoint test-worker1 (1999afe35b1f3e7e04ee855468642d2620434fcbd1ed7bc924fda5ce9cf82615): Bind for <IP_ADDRESS>:80 failed: port is already allocated.

and is coming from logic we do that loops over all nodes and adds the port mappings to each one:
https://github.com/vmware-tanzu/community-edition/blob/badc3bffed36ab9f0d4b51d646a936516e1c0670/cli/cmd/plugin/unmanaged-cluster/cluster/kind.go#L117-L119
Expected Behavior
Multi-node clusters to work with port mappings provided by the user
Environment Details

Build version (tanzu version): off main - d0316fa0e989c8f3b142bc93e12205d6d8662892
Deployment (Managed/Unmanaged cluster): unmanaged-cluster
Infrastructure Provider (Docker/AWS/Azure/vSphere): n/a
Operating System (client): Pop!_OS 21.10 x86_64

@stmcginnis I would advise against. I want local port to be deterministic, because when I do use the cluster and create an Ingress I want to access my cluster via a name 127-0-0-1.sslip.io  rather than needing to find the assigned port (god knows how) and then do 127-0-0-1.sslip.io:32456.
When using an Ingress controller in unmanaged clusters, Ingress controller needs to be created using "hostPorts: enable=true" and then provide the "hostPort" to enable. That port needs to be the one on the node/container (so that's fine) but then needs to be used on the host to access workloads via Ingress.
We want people creating and using workloads on these clusters :-D
@jpmcb I would only expose ports of one container, and this should be the container where the Ingress controller will land (if not any), to be effective. Obviously you could expose all containers/nodes, but then either ips or ports would need to be different. Another option could be to use the "HAProxy" trick that Kind uses to front all those random ports with a LB that will be "one single ip/port", but this might be complicated.

@jorgemoralespou - Good point! We did chat about this and we're thinking that we would expose the port mapping on the first worker cluster letting the CNI resolve that to the appropriate mapping.
If someone would need a more granular way, we should not attempt to do that via our APIs, but rather, let the user provide their own configuration file that kind can than consume.
cc @joshrosso

@jpmcb sounds good to me. Let me know when this is ready to test, so I can provide my thorough testing :-D


chore: Add Dependabot configuration for npm packages in dashboard

Pull Request
Description
This change adds npm dependency management for the dashboard directory to the Dependabot configuration. The new configuration:

Sets up monthly checks for npm packages in the dashboard directory
Uses the prefix "deps(typescript)" for commit messages
Targets the main branch for updates
Groups all typescript-related dependencies together

This enhancement will help keep the dashboard's npm dependencies up-to-date automatically, improving security and ensuring the project uses the latest package versions.
fixes #27

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#41  👈
#40
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @JackPlowman and the rest of your teammates on  Graphite

Merge activity

Oct 26, 9:47 AM EDT: A user merged this pull request with Graphite.


Broadcast Exit to multiple panes crash

Windows Terminal version
1.22.2702.0_x64
Windows build number
10.0.22631.4317
Other Software
No response
Steps to reproduce

Open the Windows Terminal Preview
Create a second pane.
Toggle broadcast input to all panes (you should now be able to type in all panes)
Press Ctrl + D or type "exit"
the terminal crashes, even if you have other tabs open.

Expected Behavior
I'd expect it to exit out of the tab, so that if you have other tabs you can return to using them.
Actual Behavior
Upon exiting with multiple panes at the same time, it crashes and the program shuts down.

Can I have a look into it? @KruseCtrl

@PriyanshSrivastava0305 I see that you've left this comment on multiple issues. I appreciate your enthusiasm! Just so you know: you do not need permission from the person who filed a bug--nor do you need to @-mention them--to start working on something.
Feel free to submit a pull request whenever it's ready. Otherwise, feel free to investigate bugs and leave the actual notes from your investigations in the comment history.
Otherwise, posting comments like this in every issue just generates spam mail for everyone to filter out.

I wonder if this isn't from a similar root cause to #18049 (maybe #18086 too)


Fix 0.17 image issues introduced in #267 and #270

I tested this and the image now builds successfully and runs version 0.17.54.

I will probably not merge this as it is cause I don't see a reason why we should make it posix compliant instead of adding ~1.5 MB bash. We are doing more advanced scripts now and most people are used to use advanced features of bash including me. I am a big fan of test and not needing to quote everything and having some more advanced comparisons.
I will cherry pick your contribution addition into master later.


"Extra data in buffer" when trying to generate report

Hi,

What version of the project are you using?
v6.1.1

What operating system and processor architecture are you using?
Windows 10 (I know, I know), x64
go version go1.7.3 windows/amd64

What did you do?

PS C:\Temp> echo "GET https://localhost/" | ./vegeta attack -insecure -duration=120s -workers=200 > results.bin

PS C:\Temp> cat .\results.bin | ./vegeta.exe report

What did you expect to see?
Textual report

What did you see instead?
extra data in buffer

It seems I can't generate any report (tried plot and the others as well) under Windows. results.bin file is 1MB in size.
Have you had any success under Windows?
Thanks

Can you attach your results.bin in here for me to debug?

results.zip
Thanks

If you attempt a shorter attack and let it finish -duration=5s, does this still happen?

Unfortunately, yes:
PS C:\Temp> echo "GET https://www.google.com/" | ./vegeta attack -insecure -duration=5s | tee results2.bin | ./vegeta report
2016/10/26 09:51:10 extra data in buffer

results2.zip

I'm setting up a Windows VM to try to reproduce this.

 :-(
Are you on normal command prompt, Powershell or BASH with the latest Linux compatibility mode?

Using PowerShell

OK, the problem seems to be in the stdout / stdin in Powershell. Things seem to get corrupted with pipes and stdout redirection. Try this instead:
echo "GET https://www.google.com/" | ./vegeta attack -insecure -duration=2s -output="results.bin"
vegeta report -inputs="results.bin"

And this explains the why: https://brianreiter.org/2010/01/29/powershells-object-pipeline-corrupts-piped-binary-data/
This isn't a Vegeta problem, so closing this issue. Thanks for the report.


Not sure why az login does not work. But i was logged in through browser but still see this error

This is autogenerated. Please review and update as needed.
Describe the bug
Command Name
az login
Errors:
Please ensure you have network connection. Error detail: HTTPSConnectionPool(host='login.microsoftonline.com', port=443): Max retries exceeded with url: /common/oauth2/token (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Put any pre-requisite steps here...
az login

Expected Behavior
Environment Summary
Darwin-20.5.0-x86_64-i386-64bit
Python 3.7.3
Shell: bash

azure-cli 2.0.68

Additional Context

@jiasli for awareness

I have gone ahead and also done the following
brew reinstall<EMAIL_ADDRESS>brew link --force openssl
brew reinstall azure-cli
az login
as per this blog https://github.com/Azure/azure-cli/issues/6409. No luck

azure-cli 2.0.68 is a very old version. Could you follow Install Azure CLI on macOS and install the latest version with
brew update && brew install azure-cli

Please close this. It really helped. Thank you

Glad to know the it works for you. 😀

Glad to know it works for you. 😀


refs #16 replace usage of ImageStatusData with ViewerImageStatus

Simple grep and then search and replace without changing any logic.  This is surfaced by #9

@wjrice I am assuming you are too busy to do this.  It is o.k. I ask you to review so that you are informed.  This is not a big change.

Thanks Anchi. I checked my version and that server was moved to RHEL 8, running php 7.3 so I don’t have a good way to verify. I did log in and looked a bit at the code but it was not clear what I should do next. I see you also fixed up sinedon to be compatible with python 3. I thought I had done that too bit perhaps it was not merged. Fit the future, will there be a replacement for the Redmine installation instructions, updated for python 3?BillBillSent from my iPhoneOn Aug 13, 2024, at 9:22 PM, Anchi Cheng @.***> wrote:
@wjrice I am assuming you are too busy to do this.  It is o.k. I ask you to review so that you are informed.  This is not a big change.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Yes, new installation instruction will be needed. pip can do quite a bit but wxpython on different os needs customization.


[Request] NS Switch: Witch on the Holy Night (Mahoutsukai no Yoru)

https://vndb.org/v777
Thank you very much!

https://github.com/0xDC00/scripts/blob/b84748ef99ce7fb5126684a3de201ebc9bd0a222/NS_010012A017F18000_Mahoyo.js
Please check scripts before making a request


Disabling tracking in development mode

In the development environment, I'd like to keep tracking disabled. I'm trying to skip analytics.load() in dev mode. But then this is breaking analyics.track() calls that pass a callback to fire after tracking. The other option I see is to skip including analytics.js altogether in dev but then that would mean I'm checking if analytics is defined everywhere its being used. Another option is to create a mock implementation of analytics.js that does nothing but is API compatible with the library.
Is there a better way to transparently run this in development mode without breaking the application or having to write a lot of conditionals? Or should I just setup a free Segment account and link development mode to that account?
Just looking to see if there is a clean recommended approach for this use case.

@steverob
Are you including analytics.js on your page by using the JS snippet, or are you bundling it into your app?
With the snippet, if you don't call analytics.load() then any calls you make (e.g. analytics.track()) will be pushed onto the global analytics object. If you never call load(), then any analytics calls you make shouldn't fail - they just go into the analytics array waiting for load() to be called.
What are you seeing happen when you say track calls invoked with a callback are breaking if you try to skip calling analytics.load()?

@chrisradek so the tracking code I'm using is the JS snippet from Segment dash plus conditionals to load if enabled. Write key ENV var is not set in dev mode.
<script>
  !function(){
    var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics._writeKey="<%= ENV['TELEMETRY_FRONTEND_WRITE_KEY'] %>";analytics.SNIPPET_VERSION="4.13.2";

    <% if ENV['ENABLE_TELEMETRY'].present? && current_user.present? %>
      analytics.load("<%= ENV['TELEMETRY_FRONTEND_WRITE_KEY'] %>");
      analytics.page();
      analytics.identify("<%= current_user.id %>", JSON.parse('<%= raw j(telemetry_user_properties(current_user).to_json) %>'));
    <% end %>
  }}();
</script>

As you can see I'm skipping over analytics.load() and then I'm doing the following to do the tracking: analytics.track('event_name', {key: 'val'}, () => {console.log("callback")}) and I'm seeing that the callback is not being called.

Right, if analytics.load() is never called, then even though calling analytics.track won't throw an error, it also won't actually do anything useful. If you don't need the callbacks to be triggered in dev mode then this should be the equivalent of having an 'API compatible' mock of analytics.js that doesn't actually do anything.
Right now when you call load() we make a network call to the CDN to retrieve your settings, so if you don't provide a writeKey that will fail and throw an error. We're working on allowing you to pass your own settings so that you don't have to hit our CDN. Once that piece is done then you could pass your own settings in dev mode that also disables sending events to segment to effectively turn off tracking.

Just so I’m clear, you’re saying if I don’t call analytics.load() then the callback passed to analytics.track would be called?
Regards
Steve Robinson
On 2 Mar 2022, 4:08 AM +0530, Christopher Radek @.***>, wrote:

Right, if analytics.load() is never called, then even though calling analytics.track won't throw an error, it also won't actually do anything useful. If you don't need the callbacks to be triggered in dev mode then this should be the equivalent of having an 'API compatible' mock of analytics.js that doesn't actually do anything.
Right now when you call load() we make a network call to the CDN to retrieve your settings, so if you don't provide a writeKey that will fail and throw an error. We're working on allowing you to pass your own settings so that you don't have to hit our CDN. Once that piece is done then you could pass your own settings in dev mode that also disables sending events to segment to effectively turn off tracking.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>

Just so I’m clear, you’re saying if I don’t call analytics.load() then the callback passed to analytics.track would be called?

The opposite actually. If you don't call analytics.load(), then the callback won't be invoked either. The analytics object will still have all the public functions and allow you to call them, but they won't actually execute until load() is called.

@chrisradek okay. So in order for the callbacks to work, Segment needs to be loaded with a valid key. Is that correct?
So in development mode, if I want to add some behavior in an analytics.track callback, then the options for me are:

Setup a dev Segment account and use those credentials in dev mode
Create an API compatible mock that would be capable of calling callbacks

Is this a correct understanding? thanks! :)


IPv6 Support

Related information
Scope - P4 DASH pipeline. Requires definition of IPv6 header in overlay pipeline headers, proper parsing, and match on L3 addresses along with IPv4 addresses.
@marian-pritsak to provide further information, give to Hanif.
Notes
Needs to be coded in P4 behavioral model
No change in bmv2, just P4

Hi @marian-pritsak, Not sure if you saw my email.  As discussed, please send me the information on an equivalent IPv4 model.  Also, please share the development and testing environment details as well.  Thanks!

Adding Marian's email...
425-876-2040 cell

From: Mohammad Hanif @.>
Sent: Thursday, March 31, 2022 5:46:38 PM
To: Azure/DASH @.>
Cc: Kristina Moore @.>; Author @.>
Subject: Re: [Azure/DASH] IPv6 Support (Issue #88)
Hi @marian-pritsakhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmarian-pritsak&data=04|01|kristina.moore%40microsoft.com|bc455d506a27426207de08da13791540|72f988bf86f141af91ab2d7cd011db47|1|0|637843708022129618|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=dH2wnZFOSghNSGDOLnam%2F%2Ftfx4mCOjL%2BGMQ5i%2FtmOH4%3D&reserved=0, Not sure if you saw my email. As discussed, please send me the information on an equivalent IPv4 model. Also, please share the development and testing environment details as well. Thanks!
—
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAzure%2FDASH%2Fissues%2F88%23issuecomment-1085272942&data=04|01|kristina.moore%40microsoft.com|bc455d506a27426207de08da13791540|72f988bf86f141af91ab2d7cd011db47|1|0|637843708022129618|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=QSPEGC%2BKXEnUqYyOz0mJFsWqsmvv7almMo7AFGNCKlg%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAFJSI6AY4S2JFQCBAOQ5HZ3VCZBO3ANCNFSM5R7A7EEQ&data=04|01|kristina.moore%40microsoft.com|bc455d506a27426207de08da13791540|72f988bf86f141af91ab2d7cd011db47|1|0|637843708022179615|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000&sdata=nYuSwIIiVMOzni3iDTsQ3wilQkYNRl5VslPSfu%2FFTaE%3D&reserved=0.
You are receiving this because you authored the thread.Message ID: @.***>

Hi Mohammad,
The following list of tables will require IPv6 support:

sirius_outbound.routing
sirius_outbound.ca_to_pa
ACL stages (sirius_acl file)

all those tables match on IPv4 address. We need to support matching on either IPv4 address or IPv6 address depending on the packet's overlay ethertype.

We will need IPv6 support also in connection tracking, hence generally throughout sirius_conntrack.p4.
My suggestion would be to first finalize connection tracking with the proper connection removal behavior just for IPv4 (building on the current version of the code) and then later add IPv6 support.
From: Marian Pritsak @.***
Sent: Wednesday, April 6, 2022 2:07 AM
To: Azure/DASH @.>
Cc: Subscribed @.>
Subject: Re: [Azure/DASH] IPv6 Support (Issue #88)
Hi Mohammad,
The following list of tables will require IPv6 support:

sirius_outbound.routing
sirius_outbound.ca_to_pa
ACL stages (sirius_acl file)

all those tables match on IPv4 address. We need to support matching on either IPv4 address or IPv6 address depending on the packet's overlay ethertype.
—
Reply to this email directly, view it on GitHub https://github.com/Azure/DASH/issues/88#issuecomment-1089857786 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AICNJEYNMQPL5MHEXQQ4VPLVDUSZHANCNFSM5R7A7EEQ .
You are receiving this because you are subscribed to this thread.  https://github.com/notifications/beacon/AICNJE3G7AX7TQHPSO6RH7DVDUSZHA5CNFSM5R7A7EE2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOID26R6Q.gif Message ID: @.*** @.***> >


Ideas about active layer

When I looked at our napari proofreading tool yesterday with @akreshuk, we had two ideas / comments on the active layer design:

The highlighting of the active layer is very subtle and can easily be overlooked by new users. Maybe change the color or shading instead of just adding an outline.
I think it would be quite natural to change the active layer with tab instead of just switching to the next gui element, which I don't find particularly useful.

(I removed the issue template; this is more a discussion than an actual feature request.)

The highlighting of the active layer is very subtle and can easily be overlooked by new users. Maybe change the color or shading instead of just adding an outline.

Agreed, the outline is really thin right now. I think changing the shading could be nice, maybe making it a little lighter - maybe using primary color? What do you think @tlambert03

I think it would be quite natural to change the active layer with tab instead of just switching to the next gui element, which I don't find particularly useful.

You can change with up and down arrows, not sure if that was clearly documented anywhere. Let me know if that is sufficient or if you'd like tab as well / or instead. (I'm very open to all these ideas, to me this is stuff that can be decided by user experience testing which we havn't done a lot of yet)

@tlambert03 I'm trying to make this change, but running into some unexpected problems with the coloring of QLineEdit box not refreshing properly when the selected state of the QtLayerWidget changes. If you had time to make a quick PR for this that would be great, otherwise I can look into it more, or make a PR with my (minimal) progress so far

Agreed, the outline is really thin right now. I think changing the shading could be nice, maybe making it a little lighter - maybe using primary color?

Sounds good. I also think changing the shading would work well.

You can change with up and down arrows, not sure if that was clearly documented anywhere. Let me know if that is sufficient or if you'd like tab as well / or instead. (I'm very open to all these ideas, to me this is stuff that can be decided by user experience testing which we havn't done a lot of yet)

Oh, I see. I think up and down also works fine.
I am a bit biased towards tab, because this is what paintera uses for this functionality.
In the end I would also think that for this a bit of a wider user survey would be the right way to go.

@tlambert03 I'm trying to make this change, but running into some unexpected problems with the coloring of QLineEdit box not refreshing properly when the selected state of the QtLayerWidget changes. If you had time to make a quick PR for this that would be great, otherwise I can look into it more, or make a PR with my (minimal) progress so far

does this work?

Looks beautiful to me!!

k will submit

Yes, looks much better!

Closed by #1284


x/build/cmd/relui: add manual button task

When testing our release process, sometimes we want to wait for a human intervention before moving forward in the workflow. We could trivially add a task type that does nothing, but is completed by a button-press in the UI.
In #51797, we plan on using this as a verification step when testing our new release process.

We should also consider adding a column to stop relying on the magic task name prefix APPROVE-


Remove auto-collapse feature, register usage after multi-ow toggle

Fixes: #6

Awesome. Thank you!


Added German translations

Added German translations and flag svg file

some keys are still reported missing, the build is unclear where exactly:
> build-localized
> ng build app --localize

⠸ Building...✘ [ERROR] No translation found for "admin-core.catalog.filter-catalog" ("Filter Catalog").

✘ [ERROR] No translation found for "admin-core.catalog.enter-xyz-crs" ("CRS for this XYZ layer").

✘ [ERROR] No translation found for "admin-core.catalog.add-map-service" ("Add map service").

✘ [ERROR] No translation found for "admin-core.application.non-unique-name-error" ("Name should be unique.").

✘ [ERROR] No translation found for "admin-core.catalog.catalog-shortcuts" ("Catalog shortcuts").

✘ [ERROR] No translation found for "admin-core.application.filtered-layers" ("The catalog above shows only layers matching the application projection ({$INTERPOLATION})").

✘ [ERROR] No translation found for "shared.about.build-date" ("Build date").

✘ [ERROR] No translation found for "shared.about.added-packages" ("Extensions").


Assertion DSL's should not wait for global time out when value for assertion is already captured

Assertion DSL's should not wait for global time out when value for assertion is already captured.
Say I have a DSL which is as follows...
And compareResult should match regex ".,"?[pP][aA][sS][sS]["],."
in case the value of compareResult is false.... it is waiting for global level timeout before marking step failed.
Ideally it should not wait for global level timeout

Solution was to immediately return if the value being compared has been captured beforehand by an I capture .. step.
@ketu4u2010, please try this out using the snapshot build below and let us know how it goes.
Snapshot: gwen-web-2.13.0-2-g6cdff68-SNAPSHOT.zip

Delivered in [gwen-web v2.14.0](https://github.com/gwen-interpreter/gwen-web/releases/tag/v2.14.0]
@ketu4u2010 please close when ready.


Issue using Querying for Track by Identifier

Whenever I try to use the following line of code, I get a "Forbidden" error and I cannot figure out why:
Session.login(self, completion: {(result: SimpleAPIResponse) -> Void in
})
I am correctly setting the clientIdentifier, clientSecret, and redirectURI before use of the above code.
I've been at this for the past two hours and can't really figure out what the deal is.. Hopefully someone has had a similar experience and can help.

Hi! Do you still need help or is this solved?

It was an issue with my code.. I resolved that and can successfully login with Session.login now. I now have a new problem that I am trying to work through; I have already written code that queries/searches SoundCloud (without the use of SoundcloudSDK) and returns an array of my own custom track objects, which I would like to leave in place. Now I want to use SoundcloudSDK to "favorite" this track on behalf of the authenticated user.
Step 1: I retrieve the Track's Identifier from my custom object.
Step 2: I use "Tracks.track(identifier: Int, completion: SimpleAPIResponse -> Void)" to then create a Track struct that I can then use in the following step to favorite on behalf of the user.
After the second step, I would use:
let track: Track
track.favorite(userIdentifier: Int, completion: SimpleAPIResponse -> Void)
To favorite on behalf of the user, but for some reason Step 2 keeps failing and it doesn't make sense to me as to why as you do not need an authenticated user to do any "Track Querying".
Note Just noticed that it's very hit or miss, I just got a successful, working track response, but then majority of the time, during failure, this will print to console..
2016-02-17 13:17:05.305 Mix Up[8288:3099493] _BSMachError: (os/kern) invalid capability (20)
2016-02-17 13:17:05.306 Mix Up[8288:3099899] _BSMachError: (os/kern) invalid name (15)
Any ideas?

This log doesn't come from the library.
Also, the SDK was designed to be used with custom objects but I might work on that to make some static methods that just use identifiers. Also, this might generates new errors. If you want, you can open another issue for this so that I don't forget.
So to answer on your issue on Step 2, you do not need to have a logged user at that time. But to favorite a Track, you need to. But as for why the Track.track(identifier, completion) doesn't work, I don't know. What error does it give back?

Yes, but the client_ID still needs to be set, I believe. It appears when looking at the error I am receiving a ".CredentialsNotSet". Please bare with me as I am very new to handling/working with oAuth2.
In my app, I have a settings menu where I have the login flow working fully, but it appears when I run a new instance of my application (from XCode > Build then Run, begins to instance of app) it loses the Session and anything I've done in a previous instance to authenticate a SoundCloud account.
If I open the app in a new instance, login to the SC account and then attempt to use any of the methods, it appears things are successful. So, I guess my issue is just getting the Soundcloud and Session structs to persist through new instances of my app, which I have not a clue on how to do.

Okay, so I started a blank project with a VC containing two buttons.. one firing off the Session.login "flow" and a second button that attempts to favorite a track.. I've added the output that I am receiving to the console. Hopefully this can narrow it down to what I am doing wrong, programmatically, cause I don't believe it has anything to do with the SoundcloudSDK.
`@IBAction func buttonPressed(sender: AnyObject) {
Soundcloud.clientIdentifier = "MY CLIENT_ID"
Soundcloud.clientSecret = "MY CLIENT_SECRET"
Soundcloud.redirectURI = "http://example.com/callback"
    Session.login(self, completion: {(result: SimpleAPIResponse<Session>) -> Void in
        print("SC Login Occurred?")
        print(result.response.isSuccessful)
        print(result.response.error)
    })
}

@IBAction func favButtonPressed(sender: AnyObject) {
    print(Soundcloud.clientIdentifier)

    Track.track(98252800, completion: {(result: SimpleAPIResponse<Track>) -> Void in

        let track = result.response.result

        print("Track Pull")
        print(track?.title)
        print("Successful? :" + String(result.response.isSuccessful))
        print("Error? :" + String(result.response.error))

        let session = Soundcloud.session
        session?.me({(result: SimpleAPIResponse<User>) -> Void in

            let user = result.response.result

            print("User Pull")
            print(user?.username)
            print("Successful? :" + String(result.response.isSuccessful))
            print("Error? :" + String(result.response.error))

            track!.favorite((user?.identifier)!, completion: {(result: SimpleAPIResponse<Bool>) -> Void in

                print("User Track Favorite")
                print("Successful? :" + String(result.response.isSuccessful))
                print("Error? :" + String(result.response.error))
            })
        })
    })

}

`
Console Output:
SC Login Occurred?
true
nil
Optional("a67778b5a6ba4cdf4758ada46223d901")
Track Pull
Optional("Alley Boy Ft. Kevin Gates & Starlito - Long Haul")
Successful? :true
Error? :nil
User Pull
Optional("shiraqueth")
Successful? :true
Error? :nil
User Track Favorite
Successful? :false
Error? :Optional(Soundcloud.SoundcloudError.Forbidden)

I am having the same issue with favouriting and unfavoriteing tracks. It always gives me Forbidden even if I'm logged in and even if I refresh the session. There is definitely a problem here. Please help us?

I wonder if Soundcloud's API's have disabled the ability to allow an authenticated user to favorite/unfavorite tracks, across the board? They have recently been closing off their "platform", along with other changes to SC, in hopes of generating positive revenue. The company itself seems to have high hopes for the future as they have signed two deals with 2 of 3 of the largest music labels.. allowing them to pursue their hopes of a Spotify like streaming experience with the addition of user created content to their catalogue. I hope this is not the case though.. just recently they did create a rate limit of 15,000 playbacks on stream URL's for their "sounds", per client_ID, per day.

I don't think thats the case because it worked on the web version of what I am doing, which calls their API  via web rather than iOS. I think there's a bug somewhere in this library. Hopefully @delannoyk can help us :)

Okay, cool! Good to know that the functionality is intact on SC's end of things. Thanks!

@delannoyk Do you think this can be fixed on your end?

I think this is because you try to favorite already favorited track but I don't have time to check right now. I'll look later tonight!

Thank you for giving us your time to look into this! By the way, just trying to help here, but it appears that it still is receiving error as "forbidden" whether track is favorited already or not. Again, thank you so much!

The good news is that I can reproduce it. The bad news is that I don't know yet where that might come from...

And the other good news is a new version fixes it :) Seems like Soundcloud doesn't accept HTTP Payload anymore and every parameters has to be in the URL query string.
Anyway, have fun guys and let me know if that works out for you!
BTW: Use 0.7.1 :)

@delannoyk thank you so much buddy! I appreciate it!! =D

Awesome! Thank you so much :) and thanks for this library, love it
On Wed, Feb 24, 2016 at 6:01 AM, dj97smith<EMAIL_ADDRESS>wrote:

@delannoyk https://github.com/delannoyk thank you so much buddy! I
appreciate it!! =D
—
Reply to this email directly or view it on GitHub
https://github.com/delannoyk/SoundcloudSDK/issues/9#issuecomment-187878181
.

@delannoyk This is actually a new issue that started happening about 3 days ago (not sure whether to create a new issue, thought I'd ask first) but the refreshSession started to always fail unless you literally just signed in to Soundcloud. I wonder if Soundcloud changed how long you are allowed to leave it before allowing to refresh a session. Just wondering if you know anything about that? Only last week when i left it for less than 24 hours i was able to refresh the session and was logged in again but now it always fails. No code has been changed. Hope you can help. Thanks!

I'm not seeing this in my app. Anyway, since this requires a specific state, can you tell me what error it fails with?

Strange but its working fine again now and I haven't touched it. Refreshes the session ok now so no worries :)