WIP: add gnome3.gnome-builder

Motivation for this change
I was tempted to build a GTK application using gnome-builder. This my current WIP on getting it to run on NixOS.
Current remaining issues:

[ ] Add meta attribute to the new packages
[x] icons in gnome-builder do not show up
[ ] python modules throw many errors e.g.:

TypeError: must be an interface
NotImplementedError: <GType void (4)>

[ ] Templates for new projects do not render (probably related to the previous issues)
[ ] typelib seems to have constructed an invalid path to a shared library during build:
WARNING: Failed to load shared library '/nix/store/x30dzq82zv0w4nxg42bd7q60zlmi6jk0-gnome-builder-3.27.2/lib/libide-1.0.so' referenced by the typelib: /nix/store/x30dzq82zv0w4nxg42bd7q60zlmi6jk0-gnome-builder-3.27.2/lib/libide-1.0.so: cannot open shared object file: No such file or directory

Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Fits CONTRIBUTING.md.

Thank you for the feedback so far.
Most of the comments should be addresses. Still have to invest more time into the typelib issue.

There are also some dependencies missing:

jedi and sphinx from pythonPackages
ctags
appstream-glib and desktop_file_utils for build

Some path patches:
--- a/pkgs/desktops/gnome-3/devtools/gnome-builder/default.nix
+++ b/pkgs/desktops/gnome-3/devtools/gnome-builder/default.nix
@@ -1,15 +1,23 @@
 {stdenv
+, autoconf
 , clang
+, clang-tools
+, cmake
 , ctags
+, substituteAll
 , defaultIconTheme
 , devhelp
 , fetchurl
 , gettext
+, gjs
+, glib
 , gnome_themes_standard
+, gnumake
 , gspell
 , gtk3
 , gtksourceview
 , hicolor_icon_theme
+, indent
 , json_glib
 , jsonrpc_glib
 , libdazzle
@@ -19,15 +26,18 @@
 , llvmPackages
 , meson
 , ninja
+, packagekit
 , pcre
 , pkgconfig
 , python3
 , python3Packages
 , sysprof
 , template_glib
+, unzip
 , vala
 , vte
 , webkitgtk
+, which
 , wrapGAppsHook
 , ...}:

@@ -52,7 +62,14 @@

   mesonFlags = "-D with_flatpak=false";

-  patches = [ ./patch_libide.patch ];
+  patches = [
+    ./patch_libide.patch
+    (substituteAll {
+      src = ./fix-paths.patch;
+      glibDev = glib.dev;
+      inherit autoconf clang clang-tools cmake gjs gnumake indent meson packagekit pkgconfig unzip which;
+    })
+  ];

   postPatch = ''
     patchShebangs build-aux/meson/post_install.py
--- /dev/null
+++ b/pkgs/desktops/gnome-3/devtools/gnome-builder/fix-paths.patch
@@ -0,0 +1,230 @@
+--- a/doc/help/examples/format_on_save.py
++++ b/doc/help/examples/format_on_save.py
+@@ -40,7 +40,7 @@
+                            Gio.SubprocessFlags.STDOUT_PIPE)
+
+         # Setup our cmdline arguments
+-        launcher.push_argv('indent')
++        launcher.push_argv('@indent@/bin/indent')
+
+         # If your target program is installed on the host (and not bundled
+         # or found in the build environment runtime) you might need to set
+--- a/src/libide/projects/ide-project.c
++++ b/src/libide/projects/ide-project.c
+@@ -732,7 +732,7 @@
+
+       launcher = ide_subprocess_launcher_new (0);
+       ide_subprocess_launcher_set_run_on_host (launcher, TRUE);
+-      ide_subprocess_launcher_push_argv (launcher, "gio");
++      ide_subprocess_launcher_push_argv (launcher, "@glibDev@/bin/gio");
+       ide_subprocess_launcher_push_argv (launcher, "trash");
+       ide_subprocess_launcher_push_argv (launcher, uri);
+
+--- a/src/libide/runtimes/ide-runtime.c
++++ b/src/libide/runtimes/ide-runtime.c
+@@ -106,7 +106,7 @@
+           g_autoptr(IdeSubprocess) subprocess = NULL;
+
+           ide_subprocess_launcher_set_run_on_host (launcher, TRUE);
+-          ide_subprocess_launcher_push_argv (launcher, "which");
++          ide_subprocess_launcher_push_argv (launcher, "@which@/bin/which");
+           ide_subprocess_launcher_push_argv (launcher, program);
+
+           if (NULL != (subprocess = ide_subprocess_launcher_spawn (launcher, cancellable, NULL)))
+--- a/src/libide/transfers/ide-pkcon-transfer.c
++++ b/src/libide/transfers/ide-pkcon-transfer.c
+@@ -140,7 +140,7 @@
+
+   launcher = ide_subprocess_launcher_new (G_SUBPROCESS_FLAGS_STDOUT_PIPE);
+   ide_subprocess_launcher_set_run_on_host (launcher, TRUE);
+-  ide_subprocess_launcher_push_argv (launcher, "pkcon");
++  ide_subprocess_launcher_push_argv (launcher, "@packagekit@/bin/pkcon");
+   ide_subprocess_launcher_push_argv (launcher, "install");
+   ide_subprocess_launcher_push_argv (launcher, "-y");
+   ide_subprocess_launcher_push_argv (launcher, "-p");
+--- a/src/plugins/autotools/ide-autotools-autogen-stage.c
++++ b/src/plugins/autotools/ide-autotools-autogen-stage.c
+@@ -94,7 +94,7 @@
+     }
+   else
+     {
+-      ide_subprocess_launcher_push_argv (launcher, "autoreconf");
++      ide_subprocess_launcher_push_argv (launcher, "@autoconf@/bin/autoreconf");
+       ide_subprocess_launcher_push_argv (launcher, "-fiv");
+     }
+
+--- a/src/plugins/autotools/ide-autotools-make-stage.c
++++ b/src/plugins/autotools/ide-autotools-make-stage.c
+@@ -96,7 +96,7 @@
+       if (ide_runtime_contains_program_in_path (runtime, "gmake", cancellable))
+         self->make = "gmake";
+       else
+-        self->make = "make";
++        self->make = "@gnumake@/bin/make";
+     }
+
+   if (NULL == (launcher = ide_build_pipeline_create_launcher (pipeline, error)))
+--- a/src/plugins/autotools/ide-makecache.c
++++ b/src/plugins/autotools/ide-makecache.c
+@@ -1042,7 +1042,7 @@
+ {
+   DZL_COUNTER_INC (instances);
+
+-  self->make_name = "make";
++  self->make_name = "@gnumake@/bin/make";
+
+   self->file_targets_cache = dzl_task_cache_new ((GHashFunc)g_file_hash,
+                                                  (GEqualFunc)g_file_equal,
+--- a/src/plugins/beautifier/gb-beautifier-process.c
++++ b/src/plugins/beautifier/gb-beautifier-process.c
+@@ -222,7 +222,7 @@
+     return NULL;
+
+   args = g_ptr_array_new ();
+-  g_ptr_array_add (args, "clang-format");
++  g_ptr_array_add (args, "@clang-tools@/bin/clang-format");
+   g_ptr_array_add (args, "-style=file");
+   g_ptr_array_add (args, tmp_src_path);
+   g_ptr_array_add (args, NULL);
+--- a/src/plugins/clang/ide-clang-service.c
++++ b/src/plugins/clang/ide-clang-service.c
+@@ -213,7 +213,7 @@
+
+   subprocess = g_subprocess_new (G_SUBPROCESS_FLAGS_STDOUT_PIPE,
+                                  &error,
+-                                 "clang",
++                                 "@clang@/bin/clang",
+                                  "-print-file-name=include",
+                                  NULL);
+
+--- a/src/plugins/cmake/gbp-cmake-pipeline-addin.c
++++ b/src/plugins/cmake/gbp-cmake-pipeline-addin.c
+@@ -131,7 +131,7 @@
+
+   prefix_option = g_strdup_printf ("-DCMAKE_INSTALL_PREFIX=%s", prefix);
+
+-  ide_subprocess_launcher_push_argv (configure_launcher, "cmake");
++  ide_subprocess_launcher_push_argv (configure_launcher, "@cmake@/bin/cmake");
+   ide_subprocess_launcher_push_argv (configure_launcher, "-G");
+   ide_subprocess_launcher_push_argv (configure_launcher, "Ninja");
+   ide_subprocess_launcher_push_argv (configure_launcher, ".");
+--- a/src/plugins/flatpak/gbp-flatpak-sources.c
++++ b/src/plugins/flatpak/gbp-flatpak-sources.c
+@@ -281,7 +281,7 @@
+   va_list ap;
+
+   va_start (ap, error);
+-  res = archive_spawn (dir, NULL, error, "unzip", ap);
++  res = archive_spawn (dir, NULL, error, "@unzip@/bin/unzip", ap);
+   va_end (ap);
+
+   return res;
+--- a/src/plugins/gjs-symbols/gjs_symbols.py
++++ b/src/plugins/gjs-symbols/gjs_symbols.py
+@@ -251,7 +251,7 @@
+         runtime = context.get_configuration_manager().get_current().get_runtime()
+         launcher = runtime.create_launcher()
+         launcher.set_flags(Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_SILENCE)
+-        launcher.push_args(('gjs', '-c', script))
++        launcher.push_args(('@gjs@/bin/gjs', '-c', script))
+         if unsaved_file is not None:
+             launcher.push_argv(unsaved_file.get_content().get_data().decode('utf-8'))
+         else:
+--- a/src/plugins/jhbuild/jhbuild_plugin.py
++++ b/src/plugins/jhbuild/jhbuild_plugin.py
+@@ -98,7 +98,7 @@
+             try:
+                 launcher = Ide.SubprocessLauncher.new(Gio.SubprocessFlags.STDOUT_SILENCE |
+                                                       Gio.SubprocessFlags.STDERR_SILENCE)
+-                launcher.push_argv('which')
++                launcher.push_argv('@which@/bin/which')
+                 launcher.push_argv(jhbuild_bin)
+
+                 launcher.set_run_on_host(True)
+--- a/src/plugins/meson/gbp-meson-build-target-provider.c
++++ b/src/plugins/meson/gbp-meson-build-target-provider.c
+@@ -282,7 +282,7 @@
+   pipeline = ide_build_manager_get_pipeline (build_manager);
+   cancellable = g_task_get_cancellable (task);
+
+-  ide_subprocess_launcher_push_argv (launcher, "meson");
++  ide_subprocess_launcher_push_argv (launcher, "@meson@/bin/meson");
+   ide_subprocess_launcher_push_argv (launcher, "introspect");
+   ide_subprocess_launcher_push_argv (launcher, "--installed");
+   ide_subprocess_launcher_push_argv (launcher, ide_build_pipeline_get_builddir (pipeline));
+@@ -359,7 +359,7 @@
+       IDE_EXIT;
+     }
+
+-  ide_subprocess_launcher_push_argv (launcher, "meson");
++  ide_subprocess_launcher_push_argv (launcher, "@meson@/bin/meson");
+   ide_subprocess_launcher_push_argv (launcher, "introspect");
+   ide_subprocess_launcher_push_argv (launcher, "--targets");
+
+--- a/src/plugins/meson/gbp-meson-pipeline-addin.c
++++ b/src/plugins/meson/gbp-meson-pipeline-addin.c
+@@ -113,7 +113,7 @@
+   parallel = ide_configuration_get_parallelism (config);
+
+   if (NULL == (meson = ide_configuration_getenv (config, "MESON")))
+-    meson = "meson";
++    meson = "@meson@/bin/meson";
+
+   /* Setup our meson configure stage. */
+
+--- a/src/plugins/meson/gbp-meson-test-provider.c
++++ b/src/plugins/meson/gbp-meson-test-provider.c
+@@ -202,7 +202,7 @@
+   builddir = ide_build_pipeline_get_builddir (pipeline);
+   ide_subprocess_launcher_set_cwd (launcher, builddir);
+
+-  ide_subprocess_launcher_push_argv (launcher, "meson");
++  ide_subprocess_launcher_push_argv (launcher, "@meson@/bin/meson");
+   ide_subprocess_launcher_push_argv (launcher, "introspect");
+   ide_subprocess_launcher_push_argv (launcher, "--tests");
+
+--- a/src/plugins/phpize/phpize_plugin.py
++++ b/src/plugins/phpize/phpize_plugin.py
+@@ -114,7 +114,7 @@
+             launcher.set_flags(Gio.SubprocessFlags.STDIN_PIPE |
+                                Gio.SubprocessFlags.STDOUT_PIPE |
+                                Gio.SubprocessFlags.STDERR_PIPE)
+-            launcher.push_argv('make')
++            launcher.push_argv('@gnumake@/bin/make')
+             launcher.push_argv('-f')
+             launcher.push_argv('-')
+             launcher.push_argv('print-CFLAGS')
+@@ -224,11 +224,11 @@
+
+         # Build the project using make.
+         build_launcher = pipeline.create_launcher()
+-        build_launcher.push_argv('make')
++        build_launcher.push_argv('@gnumake@/bin/make')
+         if config.props.parallelism > 0:
+             build_launcher.push_argv('-j{}'.format(config.props.parallelism))
+         clean_launcher = pipeline.create_launcher()
+-        clean_launcher.push_argv('make')
++        clean_launcher.push_argv('@gnumake@/bin/make')
+         clean_launcher.push_argv('clean')
+         build_stage = Ide.BuildStageLauncher.new(context, build_launcher)
+         build_stage.set_clean_launcher(clean_launcher)
+@@ -237,7 +237,7 @@
+
+         # Use "make install" to install the project.
+         install_launcher = pipeline.create_launcher()
+-        install_launcher.push_argv('make')
++        install_launcher.push_argv('@gnumake@/bin/make')
+         install_launcher.push_argv('install')
+         install_stage = Ide.BuildStageLauncher.new(context, install_launcher)
+         self.track(pipeline.connect(Ide.BuildPhase.INSTALL, 0, install_stage))
+--- a/src/plugins/vala-pack/ide-vala-index.vala
++++ b/src/plugins/vala-pack/ide-vala-index.vala
+@@ -547,7 +547,7 @@
+ 				var pkgname = "libvala-%s".printf (Config.VALA_VERSION);
+ 				string outstr = null;
+ 				var subprocess = new GLib.Subprocess (GLib.SubprocessFlags.STDOUT_PIPE,
+-					                                  "pkg-config",
++					                                  "@pkgconfig@/bin/pkg-config",
+ 					                                  "--variable=vapidir",
+ 					                                  pkgname,
+ 					                                  null);

@jtojnar thanks, I've added those as a separate commit for now. Gonna give it a test spin now.

Apparently, it applies to 3.27.3.

Yeah, I didn't pick that version just yet since that involves bumping other gnome dependencies and just makes this change bigger. The difference in patch is probably trivial. So far I only see this chunk that doesn't apply:
--- src/plugins/meson/gbp-meson-pipeline-addin.c
+++ src/plugins/meson/gbp-meson-pipeline-addin.c
@@ -113,7 +113,7 @@
   parallel = ide_configuration_get_parallelism (config);

   if (NULL == (meson = ide_configuration_getenv (config, "MESON")))
-    meson = "meson";
+    meson = "/nix/store/jc8aybbzvvsgkmzqg4m6zypz8r1xb581-meson-0.44.0/bin/meson";

   /* Setup our meson configure stage. */

We will probably want to submit the patch to GNOME before 3.28 code freeze on March 5. Do you think you will have time to work on it before then?

Feel free to do that. I am very tight on available time eight now.
On Feb 24, 2018 11:48 PM, "Jan Tojnar"<EMAIL_ADDRESS>wrote:

We will probably want to submit the patch to GNOME before 3.28 code freeze
https://wiki.gnome.org/Schedule on March 5. Do you think you will have
time to work on it before then?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/NixOS/nixpkgs/pull/33270#issuecomment-368266444, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAm_dGS3smBjZbgSJC3nhtuknJ_RU_nYks5tYJGlgaJpZM4RQCZv
.

I rebased the PR and updated the packages, https://github.com/NixOS/nixpkgs/pull/37381 fixed the typelib error, the Python one remains:
Traceback (most recent call last):
  File "/nix/store/ca6w12vshz0bvbdw7z3k7yr92kqjaq2a-python3-3.6.4/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/nix/store/2gp3krh7swd9q60m4zafvy286fnr2b1v-gnome-builder-3.28.0/lib/gnome-builder/plugins/make_plugin.py", line 34, in <module>
    class MakeBuildSystem(Ide.Object, Ide.BuildSystem, Gio.AsyncInitable):
  File "/nix/store/x7mkyvwc4d4xmkpza6assbw0yb4nzx34-python3.6-pygobject-3.26.1/lib/python3.6/site-packages/gi/module.py", line 220, in __getattr__
    wrapper = metaclass(name, bases, dict_)
  File "/nix/store/x7mkyvwc4d4xmkpza6assbw0yb4nzx34-python3.6-pygobject-3.26.1/lib/python3.6/site-packages/gi/types.py", line 234, in __init__
    register_interface_info(cls.__info__.get_g_type())
TypeError: must be an interface
00:57:50.0639                                   libpeas[ 17078]:  WARNING: Error loading plugin 'make_plugin'

Has this been abandoned?

Not fully but my main motivation is gone... If you want to move on from
where I stopped please go ahead.
On Wed, 16 May 2018, 12:53 Adrian Vovk<EMAIL_ADDRESS>wrote:

Has this been abandoned?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/NixOS/nixpkgs/pull/33270#issuecomment-389477699, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAm_dEIL2satBufau9LyDdGcbRAxuwfEks5tzAUMgaJpZM4RQCZv
.

Sysprof requires a NixOS module, so I pushed it to master and rebased this PR.
@AdrianVovk If you want to finish this, try asking about the python issue on #gnome-builder on irc://irc.gnome.org.

@jtojnar I'll study it. I might be able to take it on. I don't know yet

template-glib cherry-picked as b2c565eee5fae658e53f12792141507e063de748
jsonrpc-glib cherry-picked as 80b5f5227e4a801bc9da70ba68d59aad54618e7c

Thanks for your work on thid @jtojnar++. I know those are probably just because other things might need them but it seems like in the long run we might end up with most of the dependencies of gnome-builder in nixpkgs. :+1:
Do you have an idea what the major missing parts are? Should we try to make a ToDo-List with things that are missing?

Not sure what else is missing, but there has been some progress in #44217.


How to update child fields in UI after they are set / updated by parent

Question
@aitboudad
I am currently getting some data via an API call that I populate my Select options with and I store additional fields associated with that option in a separate array.
Based on user selected option I then update the child fields with relevant information using the below code.
For the first selection I can see that the fields are updated in the UI.
Lets in that view the user decides to change his selection. I can see that change is reflected in the model, but that change is not reflected in the UI.
Can I please request your help in understanding how I could resolve the issue?
Thanks in advance for your help and support.

    {
      fieldGroupClassName: "row",
      fieldGroup: [
        {
          key: 'alertTypeUuid',
          type: 'nbselect',
          className: "col-12 col-md-3",
          templateOptions: {
            label: 'Alert Name',
            placeholder: "Select AlertName",
            description: "Provisioned Alert Names",
            required: true,
            options: [],
            valueProp: 'value',
            labelProp: 'label',
          },
          hooks: {
            onInit: (field) => {

/*** API call that gets the relevant info and stores in a separate array
              this.userApi.getAlertTypes(this._userId)
                .subscribe((alertTypes: AlertType[]) => {
                  this.alertTypeCatalog = alertTypes;
                  const xy = [];

/*** populate the Select options
                  this.alertTypeCatalog.forEach((alerttype: AlertType) => {
                    const item = {
                      value: { label: alerttype.name, value: alerttype.uuid },
                      label: alerttype.name,
                    };
                    xy.push(item);
                  });
                  field.templateOptions.options = xy;
                });

/*** on user selection I do the following / model is updated appropriately

              field.formControl.valueChanges.subscribe((x) => {
                console.log(x);
                this.alertTypeCatalog.forEach((y) => {
                  if (y.name === x.label) {
                    this.model.alertTypeUuid = y.uuid;
                    this.model.event = {
                      severity: y.severity,
                      category: y.category,
                      subCategory: y.subCategory
                    };
                    console.log(this.model);
                  }
                  // this.alertoptions = [...aoptions]
                  // this.updateAlertOptions(this.model.event)
                });
              });
            },
          },
        },

/*** below are the fields that get updated for the first time only within the UI.
       If user changes the Select option , I can see the model being updated, but UI still have first time value
        {
          key: 'event.severity',
          type: 'nbinput',
          className: "col-12 col-md-3",
          hideExpression: () => !this.model.alertTypeUuid,
          templateOptions: {
            label: 'Severity',
            readonly: true,
            description: "Prov. Severity"
          },
        },
        {
          key: 'event.category',
          type: 'nbinput',
          className: "col-12 col-md-3",
          hideExpression: () => !this.model.alertTypeUuid,
          templateOptions: {
            label: 'Category',
            description: "Prov. Category"
          }
        },
        {
          key: 'event.subCategory',
          type: 'nbinput',
          className: "col-12 col-md-3",
          hideExpression: () => !this.model.alertTypeUuid,
          templateOptions: {
            label: 'Sub Category',
            description: "Prov. SubCategory"
          },
        },
        {
          key: 'event.params',
          className: "col-12",
          hideExpression: () => !this.model.alertTypeUuid,
          fieldGroup: [
            {
              key: 'message',
              type: 'nbinput',
              templateOptions: {
                label: 'Data',
                required: true,
                description: "Alert Message to include"
              }
            }
          ]
        },
      ]
    }

but that change is not reflected in the UI.

You need to re-build the form in order to let Formly render the new attached fields
(<any> field.options)._buildForm(true);

@aitboudad
Appreciate the quick response.
I placed the suggested line at this point within the code and it does seem to do what I was looking for but introduces another issue.
With the "Select" that is triggering the update of the child fields, the user selected option is not shown as "selected" within the options (i.e: options is reset in the UI only, the model though has the right information).
Any thoughts in what I could be doing wrong?
{
      fieldGroupClassName: "row",
      fieldGroup: [
        {
          key: 'alertTypeUuid',
          type: 'nbselect',
          className: "col-12 col-md-3",
          templateOptions: {
            label: 'Alert Name',
            placeholder: "Select AlertName",
            description: "Provisioned Alert Names",
            required: true,
            options: [],
            valueProp: 'value',
            labelProp: 'label',
          },
          hooks: {
            onInit: (field) => {
              this.userApi.getAlertTypes(this._userId)
                .subscribe((alertTypes: AlertType[]) => {
                  this.alertTypeCatalog = alertTypes;
                  const xy = [];
                  this.alertTypeCatalog.forEach((alerttype: AlertType) => {
                    const item = {
                      value: alerttype.uuid,
                      label: alerttype.name,
                    };
                    xy.push(item);
                  });
                  field.templateOptions.options = xy;
                });
              field.formControl.valueChanges.subscribe((x) => {
                console.log(x);
                this.alertTypeCatalog.forEach((y) => {
                  if (y.name === x.label) {
                    this.model.alertTypeUuid = y.uuid;
                    this.model.event = {
                      severity: y.severity,
                      category: y.category,
                      subCategory: y.subCategory
                    };
                  }

/*** here
(<any> field.options)._buildForm(true);
                });
              });
            },
          },
        },


localforage.createInstance is not a function

Describe the bug
<EMAIL_ADDRESS>import * as localforage from "localforage";
const store = localforage.createInstance({
name:'HelloWorld',
});
Reproduction
https://stackblitz.com/edit/vitejs-vite-fdzrry?file=main.js&terminal=dev
Steps to reproduce
No response
System Info
System:
    OS: macOS 14.5
    CPU: (16) arm64 Apple M3 Max
    Memory: 6.16 GB / 48.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 18.20.2 - ~/.nvm/versions/node/v18.20.2/bin/node
    Yarn: 1.22.22 - ~/.nvm/versions/node/v18.20.2/bin/yarn
    npm: 10.5.0 - ~/.nvm/versions/node/v18.20.2/bin/npm
    pnpm: 9.0.5 - /usr/local/bin/pnpm
  Browsers:
    Chrome: 127.0.6533.89
    Safari: 17.5
  npmPackages:
    @vitejs/plugin-vue: ^5.0.5 => 5.1.1
    vite: ^5.3.4 => 5.3.5

Used Package Manager
npm
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to vuejs/core instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

Duplicate of https://github.com/vitejs/vite/issues/15851
createInstance is implemented under prototype chain LocalForage.prototype.createInstance, but that's not interop-ed for named imports.
Workaround is to use default import for commonjs. Note that NodeJs allows only this form of import,
import localforage from "localforage";
console.log(localforage.createInstance)


Add Password Strength Guidelines and "Show Password" Feature to Registration Page

Description
To enhance user security and usability, it is important to provide clear and concise guidelines for creating strong passwords and the ability to toggle password visibility on the registration page. I suggest including the following password requirements and guidelines, along with a "Show Password" feature.
Here's an example of how the password strength indicator and guidelines can be displayed:

Benefits

Enhances user security by promoting strong password practices.
Reduces the risk of account breaches due to weak passwords.
Provides a clear and user-friendly interface for password creation.

Implementation

Update the registration page to include a password strength meter.
Display the proposed guidelines next to the password input field.
Add a "Show Password" checkbox or icon to toggle password visibility.

Additional:
The form will be hidden behind the navigation bar.

@kushalkumar1362 assigned to u

I want to work on it, can u please assign it to me


allow amphp/socket ^1

Unfortunately, we have to make a few minor BC breaks for that. We're already working on it, see the v2.x branch.


vagrant-vbguest fails to install. Provision fails.

VirtualBox: 5.2.18
Vagrant: 2.1.2
vagrant-vbguest: 0.16.0
Vagrant-vbguest requires the kernel headers appropriate to your kernel version in order to install/build the kernel modules. The vagabond script requires a shared folder to run the provisioner. Thus, if you cannot install the kernel headers, you cannot install the guest additions, and therefore the provisioner cannot run.
The current server provided by this project (https://app.vagrantup.com/jrbing/boxes/ps-vagabond/versions/1.0.5) uses a kernel version by default whose kernel-headers cannot be found in the repository (anymore?) (4.1.12-124.14.1.el7uek.x86_64).
Am I affected?
If you cannot provision the VM, log into the machine and if the following commands do not show a kernel-uek-devel package appropriate to the kernel version you are running, the vagrant-vbguest install will fail
yum list kernel-uek-devel* --showduplicates
uname -r
What can I do?
Two options

Install and use a kernel version whose headers are available in the repositories (http://yum.oracle.com/repo/OracleLinux/OL7/UEKR4/x86_64/index.html) (eg. 4.1.12-124.19.4.el7uek.x86_64). Re-provision or try vagrant vbguest
Add http://yum.oracle.com/repo/OracleLinux/OL7/UEKR4/archive/x86_64/index.html to /etc/yum.repos.d/public-yum-ol7.repo. It contains the .14 used by this server.

How do we resolve this issue?
Two options:

Make the project more resilient to vagrant-vbguest installs. vagrant-vbguest has always been a headache with this project so whatever can be done to make this better would be great. Could server update and use the latest kernel PRIOR to attempting to install the guest plugins?
Keep the underlying server in sync with the latest versions so we don't have to maintain kernel versions manually.

This all puts pressure on #67

In case it wasn't clear, forcing a kernel update and trying to re-provision will resolve the problem
yum install kernel-uek kernel-uek-devel

@ostracize the newest changes attempt to address this issue. The VBoxAdditions are manually built in the new box and we don't use the vagrant-vbguest plugin anymore. See PR #88.

Much appreciated Dan!
I'll give it a try.


fix(test): removed favicon, was breaking re-init unit test

fixes #75
Apparently the binary nature of the favicon.ico file was causing an issue when templates were being processed.

Thanks for the PR. This should fix #75

This is also fixed in PR #80

@IgorMinar is it safe to just remove the favicon.ico or do you think that we'll need to fix the test to live with the favicon?

we should keep the favicon because otherwise everyone we'll see annoying http 404 errors in devtools. let's fix the tests

@IgorMinar by fixing the tests, I believe this will be a fix in the ember-cli repo. I have to trace back through but I believe it is choking when trying to do a file compare of the binary files. The test that is failing is when it is attempting to re-init.

so how about we merge this in to make the build green again, file a separate issue in this repo to readd the favicon and fix the actual issue in ember-cli? once the issue is fixed there we can readd the icon back.

@IgorMinar good one.

@IgorMinar I think that's a good compromise for now. There is a related issue already created for the ember-cli (https://github.com/ember-cli/ember-cli/issues/4876)

Could we delete the icon in from our test just before reinit?
On Mon, Nov 30, 2015 at 5:25 PM Mike Brocchi<EMAIL_ADDRESS>wrote:

@IgorMinar https://github.com/IgorMinar I think that's a good
compromise for now. There is a related issue already created for the
ember-cli (ember-cli/ember-cli#4876
https://github.com/ember-cli/ember-cli/issues/4876)
—
Reply to this email directly or view it on GitHub
https://github.com/angular/angular-cli/pull/79#issuecomment-160817003.

@IgorMinar good call on "deleting", I was able to utilize the Blueprint.ignoredFiles array to ignore the favicon file for the unit test. Branch is updated with that change.

Nice! I think that now we are good to merge it and have the ci green.

Can you add a comment there explaining what we are doing with the favicon?
Just link back to this PR.
Otherwise lgtm
On Tue, Dec 1, 2015 at 5:54 AM Ciro Nunes<EMAIL_ADDRESS>wrote:

Nice! I think that now we are good to merge it and have the ci green.
—
Reply to this email directly or view it on GitHub
https://github.com/angular/angular-cli/pull/79#issuecomment-160976180.

Added the comment as @IgorMinar requested and landed as 87bfa14d5968ccfa365c10618082a4efa65a9381.
Thanks for the PR, @Brocco!

@cironunes glad to assist


Multiple services using the same loadbalancer

I'm trying to reuse the same loadbalancer for multiple services, in my example I'm deploying two very simple webapps using, both running on port 80.
This is the loadbalancer for the first:
---
apiVersion: v1
kind: Service
metadata:
  name: polly-lb
  annotations:
    load-balancer.hetzner.cloud/hostname: svc1.domain.dev
    load-balancer.hetzner.cloud/location: fsn1
    load-balancer.hetzner.cloud/use-private-ip: "true"
    load-balancer.hetzner.cloud/name: test-lb
spec:
  selector:
    app.kubernetes.io/instance: svc1
  ports:
    - port: 80
      targetPort: http
      protocol: TCP
      name: http
  type: LoadBalancer
---

And the second
---
apiVersion: v1
kind: Service
metadata:
  name: new-lb
  annotations:
    load-balancer.hetzner.cloud/hostname: svc2.domain.dev
    load-balancer.hetzner.cloud/location: fsn1
    load-balancer.hetzner.cloud/use-private-ip: "true"
    load-balancer.hetzner.cloud/name: test-lb
spec:
  selector:
    app.kubernetes.io/instance: svc2
  ports:
    - port: 80
      targetPort: http
      protocol: TCP
      name: http
  type: LoadBalancer
---

However both domains are showing svc1, any ideas? Am I doing this right?

user error, ignore


Generate a proper object constructor expr for the return value in create function code action

Consider the following:
public function main() {
    object {
        string name;
        int age;
    } person = foo();
}

When using the create function code action for foo(), it generates the following:
function foo() returns object {string name;int age;} {

    return object {};
}

Currently, for ease of implementation, we have simply made the return value object {}. Need to see if this can be improved to generate an object constructor expression which matches the return type of the function.

We are closing this issue due to inactivity. If you need further assistance or have additional input, feel free to reopen it. Thank you for helping us maintain a relevant and focused issue list!


Fix small typos

This PR fixes a few typos that I found here and there in the app.

Hi @filau,
Thank's a lot for this PR ! I'm not very good at grammar and spelling, so sorry 😅

No worries! The open-source community is here to fix that ;)


Syntax for parameters

Now it's possible to insert environment variable with {{...}}, need to think some for parameters, to refactor from this:
run('php {{release_path}}/' . trim(get('bin_dir'), '/') . '/console assetic:dump --env={{env}} --no-debug');

To this:
run('php {{release_path}}/%bin_dir%/console assetic:dump --env={{env}} --no-debug');

Also separate parse from Environment class to separate unit.
Does anybody wants to take care of this? :eyes:

Available syntaxes:

%...%
{%...%}
{{%...%}}

+1 - %parameter_name%


Add note field to interop

The note field of biblatex was not added to the note field of hayagriva during conversion. This PR fixes this.

Should this maybe rather replace the annotation in the block above? The annotation is later used for the annote field after all so it doesn't really make sense to have it twice.

Should this maybe rather replace the annotation in the block above? The annotation is later used for the annote field after all so it doesn't really make sense to have it twice.

Looks like you're right. But I would like confirmation by the main developers. I don't want to break things.

By the way @Drodt, do you think you can update #105? I like the change and we will release a new Hayagriva version tomorrow.

It can be merged without errors now.

See #220


PopupMenu throws errors when radio_unchecked is set to empty in theme

Godot version
4.0.beta.6
System information
Windows 11, Vulkan, RTX 2080 Super (516.94)
Issue description
When overriding PopupMenu's theme value radio_unchecked  to <empty> and then opening an OptionButton you get this error. It only occurs once.

E 0:00:01:0004   _gdvirtual__get_width_call: Required virtual method Texture2D::_get_width must be overridden before calling.
  <C++ Source>   scene/resources/texture.h:60 @ _gdvirtual__get_width_call()
E 0:00:01:0004   _gdvirtual__get_height_call: Required virtual method Texture2D::_get_height must be overridden before calling.
  <C++ Source>   scene/resources/texture.h:61 @ _gdvirtual__get_height_call()

Steps to reproduce
Override radio_unchecked for PopupMenu's theme to <empty> by clicking the + icon to the left of the default value.

Open on an OptionButton in a running scene.
Minimal reproduction project
PopupMenuIconErrorMinRepoduction.zip

The error happens here
https://github.com/godotengine/godot/blob/a9fbf3718d4f8455dee1ebad05374d7baf714370/scene/gui/popup_menu.cpp#L555-L556
I tried guarding it with check[i].is_valid() check, but the problem is that the texture is actually valid, but it's a plain Texture2D for some reason.

From looking into this it seems that when loading the theme resource it loads a valid Texture2D here
https://github.com/godotengine/godot/blob/c7ceb94e372216b1b033d7c2ac26d5b7545c4dac/core/io/resource_format_binary.cpp#L820

Manually forcing it not to load the Texture2D from the theme resource with this code in the same function as the above comment
if (set_valid) {
	String sname = name;
	if (sname != "PopupMenu/icons/radio_unchecked")
		res->set(name, value);
}

Gets rid of the error. So it is definitely to do with theme resource saving/loading

After even further looking into this it seems like somehow the theme resource has a sub-resource of a plain Texture2D for the value of PopupMenu/icons/radio_unchecked and I cannot reproduce the error anymore.
[gd_resource type="Theme" load_steps=2 format=3 uid="uid://iht1l1bgm18h"]

[sub_resource type="Texture2D" id="Texture2D_5tucc"]
resource_local_to_scene = false
resource_name = ""

[resource]
PopupMenu/font_sizes/font_separator_size = 16
PopupMenu/font_sizes/font_size = 16
PopupMenu/icons/radio_unchecked = SubResource("Texture2D_5tucc")

This might've been an error of a previous version of Godot 4 as I'm often new versions as they come out and build some myself inbetween betas. So with this I'm closing this issue.


ISPN-1611 Make sure that only one hash wheel timer is used

https://issues.jboss.org/browse/ISPN-1611

integrated.


Question: injectEnvironment can only be called once - Jest

I believe this issue will be fixed when React 15.4 is released as per https://github.com/facebook/react/issues/7386#issuecomment-239635611
I just want to check this is indeed the case and that there's no another issue causing this error that could be fixed in create-react-app.
How to reproduce:

npm install velocity-react
Create a component that utilized velocity-react:

     <VelocityTransitionGroup
         enter={{ animation: { opacity: 1 }, duration: 200 }}
         leave={{ animation: { opacity: 0 }, duration: 200 }}
         runOnMount
       >

       </VelocityTransitionGroup>

Write a Jest snapshot test that checks that this component renders correctly:

it('renders correctly', () => {
	const tree = renderer.create(
		<Component />
	).toJSON();

	expect(tree).toMatchSnapshot();
});

Observe the error in the console

Invariant Violation: ReactCompositeComponent: injectEnvironment() can only be called once.

Yes, 15.4.0 should fix it, this is indeed a React issue.


Memory Leak with RelationalConnection

Any query (IBufferable) gets registered at the RelationalConnection which is shared between all instances of DbContext but they are never unregistered, so a memory leak happens.
In QueryingEnumerable.cs:
Line 109: _relationalQueryContext.Connection.RegisterBufferable(this);

Further technical details
EF Core version: 2.1.3
Database Provider: Microsoft.EntityFrameworkCore.SqlServer
Operating system: Windows 10 18.03
IDE: Visual Studio 2017 15.8.9

@smitpatel to follow up

RelationalConnection which is shared between all instances of DbContext

IRelationalConnection is scoped service just like DbContext. Each DbContext instance has its own copy of RelationalConnection. During the lifetime of DbContext, RelationalConnection remembers the all the queries used with the context instance. We could possibly unregister it after the query has fully enumerated (to align better with "activeQueries" since query is not longer active after it finished enumerating). But this is not a memory leak unless you are using same context for long time rather than unit of work.

Merged via 4236dfd7f2789782cbba26bf0af15b04dfaf2a0c


micro: port operator FLOOR_DIV kernel from lite with test

Complete implementation of TFLM operator FLOOR_DIV and associated TFLM test code.
This represents PR step 5 of the work to port operator FLOOR_DIV as tracked in Issue #45657

@ddavis-2015  Can you please resolve conflicts? Thanks!

@ddavis-2015 This PR is in draft, any update on this? Please. Thanks!

@ddavis-2015 This PR is in draft, any update on this? Please. Thanks!


[Windows] Improve Visual Studio installation scripts to support Preview versions

Description

Set channel via toolset (release or pre)
Invoke Get-VSSetupInstance with flags -Prerelease -All everywhere to find VS properly
Switch vswhere using to Get-VSSetupInstance because of better handling of preview

/azp run windows2016, windows2019

/azp run windows2016, windows2019

/azp run windows2016, windows2019


pdf to txt conversion with Raw=False

Closes #185

This likely requires a change in the tests as there is a failing test that might be due to the pdf option change (and not NIST being down or something like that).

Will be left with Raw=True for now.  Someone  can investigate closely #185 and reopen.


Unhandled Promise [depricated] fix

fairly simple but came across this error and it will crash node servers soon

(node:91812) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Codecov Report

Merging #47 into master will decrease coverage by 0.47%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master      #47      +/-   ##
==========================================
- Coverage   82.89%   82.42%   -0.48%
==========================================
  Files          10       10
  Lines         345      347       +2
  Branches       62       62
==========================================
  Hits          286      286
- Misses         59       61       +2

Impacted Files
Coverage Δ

src/Midi.js
73.07% <0%> (-1.44%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update dfa145e...cd40154. Read the comment docs.

thanks!


Orchestrator Plugin does not install

When I try to install the plugin, this is the result:
$ meltano add orchestrator airflow
Added orchestrator 'airflow' to your project
Variant:	apache (default)
Repository:	https://github.com/apache/airflow
Documentation:	https://hub.meltano.com/orchestrators/airflow--apache

Added required file bundle 'files-airflow' to your project
Variant:	meltano (default)
Repository:	https://github.com/meltano/files-airflow
Documentation:	https://hub.meltano.com/files/files-airflow--meltano

2024-05-15T14:17:31.844493Z [info     ] Installing orchestrator 'airflow'
2024-05-15T14:17:31.870172Z [info     ] Installing file bundle 'files-airflow'
2024-05-15T14:17:33.375277Z [info     ] Logged pip install output to /private/tmp/f/.meltano/logs/pip/orchestrators/airflow/pip.log
2024-05-15T14:17:33.375597Z [error    ] Orchestrator 'airflow' could not be installed: Failed to install plugin 'airflow'.
2024-05-15T14:17:33.375664Z [info     ] ERROR: 404 Client Error: Not Found for url: https://raw.githubusercontent.com/apache/airflow/constraints-2.1.2/constraints-3.11.txt

2024-05-15T14:17:34.212829Z [info     ] Installed file bundle 'files-airflow'
2024-05-15T14:17:34.217558Z [info     ] Adding 'files-airflow' files to project...
2024-05-15T14:17:34.218625Z [info     ] Created orchestrate/dags/meltano.py
2024-05-15T14:17:34.218953Z [warning  ] Installed 1/2 plugins
Need help fixing this problem? Visit http://melta.no/ for troubleshooting steps, or to
join our friendly Slack community.

Failed to install plugin(s)

If I do meltano add files files-airflow or meltano add utility airflow, they seem to work fine, so I'm not sure what the difference is.

meltano add utility airflow is the preferred option now and we try to recommend that (e.g. https://github.com/meltano/meltano/pull/8524).


Refactor Genetics FE codebase

Currently, the UI codebase of genetics has a mix of inconsistencies and anti-patterns that need to be refactored.
Some of the Key tasks will be:

Refactor pages to simple components that only refer to sections
Split big pages queries into atomic section queries
Separate and identify data transformation logic (name functions correctly -  move to specific utils files)
Unify components folders (src/components src/ot-ui-components)

Not immediate


Updated the certificate documentation to include critical information…

… about the certificate access
Certificates uploaded to app services are accessible to all apps hosted in the same resource group. This is critical information and is missing from the documentation. This can lead to security issues in applications that use wildcards to whitelist certificates for code access.

@omkarkhair : Thanks for your contribution! The author(s) have been notified to review your proposed change.

This merge has been pending. Wanted to do a quick check. Please let me know if any supporting evidence needs to be provided for the documentation update.

@cephalin Hi, could you review this proposed update to your article?
Thanks.

@omkarkhair Sorry for the delay. I've cherry-picked your changes into a separate PR and revised it, which is now merged. @ktoliver Please close this PR.


Transparency

Is there a way to configure the transparency amount? If so, some additional documentation would be helpful.

nvm, it's part of style.css


Use kotlin extension functions to expose APIs on mapboxMap

Kotlin extension functions allow to expose APIs on existing classes. The idea is to expose APIs of plugins directly on MapboxMap to create a real plugin system. This would allow for the following developer experience:

add maps gradle dep
add plugin 1 gradle dep
add plugin 2 gradle dep
integrate maps with all public api found on MapboxMap

cc @cammace @zugaldia

Watching the talk at Google IO about ktx, there might be another option which would remove the need to publish a second artifact for each plugin to support this functionality. See proposal KEEP-110 which adds annotations which you can easily slip into your existing library to make the APIs more friendly. Not sure if we want to hold out for this proposal to add ktx support but it is an option.

Some movement on Maps KTX is moving in https://github.com/mapbox/mapbox-plugins-android/pull/712 and https://github.com/mapbox/mapbox-plugins-android/pull/715


Add dataclass prettyprinting.

Merge https://github.com/google/generative-ai-python/pull/78 first.

I merged the reformat, can you rebase so I can see the real changes now? tia!

Ah, I was hoping that would be automatic with the merge.
Done. I've rebased everything.


Mixpanel soon ?

Hey is there a chance mixpanel will be supported?

hey @Theminijohn, we haven't planed that, but if someone likes to contribute, we're happy to support that as well.

Understood, thanks for the answer :)

+1 for mixpanel


RESEARCH: Use CodeInspection methods to get errors, not custom implementation

Benefits:

Allows using other extensions' linters within InteractiveLinter

Sample code to achieve:
CodeInspection.inspectFile(DocumentManager.getCurrentDocument().file).always(function (providers) {
                var results = {};
                _.forEach(providers, function (provider) {
                    _.merge(results, provider.result);
                });
                console.clear();
                _.forEach(results.errors, function (error) {
                    console.log(error);
                });
            });

This code lints the current file, and prints out to console each error (merging all linter results with lodash#merge. The merging would have to be worked on  - this will probably result in two errors given that both JSLint and JSHint linters are installed and that both report the same error.

I couldn't find MiguelCastillo/Brackets-InlineLinting in the extension registry, is it released? What does it do?
I've put together a linter for ESLint, it works but I'd like to see errors inline like interactive linter does it.

@zaggino Brackets-InlineLinting has not been worked on (yet) to my knowledge. The code that allows seeing errors inline is in Brackets-InteractiveLinter: integrating CodeInspection was planned for Brackets-InlineLinting, but due to time constraints, it was never started or finished.

@zaggino A bit more details on inline linting...  I want to abstract out interactive linters UI and put it on top of the codeinpector API.  The intent is to basically provide interactive linter's UI for every linter that plugs into Brackets' linting API.  I have put it aside for a bit, but I would be happy to start it if there is enough interest :)

I'd be definitely interested :) I'm starting a few projects where I'll be using ESLint which doesn't have any good extension for Brackets so I put one together, but now I'm missing nice inline stuff that I was used to.
Personally I don't think it should be too difficult, but you'd probably need to publish a new event somewhere around here https://github.com/adobe/brackets/blob/master/src/language/CodeInspection.js#L434 for it.


Achievement Class needed

[ ] list of achievement achievable
[ ] possible options to choose from for achieving the thing
[ ] rewards
[ ] special sfx
[ ] possible rewards for completing the game/challenge unrelated to clearing the game

Have the player navigate a hallway of achievements using WAD (maybe S). These achievements are like portraits/images where if the player is near it, it'll display that achievements description or criteria to unlock it.

Have the player navigate a hallway of achievements using WAD (maybe S). These achievements are like portraits/images where if the player is near it, it'll display that achievements description or criteria to unlock it.

Let's try and have the 's' key display the description or the hint for getting the achievement.

Have the player navigate a hallway of achievements using WAD (maybe S). These achievements are like portraits/images where if the player is near it, it'll display that achievements description or criteria to unlock it.

Let's try and have the 's' key display the description or the hint for getting the achievement.

I was thinking the descriptions would appear based on proximity


Minor grammar issues

Updated minor grammar issues.

@iamjeeteshsupe : Thanks for your contribution! The author(s) have been notified to review your proposed change.

The first change is not correct. Also the comma changes do not follow Microsoft style. Microsoft uses commas in these instances (the "Oxford comma").


AMQP-591: Fix Permit Release on Factory Destroy

JIRA: https://jira.spring.io/browse/AMQP-591
Don't release a permit if the channel being closed is
actually in the cache (e.g. during destroy() or resetConnection()).
Also drop ERROR log to DEBUG for permit release.
Also add Lars Hvile test (@Ignored because it needs user interaction).
cherry-pick to 1.5.x

Pushed

Good.
I think I'm fine with the fix now.
Merging to let the reporter to test it in his environment against the latest our build.

Merged as https://github.com/spring-projects/spring-amqp/commit/c4985b98305b83563381852aecf743d908db35df and cherry-picked.


can I set SW_STORAGE_ES_OTHER_METRIC_DATA_TTL  less than 30 ?

Because of tow many indexs causes es load high ,can i just set SW_STORAGE_ES_OTHER_METRIC_DATA_TTL  =7 ?

Yes. More than 2 should be OK.


auto linking is not working for react native 0.60 version if we use 2.23.1

I just update the new version of Bugsnag to 2.23.1and install the pods and I am running app then I am getting below error. can any one help on this.. my react native version is 0.60
Undefined symbols for architecture x86_64:
"_RCTGetReactNativeVersion", referenced from:
___44-[BugsnagReactNative findReactNativeVersion]_block_invoke in BugsnagReactNative.o
"OBJC_CLASS$_RCTConvert", referenced from:
objc-class-ref in BugsnagReactNative.o
"_RCTRegisterModule", referenced from:
+[BugsnagReactNative load] in BugsnagReactNative.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
** BUILD FAILED **
I am getting below error also even:
error React Native CLI uses autolinking for native dependencies, but the following modules are linked manually:

bugsnag-react-native (to unlink run: "react-native unlink bugsnag-react-native")
This is likely happening when upgrading React Native from below 0.60 to 0.60 or above.

Hi @naveenthukkani
Can I check how you're running this?
The correct way would be to either run react-native run-ios or launch in Xcode.
If opening in Xcode, please double check that you're opening e.g. MyProject.xcworkspace (not MyProject.xcodeproj) to run the app.
Thanks!

I am sure I am running correctly by using react-native run-ios and if I choose from Xcode also I am running the MyProject.xcworkspace only.. because I am finding pods in my project..

@naveenthukkani
Can you share your Podfile and Podfile.lock?
Also can I double check you've run react-native unlink bugsnag-react-native?

can you please find the Podfile
platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
target 'Tele2CustomerApp' do
Uncomment the next line if you're using Swift or would like to use dynamic frameworks
use_frameworks!
pre_install do |installer|
# workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
end
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == 'react-native-config'
phase = target.project.new(Xcodeproj::Project::Object::PBXShellScriptBuildPhase)
phase.shell_script = "cd ../../"
" && RNC_ROOT=./node_modules/react-native-config/"
" && export SYMROOT=$RNC_ROOT/ios/ReactNativeConfig"
" && ruby $RNC_ROOT/ios/ReactNativeConfig/BuildDotenvConfig.ruby"
    target.build_phases << phase
    target.build_phases.move(phase,0)
  end
  if target.name == "React" || target.name == "BugsnagReactNative" || target.name == "RCTRestart"
    target.remove_from_project
  end
end

end
Pods for Tele2CustomerApp
pod 'React', :path => '../node_modules/react-native/'
pod 'React-Core', :path => '../node_modules/react-native/React'
pod 'React-DevSupport', :path => '../node_modules/react-native/React'
pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket'
pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga/yoga.podspec'
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'RCTSplashScreen', :path => '../node_modules/rn-splash-screen/rn-splash-screen.podspec'
Add the Firebase pod for Google Analytics
pod 'Firebase/Analytics'
Add the pods for any other Firebase products you want to use in your app
For example, to use Firebase Authentication and Cloud Firestore
pod 'Firebase/Auth'
pod 'Firebase/Firestore'
use_native_modules!
Required by RNFirebase
pod 'Firebase/Core', '~> 5.15.0'
end
podfile.lock
PODS:

boost-for-react-native (1.63.0)
BoringSSL (10.0.6):

BoringSSL/Implementation (= 10.0.6)
BoringSSL/Interface (= 10.0.6)

BoringSSL/Implementation (10.0.6):

BoringSSL/Interface (= 10.0.6)

BoringSSL/Interface (10.0.6)
BugsnagReactNative (2.23.2):

BugsnagReactNative/Core (= 2.23.2)
React

BugsnagReactNative/Core (2.23.2):

React

Crashlytics (3.14.0):

Fabric (~> 1.10.2)

DoubleConversion (1.1.6)
Fabric (1.10.2)
Firebase/Analytics (5.15.0):

Firebase/Core

Firebase/Auth (5.15.0):

Firebase/CoreOnly
FirebaseAuth (= 5.2.0)

Firebase/Core (5.15.0):

Firebase/CoreOnly
FirebaseAnalytics (= 5.4.0)

Firebase/CoreOnly (5.15.0):

FirebaseCore (= 5.1.10)

Firebase/Firestore (5.15.0):

Firebase/CoreOnly
FirebaseFirestore (= 0.16.1)

FirebaseAnalytics (5.4.0):

FirebaseCore (~> 5.1)
FirebaseInstanceID (~> 3.3)
GoogleAppMeasurement (= 5.4.0)
GoogleUtilities/AppDelegateSwizzler (~> 5.2)
GoogleUtilities/MethodSwizzler (~> 5.2)
GoogleUtilities/Network (~> 5.2)
"GoogleUtilities/NSData+zlib (~> 5.2)"
nanopb (~> 0.3)

FirebaseAuth (5.2.0):

FirebaseAuthInterop (~> 1.0)
FirebaseCore (~> 5.1)
GoogleUtilities/Environment (~> 5.2)
GTMSessionFetcher/Core (~> 1.1)

FirebaseAuthInterop (1.0.0)
FirebaseCore (5.1.10):

GoogleUtilities/Logger (~> 5.2)

FirebaseFirestore (0.16.1):

FirebaseAuthInterop (~> 1.0)
FirebaseCore (~> 5.1)
FirebaseFirestore/abseil-cpp (= 0.16.1)
"gRPC-C++ (= 0.0.5)"
leveldb-library (~> 1.20)
nanopb (~> 0.3.8)
Protobuf (~> 3.1)

FirebaseFirestore/abseil-cpp (0.16.1):

FirebaseAuthInterop (~> 1.0)
FirebaseCore (~> 5.1)
"gRPC-C++ (= 0.0.5)"
leveldb-library (~> 1.20)
nanopb (~> 0.3.8)
Protobuf (~> 3.1)

FirebaseInstanceID (3.3.0):

FirebaseCore (~> 5.1)
GoogleUtilities/Environment (~> 5.3)
GoogleUtilities/UserDefaults (~> 5.3)

Folly (2<IP_ADDRESS>):

boost-for-react-native
DoubleConversion
Folly/Default (= 2<IP_ADDRESS>)
glog

Folly/Default (2<IP_ADDRESS>):

boost-for-react-native
DoubleConversion
glog

glog (0.3.5)
GoogleAppMeasurement (5.4.0):

GoogleUtilities/AppDelegateSwizzler (~> 5.2)
GoogleUtilities/MethodSwizzler (~> 5.2)
GoogleUtilities/Network (~> 5.2)
"GoogleUtilities/NSData+zlib (~> 5.2)"
nanopb (~> 0.3)

GoogleUtilities/AppDelegateSwizzler (5.8.0):

GoogleUtilities/Environment
GoogleUtilities/Logger
GoogleUtilities/Network

GoogleUtilities/Environment (5.8.0)
GoogleUtilities/Logger (5.8.0):

GoogleUtilities/Environment

GoogleUtilities/MethodSwizzler (5.8.0):

GoogleUtilities/Logger

GoogleUtilities/Network (5.8.0):

GoogleUtilities/Logger
"GoogleUtilities/NSData+zlib"
GoogleUtilities/Reachability

"GoogleUtilities/NSData+zlib (5.8.0)"
GoogleUtilities/Reachability (5.8.0):

GoogleUtilities/Logger

GoogleUtilities/UserDefaults (5.8.0):

GoogleUtilities/Logger

"gRPC-C++ (0.0.5)":

"gRPC-C++/Implementation (= 0.0.5)"
"gRPC-C++/Interface (= 0.0.5)"

"gRPC-C++/Implementation (0.0.5)":

"gRPC-C++/Interface (= 0.0.5)"
gRPC-Core (= 1.14.0)
nanopb (~> 0.3)

"gRPC-C++/Interface (0.0.5)"
gRPC-Core (1.14.0):

gRPC-Core/Implementation (= 1.14.0)
gRPC-Core/Interface (= 1.14.0)

gRPC-Core/Implementation (1.14.0):

BoringSSL (~> 10.0)
gRPC-Core/Interface (= 1.14.0)
nanopb (~> 0.3)

gRPC-Core/Interface (1.14.0)
GTMSessionFetcher/Core (1.2.2)
instabug-reactnative (8.7.0):

React

leveldb-library (1.22)
lottie-ios (3.1.3)
lottie-react-native (3.2.1):

lottie-ios (~> 3.1.3)
React

nanopb (0.3.901):

nanopb/decode (= 0.3.901)
nanopb/encode (= 0.3.901)

nanopb/decode (0.3.901)
nanopb/encode (0.3.901)
Protobuf (3.9.2)
RCTRestart (0.0.13):

React

RCTSplashScreen (5.2.0):

React

React (0.60.6):

React-Core (= 0.60.6)
React-DevSupport (= 0.60.6)
React-RCTActionSheet (= 0.60.6)
React-RCTAnimation (= 0.60.6)
React-RCTBlob (= 0.60.6)
React-RCTImage (= 0.60.6)
React-RCTLinking (= 0.60.6)
React-RCTNetwork (= 0.60.6)
React-RCTSettings (= 0.60.6)
React-RCTText (= 0.60.6)
React-RCTVibration (= 0.60.6)
React-RCTWebSocket (= 0.60.6)

React-Core (0.60.6):

Folly (= 2<IP_ADDRESS>)
React-cxxreact (= 0.60.6)
React-jsiexecutor (= 0.60.6)
yoga (= 0.60.6.React)

React-cxxreact (0.60.6):

boost-for-react-native (= 1.63.0)
DoubleConversion
Folly (= 2<IP_ADDRESS>)
glog
React-jsinspector (= 0.60.6)

React-DevSupport (0.60.6):

React-Core (= 0.60.6)
React-RCTWebSocket (= 0.60.6)

React-jsi (0.60.6):

boost-for-react-native (= 1.63.0)
DoubleConversion
Folly (= 2<IP_ADDRESS>)
glog
React-jsi/Default (= 0.60.6)

React-jsi/Default (0.60.6):

boost-for-react-native (= 1.63.0)
DoubleConversion
Folly (= 2<IP_ADDRESS>)
glog

React-jsiexecutor (0.60.6):

DoubleConversion
Folly (= 2<IP_ADDRESS>)
glog
React-cxxreact (= 0.60.6)
React-jsi (= 0.60.6)

React-jsinspector (0.60.6)
react-native-async-storage (1.2.4):

React

react-native-config (0.11.7):

React

react-native-pdf (5.0.12):

React

react-native-randombytes (3.5.2):

React

react-native-udp (2.6.0):

React

react-native-webview (5.7.0):

React

React-RCTActionSheet (0.60.6):

React-Core (= 0.60.6)

React-RCTAnimation (0.60.6):

React-Core (= 0.60.6)

React-RCTBlob (0.60.6):

React-Core (= 0.60.6)
React-RCTNetwork (= 0.60.6)
React-RCTWebSocket (= 0.60.6)

React-RCTImage (0.60.6):

React-Core (= 0.60.6)
React-RCTNetwork (= 0.60.6)

React-RCTLinking (0.60.6):

React-Core (= 0.60.6)

React-RCTNetwork (0.60.6):

React-Core (= 0.60.6)

React-RCTSettings (0.60.6):

React-Core (= 0.60.6)

React-RCTText (0.60.6):

React-Core (= 0.60.6)

React-RCTVibration (0.60.6):

React-Core (= 0.60.6)

React-RCTWebSocket (0.60.6):

React-Core (= 0.60.6)

rn-fetch-blob (0.11.2):

React-Core

RNDeviceInfo (0.21.5):

React

RNFirebase (5.5.6):

Firebase/Core
React
RNFirebase/Crashlytics (= 5.5.6)

RNFirebase/Crashlytics (5.5.6):

Crashlytics
Fabric
Firebase/Core
React

RNGestureHandler (1.1.0):

React

RNI18n (2.0.15):

React

RNKeychain (3.1.1):

React

RNOpenAppSettings (1.0.0):

React

RNShare (1.1.3):

React

RNSVG (9.3.7):

React

yoga (0.60.6.React)

DEPENDENCIES:

BugsnagReactNative (from ../node_modules/bugsnag-react-native)
DoubleConversion (from ../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec)
Firebase/Analytics
Firebase/Auth
Firebase/Core (~> 5.15.0)
Firebase/Firestore
Folly (from ../node_modules/react-native/third-party-podspecs/Folly.podspec)
glog (from ../node_modules/react-native/third-party-podspecs/glog.podspec)
instabug-reactnative (from ../node_modules/instabug-reactnative)
lottie-react-native (from ../node_modules/lottie-react-native)
RCTRestart (from ../node_modules/react-native-restart/ios)
RCTSplashScreen (from ../node_modules/rn-splash-screen/rn-splash-screen.podspec)
React (from ../node_modules/react-native/)
React-Core (from ../node_modules/react-native/React)
React-cxxreact (from ../node_modules/react-native/ReactCommon/cxxreact)
React-DevSupport (from ../node_modules/react-native/React)
React-jsi (from ../node_modules/react-native/ReactCommon/jsi)
React-jsiexecutor (from ../node_modules/react-native/ReactCommon/jsiexecutor)
React-jsinspector (from ../node_modules/react-native/ReactCommon/jsinspector)
"react-native-async-storage (from ../node_modules/@react-native-community/async-storage)"
react-native-config (from ../node_modules/react-native-config)
react-native-pdf (from ../node_modules/react-native-pdf)
react-native-randombytes (from ../node_modules/react-native-randombytes)
react-native-udp (from ../node_modules/react-native-udp)
react-native-webview (from ../node_modules/react-native-webview)
React-RCTActionSheet (from ../node_modules/react-native/Libraries/ActionSheetIOS)
React-RCTAnimation (from ../node_modules/react-native/Libraries/NativeAnimation)
React-RCTBlob (from ../node_modules/react-native/Libraries/Blob)
React-RCTImage (from ../node_modules/react-native/Libraries/Image)
React-RCTLinking (from ../node_modules/react-native/Libraries/LinkingIOS)
React-RCTNetwork (from ../node_modules/react-native/Libraries/Network)
React-RCTSettings (from ../node_modules/react-native/Libraries/Settings)
React-RCTText (from ../node_modules/react-native/Libraries/Text)
React-RCTVibration (from ../node_modules/react-native/Libraries/Vibration)
React-RCTWebSocket (from ../node_modules/react-native/Libraries/WebSocket)
rn-fetch-blob (from ../node_modules/rn-fetch-blob)
RNDeviceInfo (from ../node_modules/react-native-device-info)
RNFirebase (from ../node_modules/react-native-firebase/ios)
RNGestureHandler (from ../node_modules/react-native-gesture-handler)
RNI18n (from ../node_modules/react-native-i18n)
RNKeychain (from ../node_modules/react-native-keychain)
RNOpenAppSettings (from ../node_modules/react-native-app-settings)
RNShare (from ../node_modules/react-native-share)
RNSVG (from ../node_modules/react-native-svg)
yoga (from ../node_modules/react-native/ReactCommon/yoga/yoga.podspec)

SPEC REPOS:
trunk:
- boost-for-react-native
- BoringSSL
- Crashlytics
- Fabric
- Firebase
- FirebaseAnalytics
- FirebaseAuth
- FirebaseAuthInterop
- FirebaseCore
- FirebaseFirestore
- FirebaseInstanceID
- GoogleAppMeasurement
- GoogleUtilities
- "gRPC-C++"
- gRPC-Core
- GTMSessionFetcher
- leveldb-library
- lottie-ios
- nanopb
- Protobuf
EXTERNAL SOURCES:
BugsnagReactNative:
:path: "../node_modules/bugsnag-react-native"
DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
instabug-reactnative:
:path: "../node_modules/instabug-reactnative"
lottie-react-native:
:path: "../node_modules/lottie-react-native"
RCTRestart:
:path: "../node_modules/react-native-restart/ios"
RCTSplashScreen:
:path: "../node_modules/rn-splash-screen/rn-splash-screen.podspec"
React:
:path: "../node_modules/react-native/"
React-Core:
:path: "../node_modules/react-native/React"
React-cxxreact:
:path: "../node_modules/react-native/ReactCommon/cxxreact"
React-DevSupport:
:path: "../node_modules/react-native/React"
React-jsi:
:path: "../node_modules/react-native/ReactCommon/jsi"
React-jsiexecutor:
:path: "../node_modules/react-native/ReactCommon/jsiexecutor"
React-jsinspector:
:path: "../node_modules/react-native/ReactCommon/jsinspector"
react-native-async-storage:
:path: "../node_modules/@react-native-community/async-storage"
react-native-config:
:path: "../node_modules/react-native-config"
react-native-pdf:
:path: "../node_modules/react-native-pdf"
react-native-randombytes:
:path: "../node_modules/react-native-randombytes"
react-native-udp:
:path: "../node_modules/react-native-udp"
react-native-webview:
:path: "../node_modules/react-native-webview"
React-RCTActionSheet:
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
React-RCTAnimation:
:path: "../node_modules/react-native/Libraries/NativeAnimation"
React-RCTBlob:
:path: "../node_modules/react-native/Libraries/Blob"
React-RCTImage:
:path: "../node_modules/react-native/Libraries/Image"
React-RCTLinking:
:path: "../node_modules/react-native/Libraries/LinkingIOS"
React-RCTNetwork:
:path: "../node_modules/react-native/Libraries/Network"
React-RCTSettings:
:path: "../node_modules/react-native/Libraries/Settings"
React-RCTText:
:path: "../node_modules/react-native/Libraries/Text"
React-RCTVibration:
:path: "../node_modules/react-native/Libraries/Vibration"
React-RCTWebSocket:
:path: "../node_modules/react-native/Libraries/WebSocket"
rn-fetch-blob:
:path: "../node_modules/rn-fetch-blob"
RNDeviceInfo:
:path: "../node_modules/react-native-device-info"
RNFirebase:
:path: "../node_modules/react-native-firebase/ios"
RNGestureHandler:
:path: "../node_modules/react-native-gesture-handler"
RNI18n:
:path: "../node_modules/react-native-i18n"
RNKeychain:
:path: "../node_modules/react-native-keychain"
RNOpenAppSettings:
:path: "../node_modules/react-native-app-settings"
RNShare:
:path: "../node_modules/react-native-share"
RNSVG:
:path: "../node_modules/react-native-svg"
yoga:
:path: "../node_modules/react-native/ReactCommon/yoga/yoga.podspec"
SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
BoringSSL: e10f92a27043805c01071fe815a5cd98ae8212e7
BugsnagReactNative: 0a24a1dd2cac88862d67b938f809bec8274130a9
Crashlytics: 540b7e5f5da5a042647227a5e3ac51d85eed06df
DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
Fabric: 706c8b8098fff96c33c0db69cbf81f9c551d0d74
Firebase: 8bb9268bff82374f2cbaaabb143e725743c316ae
FirebaseAnalytics: c06f9d70577d79074214700a71fd5d39de5550fb
FirebaseAuth: 02e969ff430e156d99d4cb842d77b806b71ad7bb
FirebaseAuthInterop: 0ffa57668be100582bb7643d4fcb7615496c41fc
FirebaseCore: 35747502d9e8c6ee217385ad04446c7c2aaf9c5c
FirebaseFirestore: 58043a1c2d2c91efdaa8d8f385cdbaa2ce750cfe
FirebaseInstanceID: e2fa4cb35ef5558c200f7f0ad8a53e212215f93e
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
GoogleAppMeasurement: 98b71f5e04142793729a5ef23e5b96651ff4b70f
GoogleUtilities: 04fce34bcd5620c1ee76fb79172105c74a4df335
"gRPC-C++": 19eec1ffd34de29453f5fab5b4697ad0f240ad51
gRPC-Core: f4836515817c0eb479aeeb9cc27c91c4ba62a9f6
GTMSessionFetcher: 61bb0f61a4cb560030f1222021178008a5727a23
instabug-reactnative: 6a4b20152fee125f9b884371ef10ccbf721dff1e
leveldb-library: 55d93ee664b4007aac644a782d11da33fba316f7
lottie-ios: 496ac5cea1bbf1a7bd1f1f472f3232eb1b8d744b
lottie-react-native: b123a79529cc732201091f585c62c89bb4747252
nanopb: 2901f78ea1b7b4015c860c2fdd1ea2fee1a18d48
Protobuf: 67fb42ba613def994e61854de2b3164f13790cc4
RCTRestart: dd19aab87fc1118e05b6b5b91b959105647f56b4
RCTSplashScreen: 22368020f6297cdc036be8b3b3413de7701b0fd9
React: 68e7f8dfc27729eade18423072a143120f2f32ab
React-Core: fc9dace551f6c8c1007dd2d3cb1bc10c90a01d3e
React-cxxreact: abe59014fce932d41a08bf1aa5dcad9ca8f0a2c5
React-DevSupport: b0da2fd9ad4ffb25561bf2a328ab84f78f871bdd
React-jsi: 1a4248256b96fa453536a8dafe11b784e24e789d
React-jsiexecutor: 2279e559b921d02dfc6253ebef3dcb3a9dc6c07e
React-jsinspector: a58b86545a0185f69768e78ac96ca9fe43fa3694
react-native-async-storage: fa98f9a2857afb12128c50c59e506f1925d7bd5b
react-native-config:<PHONE_NUMBER>9d92e0e4566ea15a8b9b81028ec342
react-native-pdf: 3668659dc91de39b73f60da4153568c3d8020f51
react-native-randombytes: aa2b5e8bf90a9c0402101c62ed7b145f02940e32
react-native-udp: f218a79de41cbb8b37be0da2af3f5e9efd78a4e8
react-native-webview: 69ca34f590814ae44260d30e293ab4b7b3eea793
React-RCTActionSheet: 49f6a67a7efa6688f637296383d453b97ef13645
React-RCTAnimation: e8047438b2927ebbe630bbf600c7309374075df3
React-RCTBlob: 2c4b28daca5b3e6e356706d8e0c7436a0e8ef492
React-RCTImage: 273501f0529775962551613259c20ccdf1a87cd2
React-RCTLinking: 76c88b3cc98657915a2ba2f20d208e44d0530a43
React-RCTNetwork: 77c11e672ccdcc33da5d047705f100b016497b15
React-RCTSettings: f727c25ad26a8a9bd7272a8ba93781bd1f53952a
React-RCTText: d91537e29e38dc69cf09cbca0875cf5dc7402da6
React-RCTVibration: 7655d72dfb919dd6d8e135ca108a5a2bd9fcd7b4
React-RCTWebSocket: 7cd2c8d0f8ddd680dc76404defba7ab1f56b83af
rn-fetch-blob: f525a73a78df9ed5d35e67ea65e79d53c15255bc
RNDeviceInfo: e7c5fcde13d40e161d8a27f6c5dc69c638936002
RNFirebase: ac0de8b24c6f91ae9459575491ed6a77327619c6
RNGestureHandler: 8a75e1d2f83d73aba148653252953e4bcf363b98
RNI18n: e2f7e76389fcc6e84f2c8733ea89b92502351fd8
RNKeychain: 1a121521011702409f5a1009eb8a1effa81000f3
RNOpenAppSettings: 1169b90a275e9e18c5973e1608949f97d426e7f3
RNShare: 4f206fa36e384e95a0cbf79f2a92490647e93127
RNSVG: 2cc66383316fa84d4c672ccfa5e3bac271b6a2af
yoga: 5079887aa3e4c62142d6bcee493022643ee4d730
PODFILE CHECKSUM: 67f79894eef9e7543a61102f14052ae24c2523ab
COCOAPODS: 1.8.1
I am doing same what you are asking me react-native unlink bugsnag-react-native

@naveenthukkani
I can see this in your Podfile:
      if target.name == "React" || target.name == "BugsnagReactNative" || target.name == "RCTRestart"
        target.remove_from_project
      end

Why are these being removed from the project? That's the likely cause of the errors you're seeing.

no I am causing error before only so that I am removing from my project

@naveenthukkani
It looks like you're using something like the workaround described here:
https://github.com/react-native-community/react-native-svg/issues/621
That relates to conflicts / duplicate symbols where React is included twice. But it appears with your current config the dependencies required for bugsnag-react-native aren't included at all.
Have you recently upgrade to RN 0.60.6. Are you sure the previous workaround is still required? I'd suggest starting by removing these lines:
      if target.name == "React" || target.name == "BugsnagReactNative" || target.name == "RCTRestart"
        target.remove_from_project
      end

to confirm if you're still seeing the previous error.
If the approach still is required, this blog post may help:
https://sandstorm.de/de/blog/post/react-native-managing-native-dependencies-using-xcode-and-cocoapods.html
But I think this is a generic issue with handling iOS dependencies in RN rather than an issue with Bugsnag.

ok thank you I will look into it...

@naveenthukkani did you find a solution?

@mattdyoung
I am getting an error with react-native-bugsnag
ios/Pods/Headers/Public/BugsnagReactNative/BugsnagReactNative.h:3:9: 'React/RCTBridgeModule.h' file not found
Can you tell how it producing after upgrading the react-native?

I have updated the bugsnag-react-native to 2.23.2 version. Still it failing

I am facing the same error

@mattdyoung  In which version of bugsnag-react-native working with the latest react-native.
I am downgraded to 0.60.0 but still the above error arise for me.
Any solution. It is existing for me more than 5 days.

@nihp @sanjayradadiya
The issue you've encountered is the one @nihp already raised separately, so I've responded there:
https://github.com/bugsnag/bugsnag-react-native/issues/426#issuecomment-559552663

@mattdyoung I have a general question about a huge file generated after upgrade.
After react-native upgrade I found huge files like ios/Index/Datasource/some thing....
What is the use of this files. Shall I need to commit this or need to move in .gitignore.
Can you explain why it get generated?

Hi @nihp
I don't believe that folder is anything to do with Bugsnag or React Native. This post suggests it's used by XCode to speed up subsequent builds and can be excluded from source control:
https://stackoverflow.com/questions/47260788/what-is-the-ios-index-datastore-folder-for-in-react-native-development

@mattdyoung Thanks. So only I have mentioned it is a general question

How can i exclude that. If I remove this does it make any error in Xcode


Vep 96

Hi Brad,
I've made some updates following the release of vep 96.
Cheers
M

Matthias;
Thanks again for the updates and fixes for synchronize with the latest VEP.


Fixing another filename capitalization issue.

Pull request #50 already solved issue #66, but while double checking all our require()s I found this one more that was incorrect.

I think we have another issue around 'taco run'. it's around a module named 'remoteBuild' or something.

Maybe, it would make sense trying taco-cli on a Unix-based OS, at least the main workflow: create, platform add, plugin add, run, etc...
That might go a long way in helping flush those capitalization issues.

I agree

Ok, with this commit I've actually gone and tested it out on a Linux box (Ubuntu specifically) and it was able to run tests, so it should be good now.

Awesome. Thanks Jimmy!

:+1:

:+1:


LOG-4439: Initialize filters from url

Allows user to share URLs with pre-filled filters correctly

/cherry-pick release-5.7


Enhanced Authentication Features - Implement OAuth Login

Description:
Currently, the application only supports traditional email/password authentication. Enhance the authentication system by integrating OAuth login, allowing users to log in via their Google accounts or other OAuth providers. This will improve user experience and provide an additional authentication option.
Tasks:

Research OAuth authentication methods and providers, focusing on Google OAuth for initial implementation.
Implement OAuth authentication flow for Google accounts using a library such as OAuthlib or Authlib.
Add a "Login with Google" button to the login page, linking to the OAuth authentication endpoint.
Handle OAuth authentication callback to retrieve user information and create a new account or authenticate an existing user.
Update user session management to support both email/password and OAuth login methods.
Test the OAuth login functionality thoroughly to ensure seamless integration and security.
Update documentation and user instructions to include information on OAuth login.

Sure, here's the grammatically correct version:

At the end, we expect that users will need to log in first before they can access the web functionalities.

Please assign me this issue

can you please change the label to level3?


Add /metric gauge for templates

similar to telegraf, we should have a metric for the number of templates installed in http://localhost:8086/metrics:
# HELP influxdb_telegraf_plugins_count Number of individual telegraf plugins configured
# TYPE influxdb_telegraf_plugins_count gauge
influxdb_telegraf_plugins_count{plugin="aggregators.basicstats"} 1
influxdb_telegraf_plugins_count{plugin="aggregators.final"} 1
influxdb_telegraf_plugins_count{plugin="aggregators.histogram"} 1
influxdb_telegraf_plugins_count{plugin="aggregators.histogram.config"} 2
influxdb_telegraf_plugins_count{plugin="aggregators.merge"} 1

I would expect it to look like this:
# HELP influxdb_templates_install_count Number of InfluxDB Templates installed
# TYPE influxdb_templates_install_count gauge
influxdb_templates_install_count{template="csgo"} 1
influxdb_templates_install_count{template="custom"} 1

similar to https://github.com/influxdata/influxdb/issues/19737

@russ I see "custom", as a template name, is that intended to be a catch-all/generic "custom" template name, or is that referring to a template being named "custom" prior to install? would the template url be a better metric than a template's name so we'd have /wherever/it/lives/csgo/template.yml=3 instead of csgo1=1; csgo2=1; csgo3=1? (assuming it's acceptable to store (perhaps without the host?))

so i think that's a catch all for someone loading up their own template that isn't in the community templates repo.
A template can be a file path, a url, or a byte stream, so it's tough to know what the "right" way to identify it is. I think template url would be good, and then file name for a file, and maybe just "byte_stream" for a byte stream?
I think the idea was to get a sense of the most popular templates being installed from our community templates repo.


Move models from Common to Core

Description
This PR moves the various models that were declared in Common to the Core library. The Core library has domain models that do not depend on external services.  This PR is in preparation for another PR which isolates the Oracle Data API generated types. Care was taken to ensure models are exactly the same. All unit tests continue to work. There are multiple commits in the PR as I moved the models in smaller groups to avoid massive commit which would be difficult to troubleshoot.
Marked as draft. I would ask if one or more of you can verify in your docker compose environment. When creating this PR, Citizen API on my machine was complaining about port 5080 already in use. Could be resolved after reboot. But port or docker changes are not part of this PR.
Type of change

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

if your change is a breaking change, please add breaking change label to this PR
How Has This Been Tested?
Please describe the tests that you ran to verify your changes.
Does the change impact or break the Docker build?

[ ] Yes
[ ] No

If Yes: Has Docker been updated accordingly?

[ ] Yes
[ ] No

Checklist:

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have made corresponding changes to the documentation
[ ] New and existing unit tests pass locally with my changes

You requested reviewers, but this PR is still in draft. Is it ready for review?

You requested reviewers, but this PR is still in draft. Is it ready for review?

It is ready now for review


TypeError specializing type alias with generic model

Initial Checks

[X] I confirm that I'm using Pydantic V2

Description
Type aliases with type variables on the right side can usually be specialized.
For example this works perfectly:
import typing as t

T = t.TypeVar("T")

class Model(t.Generic[T]):
    def __init__(self, x: T) -> None:
        self.x = x

OptModel = Model[T] | None

m: OptModel[str] = Model(x="foo")

But it doesn't really work with a generic pydantic model. The example code below raises a type error on m type annotation:
TypeError: There are no type variables left in __main__.Model | None

So looks like the type alias cannot be specialized anymore.
Also note that it works with the new 3.12 syntax however. eg. using
type OptModel[T] = Model[T] | None

for the type alias definition, we don't get a type error anymore.
Example Code
import typing as t

from pydantic import BaseModel

T = t.TypeVar("T")

class Model(BaseModel, t.Generic[T]):
    x: T

OptModel = Model[T] | None

m: OptModel[str] = Model(x="foo")

Python, Pydantic & OS Version
pydantic version: 2.5.3
        pydantic-core version: 2.14.6
          pydantic-core build: profile=release pgo=true
               python version: 3.10.13 (main, Dec 18 2023, 00:00:00) [GCC 13.2.1 20231205 (Red Hat 13.2.1-6)]
                     platform: Linux-6.6.13-200.fc39.x86_64-x86_64-with-glibc2.38
             related packages: typing_extensions-4.9.0

@DeviousStoat,
Thanks for this report. I'm going to mark this as a feature request, as this is more of a new feature than a bug.

Mmh maybe I didn't explain correctly but this is definitely a bug. Pydantic's new generic model is not handling generic type aliases correctly. This is supposed to work and was working before. There is nothing pydantic specific in that, this is python's generic type system that pydantic is not really handling well on this part.

@DeviousStoat,
I think the best workaround we could use for now is to raise an error when a user attempts to use BaseModels like this, explaining that Pydantic doesn't currently support schemas for generic type aliases.
This is certainly something that we want to support in the future, but with the way that we handle generic models internally at the moment, this isn't easy to support.

ooh okay, makes sense now. Thank you for the details.

I added the V3 label, as that's when I anticipate we might do a significant overhaul of internal generic logic, but this could potentially be addressed before then 👍


format 'commodore1581' is broken

td1581-optimized.flux.7z.zip
Please see the attached file (sorry, a zip is not compressing the data enough, so I needed to use 7zip. And in order to be able to upload that to github, I needed to package the 7z inside a zip)
The file "td1581-optimized.flux" contains a flux image of the real test-/demo 1581 disk. Only flux normalisation has been done: Flux times are changed to their optimum theorectical value - making the image highly compressible.
td1581.d81 contains the well known content of that disk. That's the expected result.
fluxengine read commodore1581 -s td1581-optimized.flux -o foo.d81
yields many errors like:
0.0: 500 ms in 145284 bytes
60 records, 30 sectors; 1.66us clock (602kHz); 10 distinct sectors;
Required sector 0 missing;
logical track 0.1; 15360 bytes decoded.
0.1: 500 ms in 145323 bytes
60 records, 30 sectors; 1.66us clock (603kHz); 10 distinct sectors;
Required sector 0 missing;
logical track 0.0; 15360 bytes decoded.
and the resulting image is malformed.
Also
fluxengine write commodore1581 -i td1581.d81 -d foo.scp
creates an scp file with malformed sector headers - an original commodore 1581 disk does not contain sector 0, but the generated .scp does.

I have tested this again with the latest snapshot available for download.
Now the terminal output looks quite good:
0.0: 492 ms in 145284 bytes
no more data; giving up
60 raw records, 30 raw sectors; 1.66us clock (602kHz)
sectors: 0.0.0? 0.0.1? 0.0.2? 0.0.3? 0.0.4? 0.0.5? 0.0.6? 0.0.7? 0.0.8? 0.0.9? 0.1.1 0.1.2 0.1.3 0.1.4 0.1.5 0.1.6 0.1.7 0.1.8 0.1.9 0.1.10
5120 bytes decoded
0.1: 492 ms in 145323 bytes
no more data; giving up
60 raw records, 30 raw sectors; 1.66us clock (602kHz)
sectors: 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6 0.0.7 0.0.8 0.0.9 0.0.10 0.1.0? 0.1.1? 0.1.2? 0.1.3? 0.1.4? 0.1.5? 0.1.6? 0.1.7? 0.1.8? 0.1.9?
5120 bytes decoded
1.0: 492 ms in 145242 bytes
no more data; giving up
60 raw records, 30 raw sectors; 1.66us clock (602kHz)
sectors: 1.0.0? 1.0.1? 1.0.2? 1.0.3? 1.0.4? 1.0.5? 1.0.6? 1.0.7? 1.0.8? 1.0.9? 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.1.10
5120 bytes decoded
1.1: 492 ms in 145284 bytes
no more data; giving up
60 raw records, 30 raw sectors; 1.66us clock (602kHz)
sectors: 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.0.10 1.1.0? 1.1.1? 1.1.2? 1.1.3? 1.1.4? 1.1.5? 1.1.6? 1.1.7? 1.1.8? 1.1.9?
5120 bytes decoded
but the resulting .d81 file is still malformed.

Hmm, interesting --- the '0.0.1?' entries are saying that it's looking for but not finding a sector on track 0, head 0, sector ID 1; the '0.1.1' is saying that it's seen a sector on track 0, head 1, sector ID 1. So it's somehow seen the wrong head. I notice that the format definition is inconsistent in its use of swap_sides, which is almost certainly a bug. You could try adding --decoder.ibm.trackdata.swap_sides=true --layout.layoutdata.physical.start_sector=1 and seeing if that helps. I'll test this myself when I get the chance.
I have actually just done a huge rework of the sector layout stuff, to make it less awful, so I'm unsurprised that there's fallout. Sorry about that!

Thanks. I'll test that.
BTW: It might be a good idea to add the sample file from this issue to the fluxengine-testdata repo.

Am I making something wrong?
I've used the sample data from the initial post of this issue. Then I ran this command:
fluxengine read commodore1581 -s td1581-optimized.flux -o foo.d81
After that I compared »foo.d81« with the expected image »td1581.d81« from the sample data (using »fc /b td1581.d81 foo.d81« in Windows). More or less completly different. The Software DirMaster from Style confirms this result: It can open td1581.d81, but not foo.d81.

And
fluxengine write commodore1581 -i td1581.d81 -d foo.scp --drive.rotational_period_ms 500
yields in the wrong result, too.

Flux to d81:
It turns out if I swap the sides in the resulting d81 file, then it is good.
d81 to flux:
I had to repair the header: Endtrack should not be 00. Number of sides should be both. After that the image has been nearly ok, only the sector data of the sides has tio be swapped (the sector headers are ok).

Hmm.
I can actually repeat that with your flux file. But I also have a Kryoflux stream of the same disk (I was really confused until I realised this... I wasn't expecting the resulting data to all be the same!) and it works there. My initial thought is that the flux file is bad, i.e. the tracks are labelled backwards. That might be possible depending when you made it. But I tried actually writing a C64 image to disk, and that's failing because due to verification mismatches --- it's clearly seeing sectors with the wrong label.
I haven't found a reference yet for how the 1581 actually stores its data; i.e. if the data itself is on the opposite side, or whether the data is on the usual side (side 0 on the bottom, side 1 on the top) and it's just the side bytes in the sector headers which are inverted.

Oh well, I think that is easy to explain:
The 1581 (and the CMD FD2000 and CMD FD4000) all swap the sides together with the data. But when reading, the controller ignores the side byte inside the sector header . It just accesses the physical "right" side. So yes, with wrong sector headers, the disk will work on a real 1581.
So you can get different images of flux data. Mine is from an original disk I got from ebay. If you write the disk with a pc (there is ms dos software for that available), then sector headers will probably be pc like regarding the side byte).
Yes, 1581 info's hard to find, that's why I bought the 1581 test demo disk from ebay.

BTW: The flux file has been created from valid .scp by converting it with an older version of fluxengine. The mentined greaseweazle issue has the original .scp attached. It really has the same test results.

Okay, let's try this one. It now roundtrips correctly, and will decode both the Kryoflux stream and the flux file you sent me into images which match your d81 file.
The secret, BTW, was to invert the side byte in the header when writing, ignore it on reading, but not to swap the actual data...

I'm just testing the latest state and 1581 is broken. It needs swap_sides. I come back every year to fight for swap_sides. But let me try to get it working somehow so that I can provide a PR.

That's right. Without swapping the sides, the roundtrip may work, but the generated d81 file cannot match the expected one.
In case of Kryoflux, the option "-oo4" is needed, which means "side 1 then side 0" for each track of the image file. That is what e mean by swapping sides.

I can confirm that these are the only problems from Fluxengine with d81:

Sides need to be swapped.

Header of generated .scp defective: end track (byte $7) and sides (byte $A) must be corrected.

If one provides a bad workaround by swapping the pages in the D81 after read of fluxengine resp. before write of fluxengine, then when reading the generated repaired D81 is okay and when writing the generated .scp file (header corrected by hex editor) is good.

Aaargh.

facepalm
I managed to overwrite the td1581.img file I got from @markusC64 and so have been testing all along against the wrong image...

Okay, a fix is in place.
I'm not going to tempt fate by closing the bug again. PTAL?

I'm going to test that version today in the evening ( gmt+2, for other time zones it might not be the evening ).

It is still broken. SwapSides is not taken into account if set. I commented in the latest PR instead of here yesterday.
I moved option swapSides back onto the layout yesterday night in my local code but was still unsuccessful in getting it to write d81 to disk. Still inestigating.

Well, that's interesting:
I have converted my .flux file to .d81. That works correctly.
Then I have converted the td1581.d81 to .scp with the command I mentioned some days ago:
fluxengine write commodore1581 -i td1581.d81 -d foo.scp --drive.rotational_period_ms 500
Well, that also worked - but the resulting file still have the two bytes wrong in the header. Which breaks some tools working on that .scp file.
After fixing those two bytes greaseweazle can decode that .scp file to a d81 file which equals td1581.d81. Which is great, because greaseweazle checks track, side and sector on each block header to be correctly set - it does not ignore the size.
Well, @hpingel reports writing back goes wrong. So there must be something that makes a difference when writing to a real floppy (disk). Perhaps (just a guess!) related to the wrong header values of the .scp file.
Anyway, even if my testing described above in this post is quite good, it's not perfect. I'll check the length of the gaps right now.

Well, the gap lengths look fine, the same as on my sample file. The gap content differs. But you generated gap content looks valid.
The whole track is 1 byte too short, which is no problem at all because its clearly in rotation tolerance.
So if writing to real floppy (disk) fails, it's probably something with metadata, because the flux is correctly generated.
Remeber I have to correct two bytes in the header of the .scp file before it is good.

Hm, I cannot write back to real floppy for some reason with my GreaseWeazle V4.
With the GreaseWeazle Software, writing works. With fkuxengine software, I get a verify error and abortion after the very first track.

I rewrote the entire layout engine. It now round-trips correctly and reads the demo disk flux files correctly and will write to disk and the verify works. PTAL?

You da man! Great news! Thank you for your work and this great open source project!
I have good news: I have taken two d81-Image-Files from the CSDb.org and written them to real disks using your latest code and the Cypress PSOC dongle. The disks both work on my C64 with a real 1581 disk drive.
I haven't tested any raw flux file reading or writing yet but I gather that should work as that was what you have tested. I also haven't tested any other format than 1581.
Thanks again and please never take my statements like "still broken" as criticism! This project is so much fun, to see it work and to somehow help to improve it.

Oh, I forgot one thing: Tonight I did a scratch make as an incremental make seemed to fail. But I was also switching git branches so something got mixed up.

Oh, thank goodness. I thought this would never get fixed...
So, yeah, this one all boiled down to the whole layout stuff being essentially bodged together over time, and the 1581 with its weird side-swapping behaviour caused it to fall down completely. The new approach where all the mapping management is in a single place which is used everywhere is so much cleaner and easier to work with, and I'm much happier with it, so thanks for keeping poking me to do this. It'll actually let me do more cleanup, which is nice.
Yes, the makefile isn't quite right --- I haven't figured out why yet. I'd love to use a better build system but I've been searching for a suitable one for years... and yeah, it's slower now, but mostly because there are more and more complex files (the GUI stuff takes an age to build). Also, I've got a 2012 i7-3770k.
Closing now!
(Also, @markusC64: could you please file a bug for the SCP header issue?)

(Also, @markusC64: could you please file a bug for the SCP header issue?)

Here you are: #593

BTW: Are you interested in sample flux images from CMD FD2000 and CMD FD4000 (both C64)? Both together with the expected sector based image?

@markusC64 Yes, I am! Preferably blank ones so I don't have to worry about copyright and I can add them to the test corpus, but anything's good.

I cannot provide a blank image, because I do not have that floppies. But I can provide an Image containing just one partition with just one file that has just random data.
Surely no copyright on random data.
In the »Forum 64« weÄve created that in order to be used for testing, feature requests, bug reports and likewise. I normalized the flux for extrem,e compression supporting the mentioned use cases.
It will probably be the best to open a new issue for that, asking for support of that.

Ah, I forgot to mention: The idea of having that image filled with one random file is that sector missmappings in the image file are detectable.

Yup, that's absolutely fine.


[WIP] Grover model

Added a model in order to easily perform Grover's algorithm for any Oracle and Superposition.
Added a grover-playground inside examples in order to perform early tests, but pytests have to be built still in order to make sure everything is working as intended.
Any changes or improvements in order to better include it into Qibo are welcome.

Hi all,
I have been checking the grover model and I have written an example for it. In the corresponding folder examples/grover you can see two files. example_1.py is copied from what Sergi wrote, and example_2.py is mine. In this second file I have written a Grover code for finding all the entries with num_1 1's. For instance, if we want no 1's, the only option is 000...000, and so on. I have checked both the iterative and standard way, and I have seen that the standard way is not working as expected.
@igres26 could you please take a look at that? I'll do it myself and will let you know in case I see something

Ok, forget what I just said, I had understood the oracle in a bad way with regard to reseting ancillas to 0. It's working fine

Things seem to be working on the examples. I would suggest upping the number of samples when the number of solutions is large in the exact Grover, as some non-solutions might appear with small probability.

I have deleted examples to work on it on another branch, so we can merge this one and leave that for the near future

@igres26, concerning pylint, I have fixed that in https://github.com/Quantum-TII/qibo/commit/d1b55d6d74338f3689054023f654bfdc8f9ac8bc (master). Merging master should fix the issue in this and other PRs.

Nice! There is another branch (grovermodel_ex) with some examples. Should we merge this one too?

@AdrianPerezSalinas could you please open another PR pointing to this?

Do we merge that one to main or grovermodel?

Just open the PR pointing to the grovermodel branch.

Hi @scarrazza , I am not able to relate grovermodel and grovermodel_ex, and do not know why. It looks like the grovermodel branch is gone, but we have this PR. I do not know what is going on. Can't we open a PR on a branch which is already a PR?

@AdrianPerezSalinas if you have the code, can you create a new branch and then open a PR?

Do you mean a new branch with both code and examples?

Do you mean a new branch with both code and examples?

not really, take the branch in this PR as baseline, create a new branch and then add the examples.

Okey now there is a branch called  examples_grover pointing to main for PR. I do not know why I cannot merge that one with grovermodel. Maybe is this branch deleted?

@AdrianPerezSalinas thanks, I have restored the branch.