usage question

How do you make it start working? Opening a YAML file doesn't trigger auto linting and there are no entries in the command palette for this plugin.

Hi, @kkuo, the linter triggers of the Version string in your template. For YAML that would be:
AWSTemplateFormatVersion: "2010-09-09"
This was the best way we found to identify a CloudFormation template over a regular YAML file.  Linting is not real time -- you will need to save the document to trigger linting.

I get this error:
Unable to start cfn-lint (Error: spawn cfn-lint ENOENT). Is cfn-lint installed correctly?
It is installed correctly and I can run it using the terminal.

@cmmeyer This is true, however....
When isValidating[uri] is set to true in server.ts (line 114), and then the regex check for the AWSTemplateVersion line fails, isValidating never gets set back to false. It will display "Is CFN: false" in the server console, and subsequent runs will return immediately (line 111).
If the AWSTemplateVersion line is then added, the file still won't validate, because it thinks it's already validating.
Until I looked at the code, I also thought it was broken, because the following workflow produces unexpected results:

In explorer sidebar, click the "New File" button
Enter "foo.yaml" for the filename
Observe "Running cfn-lint..." followed by "Is CFN: false" in the server console
Add a correct AWSTemplateFormatVersion line and save
Observe "Running cfn-lint..." and no further output

Thanks for this plugin and cfn-lint, they've saved me a lot of failed CloudFormation runs.

Thanks.  I will take a look as this shouldn’t happen.


[Service Bus] Update parameter list based on .NET SDK

For more context refer to #5354

PR mainly removes parameters not used in .NET SDK and mirrors the ordering of inputs. Output shape is retained with less understood parameters since the ones in doubt are all optional.
Documented the behavior gaps/concerns, for further discussion with service and internal team if required.
.NET SDK uses an 'unknown properties' bag to make things "forward proof" - this needs more investigation if it's applicable for the JS/TS SDK as well. Ref https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/servicebus/Microsoft.Azure.ServiceBus/src/Management/QueueDescriptionExtensions.cs#L39

With #6320, the master branch is no longer the place for the atom api feature development.
Please update this PR to change the base branch to feature/service-bus-atom

PR addresses all of the open items listed on #5354. The description has been updated with latest notes cc: @ramya-rao-a @chradek

@ramya-rao-a Fixed - seems like if type is EntityStatus, then TypeScript compiler requires type to be specified as this explicitly. Normally it can infer and verify strings at compile time as we have seen offline. Looks like in current cases, because of the indirections in general the compiler couldn't figure out that the types actually match.


yacht task

Again, not on @KTSnowy 's list but was doing it for 8th.

Yes including those in the stub would be good though reading the tests is encouraged across the site


Feature Request: Option to delete files from workspaces

Currently we can delete the workspaces but cannot delete the files from workspace. So there is no way to update/delete a file if e.g. content has been updated.
It should have option to delete the files so that the files are deleted from S3 and also the corresponding vector storage.

Closing this as similar request has been raised already


[TACHYON-719]: Unmatched web resource path on LocalTachyonMaster

@pfxuan Thanks for the fix, I'm curious does this actually slow down the unit tests since the UI gets launched?

@calvinjia It's a good suggestion. I didn't see any obvious overhead so far. But we could actually disable the launching of web server on LocalTachyonMaster.

@pfxuan that would be a cool feature to have, like a configuration option to enable the web ui. For this PR I think this is fine.
+1 LGTM

One minor comment left. Thanks for the PR!

Jenkins, test this please.

+1 LGTM


enable verbosity with `make V=1'

Any reason why this was rejected? I think it would be good if the user could enable more verbosity, either via make or by setting it with a ./configure option.

The vast majority of users do not need to see the actual compiler commands. Having an unreadable wall of text quickly scrolling by is not a good idea, even though most other projects do this. If you really need to see the commands when you are debugging the build, removing the @ in the Makefile by hand is easy enough. There is no need to create any standard switch interface for this because it would be used so rarely and transiently.


core: Clarity v2.0.0-rc.0

Updated Angular TypeScript dependencies. Mose of the Angular dependencies were updated to rc.1 (except for http)
Signed-off-by: Matt Hippely<EMAIL_ADDRESS>

Do not merge until after https://github.com/vmware/clarity/pull/3323 has gone in.

The http package is still at beta.10 and I'm going to move forward with that for now.
"@angular/http": "8.0.0-beta.10",

I didn't get to this in time, but @angular/http is deprecated. We shouldn't need it long term in favor of @angular/common/http.


Post mortem on modules issue

https://factoriolab.github.io/list#z=eJxtjcEKgzAQRP/Gw4YUNJf24MfEzdou3cSwiYJ/bzy0ReicZh4DL4+64JuqnVcSGNzt/nCdXiBkXcKKlTeuu42tC1ln/lLoB4CSicLveJ1dGaGFhLAqY1No8kjmCyInTk8blEWML4XiJCeIHl+cTscn/QHZcUGr

Somehow modules list was incomplete. Module list had two entries instead of the full four. Unclear how to reproduce this issue except by typing out a state manually.

Somehow modules list was incomplete. Module list had two entries instead of the full four. Unclear how to reproduce this issue except by typing out a state manually.


Mentions bridging

Now that we have mentions on the matrix side (with Riot Web v0.12.1), they should probably be translated to telegram mentions, when a telegram user is mentioned.

Fixed by #43!


Adjust Button Styling?

Hi there,
I created a toggle which looks a bit odd in one of the states.
When state is 0, it looks just fine, but in state 1 the margin to the border is not kept.

This is my code:
      <Container style={{height: 40, maxWidth: 120}}>
        <SwitchSelector
          initial={index}
          onPress={value => this.onToggle(value)}
          backgroundColor={"transparent"}
          textColor={colors.white}
          selectedColor={colors.secondary3}
          buttonColor={colors.secondary1}
          borderColor={colors.secondary1}
          hasPadding
          valuePadding={1}
          options={[
            {value: false, customIcon: iconUnlocked},
            {value: true, customIcon: iconLocked}
          ]}/>
      </Container>

The issue also appears whitout the container component around it. Any ideas how to fix this or how this is caused?

Have same issue. Any solutions?

https://github.com/App2Sales/react-native-switch-selector/releases/tag/1.1.12


Create method for returning all files with a certain extension from a file tree

Uses:
schemas repo: _writePythonFiles in process_schemas.py, test_compile.py

Yeah, this is the scanDataFiles function in the server I think.

Fixed in #24


WIP: NXPhlite: Enable DMA based serial driver and add polling for serial

We did some basic testing with QGC and mavlink, and the issues appear to be gone now as far as we can judge.
This will resolve some of the serial issues described in https://github.com/PX4/Firmware/issues/9325.
We did not yet check https://github.com/PX4/Firmware/issues/9335.

[ ] Please pull the nuttx commits over to the nuttx repo (can be in a separate branch), so we do not have to change the submodule url.

@laube - Thank you. This is being continued here


Nick: Watch thenovaskinclinic.com

Nick requests the watch of the watch_keyword thenovaskinclinic\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

thenovaskinclinic\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.


GROOVY-7879 Groovy calls wrong method if there is a static method on …

Hi guys, can we consider a small kind of tactical fix (imho) to GROOVY-7879 or is it a bad idea/solution? It fixes the situation when we have:
interface Foo {
    static String foo() {
        return "I'm Foo";
    }
}

class Bar implements Foo {
    static String foo() {
        return "I'm Bar";
    }
}

but assert fails:
assert Bar.foo() == "I'm Bar" //Output: I'm Foo

This pull request is for the parrot branch because static methods on interfaces were introduced in Java 8

At first glance it seems okay - I'll look in more detail when I am back from holidays - unless someone beats me to it. I would however suggest test coverage for @CompileStatic.

Ok, I'll do it

@dkhamitov
FYI, apache:parrot is for experimenting new grammar, so it's better to submit your PR merging into other branch(e.g. GROOVY_2_5_X). Thanks for your contribution :-)

Yes, it would be great if we had this in GROOVY_2_5_X but this branch compiles for Java 7:
sourceCompatibility = 1.7
targetCompatibility = 1.7

It works if I take this version and use it with Java 8 and static methods on interfaces. But how can we deal with unit tests in this branch? Interfaces with static methods just don’t compile in Java 7. Any idea?

@paulk-asert @danielsun1106 Tests for @CompileStatic added. I also noticed interesting behaviour:
interface Foo {
  static void foo() {
    System.out.println("static void foo() called");
  }
}

class Bar implements Foo { }

Bar.foo() \\works in Groovy (dynamic) but fails in Java and Groovy (@CompileStatic)

as per JLS8 - 8.4.8 Inheritance, Overriding, and Hiding

Merged, thanks! I wasn't sure about your last comment. Did you mean you get an error in an all Java 8 scenario? What error message?

@paulk-asert Cool. About my previous comment. I've rechecked that case when a class doesn't hide static methods on the implemented interface and we try to call those methods on the class (not on the interface). In this situation Java just doesn't compile:
interface Foo {
  static void foo() {
    System.out.println("static void foo() called");
  }
}

class Bar implements Foo { }

public class FooBarTest {
    public static void main(String[] args) {
        Bar.foo();
    }
}

$ javac FooBarTest.java
FooBarTest.java:3: error: cannot find symbol
        Bar.foo();
           ^
  symbol:   method foo()
  location: class Bar
1 error

But Groovy does compile, both dynamic and @CompileStatic. So I was wrong about @CompileStatic point and here is a couple of questions:

Shouldn't @CompileStatic behave like Java in this case?
Should we fix this? I could investigate how it can be done

Just in case, here is a snippet from JLS8:
8.4.8 Inheritance, Overriding, and Hiding
A class C inherits from its direct superclass all concrete methods m (both static and instance) of the superclass for which all of the following are true:
...
A class does not inherit static methods from its superinterfaces.

I suspect that should be treated as an error. I think it's worth another
Jira.
On Sat, Apr 22, 2017 at 6:24 AM, Dmitry<EMAIL_ADDRESS>wrote:

@paulk-asert https://github.com/paulk-asert Cool. About my previous
comment. I've rechecked that case when a class doesn't hide static methods
on the implemented interface and we try to call those methods on the class
(not on the interface). In this situation Java just doesn't compile:
interface Foo {
static void foo() {
System.out.println("static void foo() called");
}
}
class Bar implements Foo { }
public class FooBarTest {
public static void main(String[] args) {
Bar.foo();
}
}
$ javac FooBarTest.java
FooBarTest.java:3: error: cannot find symbol
Bar.foo();
^
symbol:   method foo()
location: class Bar
1 error
But Groovy does compile, both dynamic and @CompileStatic. So I was wrong
about @CompileStatic point and here is a couple of questions:

Shouldn't @CompileStatic behave like Java in this case?
Should we fix this? I could investigate how it can be done

Just in case, here is a snippet from JLS8:
8.4.8 Inheritance, Overriding, and Hiding
A class C inherits from its direct superclass all concrete methods m (both
static and instance) of the superclass for which all of the following
are true:
...
A class does not inherit static methods from its superinterfaces.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/apache/groovy/pull/521#issuecomment-296297124, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AARF0MUAYwoMlnaO_pSKltlhcieByG2lks5ryRBqgaJpZM4M2Qhm
.

@paulk-asert ok, I'll raise a jira and look into it

https://issues.apache.org/jira/browse/GROOVY-8164 raised. I'm looking into it


⚠ Bofrost.lu has degraded performance

In 4a790aa, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 877 ms

Resolved: Bofrost.lu performance has improved in 96669c0 after 9 minutes.


shader: for loop parsing issue

Error: for-statement must follow this format: for (varname) := (constant); (varname) (op) (constant); (varname) (op) (constant) { ...
Shader: https://gist.github.com/tomlister/b9603a4e215035439b0f8ab680136be8

Thank you for reporting!

The package name must be main btw.

float32 should be float
finalcol should be vec4

I couldn't reproduce the issue. Are you using the latest version?

I'm using the latest version. I changed the shader program but to no avail. Issue still persists :/
https://gist.github.com/tomlister/322b6f3fa19972c384ea7cf4e0725736

var shader *ebiten.Shader

func init() {
        var err error
        shader, err = ebiten.NewShader([]byte(`package main

var LightColor [20]vec3
var LightPoint [20]vec2
var LightAmount float

func Fragment(position vec4, texCoord vec2, color vec4) vec4 {
        finalcol := vec4(0.0, 0.0, 0.0, 0.0)
        for i := 0; i < 20; i++ {
                if float(i) == LightAmount {
                        break
                }
                distance := length(LightPoint[i]*16 - position.xy*16)
                attenuation := 1.0 / distance
                col := vec4(attenuation, attenuation, attenuation, pow(attenuation, 3)) * vec4(LightColor[i], 1)
                finalcol = finalcol + col
        }
        return imageSrc0At(texCoord) + finalcol
}
`))
        if err != nil {
                panic(err)
        }
}

This passed without panicing. Perhaps are you inserting an extra space character around for-loop, or are you missing { or other symbols?

Hmm weird. It's working after I rewrote it. Must've been whitespace maybe.


Update Event “index”

Automatically generated by Netlify CMS

👷 Deploy Preview for 9fukops processing.

Name
Link

🔨 Latest commit
df8cf0967f5842337a8f70251a6d4890d41214df

🔍 Latest deploy log
https://app.netlify.com/sites/9fukops/deploys/64a08d3793200b00085b2e8e


[ENH] - Enable scoped access to specific shared folders

Feature description
Currently anyone who has access to a particular shared folder, say ~/shared/<my_folder>, has either complete R/W access or the folder is hidden from them. It would be great to enable scoped access to this folder such that one privileged user has R/W access while another less-privileged user only has R.
Value and/or benefit
This would make the filesystem behave more like the linux filesystem (though not exactly). Enabling this kind of scoped access allows admins and managers to shared important data without fear that it will be modified.
Anything else?
This is based on a conversation that @viniciusdc @costrouc and I had recently.

For each user (example chris) several group folders are mounted into /shared/ . For my pod jupyterlab yaml within the volumeMount section we would mount a specific group mount  (the shared) as read only. This would not apply to other users. Thinks of this as an override to a particular mount saying intead of r/w make this one r. This is possible and something we could support. Question would be for me is how would this tie into authentication/authorization. Is this similar to github teams where there is team maintainer and member. E.g. we should be able to annotate that a particular user is read only within a group. This is something that conda-store could benifit from as well.

The point about authorization is good one! Would this be handled via client roles in keycloak? I’m just having a hard time imagining where the admin would make these changes.

Yeah not totally sure. Something that we'd need to talk through. I think this is a good use case for user attributes within keycloak. Though we could have roles like you said e.g. datascience-readonly, datascience-member. Not sure how we'd handle this

Love this issue :heart:. I've already implemented most of this logic before in qhub-hpc the "on prem systemd nebari" which we haven't spent as much time on https://github.com/Quansight/qhub-hpc/blob/2f9e6f75fefae20bedf47608b7a474b779475da0/roles/jupyterhub/templates/jupyterhub_config.py#L68-L105. However there are significant improvements we can make on this code in nebari. The one that stands out to me is that we make the jupyterhub keycloak oauth2 client capable of being a service account. This will allow jupyterhub to use it's oauth credentials to modify users/groups without admin credentials (which we never should have been doing in the first place).
Steps that I see:

Store uid/gid on keycloak

High level we need to store a unique uid attribute associated with each user and unique gid attribute for each group that the user is a member of. The code above shows how to store these attributes. The trick is that you have to ensure that the uids are unique and gids are unique. I guess collisions aren't that bad but since we can avoid them we should. We should avoid randomly generating the ids to maximize the stability of uids when users are removed/added back. Also a fixes set of uid/gids should be protected. E.g. less than 1000000.

Steps to launch jupyterlab cluster

When user launches a jupyterlab cluster we need to ensure:

chown the user home directory and group directory with correct permissions
/etc/passwd, /etc/group have the right name/uid/gid mappings https://github.com/nebari-dev/nebari/blob/42999695a732056517e475e7627d401a9aa051ae/src/_nebari/stages/kubernetes_services/template/modules/kubernetes/services/jupyterhub/files/jupyterhub/03-profiles.py#L250-L253
launch user with correct uid/gid https://github.com/nebari-dev/nebari/blob/42999695a732056517e475e7627d401a9aa051ae/src/_nebari/stages/kubernetes_services/template/modules/kubernetes/services/jupyterhub/files/jupyterhub/03-profiles.py#L306-L308

Complications that could maybe be addressed in a separate PR. Would this break things?

argo workflows and launching as same uid/gid as user
dask gateway launching as the same uid/gid as user

The sync_users function looks great!
I think the larger question of how we manage users and groups is tied into this discussion:

When a user needs viewer only access to a shared folder, what mechanism do we have to achieve this?

Perhaps it's worth creating a few more roles, such as R/W/X for each new group -- I'm still not sure what the best way to enable finer grain permissions without the new of new groups/roles exploding.

We're moving in the direction of a full linux permission model, would it make sense to go all the way there?

This still doesn't address the UI problem (besides just perform these actions on the terminal).
And giving individuals root access to the container (and all the attached volumes) can be very dangerous...

@iameskild good points. Maybe we take advantage of the group all read permission. This would allow us to have a file
user/group/all
xrw/xrw/xr

I think we need to discuss this one more.
At the end I think this should behave like linux permissoining since this would be the easiest to explain.

@aktech is this done by your recent permissioning work?


mark tprob() function for removal

What should be changed
cogent3.maths.distribution.tprob()
Why
Not used in cogent3, available in scipy.stats?
How much notice
6 months notice.
Guidelines for deprecation
As this is a function that will be removed, see dev guidelines for deprecation of code. Indicate the limiting version (for when the old function will be removed) as .<PR month + x> where x is defined above.

I would like to do this issue


Scrcpy.exe cannot view the Port forwarding list

Why is there no data after starting scrcpy.exe and running adb.exe forward -- list? How does scrcpy receive screen data?

scrcpy executes adb forward (or adb reverse) to redirect a local port to a device socket/port (or the reverse).
the client can then connect (or listen) to establish the TCP connection with the device
once the connection is established, there is no need to keep the port redirection, so scrcpy calls adb forward --remove (or adb reverse --remove), that's why the redirection in adb forward --list (or adb reverse --list) is visible only for a few hundred milliseconds.

@rom1v  Thank you. I want to display screen data in my VB program, but I can't find a good DLL that can decode H264 raw streams. Is there a recommended H264 decoding project?


upgrade deps, fix tests

I upgraded most dependencies to newest version (except coffee-script and ugflify-js).
When I tested it, the coffee-script test failed:
  1) module format (CommonJS) should compile coffeescript on-the-fly:

      AssertionError: expected Object { a: Array [ './b' ], b: Array [] } to equal Object { a: Array [ '../node_modules/b' ], b: Array [] } (at a -> '0', A has './b' and B has '../node_modules/b')
      + expected - actual

       {
         "a": [
      +    "../node_modules/b"
      -    "./b"
         ],
         "b": []
       }

However, if you do require('./b') it should require b from the same folder, and not from node_modules as far as I know. So I simply changed the test file.
Also, Windows uses \ instead of / for paths.

Somehow npm install still installs the old dependencies, instead of the versions in the package.json. You also have to npm update. That's why the travis build failed.

@jscissr Can you rebase the patch?
I think you need to run npm run shrinkwrap to be sure all dependencies are up to date.

Closing this, since this should be fixed now in v0.5.1.


Turn into PWA

Pros

Full screen
Caching of app shell (all static assets: CSS, Fonts, JavaScript)
Add to homescreen with custom icon which helps with branding. Even better support in the future: https://techcrunch.com/2017/02/02/google-will-soon-integrate-progressive-web-apps-deeper-into-android/

Cons

Time-consuming
Requires some testing with https://github.com/GoogleChrome/lighthouse

Additional suggested features
Those are features that would go well with a PWA.

Add Web Push notifications (updates on tracking of parcel)
Add deeper Firebase integration (save user preferences and previous searches)

https://developers.google.com/web/progressive-web-apps/

Progressive Web Apps are user experiences that have the reach of the web, and are:

Reliable - Load instantly and never show the downasaur, even in uncertain network conditions.
Fast - Respond quickly to user interactions with silky smooth animations and no janky scrolling.
Engaging - Feel like a natural app on the device, with an immersive user experience.

This new level of quality allows Progressive Web Apps to earn a place on the user's home screen.


SS register is 0 when taking exceptions on qemu_x86_long

I am not completely sure this is a bug. But when handling exceptions on qemu_x86_long, I noticed that the SS register is 0. See below output when debugging tests/kernel/fatal.
Somehow, push and pop operations proceed without incident despite this situation. I did find in the IA Manual vol. 3a:

On privilege level changes, stack segment selectors are not read from the TSS. Instead, they are set to NULL.

But I'm not sure I fully understand the implications of this.
Feel free to close if this is all as expected.
(gdb) set arch i386:x86-64
The target architecture is assumed to be i386:x86-64
(gdb) target remote :1234
Remote debugging using :1234
0x000000000000fff0 in ?? ()
(gdb) b z_fatal_error
Breakpoint 1 at 0x101996: file /home/apboie/projects/zephyr-1.4/zephyr/tests/kernel/fatal/out/zephyr/include/generated/syscalls/kernel.h, line 161.
(gdb) c
Continuing.

Breakpoint 1, z_fatal_error (reason=0, esf=0xc350 <_exception_stack+848>)
    at /home/apboie/projects/zephyr-1.4/zephyr/tests/kernel/fatal/out/zephyr/include/generated/syscalls/kernel.h:161
161		compiler_barrier();
(gdb) info registers
rax            0x3f8	1016
rbx            0x0	0
rcx            0x3f8	1016
rdx            0x3f8	1016
rsi            0xc350	50000
rdi            0x0	0
rbp            0x0	0x0
rsp            0xc348	0xc348 <_exception_stack+840>
r8             0x1	1
r9             0x0	0
r10            0x0	0
r11            0x0	0
r12            0x0	0
r13            0x0	0
r14            0x0	0
r15            0x0	0
rip            0x101996	0x101996 <z_fatal_error>
eflags         0x206	[ IOPL=0 IF PF ]
cs             0x18	24
ss             0x0	0
ds             0x20	32
es             0x20	32
fs             0x20	32
gs             0x30	48
fs_base        0x0	0
gs_base        0xc400	50176
k_gs_base      0x0	0
cr0            0x80010011	[ PG WP ET PE ]
cr2            0x0	0
cr3            0xa000	[ PDBR=0 PCID=0 ]
cr4            0x220	[ OSFXSR PAE ]
cr8            0x0	0
efer           0xd00	[ NXE LMA LME ]

This is entirely normal.  Long mode is flat, and can't use segmentation the way 16-/32-bit protected mode do.
SS/ES/DS selectors are almost entirely ignored (and setting them to null selectors is valid) - the one exception I can think of is that IRETQ to any ring but 0 requires that the SS selector on the stack refer to a present selector (but is otherwise ignored).  Only parts of CS are used, those which determine privilege level and default operand size and such.
FS and GS are a different story, and honor the base addresses of the selector loaded, but even that is not all that useful.  You need to use MSRs to set their bases beyond 32 bits.
The long mode code actually loads a valid 64-bit flat ring 0 data descriptor into the segment registers, but that's just me being pedantic and it's kinda pointless.  Will kill.


Fails to build on Alpine Linux (musl libc)

Environment:

Alpine Linux Edge x86_64
gcc 10.2.1 20201203
cmake 3.19.6
liburing 0.7
linux-headers 5.7.8

Log:
-- The C compiler identification is GNU 10.2.1
-- The CXX compiler identification is GNU 10.2.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    CMAKE_INSTALL_LIBDIR

-- Build files have been written to: wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build
/usr/bin/cmake -Swcp-45ab7b81f2bc11f5f577978a974bb99838726d67 -Bwcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build/CMakeFiles wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build//CMakeFiles/progress.marks
/usr/bin/make  -f CMakeFiles/Makefile2 all
make[1]: Entering directory 'wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build'
/usr/bin/make  -f CMakeFiles/wcp_lib.dir/build.make CMakeFiles/wcp_lib.dir/depend
make[2]: Entering directory 'wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build'
cd wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" wcp-45ab7b81f2bc11f5f577978a974bb99838726d67 wcp-45ab7b81f2bc11f5f577978a974bb99838726d67 wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build/CMakeFiles/wcp_lib.dir/DependInfo.cmake --color=
Dependee "wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build/CMakeFiles/wcp_lib.dir/DependInfo.cmake" is newer than depender "wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build/CMakeFiles/wcp_lib.dir/depend.internal".
Dependee "wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build/CMakeFiles/wcp_lib.dir/depend.internal".
Scanning dependencies of target wcp_lib
make[2]: Leaving directory 'wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build'
/usr/bin/make  -f CMakeFiles/wcp_lib.dir/build.make CMakeFiles/wcp_lib.dir/build
make[2]: Entering directory 'wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build'
[  7%] Building CXX object CMakeFiles/wcp_lib.dir/src/CopyRunner.cpp.o
[ 14%] Building CXX object CMakeFiles/wcp_lib.dir/src/Heap.cpp.o
[ 21%] Building CXX object CMakeFiles/wcp_lib.dir/src/CopyQueue.cpp.o
/usr/bin/g++   -Os -fomit-frame-pointer -O3 -DNDEBUG -Wall -pedantic -Wextra -std=gnu++17 -o CMakeFiles/wcp_lib.dir/src/CopyRunner.cpp.o -c wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp
/usr/bin/g++   -Os -fomit-frame-pointer -O3 -DNDEBUG -Wall -pedantic -Wextra -std=gnu++17 -o CMakeFiles/wcp_lib.dir/src/CopyQueue.cpp.o -c wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp
/usr/bin/g++   -Os -fomit-frame-pointer -O3 -DNDEBUG -Wall -pedantic -Wextra -std=gnu++17 -o CMakeFiles/wcp_lib.dir/src/Heap.cpp.o -c wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Heap.cpp
[ 28%] Building CXX object CMakeFiles/wcp_lib.dir/src/Util.cpp.o
/usr/bin/g++   -Os -fomit-frame-pointer -O3 -DNDEBUG -Wall -pedantic -Wextra -std=gnu++17 -o CMakeFiles/wcp_lib.dir/src/Util.cpp.o -c wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp
[ 35%] Building CXX object CMakeFiles/wcp_lib.dir/src/Config.cpp.o
/usr/bin/g++   -Os -fomit-frame-pointer -O3 -DNDEBUG -Wall -pedantic -Wextra -std=gnu++17 -o CMakeFiles/wcp_lib.dir/src/Config.cpp.o -c wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Config.cpp
[ 42%] Building CXX object CMakeFiles/wcp_lib.dir/src/QueueFileDescriptor.cpp.o
/usr/bin/g++   -Os -fomit-frame-pointer -O3 -DNDEBUG -Wall -pedantic -Wextra -std=gnu++17 -o CMakeFiles/wcp_lib.dir/src/QueueFileDescriptor.cpp.o -c wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp
[ 50%] Building CXX object CMakeFiles/wcp_lib.dir/src/ScopedFileDescriptor.cpp.o
/usr/bin/g++   -Os -fomit-frame-pointer -O3 -DNDEBUG -Wall -pedantic -Wextra -std=gnu++17 -o CMakeFiles/wcp_lib.dir/src/ScopedFileDescriptor.cpp.o -c wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.cpp
[ 57%] Building CXX object CMakeFiles/wcp_lib.dir/src/wcpMain.cpp.o
/usr/bin/g++   -Os -fomit-frame-pointer -O3 -DNDEBUG -Wall -pedantic -Wextra -std=gnu++17 -o CMakeFiles/wcp_lib.dir/src/wcpMain.cpp.o -c wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp
[ 64%] Building CXX object CMakeFiles/wcp_lib.dir/src/ETACalculator.cpp.o
/usr/bin/g++   -Os -fomit-frame-pointer -O3 -DNDEBUG -Wall -pedantic -Wextra -std=gnu++17 -o CMakeFiles/wcp_lib.dir/src/ETACalculator.cpp.o -c wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ETACalculator.cpp
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:36: error: 'nullptr_t' was not declared in this scope; did you mean 'std::nullptr_t'?
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                    ^~~~~~~~~
      |                                    std::nullptr_t
In file included from /usr/include/c++/10.2.1/string:38,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp:1:
/usr/include/c++/10.2.1/x86_64-alpine-linux-musl/bits/c++config.h:268:29: note: 'std::nullptr_t' declared here
  268 |   typedef decltype(nullptr) nullptr_t;
      |                             ^~~~~~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:45: error: template argument 2 is invalid
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                             ^
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:23:18: error: 'nullptr_t' does not name a type
   23 | static constexpr nullptr_t Success() { return nullptr; }
      |                  ^~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:6:1: note: 'nullptr_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
    5 | #include <functional>
  +++ |+#include <cstddef>
    6 |
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:26:55: error: 'mode_t' has not been declared
   26 | OpenResult myOpen(const std::string& path, int oflag, mode_t mode);
      |                                                       ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:27:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
   27 | Result myClose(int fd);
      | ^~~~~~
      | OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:48:5: error: 'ino64_t' does not name a type
   48 |     ino64_t             d_ino;    /* 64-bit inode number */
      |     ^~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:48:5: note: the macro 'ino64_t' had not yet been defined
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp:7:
/usr/include/dirent.h:67: note: it was later defined here
   67 | #define ino64_t ino_t
      |
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:58:15: error: 'Result' does not name a type; did you mean 'OpenResult'?
   58 | [[nodiscard]] Result myStatx(int fd, const std::string& path, int flags, unsigned int mask, struct statx& buf);
      |               ^~~~~~
      |               OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.cpp:2:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:36: error: 'nullptr_t' was not declared in this scope; did you mean 'std::nullptr_t'?
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                    ^~~~~~~~~
      |                                    std::nullptr_t
In file included from /usr/include/c++/10.2.1/string:38,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.cpp:2:
/usr/include/c++/10.2.1/x86_64-alpine-linux-musl/bits/c++config.h:268:29: note: 'std::nullptr_t' declared here
  268 |   typedef decltype(nullptr) nullptr_t;
      |                             ^~~~~~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.cpp:2:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:45: error: template argument 2 is invalid
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                             ^
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:23:18: error: 'nullptr_t' does not name a type
   23 | static constexpr nullptr_t Success() { return nullptr; }
      |                  ^~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:6:1: note: 'nullptr_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
    5 | #include <functional>
  +++ |+#include <cstddef>
    6 |
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:26:55: error: 'mode_t' has not been declared
   26 | OpenResult myOpen(const std::string& path, int oflag, mode_t mode);
      |                                                       ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:27:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
   27 | Result myClose(int fd);
      | ^~~~~~
      | OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:48:5: error: 'ino64_t' does not name a type; did you mean 'int64_t'?
   48 |     ino64_t             d_ino;    /* 64-bit inode number */
      |     ^~~~~~~
      |     int64_t
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.cpp:2:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:58:15: error: 'Result' does not name a type; did you mean 'OpenResult'?
   58 | [[nodiscard]] Result myStatx(int fd, const std::string& path, int flags, unsigned int mask, struct statx& buf);
      |               ^~~~~~
      |               OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.cpp:2:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.hpp:10:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   10 |     Result open(const std::string& path, int oflag, mode_t mode);
      |     ^~~~~~
      |     OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.cpp:11:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
   11 | Result ScopedFileDescriptor::open(const std::string& path, int oflag, mode_t mode)
      | ^~~~~~
      | OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp:67:1: error: 'Result' does not name a type
   67 | Result myClose(int fd)
      | ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp:83:1: error: 'Result' does not name a type
   83 | Result myStatx(int fd, const std::string& path, int flags, unsigned int mask, struct statx& buf)
      | ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp: In lambda function:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp:101:34: error: invalid conversion from 'void*' to 'dirent*' [-fpermissive]
  101 |         retval = getdents64(dfd, buffer, bufferSize);
      |                                  ^~~~~~
      |                                  |
      |                                  void*
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.cpp:7:
/usr/include/dirent.h:52:19: note:   initializing argument 2 of 'int getdents(int, dirent*, size_t)'
   52 | int getdents(int, struct dirent *, size_t);
      |                   ^~~~~~~~~~~~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:36: error: 'nullptr_t' was not declared in this scope; did you mean 'std::nullptr_t'?
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                    ^~~~~~~~~
      |                                    std::nullptr_t
In file included from /usr/include/c++/10.2.1/string:38,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp:1:
/usr/include/c++/10.2.1/x86_64-alpine-linux-musl/bits/c++config.h:268:29: note: 'std::nullptr_t' declared here
  268 |   typedef decltype(nullptr) nullptr_t;
      |                             ^~~~~~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:45: error: template argument 2 is invalid
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                             ^
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:23:18: error: 'nullptr_t' does not name a type
   23 | static constexpr nullptr_t Success() { return nullptr; }
      |                  ^~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:6:1: note: 'nullptr_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
    5 | #include <functional>
  +++ |+#include <cstddef>
    6 |
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:27:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
   27 | Result myClose(int fd);
      | ^~~~~~
      | OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:58:15: error: 'Result' does not name a type; did you mean 'OpenResult'?
   58 | [[nodiscard]] Result myStatx(int fd, const std::string& path, int flags, unsigned int mask, struct statx& buf);
      |               ^~~~~~
      |               OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:19:19: error: 'Result' does not name a type; did you mean 'OpenResult'?
   19 |     [[nodiscard]] Result ensureOpened();
      |                   ^~~~~~
      |                   OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:31:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   31 |     Result doOpen();
      |     ^~~~~~
      |     OpenResult
make[2]: *** [CMakeFiles/wcp_lib.dir/build.make:176: CMakeFiles/wcp_lib.dir/src/ScopedFileDescriptor.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/wcp_lib.dir/build.make:137: CMakeFiles/wcp_lib.dir/src/Util.cpp.o] Error 1
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:9:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:36: error: 'nullptr_t' was not declared in this scope; did you mean 'std::nullptr_t'?
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                    ^~~~~~~~~
      |                                    std::nullptr_t
In file included from /usr/include/c++/10.2.1/cstring:41,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:5:
/usr/include/c++/10.2.1/x86_64-alpine-linux-musl/bits/c++config.h:268:29: note: 'std::nullptr_t' declared here
  268 |   typedef decltype(nullptr) nullptr_t;
      |                             ^~~~~~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:9:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:45: error: template argument 2 is invalid
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                             ^
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:23:18: error: 'nullptr_t' does not name a type
   23 | static constexpr nullptr_t Success() { return nullptr; }
      |                  ^~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:6:1: note: 'nullptr_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
    5 | #include <functional>
  +++ |+#include <cstddef>
    6 |
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:27:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
   27 | Result myClose(int fd);
      | ^~~~~~
      | OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:9:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:58:15: error: 'Result' does not name a type; did you mean 'OpenResult'?
   58 | [[nodiscard]] Result myStatx(int fd, const std::string& path, int flags, unsigned int mask, struct statx& buf);
      |               ^~~~~~
      |               OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:9:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:19:19: error: 'Result' does not name a type; did you mean 'OpenResult'?
   19 |     [[nodiscard]] Result ensureOpened();
      |                   ^~~~~~
      |                   OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:31:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   31 |     Result doOpen();
      |     ^~~~~~
      |     OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:9:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:68:47: error: 'PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' was not declared in this scope; did you mean 'PTHREAD_MUTEX_INITIALIZER'?
   68 |     pthread_mutex_t copiesPendingStartMutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                               PTHREAD_MUTEX_INITIALIZER
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:6,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:36: error: 'nullptr_t' was not declared in this scope; did you mean 'std::nullptr_t'?
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                    ^~~~~~~~~
      |                                    std::nullptr_t
In file included from /usr/include/c++/10.2.1/cstdint:38,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:1:
/usr/include/c++/10.2.1/x86_64-alpine-linux-musl/bits/c++config.h:268:29: note: 'std::nullptr_t' declared here
  268 |   typedef decltype(nullptr) nullptr_t;
      |                             ^~~~~~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:6,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:45: error: template argument 2 is invalid
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                             ^
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:23:18: error: 'nullptr_t' does not name a type
   23 | static constexpr nullptr_t Success() { return nullptr; }
      |                  ^~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:5:1: note: 'nullptr_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
    4 | #include <variant>
  +++ |+#include <cstddef>
    5 | #include <functional>
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:27:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
   27 | Result myClose(int fd);
      | ^~~~~~
      | OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:82:42: error: 'PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' was not declared in this scope; did you mean 'PTHREAD_MUTEX_INITIALIZER'?
   82 |     pthread_mutex_t errorMessagesMutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
      |                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          PTHREAD_MUTEX_INITIALIZER
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:6,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:58:15: error: 'Result' does not name a type; did you mean 'OpenResult'?
   58 | [[nodiscard]] Result myStatx(int fd, const std::string& path, int flags, unsigned int mask, struct statx& buf);
      |               ^~~~~~
      |               OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp: In function 'int wcpMain(int, char**)':
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:36:18: error: variable 'statx srcStat' has initializer but incomplete type
   36 |     struct statx srcStat = {};
      |                  ^~~~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:6,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:19:19: error: 'Result' does not name a type; did you mean 'OpenResult'?
   19 |     [[nodiscard]] Result ensureOpened();
      |                   ^~~~~~
      |                   OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:38:9: error: 'Result' was not declared in this scope
   38 |         Result result = myStatx(AT_FDCWD, src, 0, STATX_BASIC_STATS, srcStat);
      |         ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:31:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   31 |     Result doOpen();
      |     ^~~~~~
      |     OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:39:43: error: 'result' was not declared in this scope
   39 |         if (std::holds_alternative<Error>(result))
      |                                           ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:46:18: error: variable 'statx destStat' has initializer but incomplete type
   46 |     struct statx destStat = {};
      |                  ^~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp: In lambda function:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:51:46: error: 'STATX_BASIC_STATS' was not declared in this scope
   51 |             statx(AT_FDCWD, dest.c_str(), 0, STATX_BASIC_STATS, &destStat);
      |                                              ^~~~~~~~~~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:51:74: error: invalid use of incomplete type 'struct statx'
   51 |             statx(AT_FDCWD, dest.c_str(), 0, STATX_BASIC_STATS, &destStat);
      |                                                                          ^
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/wcpMain.cpp:9:
/usr/include/liburing.h:370:8: note: forward declaration of 'struct statx'
  370 | struct statx;
      |        ^~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:6,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:68:47: error: 'PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' was not declared in this scope; did you mean 'PTHREAD_MUTEX_INITIALIZER'?
   68 |     pthread_mutex_t copiesPendingStartMutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                               PTHREAD_MUTEX_INITIALIZER
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:82:42: error: 'PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' was not declared in this scope; did you mean 'PTHREAD_MUTEX_INITIALIZER'?
   82 |     pthread_mutex_t errorMessagesMutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
      |                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          PTHREAD_MUTEX_INITIALIZER
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:1:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:45:19: error: 'Result' does not name a type; did you mean 'OpenResult'?
   45 |     [[nodiscard]] Result addToBatch();
      |                   ^~~~~~
      |                   OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:46:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   46 |     Result handleFileClose();
      |     ^~~~~~
      |     OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:59:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   59 |     Result submitReadWriteCommands();
      |     ^~~~~~
      |     OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp: In member function 'void CopyRunner::cleanupOnError()':
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:79:11: error: 'class CopyRunner' has no member named 'handleFileClose'
   79 |     this->handleFileClose();
      |           ^~~~~~~~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp: At global scope:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:91:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
   91 | Result CopyRunner::submitReadWriteCommands()
      | ^~~~~~
      | OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:199:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
  199 | Result CopyRunner::addToBatch()
      | ^~~~~~
      | OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.cpp:210:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
  210 | Result CopyRunner::handleFileClose()
      | ^~~~~~
      | OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp:4:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:68:47: error: 'PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' was not declared in this scope; did you mean 'PTHREAD_MUTEX_INITIALIZER'?
   68 |     pthread_mutex_t copiesPendingStartMutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                               PTHREAD_MUTEX_INITIALIZER
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:82:42: error: 'PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' was not declared in this scope; did you mean 'PTHREAD_MUTEX_INITIALIZER'?
   82 |     pthread_mutex_t errorMessagesMutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
      |                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          PTHREAD_MUTEX_INITIALIZER
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp: In constructor 'QueueFileDescriptor::QueueFileDescriptor(CopyQueue&, std::string, int, mode_t)':
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp:14:15: error: 'class QueueFileDescriptor' has no member named 'doOpen'; did you mean 'isOpen'?
   14 |         this->doOpen(); // ignore errors here, it will be seen when the user calls ensureOpened()
      |               ^~~~~~
      |               isOpen
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp: At global scope:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp:22:1: error: 'Result' does not name a type
   22 | Result QueueFileDescriptor::ensureOpened()
      | ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.cpp:65:1: error: 'Result' does not name a type
   65 | Result QueueFileDescriptor::doOpen()
      | ^~~~~~
make[2]: *** [CMakeFiles/wcp_lib.dir/build.make:150: CMakeFiles/wcp_lib.dir/src/wcpMain.cpp.o] Error 1
make[2]: *** [CMakeFiles/wcp_lib.dir/build.make:163: CMakeFiles/wcp_lib.dir/src/QueueFileDescriptor.cpp.o] Error 1
make[2]: *** [CMakeFiles/wcp_lib.dir/build.make:85: CMakeFiles/wcp_lib.dir/src/CopyRunner.cpp.o] Error 1
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:36: error: 'nullptr_t' was not declared in this scope; did you mean 'std::nullptr_t'?
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                    ^~~~~~~~~
      |                                    std::nullptr_t
In file included from /usr/include/c++/10.2.1/iomanip:38,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:1:
/usr/include/c++/10.2.1/x86_64-alpine-linux-musl/bits/c++config.h:268:29: note: 'std::nullptr_t' declared here
  268 |   typedef decltype(nullptr) nullptr_t;
      |                             ^~~~~~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:22:45: error: template argument 2 is invalid
   22 | using Result = std::variant<Error, nullptr_t>;
      |                                             ^
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:23:18: error: 'nullptr_t' does not name a type
   23 | static constexpr nullptr_t Success() { return nullptr; }
      |                  ^~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:6:1: note: 'nullptr_t' is defined in header '<cstddef>'; did you forget to '#include <cstddef>'?
    5 | #include <functional>
  +++ |+#include <cstddef>
    6 |
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:27:1: error: 'Result' does not name a type; did you mean 'OpenResult'?
   27 | Result myClose(int fd);
      | ^~~~~~
      | OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:5,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/Util.hpp:58:15: error: 'Result' does not name a type; did you mean 'OpenResult'?
   58 | [[nodiscard]] Result myStatx(int fd, const std::string& path, int flags, unsigned int mask, struct statx& buf);
      |               ^~~~~~
      |               OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:9,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:19:19: error: 'Result' does not name a type; did you mean 'OpenResult'?
   19 |     [[nodiscard]] Result ensureOpened();
      |                   ^~~~~~
      |                   OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/QueueFileDescriptor.hpp:31:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   31 |     Result doOpen();
      |     ^~~~~~
      |     OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:68:47: error: 'PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' was not declared in this scope; did you mean 'PTHREAD_MUTEX_INITIALIZER'?
   68 |     pthread_mutex_t copiesPendingStartMutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                               PTHREAD_MUTEX_INITIALIZER
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:82:42: error: 'PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP' was not declared in this scope; did you mean 'PTHREAD_MUTEX_INITIALIZER'?
   82 |     pthread_mutex_t errorMessagesMutex = PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP;
      |                                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          PTHREAD_MUTEX_INITIALIZER
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:10:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:45:19: error: 'Result' does not name a type; did you mean 'OpenResult'?
   45 |     [[nodiscard]] Result addToBatch();
      |                   ^~~~~~
      |                   OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:46:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   46 |     Result handleFileClose();
      |     ^~~~~~
      |     OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyRunner.hpp:59:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   59 |     Result submitReadWriteCommands();
      |     ^~~~~~
      |     OpenResult
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:13:
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/ScopedFileDescriptor.hpp:10:5: error: 'Result' does not name a type; did you mean 'OpenResult'?
   10 |     Result open(const std::string& path, int oflag, mode_t mode);
      |     ^~~~~~
      |     OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp: In member function 'void CopyQueue::submitLoop()':
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:77:13: error: 'pthread_yield' was not declared in this scope; did you mean 'pthread_kill'?
   77 |             pthread_yield();
      |             ^~~~~~~~~~~~~
      |             pthread_kill
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:137:21: error: 'Result' was not declared in this scope; did you mean 'OpenResult'?
  137 |                     Result result = toAdd->destFd->ensureOpened();
      |                     ^~~~~~
      |                     OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:138:56: error: 'result' was not declared in this scope
  138 |                     if (!std::holds_alternative<Error>(result))
      |                                                        ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:139:41: error: 'class CopyRunner' has no member named 'handleFileClose'
  139 |                         result = toAdd->handleFileClose();
      |                                         ^~~~~~~~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:141:55: error: 'result' was not declared in this scope
  141 |                     if (std::holds_alternative<Error>(result))
      |                                                       ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:149:21: error: 'Result' was not declared in this scope; did you mean 'OpenResult'?
  149 |                     Result result = toAdd->addToBatch();
      |                     ^~~~~~
      |                     OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:151:55: error: 'result' was not declared in this scope
  151 |                     if (std::holds_alternative<Error>(result))
      |                                                       ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:191:17: error: 'Result' was not declared in this scope; did you mean 'OpenResult'?
  191 |                 Result closeResult = eventData->copyData->handleFileClose();
      |                 ^~~~~~
      |                 OpenResult
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:192:51: error: 'closeResult' was not declared in this scope
  192 |                 if (std::holds_alternative<Error>(closeResult))
      |                                                   ^~~~~~~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp: In member function 'void CopyQueue::addRecursiveCopy(std::string, std::string)':
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:604:13: error: 'Result' was not declared in this scope
  604 |             Result result = currentFd.open(current, O_RDONLY | O_DIRECTORY | O_CLOEXEC, 0);
      |             ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:605:47: error: 'result' was not declared in this scope
  605 |             if (std::holds_alternative<Error>(result))
      |                                               ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:636:30: error: variable 'statx sb' has initializer but incomplete type
  636 |                 struct statx sb = {};
      |                              ^~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:642:25: error: 'Result' was not declared in this scope
  642 |                         Result result = myStatx(AT_FDCWD, fullPath, 0, STATX_BASIC_STATS, sb);
      |                         ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:643:59: error: 'result' was not declared in this scope
  643 |                         if (std::holds_alternative<Error>(result))
      |                                                           ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:680:25: error: 'Result' was not declared in this scope
  680 |                         Result result = myStatx(AT_FDCWD, fullPath, 0, STATX_BASIC_STATS, sb);
      |                         ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:681:59: error: 'result' was not declared in this scope
  681 |                         if (std::holds_alternative<Error>(result))
      |                                                           ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp: In member function 'void CopyQueue::addFileCopy(const string&, const string&, const statx*)':
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:708:9: error: 'Result' was not declared in this scope
  708 |         Result result = myStatx(AT_FDCWD, from, 0, STATX_BASIC_STATS, *tmp);
      |         ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:709:43: error: 'result' was not declared in this scope
  709 |         if (std::holds_alternative<Error>(result))
      |                                           ^~~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp: In member function 'void CopyQueue::addCopyJob(const string&, const string&, const statx&)':
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:722:99: error: invalid use of incomplete type 'const struct statx'
  722 |     auto* destFd = new QueueFileDescriptor(*this, dest, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, st.stx_mode);
      |                                                                                ^~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
/usr/include/liburing.h:370:8: note: forward declaration of 'struct statx'
  370 | struct statx;
      |        ^~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:724:9: error: invalid use of incomplete type 'const struct statx'
  724 |     if (st.stx_size == 0)
      |         ^~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
/usr/include/liburing.h:370:8: note: forward declaration of 'struct statx'
  370 | struct statx;
      |        ^~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:738:32: error: invalid use of incomplete type 'const struct statx'
  738 |     size_t requiredAlignment = st.stx_blksize;
      |                                ^~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
/usr/include/liburing.h:370:8: note: forward declaration of 'struct statx'
  370 | struct statx;
      |        ^~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:752:26: error: invalid use of incomplete type 'const struct statx'
  752 |     int32_t chunkCount = st.stx_size / chunkSize;
      |                          ^~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
/usr/include/liburing.h:370:8: note: forward declaration of 'struct statx'
  370 | struct statx;
      |        ^~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:753:9: error: invalid use of incomplete type 'const struct statx'
  753 |     if (st.stx_size % chunkSize != 0)
      |         ^~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
/usr/include/liburing.h:370:8: note: forward declaration of 'struct statx'
  370 | struct statx;
      |        ^~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:760:22: error: invalid use of incomplete type 'const struct statx'
  760 |     while (offset != st.stx_size)
      |                      ^~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
/usr/include/liburing.h:370:8: note: forward declaration of 'struct statx'
  370 | struct statx;
      |        ^~~~~
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:762:52: error: invalid use of incomplete type 'const struct statx'
  762 |         size_t count = std::min<size_t>(chunkSize, st.stx_size - offset);
      |                                                    ^~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
/usr/include/liburing.h:370:8: note: forward declaration of 'struct statx'
  370 | struct statx;
      |        ^~~~~
In file included from /usr/include/c++/10.2.1/bits/locale_conv.h:41,
                 from /usr/include/c++/10.2.1/locale:43,
                 from /usr/include/c++/10.2.1/iomanip:43,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:1:
/usr/include/c++/10.2.1/bits/unique_ptr.h: In instantiation of 'typename std::_MakeUniq<_Tp>::__single_object std::make_unique(_Args&& ...) [with _Tp = statx; _Args = {}; typename std::_MakeUniq<_Tp>::__single_object = std::unique_ptr<statx>]':
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:706:46:   required from here
/usr/include/c++/10.2.1/bits/unique_ptr.h:962:30: error: invalid use of incomplete type 'struct statx'
  962 |     { return unique_ptr<_Tp>(new _Tp(std::forward<_Args>(__args)...)); }
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.hpp:2,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:8:
/usr/include/liburing.h:370:8: note: forward declaration of 'struct statx'
  370 | struct statx;
      |        ^~~~~
In file included from /usr/include/c++/10.2.1/bits/locale_conv.h:41,
                 from /usr/include/c++/10.2.1/locale:43,
                 from /usr/include/c++/10.2.1/iomanip:43,
                 from wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:1:
/usr/include/c++/10.2.1/bits/unique_ptr.h: In instantiation of 'void std::default_delete<_Tp>::operator()(_Tp*) const [with _Tp = statx]':
/usr/include/c++/10.2.1/bits/unique_ptr.h:361:17:   required from 'std::unique_ptr<_Tp, _Dp>::~unique_ptr() [with _Tp = statx; _Dp = std::default_delete<statx>]'
wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/src/CopyQueue.cpp:703:35:   required from here
/usr/include/c++/10.2.1/bits/unique_ptr.h:83:16: error: invalid application of 'sizeof' to incomplete type 'statx'
   83 |  static_assert(sizeof(_Tp)>0,
      |                ^~~~~~~~~~~
make[2]: *** [CMakeFiles/wcp_lib.dir/build.make:98: CMakeFiles/wcp_lib.dir/src/CopyQueue.cpp.o] Error 1
make[2]: Leaving directory 'wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build'
make[1]: *** [CMakeFiles/Makefile2:156: CMakeFiles/wcp_lib.dir/all] Error 2
make[1]: Leaving directory 'wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build'
make: *** [Makefile:106: all] Error 2

So, I don't have much experience with musl, but my understanding is that libstdc++ has a hard dependency on glibc. It seems there are patched versions out there to make it work, and I guess that is what alpine is using? However, I don't have a patched version to hand. I would guess that the only problem is some missing includes. Is there any chance you'd be interested in trying to figure out which includes are needed and dropping a PR?

No, libstdc++ does not have a hard dependency on glibc.
I’ve managed to hack it in the way it builds (quick & dirty patch), but it segfaults in ETACalculator::getEta().
(gdb) run src foo
Starting program: wcp-45ab7b81f2bc11f5f577978a974bb99838726d67/build/wcp src foo
[New LWP 27555]
[New LWP 27556]

[LWP 27555 exited]                                                                                0.00 B / ???                                                                                8388608.00 TiB/s   ETA: ???
                                                                                Calculating, found: 0.00 B
Thread 3 "wcp" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 27556]
0x000055555556b91e in ETACalculator::getEta()::{lambda(unsigned long)#1}::operator()(unsigned long) const ()
(gdb) backtrace
#0  0x000055555556b91e in ETACalculator::getEta()::{lambda(unsigned long)#1}::operator()(unsigned long) const ()
#1  0x000055555556baf6 in ETACalculator::getEta() ()
#2  0x000055555555d6e9 in CopyQueue::showProgressLoop()::{lambda()#7}::operator()() const ()
#3  0x000055555555e0ab in CopyQueue::showProgressLoop() ()
#4  0x000055555556145a in CopyQueue::staticCallShowProgressLoop(void*) ()
#5  0x00007ffff7fba160 in ?? () from /lib/ld-musl-x86_64.so.1
#6  0x0000000000000000 in ?? ()

When I comment out the invocation of this method, it copies the files and exits successfully. However, I’m not sure if the cause is really in this method or just a coincidence.
You can trivially run Alpine Linux using e.g. https://github.com/alpinelinux/alpine-chroot-install.

Ah, thanks for all the effort you've put in! I belive the segfault should be fixed now as of https://github.com/wheybags/wcp/commit/fbc63458fc3a9f7dd122429b97072b3863624bde

Do I understand correctly that the segfault had actually nothing to do with musl or my hackery to get it work? o.O

Yup!

Uh, so you haven’t tested copying an empty directory before? It seems that I had a wrong expectation about the quality/maturity of this project. :(

I had, but with the configuration I had in my IDE when running tests, it didn't error.
Also, from the readme:

It's probably not robust enough for daily use just yet.


Instance manager 1.4.0 can't be deleted

Question

Suggest to use https://github.com/longhorn/longhorn/discussions to ask questions.

Environment

Longhorn version: 1.4.1 using helm chart
Kubernetes version: 1.25
Node config

OS type and version: Ubuntu 22.04.1 LTS
CPU per node: 4
Memory per node: 8gb
Disk type: ssd
Network bandwidth and latency between the nodes: -

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal): Exoscale (cloud provider)

Additional context
I can't delete the engine 1.4.0 data as there's references

but that is what I see below, there's no 1.4.0 instances of this and all of my volumes seems to have been upgraded

Any idea/suggestion ?

Can you provide the support bundle?
cc @ChanYiLin

I've sent it to your email

Hi @Floeig, Can you post it to here, so other team members can also analysis it, thanks!

Hi @Floeig
Have you manually upgraded each volume's engine in the volume's page?

@ChanYiLin
No I had the the "Concurrent Automatic Engine Upgrade Per Node Limit" to 2 if my memory was correct.
I probably did 1 or 2 manually that semed stuck (or I wasn't patient enought).
At this moment I have put it back "Concurrent Automatic Engine Upgrade Per Node Limit" to 0, to see if I was able to do anytning. But I can only go back to 1.4.0 then forward again.
Maybe I need to do that for each of them... I havent tried that on enought volumes to see if that can potentially solve anything.
I'll try some old test/dev volumes to see if the numer decrease.
I'll let you know

I've tried to downgrade/upgrade 9 volumes. The number of volume using 1.4.0 increased. when I upgraded them it went back to 44.
There's not that much other volumes that I could try to downgrade/upgrade. It looks like the 44 is actually 0 but somehow had not been initialised correclty.
Let me know if you want me to try anything

@ttyS0 @Floeig  Can you provide a support bundle for further check? Thank you.

Sorry, I did get the support bundle but forgot to add it to my previous comment.
support-bundle-2023-05-11t07-57-33z.zip

@Floeig
Thanks for the support bundle.
Many replicas are using longhorn-engine:v1.4.0 because of the bug.
Can you apply the workaround in this ticket?
For the replicas using longhorn-engine:v1.4.0, you can delete them by kubectl -n longhorn-system delete replica <name>.

Here's the support bundle.
I don't see any replicas using 1.4.0.
supportbundle_77290834-bb7d-491d-a2e1-ad17dc2c3c6c_2023-05-12T14-10-15Z.zip

@ttyS0 Same issue. Please apply the solution in https://github.com/longhorn/longhorn/issues/5902#issuecomment-1545849055. Thank you.

The mutating web hook is already set to Fail.
Deleting the stopped replicas cleared them out. Thanks!
For others reference, I used kubectl get replica -n longhorn-system | grep -v running to get a list of the replicas.

@derekbit It's working,
The interesting part is that theses replicas don't seems they are linked to 1.4.0 and aren't visible in the ui. But they are as it's working.
Even the nodes don't exists anymore. looking at the "date" I'm wondering if it have happended during my migration from kubernetes 1.24 to 1.25...
ex:
❯ kubectl -n longhorn-system get replicas
NAME                                                  STATE     NODE                                      DISK                                   INSTANCEMANAGER                                       IMAGE                               AGE
pvc-a7590866-cabc-4455-be04-1d2f19e66b63-r-8857253d   stopped   node-medium-2cpu-4ram-100gb-1e6d0-mulrq   da9e8bf6-3563-49f7-813a-5defd9f0b471                                                                                78d
pvc-a7590866-cabc-4455-be04-1d2f19e66b63-r-9c364130   stopped                                                                                78d
pvc-a7590866-cabc-4455-be04-1d2f19e66b63-r-9f6bb9d5   stopped                                                                                78d
pvc-a7590866-cabc-4455-be04-1d2f19e66b63-r-ace7b86f   stopped                                                                                78d
pvc-a7590866-cabc-4455-be04-1d2f19e66b63-r-b2df283e   stopped                                                                                78d
pvc-a7590866-cabc-4455-be04-1d2f19e66b63-r-cc6b6e8a   stopped                                                                                78d
pvc-a7590866-cabc-4455-be04-1d2f19e66b63-r-d4c64c54   unknown   node-medium-2cpu-4ram-100gb-1e6d0-mulrq   da9e8bf6-3563-49f7-813a-5defd9f0b471   instance-manager-r-6496cb9f79a65599bfe47d15a857078c                                       78d

I hope that could help
Thanks a lot

Same issue for upgrade 1.4.1 → 1.4.2.

Same issue for upgrade 1.4.1 → 1.4.2.

Can you provide us with the support bundle?
I think the replicas are generated in v1.4.1 and exists before the upgrade.

Same issue for upgrade 1.4.1 → 1.4.2.

@Orhideous
Can you provide us with the support bundle?
I think the replicas are generated in v1.4.1 and exist before the upgrade.

@derekbit It's unrelated now. Error was caused due to unfortunate combinations of multiple factors: tight memory conditions (so some of 1.4.2 instance managers couldn't start — Node didn't have enough resource: cpu, requested: 480, used: 3602, capacity: 4000), degraded volumes — and it turns out that longhorn was desperately restore replicas AND upgrade itself in the same time.
Anyway, I temporary scaled most resource-hungry statefulsets down to get room for an upgrade, and then manually cleaned up orphaned, stopped and just outdated replicas from 1.4.1 engine.
And that worked :sweat_smile:

Had the same surprise upgrading from 1.4.1 to 1.4.2. Realized I had 356 invalid replica reference count?!?! I have no idea how could it reach that amount since I only have 12 volumes.
Deleted them all with
kubectl -n longhorn-system get replica | grep stopped | awk '{ print $1 }' | xargs kubectl -n longhorn-system delete replica

Then I managed to delete the old engine image via the UI.
But then I started to receive kubernetes error events:
Readiness probe failed: ls: cannot access '/data/longhorn': No such file or directory
Failed to garbage collect required amount of images. Attempted to free<PHONE_NUMBER> bytes, but only found 613012623 bytes eligible to free.

Deleting the old revision instance manager pod was NOT a good idea. All ym workloads crashed. Grafana fails to restart.
MountVolume.SetUp failed for volume "pvc-5adce447-de57-474b-95f0-bf3f2f04f228" : applyFSGroup failed for vol pvc-5adce447-de57-474b-95f0-bf3f2f04f228: lstat /var/snap/microk8s/common/var/lib/kubelet/pods/9e70eebc-912f-487a-b829-0b6ea86a9903/volumes/kubernetes.io~csi/pvc-5adce447-de57-474b-95f0-bf3f2f04f228/mount/file-collections: input/output error

@Dunge
Can you check who are still using the old engine image or provide us with a support bundle?

@derekbit A bit too late for that unfortunately since I killed everything.
Few minutes later some 2 nodes began to transform into NodeStatusUnknown and went crazy, ended up power cycling them all. I fear support bundle would be filled with too much unrelated errors.

From your description, it seems some volumes are still using the old instance managers, so the direct deletions of the IMs lead to the crash.

This solved my issue:
https://github.com/longhorn/longhorn/issues/5902#issuecomment-1545869057
Thank you all


Add adapter testing and activate travis-ci

Adapter testing is already added and travis is successful. What is missing?

hhmmm ... my fork is not updatung from your master repo ... strange ... need to check that. Then ok :-)

What's the fork for?


Remove commented out code

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 98.00%. Comparing base (d834dff) to head (b3758a8).
Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #225   +/-   ##
=======================================
  Coverage   98.00%   98.00%
=======================================
  Files          21       21
  Lines         200      200
  Branches       60       58    -2
=======================================
  Hits          196      196
  Misses          4        4

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Installation guide

Signed-off-by: Luke Hinds<EMAIL_ADDRESS>

depends on #399 (link to verify page)


diff bounding box?

Hi,
Is it possible to get the bounding box in pixel units of the areas of the image that have changed?
Thanks,

Sorry for the late reply.  The data received with the onComplete callback contains a property called diffBounds.
resemble(file).compareTo(file2).onComplete(function(data){
  console.log(data.diffBounds); // {bottom: 0, left: 0, right: 0, top: 0}
});


Removed weblogic-deploy-tool downloading

weblogic-deploy-tool is part of WebLogic Server base image. Hence now weblogic-deploy-tool downloading is not required as part of setup scripts.
This fix removes the weblogic-deploy-tool downloading redundant code.

I have reviewed the changes done by Sanjay to remove the WebLogic Deploy tool and the changes look fine.
The WebLogic Deploy tool will be available by default as part of the WLS Azure Base Image and therefore it is not required to be downloaded again.


Pass credentials when running federated SPARQL queries

Current behaviour in the JPS base library, is that when connecting to a triplestore an instance of the RemoteStoreClient class is created. This instance holds the credentials (username and password) needed to access the KG.
Within the FeatureInfoAgent, this client instance is then used to execute a federated query (using the executeFederatedQuery() method). This method takes a number of endpoint URLs (with no restriction that they are in the same stack, or share the same credentials) and runs the query on all of them; in this case the URLs happen to belong to the same Blazegraph instance. The issue is that this method does not use the credentials stored in that instance, leading to no way to run a federated query on protected endpoints.
Short term solution is to pass the instance's credentials to any URL it contacts. In the longer term, unless the aforementioned restriction to the input URLs is implemented, would it not make more sense to move the ability to run federated queries up a level, and have it take a list of RemoteStoreClient instances (rather than URLs), each containing a URL and the credentials for it?
Note: adding Seb to sanity check the suggested approach.

Passing RemoteStoreClient instances rather than URLs sounds like a good solution to me (and preferable as a matter of principle).

As mentioned in the duplicate issue #740, it looks like the solution would be to create a RepositoryManager and add the required endpoints to it along with any credentials. The RepositoryManager can then be used to create a DefaultRepositoryResolver which can be passed to a FedXFactory to create the federated repository.


Upgraded Doxyfile to version 1.9.0

removed all html folder outputs from the repository since they're built by Doxygen
made input paths relative in Doxyfile so it can be built in any local folder
used escape code to make pound define readable in the html output

It was a mistake to delete the HTML folder, so I retract my pull request


Add ability to check Herbi kc

Currently the only way to check for herbiboard kc is to go through +lb creatures herbi, which is limited to 5 pages. Add a command which lets you check personal herbi kc, without the need to use leaderboard.

In next update, you'll be able to do +kc herbiboar (or +kc herbi or +kc <anyhuntercreature>)


Search filter does not filter type

Tried searching for npm package called "cli", but search suggestions show everything even though filter is set to "NpmJs". Same result if I change it to different filters. Same behavior in Chrome and Edge.

I took a look at this in dev environment.
Although the search relevance has certainly improved, I still observed one or more cases where other package types are shown (for example, you select "GitHub" from the dropdown but still get NPM packages in the mix too).

Furthermore, when I actually select the package from the search result it may not always show in the list below.
This is certainly still the case with more generic named (NPM) packages like "cli" or "log", but does not appear to impact more specific searches such as "cli-box" or "log-driver".

I spoke with @qtomlinson and it appears this selection behavior may be by design in this view. In the workspace view, if you search and select, only the selected component is added. This should probably be tracked separately in another issue.

I can confirm the above appears resolved in dev environment.
The very last point I am told is by design. However, it does now actually populate the list with what I select (albeit along with many other similarly named components from other providers).

However, it does now actually populate the list with what I select (albeit along with many other similarly named components from other providers).

@qtomlinson is this by design?

@bduranc Yes, what you described in the above screen shot is the designed behaviour in the current web ui.  The original issue documented is that the dropdown list below the search text ('abaus') box did not respect the package type selected ('NPMJS').  The dropdown list now only displays the npm related packages, which addressed the issue of 'search suggestions show everything even though filter is set to "NpmJs"'.
After a specific search suggestion in the drop down list is clicked, the browse page currently displays all components whose names contain abacus and this is reflect in the url: https://clearlydefined.io/?sort=releaseDate&sortDesc=true&name=abacus.   This gives users the ability to explore all the abacus related packages: all versions and the related sources.  If this is undesirable, please track a separate issue if none exists.

@qtomlinson : Alright, just wanted to clarify. Thanks.
@capfei : Do you think we can close this issue then?

I think this specific issue appears to be resolved.
It would be nice if the package name and type I searched for appeared first in the results (exact match first and then similar). If that hasn't been opened yet then I will open an issue.
Thanks for fixing this one!