macos: app hangs after pressing window close button

Bevy version
main, bisected to #12978
Relevant system information
SystemInfo { os: "MacOS 14.4.1 ", kernel: "23.4.0", cpu: "Apple M1 Max", core_count: "10", memory: "64.0 GiB" }
AdapterInfo { name: "Apple M1 Max", vendor: 0, device: 0, device_type: IntegratedGpu, driver: "", driver_info: "", backend: Metal }

What you did
cargo run --example sprite
cargo run --example button
Press close button in top left corner of title bar.
What went wrong
App hangs instead of closing

@Friz64 any idea on how to fix?

Ouch, sorry about this. No idea why my PR would cause this. I unfortunately can't debug this by myself as I don't have access to appropriate hardware at the moment. Best I can do right now is to do some research, in the hopes that I find something useful.
But what we can always do is to put a #[cfg(target_os = "macos")] over the _window variable in the RawHandleWrapper, so that the PR is essentially negated on macOS. It wouldn't be elegant, but it would work.

I'm getting this when setting RUST_LOG=debug cargo run --example sprite:
2024-05-04T01:49:22.843807Z  INFO bevy_window::system: No windows are open, exiting
2024-05-04T01:49:22.845024Z  INFO bevy_winit::system: Closing window Entity { index: 0, generation: 1 }
2024-05-04T01:49:22.855889Z DEBUG wgpu_core::present: Created CURRENT Surface Texture Id(22,41,mtl)
2024-05-04T01:49:22.855926Z DEBUG wgpu_core::device::resource: Create view for texture Id(22,41,mtl) filters usages to TextureUses(COLOR_TARGET)
2024-05-04T01:49:22.857666Z DEBUG wgpu_core::device::life: Active submission 82 is done
2024-05-04T01:49:22.857898Z DEBUG present_frames: wgpu_core::present: Removing swapchain texture Id(22,41,mtl) from the device tracker
2024-05-04T01:49:22.857941Z DEBUG present_frames: wgpu_core::present: Presented. End of Frame
(it hangs from here, with no more info logged)

It looks like it's hanging before it creates the next surface texture after the previous was presented. After checking out the main branch from a week ago, we should additionally have the following logs after Presented. End of Frame before exiting the program:
2024-05-04T01:53:36.461981Z DEBUG wgpu_core::device::life: Active submission 77 is done
2024-05-04T01:53:36.463780Z DEBUG wgpu_core::resource: Buffer Id(9,1,mtl) map state -> Idle
2024-05-04T01:53:36.463831Z DEBUG wgpu_core::resource: Buffer Id(4,1,mtl) map state -> Idle
2024-05-04T01:53:36.463980Z DEBUG wgpu_core::resource: Buffer Id(0,1,mtl) map state -> Idle
2024-05-04T01:53:36.464853Z DEBUG wgpu_core::resource: Buffer Id(12,1,mtl) map state -> Idle
2024-05-04T01:53:36.464870Z DEBUG wgpu_core::resource: Buffer Id(13,1,mtl) map state -> Idle
2024-05-04T01:53:36.464902Z DEBUG wgpu_core::resource: Buffer Id(6,1,mtl) map state -> Idle
2024-05-04T01:53:36.464924Z DEBUG wgpu_core::resource: Buffer Id(2,1,mtl) map state -> Idle
2024-05-04T01:53:36.464958Z DEBUG wgpu_core::resource: Buffer Id(7,1,mtl) map state -> Idle
2024-05-04T01:53:36.464990Z DEBUG wgpu_core::device::life: Active submission 78 is done
2024-05-04T01:53:36.466244Z DEBUG wgpu_core::resource: Buffer Id(10,1,mtl) map state -> Idle
2024-05-04T01:53:36.466300Z DEBUG wgpu_core::resource: Buffer Id(8,1,mtl) map state -> Idle
(program exits here)

And RUST_LOG=trace

2024-05-04T01:47:12.377846Z  INFO bevy_window::system: No windows are open, exiting
2024-05-04T01:47:12.379049Z  INFO bevy_winit::system: Closing window Entity { index: 0, generation: 1 }
2024-05-04T01:47:12.389174Z TRACE wgpu_core::storage: User is inserting TextureId(13,90,mtl)
2024-05-04T01:47:12.389201Z DEBUG wgpu_core::present: Created CURRENT Surface Texture Id(13,90,mtl)
2024-05-04T01:47:12.389213Z TRACE wgpu_core::track::texture:    tex 13: insert start TextureUses(UNINITIALIZED)
2024-05-04T01:47:12.389245Z DEBUG wgpu_core::device::resource: Create view for texture Id(13,90,mtl) filters usages to TextureUses(COLOR_TARGET)
2024-05-04T01:47:12.389257Z TRACE wgpu_core::storage: User is inserting TextureViewId(13,90,mtl)
2024-05-04T01:47:12.389266Z TRACE wgpu_core::device::global: Texture::create_view(Id(13,90,mtl)) -> Id(13,90,mtl)
2024-05-04T01:47:12.389893Z TRACE wgpu_core::storage: User is inserting StagingBufferId(3,90,mtl)
2024-05-04T01:47:12.389898Z TRACE wgpu_core::device::queue: Queue::write_buffer Id(7,1,mtl) 16384bytes
2024-05-04T01:47:12.389914Z TRACE wgpu_core::device::queue: Queue::create_staging_buffer Id(3,90,mtl)
2024-05-04T01:47:12.389885Z TRACE wgpu_core::device::queue: Queue::write_buffer Id(5,1,mtl) 12bytes
2024-05-04T01:47:12.389971Z TRACE wgpu_core::storage: User is removing StagingBufferId(3,90,mtl)
2024-05-04T01:47:12.389979Z TRACE wgpu_core::track::buffer:     buf 7: transition BufferUses(COPY_DST) -> BufferUses(COPY_DST)
2024-05-04T01:47:12.390086Z TRACE wgpu_core::storage: User is inserting StagingBufferId(9,90,mtl)
2024-05-04T01:47:12.390095Z TRACE wgpu_core::device::queue: Queue::create_staging_buffer Id(9,90,mtl)
2024-05-04T01:47:12.390080Z TRACE wgpu_core::track::buffer:     buf 4: transition BufferUses(UNIFORM) -> BufferUses(COPY_DST)
2024-05-04T01:47:12.390127Z TRACE wgpu_core::storage: User is removing StagingBufferId(9,90,mtl)
2024-05-04T01:47:12.390153Z TRACE wgpu_core::storage: User is inserting StagingBufferId(12,90,mtl)
2024-05-04T01:47:12.390161Z TRACE wgpu_core::device::queue: Queue::create_staging_buffer Id(12,90,mtl)
2024-05-04T01:47:12.390159Z TRACE wgpu_core::track::buffer:     buf 5: transition BufferUses(COPY_DST) -> BufferUses(COPY_DST)
2024-05-04T01:47:12.390180Z TRACE wgpu_core::storage: User is removing StagingBufferId(12,90,mtl)
2024-05-04T01:47:12.390189Z TRACE wgpu_core::track::buffer:     buf 8: transition BufferUses(COPY_DST) -> BufferUses(COPY_DST)
2024-05-04T01:47:12.390214Z TRACE wgpu_core::track::buffer:     buf 9: transition BufferUses(COPY_DST) -> BufferUses(COPY_DST)
2024-05-04T01:47:12.390478Z TRACE wgpu_core::storage: User is inserting BindGroupId(6,90,mtl)
2024-05-04T01:47:12.390487Z TRACE wgpu_core::device::global: Device::create_bind_group -> Id(6,90,mtl)
2024-05-04T01:47:12.390492Z TRACE wgpu_core::storage: User is inserting BindGroupId(3,90,mtl)
2024-05-04T01:47:12.390500Z TRACE wgpu_core::device::global: Device::create_bind_group -> Id(3,90,mtl)
2024-05-04T01:47:12.390501Z TRACE wgpu_core::device::global: BindGroup::drop Id(11,89,mtl)
2024-05-04T01:47:12.390514Z TRACE wgpu_core::storage: User is inserting BindGroupId(2,90,mtl)
2024-05-04T01:47:12.390525Z TRACE wgpu_core::device::global: Device::create_bind_group -> Id(2,90,mtl)
2024-05-04T01:47:12.390533Z TRACE wgpu_core::device::global: BindGroup::drop Id(10,89,mtl)
2024-05-04T01:47:12.390545Z TRACE wgpu_core::storage: User is removing BindGroupId(11,89,mtl)
2024-05-04T01:47:12.390567Z TRACE wgpu_core::storage: User is inserting BindGroupId(4,90,mtl)
2024-05-04T01:47:12.390572Z TRACE wgpu_core::device::queue: Queue::write_buffer Id(12,1,mtl) 80bytes
2024-05-04T01:47:12.390577Z TRACE wgpu_core::device::global: Device::create_bind_group -> Id(4,90,mtl)
2024-05-04T01:47:12.390586Z TRACE wgpu_core::storage: User is removing BindGroupId(10,89,mtl)
2024-05-04T01:47:12.390603Z TRACE wgpu_core::track::buffer:     buf 12: transition BufferUses(VERTEX) -> BufferUses(COPY_DST)
2024-05-04T01:47:12.390641Z TRACE wgpu_core::storage: User is inserting BindGroupId(5,90,mtl)
2024-05-04T01:47:12.390649Z TRACE wgpu_core::device::global: Device::create_bind_group -> Id(5,90,mtl)
2024-05-04T01:47:12.390660Z TRACE wgpu_core::device::global: BindGroup::drop Id(12,89,mtl)
2024-05-04T01:47:12.390668Z TRACE wgpu_core::storage: User is removing BindGroupId(12,89,mtl)
2024-05-04T01:47:12.390870Z TRACE wgpu_core::storage: User is inserting CommandBufferId(0,179,mtl)
2024-05-04T01:47:12.390880Z TRACE wgpu_core::device::global: Device::create_command_encoder -> Id(0,179,mtl)
2024-05-04T01:47:12.390940Z TRACE wgpu_core::command::render: Encoding render pass begin in command buffer Id(0,179,mtl)
2024-05-04T01:47:12.391018Z TRACE wgpu_core::command::render: RenderPass::set_pipeline Id(3,1,mtl)
2024-05-04T01:47:12.391044Z TRACE wgpu_core::command::render: RenderPass::set_bind_group 0 Id(6,90,mtl)
2024-05-04T01:47:12.391056Z TRACE wgpu_core::track::buffer:     buf 4: insert BufferUses(UNIFORM)..BufferUses(UNIFORM)
2024-05-04T01:47:12.391066Z TRACE wgpu_core::command::bind:     Binding [0] = group Id(6,90,mtl)
2024-05-04T01:47:12.391078Z TRACE wgpu_core::command::render: RenderPass::set_bind_group 1 Id(13,1,mtl)
2024-05-04T01:47:12.391087Z TRACE wgpu_core::track::texture:    tex 20: insert start TextureUses(RESOURCE)
2024-05-04T01:47:12.391099Z TRACE wgpu_core::command::bind:     Binding [1] = group Id(13,1,mtl)
2024-05-04T01:47:12.391108Z TRACE wgpu_core::command::render: RenderPass::set_index_buffer Id(11,1,mtl)
2024-05-04T01:47:12.391115Z TRACE wgpu_core::track::buffer:     buf 11: insert BufferUses(INDEX)..BufferUses(INDEX)
2024-05-04T01:47:12.391125Z TRACE wgpu_core::command::render: RenderPass::set_vertex_buffer 0 Id(12,1,mtl)
2024-05-04T01:47:12.391132Z TRACE wgpu_core::track::buffer:     buf 12: insert BufferUses(VERTEX)..BufferUses(VERTEX)
2024-05-04T01:47:12.391142Z TRACE wgpu_core::command::render: RenderPass::draw_indexed 6 1 0 0 0
2024-05-04T01:47:12.391156Z TRACE wgpu_core::command::render: Merging renderpass into cmd_buf Id(0,179,mtl)
2024-05-04T01:47:12.391165Z TRACE wgpu_core::track::texture:    tex 19: insert start TextureUses(COLOR_TARGET)
2024-05-04T01:47:12.391173Z TRACE wgpu_core::track::texture:    tex 17: insert start TextureUses(COLOR_TARGET)
2024-05-04T01:47:12.391195Z TRACE wgpu_core::track::buffer:     buf 4: insert BufferUses(UNIFORM)..BufferUses(UNIFORM)
2024-05-04T01:47:12.391205Z TRACE wgpu_core::track::buffer:     buf 11: insert BufferUses(INDEX)..BufferUses(INDEX)
2024-05-04T01:47:12.391213Z TRACE wgpu_core::track::buffer:     buf 12: insert BufferUses(VERTEX)..BufferUses(VERTEX)
2024-05-04T01:47:12.391223Z TRACE wgpu_core::track::texture:    tex 17: insert start TextureUses(COLOR_TARGET)
2024-05-04T01:47:12.391231Z TRACE wgpu_core::track::texture:    tex 19: insert start TextureUses(COLOR_TARGET)
2024-05-04T01:47:12.391238Z TRACE wgpu_core::track::texture:    tex 20: insert start TextureUses(RESOURCE)
2024-05-04T01:47:12.391338Z TRACE wgpu_core::command::render: Encoding render pass begin in command buffer Id(0,179,mtl)
2024-05-04T01:47:12.391371Z TRACE wgpu_core::command::render: RenderPass::set_pipeline Id(2,1,mtl)
2024-05-04T01:47:12.391383Z TRACE wgpu_core::command::render: RenderPass::set_bind_group 0 Id(7,1,mtl)
2024-05-04T01:47:12.391393Z TRACE wgpu_core::track::texture:    tex 17: insert start TextureUses(RESOURCE)
2024-05-04T01:47:12.391401Z TRACE wgpu_core::command::bind:     Binding [0] = group Id(7,1,mtl)
2024-05-04T01:47:12.391410Z TRACE wgpu_core::command::render: RenderPass::draw 3 1 0 0
2024-05-04T01:47:12.391419Z TRACE wgpu_core::command::render: Merging renderpass into cmd_buf Id(0,179,mtl)
2024-05-04T01:47:12.391426Z TRACE wgpu_core::track::texture:    tex 13: insert start TextureUses(COLOR_TARGET)
2024-05-04T01:47:12.391440Z TRACE wgpu_core::track::texture:    tex 13: insert start TextureUses(COLOR_TARGET)
2024-05-04T01:47:12.391448Z TRACE wgpu_core::track::texture:    tex 17: transition simple TextureUses(COLOR_TARGET) -> TextureUses(RESOURCE)
2024-05-04T01:47:12.391474Z TRACE wgpu_core::command: Command buffer Id(0,179,mtl)
2024-05-04T01:47:12.391500Z TRACE wgpu_core::device::queue: Queue::submit Id(0,1,mtl)
2024-05-04T01:47:12.391520Z TRACE wgpu_core::track::texture:    tex 13: insert start TextureUses(PRESENT)
2024-05-04T01:47:12.391541Z TRACE wgpu_core::command: Extracting BakedCommands from CommandBuffer "<CommandBuffer>"
2024-05-04T01:47:12.391552Z TRACE wgpu_core::device::queue: Stitching command buffer Id(0,179,mtl) before submission
2024-05-04T01:47:12.391569Z TRACE wgpu_core::track::buffer:     buf 4: transition BufferUses(COPY_DST) -> BufferUses(UNIFORM)
2024-05-04T01:47:12.391577Z TRACE wgpu_core::track::buffer:     buf 12: transition BufferUses(COPY_DST) -> BufferUses(VERTEX)
2024-05-04T01:47:12.391586Z TRACE wgpu_core::track::texture:    tex 13: transition simple TextureUses(UNINITIALIZED) -> TextureUses(COLOR_TARGET)
2024-05-04T01:47:12.391594Z TRACE wgpu_core::track::texture:    tex 17: transition simple TextureUses(RESOURCE) -> TextureUses(COLOR_TARGET)
2024-05-04T01:47:12.391609Z TRACE wgpu_core::track::texture:    tex 13: transition simple TextureUses(COLOR_TARGET) -> TextureUses(PRESENT)
2024-05-04T01:47:12.391624Z TRACE wgpu_core::device::queue: Device after submission 179
2024-05-04T01:47:12.391679Z DEBUG wgpu_core::device::life: Active submission 178 is done
2024-05-04T01:47:12.391697Z TRACE wgpu_core::resource: Destroy raw StagingBuffer "<StagingBuffer>"
2024-05-04T01:47:12.391723Z TRACE wgpu_core::resource: Destroy raw StagingBuffer "<StagingBuffer>"
2024-05-04T01:47:12.391745Z TRACE wgpu_core::resource: Destroy raw StagingBuffer "<StagingBuffer>"
2024-05-04T01:47:12.391761Z TRACE wgpu_core::resource: Destroy raw StagingBuffer "<StagingBuffer>"
2024-05-04T01:47:12.391770Z TRACE wgpu_core::resource: Destroy raw StagingBuffer "<StagingBuffer>"
2024-05-04T01:47:12.391779Z TRACE wgpu_core::resource: Destroy raw StagingBuffer "<StagingBuffer>"
2024-05-04T01:47:12.391807Z TRACE wgpu_core::track::stateless: StatelessTracker::remove_abandoned Id(8,89,mtl)
2024-05-04T01:47:12.391815Z TRACE wgpu_core::track::stateless: BindGroup Id(8,89,mtl) is not tracked anymore
2024-05-04T01:47:12.391823Z TRACE wgpu_core::track::stateless: StatelessTracker::remove_abandoned Id(10,89,mtl)
2024-05-04T01:47:12.391830Z TRACE wgpu_core::track::stateless: BindGroup Id(10,89,mtl) is not tracked anymore
2024-05-04T01:47:12.391837Z TRACE wgpu_core::track::stateless: StatelessTracker::remove_abandoned Id(12,89,mtl)
2024-05-04T01:47:12.391843Z TRACE wgpu_core::track::stateless: BindGroup Id(12,89,mtl) is not tracked anymore
2024-05-04T01:47:12.391849Z TRACE wgpu_core::track::stateless: StatelessTracker::remove_abandoned Id(9,89,mtl)
2024-05-04T01:47:12.391855Z TRACE wgpu_core::track::stateless: BindGroup Id(9,89,mtl) is not tracked anymore
2024-05-04T01:47:12.391862Z TRACE wgpu_core::track::stateless: StatelessTracker::remove_abandoned Id(11,89,mtl)
2024-05-04T01:47:12.391868Z TRACE wgpu_core::track::stateless: BindGroup Id(11,89,mtl) is not tracked anymore
2024-05-04T01:47:12.391885Z TRACE wgpu_core::binding_model: Destroy raw BindGroup "mesh2d_view_bind_group"
2024-05-04T01:47:12.391899Z TRACE wgpu_core::binding_model: Destroy raw BindGroup "prepass_view_no_motion_vectors_bind_group"
2024-05-04T01:47:12.391909Z TRACE wgpu_core::binding_model: Destroy raw BindGroup "ui_view_bind_group"
2024-05-04T01:47:12.391918Z TRACE wgpu_core::binding_model: Destroy raw BindGroup "mesh2d_view_bind_group"
2024-05-04T01:47:12.391928Z TRACE wgpu_core::binding_model: Destroy raw BindGroup "sprite_view_bind_group"
2024-05-04T01:47:12.391940Z TRACE wgpu_core::track::stateless: StatelessTracker::remove_abandoned Id(21,89,mtl)
2024-05-04T01:47:12.391949Z TRACE wgpu_core::track::stateless: TextureView Id(21,89,mtl) is not tracked anymore
2024-05-04T01:47:12.391958Z TRACE wgpu_core::resource: Destroy raw TextureView Id(21,89,mtl)
2024-05-04T01:47:12.391970Z TRACE wgpu_core::track::texture: Texture Id(11,1,mtl) is still referenced from 3
2024-05-04T01:47:12.391977Z TRACE wgpu_core::resource: Destroy raw Texture "<Surface>"
2024-05-04T01:47:12.391988Z TRACE wgpu_core::track::buffer: Buffer Id(4,1,mtl) is still referenced from 8
2024-05-04T01:47:12.391994Z TRACE wgpu_core::track::buffer: Buffer Id(5,1,mtl) is still referenced from 6
2024-05-04T01:47:12.392059Z DEBUG present_frames: wgpu_core::present: Removing swapchain texture Id(13,90,mtl) from the device tracker
2024-05-04T01:47:12.392076Z TRACE present_frames: wgpu_core::storage: User is removing TextureId(13,90,mtl)
2024-05-04T01:47:12.392099Z DEBUG present_frames: wgpu_core::present: Presented. End of Frame
2024-05-04T01:47:12.392210Z TRACE wgpu_core::device::global: BindGroup::drop Id(3,90,mtl)
2024-05-04T01:47:12.392220Z TRACE wgpu_core::storage: User is removing BindGroupId(3,90,mtl)
2024-05-04T01:47:12.392232Z TRACE wgpu_core::device::global: BindGroup::drop Id(5,90,mtl)
2024-05-04T01:47:12.392239Z TRACE wgpu_core::storage: User is removing BindGroupId(5,90,mtl)

Odd. It seems the Arc in WindowWrapper/RawHandleWrapper does eventually get freed, so the winit::Window is still being dropped, but dropping it later is somehow not working properly?

I'm a bit new to using a debugger, but it seems to be blocking on a Condvar?

It occurs within TaskPool::scope_with_executor_inner:
https://github.com/bevyengine/bevy/blob/40837501b4931160652592bada96fceadd272491/crates/bevy_tasks/src/task_pool.rs#L386
So it appears that something is not waking up the main thread.

There are probably better ways to debug, but I tested with this:
impl Drop for RawHandleWrapper {
    fn drop(&mut self) {
        println!("Drop RawHandleWrapper: {}", Arc::strong_count(&self._window));
    }
}

And something similar for WindowWrapper.
That shows a drop of a RawHandleWrapper with a ref count of 1. So it seems the winit::Window should be closed at that point.
I'm not familiar enough with macOS APIs to know if there's any macOS-related reason this might happen.

Ah. It looks like the drop impl for the WindowWrapper is called on the main thread, while the drop impl for the RawHandleWrapper is not.
So it's probably an issue that happens when the winit::Window is dropped on a thread other than the main thread.

On macOS, Drop for winit::Window uses https://docs.rs/objc2-foundation/0.2.0/objc2_foundation/struct.MainThreadBound.html Apparently.

On Drop, the inner type is sent to the main thread’s runloop and dropped there. This may lead to deadlocks if the main runloop is not running, or if it is waiting on a lock that the dropping thread is holding. See run_on_main for some of the caveats around that.

Yeah. it looks like the worker thread is hanging in icrate::Foundation::additions::thread::MainThreadMarker::run_on_main. (In lldb, the thread command lets you list and change threads.)
While the main thread is blocked on https://github.com/bevyengine/bevy/blob/40837501b4931160652592bada96fceadd272491/crates/bevy_tasks/src/task_pool.rs#L386.
So I guess bevy is blocking the thread running EventLoop::run, which is a problem on platforms like macOS?

Can this now be closed after #13236?

works fine for me on macOS now 👍


adding pr support for performance and GM

https://github.com/Hyperledger-TWGC/fabric/blob/03295da34facd2824817566804b1bf1a1de3979d/ci/azure-pipelines.yml#L7-L9
@davidkhala , @stone-ch
I suppose we need add pr as line 7~9 here for both gm and performance.
Otherwise the pr will not trigger azp, the line here plays a filter role.

@davidkhala , could you please help provide the gm branch name? we know the performance using performance branch.

so far so good


Adds support for upgrading SPFx projects to v1.11.0

Adds support for upgrading SPFx projects to v1.11.0

Merged manually

Coverage remained the same at 100.0% when pulling c2bc1af8ea4308d0b6020cc17ecc1782f8e8c3e6 on waldekmastykarz:spfx-1-11 into f6993d9725aeea59d95fdde498b4c7cb04e22994 on pnp:master.


Il verify import throw + Maintain Basicblocks in StartImportingBasicBlock

@gregkalapos,
Thanks for your contribution.
To ensure that the project team has proper rights to use your work, please complete the Contribution License Agreement at https://cla2.dotnetfoundation.org.
It will cover your contributions to all .NET Foundation-managed open source projects.
Thanks,
.NET Foundation Pull Request Bot

@gregkalapos, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request.
Thanks, .NET Foundation Pull Request Bot

@jkotas Done

Thanks!


resouces for bash

add new section with articles and a book about bash shell scripting ( #39 )

I'm satisfied with the content in there. Just change the heading and I'll accept the pull request. Thanks for contributing!

Oh, forgot to mention: you've added a book from the WikiBooks, so I'm not gonna require a personal comment to add it. If it were from any other source, I would.

@aleksandar-todorovic  Ready!


Add ADR describing contract testing strategy

Merging despite CI failure. This PR adds markdown files unrelated to the reported failing test which is likely a false positive.


Add backtrace cleaner support

Expected behavior
Would be nice to have a backtrace cleaner to clean up some app internal backtrace, like this:
Bugsnag.add_backtrace_cleaner /error_handler_service\.rb/

In that way, we wouldn't see our service object in the backtrace, which isn't relevant.
Observed behavior
N/A
Steps to reproduce
N/A
Version
5.4.1
Additional information
Ruby client, Rails app
Can't comment on Issues?
Some users have been unable to comment on Github issues when an adblocker extension is enabled.
We recommend temporarily disabling the extension, or if that fails, contacting<EMAIL_ADDRESS>

Thanks for the report, @sobrinho.
It sounds like this behavior is a good candidate for using before_notify_callbacks, which are blocks invoked on error reports prior to delivery. Each report contains a list of exceptions, which can be modified:
Bugsnag.before_notify_callbacks << lambda {|report|
  # iterate over each exception, or grab just the top one, if that makes more sense
  report.exceptions.each do |exception|
    # filter the frames from the error handler
    exception.backtrace.reject! {|frame| frame =~ /error_handler_service\.rb/ }
  end
}


cxd56: add initial audio SRC implementation

Summary
Add basic sample rate conversion to the CXD56 Spresense audio
driver using libsamplerate.
Separate contributions are sent to libsamplerate (https://github.com/libsndfile/libsamplerate)
Status
Currently conversion is only done
during playback and all output is fixed at 48 kHz.
Issues:

16 kHz SRC has glitches (unless data dump is enabled)
44.1 kHz SRC gets stuck

Impact
SONY spresense board (SRC is disabled by default)
Testing
tested on Sony spresense board with and without CONFIG_AUDIO_CXD56_SRC

@acassis @masayuki2009 the nxstyle is expected to fail
please check


ConnectTimeoutException while Uploading pages

I'm getting timeout exception and can't find where it's coming from, it happens after a few pages update so maybe the server is hanging but with this stacktrace it's quite hard to defined :
io.ktor.client.network.sockets.ConnectTimeoutException: Connect timeout has expired [url=https://confluence.fake/rest/api/content?spaceKey=TEX&title=Component+058+-+title&expand=metadata.labels%2Cmetadata.properties.contenthash%2Cmetadata.properties.editor%2Cmetadata.properties.t2ctenant%2Cversion%2Cchildren.attachment%2Cancestors%2Cbody.storage, connect_timeout=unknown ms]
at io.ktor.client.plugins.HttpTimeoutKt.ConnectTimeoutException(HttpTimeout.kt:213)
at io.ktor.client.plugins.HttpTimeoutKt.ConnectTimeoutException$default(HttpTimeout.kt:210)
at io.ktor.client.engine.cio.Endpoint.getTimeoutException(Endpoint.kt:268)
at io.ktor.client.engine.cio.Endpoint.connect(Endpoint.kt:257)
at io.ktor.client.engine.cio.Endpoint.access$connect(Endpoint.kt:25)
at io.ktor.client.engine.cio.Endpoint$connect$1.invokeSuspend(Endpoint.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:33)
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:102)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

I'll add customizable timeouts to ease further Troubleshooting

@dgautier added ability to customize request timeouts and enable http logging. please give it a try.
Cli can be found here: https://github.com/zeldigas/text2confl/actions/runs/6441969381?pr=105. Or use latest docker tag

Hi,
I've set a timeout to 30 000 and still sometime gets timeout exception.
When i do activate Info logs on requests, i don't get them anymore. Probably cause the logging process slows down every calls.
Not really sure how i could set it up to be reliable. If you have any ideas ?

Two thoughts:

This might be related to amount of concurrent requests. In this case limiting concurrency might help
Might be related to http client used, in this case switching to something else like netty or native Java client might be the answer.

Let me create to builds for you to test both hypothesis


Add --generate-mesh-id-experimental flag to server bootstrap

This flag has been added to the client deployment but not the server deployment. Adding it to server now.
We need this fix in order for the CSM Observability Test to properly record the server side metrics.

[ ] grpc/core/master/linux/psm-csm


Bump process compose to version 0.85.0

Summary
It would be nice for the users of Devbox to be able to use new process-compose features.
How was it tested?
No tests were done, counting on CI and hoping that the new process compose does not break its API.

I think unfortunately this won't be enough to increment the version. Changing the go.mod only bumps the library that we use in Jetpack to check some process-compose types. We would need to actually increment the version of process compose that gets installed in the utils profile.

We've put off doing this because there are some backwards-incompatible changes in the Go module that need to be addressed. I don't think it's anything too crazy, but it just requires some testing to make sure everything still works with the new process compose binary.

I think the backwards incompatible changes are minimal, the main thing I've been struggling with is how to upgrade developers already on 0.43.1, since the Nix Profile UX is a little rough.

https://github.com/jetpack-io/devbox/pull/1820 < Here's a PR that upgrades process-compose to 0.85.0

The upgrade PR is now merged, I'll cut a pre-release shortly for testing


Add Replit LLM Code Repair link

Added the link to the Replit Blog on LLM Code Repair which uses DSPy

Thanks @NirantK !


Feature & Fixes

Added support for boolean values 1 and yes with respect to issue #819.
Added a feature to parse unix time.
Documented the changed code.
Regards,
Harshit

Fixed whitespaces violation

Thanks for the pull request! I've addressed this issue in #887 and credit your name in pre-release note. Cheers!


In the meantime, did you know you can grapple to frozen entities?

i did not. thanks for looking into it

You want the grappling hook on players to be like this? https://youtu.be/sduwpgwK6jM?t=13

Yeah, like that.

I'm finding it hard to calculate a good position for moving players/entities for the grapple force that doesn't result in the view spazzing like shit at the moment.


[Meta] Upload pre-trained models

Let's make a list here of the pre-trained models to upload.

[ ] pre-trained models for the scrna pretraining step of destvi and stereoscope
[ ] Fetal immune (emma dann)
[ ] HLCA
[ ] Non small cell lung cancer (gregor strum)
[ ] Tabula sapiens (pan tissue and tissue specific)
[ ] Tabula sapiens (tissue specific)
[ ] Seurat v4 cite-seq pbmc (from our tutorial)


Dependency "sharp" cannot be installed in Docker container

When starting my Nuxt Project maevsi in Docker using maevsi stack I get an error that the sharp module couldn't be installed.
I'm using a 2021 MacBook Pro with the Apple M1 Pro and run the code in a container running the node:20 image. I wanted to open an issue in the sharp repository but it says that one should create an issue on the package using sharp as a dependency first. I hope somebody can help me as Nuxt can't start up with this error. Thanks in advance! 😀
This is the error I get:
Nuxi 3.4.3
Nuxt 3.4.3 with Nitro 2.3.3
  > Local:    http://localhost:3000/
  > Network:  http://<IP_ADDRESS>:3000/
  > Network:  http://<IP_ADDRESS>:3000/
ℹ Using html-validate to validate server-rendered HTML
/srv/app/node_modules/.pnpm/sharp@0.31.3/node_modules/sharp/lib/sharp.js:34
  throw new Error(help.join('\n'));
  ^
Error:
Something went wrong installing the "sharp" module
libvips-cpp.so.42: cannot open shared object file: No such file or directory
Possible solutions:
 - Install with verbose logging and look for errors: "npm install --ignore-scripts=false --foreground-scripts --verbose sharp"
 - Install for the current linux-arm64v8 runtime: "npm install --platform=linux --arch=arm64v8 sharp"
 - Consult the installation documentation: https://sharp.pixelplumbing.com/install
    at Object.<anonymous> (/srv/app/node_modules/.pnpm/sharp@0.31.3/node_modules/sharp/lib/sharp.js:34:9)
    at Module._compile (node:internal/modules/cjs/loader:1267:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1321:10)
    at Module.load (node:internal/modules/cjs/loader:1125:32)
    at Module._load (node:internal/modules/cjs/loader:965:12)
    at Module.require (node:internal/modules/cjs/loader:1149:19)
    at require (node:internal/modules/helpers:121:18)
    at Object.<anonymous> (/srv/app/node_modules/.pnpm/sharp@0.31.3/node_modules/sharp/lib/constructor.js:8:1)
    at Module._compile (node:internal/modules/cjs/loader:1267:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1321:10)
Node.js v20.0.0
 ERROR  [unhandledRejection] 1
 ERROR  Cannot start nuxt:  1
 ERROR  (node:101) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 4)

The code formatting in the issue description is broken.
I think deployment using maevsi_stack is irrelevant as noone really knows what that is. A relevant information instead would be which stage of the Dockerfile the error occurs in and if it occurs when building or running it.
Also, what did trying the possible solutions you quoted yield?
The error says libvips-cpp.so.42 is missing so you'd need to find out why it's missing and then how to make it reappear. A web search can explain what that file is for and help understand why its missing.
After all, the issue is most likely neither with this project nor sharp but with maevsi (which uses sharp as a transitive dependency). This issue might be able to be closed and reopened for maevsi.

@PatrickMi I think this issue can be closed. What do you think?

I think it can be closed


Coin -> Asset ID

Rename coin to asset ID

just to be clear, all occurrences of coin need changing to assetID? uppercase I, uppercase D?

Not necessarily, it depends on context (not sure if the current code is consistent with how "coin" is used). "Coin" and "color" might both be used throughout to mean the same thing, the asset ID. Hence the need to change references to "coin" and "color" to "asset ID."
Uppercase I and D, with a space.


player is completely nonexistent when you start the bus (literally can't do anything) on s2 and older (i know y'all aren't really focused on the older seasons but it's worth a shot)

image?

can someone help me

image?

also when you join the game you spawn on the map


Fix typos in comments

Thank you @asomov , because this is a old PR, Your changes were made in d035c1fb9e70b85bfd9d9e8e9280a56f001ba901 .


[Application Change / Event Request] COD 230 GenJnlManagement - TemplateSelection PageID

In case a journal template is to be selected (on a BE database), we don't always have the 'PageID' parameter as a context. When PageID is empty, we don't want to apply a filter on journal templates with 'Page ID' = 0.
Can you please either:

add the "PageID <> 0" code line
extend the 'OnTemplateSelectionSetFilter' event publisher with the PageID parameter (to be consistent with the PageTemplate parameter passing)?

PS: In the meantime, I might use the GETFILTER approach on the 'Page ID' field as a workaround.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Any way to set remote repository in cli mode?

My situation may appear a little bit untypically, but perhaps this is already implemented:

we have a closed Gitlab instance that we use for internal software development
we publish some of our branches/tools to Github, for external code collaboration

So far, I've only released releases in Github, because it was not possible in python-semantic-release to setup custom Gitlab instances.
Since GL_TOKEN became available, I'd also like to publish releases to the master branch on our custom Gitlab instance.
However, python-semantic-release seems to only use the remote that is set as default git remote. Is there any way to have it simultaneously publish releases to both Github and Gitlab using GH_TOKEN (e.g. remote origin)  and GL_TOKEN (e.g. remote gl_origin)?
Alternatively, manually publishing/updating all releases to Gitlab would be totally ok for me, if there was such an option..

So is this about having a cli option to the changelog command to be able to push the changelog to gitlab as well?

Yes, either this, or a cli option to select the remote by name (and if it is a gitlab-remote, it will update/release the changelog using the GL_TOKEN; if it is a github-remote,  it will update/release the changelog using the GH_TOKEN).
Does this make sense?

That sounds like a good idea.

To add to this, I'd like the ability to identify a second branch to push to. I use a dual branch (dev/master) release system and that sounds like it could just built in to this feature request. There's added complexity allowing for multiple remotes over multiple branches but it seems like a natural extension.
Let me know if you think multiple branch pushes should just be it's own request.

No update yet, still in the back log

No change, still in backlog

My new thought on this is that you can gain what you are looking for with two release configurations. One for GitLab and one for GitHub and then use the -c option to select the one you desire for that run. If you have one in the pyproject.toml file this will be selected by default in the one job and then your other one could be github-releaserc.toml. Unfortunately you will have to keep all the other settings in sync manually since we don't have a cli switch to toggle which repository but this would get you some level of capability.


Prismic preview not working with SSG

Versions

nuxt: v3.4.3
@nuxtjs/prismic: v3.0.0-rc.4
node: v18.16.0

Reproduction

nuxt.config.js

export default defineNuxtConfig({
  modules: ['@nuxtjs/prismic'],
  prismic: {
    endpoint: 'myprismicendpoint',
    linkResolver: '~/link-resolver.js',
  },
})

pages/index.vue

<template>

    {{ home.data.title }}

</template>

Steps to reproduce
I have a minimal setup of a single page site that I am trying to preview. I run npm run generate, then on prismic, after configuring a preview endpoint, try to preview the page on the generated content. I have configured link-resolver.js (for the example, always return /.
What is Expected?
I should see my draft content
What is actually happening?
Only the old published content is visible. It works well with the development version, before running npm run generate.
On prismic, I have configured 2 preview endpoints, reaching 2 different ports on my localhost (3000 for dev version, 8000 for SSG)

Hey there, thanks for contributing!
How are you configuring the preview endpoint on Prismic? By default with the module, you should point it towards /preview

Hi Lucie,
Thanks for your answer.
Yes that is what I have set as my prismic preview route, with domain set on the port serving my generated content. (through npm run preview)
I just tested a fresh install with nuxi, the only things I have added is the link-resolver.js, @nuxt/prismic module (3.0.0-rc.6) and add a page file as presented above in the pages folder.
Still not working :(
In the log (of npm run preview), I see the preview request :
HTTP  15/05/2023 17:37:31 ::1 GET /preview?token=https%3A%2F%2F myprismicendpoint.prismic.io%2Fpreviews%2FZFdwOhEAACIAq3bK%3AZFdwQhEAACAAq3bv%3FwebsitePreviewId%3DZFdyVxEAACAAq4Bp&documentId=ZFdwNhEAACIAq3a1 but only old content, not draft one.

Here is a reproduction of the project : https://stackblitz.com/edit/github-srs7pp?file=nuxt.config.ts.
I used the Nuxt 3 starter for stackblitz.
If I run npm run generate, then serving the generated content .output/public on port 8000 and set up the prismic preview endpoint to /preview on http://localhost:8000 it does not work.

Thanks for sharing more! I'll keep investigating :relaxed:

Hey there, thanks again for providing comprehensive details! I managed to reproduce the issue, track it down, and publish a fix as part of rc.7: https://github.com/nuxt-modules/prismic/blob/v3.0.0-rc.7/CHANGELOG.md#300-rc7-2023-05-16
Can you try again with this version and let me know about it?
The Nuxt 3 module should go out of RC next week 🎉

Hey !
Thanks for your investigation.
The minimal project preview is now working as expected, but it looks like a more complex project still not.
Trying to reproduce it on a minimal project, send you a new stackblitz when it's ready :)

Weird 🤔 One thing I tried while working on it is adding a log to the async data, to know if it's even called after launching the preview session, maybe this can give you some hint.
Otherwise if you can share a GitHub or anything, happy to install something bigger.

Hello! I'm also having problems with the preview on Nuxt 3. I just bump the prismic package to rc7 but it still doesn't work. When I click on the preview link from Prismic CMS it opens the link and redirects to the home page.
On the console log I see the following request:
http://localhost:3000/preview?token=https%3A%2F%2Ffuturing-peace.prismic.io%2Fpreviews%2FZGeowRAAACEApRTV%3FwebsitePreviewId%3DZGelQxAAACEApQ70&documentId=ZDhNAREAACQAhtrc

Hey there !
After some research, I finally found my problem; I am trying to set a new reactive variable from the data object I get as a result of useAsyncData query.
It does not work in SSG, but if I directly use the data object it does.
const { data: homepage } = await useAsyncData('homepage', () =>
  client.query({ query: GET_HOME_PAGE, variables })
);

const page = ref(homepage.value.data);

and in template :
{{ page.title }} // does not work after generating a static version but works in Dev
{{ homepage.data.title }} // works

I assume that my problem cames from data reactivity.
BTW, using rc.7 without "proxy" variable works.

Thanks @lihbr, it works as expected with computed :)

@lihbr thank you so much! Now I can see the changes live on my page, it is just when I click on the preview link in Prismic it always takes me to the home page, then if I navigate to About, for example, I can see the changes on the page. Do I need to have all my pages listed on the link-resolver.js? This is what I have right now:
export default (doc) => {   if (doc.type === "page") {     return /${doc.uid};   } };
I will try to create a small project to test it better like arthur did and if it doesn't work I will share it here. Thanks a lot!

I just got my problem solved by using the Route Resolver :)


Add the cloud file file browser to non cloud workflows

I have experimented with implementing this but it's not working for me yet, blocked by #11145


Change status type: On_hold to On hold

Not sure if best to do on frontend or ETL?

Example: http://dev.resourceprojects.org/project/mx-cabr-9cybvu

Should happen in controller or frontend

Thanks assigned to Kseniya!


Alternate media-queries for selected col's (row)

Now columns width calculated depend of window size (lg, md, sm) - media query breakpoints.
I propose to add option for column width, dependent of size any html-element (no only window size).
I think way to this - via js: specify name of html-element (by default - window size).
It's will be like universal media queries.
For example:

 // now child col's width calculate dependent of onedive size

 // 50%, then min-width of one-div (no window width) is: 992px

But I do not know whether it is possible to implement, because media queries - it is a css-function...

Sounds like you want Element Queries: https://www.sitepoint.com/beyond-media-queries-time-get-elemental/
Something that complex and general is outside of Bootstrap's scope.
As linked in that article, there are some existing libraries you can use which try to implement it.


Support the ability to specify "funds" field when placing market orders

PlaceMarketOrderAsync currently doesn't support the ability to specify the amount of USD you want to use to buy crypto. I was planning on writing an app that places a market order every week using a fixed USD amount (A).
As a workaround, I'm getting the ticker price (P) of crypto  and placing an order of size A/P.

@abharath27 thanks for the request. i have added this here: https://github.com/dougdellolio/gdax-csharp/pull/125. Let me know if you see any problem with it otherwise I will merge and push with next release.


how to combined call api webservice and web-worker

Look great for start! but i have a question for result:

If i want can get result from api web service, It can does this?
Please let me know how to add call api service combined in that
Thanks.

@ducvietsqt vuex-search works for client-side search using web workers, hence there should be no relation with retrieving result from api web service. Please reopen if I misunderstood anything.


extra -e in /etc/modules

$ cat /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
-e i2c-bcm2708
i2c-dev

there shouldn't be a -e before i2c-bcm2708 - i uninstalled and reinstalled occi and verified its still there

I think this is coming in via the occidentalis postinst.  Checking why the -e would be treated as a literal and not a flag to echo.

Ah, ok.  We're using /bin/sh here, which has an echo that doesn't offer -e. Sorta-fixed with c9271c7c, will see about papering over error on upgrade.

this one should be fixed, and the code is no longer housed in this repo. closing


remove call to identity

Subject: deals with issue #109
Feature or Bugfix

Bugfix

Purpose

from issue #109:

When running migrations using django-redshift-backend, columns of type AutoField have identity specified twice, resulting in the following error:
"multiple default values specified for column "id" of table "table" [ErrorId: 1-63742d45-7a28d2c01ec6ac8032477b89]"

Detail

removes the call to identity for AutoField and BigAutoField

Relates

Issue: #109

django-redshift-backend 4.0.0 has been released.
I think I've solved this issue, so please check. If it doesn't seem to be resolved, please open an issue.
https://pypi.org/project/django-redshift-backend/4.0.0


ACS 5-year 2014

This was released today, would be great if you could get it in. Thanks!

Yep, working on it! The early release schedule got messed up so I didn't have my usual evening time slot to get it done before $dayjob.

Thanks!


How to set shell to default?

Recently, I'm working with shell in vim, so I decided to set shell=C:\\Windows\System32\WindowsPowershell\v1.0\powershell.exe -ExecutionPolicy Bypass, but after remove that from my settings, the shell still is powershell not cmd. How do I fix that. I opened vim --clean  and shell is cmd but I don't know how to find the bug.

Simply use:  :let &shell='C:\windows\system32\cmd.exe'.
Please ask user questions on the vim_use mailinglist or use vi.stackexchange.com. This here is a bug tracker for problems with Vim. We cannot provide individual help here. Closing.

Simply use: :let &shell='C:\windows\system32\cmd.exe'.
Please ask user questions on the vim_use mailinglist or use vi.stackexchange.com. This here is a bug tracker for problems with Vim. We cannot provide individual help here. Closing.

I know that, I mean I can't change shell to default after change it to powershell.

Use :verbose set shell? to see where it is set.

Use :verbose set shell? to see where it is set.

shell=C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass
Last set from ~\scoop\apps\vim\current\vimrc line 1


Linux 5.11 build fixes

I'm not familiar with the code, so please give it a good review before merging.

Looks decent at first glance. 😄
We'll be providing 5.11/5.12 support in the near future (It's mostly paperwork at this point). As to not make a mess, I'll revisit this PR after that's done.

Doesnt work on my machine....
[ Installing EVDI ]
[[ Installing EVDI DKMS module ]]

Creating symlink /var/lib/dkms/evdi/1.7.0/source ->
                 /usr/src/evdi-1.7.0

DKMS: add completed.

Kernel preparation unnecessary for this kernel.  Skipping...

Building module:
cleaning build area...
make -j8 KERNELRELEASE=5.11.7-surface all INCLUDEDIR=/lib/modules/5.11.7-surface/build/include KVERSION=5.11.7-surface DKMS_BUILD=1...(bad exit status: 2)
ERROR (dkms apport): binary package for evdi: 1.7.0 not found
Error! Bad return status for module build on kernel: 5.11.7-surface (x86_64)
Consult /var/lib/dkms/evdi/1.7.0/build/make.log for more information.
ERROR: Failed to install evdi/<IP_ADDRESS> to the kernel tree.

make.log
DKMS make.log for evdi-1.7.0 for kernel 5.11.7-surface (x86_64)
Wed Mar 24 12:56:43 CET 2021
make KBUILD_VERBOSE=1 M=/var/lib/dkms/evdi/1.7.0/build SUBDIRS=/var/lib/dkms/evdi/1.7.0/build SRCROOT=/var/lib/dkms/evdi/1.7.0/build CONFIG_MODULE_SIG= -C /lib/modules/5.11.7-surface/build modules
make[1]: Entering directory '/usr/src/linux-headers-5.11.7-surface'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || (		\
echo >&2;							\
echo >&2 "  ERROR: Kernel configuration is invalid.";		\
echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";	\
echo >&2 ;							\
/bin/false)
make -f ./scripts/Makefile.build obj=/var/lib/dkms/evdi/1.7.0/build \
single-build= \
need-builtin=1 need-modorder=1
  gcc -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_drv.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_drv"' -DKBUILD_MODNAME='"evdi"' -c -o /var/lib/dkms/evdi/1.7.0/build/evdi_drv.o /var/lib/dkms/evdi/1.7.0/build/evdi_drv.c
  gcc -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_modeset.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_modeset"' -DKBUILD_MODNAME='"evdi"' -c -o /var/lib/dkms/evdi/1.7.0/build/evdi_modeset.o /var/lib/dkms/evdi/1.7.0/build/evdi_modeset.c
  gcc -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_connector.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_connector"' -DKBUILD_MODNAME='"evdi"' -c -o /var/lib/dkms/evdi/1.7.0/build/evdi_connector.o /var/lib/dkms/evdi/1.7.0/build/evdi_connector.c
  gcc -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_encoder.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_encoder"' -DKBUILD_MODNAME='"evdi"' -c -o /var/lib/dkms/evdi/1.7.0/build/evdi_encoder.o /var/lib/dkms/evdi/1.7.0/build/evdi_encoder.c
  gcc -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_main"' -DKBUILD_MODNAME='"evdi"' -c -o /var/lib/dkms/evdi/1.7.0/build/evdi_main.o /var/lib/dkms/evdi/1.7.0/build/evdi_main.c
  gcc -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_fb.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_fb"' -DKBUILD_MODNAME='"evdi"' -c -o /var/lib/dkms/evdi/1.7.0/build/evdi_fb.o /var/lib/dkms/evdi/1.7.0/build/evdi_fb.c
  gcc -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_gem.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_gem"' -DKBUILD_MODNAME='"evdi"' -c -o /var/lib/dkms/evdi/1.7.0/build/evdi_gem.o /var/lib/dkms/evdi/1.7.0/build/evdi_gem.c
  gcc -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_painter.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_painter"' -DKBUILD_MODNAME='"evdi"' -c -o /var/lib/dkms/evdi/1.7.0/build/evdi_painter.o /var/lib/dkms/evdi/1.7.0/build/evdi_painter.c
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:87:3: error: ‘struct drm_driver’ has no member named ‘preclose’; did you mean ‘postclose’?
   87 |  .preclose = evdi_driver_preclose,
      |   ^~~~~~~~
      |   postclose
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:87:14: error: initialization of ‘void (*)(struct drm_device *)’ from incompatible pointer type ‘void (*)(struct drm_device *, struct drm_file *)’ [-Werror=incompatible-pointer-types]
   87 |  .preclose = evdi_driver_preclose,
      |              ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:87:14: note: (near initialization for ‘driver.release’)
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:92:3: error: ‘struct drm_driver’ has no member named ‘gem_free_object’; did you mean ‘gem_create_object’?
   92 |  .gem_free_object = evdi_gem_free_object,
      |   ^~~~~~~~~~~~~~~
      |   gem_create_object
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:92:21: error: initialization of ‘void (*)(struct drm_device *)’ from incompatible pointer type ‘void (*)(struct drm_gem_object *)’ [-Werror=incompatible-pointer-types]
   92 |  .gem_free_object = evdi_gem_free_object,
      |                     ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:92:21: note: (near initialization for ‘driver.lastclose’)
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:93:3: error: ‘struct drm_driver’ has no member named ‘gem_vm_ops’
   93 |  .gem_vm_ops = &evdi_gem_vm_ops,
      |   ^~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:93:16: error: initialization of ‘void (*)(struct drm_device *)’ from incompatible pointer type ‘const struct vm_operations_struct *’ [-Werror=incompatible-pointer-types]
   93 |  .gem_vm_ops = &evdi_gem_vm_ops,
      |                ^
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:93:16: note: (near initialization for ‘driver.unload’)
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:107:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_export’; did you mean ‘gem_prime_import’?
  107 |  .gem_prime_export = drm_gem_prime_export,
      |   ^~~~~~~~~~~~~~~~
      |   gem_prime_import
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:107:22: error: initialization of ‘int (*)(struct drm_device *, struct drm_file *, int,  uint32_t *)’ {aka ‘int (*)(struct drm_device *, struct drm_file *, int,  unsigned int *)’} from incompatible pointer type ‘struct dma_buf * (*)(struct drm_gem_object *, int)’ [-Werror=incompatible-pointer-types]
  107 |  .gem_prime_export = drm_gem_prime_export,
      |                      ^~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:107:22: note: (near initialization for ‘driver.prime_fd_to_handle’)
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:108:3: error: ‘struct drm_driver’ has no member named ‘gem_prime_get_sg_table’; did you mean ‘gem_prime_import_sg_table’?
  108 |  .gem_prime_get_sg_table = evdi_prime_get_sg_table,
      |   ^~~~~~~~~~~~~~~~~~~~~~
      |   gem_prime_import_sg_table
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:108:28: error: initialization of ‘struct drm_gem_object * (*)(struct drm_device *, struct dma_buf *)’ from incompatible pointer type ‘struct sg_table * (*)(struct drm_gem_object *)’ [-Werror=incompatible-pointer-types]
  108 |  .gem_prime_get_sg_table = evdi_prime_get_sg_table,
      |                            ^~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:108:28: note: (near initialization for ‘driver.gem_prime_import’)
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:111:3: error: ‘struct drm_driver’ has no member named ‘enable_vblank’
  111 |  .enable_vblank = evdi_enable_vblank,
      |   ^~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:111:19: error: initialization of ‘int (*)(struct drm_gem_object *, struct vm_area_struct *)’ from incompatible pointer type ‘int (*)(struct drm_device *, unsigned int)’ [-Werror=incompatible-pointer-types]
  111 |  .enable_vblank = evdi_enable_vblank,
      |                   ^~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:111:19: note: (near initialization for ‘driver.gem_prime_mmap’)
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:112:3: error: ‘struct drm_driver’ has no member named ‘disable_vblank’
  112 |  .disable_vblank = evdi_disable_vblank,
      |   ^~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:112:20: error: initialization of ‘int (*)(struct drm_file *, struct drm_device *, struct drm_mode_create_dumb *)’ from incompatible pointer type ‘void (*)(struct drm_device *, unsigned int)’ [-Werror=incompatible-pointer-types]
  112 |  .disable_vblank = evdi_disable_vblank,
      |                    ^~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:112:20: note: (near initialization for ‘driver.dumb_create’)
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c: In function ‘evdi_platform_probe’:
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:173:20: error: ‘struct dev_archdata’ has no member named ‘iommu’
  173 |  pdev->dev.archdata.iommu = INTEL_IOMMU_DUMMY_DOMAIN;
      |                    ^
/var/lib/dkms/evdi/1.7.0/build/evdi_modeset.c: In function ‘evdi_crtc_cursor_set’:
/var/lib/dkms/evdi/1.7.0/build/evdi_modeset.c:133:2: error: implicit declaration of function ‘drm_gem_object_put_unlocked’; did you mean ‘drm_gem_object_put_locked’? [-Werror=implicit-function-declaration]
  133 |  drm_gem_object_put_unlocked(obj);
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |  drm_gem_object_put_locked
/var/lib/dkms/evdi/1.7.0/build/evdi_modeset.c: At top level:
/var/lib/dkms/evdi/1.7.0/build/evdi_modeset.c:164:20: error: initialization of ‘void (*)(struct drm_crtc *, struct drm_atomic_state *)’ from incompatible pointer type ‘void (*)(struct drm_crtc *, struct drm_crtc_state *)’ [-Werror=incompatible-pointer-types]
  164 |  .atomic_flush   = evdi_crtc_atomic_flush,
      |                    ^~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_modeset.c:164:20: note: (near initialization for ‘evdi_helper_funcs.atomic_flush’)
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:279: /var/lib/dkms/evdi/1.7.0/build/evdi_drv.o] Error 1
make[2]: *** Waiting for unfinished jobs....
/var/lib/dkms/evdi/1.7.0/build/evdi_fb.c: In function ‘evdi_user_framebuffer_destroy’:
/var/lib/dkms/evdi/1.7.0/build/evdi_fb.c:322:3: error: implicit declaration of function ‘drm_gem_object_put_unlocked’; did you mean ‘drm_gem_object_put_locked’? [-Werror=implicit-function-declaration]
  322 |   drm_gem_object_put_unlocked(&efb->obj->base);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |   drm_gem_object_put_locked
   ./tools/objtool/objtool check  --module --retpoline --uaccess /var/lib/dkms/evdi/1.7.0/build/evdi_encoder.o
  if objdump -h /var/lib/dkms/evdi/1.7.0/build/evdi_encoder.o | grep -q __ksymtab; then gcc -E -D__GENKSYMS__ -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_encoder.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_encoder"' -DKBUILD_MODNAME='"evdi"' /var/lib/dkms/evdi/1.7.0/build/evdi_encoder.c | scripts/genksyms/genksyms    -r /dev/null > /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_encoder.ver; ld -m elf_x86_64 -r -o /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_encoder.o /var/lib/dkms/evdi/1.7.0/build/evdi_encoder.o -T /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_encoder.ver; mv -f /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_encoder.o /var/lib/dkms/evdi/1.7.0/build/evdi_encoder.o; rm -f /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_encoder.ver; fi
   ./tools/objtool/objtool check  --module --retpoline --uaccess /var/lib/dkms/evdi/1.7.0/build/evdi_connector.o
  if objdump -h /var/lib/dkms/evdi/1.7.0/build/evdi_connector.o | grep -q __ksymtab; then gcc -E -D__GENKSYMS__ -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_connector.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_connector"' -DKBUILD_MODNAME='"evdi"' /var/lib/dkms/evdi/1.7.0/build/evdi_connector.c | scripts/genksyms/genksyms    -r /dev/null > /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_connector.ver; ld -m elf_x86_64 -r -o /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_connector.o /var/lib/dkms/evdi/1.7.0/build/evdi_connector.o -T /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_connector.ver; mv -f /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_connector.o /var/lib/dkms/evdi/1.7.0/build/evdi_connector.o; rm -f /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_connector.ver; fi
   ./tools/objtool/objtool check  --module --retpoline --uaccess /var/lib/dkms/evdi/1.7.0/build/evdi_main.o
  if objdump -h /var/lib/dkms/evdi/1.7.0/build/evdi_main.o | grep -q __ksymtab; then gcc -E -D__GENKSYMS__ -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_main.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_main"' -DKBUILD_MODNAME='"evdi"' /var/lib/dkms/evdi/1.7.0/build/evdi_main.c | scripts/genksyms/genksyms    -r /dev/null > /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_main.ver; ld -m elf_x86_64 -r -o /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_main.o /var/lib/dkms/evdi/1.7.0/build/evdi_main.o -T /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_main.ver; mv -f /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_main.o /var/lib/dkms/evdi/1.7.0/build/evdi_main.o; rm -f /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_main.ver; fi
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:279: /var/lib/dkms/evdi/1.7.0/build/evdi_modeset.o] Error 1
/var/lib/dkms/evdi/1.7.0/build/evdi_gem.c: In function ‘evdi_gem_create’:
/var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:85:2: error: implicit declaration of function ‘drm_gem_object_put_unlocked’; did you mean ‘drm_gem_object_put_locked’? [-Werror=implicit-function-declaration]
   85 |  drm_gem_object_put_unlocked(&obj->base);
      |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |  drm_gem_object_put_locked
/var/lib/dkms/evdi/1.7.0/build/evdi_gem.c: In function ‘evdi_gem_vmap’:
/var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:186:19: error: too few arguments to function ‘dma_buf_vmap’
  186 |   obj->vmapping = dma_buf_vmap(obj->base.import_attach->dmabuf);
      |                   ^~~~~~~~~~~~
In file included from /var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:18:
./include/linux/dma-buf.h:507:5: note: declared here
  507 | int dma_buf_vmap(struct dma_buf *dmabuf, struct dma_buf_map *map);
      |     ^~~~~~~~~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_gem.c: In function ‘evdi_prime_get_sg_table’:
/var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:306:33: error: passing argument 1 of ‘drm_prime_pages_to_sg’ from incompatible pointer type [-Werror=incompatible-pointer-types]
  306 |  return drm_prime_pages_to_sg(bo->pages, bo->base.size >> PAGE_SHIFT);
      |                               ~~^~~~~~~
      |                                 |
      |                                 struct page **
In file included from ./include/drm/drm_file.h:39,
                 from ./include/drm/drm_vblank.h:32,
                 from /var/lib/dkms/evdi/1.7.0/build/evdi_drv.h:25,
                 from /var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:16:
./include/drm/drm_prime.h:92:59: note: expected ‘struct drm_device *’ but argument is of type ‘struct page **’
   92 | struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,
      |                                        ~~~~~~~~~~~~~~~~~~~^~~
/var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:306:56: warning: passing argument 2 of ‘drm_prime_pages_to_sg’ makes pointer from integer without a cast [-Wint-conversion]
  306 |  return drm_prime_pages_to_sg(bo->pages, bo->base.size >> PAGE_SHIFT);
In file included from ./include/drm/drm_file.h:39,
                 from ./include/drm/drm_vblank.h:32,
                 from /var/lib/dkms/evdi/1.7.0/build/evdi_drv.h:25,
                 from /var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:16:
./include/drm/drm_prime.h:93:26: note: expected ‘struct page **’ but argument is of type ‘size_t’ {aka ‘long unsigned int’}
   93 |            struct page **pages, unsigned int nr_pages);
      |            ~~~~~~~~~~~~~~^~~~~
/var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:306:9: error: too few arguments to function ‘drm_prime_pages_to_sg’
  306 |  return drm_prime_pages_to_sg(bo->pages, bo->base.size >> PAGE_SHIFT);
      |         ^~~~~~~~~~~~~~~~~~~~~
In file included from ./include/drm/drm_file.h:39,
                 from ./include/drm/drm_vblank.h:32,
                 from /var/lib/dkms/evdi/1.7.0/build/evdi_drv.h:25,
                 from /var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:16:
./include/drm/drm_prime.h:92:18: note: declared here
   92 | struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,
      |                  ^~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
/var/lib/dkms/evdi/1.7.0/build/evdi_gem.c:307:1: error: control reaches end of non-void function [-Werror=return-type]
  307 | }
      | ^
make[2]: *** [scripts/Makefile.build:279: /var/lib/dkms/evdi/1.7.0/build/evdi_fb.o] Error 1
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:279: /var/lib/dkms/evdi/1.7.0/build/evdi_gem.o] Error 1
   ./tools/objtool/objtool check  --module --retpoline --uaccess /var/lib/dkms/evdi/1.7.0/build/evdi_painter.o
  if objdump -h /var/lib/dkms/evdi/1.7.0/build/evdi_painter.o | grep -q __ksymtab; then gcc -E -D__GENKSYMS__ -Wp,-MMD,/var/lib/dkms/evdi/1.7.0/build/.evdi_painter.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/10/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -DCONFIG_X86_X32_ABI -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wimplicit-fallthrough -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -Iinclude/drm  -DMODULE  -DKBUILD_BASENAME='"evdi_painter"' -DKBUILD_MODNAME='"evdi"' /var/lib/dkms/evdi/1.7.0/build/evdi_painter.c | scripts/genksyms/genksyms    -r /dev/null > /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_painter.ver; ld -m elf_x86_64 -r -o /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_painter.o /var/lib/dkms/evdi/1.7.0/build/evdi_painter.o -T /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_painter.ver; mv -f /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_painter.o /var/lib/dkms/evdi/1.7.0/build/evdi_painter.o; rm -f /var/lib/dkms/evdi/1.7.0/build/.tmp_evdi_painter.ver; fi
make[1]: *** [Makefile:1812: /var/lib/dkms/evdi/1.7.0/build] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.11.7-surface'
make: *** [Makefile:22: all] Error 2

System
             /////////////                crashdummy@crashface
         /////////////////////            --------------------
      ///////*767////////////////         OS: Pop!_OS 20.10 x86_64
    //////7676767676*//////////////       Host: Surface Pro 7 124I:00046T:000M:0100000D:0B:07F:0C:05P:48S:1E:0Y:0K:0U:06R:2
   /////76767//7676767//////////////      Kernel: 5.11.7-surface
  /////767676///*76767///////////////     Uptime: 24 mins
 ///////767676///76767.///7676*///////    Packages: 3223 (dpkg), 24 (flatpak), 5 (snap)
/////////767676//76767///767676////////   Shell: bash 5.0.17
//////////76767676767////76767/////////   Resolution: 2736x1824
///////////76767676//////7676//////////   DE: GNOME 3.38.3
////////////,7676,///////767///////////   WM: Mutter
/////////////*7676///////76////////////   WM Theme: Pop
///////////////7676////////////////////   Theme: Pop-dark [GTK2/3]
 ///////////////7676///767////////////    Icons: Pop [GTK2/3]
  //////////////////////'////////////     Terminal: x-terminal-emul
   //////.7676767676767676767,//////      CPU: Intel i5-1035G4 (8) @ 3.700GHz
    /////767676767676767676767/////       GPU: Intel Iris Plus Graphics G4
      ///////////////////////////         Memory: 2622MiB / 7548MiB
         /////////////////////
             /////////////

@Crashdummyy how can you hit such an error:
...
/var/lib/dkms/evdi/1.7.0/build/evdi_drv.c:112:3: error: ‘struct drm_driver’ has no member named ‘disable_vblank’
112 |  .disable_vblank = evdi_disable_vblank,
...
when commit 3a8a1d1 "enable_vblank() and disable_vblank() are two empty functions, remove them entirely" actually remove that code?
Are you sure you are building the correct branch?

The installation is working again you're right.
I always install it through the displaylink installer.
where I merely replace the bundled evdi with yours.
The Screen is however not recognized but Im quite sure that requires some work on the DisplayLinkManager

Do you have an ETA?

Hi, @sickcodes, @piso77. I've just pushed the evdi code. Unfortunately, you also need to wait for the other half of the driver to be released on our site. The bureaucratic processes can take even up to a week.

Is Displaylink considering publicly developing evdi as development seems to have stagnated? Or open sourcing the Displaylink driver under a reasonable license so the community can contribute to fix 5.11 and 5.12?

Of course, that would be ideal. But I doubt Displaylink would ever do it, Synaptics even less so, to their detriment. Evdi is open sourced only by necessity. 😢
After two years, I may have convinced the higher-ups to at least consider setting up an apt repo for our Ubuntu users. So you can count on me to keep pushing (as I am), but I can't promise anything. 😣

Hi @displaylink-emajewsk we haven't had DisplayLink evdi since 5.9, and 5.11 is almost finished. I can see you pushed documentation to the devel branch: all Linux users are on master branch.

Do you have an ETA?

Hi, @sickcodes, @piso77. I've just pushed the evdi code. Unfortunately, you also need to wait for the other half of the driver to be released on our site. The bureaucratic processes can take even up to a week.

I just did a clean install of the today released driver.
My displays are working fine again ( sudo systemctl restart displaylink-driver is not required anymore, too )

I totally understand the change of hands of displaylink has complicated the release cycle.

Hello @sickcodes, what is it that has changed? I have noticed the lack of 5.11 support, is that due to this "change of hands"?

@olof-nord: DisplayLink was bought by Synaptics. Quite some time ago, actually.
Displaylink 5.4 works with evdi from b0b3d131b26df62664ca33775679eea7b70c47b1 and it looks like the changes are already in there. I think this PR can be closed unmerged.

as of today, there is a new build of the DisplayLink driver 5.4 available at https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu, which works on my hirsute hippo with Kernel 5.11.0-13-generic.
I can't tell enough about the code to say whether that obsoletes this PR.

as of today, there is a new build of the DisplayLink driver 5.4 available at https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu, which works on my hirsute hippo with Kernel 5.11.0-13-generic.
I can't tell enough about the code to say whether that obsoletes this PR.

Yes that's right. Nobody can say because DL logs are encrypted and the source is proprietary. Hope synaptic does the right thing.

The displaylink driver from the synaptics page fails to install due to Missing component: libdrm, even though I have it installed (on Arch)


Install creates dist-info dir but not package/module dir

Using Ubuntu 24.04 with default Python3, I do this:

python3 -m venv ~/venvs/somedice
source ~/venvs/somedice/bin/activate
pip3 install pydiceroll

These complete without error. I then run python3 and try from dice_roller import Dice and get ModuleNotFoundError: No module named 'dice_roller' - same thing if I try pydiceroll or pydiceroller rather than dice_roller.
Looking in ~/venvs/somedice/lib/python3.12/site-packages, I see both module dirs and dist-info dirs for the required packages (like dyce), but see only a dist-info dir for pydiceroll.
For some reason, the actual module dir is not being created or installed. Are there different instructions for installation?
Thanks!

Yep, all set now, thank you!


Bot unnecessarily walks to center of Pokestops

This issue may also increase detectability since it's unlikely that users would walk to the exact center of every stop they visit.
Also, most stops are spinnable from the road or other more accessible place. Once we start following roads, this will need fixed.
Expected Behavior
Bot should walk to anywhere within the range of the stop.
Actual Behavior
Bot walks to exactly the center of a stop.
Steps to Reproduce
Run the bot and observe its path.

Please upgrade to the latest dev branch by running this command:
git reset --hard
git pull -f

Then run this command:
pip install --upgrade -r requirements.txt
If issue persists, open a new issue.
/closed


fix: added prettierignore

In this pr I have added .prettierignore which disables the code formatter for this project.
Fixes #1933

nifty, wasn't aware of it, @akshatnema what do you think?

I think, if lots of people facing the error, let's fix it out regarding prettier instead of defining prettierignore file for it. Because it takes same effort in having prettierignore and prettierrc file.

@akshatnema yeah but difference is that . prettierignore you just created and that is it, done. In case of prettierrc we all suddenly have to agree to use prettier to, maintain configuration, have contrib guide updated. So I do not think it is the same effort. My understanding is that once we create . prettierignore and long term finally provide proper eslint settings, we will no longer have autoformatters issues, or?

My understanding is that once we create . prettierignore and long term finally provide proper eslint settings, we will no longer have autoformatters issues

Yeah, we will not have autoformatters issues again in the repository. Although it is not a good practice, but later on with proper discussion with community, we can add .prettierrc in the repository.

@akshatnema but I'm only referring to prettier, to block it for now.
have a look at https://github.com/asyncapi/website/issues/1640#issuecomment-1602585075

Yes exactly, their are other code formatters but most of developers use prettier and unknowingly they it makes unwanted changes in the PR so why don't we just ignore the whole thing with .prettierignore

I have added this .prettierignore code editors

have a look at #1640 (comment)

If you wish to have .vscode file inside the package to define the correct extensions with appropriate configuration, we can then discuss it in detail in new issue. For now, with the current scope of the PR, we are eliminating the changes made by prettier.

@akshatnema I have added .prettierignore code editors!

Yeah, I accept the changes 😄

/rtm
👋🏼 good bye unexpected quotation changes or semi-colons additions 😄

@allcontributors please add @vishvamsinh28 for code


Dynamic links with GPLv3 software

Hi there! I recently saw that this repository was a dependent of PyMeshFix (https://github.com/pyvista/pymeshfix) and that this is licensed under Apache v2.0. I recently realized that the MeshFix (https://github.com/MarcoAttene/MeshFix-V2.1) software that PyMeshFix wraps is under a GPL license and that license requires any software that "dynamically links" to the original MeshFix software also be under a GPL license.
I'm not very experienced with software licensing but I'm not sure if the Apache license is compliant with the GPL license for MeshFix.
I've reached out to the creator of MeshFix (@MarcoAttene) to see if it would be possible to relicense PyMeshFix or find a solution that will help mitigate these kinds of downstream issues - I will try to keep you in the loop as well as this affects your software.

So I think this FAQ suggests that actually no... because all these libraries are dynamically linked with the original and are interpreted languages, then the GPL does not apply.
https://www.gnu.org/licenses/gpl-faq.html#IfInterpreterIsGPL

actually the more i read i'm not sure that applies... it seems to come down to whether the included code is "identifiably separate".  Both of these packages are trying to implement high level algorithms, and simply want to provide users an easy way to call the GPL work as part of a larger workflow.  We aren't modifying the source code in any way, or distributing that source code.

Both of these packages are trying to implement high-level algorithms, and simply want to provide users an easy way to call the GPL work as part of a larger workflow.

To my knowledge, this falls under a dynamic link and something that would require the linking, high-level software also to be licensed under the GPL. If that weren't the case, then anyone could make a commercial software suite that has a button labeled "Fix Mesh" which executes MeshFix and call that a high-level implementation... which is exactly what the creators of MeshFix are trying to avoid by using a GPL license (my assumption).
If there is any sort of linking from software "B" to GPL-licensed software "A" (and I mean any sort of communication where software "B" has any knowledge of "A") then the "B" software must be licensed under GPL as well or it cannot link to software "A" without violating the terms of the license of "A".
For example, over in PyVista, we cannot even assume that objects passed to PyVista might have an attribute called mesh on the object passed that would be a PyVista mesh type because over in PyMeshFix, those classes have an attribute called mesh which is a PyVista mesh type. If we did that, then that would be considered dynamic linking, and we'd have to relicense PyVista - which simply isn't a possibility considering we have commercial downstream dependents.
Discalaimer: I have absolutley no legal training and my knowledge of these issues comes from extensive googling and discussions with other people who have experience in software licensing but minimal legel training.

yeah i think this an area of confusion and disagreement, especially when law doesn't generally like to draw clean lines and boundaries.  The idea that a software A is doing thing A, and software B was written to accomplish thing B, and might use thing A to do it, does not mean I think that software B automatically get the license from thing A.  In your example, where someone makes a simple wrapper which simply presses wraps and calls "Fix Mesh", then the purpose of that software is EXACTLY the purpose of MeshFix.   The difficult question I think is when is a piece of code a true separate piece of work.  If you take the all dynamic linking argument too strongly, then all parts of the linux kernel are part of most python code and GPL applies just because i wrote it in python.

Fair point... Unfortunately (for me and the PyVista project) I'm taking the dynamic linking argument strongly as a safety measure to make sure we don't get an email from a lawyer. I figured it was best to be as safe as possible as the makers of MeshFix rely on selling licenses for projects the leverage MeshFix in commercial uses.
I was nervous about building any links between PyVista and MeshFix in case someone made a commercial software suite that called on PyVista to run routines to repair a mesh which might leverage the PyMeshFix wrapper, thus circumnavigating the GPL license. Especially since there are a handful of commercial packages leveraging PyVista.
Either way, I wanted to simply bring this to your attention and save you some of the headaches we had to deal with in making PyMeshFix and TetGen work with PyVista.
   So thank you for bringing it to our attention!

Moving forward, please feel free to close this issue (or leave it open) if you think this is is resolved


Feature Request: Select multiple states > Update Position/Visibility/Style for certain layer in all of the selected states.

Will get things super efficient.

Exactly. Just like good ol' Photoshop menu option called 'Update Layers'. Looking forward to this.


Getting header data from API result

LinkedIn API returns some information in HTTP header fields after an API call.
For example, a POST to v1/groups/xyz/posts to create a "Group Message" will return a HTTP result like this:
HTTP/1.1 201 Created
X-LI-UUID: q0SEmZ0/0BOAZp3TbSsAAA==
Date: Mon, 30 Mar 2015 10:23:47 GMT
Vary: Accept-Encoding
Content-Length: 0
X-Li-Fabric: PROD-ELA4
**Location: https://api.linkedin.com/v1/posts/g-8283043-S-5988253677960318977 **
x-li-request-id: ROT1ZIN59B
X-Li-Pop: prod-lva1
Connection: keep-alive
Server: Apache-Coyote/1.1
How can we get this "Location" information from the HTTP header of the result?
Thanks!

I changed the GuzzleRequest.php send() to this:
public function send($url, $params = array(), $method = 'GET', $contentType = null, $return_header = null)
and added this extra return value:
            if($return_header){
		    return (string) $response->getHeader($return_header);
	    }

I'm not sure of a way to do this without modifying GuzzleRequest.php?
then also change your Linkedin.php to this:
public function api($resource, array $urlParams=array(), $method='GET', $postParams=array(), $return_header = false)

and again in RequestInterface.php
public function send($url, $params = array(), $method = 'GET', $contentType = null, $return_header = false);

I did not know LinkedIn answered with information in the HTTP header. We should definutly support this.
What you you think about adding a function like LinkedIn::getLastHeaders?

Yes adding something like that would be perfect.

Lets introduce a new method on the RequestInterface.

/**
 * @return array with HTTP headers. The header name is the array key.
 */
public function getHeadersFromLastResponse();

To get headers from Guzzle is just doing $response->getHeaders(). To get headers from Curl you have to do some more work.. Quick google
The GuzzleRequest and CurlRequest must have a instance variable that holds the header value.
Does this seams like a good approach?

Have a look at the PR in #45. Does it work for you?

Great thanks!!


Refactoring

Codecov Report

Merging #24 (8735562) into master (91d09f7) will decrease coverage by 2.94%.
The diff coverage is 90.20%.

@@            Coverage Diff             @@
##           master      #24      +/-   ##
==========================================
- Coverage   93.07%   90.12%   -2.95%
==========================================
  Files           3        8       +5
  Lines         130      385     +255
==========================================
+ Hits          121      347     +226
- Misses          9       38      +29

Impacted Files
Coverage Δ

src/libraries/libraryfunctions.jl
0.00% <0.00%> (ø)

src/basetypes/BondGraph.jl
83.33% <83.33%> (ø)

src/equations.jl
85.24% <85.24%> (ø)

src/graphfunctions.jl
89.39% <87.50%> (+1.06%)
:arrow_up:

src/construction.jl
89.69% <93.75%> (-7.68%)
:arrow_down:

src/basetypes/Bond.jl
94.11% <94.11%> (ø)

src/basetypes/AbstractNode.jl
96.07% <96.07%> (ø)

src/conversion.jl
100.00% <100.00%> (ø)

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 25d4896...8735562. Read the comment docs.


vendor/miekg/dns directory is not synced with cilium/dns repo

Why aren't the changes made to the miekg/dns library in the vendor directory pushed into the github.com/cilium/dns repo?

Hi @asgarciap, they are available in https://github.com/cilium/dns/commits/udp-interface-1.1.8

@aanm @jrajahalme @aspsk Are there any plans to upstream the patches to upstream?