ibmcloud: Add end-to-end Terraform configuration

Add Terraform configuration that does end to end setup and test of the peer pods demo environment
Add documentation for the e2e configuration.
Fixes #41
Signed-off-by: mattarno<EMAIL_ADDRESS>

I’ve refactored the Terraform configurations for the cloud API adaptor so that there’s now a single configuration you can run that sets up and tests the entire demo environment.
I had to do a largeish amount of refactoring on the Terraform configurations that set up the individual steps of the demo to make the end to end configuration possible to run.
In the Terraform configurations that are called as modules by the e2e configuration, for resource parameters that were created earlier by the e2e configuration you need to pass in the ID of the created resource, not the name. This is because if you pass in the name and use the data source to get the ID, the data source will try and get the resource before it has been created. If you’re configuration is actually creating the resource, and hence you know its ID from the output from the module that creates the resource, it makes more sense to pass in the resource ID, which is not known until the resource gets created, to the next module rather than use the resource name and the data source to look up the ID. That enforces the right chain of dependencies so that Terraform executes actions in the right order.
For compatibility with running the Terraform configurations individually, for resource parameters you need to specify using the ID in the e2e configuration there is also the option of specifying those resources by name. The intended use case is when calling those configurations individually, not as part of the e2e module.
Where you have a resource that can be specified by a name or an ID I cannot find any sensible way in Terraform to give that resource a default name value apart from null. The problem is when you have the data sources like this
data “ibm_is_vpc” “vpc” {
 count = local.vpc_name != null ? 1 : 0
 name = local.vpc_name
}

You cannot introduce anything to local.vpc name that makes it not known when you run terraform plan. So for example adding this to your locals {}
 vpc_name = var.vpc_name == null && var.vpc_id == null ? “tok-vpc” : var.vpc_name

which is the logic I’d want to apply to set local.vpc_name to a default value, does not work in the e2e configuration because var.vpc_id comes from the output of another module and isn’t known until that module has finished executing, and so that ‘taints’ local.vpc_name and makes it not known at plan-time, and therefore unsuitable to use in the count.
To make running the Ansible playbooks work in the e2e Terraform you need to introduce a parameter for the Ansible playbook subdirectory. However, you cannot use variables in a destroy-time provisioner. So it’s a bit of hack but what I have to do is copy the ansible playbooks used in the destroy-time provisioner to the Terraform configuration’s base directory and run them from there.

Just a quick update on my review so far:

I hit an issue with the podvm_image_name validation (and have chatted to Matt about it), but once I set a name that ended with -amd64 I was able to get the e2e process running with a minimal set of variables supplied:
ibmcloud_api_key, ibmcloud_user_id,cluster_name,ssh_key_name,podvm_image_name,  cos_bucket_name and ssh_pub_key
I'm going to next try and create an s390x based cluster using a few more of the optional variables and then start testing the individual modules (the old/advanced approach).

I've now managed to get the e2e process tested with a s390x-based cluster, running in Toronto and specifying all the optional variables. I also tested the image architecture fix too.
Next up is to run through the individual module approach...

@yoheiueda, @liudalibj - I've reviewed this from an end-user point of view, but my terraform skills are very limited, so if you are available to take a look from that perspective that would be great. Thanks!

I will take a look on this today.

Thanks for all the feedback, Yohei @yoheiueda , Da Li @liudalibj and Steve @stevenhorsman.
I should have addressed it in my latest commit so this PR should be ready to be re-reviewed


upstream changed salt.utils.jid.gen_jid

Older Salts exepct 0 arguments: eg, salt.utils.jid.gen_jid()
Newer Salts want __opts__: eg, salt.utils.jid.gen_jid(__opts__)
I instructed daemon.py to adapt to this, but it's a little weird. Is it better to interrogate the Salt import version?

We have a couple of these hitting us with the new version of salt. We should probably just peg to the newer version of salt (to make sure that we're getting bugfixes and CVE fixes) and just deal with the growing pains.

Since we control the salt version through our package build process, we don't need to provide backwards compat

Oh, we package a version of salt right along with hubble?
How does it not conflict with other versions of salt on the system? I need to go slog around in there I think.
So I should correct this to just use the gen_jid(opts) call directly and expect a 2018.x peg soon instead?

This is only for the pyinstaller packages we create with Docker. Because we use pyinstaller, it's the rough equivalent of static linking -- we include python and all the deps in a portable directory that doesn't interfere with existing installs.

@jettero Will you modify this to just pass in __opts__ please? We're just standardizing on 2018.3 I think.

I changed it to just always pass in opts... then rebased to develop ... and got a merge conflict on the fast forward.
Seems someone already did the ask. I suggest we just delete or reject this PR


Numpy Error when running on Big Sur

Hi,
Has anyone experienced issues when trying to run python3 install_requirements.py in Big Sur OS.
Seems like the problem is related to the numpy library. However, I was able to install numpy through home brew and did not get the same error.
Happened on Big Sur running on a M1 chip
Here is the error log:
Requirement already satisfied: pip in /opt/homebrew/lib/python3.9/site-packages (20.3.3)
WARNING: Skipping depthai as it is not installed.
Ignoring open3d: markers 'platform_machine != "armv7l" and python_version < "3.9"' don't match your environment
Collecting argcomplete==1.12.1
Using cached argcomplete-1.12.1-py2.py3-none-any.whl (38 kB)
Collecting depthai==<IP_ADDRESS>
Using cached depthai-<IP_ADDRESS>.tar.gz (84 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... done
Collecting numpy==1.19.3
Using cached numpy-1.19.3.zip (7.3 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing wheel metadata ... error
ERROR: Command errored out with exit status 1:
command<EMAIL_ADDRESS>/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/tmp60t7dj_s
cwd: /private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651
Complete output (217 lines):
Running from numpy source directory.
setup.py:480: UserWarning: Unrecognized setuptools command, proceeding with generating Cython sources and expanding templates
run_build = parse_setuppy_commands()
Processing numpy/random/_bounded_integers.pxd.in
Processing numpy/random/_philox.pyx
Processing numpy/random/_bounded_integers.pyx.in
Processing numpy/random/_sfc64.pyx
Processing numpy/random/_mt19937.pyx
Processing numpy/random/bit_generator.pyx
Processing numpy/random/mtrand.pyx
Processing numpy/random/_generator.pyx
Processing numpy/random/_pcg64.pyx
Processing numpy/random/_common.pyx
Cythonizing sources
blas_opt_info:
blas_mkl_info:
customize UnixCCompiler
libraries mkl_rt not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
NOT AVAILABLE
blis_info:
  libraries blis not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

openblas_info:
  libraries openblas not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

atlas_3_10_blas_threads_info:
Setting PTATLAS=ATLAS
  libraries tatlas not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

atlas_3_10_blas_info:
  libraries satlas not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

atlas_blas_threads_info:
Setting PTATLAS=ATLAS
  libraries ptf77blas,ptcblas,atlas not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

atlas_blas_info:
  libraries f77blas,cblas,atlas not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

accelerate_info:
  libraries accelerate not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
Library accelerate was not found. Ignoring
  libraries veclib not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
Library veclib was not found. Ignoring
  FOUND:
    extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
    extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
    define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]

  FOUND:
    extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
    extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
    define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]

non-existing path in 'numpy/distutils': 'site.cfg'
lapack_opt_info:
lapack_mkl_info:
  libraries mkl_rt not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

openblas_lapack_info:
  libraries openblas not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

openblas_clapack_info:
  libraries openblas,lapack not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

flame_info:
  libraries flame not found in<EMAIL_ADDRESS>'/usr/local/lib', '/usr/lib', '/opt/local/lib']
  NOT AVAILABLE

atlas_3_10_threads_info:
Setting PTATLAS=ATLAS
  libraries lapack_atlas not found in<EMAIL_ADDRESS>  libraries tatlas,tatlas not found in<EMAIL_ADDRESS>  libraries lapack_atlas not found in /usr/local/lib
  libraries tatlas,tatlas not found in /usr/local/lib
  libraries lapack_atlas not found in /usr/lib
  libraries tatlas,tatlas not found in /usr/lib
  libraries lapack_atlas not found in /opt/local/lib
  libraries tatlas,tatlas not found in /opt/local/lib
<class 'numpy.distutils.system_info.atlas_3_10_threads_info'>
  NOT AVAILABLE

atlas_3_10_info:
  libraries lapack_atlas not found in<EMAIL_ADDRESS>  libraries satlas,satlas not found in<EMAIL_ADDRESS>  libraries lapack_atlas not found in /usr/local/lib
  libraries satlas,satlas not found in /usr/local/lib
  libraries lapack_atlas not found in /usr/lib
  libraries satlas,satlas not found in /usr/lib
  libraries lapack_atlas not found in /opt/local/lib
  libraries satlas,satlas not found in /opt/local/lib
<class 'numpy.distutils.system_info.atlas_3_10_info'>
  NOT AVAILABLE

atlas_threads_info:
Setting PTATLAS=ATLAS
  libraries lapack_atlas not found in<EMAIL_ADDRESS>  libraries ptf77blas,ptcblas,atlas not found in<EMAIL_ADDRESS>  libraries lapack_atlas not found in /usr/local/lib
  libraries ptf77blas,ptcblas,atlas not found in /usr/local/lib
  libraries lapack_atlas not found in /usr/lib
  libraries ptf77blas,ptcblas,atlas not found in /usr/lib
  libraries lapack_atlas not found in /opt/local/lib
  libraries ptf77blas,ptcblas,atlas not found in /opt/local/lib
<class 'numpy.distutils.system_info.atlas_threads_info'>
  NOT AVAILABLE

atlas_info:
  libraries lapack_atlas not found in<EMAIL_ADDRESS>  libraries f77blas,cblas,atlas not found in<EMAIL_ADDRESS>  libraries lapack_atlas not found in /usr/local/lib
  libraries f77blas,cblas,atlas not found in /usr/local/lib
  libraries lapack_atlas not found in /usr/lib
  libraries f77blas,cblas,atlas not found in /usr/lib
  libraries lapack_atlas not found in /opt/local/lib
  libraries f77blas,cblas,atlas not found in /opt/local/lib
<class 'numpy.distutils.system_info.atlas_info'>
  NOT AVAILABLE

  FOUND:
    extra_compile_args = ['-msse3', '-I/System/Library/Frameworks/vecLib.framework/Headers']
    extra_link_args = ['-Wl,-framework', '-Wl,Accelerate']
    define_macros = [('NO_ATLAS_INFO', 3), ('HAVE_CBLAS', None)]

/opt/homebrew/Cellar/python@3.9/3.9.1_5/Frameworks/Python.framework/Versions/3.9/lib/python3.9/distutils/dist.py:274: UserWarning: Unknown distribution option: 'define_macros'
  warnings.warn(msg)
running dist_info
running build_src
build_src
building py_modules sources
creating build
creating build/src.macosx-11-arm64-3.9
creating build/src.macosx-11-arm64-3.9/numpy
creating build/src.macosx-11-arm64-3.9/numpy/distutils
building library "npymath" sources
Traceback (most recent call last):
  File "/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
    main()
  File "/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
    json_out['return_val'] = hook(**hook_input['kwargs'])
  File "/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 133, in prepare_metadata_for_build_wheel
    return hook(metadata_directory, config_settings)
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-build-env-5br9n7ar/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 157, in prepare_metadata_for_build_wheel
    self.run_setup()
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-build-env-5br9n7ar/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 248, in run_setup
    super(_BuildMetaLegacyBackend,
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-build-env-5br9n7ar/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 142, in run_setup
    exec(compile(code, __file__, 'exec'), locals())
  File "setup.py", line 508, in <module>
    setup_package()
  File "setup.py", line 500, in setup_package
    setup(**metadata)
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/core.py", line 169, in setup
    return old_setup(**new_attr)
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-build-env-5br9n7ar/overlay/lib/python3.9/site-packages/setuptools/__init__.py", line 165, in setup
    return distutils.core.setup(**attrs)
  File<EMAIL_ADDRESS>line 148, in setup
    dist.run_commands()
  File<EMAIL_ADDRESS>line 966, in run_commands
    self.run_command(cmd)
  File<EMAIL_ADDRESS>line 985, in run_command
    cmd_obj.run()
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-build-env-5br9n7ar/overlay/lib/python3.9/site-packages/setuptools/command/dist_info.py", line 31, in run
    egg_info.run()
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/command/egg_info.py", line 24, in run
    self.run_command("build_src")
  File<EMAIL_ADDRESS>line 313, in run_command
    self.distribution.run_command(command)
  File<EMAIL_ADDRESS>line 985, in run_command
    cmd_obj.run()
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/command/build_src.py", line 144, in run
    self.build_sources()
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/command/build_src.py", line 155, in build_sources
    self.build_library_sources(*libname_info)
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/command/build_src.py", line 288, in build_library_sources
    sources = self.generate_sources(sources, (lib_name, build_info))
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/command/build_src.py", line 378, in generate_sources
    source = func(extension, build_dir)
  File "numpy/core/setup.py", line 658, in get_mathlib_info
    st = config_cmd.try_link('int main(void) { return 0;}')
  File<EMAIL_ADDRESS>line 241, in try_link
    self._check_compiler()
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/command/config.py", line 80, in _check_compiler
    self.fcompiler = new_fcompiler(compiler=self.fcompiler,
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/fcompiler/__init__.py", line 880, in new_fcompiler
    compiler = get_default_fcompiler(plat, requiref90=requiref90,
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/fcompiler/__init__.py", line 851, in get_default_fcompiler
    compiler_type =  _find_existing_fcompiler(matching_compiler_types,
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/fcompiler/__init__.py", line 802, in _find_existing_fcompiler
    c.customize(dist)
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/fcompiler/__init__.py", line 526, in customize
    linker_so_flags = self.flag_vars.linker_so
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/fcompiler/environment.py", line 37, in __getattr__
    return self._get_var(name, conf_desc)
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/fcompiler/environment.py", line 53, in _get_var
    var = self._hook_handler(name, hook)
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/fcompiler/__init__.py", line 705, in _environment_hook
    return hook()
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/fcompiler/gnu.py", line 346, in get_flags_linker_so
    flags = GnuFCompiler.get_flags_linker_so(self)
  File "/private/var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/pip-install-tomzolhy/numpy_92985193da7a427c82dd73d9d6d03651/numpy/distutils/fcompiler/gnu.py", line 136, in get_flags_linker_so
    os.environ['MACOSX_DEPLOYMENT_TARGET'] = target
  File<EMAIL_ADDRESS>line 684, in __setitem__
    value = self.encodevalue(value)
  File<EMAIL_ADDRESS>line 756, in encode
    raise TypeError("str expected, not %s" % type(value).__name__)
TypeError: str expected, not int
----------------------------------------

ERROR: Command errored out with exit status 1<EMAIL_ADDRESS>/opt/homebrew/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /var/folders/45/h1sx4z4164v9hqc36ryjvvfm0000gn/T/tmp60t7dj_s Check the logs for full command output.
Traceback (most recent call last):
File "/Users/sebastianvillalobos/Sabana Tech/smartaccess/depthai/install_requirements.py", line 17, in
subprocess.check_call([*pip_install, "-r", "requirements.txt"])
File<EMAIL_ADDRESS>line 373, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command<EMAIL_ADDRESS>'-m', 'pip', 'install', '--user', '-r', 'requirements.txt']' returned non-zero exit status 1.

Hi @esbasti ,
I have not seen this.  But I do have something that might be helpful.  Here is what we did to get development working on M1 Macs:
https://discuss.luxonis.com/d/69-running-depthai-on-apple-m1-based-macs
The why is that some development tools don't yet run natively on M1 Macs.
Thoughts?
Thanks,
Brandon

Hi @esbasti ,
I have not seen this.  But I do have something that might be helpful.  Here is what we did to get development working on M1 Macs:
https://discuss.luxonis.com/d/69-running-depthai-on-apple-m1-based-macs
The why is that some development tools don't yet run natively on M1 Macs.
Thoughts?
Thanks,
Brandon

Closing - duplicate of issue https://github.com/luxonis/depthai/issues/299 (resolved).

Closing - duplicate of issue https://github.com/luxonis/depthai/issues/299 (resolved).


Error: Cannot find module 'ethereumjs-wallet/hdkey'

After ethereumjs-wallet 0.6.1 version release, I started getting: Cannot find module 'ethereumjs-wallet/hdkey, when trying to require/import ganache-core.
I guess fixing version in package.json would be an easy fix, so use "ethereumjs-wallet": "0.6.0", instead of "ethereumjs-wallet": "~0.6.0".
Full error:
     Error: Cannot find module 'ethereumjs-wallet/hdkey'
      at require (internal/module.js:11:18)
      at Object.<anonymous> (node_modules/ganache-core/lib/statemanager.js:11:13)
      at Object.require.extensions.(anonymous function) [as .js] (node_modules/babel-register/lib/node.js:152:7)
      at require (internal/module.js:11:18)
      at Object.<anonymous> (node_modules/ganache-core/lib/subproviders/geth_api_double.js:3:20)
      at Object.require.extensions.(anonymous function) [as .js] (node_modules/babel-register/lib/node.js:152:7)
      at require (internal/module.js:11:18)
      at Object.<anonymous> (node_modules/ganache-core/lib/provider.js:7:21)
      at Object.require.extensions.(anonymous function) [as .js] (node_modules/babel-register/lib/node.js:152:7)
      at require (internal/module.js:11:18)
      at Object.<anonymous> (node_modules/ganache-core/index.js:1:16)
      at Object.require.extensions.(anonymous function) [as .js] (node_modules/babel-register/lib/node.js:152:7)
      at require (internal/module.js:11:18)
      at _callee$ (test/etest.js:18:21)
      at tryCatch (node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js:62:40)
      at Generator.invoke [as _invoke] (node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js:296:22)
      at Generator.prototype.(anonymous function) [as next] (node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js:114:21)
      at step (node_modules/babel-runtime/helpers/asyncToGenerator.js:17:30)
      at /Users/marekkirejczyk/Projects/ambrosus/tmp/tmp/node_modules/babel-runtime/helpers/asyncToGenerator.js:35:14
      at new Promise (<anonymous>)
      at new F (node_modules/core-js/library/modules/_export.js:36:28)
      at Context.<anonymous> (node_modules/babel-runtime/helpers/asyncToGenerator.js:14:12)

https://github.com/ethereumjs/ethereumjs-wallet/issues/64

This should now have been fixed with the v0.6.2 release (confirm would be nice), sorry for the inconvenience.


some file is 404: Not Found.

Thanks for your feedback, the document description is wrong (the version of the command should be "v0.1.0" instead of "0.1.0"), it has been fixed now, please revisit the document and refresh it: https://chaosmeta.gitbook .io/chaosmeta-cn/an-zhuang-zhi-yin/jiao-ben-an-zhuang


sage: 8.3 -> 8.4

Motivation for this change
There ain't no rest for the wicked, sage updates don't grow on trees...
Shortly after the 8.3 update, the first 8.4 beta is already released.
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option 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/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Fits CONTRIBUTING.md.

I got a GitHub notification that you (@timokau) have pushed 0 commits. Was it a rebase?

I actually did push some commits (updating to beta3, merging master, cherry-picking the openblas fix from staging, updating to beta4). I did rebase but only locally with stuff I didn't push yet (no force-push). I don't know what confused github. I usually don't get any notifications at all if a PR gets updated by force-push.

So, a release has happenned?

Yes, I just got a bit sick and thus didn't do a final review & merge yet. Do you think the changes should be squashed? Thats how I did it the previous release but preserving the in-between releases might not hurt either when bisecting some issue.

No idea re:squashing, given that most intermediate commits are plain bumps… I guess it is you who would bisect Sage RCs anyway

The RCs yes, but the betas usually also remove some patches that were included upstream or something. I think preserving that history might be valuable, but it would also "pollute" commit history a bit.

Given that every commit is a working state, I guess it is not making anything worse compared to the status quo (we will have a lot of merged small branches until the entire model of interaction with the non-committer contributors is different).
So please do not underestimate the importance of your convenience in maintaining Sage.
(Personally, I do value keeping the true history of changes; I also find use of Git usually suboptimal for that goal)

Personally, I do value keeping the true history of changes; I also find use of Git usually suboptimal for that goal

I agree. Thanks for your opinion :)
All but two of the nix specific patches are upstreamed now :tada:

Oops should've removed the WIP label first.


Chooses wrong method on Optional String

Chooses wrong function footprint
Situation
When the function map() is called with a String? as argument the method public func map(JSON: AnyObject?) -> N?  is called, since it is the only function with an optional value as paramter and thus gets called.
Problem
This function assumes the data to be [String : AnyObject]. If the data is not in this form it just silently returns nil. It is unclear why the library can handle optionals of this type and not strings.
Proposed solution
Add a method that takes optional Strings as arguments and unwraps if not nil, or remove the possibility to map optionals of [String : AnyObject].
An error handling system to better being able to detect issues like this.
Correct me if I'm wrong!

Hi @najiji, thanks for you feedback. You bring up a good point. Many people seem to get confused by this. I have a branch where I has added this which I hope to merge into master soon.


fix: correctly set selected ID on package checkbox click

Summary of changes

use the correct thunk action to set selected ID to ensure that temporary package info is also correctly shown

Context and reason for change
Previously the displayed package info was not shown correctly.
How can the changes be tested
To reproduce the bug on main:

Open a file.
Go to attribution view.
Click on one of the package card checkboxes without first clicking on the package card.
Notice that the displayed package info in the right column is completely empty although the package card is selected.

fixed here together with a blinker that caused tests to fail: https://github.com/opossum-tool/OpossumUI/commit/30324045993922f2b0af8e54cc6fc6a3f1516da2

fixed here together with a blinker that caused tests to fail: https://github.com/opossum-tool/OpossumUI/commit/30324045993922f2b0af8e54cc6fc6a3f1516da2


[Feature] clear the two stage norm calc logic in the optimizer

Describe the feature
no need to do two stage norm calc
Will you implement it?

[X] I would like to implement this feature and create a PR!

#106


bin: Introduce common config

What this PR does / why we need it:
This simplifies the configuration by using a common configuration that applies to both the service and workload cluster for common options.
Includes a few fixes for how data is handled by yq in certain situations and a fix to render the prometheus-servicemonitor with rook-monitor enabled.
Which issue this PR fixes:
fixes #602
Public facing documentation PR

Special notes for reviewer:
Please let me know if I should change some configuration variables to make them the same on the service and workload cluster.
Checklist:

[x] Added relevant notes to WIP-CHANGELOG.md
[x] Proper commit message prefix on all commits
[ ] Updated the public facing documentation
Is this changeset backwards compatible for existing clusters? Applying:

[ ] is completely transparent, will not impact the workload in any way.
[x] requires running a migration script.
[ ] will create noticeable cluster degradation.
E.g. logs or metrics are not being collected or Kubernetes API server
will not be responding while upgrading.
[ ] requires draining and/or replacing nodes.
[ ] will change any APIs.
E.g. removes or changes any CK8S config options or Kubernetes APIs.
[ ] will break the cluster.
I.e. full cluster migration is required.

Chart checklist (pick exactly one):

[x] I upgraded no Chart.
[ ] I upgraded a Chart and determined that no migration steps are needed.
[ ] I upgraded a Chart and added migration steps.

Pipeline config
Done and tested.

Rebased, cleared the wip-changelog from things not supposed to be there, and set cert-manager cainjector cpu req to 25m so the whole cert-manager config for sc and wc are now the same and fully contained in the common-config.


Allow for a separate "RedirectAuthority" url

I think it would be useful to be able to have separate authorities defined for internal HTTP communication and browser redirects.
My scenario
I'm setting up a dockerised Identity Server with example APIs and clients, for me to get to grips with the technology and provide a base for future projects.
For example, my MVC client middleware can be set up like this:
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
    AuthenticationScheme = "oidc",
    SignInScheme = "Cookies",

    Authority = "http://identityserver:5000",
    RequireHttpsMetadata = false,

    ClientId = "example-mvc-client",
    SaveTokens = true
});

Because both my client and identity server are within the docker network, they can communicate using their aliases. Setting the authority like this allows my client to communicate to my identity server. However, the authority is also used for browser redirects (when a user accesses a secured part of the client, they are redirected to the identity server to sign in). Because the user has no concept of the "identityserver" container, this redirection obviously fails.
Alternatively, I can set:
Authority = "http://localhost:5000"

Where identityserver:5000 is port-forwarded to localhost:5000 in my docker-compose.yml.
This allows the redirects to work, but the internal HTTP communication will now fail because my client container will try to talk to its own localhost, rather than the identityserver container.
There is a workaround for this by setting the identityserver:localhost in the docker-compose links or network alias sections. However, this doesn't strike me as a good solution for production (and I can't actually get it to work in development - though I do know the docker sample has it working).
Suggestion
I think, ideally, you would be able to set-up your middleware like this:
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
    AuthenticationScheme = "oidc",
    SignInScheme = "Cookies",

    Authority = "http://identityserver:5000",
    RedirectAuthority = "http://localhost:5000",
    RequireHttpsMetadata = false,

    ClientId = "example-mvc-client",
    SaveTokens = true
});

The Authority property would be used for internal HTTP communication (container to container), and the RedirectAuthority property would be used for redirecting the user to the identity server's login UI.
The RedirectAuthority property could be optional, and, if not set, the Authority property would be used for redirects, thus not breaking anyone's existing code and not adding extra configuration for people that don't need it.

This would be useful in any situation where the user's machine and the client cannot both refer to the identity server via the same URL. Is there a need for this? Is it low priority? Have I misunderstood the problem?

UseOpenIdConnectAuthentication is Microsoft's library, not ours. You should bring this suggestion to them: https://github.com/aspnet/security/issues

Apologies! Thank you for pointing me in the right direction.


new version v2.3.4

@JuliaRegistrator register()

Registration pull request created: JuliaRegistries/General/2426
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if Julia TagBot is installed, or can be done manually through the github interface, or via:
git tag -a v2.3.4 -m "<description of version>" e3b298b213349d2bed13e8944d1fa6a55ab0928a
git push origin v2.3.4

add support to csv.bz2 format


WebSocket only for one bot

From what configs contain, only one bot can have WSS enabled.
Support for multiple bots should be added. For example:
One standalone WSS listener and all bots use(send and receive) the same listener.

U can use python -m SimpleHTTPServer 8000, python -m SimpleHTTPServer 8001 etc. or setup a nginx/apache server with symlinks to webfolders


Reference Filtered Collection in Controller

I should be able to access the full collection of filtered objects, currently I can only access the visible rows or the entire collection.

Where you want access that one? And for what purpose?

Good point @samartioli
I will work on it in the next milestone.

Not sure to understand how this should work, can you give me an example! So sorry for this late reply :P

I have a question concerning this.@zizimania @samartioli how to access visible collection in controller?
In HTML I can get {{rows}} which will show only the visible table rows, but I cannot get them in controller, I'm able only to grab full resource.rows.

I have same question

@alfredobarron I haven't found better solution, so I've wrote function that is called from html file passing {{rows}} to be enumarated. I needed just all the IDs.

$scope.visibleRows = function(rows) {
$scope.displayedRows=[];
angular.forEach(sigs, function(sig) {
$scope.displayedRows.push(row.id);
})
return false;
}

thanks @p1lare


type-inference-wip branch: use of unnecessary casts

Hi,
class com.paypal.android.foundation.activity.operation.ActivitySummaryListRetrieveOperation
    public ActivitySummaryListRetrieveOperation(final com.paypal.android.foundation.activity.model.ActivityFilter activityFilter) {
        this((java.util.List) new java.util.ArrayList<com.paypal.android.foundation.activity.model.ActivityFilter>() {
        });
    }

here ArrayList is cast to List. It doesn't harm somehow, but isn't that a bug?
APK: https://drive.google.com/file/d/1pdmRyrp6rDEoYsTJn5RLhv39xXRq5Ksh/view?usp=sharing

Maybe this is asking for a List as a param instead of ArrayList?

@LynxKik
ArrayList is a class implementing interface List, that's why I titled it as use of unnecessary casts

@sergey-wowwow cause of this issue is not very smart way to force compiler select correct overloaded methods. Now jadx just add casts to all arguments if a method is overloaded (exists other methods with same name and arguments count). To fix this issue I need to implement the logic of method selection from arguments like java compiler did.
But in master you don't see such casts because type infered from method calls. So jadx think that result of new ArrayList() is List and don't and cast because type is equal - this is also not correct :(

@skylot
Thanks for your explanation, I got the reason of casts


Add version & release link to ome files downloads

To match the others

https://snoopycrimecop.github.io/www.openmicroscopy.org/ome-files/downloads/ updated

Broken Links: top row, all CentOS 6, MacOS X and FreeBSD links.

@rleigh-codelibre is fixing the links on a separate PR, this should be good to merge

Thanks all.


Feat: Create Merge Request

This MR will allow you to create a merge request for the current branch without leaving Neovim.
This was previously deferred as a feature since the glab CLI tool already supports this, however, being able to do this inside of the plugin is core to resolving/merging/managing MRs.
This required a slight refactor of the Go server, which previously made a call to get the MR info at startup every time. Since the MR will not necessarily be created now at startup, we have moved that call into a middleware that's called prior to every route that requires the data, assuming that the mergeId property has not already been initialized in the client state.
The refactor therefor moves all routes that require the additional merge request call under the /mr route prefix.

This MR will address #41


Dramasystem Character Sheet (NEW)

Changes / Comments
Created a character sheet to support DramaSystem from Pelgrane Press.
Roll20 Requests
Include the name of the sheet you made changes to in the title.

If changes fix a bug or resolves a feature request, be sure to link to that issue.
For pull request that change multiple sheets please confirm these changes are intentional for all sheets. This will help us catch unintended submissions.
When updating existing sheets if you are changing attribute names please note what steps you have taken, if any, to assist players in keeping their data.

If there is an article on the wiki to run this particular game system, it could be linked to in the "Instructions" text rather than just mentioned(didn't show up on a search though). If there is no article for the system specificly, it might be wise to rephrase that line,
or if you're creating an article later, you can come back later and include to the link when there is one.
Something like:
See [the wiki](wiki.roll20.net/pagename) for suggestions on setting up and running a Dramasystem game on Roll20.

If there is an article on the wiki to run this particular game system, it could be linked to in the "Instructions" text rather than just mentioned(didn't show up on a search though). If there is no article for the system specificly, it might be a good to rephrase that line, or if you're creating an article later, you can come back later and include to the link when there is one.
Something like:
See [the wiki](wiki.roll20.net/pagename) for suggestions on setting up and running a Dramasystem game on Roll20.

Thanks for the suggestion, Anduh! I have a draft for the wiki to go live when the sheet goes live. There will probably be a second PR a week after this goes live to insert those links and things.


merged in iam command

Purpose

Merging in @mike-gangl 's command from the venue deployment instructions, into main role script that gets executed upon venue creation.

Proposed Changes

[ADD] lines for the iam aws CLI call

Issues

https://github.com/unity-sds/unity-cs/issues/427

Testing

will test on emit-dev venue next

Looks good!

looks good to me, we'll need a final word on if that roles solves the issues @drewm-jpl was seeing.


x/tools/gopls: gopls renaming should handle go1.19's Doc Links

Doc Links has been added to the go in 1.19 and it is accessible in the AST. Enabling refactoring of DocLinks will improve the maintainability of documentation.
What version of Go are you using (go version)?

$ go version
go version go1.19.1 windows/amd64
$  gopls version
golang.org/x/tools/gopls v0.11.0
$ vscode-go v0.37

What did you do?
type Foo struct {
}
// struct [Foo] is a nice struct ...

Refactor "Foo" to "Bar"
What did you expect to see?
type Bar struct {
}
// struct [Bar] is a nice struct ...

What did you see instead?
type Bar struct {
}
// struct [Foo] is a nice struct ...

Thanks, this is a good point. We should extend our identifier detection to include the new doc link format.

Because DocLink renaming is not there yet (the present issue), this comment presents another motivation and a partial workaround for a use case that arises when DocLink is used for data persistence, when go code is used to store data.
The repo code for this use case, including the workaround, is https://github.com/fullstack-lang/issuerenaming.
Data persisted as go code
It seems counter intuitive to store data as go code but there is a use case where the go code format is more economical than alternatives (such as a database or a json file). This use case can occur during the development of an application.
In an example for this use case, we have three artifacts:

a data model in a package models, written in go, with one struct Foo that captures our client's problem
a small data set, persisted in json, with some instances of Foo for testing the application
a UML diagram with two classshapes documenting a Foo and a Waldo structs.

Now, our client says "Foo is not the perfect name, Bar is a better". We return to the keyboard and refactor the application in three steps. First, we rename Foo to Bar in our go code thanks to gopls. Second, we rename Foo to Bar in our json file. Third, we rename Foo to Bar in our UML diagram. The whole operation may have taken 5 minutes to 15 minutes, of which maybe 90 % are for the second and third steps. Those 90% are a distraction of the coding process and we want to slash them.
Now, let's say that  instead of persisting data in json, we store our data as go code and develop a generic AST parser to read the data. The data file in go contains declarations lines like:
	__Foo__000000_A := (&models.Foo{Name: `A`})

This new persistence approach makes the refactoring simpler because, in the first renaming step from Foo to Bar, gopls will also edit this go file into:
	__Foo__000000_A := (&models.Bar{Name: `A`})

We save the json refactoring step. We save (boring) minutes.
UML diagram persisted as go code
Bypassing the json is economical but now, we would like to also bypass the UML refactoring step. We would like to have the UML diagram data refactored by gopls. For enabling renaming, we redo what we did with the test data : namely we encode the UML diagram in go code.
In the go code describing the UML diagram, we need to say that our class shape that represents the Foo struct actually refers to the models.Foo struct in the go code. Problem, if we encode the reference to Foo in a string "models.Foo", in something like
   shape.ref = "models.Foo"

our renaming step is not automatic. "models.Foo" wont be renamed into "models.Bar" when gopls processes the renaming request because shape.ref is a string, it cannot be renamed by gopls.
Enters go 1.19 and DocLink
With the DocLink syntax such as [Name1, [Name1.Name2] or [pkg.Name1], go 1.19 implicitly introduces a new kind of type, a type for identifiers. The good piece of news is that this type can be assigned to a string variable.
Technically, this can be done with a comment directive followed by a DocLink item. The go 1.19 go/ast/comment.Parser package provides the concept and the dedicated parsing functions for getting DocLink in comments. The following assignment of the models.Foo identifier to a string can be done by parsing something like
  //gong:ident [models.Foo]
  shape.ref = ""

We can ask the generic AST parser to assign the DocLink text to the string value whenever it meets this kind of comment followed by a string assignment (note that //gong:ident works like a //go:embed directive, more on that later).
After the fix of the present issue, gopls will perform the renaming request of models.Foo to models.Bar and it will change the code to
  //gong:ident [models.Bar]
  shape.ref = ""

And the AST parser will assign the correct new value to the shape.
Conclusion, the refactoring of the three artifacts takes less that a minute, a nice productivity gain.
A partial workaround to the lack of DocLink renaming
We have seen the present issue impacts a use case. To overcome this limitation, we can develop a workaround. Technically, when marshalling the UML diagram, the workaround automatically generates a map of reference to identifiers to identifiers. The identifiers are instances of type any
var map_DocLink_Identifier map[string]any = map[string]any{
	"models.Foo": &(models.Foo{}).,

When gopls will perform the renaming request, it will change the above code to
var map_DocLink_Identifier map[string]any = map[string]any{
	"models.Foo": &(models.Bar{}).,

The Ast Parser has to parse this map and later understands that each time it meets a //gong:ident [models.Foo] directive, this means //gong:ident [models.Bar]` instead.
The workaround is hair splitting because some identifiers are more tricky to express as an any value. For instance, a string type type Waldo string may need to have an UML shape to represent it as an enum. One way to encode it in a any value is to express via a cast of an empty string models.Waldo("").
Here is the resulting UML diagram after renaming

The workaround does not apply to comment like "note"
The workaround is partial because in some cases, the reference to the identifier (the DocLink) is not in the UML code but in the package itself. For instance:
// GONGNOTE(Note): [models.Foo] is
// related to [models.Waldo] throughs the field
// [models.Foo.Waldos]
const Note = ""

This note, a syntax authorized by go, can be translated to a UML note with UML note links but the workaround cannot apply to this because "[Foo]" is in the source package.
Is there a need for a //go:ident [<docLink>] directive ?
We have seen a very narrow use case: maintenance of a go code that is used for storing data about identifiers. However, this use case describes a need for assigning the text of a read only object to a string, something the embed directives already performs
//go:embed hello.txt
var s string

Using the same reasoning behind the field-proven //go:embed  directive, we could have a new //go:ident directive, .
//go:ident [pkg.Foo]
var s string

When utilizing this directive, maintaining this code would significantly be simpler than maintaining the code below (if DocLink renaming is implemented).
var s string = "pkg.Foo"

It would be intriguing to explore if there are other potential applications of DocLink (with DocLink renaming) that are worth considering. DocLink is still a relatively new feature at only 6 months old.

Summarizing my understanding of the previous long note: you want to use comments to represent tool-readable relationships between declarations, but renaming doesn't (in general) apply to the contents of comments, so the relationships become stale.
The problem is essentially the same as that of writing annotations for static checkers: you can do it with comments, but they quickly become stale. It's better to use Go syntax so that symbol references are first class. For example, when using a hypothetical lock-checking static analysis tool, you could express the annotation "mutex mu guards field foo" as a comment:
type T struct {
    mu sync.Mutex // checklock:guards(mu, f)
    f int
}

but as the code evolves, it is likely to become stale. It would be more robust to use a Go declaration, for example:
import "checklock"

type T struct {
    mu sync.Mutex
    f int
}

func _(t *T) {
    checklock.Guards(t.mu, t.f) // (function call has no effect)
}

See https://go.dev/cl/489835 for a rough sketch of this approach.

Summarizing my understanding of the previous long note: you want to use comments to represent tool-readable relationships between declarations, but renaming doesn't (in general) apply to the contents of comments, so the relationships become stale.

Your understanding is correct.

The problem is essentially the same as that of writing annotations for static checkers: you can do it with comments, but they quickly become stale.  It's better to use Go syntax so that symbol references are first class. For example, when using a hypothetical lock-checking static analysis tool, you could express the annotation "mutex mu guards field f" as a comment:
...
See https://go.dev/cl/489835 for a rough sketch of this approach.

I agree the issue is for associations to declarations that become stale after refactoring. However, I have looked at https://go.dev/cl/489835 and I must admit that I am not sufficiently a go expert to understand it. For instance, I do not understand if the solution is for associations within comments or within a go declaration.
If I may formulate the requirements for the solution :

the association to the declaration is within a comment
the association to the declaration is not staled when the declaration is renamed
the declaration could be a function but also any go identifier (a struct or a struct field for instance).

the association to the declaration is within a comment
the association to the declaration is not staled when the declaration is renamed

The main idea in the CL I linked to is: it should be a requirement that annotations not be in comments precisely because this makes them stale, and hard to discover as ordinary references.

the association to the declaration is within a comment
the association to the declaration is not staled when the declaration is renamed

The main idea in the CL I linked to is: it should be a requirement that annotations not be in comments precisely because this makes them stale, and hard to discover as ordinary references.

Ok, I understands the CL better now. Unfortunatly, it won't solve the issue of stale DocLink because DocLink are in comments.

This appears to a be a dup of https://github.com/golang/go/issues/64495, which is fixed, and I verified that renaming a symbol renames (at least some) doc links that refer to it.

Hi @adonovan , I respectfully disagree, unless mistaken, #64495 (or gops v0.15.3) fixes doc links for functions but does not fixes doc links for structs.
issue_rename_57559 % gopls version
golang.org/x/tools/gopls v0.15.3

package main

type Foo struct {
}

// Rename does not work for Foo
// struct [Foo] is a nice struct ...

func FuncA() {
}

// Rename works for FuncA
// FuncB is same as [FuncA].
func FuncB() {
}

Above code is available at https://github.com/thomaspeugeot/issue_rename_57559

I respectfully disagree, unless mistaken, https://github.com/golang/go/issues/64495 (or gops v0.15.3) fixes doc links for functions but does not fixes doc links for structs.

I just tested gopls@master on this program:
// The Foo type is used with [Bar].
type Foo struct {}

// func Bar uses [Foo].
func Bar(Foo) {}

and was able to rename both Foo and Bar, and observe both the ordinary and the doc-link (bracketed) references change consistently.

Indeed, it works in the above case, but it does not work when [Foo] is in a standalone comment, as in the last line of the code below
// The Foo type is used with [Bar].
type Foo struct{}

// func Bar uses [Foo].
func Bar(Foo) {}

// some comment about [Foo]

https://github.com/golang/go/assets/10234087/b39abddb-032b-4f28-ac9e-11cfe8dd38fc

A free-standing comment is not a doc comment: it never appears in go doc, or in gopls' Hover output, and it isn't subject to reformatting when you save the file. So I think this is working as intended.

Ouh la la...., I had never realized that there was two classes of comments, the doc comment and the free standing comments.
Sorry to bother but why not subject doc-like link in free-standing comments to gopls' renaming ?
Those comments are not exported by go doc but they deserve as much care. When they contain references to identifiers and one is renamed, they loose their consistency. IMHO, adding free-standing comments to the renaming net would improve code maintainability.

Sorry to bother but why not subject doc-like link in free-standing comments to gopls' renaming ?

Because they are not doc comments, as defined by the first line of https://golang.org/doc/comment, so they are not subjected to the same rules by tools such as gofmt, go/doc/comment, and gopls.

@adonovan it's worth noting that doc links in freestanding comments do work when using go-to-definition, and I rely on that on a weekly basis for e.g. freestanding notes that document quirks about the code. I hope that go-to-definition working in those cases is not by accident, and I would have assumed that renaming would also handle them for the sake of consistency, given that gopls does seem to understand they are doc links in some way.

@adonovan , BTW, renaming of field does seem not to work.
https://github.com/golang/go/assets/10234087/a2bb8030-ed38-4cbd-9998-e12b7650e3bf

renaming of field does not seem to work.'

Again, working as intended: doc links never refer to fields, only to packages, package-level declarations, and methods.

After discussion, reopening as a narrower request to rename doc links in non-doc comments too (by analogy with Hover and Documentation, which support doc links in non-doc comments).


[DO NOT CLOSE] Keep upgrade with latest substrate version

Keep this issue open until the stable 2.0 released

Upgrade to substrate rc5

Stable version v2.0.0

Closed now with M2 milestone, reopen it on M3 dev process


feat: benchmarking scripts for MerkleTrie

Motivation
Add benchmarking scripts for MerkleTrie (#445)
Change Summary
The change add a simple cli script that run benchmarking suites. The command takes parameters that can be useful for experimenting with different configuration.
A initial test suite for MerkleTrie is implemented. It measures the time and memory usage of insert and getSnapshot operations in the MerkleTrie implementation.
Merge Checklist
Choose all relevant options below by adding an x now or at any time before submitting for review

[x] The title of this PR adheres to the conventional commits standard
[x] The PR has been tagged with the appropriate change type label(s) (i.e. documentation, feature, bugfix, or chore)

Additional Context
Some preliminary benchmark results can be found here: https://gist.github.com/kcchu/03c07ce4c7a582c04bb6678e3fa8b275

The apps/hubs is about to go away. Please put these scripts in apps/protohub, which uses the protobufs. Overall, the direction looks good to me!


Restyle hero unit on front page, refactor less.

Taking a first stab at restyling the front page, and cleaning up some of the .less files.

What's changed

Restyled the hero unit
Created a variables.less file to capture continuous things
Restyle header.

@simonv3 awesome!!!!


Issues building libshortfin on Windows with -DSHORTFIN_BUILD_DYNAMIC=ON

Related to https://github.com/nod-ai/SHARK-Platform/issues/130.
I see errors trying to run  pip install -v -e . and letting the setup.py file run CMake internally.
With the build fixes in https://github.com/nod-ai/SHARK-Platform/pull/210, I'm able to build on Windows with MSVC, but only with -DSHORTFIN_BUILD_STATIC=ON (which setup.py does not set):
cmake \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DCMAKE_EXPORT_COMPILE_COMMANDS=TRUE \
  -DSHORTFIN_BUILD_DYNAMIC=OFF \
  -DSHORTFIN_BUILD_STATIC=ON \
  -DSHORTFIN_IREE_SOURCE_DIR=D:/dev/projects/iree \
  -SD:/dev/projects/SHARK-Platform/libshortfin \
  -Bd:/dev/projects/SHARK-Platform/build
  -G Ninja

cmake \
  --build d:/dev/projects/SHARK-Platform/build \
  --target all

...
[build] [26/26  96% :: 4.064] Linking CXX executable src\shortfin\support\shortfin_support_test.exe
[build] [26/26 100% :: 4.143] Linking CXX executable src\shortfin\array\shortfin_array_test.exe
[driver] Build completed: 00:00:04.193
[build] Build finished with exit code 0

(This works with and without -DSHORTFIN_IREE_SOURCE_DIR)
If I flip the options to -DSHORTFIN_BUILD_DYNAMIC=ON -DSHORTFIN_BUILD_STATIC=OFF, I get an error linking the tests:
[build] [29/29 100% :: 4.549] Linking CXX executable src\shortfin\support\shortfin_support_test.exe
[build] FAILED: src/shortfin/support/shortfin_support_test.exe src/shortfin/support/shortfin_support_test[1]_tests.cmake D:/dev/projects/SHARK-Platform/build/src/shortfin/support/shortfin_support_test[1]_tests.cmake
[build] C:\WINDOWS\system32\cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --intdir=src\shortfin\support\CMakeFiles\shortfin_support_test.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100226~1.0\x64\mt.exe --manifests  -- C:\PROGRA~2\MICROS~1\2022\Preview\VC\Tools\MSVC\1431~1.311\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\shortfin_support_test.rsp  /out:src\shortfin\support\shortfin_support_test.exe /implib:src\shortfin\support\shortfin_support_test.lib /pdb:src\shortfin\support\shortfin_support_test.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console  -natvis:D:/dev/projects/iree/runtime/iree.natvis && C:\WINDOWS\system32\cmd.exe /C "cd /D D:\dev\projects\SHARK-Platform\build\src\shortfin\support && "C:\Program Files\CMake\bin\cmake.exe" -D TEST_TARGET=shortfin_support_test -D TEST_EXECUTABLE=D:/dev/projects/SHARK-Platform/build/src/shortfin/support/shortfin_support_test.exe -D TEST_EXECUTOR= -D TEST_WORKING_DIR=D:/dev/projects/SHARK-Platform/build/src/shortfin/support -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_FILTER= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=shortfin_support_test_TESTS -D CTEST_FILE=D:/dev/projects/SHARK-Platform/build/src/shortfin/support/shortfin_support_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=5 -D TEST_XML_OUTPUT_DIR= -P "C:/Program Files/CMake/share/cmake-3.30/Modules/GoogleTestAddTests.cmake"""
[build] CMake Error at C:/Program Files/CMake/share/cmake-3.30/Modules/GoogleTestAddTests.cmake:112 (message):
[build]   Error running test executable.
[build]
[build]     Path: 'D:/dev/projects/SHARK-Platform/build/src/shortfin/support/shortfin_support_test.exe'
[build]     Working directory: 'D:/dev/projects/SHARK-Platform/build/src/shortfin/support'
[build]     Result: Exit code 0xc0000135
[build]
[build]
[build]
[build]     Output:
[build]
[build]
[build] Call Stack (most recent call first):
[build]   C:/Program Files/CMake/share/cmake-3.30/Modules/GoogleTestAddTests.cmake:226 (gtest_discover_tests_impl)

(more complete configure + build logs here: https://gist.github.com/ScottTodd/87fb74a06140c97418bbebf562820e71)
What I've tried so far

Some searching around suggests that 0xc0000135 exit code is STATUS_DLL_NOT_FOUND, so I tried changing https://github.com/nod-ai/SHARK-Platform/blob/61eacac59317f2b2db1e54778ca8a850db6f2734/libshortfin/build_tools/cmake/shortfin_library.cmake#L133-L138 to a hardcoded path like "D:/dev/projects/SHARK-Platform/build/src/shortfin.lib" instead of ${SHORTFIN_LINK_LIBRARY_NAME}. (Not sure if that should be the .dll or the .lib)
That changed the error message to libshortfin\src\shortfin\array\dims_test.cc(7): fatal error C1083: Cannot open include file: 'shortfin/array/dims.h': No such file or directory, so I also added a dep on _shortfin_defs to the same target_link_libraries call
That changed the error message to libshortfin\src\shortfin/support/iree_concurrency.h(12): fatal error C1083: Cannot open include file: 'iree/base/internal/synchronization.h': No such file or directory
I tried adding hardcoded includes for IREE and other dep headers next:  target_include_directories(
    ${_RULE_NAME}
    PRIVATE
      "D:/dev/projects/SHARK-Platform/build/_deps/fmt-src/include"
      "D:/dev/projects/SHARK-Platform/build/_deps/shortfin_iree-src/runtime/src"
      "D:/dev/projects/SHARK-Platform/build/_deps/spdlog-src/include"
      "D:/dev/projects/SHARK-Platform/build/_deps/xtensor-src/include"
      "D:/dev/projects/SHARK-Platform/build/_deps/xtl-src/include"
  )

That hit new errors, indicating C files being compiled as C++ (note the /TP in the command), but I didn't have those issues with static linking 🤔[build] [7/9  11% :: 2.049] Building CXX object src\shortfin\array\CMakeFiles\shortfin_array_test.dir\dtype_test.cc.obj
[build] FAILED: src/shortfin/array/CMakeFiles/shortfin_array_test.dir/dtype_test.cc.obj
[build] C:\PROGRA~2\MICROS~1\2022\Preview\VC\Tools\MSVC\1431~1.311\bin\Hostx64\x64\cl.exe  /nologo /TP -DSHORTFIN_HAVE_AMDGPU -ID:\dev\projects\SHARK-Platform\build\_deps\fmt-src\include -ID:\dev\projects\SHARK-Platform\build\_deps\shortfin_iree-src\runtime\src -ID:\dev\projects\SHARK-Platform\build\_deps\spdlog-src\include -ID:\dev\projects\SHARK-Platform\build\_deps\xtensor-src\include -ID:\dev\projects\SHARK-Platform\build\_deps\xtl-src\include -ID:\dev\projects\SHARK-Platform\libshortfin\src -ID:\dev\projects\SHARK-Platform\build\src -external:ID:\dev\projects\iree\third_party\googletest\googlemock\include -external:ID:\dev\projects\iree\third_party\googletest\googlemock -external:ID:\dev\projects\iree\third_party\googletest\googletest\include -external:ID:\dev\projects\iree\third_party\googletest\googletest -external:W0 /DWIN32 /D_WINDOWS /EHsc /O2 /Ob1 /DNDEBUG -std:c++20 -MD -Zi /showIncludes /Fosrc\shortfin\array\CMakeFiles\shortfin_array_test.dir\dtype_test.cc.obj /Fdsrc\shortfin\array\CMakeFiles\shortfin_array_test.dir\ /FS -c D:\dev\projects\SHARK-Platform\libshortfin\src\shortfin\array\dtype_test.cc
[build] D:\dev\projects\SHARK-Platform\build\_deps\shortfin_iree-src\runtime\src\iree/base/alignment.h(244): error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax
[build] D:\dev\projects\SHARK-Platform\build\_deps\shortfin_iree-src\runtime\src\iree/base/alignment.h(253): error C4576: a parenthesized type followed by an initializer list is a non-standard explicit type conversion syntax

Discussed this a bit on IREE's discord server here: https://discord.com/channels/689900678990135345/1245423631626932264/1288274538886332448


Build failure: emacs or emacs29 on x86_64-darwin

Steps To Reproduce
Steps to reproduce the behavior:

build emacs

Build log
error: builder for '/nix/store/bdvy9rqb7kq0hwwc5h33b2as3n6ra6pr-emacs-28.2.drv' failed with exit code 1;
       last 10 log lines:
       > checking for struct ifreq.ifr_netmask... no
       > checking for struct ifreq.ifr_broadaddr... yes
       > checking for struct ifreq.ifr_addr... yes
       > checking for struct ifreq.ifr_addr.sa_len... yes
       > checking whether gcc understands -MMD -MF... yes
       > checking for X... no
       > checking for AppKit/AppKit.h... no
       > configure: error: The include files (AppKit/AppKit.h etc) that
       > are required for a Nextstep build are missing or cannot be compiled.
       > Either fix this, or re-configure with the option '--without-ns'.
       For full logs, run 'nix log /nix/store/bdvy9rqb7kq0hwwc5h33b2as3n6ra6pr-emacs-28.2.drv'.

Additional context
Getting the same error when trying to build emacs or emacs29
Notify maintainers
Long list of maintainers... shy to spam all of them here. Is there any one in specific that pays attention to the darwin builds?
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
❯ nix-info -m
 - system: `"x86_64-darwin"`
 - host os: `Darwin 22.6.0, macOS 10.16`
 - multi-user?: `no`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.17.0`
 - channels(dansan): `""`
 - channels(root): `""`
 - nixpkgs: `not found

^ my system in managed via flake, the current build break happens with flake.lock:
    "nixpkgs": {
      "locked": {
        "lastModified":<PHONE_NUMBER>,
        "narHash": "sha256-t69F2nBB8DNQUWHD809oJZJVE+23XBrth4QZuVd6IE0=",
        "owner": "NixOS",
        "repo": "nixpkgs",
        "rev": "3c15feef7770eb5500a4b8792623e2d6f598c9c1",
        "type": "github"
      },

Closed by #253041. Also built on Hydra: https://hydra.nixos.org/job/nixpkgs/trunk/emacs29.x86_64-darwin


Toggle softwrap

Is it possible to implement a ToggleSoftwrap action?

You can do this with some Lua code. Place the following in ~/.config/micro/init.lua:
function toggleSoftwrap(bp)
    bp.Buf.Settings["softwrap"] = not bp.Buf.Settings["softwrap"]
end

Then in ~/.config/micro/bindings.json you can bind this action with
{
    "Alt-r": "lua:initlua.toggleSoftwrap"
}

That works, but only if I run under sudo. If I open micro as a normal user I get:
function does not exist: lua:initlua.toggleSoftwrap
Press enter to continue
Any clues?

It looks like you might have a recent version of micro installed for sudo and an old version installed for your normal user. I recommend checking the version and upgrading to the latest version.

Why won't you implement a toggle for soft wrap by default. Other command line editors can toggle soft wrap via a keybinding or a command like Nano, Vim and Emacs. It would be more convenient for users to do it through a simple toggle rather than having to bind it through Lua or changing the config each time.

I could second that. set <option> <value> is used for setting an option, and i think a toggle <option> command would be nice. It would work only for boolean options and generate an error if it is used for example with a number option.

And perhaps also togglelocal (similar to setlocal).

I currently have the following in my bindings.json
{
    "Alt-Z": "command:set wordwrap on,command:set softwrap on",
    "Alt-z": "command:set wordwrap off,command:set softwrap off",
}

and it works really well for me. I would prefer if the same key was used to toggle, as opposed to using a shifted version of Z to turn it on. Note that alt+z is the default keybinding is VSCode, which is a good argument for enabling this by default with that keybinding in micro.

As I wrote in https://github.com/zyedidia/micro/issues/2086#issuecomment-826351299, a generic toggle command can be quite easily implemented in Lua. But perhaps it's time to implement it in Micro itself, to have it out of the box, since quite a few people express interest in this feature.
Then you'll be able to use "Alt-z": "command:toggle wordwrap,command:toggle softwrap" (though in this specific case I'd still write some Lua code to make sure that the values of softwrap and wordwrap stay in sync. I.e.: toggle softwrap and set wordwrap to the same value as softwrap.)


Feat: get lyrics

Summary
get_lyrics will return a List of Lyrics, as shown below
[Lyrics(...), Lyrics(...), Lyrics(...), Lyrics(...), ...]

Version Check

[x] Python 3.12

Information
** If the entered lyrics name is incomplete, only part of the lyrics will be displayed

[x] rick roll lyrics
[ ] Never gonna give you up lyrics

Resolved in v0.2.
r0 = search("never gonna give you up").lyrics
r1 = search("never gonna give you up lyrics").lyrics

assert r0.text != r1.text
assert r0.is_partial
assert not r1.is_partial


Add catching and throwing

Closes #32

Can you add a changelog entry? Can copy an existing one in https://github.com/apache/logging-log4j-kotlin/tree/master/src/changelog/.1.x.x and reference the issue link there.

I was going to do that but wanted to understand your plans for releasing first so as to give the correct information in the changelog. Your comment in  makes things clear.

I've been meaning to post that to the dev list, too. Let me sum that up for there since we'll need some reviewers on those releases when they're cut.

Changelog added.

That directory gets automatically created when I cut a release; can you put it in the .1.x.x directory? This is a new system recently developed for the main log4j repo.

That directory gets automatically created when I cut a release; can you put it in the .1.x.x directory? This is a new system recently developed for the main log4j repo.

Ah, that is much nicer. Done.

Sweet, that's about the last thing needed for 1.3.0 I think! Thanks!


If you already pre-downloaded the deployment asset, do you still need to specify SAS API credentials?

My understanding is the SAS Orders API  is used to download deployment assets, certificates, and license files.
So if you already pre-downloaded the deployment asset and specify it with V4_CFG_DEPLOYMENT_ASSETS option, do you still need the SAS API credentials? Are they used somewhere else?
The SAS API option V4_CFG_SAS_API_KEY and V4_CFG_SAS_API_SECRET has a required flag, so I wonder if it's necessary regardless if you're using pre-downloaded asset or not.

As the doc states: https://github.com/sassoftware/viya4-deployment/blob/main/docs/CONFIG-VARS.md#sas-api-access they are required even if you have the assets already pulled down. What is the reason you already have them? The tooling is setup to pull what's requested?

I downloaded the asset separately from my.sas.com. I’m doing this because I need to keep my mirror registry and the deployment asset in sync.
What happened was my mirror registry was downloaded last week. But when I tried to deploy using this project today, it downloaded a newer asset that points to a newer release version under the same cadence (2020.1.4).
It then tried to pull newer pod images version that I do not have in my mirror repository, so the pod failed. I thought mirror registry with the same cadence guarantees the same release version but that doesn’t seem to be the case...
So I had to update my mirror registry today. I’m trying to prevent the same thing happening in the future.
Is there any way to specify not just the cadence, but also which release version to pull with this project? (Like 20210417.159694358830)
Thanks.

Also if you have yown mirror manager you can use that information in these variables: https://github.com/sassoftware/viya4-deployment/blob/main/docs/CONFIG-VARS.md#container-registry-access

Yes, I already use that option like so, and it works like expected. It's pulling the container image from my ACR.
V4_CFG_CR_USER: <appId>       # Service principal Id
V4_CFG_CR_PASSWORD: <secret>      # Service principal secret
V4_CFG_CR_URL: viya4testacr.azurecr.io    # My mirror Azure Container Registry
V4_CFG_CADENCE_NAME: stable
V4_CFG_CADENCE_VERSION: 2020.1.4

My problem was the container image that the tool is trying to pull is newer than what I have in my mirror registry, despite specifying the same cadence (2020.1.4), I've reached out to you internally.


Pre-Selecting a Week

May I ask you, when using the WeekSelect plugin, do you know how I can have the week pre-selected when I first open the calendar UI? I've tried adding "weekNumber = 14;" to the JS but that doesn't seem to work.
Here's what I was doing: https://jsfiddle.net/44kzse55/2/

Hi Cassy,
I've pushed an update so your fiddle should work now.
Just don't forget to format the weekNumber.
See https://jsfiddle.net/2g3s56us/

Closing due to inactivity, assuming you've got it working.
Feel free to ask questions if you encounter any problems :+1: