Failed to generate vsproj with scons

Godot version
4.1.3-stable
System information
Windows 10
Issue description
Scons build succeed. However, scons generate vsproj failed：
> scons p=windows vsproj=yes
scons: Reading SConscript files ...
Auto-detected 16 CPU cores available for build parallelism. Using 15 cores by default. You can override it with the -j argument.
Found MSVC version 14.2, arch x86_64
Building for platform "windows", architecture "x86_64", target "editor".
KeyError: 0:
  File "E:\fdx\godot\SConstruct", line 971:
    methods.generate_vs_project(env, ARGUMENTS, env["vsproj_name"])
  File "E:\fdx\godot\methods.py", line 780:
    batch_file = find_visual_c_batch_file(env)
  File "E:\fdx\godot\methods.py", line 732:
    return find_batch_file(env, version, host_platform, target_platform)[0]
  File "C:\Users\fdx\AppData\Local\Programs\Python\Python310\lib\site-packages\SCons\Tool\MSCommon\vc.py", line 929:
    vernum = float(get_msvc_version_numeric(msvc_version))
  File "C:\Users\fdx\AppData\Local\Programs\Python\Python310\lib\site-packages\SCons\Tool\MSCommon\vc.py", line 504:
    return ''.join([x for x in msvc_version if x in string_digits + '.'])
  File "C:\Users\fdx\AppData\Local\Programs\Python\Python310\lib\site-packages\SCons\Tool\MSCommon\vc.py", line 504:
    return ''.join([x for x in msvc_version if x in string_digits + '.'])
  File "C:\Users\fdx\AppData\Local\Programs\Python\Python310\lib\site-packages\SCons\Environment.py", line 586:
    return self._dict[key]

Steps to reproduce

Install Visual Studio 2019
run scons p=windows vsproj=yes

Minimal reproduction project
No project, just build.

Which scons version do you have installed?

Which scons version do you have installed?

It's v4.6. Sorry I accidentally closed the issue just now.
> scons --version
SCons by Steven Knight et al.:
        SCons: v4.6.0.e5eef322a4a727b96358a436dca46e8085ac8692, Sun, 19 Nov 2023 17:22:20 -0700, by bdbaddog on M1Dog2021
        SCons path: ['C:\\Users\\fdx\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\SCons']
Copyright (c) 2001 - 2023 The SCons Foundation

I just tried on Windows with SCons 4.6.0 and I can reproduce the issue too. It must be a regression from the newly released 4.6.0.

For anyone else stumbling face first into this, run: pip install SCons==4.5.2

Looks like find_batch_file from SCons.Tool.MSCommon.vc in 4.6, which is called from methods.py, no longer takes an initial environment argument (the only usage of that was removed in SCons/scons@7082c53ff6 and so apparently the function signature was also adjusted):
-def find_batch_file(env, msvc_version, host_arch, target_arch):
+def find_batch_file(msvc_version, host_arch, target_arch, pdir):

Sounds a bit rude when I say it, but this function isn't a documented "public API" of SCons, so it doesn't come with API consistency promises. Nonetheless, apologies for the breakage.

@mwichmann Thanks for the help with this, and no worries, that seems absolutely fine. :)


Leave debugStream as null on construction of parser token managers

[x] You've read the Contributor Guide and Code of Conduct.
[x] You've included unit or integration tests for your change, where applicable.
[x] You've included inline docs for your change, where applicable.
[x] There's an open issue for the PR that you are making. If you'd like to propose a change, please open an issue to discuss the change or find an existing issue.

Summary of the changes (Less than 80 chars)
Leave debugStream as null on construction of parser token managers.
Fixes #{bug number} (in this specific format)
Fixes #936
Description
{Detail}

When debugStream is set to Console.Out by default, StandardSyntaxParserTokenManager throws an exception when constructing a StandardQueryParser on OSes that do not support System.Console, such as iOS and Android.
debugStream can be set later using the setter, if needed.
The above is the same for QueryParserTokenManager when constructing a QueryParser.
See issue https://github.com/apache/lucenenet/issues/936 for details.

@JayOfemi Thanks for this PR. There are several more places where SystemConsole is used, so this change alone is likely insufficient to address the problem and cover all cases. Also, we'd like to use TextWriter.Null instead of actual null if possible. I will make that change and figure out an approach that will work well for MAUI without regressing other platforms. I'll make sure to include your commit in the history though so you get credit. No need to do anything at this time. Thanks!

This was changed to use TextWriter.Null by default which should resolve the issue.


More fun with form explainer unit tests

Adds more unit tests to increase coverage for form-explainers.js. I worked top-down so that we can continue adding coverage as we finish this file for release.
This increases coverage of form-explainers.js to 48% and overall coverage above 70%
Additions
tests for the following functions:

getPageEl
getPageElements
calculateNewImageWidth
resizeImage
setImageElementWidths
storeImageDimensions
stickImage
fitAndStickToWindow
updateStickiness

Changes

update functions to make them more testable

Testing

run grunt to see the tests run

Review

@virginiacc

Screenshots

Todos

updates will be needed if #538 and/or #535 get merged before this.
updateStickiness test is not finished

Checklist

[x] Changes are limited to a single goal (no scope creep)
[x] Code can be automatically merged (no conflicts)
[x] Code follows the standards laid out in the front end playbook
[x] Passes all existing automated tests
[x] New functions include new tests
[x] Placeholder code is flagged

fuuuuuuuuuuun

@virginiacc I updated the tests and fixed the merge conflicts, so this is ready for review!


Fix the build

Summary
The master branch build is failing (e.g https://travis-ci.org/cucumber/cucumber-ruby/builds/150020194)
This PR allows us to run Travis on changes in attempts to fix it.
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist:

[ ] I've added tests for my code
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

@mattwynne See also #993.

Oooh thanks @brasmusson - merged!


Connection refused

Attempt to save https://www.youtube.com/channel/UC8HFOUdnMnpoWmQMgeKoB3A link resulted in the error:
thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: reqwest::Error { kind: Request, url: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("yt3.ggpht.com")), port: None, path: "/CajG8KRONNS9zrU0sUb7W3JApVYtYux3dGsV0uSJ8tlbweeCXaNClzZu7KLcLiEa7J-9DV9K=s900-c-k-c0x00ffffff-no-rj", query: None, fragment: None }, source: hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })) }', core/src/base/link.rs:155:51
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

https://user-images.githubusercontent.com/581023/185669027-71cd5a2b-f443-4198-b72e-d01d7ba4d588.mp4

thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: reqwest::Error { kind: Request, url: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("yt3.ggpht.com")), port: None, path: "/CajG8KRONNS9zrU0sUb7W3JApVYtYux3dGsV0uSJ8tlbweeCXaNClzZu7KLcLiEa7J-9DV9K=s900-c-k-c0x00ffffff-no-rj", query: None, fragment: None }, source: hyper::Error(Connect, ConnectError("tcp connect error", Os { code: 111, kind: ConnectionRefused, message: "Connection refused" })) }', core/src/base/link.rs:155:51
stack backtrace:
   0: rust_begin_unwind
             at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:584:5
   1: core::panicking::panic_fmt
             at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/panicking.rs:142:14
   2: core::result::unwrap_failed
             at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/result.rs:1785:5
   3: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
   4: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
   5: <futures_util::future::future::map::Map<Fut,F> as core::future::future::Future>::poll
   6: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
   7: tokio::runtime::task::core::CoreStage<T>::poll
   8: tokio::runtime::task::harness::poll_future
   9: tokio::runtime::task::harness::Harness<T,S>::poll
  10: std::thread::local::LocalKey<T>::with
  11: tokio::runtime::thread_pool::worker::Context::run_task
  12: tokio::runtime::thread_pool::worker::Context::run
  13: tokio::macros::scoped_tls::ScopedKey<T>::set
  14: tokio::runtime::thread_pool::worker::run
  15: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll
  16: tokio::runtime::task::harness::Harness<T,S>::poll
  17: tokio::runtime::blocking::pool::Inner::run

This perhaps could be related to youtube blocking certain useragent?
Trying the same link I got it working with a preview:

@mberry maybe.. I think just handling errors in similar cases would be enough for the start.

@kirillt  I don't have the error either. Can you check my commit b3be058e82c7b5962f92eaf0af5036acb0810ab3 to validate if this error is handled or not?
Thanks


Spring cleaning

This project was halted in a somewhat half-finished state back in Summer 2021 (I think). Since then I've discovered many ways I could make this project cleaner. I'd like to finish these up so the app is in a nice clean state before we announce that it's released.
I expect that these items would take no longer than a week. The implementation of the oauth login and writing genesets has taken less than a week, so we are still within our estimates for this project. @cgreene Any objections?

Convert project to the modern composition API. I did this with Monarch UI, and it was very quick (< 8 hours, and that was a much bigger code base), and had immense benefits.
Offload custom tooltip code to tippy library.
Maybe offload custom JSON viewer code to vue-json-loader? It was a nice exercise to make my own, but maybe better for maintainability to just use third party.
Update vue-cli stuff. This would fix some weird linting issues, and probably help build issues on later version of node that Ricardo was running into.
Increase linting threshold to all recommended rules, and fix.
Use different multi select component. The one I'm using has no accessibility support at all.
Offload custom table component to third party, if I can find a good one? If not, rework custom table component to make use of named slots instead of format functions. Also need to support server-side pagination/sort/etc.
Reorganize view folder structure a bit.
Be better about showing statuses for queries, like loading and error.
Get extra information, e.g. the "96,290 genesets created" and the placeholder gray boxes on the home page. Or if we can't get that info right now, just hide those sections for now.
#23
Aria label for "Try It Out" code box on API page?
More tests.
Split gh-actions workflows into tests and deploy, like in Monarch UI
make trash/remove icons red, and delete geneset button red
add way to set flag for api root/baseurl

Regarding the "extra information" bullet point.

Getting the total number of genesets: Fetch https://mygeneset.info/metadata and get the JSON field stats.total
Number of requests:  We have google analytics integration in the API, but we may want to hide this field until after launch.
Table of recent genesets: We can sort by date using the sort parameter. e.g. https://mygeneset.info/v1/query?q=author:ravila4&sort=updated.

The one I'm not sure how to get is "Table of recent queries".

Regarding the metadata, I want to be able to get a count for the user-created genesets separately from the total. Is this an accurate way to do that (basically subtracting the curated totals from the total-total)

Your method seems accurate. It would get all private and publuc genesets.
Another option (Assuming that the Author field exists for all user-genesets, including anonymous genesets): https://mygeneset.info/v1/query?q=exists:author then get the "total" from response. However, this method would only count public user genesets.

We do collect logs about all the requests submitted, so the table of recent/popular requests is doable, however, we may want to wait until we have more usage data in the logs.

Then, at the top with the spinning DNA icons, we can have "user", "curated", and "total" geneset counts (again so it's not just one number).

Also, it may be nice to have separate geneset counts for each of the data sources.


Password authentication failed

hi guys,
I was trying to use this project but couldn't even pass the connection screen.
Here is what I have:

configured a connection to my local database (no ssh tunnel) with postgres user and password
postgresql type of connection is chosen
host is localhost (program is running on the same server where postgresql is running)

When I try to connect I'm getting ERROR: password authentication failed for user "postgres". At the same time psql -Upostgres -h localhost works correctly (it asks for my password and then logs me in)
Could you please help me to solve this? Maybe I should configure my database server in some kind of special way to use this app?

Also seeing this. I set up a connection via the GUI and it worked perfectly, then I accessed that same connection from the term and it would not connect. Seems like a bug.

Another bug. Nice. Would be nice to have something actually working these days.

Another bug. Nice. Would be nice to have something actually working these days.


DDR Menu doesn't handle duplicate page names correctly

Description of bug
Provide a clear and concise description of the bug.
Steps to reproduce

Create following page hierarchy:

Home
⤷ DDRMenu Test
DDRMenu Test
Some Other Page
And Yet Another Page

the key here is to have 2 pages with identical names (at different branches of the hierarchy of course)

Change the DDR Menu tag in Portals_default\Skins\Xcillion\Home.ascx to look like this:

<dnn:MENU ID="MENU" MenuStyle="Menus/MainMenu" runat="server" NodeSelector="*" IncludeNodes="Home, DDRMenu Test"></dnn:MENU>

(notice we are including only "Home" and "DDRMenu Test")

Refresh the home page

Current behavior
The menu shows the "Home" link, and only 1 of the "DDRMenu Test" pages:

Expected behavior
The menu should display both instances of the duplicate page name:

Affected version

[X] 10.00.00 alpha build
[X] 09.09.00 release candidate
[X] 09.08.01 latest supported release

Affected browser

[X] Chrome
[X] Firefox
[X] Safari
[X] Internet Explorer 11
[X] Microsoft Edge (Classic)
[X] Microsoft Edge Chromium

@david-poindexter is there a way to avoid issues with a PR being picked up by stale bot?
This is in a way "finished" but just pushed to 10.. would be a pity if it would get closed..

Yes, we can add the On Hold label which will keep stalebot from processing it.

Thank you @bdukes :-)

FYI, I checked and I was wrong, On Hold doesn't exempt an issue from stalebot, here's that list: https://github.com/dnnsoftware/Dnn.Platform/blob/91d3ead2053fe3e5a12bdd23474e5d91928d9ce1/.github/stale.yml#L5-L13

ok thank you

You are correct, I also added the noteworth tag to the PR so we don't forget to mention this behavior change.

Closing because #4484 has been merged into the release/10.0.0 branch.


feat(edge-auto-jetson/docs): edge.auto documentation

Related Links
https://github.com/tier4/edge-auto/pull/3
Description
Maintain documantation for edge-auto release.
Review Procedure
Please see edge-auto-jetson/README.
Remarks

Pre-Review Checklist for the PR Author
PR Author should check the checkboxes below when creating the PR.

[x] Assign PR to reviewer

Checklist for the PR Reviewer
Reviewers should check the checkboxes below before approval.

[x] Commits are properly organized and messages are according to the guideline
[ ] (Optional) Unit tests have been written for new behavior
[x] PR title describes the changes

Post-Review Checklist for the PR Author
PR Author should check the checkboxes below before merging.

[ ] All open points are addressed and tracked via issues or tickets

CI Checks

Build and test for PR: Required to pass before the merge.

@kaz0227 Also here, PR status changed from draft to open. Same as https://github.com/tier4/edge-auto/pull/3.


is it possible to set custom log levels

I would like to switch over to using logstash-logger. However, our current application uses custom levels allowed by Logging gem as allowed by this method: https://github.com/TwP/logging/blob/master/lib/logging.rb#L200
From what I can tell, logstashlogger uses logger.
Is it possible to use similar option with logstash-logger?
Thanks.

If your question is, "will LogStashLogger work with the Logging gem?", the answer appears to be no. Logging provides a very different interface from Ruby's stdlib Logger.
If your question is, "can I use custom log levels with LogStashLogger?", the answer is also no. LogStashLogger only supports whatever Ruby's stdlib Logger supports.
If you tell me more about your use case, perhaps I can recommend an alternative to custom log levels. For example, LogStashLogger allows you to add custom tags and to customize the LogStash::Event in any way you'd like. This might give you enough flexibility to do whatever it is you need to do.

Hi @dwbutler,
Thanks for the quick response.  The use case is that I would like to introduce this to a project with custom events.  The migration would be much easier if this functionality was available. Without it, I would need to update code in lots of places.
The original use case was to be a bit more descriptive about the logs but that could be handled by use of tags.

In order to conform as closely as possible to Ruby's built in Logger interface, I will probably never support custom log levels. The use case can be implemented using tags.


Need a toggle walk/run button

Description

Having to hold shift all the time is annoying, specially if you want to click something since you open context menu
Reproduction

Screenshots

Additional context

pretty sure you can already do this with our current bind system


no way to pull VM OS type and version ?

no way to pull VM OS type and version

not enough information.


OpenAPI 3.0 Support

Is there any plan to support generating OpenAPI 3.0 definitions?

Sure,  should not be a problem, as long as more people sign up as maintainers, see Issue #1053

Doesnt the equestion also apply to Swashbuckle.AspNetCore ?

Swashbuckle.AspNetCore is a separate project...
Look at the amount of pending Pull Request, also look at the open Issues.
That should give you an idea of the state of this project

+1

@ptomkiel-oktawave
If you want to "+1" an Issue on github click on the "Pick reaction" button:

No plans to backport here I’m afraid

Thank you for the quick reply.
Any idea how to upgrade an existing project to openApi 3 without upgrading to .Net core?

You could try NSwag - it’s an alternative library that generates Swagger, among other things. I believe it supports OpenAPI 3.0.

NSwag does not support OpenAPI 3 yet: https://github.com/RSuter/NSwag/issues/945

@giggio NSwag does support OAS3 but not every feature yet...

Would be awesome to see OpenAPi 3.0 backported to .Net

I know this is an old ticket but I'd like to chime in that getting OAPI 3.0 support would be very nice. Not sure how tough it would be to implement it here.

This repo is not active. See https://github.com/domaindrivendev/Swashbuckle.AspNetCore

@bugproof The OAPI 3.0 generator is for dot Net core, right? Is there any way to get OAPI 3.0 without upgrading from .Net to .NetCore


⚠ Bofrost.lu has degraded performance

In 1050c2f, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1044 ms

Resolved: Bofrost.lu performance has improved in 7b12a40 after 13 minutes.


Add non-iso data from https://github.com/mledoze/countries

Add data from this repo:
https://github.com/mledoze/countries

Nice to have:
National Colors scraped from Wikipedia


Add embedded db to storage engines

Add embedded-db storage engine based on
boltdb.
Embedding the storage directly in grafeas provides deployment simplicity
and persistency (assuming a persistent volume is used).
Signed-off-by: Liron Levin<EMAIL_ADDRESS>

Nice! Could you elaborate on the use case for this storage type? While adding a new storage type adds value, it also adds future maintenance cost. One question in particular that needs to be answered before adding any new storage backend is what type of support it should have regarding database migrations as changes to the data model are introduced.

Hi @furuholm, thanks for your reply.

The main reasoning for this change is to simplify cluster deployment. That is, we would like to enable running a standalone production-ready image of Grafeas without external dependencies on storage (which require authz/authn and additional connectivity configuration).
Boltdb is a robust embedded storage which is used in other cloud native projects (e.g., InfluxDB  and docker swarm).
I considered using sqlite, but the C embedding makes the build process slower, and i prefer a native go solution.

Re schema migration, the current implementation store each schema in a dedicated bucket (collection)  where the value is the serialized value. Thus, we can do data migration of a bucket by iterating a collections key/values and modifying/adjusting the data.

Let me know if this answers your questions.

Thanks for the answers! I'm ok with this. Just wanted to highlight some things that might be good to for @vtsao to consider when doing the cost/benefit analysis of adding another storage backend.
Another thing that might be worth having in mind is how this integrates with #29.

Hi @liron-l, thanks for your PR. We're currently discussing the maintenance implications of adding another storage layer, as @furuholm mentioned as well. We will get back to you.

Thanks @furuholm and @vtsao.
If you're concerned about maintenance, I think an embedded engine might replace the existing in-memory engine. They both provide the same prototyping benefits while the embedded solution also provides persistenty.
Also, if we add support for exposing a unix socket, we get a default secure and standalone solution.

Replacing the memory store with a persistent one could make sense but it will be crucial to establish and communicate the level of migration support this solution provides. This is not an issue for the memory store as it (obviously) does not provide any support for migrations.

But you still have to implement the migrations which you never would have to do for the memory store. This means two migration systems (Postgres and BoltDB) have to be maintain if the BoltDB should have the same level of support as the Postgres store.
(BTW: I'm not trying to beat on this PR. Just want all the information to be on the table)

@furuholm yes that's correct.
The benefit is that together with unix socket, you can have a secure local standalone solution without external dependencies.
I can achieve the same final results by creating a complex image, but trying to avoid this this if possible.

If adding the storage seems like to much of a commitment an alternative could be to do what CoreOS Clair does. They allow components to register themselves dynamically using a pattern described here. @jzelinskie mentioned that they had used this mechanism to allow users to extend Clair without having to take over the ownership of the code.
This pattern would have to be added to Grafeas as well. Once that is done it is possible to add another storage implementation by dropping the code into a package that is imported by main.go. The downside to this solution is that it requires the source code to be patched. OTOH it allows adding new implementations without having to get approval from the maintainers.

Thanks @furuholm. I think the use-case in clair is adding a storage driver to a private fork (so you can use it in your own implementation) and not to the mainline code, where 'open-sourcing' the driver is equivalent to submitting the engine in the source code (like we do here).
I do think that adding an embedded storage to this project can benefit other users, which is the reason i suggested to included it as a first class citizen in the project.

Thanks @furuholm and @vtsao for the feedback.
Do we need additional code-reviewers for this change?


Added new school

@emrecankurtcu Thank you for your patience while waiting for a review and processing your request. Pull request merged. Thank you!


[bug]: Fresh install always uses cuda for a ROCm compatible AMD GPU

Is there an existing issue for this?

[X] I have searched the existing issues

OS
Linux
GPU
amd
VRAM
16GB
What version did you experience this issue on?
v3.0.2rc1
What happened?
I used the install script from the latest release, and selected AMD GPU (with ROCm). The script installs perfectly fine, and then I go to run InvokeAI in the graphical web client, and I get this output:
[2023-08-09 17:25:18,419]::[uvicorn.error]::INFO --> Started server process [16866]
[2023-08-09 17:25:18,419]::[uvicorn.error]::INFO --> Waiting for application startup.
[2023-08-09 17:25:18,420]::[InvokeAI]::INFO --> InvokeAI version 3.0.1
[2023-08-09 17:25:18,420]::[InvokeAI]::INFO --> Root directory = /<myrootpath>/AI/invokeAI
[2023-08-09 17:25:18,421]::[InvokeAI]::INFO --> GPU device = cuda AMD Radeon RX 6800 XT

As you can see, it opens up with cuda AMD Radeon RX 6800 XT. This card works just fine with A111 and ROCm. I've also edited the invokeai.yaml file, as I saw that xformers was enabled (isn't available for AMD cards). Here's my current config:
InvokeAI:
  Web Server:
    host: <IP_ADDRESS>
    port: 9090
    allow_origins: []
    allow_credentials: true
    allow_methods:
    - '*'
    allow_headers:
    - '*'
  Features:
    esrgan: true
    internet_available: true
    log_tokenization: false
    patchmatch: true
  Memory/Performance:
    always_use_cpu: false
    free_gpu_mem: true
    max_cache_size: 10.0
    max_vram_cache_size: 2.75
    precision: float32
    sequential_guidance: false
    xformers_enabled: false
    tiled_decode: false
  Paths:
    autoimport_dir: autoimport
    lora_dir: null
    embedding_dir: null
    controlnet_dir: null
    conf_path: configs/models.yaml
    models_dir: models
    legacy_conf_dir: configs/stable-diffusion
    db_dir: databases
    outdir: /<myrootpath>/AI/invokeAI/outputs
    use_memory_db: false
  Logging:
    log_handlers:
    - console
    log_format: color
    log_level: info

Of course, cuda doesn't work with my card and I get all-black output images.
Screenshots
No response
Additional context
This also breaks on the manual install and runs with cuda.
Contact Details
No response

I'm having a similar problem using a 7900 XTX even after I installed Invoke with pip install InvokeAI --use-pep517 --extra-index-url https://download.pytorch.org/whl/nightly/rocm5.6
Invoke still fully installs only the Nvidia stack, then launches in cpu only mode

I'm having a similar problem using a 7900 XTX even after I installed Invoke with pip install InvokeAI --use-pep517 --extra-index-url https://download.pytorch.org/whl/nightly/rocm5.6
Invoke still fully installs only the Nvidia stack, then launches in cpu only mode

The provided pytorch+rocm5.6 package from https://download.pytorch.org/whl/rocm5.6 does either not have support for gfx103x or is mistakenly using CUDA.
https://gist.github.com/adeliktas/669812e64fd356afc4648ba847c61133
torch version = 2.0.1+cu117
cuda available = False
cuda version = 11.7
device count = 0

The docs recommend installing 5.4.2 and you might have to run it like:
CUDA_VERSION=gfx1030 HSA_OVERRIDE_GFX_VERSION=10.3.0 invokeai-web
https://gist.github.com/adeliktas/669812e64fd356afc4648ba847c61133
torch version = 2.0.1+rocm5.4.2
cuda available = True
cuda version = None
device count = 1
cudart = <module 'torch._C._cudart'>
device = 0
capability = (10, 3)
name = AMD Radeon RX 6600 XT

The 7900 XTX does not work with rocm 5.4.2

CUDA_VERSION=gfx1030 HSA_OVERRIDE_GFX_VERSION=10.3.0 invokeai-web
I suspect the ENV vars are doing the heavy lifting here, though one would need to change the specific values for a 7900 XTX in particular, I'll give this a try:

CUDA_VERSION=gfx1100
HSA_OVERRIDE_GFX_VERSION=11.0.0

The provided pytorch+rocm5.6 package from https://download.pytorch.org/whl/rocm5.6 does either not have support for gfx103x or is mistakenly using CUDA.
This is not correct. I have installed using this package for text-gen-webui, auto1111, and comfy without any issues

I have tried to manually modify the create_install.sh and associated files to remove CUDA. I have tried to force ROCM install. I still haven't figured things out. I wish they had the old requirements.txt file. At this point InvokeAI is useless for AMD GPUs.
I tried to update installer.py with the following:
    # device can be one of: "cuda", "rocm", "cpu", "idk"
    device = graphical_accelerator()
    device = "rocm"

    url = None
    optional_modules = "[onnx]"
    if OS == "Linux":
        if device == "rocm":
            url = "https://download.pytorch.org/whl/nightly/rocm5.7"
        elif device == "cpu":
            url = "https://download.pytorch.org/whl/cpu"

But it still tries to install CUDA dependencies.

Same experience for me on my AMD 6750 XT. I tell it I have an AMD card but it installs CUDA then launches in CPU mode.

@cfbauer can you open the developer console in the automatic installation with option 7 and then do pip show torch?

@Millu
$ pip show torch
Version: 2.1.0
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page: https://pytorch.org/
Author: PyTorch Team
Author-email<EMAIL_ADDRESS>License: BSD-3
Location: /home/chris/invokeai/.venv/lib/python3.10/site-packages
Requires: filelock, fsspec, jinja2, networkx, nvidia-cublas-cu12, nvidia-cuda-cupti-cu12, nvidia-cuda-nvrtc-cu12, nvidia-cuda-runtime-cu12, nvidia-cudnn-cu12, nvidia-cufft-cu12, nvidia-curand-cu12, nvidia-cusolver-cu12, nvidia-cusparse-cu12, nvidia-nccl-cu12, nvidia-nvtx-cu12, sympy, triton, typing-extensions
Required-by: accelerate, basicsr, clip-anytorch, compel, controlnet-aux, facexlib, gfpgan, invisible-watermark, InvokeAI, pytorch-lightning, realesrgan, test-tube, timm, torchmetrics, torchsde, torchvision

@cfbauer @slavexe can you try running this from the developer console:
pip install "torch==2.1.0+rocm5.6" "torchvision==0.16.0+rocm5.6" "requests~=2.28.2" --force-reinstall --extra-index-url https://download.pytorch.org/whl/rocm5.6

@cfbauer
Upon running
pip install "torch==2.1.0+rocm5.6" "torchvision==0.16.0+rocm5.6" "requests~=2.28.2" --force-reinstall --extra-index-url https://download.pytorch.org/whl/rocm5.6
it is properly using my GPU now, however the following error showed up after running the command. Not sure if it would impact anything as all the correct ROCM related packages are installed now. Thanks
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. datasets 2.14.7 requires fsspec[http]<=2023.10.0,>=2023.1.0, but you have fsspec 2023.12.0 which is incompatible. Successfully installed MarkupSafe-2.1.3 certifi-2023.11.17 charset-normalizer-3.3.2 cmake-3.27.9 filelock-3.13.1 fsspec-2023.12.0 idna-3.6 jinja2-3.1.2 lit-17.0.6 mpmath-1.3.0 networkx-3.2.1 numpy-1.26.2 pillow-10.1.0 pytorch-triton-rocm-2.1.0 requests-2.28.2 sympy-1.12 torch-2.1.0+rocm5.6 torchvision-0.16.0+rocm5.6 typing-extensions-4.8.0 urllib3-1.26.18

If that error isn't causing issues, I wouldn't worry about it!

I'm getting the same error:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
datasets 2.14.7 requires fsspec[http]<=2023.10.0,>=2023.1.0, but you have fsspec 2023.12.0 which is incompatible.

Trying to run Invoke now gives me this:
./invoke.sh: line 54: 544485 Segmentation fault      (core dumped) invokeai-web $PARAMS

I also tried running what I thought was a compatible version of fsspec but still got the error above telling me I had an incompatible verion:
pip install fsspec==2023.9.0

I may have found the culprit for why amdgpus default to cuda.
If I find the time, I will test it and report the results back here.

export HSA_OVERRIDE_GFX_VERSION=10.3.0
Before running ./invoke.sh appears to have fixed the issue for me.
Also of note, tweaking the version numbers of the above suggested command runs without errors:
pip install "torch==2.1.2+rocm5.6" "torchvision==0.16.2+rocm5.6" "fsspec==2<IP_ADDRESS>" "requests~=2.28.2" --force-reinstall --extra-index-url https://download.pytorch.org/whl/rocm5.6
I don't know enough to be able to say if those versions are a good idea, but they don't error for me on invoke 3.6.0rc6.


WasmRefCell into_inner with 'unsafe'

This change wraps the into_inner call with unsafe. UnsafeCell into_inner is unsafe, thus it seems the into_inner in WasmRefCell needs to be unsafe as well. Relates to my issue here - #10

Ah thanks for this! I think though that this was a recent change in nightly, if you upgrade nightly does the error go away?

@alexcrichton Let me check, I am running Mac, and I thought it was up to date..

@alexcrichton my bad, I was just slightly out of date! Updating fixed it


Mark job as failed on error

Ran into this issue earlier today. Closes #13.

Also updated dependencies. Let me know if you prefer to have them in a separate pull request.

Hi @antonmedv, is there anything else I can do to help get this merged?

Sorry for delay. I’ll try to test it today.

Let me know if I can help with the testing.


Behave fix

Codecov Report

Merging #92 (95aa61e) into main (4f97381) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #92   +/-   ##
=======================================
  Coverage   97.56%   97.56%
=======================================
  Files           7        7
  Lines         534      534
=======================================
  Hits          521      521
  Misses         13       13

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 4f97381...95aa61e. Read the comment docs.

IBM Cloud toolchain: Delivery Pipeline deployed wishlists to prod, including commit cb58d8de476efed8df299176ccfda10442873839


Training in french

From the basic training in English, I made a translation of the Angular training in French! 😄

From the basic training in English, I made a translation of the Angular training in French! 😄

Thank you for your contribution, I'll review it shortly, most likely next week :)

You're welcome 😄


How to enable full filesystem access to WASM?

As far as I know, we can use preopened_dir to preopen some directories and give WASM binary a limited filesystem access. However, I can't find a simple way to give the binary a full filesystem access. The following code doesn't work (with wasi-cap-std-sync) on Windows:
WasiCtxBuilder::new().preopened_dir(cap_std::fs::Dir::from_std_file(std::fs::File::open("/")?), "/")?.build()

I would also like a cross-platform way to give full filesystem access.

Some of the plugins need to access files from the user input, and I cannot know about the input before creating the WASM runtime.

Assuming your software has a gui, selecting files likely uses a file dialog presented by the host. You could make the host use wasi_ctx.table().push(Box::new(FileEntry::new(caps, file))) after the user picked a file and then pass the returned fd to the guest I think.

@bjorn3 What about this case: the user input is a JSON with some paths, and the JSON plugin parses the JSON and go to find the files. The host cannot know about the paths except parsing the JSON itself. However the user input may be TOML or XML or YAML besides JSON. The format is defined by plugins but not host. Therefore the host cannot preopen the directory this time.

I see. In that case try something like
let mut builder = WasiCtxBuilder::new();
for drive in some_function_that_lists_all_drives() {
    builder.preopened_dir(cap_std::fs::Dir::from_std_file(std::fs::File::open(format!("{drive}:"))?), format!("/{drive}"))?;
}
let ctx = builder.build();

Then you can access C:\foo\bar.txt as /c/foo/bar.txt inside the guest.

@Berrysoft It's a little unclear from your message; is that your actual use case, or is it a hypothetical use case?

@sunfishcode It is nearly the same as my actual use case. In the actual case, the difference between user input is not the format, but the custom (YAML) properties. Only the plugins know the specific property name, and go to find the files. However not all the custom properties are paths, and even the paths are relative ones to other properties, therefore the host runtime cannot try to parse all the values and try to preopen the files.


bundler is scanning for all possible gemspec

finding bundle update has gotten very slow...
found this https://dependabot.com/blog/improving-dependency-resolution-in-bundler
seems like a PR into Molinillo was merged, I'm not sure it made its way to bundler 1.16.0 and I also don't understand how cocaopods and ruby a mixed together...
but before downgrading to bundler 1.14
I ran bundle update with strace, and found out it was looking for A LOT of outdated gemspec
I am thinking this could be the cause of the slowness
try out this command in your project
strace bundle update 2>&1 | grep "^stat.*gemspec.*ENOENT" > omg.log
and wc -l omg.log
here is a very short snippet of the output
stat("/home/mathieu/.gem/specs/rspec-3.5.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.4.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.4.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.3.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.3.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.2.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.2.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.1.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.1.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.0.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.0.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.99.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.99.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.14.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.14.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.14.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.14.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.13.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.13.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.12.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.12.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.11.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.11.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.10.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.10.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.9.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.9.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.8.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.8.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.7.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.7.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.6.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.6.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.5.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.5.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.4.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.4.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.3.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.3.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.2.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.2.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.1.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.1.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.6.0.beta2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.6.0.beta2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.6.0.beta1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.6.0.beta1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.5.0.beta4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.5.0.beta4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.5.0.beta3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.5.0.beta3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.5.0.beta2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.5.0.beta2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.5.0.beta1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.5.0.beta1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.0.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.0.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.0.0.beta2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.0.0.beta2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-3.0.0.beta1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-3.0.0.beta1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.99.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.99.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.99.0.beta2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.99.0.beta2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.99.0.beta1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.99.0.beta1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.14.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.14.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.9.0.rc2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.9.0.rc2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.8.0.rc2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.8.0.rc2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.8.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.8.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.7.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.7.0.rc1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.6.0.rc6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.6.0.rc6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.6.0.rc4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.6.0.rc4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.6.0.rc2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.6.0.rc2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.3.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.3.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.3.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.3.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.3.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.3.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.2.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.2.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.12.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.12.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.11.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.11.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.1.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.1.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.0.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.0.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.0.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.0.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.0.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.0.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.0.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.0.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.0.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.0.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.0.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.0.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.0.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.0.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.0.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.0.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.0.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.0.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.9.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.9.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.9.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.9.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.9.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.9.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.9.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.9.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.9.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.9.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.8.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.8.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.8.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.8.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.8.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.8.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-<IP_ADDRESS>.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-<IP_ADDRESS>.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.7.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.7.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.7.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.7.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.7.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.7.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.7.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.7.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.7.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.7.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.7.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.7.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.6.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.6.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.6.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.6.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.6.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.6.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.6.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.6.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.6.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.6.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.16.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.16.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.15.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.15.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.14.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.14.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.13.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.13.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.12.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.12.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.11.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.11.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.5.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.5.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.4.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.4.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.3.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.3.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.3.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.3.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.3.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.3.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.2.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.2.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.1.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.1.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.1.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.1.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.1.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.1.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.1.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.1.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.1.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.1.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.1.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.1.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.1.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.1.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.1.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.1.0.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-0.0.10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-0.0.10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.rc.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.rc.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.22.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.22.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.20.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.20.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.19.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.19.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.18.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.18.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.17.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.17.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.16.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.16.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.15.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.15.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.14.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.14.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.13.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.13.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.12.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.12.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.11.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.11.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.beta.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.beta.1.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.a10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.a10.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.a9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.a9.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.a8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.a8.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.a7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.a7.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.a6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.a6.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.a5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.a5.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.a4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.a4.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.a3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.a3.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-2.0.0.a2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-2.0.0.a2.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.2/specifications/rspec-1.3.1.rc.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/rspec-1.3.1.rc.gemspec", 0x7ffe1f4b1180) = -1 ENOENT (No such file or directory)

you can see it is trying to find all possible old version of the rspec gem ...

$ wc -l omg.log
10902 omg.log

$ grep -o "[^/]*gemspec" omg.log | cut -d - -f 1 | sort | uniq -c  | sort -n | tail -n 30
    124 vcr
    126 json
    132 coderay
    132 faraday
    136 uglifier
    140 tzinfo
    142 activejob
    142 byebug
    142 capybara
    146 rake
    164 therubyracer
    166 nokogiri
    170 rack
    182 excon
    182 redis
    204 webmock
    220 actionview
    234 unicorn
    260 cucumber
    272 rollbar
    284 sidekiq
    290 haml
    350 oj
    426 newrelic_rpm
    428 pry
    502 railties
    612 activesupport
    640 actionpack
    668 activerecord
    686 rspec

There must be a condition that could be used to end the scan loop earlier?

or maybe it can be cached?

Can you share a gemfile we can use to reproduce? Thanks

sure, stay tuned

since my gem file has several private gems, I could not share in its entirety.
I have taken out several gems and put them back one by one until I locate the culprit.
and i found out it happens when i load sidekiq-pro from a source block
so when I don't do a block such as
source<EMAIL_ADDRESS>
gem 'sidekiq-pro', '~> 3.0'

it won't try to find all old possible versions of every gems
but if I do
source<EMAIL_ADDRESS>do
  gem 'sidekiq-pro', '~> 3.0'
end

it leads to 2800 unsuccessful file look up

Gemfile.txt

I get:
Authentication is required for gems.contribsys.com.
Please supply credentials for this source. You can do this by running:
 bundle config gems.contribsys.com username:password

yeah, I'm sorry I can't share this login/password
let me figure out a different way to reproduce...

@segiddins Happy to give you a temporary credential so you can optimize this case, email mperham at gmail.  My server uses the old school Rubygems static file protocol and not the Bundler API.

@mathieujobin As a workaround, it will  likely be much faster if you locked to a specific version.  Using ~> 3.0 is nebulous and likely triggers a version search.

we switch from rubygems.org to .jfrog.io and its a lot better
removing all of our ssh sourced gems.
now that same command from above, only complains about sidekiq-pro, which is much less
[mathieu@hz550 push_it]$ cat today-omg.log
stat("api_hammer.gemspec", 0x7ffe84d9a1d0) = -1 ENOENT (No such file or directory)
stat("api_hammer.gemspec", 0x7ffe84d9a3a0) = -1 ENOENT (No such file or directory)
stat("api_hammer.gemspec", 0x7ffe84d9a3b0) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.3/specifications/sidekiq-pro-3.7.1.gemspec", 0x7ffe84d99980) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/sidekiq-pro-3.7.1.gemspec", 0x7ffe84d999f0) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.3/specifications/sidekiq-pro-3.6.1.gemspec", 0x7ffe84d99a60) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/sidekiq-pro-3.6.1.gemspec", 0x7ffe84d99a60) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.3/specifications/sidekiq-pro-3.6.0.gemspec", 0x7ffe84d99a60) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/sidekiq-pro-3.6.0.gemspec", 0x7ffe84d99a60) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.rvm/gems/ruby-2.4.3/specifications/sidekiq-pro-3.7.0.pre1.gemspec", 0x7ffe84d99a60) = -1 ENOENT (No such file or directory)
stat("/home/mathieu/.gem/specs/sidekiq-pro-3.7.0.pre1.gemspec", 0x7ffe84d99a60) = -1 ENOENT (No such file or directory)
[mathieu@hz550 push_it]$

$ wc -l omg.log today-omg.log
  10902 omg.log
     11 today-omg.log

I'm happy with that

@mperham oh, and using ~> 3.7.0 or ~> 3.0 did not change anything

The issue is that the old school rubygems provider in Bundler is downloading each version's gemspec.rz in serial.  I have something like 50 Sidekiq Pro versions from 1.0 onward, it downloads 1.0.0, 1.1.0, 1.1.1, ... until the current 4.0.2.  Each request takes 100+ ms round trip,  and it does it for sidekiq-ent too and it does it again, after printing this:
Double checking for all specs (due to the size of the request) in rubygems repository https://[snip].contribsys.com/, https://rubygems.org/ or installed locally

All of this adds up to a 30 second bundle up sidekiq-ent.  Removing my server, bundle up drops to 3 seconds.  Two things to possibly fix:

Remove the "double check" if possible, should halve the overhead.
Download the gemspec.rz files in parallel, with a reasonable (say, 10) concurrency

Happy to open a new issue if this is something the Bundler team is interested in tackling.

I don't think this is grouping logic - sounds like @mperham has it right that it's an issue with gems.contribsys.com not serving the compact index (and instead Bundler having to fall back to the old API).
The introduction of the slowness with Bundler 1.16.0 makes sense because before resolution would have "given up" early on some graphs, whereas now it's more dogged. That could easily have introduced cases like this one where previously it was only ever trying the latest sidekiq-ent, and not having to making lots of other requests.
I think the solution here is something along what @mperham suggests. Have we looked at adding parallelism to gemspec downloads before?

I don’t think so? We do have parallelism for compact index downloads though... that might not be a bad idea? I guess we could also cache the downloaded gemspecs, though that sounds like a larger project

@segiddins I noticed that each gemspec is downloaded twice from my server for a bundle up.  It doubles the execution time.  Caching across bundle executions is troublesome but seems useful here within the same operation.

I noticed that each gemspec is downloaded twice from my server for a bundle up. It doubles the execution time

That's definitely a bug. If you could open up a new issue with a Gemfile I can use to reproduce, I'd be happy to look into fixing it


miniflare@3 no longer includes a CLI. Please use npx wrangler dev instead.

When following the project instructions i got this error:
❯ yarn dev
yarn run v1.22.21
$ miniflare --watch --debug --host <IP_ADDRESS> --kv GRAPHQL_CACHE
[mf:err] `miniflare@3` no longer includes a CLI. Please use `npx wrangler dev` instead.
As of `wrangler@3`, this will use Miniflare by default.
See https://miniflare.dev/get-started/migrating for more details.
✨  Done in 0.13s.

Using npx wrangler dev worked though

@simplenotezy The PR #51 solved this issue.


Wrong info to find deployment key in android setup.

In the Android setup part, the command to get deployment keys is given as "code-push deployment list <ownerName>/<appName>". I suppose this is the old cli which is no longer needed to be used with appcenter.
The command should be updated as "appcenter codepush deployment list".

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

ID: 39490e39-be97-2bba-5afc-6bc8bed39690
Version Independent ID: 357a2070-e41c-b346-e18b-606eec7255c2
Content: Using the React Native SDK with CodePush - Visual Studio App Center
Content Source: docs/distribution/codepush/react-native.md
Service: vs-appcenter
GitHub Login: @Zakeelm
Microsoft Alias: zakeelm

@Girish2015 thanks, I'll have the team take a look.

Going to go ahead and close this, have submitted a PR to fix this. Should be live soon. Thanks for pointing this out!

This documentation still references "code-push" CLI command instead of "appcenter". Did the PR not get merged?

@Zakeelm can you please take a look?


updating url use v1

Why are these changes needed?
As we are gearing to v1 this PR updates API server URLs to reflect V1

All proto files are updated to use V1 in URL. Additionally test files and readme were updated to reflect this change
Related issue number

Checks

[ x] I've made sure the tests are passing.
Testing Strategy

[ ] Unit tests
[ x] Manual tests
[ ] This PR is not tested :(

@z103cb, @tedhtchang, @astefanutti pls, take a look
cc: @kevin85421

Thanks @tedhtchang for catching this. fixed

@kevin85421  I think this one is ready for commit


update package links to use http

The "More Information" link still doesn't work and after reading more in the official spec, only HTTP is allowed, so this in another attempt to fix #2832.

This issue in particular is with MyGet.  I've already started a conversation with them to see if something else needs to be done from their perspective.

I just spoke with the MyGet folks about updating the alternate link in the feed (which according to the VSIX people is what populates the "More Information" link in VS) and the alt link was previously hard-coded to be a duplicate of the package download, but at our request they've made the change to use the appropriate value from the vsixmanifest.  Changes should be live some time next week.


Added 0xB3, 0xB5, 0xB6, 0xAF and 0xAB.

Added 0xB3, 0xB5, 0xB6, 0xAF and 0xAB.

Note to self: fix travis, ASAP.


CREATE INDEX doesn't automatically bound index to the schema property in v3.0.0

OrientDB Version: v3.0.0
Java Version: 9.0.1
OS: MacOS
Expected behavior
CREATE INDEX should automatically bound index to a property using index name:
CREATE INDEX User.id UNIQUE    /* throws error */

CREATE INDEX User.id ON User (id) UNIQUE    /* working */

Actual behavior
It throws this error:
com.orientechnologies.orient.core.exception.ODatabaseException: Impossible to create an index without specify the key type or the associated property: CREATE INDEX User.id UNIQUE

Steps to reproduce
Run these commands (from https://orientdb.com/docs/3.0.x/sql/SQL-Create-Index.html):
CREATE PROPERTY User.id BINARY
CREATE INDEX User.id UNIQUE

Hi @dastoori
That syntax will be deprecated soon, it's there only for backward compatibility in the legacy SQL executor. Please use the full syntax.
Anyway, I'll give it a look, probably it's an easy fix
Thanks
Luigi

Hi @dastoori
I just pushed a fix for this, it will be released with v 3.0.2
Thanks
Luigi


Set HttpOnly for session cookie due to improvement of security.

Cookies are usually created by a server, passed to the browser and then passed back. Now it is possible to create and manipulate Cookies using JavaScript which can be helpful but can also be a security hole. So an HttpOnly Cookie is only accessible by the server, or in other words it is not accessible from client side JavaScript which protects your site from some forms of XSS attacks. So the Browser will store and return an HttpOnly Cookie but it will not alter it or allow you to create it on the client; an HttpOnly Cookie must be created on the server.
Overall, for security improvement cookies must be HttpOnly.

@jakaarl I believe we should merge this pr ASAP. This is a huge security hole in all web applications written in Spark. What is the most important, adding HttpOnly breaks vulnerabilities. No valid code should ever use session cookie from JavaScript code. If somebody has such code, let's break it. It's the moment when framework author can decide. Security has much higher priority over somebody's ugly legacy code.
Let's the force be with you! :)
P.S. Those who don't have access to their source code just will not upgrade to the latest Spark version.  As simple as that.

There are plenty of use cases for using session cookies to SHARE information with the broweser. For example, any time you use a session cookie for authentication, you are vulnerable to Cross Site Requ st Forgery attacks. One way to mitigate these attacks is to provide a XSRF cookie thar can be read by the browser.
https://stormpath.com/blog/angular-xsrf
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

@joatmon yes, sure, it's absolutely ok to use some cookies in JS (for example, CSRF token). But not for session cookie. It definitely must be "httpOnly"!
In this pull request, we are talking specifically about session cookie.

@jakaarl @joatmon So?...

@jakaarl @joatmon ping

Secure by default is generally the way to go, but as I said, a way to opt out would be nice. Anyway, IIRC only @perwendel and @tipsy can accept pull requests.

@perwendel @joatmon  ping

Seems like a good idea, but it's not backwards compatible.

It seems unit tests were not written correctly(All checks passed and there is not any conflict) or maybe there are some imaginary checks which are not visible publicly.

@perwendel @tipsy @jakaarl @joatmon  @M-Razavi
I have added tests and made it possible to disable HttpOnly flag. Please see my PR with these changes: https://github.com/perwendel/spark/pull/1027

For it to be backwards compatible it should really be the other way, but IMO this is fine. @perwendel will have to decide.

@tipsy I agree, formally it's not backward compatible: the default behaviour has been changed. And I believe it's good in the name of security. :)
Those who want the previous behaviour will be able to achivee that.


Fix for classpath files on GWT.

This solves the problem in at least libGDX tests where the default font, lsans-15, is used by new BitmapFont() with no args. It also should fix some 3D code that uses default shaders from classpath files.
It's a one-line change! Four chars, really. I don't know precisely why this works, but it does. It makes sense that filePathOrig should come from orig, not dest, though, and now that is true.

Pulled your changes down and re-tested. All of the once broken gwt tests related to Bitmapfont() are now working, as well as a custom test I was running when I found it. Awesome.
👍


Processing resize event: TypeError: NoSquint.prefs is undefined

Hi. I am on archlinux64 with palemoon <IP_ADDRESS>
Since I updated a couple days ago i have got this fault..
Processing resize event: TypeError: NoSquint.prefs is undefined
I use pentadactyl and this fault message is shown in the statusbar.
I can't launch the dialogue via the statusbar anymore and if I go the route trough about:addons > nosquint> settings  the dialogue don't save or close when clicking done.
I can still use the right click menu in the statusbar and set zoom level that way but they do not stick in the way that they transfer to an other tab using the same site. I will try to revert to an earlier version of no squint and see if it helps but my guess is that it is PaleMoon.
I would be glad to get an advice on how to fix this mannually. I guess there is some string missing from about.config.
Thanks by the way. NoSquint is an excellent addon and it is very important addon for me as i have got worse sight by the years.

Fore some reason(palemoon) I cant get to the post menu and the "edit" link here at github.
I just want to add that I tried to uninstall, restart, install and restart PM without positive results.


[Bug report]OAuth mode, enable https ,Safari: Network Error in login page

Version
main branch
Describe what's wrong

Error message and/or stacktrace
N/A
How to reproduce

enable OAuth mode
enable https
access https://localhost:8433

Additional context
No response

@ch3yne please add this constraints to the doc.