zot not supporting OCI image index(application/vnd.oci.image.index.v1+json)

Discussed in https://github.com/project-zot/zot/discussions/2811

Originally posted by tamilhce November 28, 2024
I was running zot with following patch version https://github.com/tamilhce/zot/pull/13/ as a pull through for ECR
I have verified that some multi-arch images are working as expected, while others are not. Upon further investigation, I found that container multi-arch images with the type application/vnd.oci.image.index.v1+json (the OCI manifest list for multi-platform images) are not supported. Only multi-arch images with the Docker manifest format, application/vnd.docker.distribution.manifest.list.v2+json (the Docker manifest list for multi-platform images), are supported.
AWS ECR supports both the OCI and Docker manifest formats, whereas Zot only supports the multi-arch/image index of the Docker manifest format.
working -  application/vnd.docker.distribution.manifest.list.v2+json
vanan@a-a7ehvnb8bz4k ~> docker manifest inspect xxxx.dkr.ecr.us-east-1.amazonaws.com/xxxx:v1.31.0-1.31.0
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 921,
         "digest": "sha256:8afaacbf5f90e424d6e70b5ffdc2447112c58031e830e994142fc500064a200f",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 921,
         "digest": "sha256:308b87952a99f44281fadcd7a490b7e8a7cbbb4d3c672ecb417a9b4064a6a316",
         "platform": {
            "architecture": "arm64",
            "os": "linux"
         }
      }
   ]
}

vanan@a-a7ehvnb8bz4k ~> docker pull zot-dev.xxx.net/xxxxx:v1.31.0-1.31.0
v1.31.0-1.31.0: Pulling from xxxxx
Digest: sha256:ca04f21bc8fcc278acb9bb4f08e359603d3b18da4384822c11e2771480d52a2b
Status: Image is up to date for zot-dev.xxx.net/xxxx:v1.31.0-1.31.0
zot-dev.xxx.net/xxxx:v1.31.0-1.31.0

Not working - application/vnd.oci.image.index.v1+json
vanan@xxxxx ~> docker manifest inspect xxxxxxx.dkr.ecr.us-east-1.amazonaws.com/xxxxxx:xxxxx
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.oci.image.index.v1+json",
   "manifests": [
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 4841,
         "digest": "sha256:eea456504e848927b80b42427a2b466e25f7ddc226d18765912936001fda6288",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 4843,
         "digest": "sha256:5a6a7e7e93c854dc0f7df8c4ee669c3ba4a30bee27362bb194ba1defbbcb1409",
         "platform": {
            "architecture": "arm64",
            "os": "linux"
         }
      }
   ]
}

vanan@a-a7ehvnb8bz4k ~> docker pull zot-dev.xxx.net/xxxxx:xxxxx
Error response from daemon: repository zot-dev.xxx.net/xxxxx not found: name unknown: repository name not known to registry

relevant zot container error log
{"level":"info","repo":"xxxx/xxxxx","xxxxx":"reference","err":"media type is not supported

is this the expected behavior? If it's a bug, I will work on the feature. Looking forward to your valuable reply.

@tamilhce

Zot supports OCI image indexes in general, and it has been for about 2 years. By support I mean every call mentioned in the oci distribution spec. We have tests for all those scenarios.

The issue you are reporting is specific to zot sync, so I think that should be captured in the issue title.
Even for zot sync this is really strange, as we do support OCI indexes, and we do have tests for it, such as https://github.com/project-zot/zot/blob/main/pkg/extensions/sync/sync_test.go#L6935

As I asked in #2811, what call is docker actually making to the zot server? Can you share more of the logs?
Do different client tools (such as skopeo for example) work?

we have an ECR registry and have configured Zot as a pull-through cache (on-demand).
I observed that performing a docker pull directly from ECR as well as through zot works as expected for the media type "vnd.docker.distribution.manifest.list.v2+json".
However, when attempting a docker pull through Zot for the following OCI manifest, the pull fails:
 ~> docker manifest inspect ecrrepo/appname:1542762016
{
   "schemaVersion": 2,
   "mediaType": "application/vnd.oci.image.index.v1+json",
   "manifests": [
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 4841,
         "digest": "sha256:eea456504e848927b80b42427a2b466e25f7ddc226d18765912936001fda6288",
         "platform": {
            "architecture": "amd64",
            "os": "linux"
         }
      },
      {
         "mediaType": "application/vnd.oci.image.manifest.v1+json",
         "size": 4843,
         "digest": "sha256:5a6a7e7e93c854dc0f7df8c4ee669c3ba4a30bee27362bb194ba1defbbcb1409",
         "platform": {
            "architecture": "arm64",
            "os": "linux"
         }
      }
   ]
}

While docker pull directly from ECR works, the same operation through Zot fails. I do not believe this is a client-side issue. Below are relevant log messages for reference

docker command

]> docker pull zot/appname:1590357999
Error response from daemon: repository zot-aps1-dev.ia55.net/gitlab/arcesium/internal/valtech/pricing-engine not found: name unknown: repository name not known to registry
vanan@a-a7ehvnb8bz4k ~ [1]> docker pull ecrrepo/appname:1590357999
1590357999: Pulling from ecrrepo/appname
9088cdb84e39: Already exists
---
c9ca5fb0e249: Pull complete
Digest: sha256:117717899b06c24a7a1008a92e503acbc400626df462d05e8175cb4eb7e38f67
Status: Downloaded newer image for ecrrepo/appname:1590357999

zot logs

{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:22225","method":"GET","path":"/v2/","statusCode":200,"latency":"0s","bodySize":0,"headers":{"Accept-Encoding":["gzip"],"User-Agent":["docker/25.0.6 go/go1.22.5 git-commit/b08a51f kernel/5.15.167-112.165.amzn2.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/25.0.5 \\(linux\\))"],"X-Amzn-Trace-Id":["Root=1-6762a921-0c73db7e144f37276bfb5550"],"X-Forwarded-For":["<IP_ADDRESS>"],"X-Forwarded-Port":["443"],"X-Forwarded-Proto":["https"]},"goroutine":263343,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:13.635698457Z","message":"HTTP API"}
{"level":"info","repository":"appname","reference":"1590357999","goroutine":252054,"caller":"zotregistry.dev/zot/pkg/api/routes.go:2023","time":"2024-12-18T10:51:13.835288399Z","message":"trying to get updated image by syncing on demand"}
{"level":"info","goroutine":252056,"caller":"zotregistry.dev/zot/pkg/extensions/sync/service.go:562","time":"2024-12-18T10:51:13.835328042Z","message":"getting available client"}
{"level":"info","url":"674283286888.dkr.ecr.us-east-1.amazonaws.com","goroutine":252056,"caller":"zotregistry.dev/zot/pkg/extensions/sync/ecr_credential_helper.go:126","time":"2024-12-18T10:51:14.761798199Z","message":"The credentials are close to expiring"}
{"level":"info","url":"674283286888.dkr.ecr.us-east-1.amazonaws.com","goroutine":252056,"caller":"zotregistry.dev/zot/pkg/extensions/sync/ecr_credential_helper.go:135","time":"2024-12-18T10:51:14.76182424Z","message":"Refreshing the ECR credentials"}
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:40720","method":"GET","path":"/v2/","statusCode":200,"latency":"0s","bodySize":0,"headers":{"Accept":["*/*"],"Connection":["close"],"User-Agent":["kube-probe/1.30+"]},"goroutine":263403,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:15.945545158Z","message":"HTTP API"}
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:40722","method":"GET","path":"/v2/","statusCode":200,"latency":"0s","bodySize":0,"headers":{"Accept":["*/*"],"Connection":["close"],"User-Agent":["kube-probe/1.30+"]},"goroutine":263402,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:15.945905526Z","message":"HTTP API"}
{"level":"info","url":"674283286888.dkr.ecr.us-east-1.amazonaws.com","goroutine":252056,"caller":"zotregistry.dev/zot/pkg/extensions/sync/service.go:170","time":"2024-12-18T10:51:18.190441504Z","message":"Refreshing the upstream remote registry credentials"}
{"level":"info","remote":"ecrrepo","repository":"appname","reference":"1590357999","goroutine":252056,"caller":"zotregistry.dev/zot/pkg/extensions/sync/service.go:364","time":"2024-12-18T10:51:18.190504252Z","message":"syncing image"}
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:44824","method":"GET","path":"/v2/","statusCode":200,"latency":"0s","bodySize":0,"headers":{"Accept":["*/*"],"Connection":["close"],"User-Agent":["kube-probe/1.30+"]},"goroutine":252128,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:18.943599706Z","message":"HTTP API"}
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:44826","method":"GET","path":"/v2/","statusCode":200,"latency":"0s","bodySize":0,"headers":{"Accept":["*/*"],"Connection":["close"],"User-Agent":["kube-probe/1.30+"]},"goroutine":252193,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:18.943631903Z","message":"HTTP API"}
{"level":"error","error":"media type is not supported","repository":"appname","reference":"1590357999","goroutine":252056,"caller":"zotregistry.dev/zot/pkg/extensions/sync/service.go:481","time":"2024-12-18T10:51:21.733418182Z","message":"couldn't get upstream image manifest details"}
{"level":"error","error":"media type is not supported","repository":"appname","reference":"1590357999","goroutine":252054,"caller":"zotregistry.dev/zot/pkg/api/routes.go:2027","time":"2024-12-18T10:51:21.733518301Z","message":"failed to sync image"}
{"level":"info","repo":"appname","1590357999":"reference","err":"media type is not supported","component":"sync","goroutine":252186,"caller":"zotregistry.dev/zot/pkg/extensions/sync/on_demand.go:157","time":"2024-12-18T10:51:21.733556202Z","message":"starting routine to copy image, because of error"}
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:25330","method":"HEAD","path":"/v2/appname/manifests/1590357999","statusCode":404,"latency":"8s","bodySize":220,"headers":{"Accept":["application/json","application/vnd.docker.distribution.manifest.v2+json","application/vnd.docker.distribution.manifest.list.v2+json","application/vnd.oci.image.index.v1+json","application/vnd.oci.image.manifest.v1+json","application/vnd.docker.distribution.manifest.v1+prettyjws"],"User-Agent":["docker/25.0.6 go/go1.22.5 git-commit/b08a51f kernel/5.15.167-112.165.amzn2.x86_64 os/linux arch/amd64 UpstreamClient(Docker-Client/25.0.5 \\(linux\\))"],"X-Amzn-Trace-Id":["Root=1-6762a921-592230577623e5fb15bfff99"],"X-Forwarded-For":["<IP_ADDRESS>"],"X-Forwarded-Port":["443"],"X-Forwarded-Proto":["https"]},"goroutine":252054,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:22.148116084Z","message":"HTTP API"}
{"level":"info","repository":"appname","reference":"1590357999","goroutine":263477,"caller":"zotregistry.dev/zot/pkg/api/routes.go:2023","time":"2024-12-18T10:51:22.347902584Z","message":"trying to get updated image by syncing on demand"}
{"level":"info","goroutine":263445,"caller":"zotregistry.dev/zot/pkg/extensions/sync/service.go:562","time":"2024-12-18T10:51:22.347954106Z","message":"getting available client"}
{"level":"info","url":"674283286888.dkr.ecr.us-east-1.amazonaws.com","goroutine":263445,"caller":"zotregistry.dev/zot/pkg/extensions/sync/ecr_credential_helper.go:126","time":"2024-12-18T10:51:23.090439687Z","message":"The credentials are close to expiring"}
{"level":"info","url":"674283286888.dkr.ecr.us-east-1.amazonaws.com","goroutine":263445,"caller":"zotregistry.dev/zot/pkg/extensions/sync/ecr_credential_helper.go:135","time":"2024-12-18T10:51:23.090472688Z","message":"Refreshing the ECR credentials"}
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:47038","method":"GET","path":"/v2/","statusCode":200,"latency":"0s","bodySize":0,"headers":{"Accept":["*/*"],"Connection":["close"],"User-Agent":["kube-probe/1.30+"]},"goroutine":263526,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:25.945641465Z","message":"HTTP API"}
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:47040","method":"GET","path":"/v2/","statusCode":200,"latency":"0s","bodySize":0,"headers":{"Accept":["*/*"],"Connection":["close"],"User-Agent":["kube-probe/1.30+"]},"goroutine":263527,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:25.945652985Z","message":"HTTP API"}
{"level":"info","url":"674283286888.dkr.ecr.us-east-1.amazonaws.com","goroutine":263445,"caller":"zotregistry.dev/zot/pkg/extensions/sync/service.go:170","time":"2024-12-18T10:51:26.509986629Z","message":"Refreshing the upstream remote registry credentials"}
{"level":"info","remote":"ecrrepo","repository":"appname","reference":"1590357999","goroutine":263445,"caller":"zotregistry.dev/zot/pkg/extensions/sync/service.go:364","time":"2024-12-18T10:51:26.510065991Z","message":"syncing image"}
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:58150","method":"GET","path":"/v2/","statusCode":200,"latency":"0s","bodySize":0,"headers":{"Accept":["*/*"],"Connection":["close"],"User-Agent":["kube-probe/1.30+"]},"goroutine":252196,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:28.943823803Z","message":"HTTP API"}
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:58148","method":"GET","path":"/v2/","statusCode":200,"latency":"0s","bodySize":0,"headers":{"Accept":["*/*"],"Connection":["close"],"User-Agent":["kube-probe/1.30+"]},"goroutine":252195,"caller":"zotregistry.dev/zot/pkg/api/session.go:137","time":"2024-12-18T10:51:28.943823799Z","message":"HTTP API"}
{"level":"error","error":"media type is not supported","repository":"appname","reference":"1590357999","goroutine":263445,"caller":"zotregistry.dev/zot/pkg/extensions/sync/service.go:481","time":"2024-12-18T10:51:29.704646557Z","message":"couldn't get upstream image manifest details"}
{"level":"info","repo":"appname","1590357999":"reference","err":"media type is not supported","component":"sync","goroutine":263516,"caller":"zotregistry.dev/zot/pkg/extensions/sync/on_demand.go:157","time":"2024-12-18T10:51:29.704801321Z","message":"starting routine to copy image, because of error"}
{"level":"error","error":"media type is not supported","repository":"appname","reference":"1590357999","goroutine":263477,"caller":"zotregistry.dev/zot/pkg/api/routes.go:2027","time":"2024-12-18T10:51:29.704829701Z","message":"failed to sync image"}

This log line
{"level":"info","module":"http","component":"session","clientIP":"<IP_ADDRESS>:25330","method":"HEAD","path":"/v2/appname/manifests/1590357999","statusCode":404,"latency":"8s","bodySize":220,"headers":{"Accept":["application/json","application/vnd.docker.distribution.manifest.v2+json","application/vnd.docker.distribution.manifest.list.v2+json","application/vnd.oci.image.index.v1+json","application/vnd.oci.image.manifest.v1+json","application/vnd.docker.distribution.manifest.v1+prettyjws"]

indicates that /v2/appname/manifests/1590357999 was not in the accepted media types. However, the image manifest (as confirmed by the manifest inspect I shared earlier) shows that it is in one of the accepted media types. looks like an bug. still I didn't had a chance to review the code.

{"level":"error","error":"media type is not supported","repository":"appname","reference":"1590357999","goroutine":252056,"caller":"zotregistry.dev/zot/pkg/extensions/sync/service.go:481","time":"2024-12-18T10:51:21.733418182Z","message":"couldn't get upstream image manifest details"} this would be the relevant message.  https://github.com/project-zot/zot/blob/main/pkg/extensions/sync/service.go#L426
Question is why it fails to get the image details. It is possible it fails to get the manifest from ecr (instead of having an issue with the manifest content)? Maybe it errors here https://github.com/project-zot/zot/blob/main/pkg/extensions/sync/remote.go#L132 ?

I have verified the following:

This is not a permission issue, as Zot is able to pull other images.
The manifest is not malformed because docker pull works on ECR.
I’m not sure why retrieving the manifest fails for "mediaType": "application/vnd.oci.image.index.v1+json".

The strange part is it fails before our checks for manifest media type value.
I need to reproduce myself.

@andaaron Thanks for linking the relevant code path. I will run a few more tests tomorrow and provide an update here.
I appreciate your quick response—it’s really helpful!

Some other limitation about the way sync works with multiarch at the moment:

if periodic sync pulls the image it is usually the image index getting pulled
if on-demand sync pulls the image, the client may explicitly make the request for a specific architecture, and only that manifest for that arch would be copied over.
In both cases 1 and 2, you would end up with the same repo name and same tag after the sync. Even tough the tag points to something else.

There's a PR for replacing the libraries used for sync, but does to limited time on the part of the contributor, it has been dragging for a long time.

Hi @tamilhce,
I have tried to reproduce this issue, with a more basic configuration (as I don't have access to ECR, and also the zot configuration was not provided in the bug description).
Everything went fine. So we need to refine the steps to reproduce.
I tried using 2 zot instances.
1st zot has the config:
{
    "distSpecVersion": "1.1.0",
    "storage": {
        "rootDirectory": "/data/hdd/zot2"
    },
    "http": {
        "address": "<IP_ADDRESS>",
        "port": "5000",
        "realm": "zot"
    },
    "log": {
        "level": "debug",
        "output": "/data/hdd/zot2.log"
    },
    "extensions": {
        "search": {
            "enable": true,
            "cve": {
                "updateInterval": "2h"
            }
        }
    }
}

2nd zot has the config:
{
    "distSpecVersion": "1.1.0",
    "storage": {
        "rootDirectory": "/data/hdd/zot3"
    },
    "http": {
        "address": "<IP_ADDRESS>",
        "port": "5001",
        "realm": "zot"
    },
    "log": {
        "level": "debug",
        "output": "/data/hdd/zot3.log"
    },
	"extensions": {
		"sync": {
			"enable": true,
			"registries": [
				{
					"urls": [
						"http://localhost:5000"
					],
					"onDemand": true,
					"maxRetries": 6,
                    "tlsVerify": false,
					"retryDelay": "5m"
				}
			]
		}
	}
}

I uploaded images to the 1st zot using:
skopeo --insecure-policy copy --dest-tls-verify=false --format=oci --multi-arch=all docker://debian:bookworm docker://<IP_ADDRESS>:5000/debian:bookworm
I checked the repo/image/tag is present on zot running on port 5000:
{
    "manifests": [
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "amd64",
                "org.opencontainers.image.base.name": "scratch",
                "org.opencontainers.image.created": "2024-12-23T00:00:00Z",
                "org.opencontainers.image.revision": "e3f216064528d0ad005524fbafbddfd3115be946",
                "org.opencontainers.image.source": "https://github.com/debuerreotype/docker-debian-artifacts.git",
                "org.opencontainers.image.url": "https://hub.docker.com/_/debian",
                "org.opencontainers.image.version": "bookworm"
            },
            "digest": "sha256:cd73f5c112f19fac6d67b49d8982104fcf9c14b4ad69c2658fab8702f61b4430",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "amd64",
                "os": "linux"
            },
            "size": 1021
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "amd64",
                "vnd.docker.reference.digest": "sha256:cd73f5c112f19fac6d67b49d8982104fcf9c14b4ad69c2658fab8702f61b4430",
                "vnd.docker.reference.type": "attestation-manifest"
            },
            "digest": "sha256:834412f119e26e44d9de46da5bf43fb95e5f3570bd568d3d429ce384f8f9d653",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "unknown",
                "os": "unknown"
            },
            "size": 562
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "arm32v5",
                "org.opencontainers.image.base.name": "scratch",
                "org.opencontainers.image.created": "2024-12-23T00:00:00Z",
                "org.opencontainers.image.revision": "96ae5cf33b922b1ebe0b394a0488bd8f41591f2c",
                "org.opencontainers.image.source": "https://github.com/debuerreotype/docker-debian-artifacts.git",
                "org.opencontainers.image.url": "https://hub.docker.com/_/debian",
                "org.opencontainers.image.version": "bookworm"
            },
            "digest": "sha256:ee7a87661b1d6ca62839cd582b04738ea6020137b2ce56170f4f74de940caff6",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "arm",
                "os": "linux",
                "variant": "v5"
            },
            "size": 1041
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "arm32v5",
                "vnd.docker.reference.digest": "sha256:ee7a87661b1d6ca62839cd582b04738ea6020137b2ce56170f4f74de940caff6",
                "vnd.docker.reference.type": "attestation-manifest"
            },
            "digest": "sha256:af80ff0dde8185b4091a20c02feabdf4d2eeef261a466be65779ecf79bd9f0a2",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "unknown",
                "os": "unknown"
            },
            "size": 562
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "arm32v7",
                "org.opencontainers.image.base.name": "scratch",
                "org.opencontainers.image.created": "2024-12-23T00:00:00Z",
                "org.opencontainers.image.revision": "997dca5116e3abb92ac42a8ce895c96f53a321a4",
                "org.opencontainers.image.source": "https://github.com/debuerreotype/docker-debian-artifacts.git",
                "org.opencontainers.image.url": "https://hub.docker.com/_/debian",
                "org.opencontainers.image.version": "bookworm"
            },
            "digest": "sha256:efc40768fcd228826b95493f05f718304349762b8ea5344ddb45032334f421b7",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "arm",
                "os": "linux",
                "variant": "v7"
            },
            "size": 1041
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "arm32v7",
                "vnd.docker.reference.digest": "sha256:efc40768fcd228826b95493f05f718304349762b8ea5344ddb45032334f421b7",
                "vnd.docker.reference.type": "attestation-manifest"
            },
            "digest": "sha256:785674b6ee4ea1eab93cb47872e8ceaebf1cc6f379cdb322020def71583dfc54",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "unknown",
                "os": "unknown"
            },
            "size": 562
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "arm64v8",
                "org.opencontainers.image.base.name": "scratch",
                "org.opencontainers.image.created": "2024-12-23T00:00:00Z",
                "org.opencontainers.image.revision": "a9c3518f26dd0c08a2625127d5baebeae3eba8e8",
                "org.opencontainers.image.source": "https://github.com/debuerreotype/docker-debian-artifacts.git",
                "org.opencontainers.image.url": "https://hub.docker.com/_/debian",
                "org.opencontainers.image.version": "bookworm"
            },
            "digest": "sha256:5d99d20795032654a4d76a464cbd9733a5f0fc3911b6f2a36c1d51211b104afe",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "arm64",
                "os": "linux",
                "variant": "v8"
            },
            "size": 1041
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "arm64v8",
                "vnd.docker.reference.digest": "sha256:5d99d20795032654a4d76a464cbd9733a5f0fc3911b6f2a36c1d51211b104afe",
                "vnd.docker.reference.type": "attestation-manifest"
            },
            "digest": "sha256:e6dafd27815785aa7d0dc7651b1d19b45155043d42bcc4ff68ddb9fd9ebc8375",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "unknown",
                "os": "unknown"
            },
            "size": 562
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "i386",
                "org.opencontainers.image.base.name": "scratch",
                "org.opencontainers.image.created": "2024-12-23T00:00:00Z",
                "org.opencontainers.image.revision": "d378bbefca06de15e86ce242c1882991cb205bc4",
                "org.opencontainers.image.source": "https://github.com/debuerreotype/docker-debian-artifacts.git",
                "org.opencontainers.image.url": "https://hub.docker.com/_/debian",
                "org.opencontainers.image.version": "bookworm"
            },
            "digest": "sha256:8ec223efa3a7312781a078ed3557fd5a780d06c6ef047a34f72391f4462c514e",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "386",
                "os": "linux"
            },
            "size": 1017
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "i386",
                "vnd.docker.reference.digest": "sha256:8ec223efa3a7312781a078ed3557fd5a780d06c6ef047a34f72391f4462c514e",
                "vnd.docker.reference.type": "attestation-manifest"
            },
            "digest": "sha256:37f5c2ec14ef40dd026b37e3d059560b2d10c9ab5f001e40bd6130e3d08b139d",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "unknown",
                "os": "unknown"
            },
            "size": 562
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "mips64le",
                "org.opencontainers.image.base.name": "scratch",
                "org.opencontainers.image.created": "2024-12-23T00:00:00Z",
                "org.opencontainers.image.revision": "f143b23838b95457b64fa753ce2dec022ac0e4d0",
                "org.opencontainers.image.source": "https://github.com/debuerreotype/docker-debian-artifacts.git",
                "org.opencontainers.image.url": "https://hub.docker.com/_/debian",
                "org.opencontainers.image.version": "bookworm"
            },
            "digest": "sha256:b5d9524f3fedef64ec6ea84c2e1b3f2ba93b65bce3111625d8990549dc90fd2b",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "mips64le",
                "os": "linux"
            },
            "size": 1029
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "ppc64le",
                "org.opencontainers.image.base.name": "scratch",
                "org.opencontainers.image.created": "2024-12-23T00:00:00Z",
                "org.opencontainers.image.revision": "8ae00f32f3662f944b54eef8f8032bc2eca984ac",
                "org.opencontainers.image.source": "https://github.com/debuerreotype/docker-debian-artifacts.git",
                "org.opencontainers.image.url": "https://hub.docker.com/_/debian",
                "org.opencontainers.image.version": "bookworm"
            },
            "digest": "sha256:0ba38f2a08bbe9100915562c4ce576613ae064c60ccc349483a80f29215f139c",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "ppc64le",
                "os": "linux"
            },
            "size": 1029
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "ppc64le",
                "vnd.docker.reference.digest": "sha256:0ba38f2a08bbe9100915562c4ce576613ae064c60ccc349483a80f29215f139c",
                "vnd.docker.reference.type": "attestation-manifest"
            },
            "digest": "sha256:ab38f9b910a87bcec1d2a528b1d1bef1bd7895066ed12496f81c2cd3324475ec",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "unknown",
                "os": "unknown"
            },
            "size": 562
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "s390x",
                "org.opencontainers.image.base.name": "scratch",
                "org.opencontainers.image.created": "2024-12-23T00:00:00Z",
                "org.opencontainers.image.revision": "f8db2aed5e329e25f933ebfef0505f9665e2f2d4",
                "org.opencontainers.image.source": "https://github.com/debuerreotype/docker-debian-artifacts.git",
                "org.opencontainers.image.url": "https://hub.docker.com/_/debian",
                "org.opencontainers.image.version": "bookworm"
            },
            "digest": "sha256:355db701f3b391739cb2e6b57b3943032c5e4b89062d42e96cee089d5c3f16f7",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "s390x",
                "os": "linux"
            },
            "size": 1021
        },
        {
            "annotations": {
                "com.docker.official-images.bashbrew.arch": "s390x",
                "vnd.docker.reference.digest": "sha256:355db701f3b391739cb2e6b57b3943032c5e4b89062d42e96cee089d5c3f16f7",
                "vnd.docker.reference.type": "attestation-manifest"
            },
            "digest": "sha256:1d6a87f65d816d20c735234d8bc7393be525d154a74e3fa139fc6770b00ded63",
            "mediaType": "application/vnd.oci.image.manifest.v1+json",
            "platform": {
                "architecture": "unknown",
                "os": "unknown"
            },
            "size": 562
        }
    ],
    "mediaType": "application/vnd.oci.image.index.v1+json",
    "schemaVersion": 2
}

After that I pulled from the 2nd zot.
docker pull <IP_ADDRESS>:5001/debian:bookworm
Which went through fine, and I also checked the tag on the 2nd zot, and it points to the same content as on the 1st zot.

I also tried using a build from your branch tamilhce/ecr-cred-helper for the 2nd zot. The sync was successful.


Add option to disable in-memory NSCache

This is a workaround for #538. NSCache truly is the problem and by disabling it, memory spikes are completely eliminated. Some may argue that it's OK for NSCache to balloon since that device memory is "available" to be used by a cache, but as your foreground app consumes memory, it will cause apps in the background to receive warnings and to be exited. I'd rather my app be a good citizen by not ballooning in the first place.
FWIW, setting the max cache cost to zero also doesn't prevent those huge spikes; disabling NSCache is the only way to achieve the memory behavior that my app needs.

@mallorypaine thanks for jumping over to this project and for this PR :+1:  This has been plaguing this project for a long time now.

I implemented this in my local branch just to test and it didn't fix the VM: CG raster data memory ballooning. Should be as simple as setting that property to NO on the SDImageCache singleton and then just using -sd_setImageWithURL: method, right?

@KiranPanesar seems to be working for me.  @mallorypaine do you know what this means in terms of performance in FPS on a standard scrollview?  About to do some profiling, but just wondering if you knew off hand?

@rromanchuk it will have zero impact on the scrollview's scrolling performance in terms of frame rate. the only impact this change will have is that images will take longer to load (and appear in your scrollview) since they aren't being stored in the cache.

@mallorypaine makes sense, thx

I've implemented this change and have verified that the images are never loaded from memory, but I'm still getting the spikes (sometimes 100MB+) when some images are first loaded into the imageviews in my tableview.

@mallorypaine just anecdotally, turning NSCache off fixes the memory problem for me, but there is an obvious new animation stutter when scrolling (fullscreen paging), but i'm sure it's just a developer error that was conveniently being hidden under the surface which is now being exacerbated now that NSCache is turned off

Guys, really appreciate the work here. We have replaced this with a mergeable solution https://github.com/rs/SDWebImage/pull/1217


Fixed #26009 -- Fixed contenttypes_tests isolation.

https://code.djangoproject.com/ticket/26009

LGTM


[PWN-5957] Create coordinators, where it's needed

Link jira to issue
https://p2pvalidator.atlassian.net/browse/PWN-5957
Description of the changes

Dupplicated https://github.com/p2p-org/p2p-wallet-ios/pull/823
Will merge with 823


Fix english ord2card

Fix english ord2card to parse correctly ordinal numbers with units like fifth, eighth and ninth.

@rtxm Fifth, eighth, ninth are supported but when you have some highest then 10th like "twentieth-eighth" this doesn't work, I will be add a unit test to reproduce it :)


Moves CodeClimate links to a publicly accessible open-source account

The secret used by GitHub Actions to send code coverage has also been updated to point to the new location.

Hmm... looks like this is actually caused by the checks not running on the changelog update commit... as can be seen in the documentation for the action that's being used to create the commit.

The resulting commit will not trigger another GitHub Actions Workflow run.

Once #287 is merged into this branch, then all of the checks should pass as expected.

@mscottford does this fix #253?


CMake Deprecation Warning at CMakeLists.txt:1 (CMAKE_MINIMUM_REQUIRED)

I get a deprecation warning with cmake 3.22.1 (Ubuntu 22.04)
user@host:~/github/conan-io/hello/build$ cmake ..
CMake Deprecation Warning at CMakeLists.txt:1 (CMAKE_MINIMUM_REQUIRED):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.

-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - 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/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/github/conan-io/hello/build

Hi @razr
Please provide full details to reproduce this, including the CMakeLists, conanfiles and commands you are using to get this message.

this line shall be updated to get rid of it to something like 2.8.12
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

Sure, but where do I find the line CMAKE_MINIMUM_REQUIRED(VERSION 2.8)?
I cannot find it in the Conan codebase (only in some old tests, but that shouldn't affect you).

Ooopsss, sorry, this is the "Hello" project. My bad, I thought it was a report in the Conan client repo.
I will update this.

See comment in https://github.com/conan-io/hello/issues/4#issuecomment-2210948179, this repo is not maintained anymore (not linked in the docs anymore)


Shallow clone

--depth create a shallow clone with a history truncated to a limited number of revisions.

Thanks!


Name missing in Shipping and Billing Object => Missing Support for 3D-Secure 2.0

According to the implementation document for 3D-Secure 2.0
(https://mcusercontent.com/c117c88a1044269f57b201fbe/files/83288c60-83ad-4df3-816d-9620625099b6/3DS2_integration_guide_1_.pdf)
pages 18 to 21 the Shipping and the Billing Object must contain a FirstName and a LastName field.
The SDK currently does not support that.
This causes the Mangopay API to reject calls relating to taking credit card payments.
Therefore the SDK will stop functioning on 1 April 2021, unless this is fixed.
Please bear in mind that developers integrating the SDK will also need time to implement the changes once this is working.

Hi @FranzWegener
We'll look into it :)

Thank you :)

@dduwoyemgp Any news here?
I want to remind you that I will also have to do some work implementing it afterwards and this may not be the last issue with 3d-secure 2.0.
If people using this SDK don't finish their implementation by 31.3.2021 they will no longer be able to make credit card payments using Mangopay.

Hello @FranzWegener
Sorry for the delay of my reply but we are hardly working on a new release to integrate 3DS V2. It normally will be deployed in a few days.

@FranzWegener , last release added FirstName and LastName properties.

@laurent-bientz I've tested this against Mangopay Sandbox and it works :) Thank you


Make Node.print_orphan_nodes() static

There's no reason for print_orphan_nodes() to NOT be static. In fact, internally, the method just ends up calling the static function, anyhow. I don't see why not making the change now that native static functions are supported.
This is PR not compatibility-breaking, but will generate a somewhat needless static warning:
W 0:00:01:0721   The function 'print_orphan_nodes()' is a static function but was called from an instance. Instead, it should be directly called from the type: '... print_orphan_nodes()'.
  <C++ Error>    STATIC_CALLED_ON_INSTANCE
  <Source>       ...

Should there even be a static warning when the function is called from a script that extends the class, or one of the classes it inherits?

I expect the warning to be raised when you do:
some_node.print_orphan_nodes()

and not when you do:
print_orphan_nodes()

If that's the case, it's as intended.

Checked again. The warning occurs for both cases. This may be the first time a class that is commonly used when extending Scripts contains static methods (you typically do not extend FileAccess, Image, etc). So the solution for "fixing" this warning may be beyond the scope of this PR.

So the solution for "fixing" this warning may be beyond the scope of this PR.

That's correct, but then it's a prerequisite for merging this one, otherwise we're introducing a visible bug on normal usage of this API, for no gain.

I expect the warning to be raised when you do:
some_node.print_orphan_nodes()

and not when you do:
print_orphan_nodes()

If that's the case, it's as intended.

I'm not positive on the ideal behaviour here. When I added the warning I wanted to avoid the situation where someone does the following:
class InnerClass:
        extends ImageTexture
	func create_instance():
		var img = Image.new()
		img.create(4, 4, false, Image.FORMAT_RGBA8)
		var imgtex = ImageTexture.new()
		create_from_image(img)

In this case we still need to warn that the user is calling a static function on an instance. To remove the warning in this case the user would have to make the call ImageTexture.create_from_image(img) or make the calling function itself a static function. Which is inconvenient, but more correct.

I just want to express my mistake at hiding the script path in the PR's description and confirm that indeed, the warning is as follows:
W "0:00:05:0481   The function 'print_orphan_nodes()' is a static function but was called from an instance. Instead, it should be directly called from the type: 'res://inheritance/cool.gd.print_orphan_nodes()'.
  <C++ Error>    STATIC_CALLED_ON_INSTANCE
  <Source>       cool.gd:38"

Let's merge this and fix the warning in another PR.

Thanks!


rebuild failed due to outdated native module

please help me!

node-gyp output

pi@raspberrypi:~/MagicMirror/modules/MMM-DHT-Sensor $ ./node_modules/.bin/electron-rebuild

✖ Rebuild Failed

An unhandled error occurred inside electron-rebuild
gyp info it worked if it ends with ok
gyp info using<EMAIL_ADDRESS>gyp info using<EMAIL_ADDRESS>| linux | arm
gyp info find Python using Python version 3.7.3 found at "/usr/bin/python3"
gyp http GET https://electronjs.org/headers/v6.1.9/node-v6.1.9-headers.tar.gz
gyp http 200 https://electronjs.org/headers/v6.1.9/node-v6.1.9-headers.tar.gz
gyp http GET https://electronjs.org/headers/v6.1.9/SHASUMS256.txt
gyp http 200 https://electronjs.org/headers/v6.1.9/SHASUMS256.txt
gyp info spawn /usr/bin/python3
gyp info spawn args [ '/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/pi/MagicMirror/node_modules/rpi-dht-sensor/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/pi/.electron-gyp/6.1.9/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/pi/.electron-gyp/6.1.9',
gyp info spawn args   '-Dnode_gyp_dir=/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/home/pi/.electron-gyp/6.1.9/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/pi/MagicMirror/node_modules/rpi-dht-sensor',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: ingresso nella directory "/home/pi/MagicMirror/node_modules/rpi-dht-sensor/build"
  CC(target) Release/obj.target/node_dht_sensor/src/bcm2835.o
  CXX(target) Release/obj.target/node_dht_sensor/src/node-dht-sensor.o
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:326:49: warning: ‘MicrotasksCompletedCallback’ is deprecated [-Wdeprecated-declarations]
   declarator __attribute__((deprecated(message)))
                                                 ^
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:8205:3: note: in expansion of macro ‘V8_DEPRECATE_SOON’
   V8_DEPRECATE_SOON("Use *WithData version.",
   ^~~~~~~~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:326:49: warning: ‘MicrotasksCompletedCallback’ is deprecated [-Wdeprecated-declarations]
   declarator __attribute__((deprecated(message)))
                                                 ^
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:8214:3: note: in expansion of macro ‘V8_DEPRECATE_SOON’
   V8_DEPRECATE_SOON("Use *WithData version.",
   ^~~~~~~~~~~~~~~~~
In file included from ../src/node-dht-sensor.cpp:207:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast(AsyncExecuteComplete)
                                                              ^
../src/node-dht-sensor.cpp: In function ‘void Read(const Nan::FunctionCallbackInfo&)’:
../src/node-dht-sensor.cpp:228:83: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("humidity").ToLocalChecked(), Nan::New(humidity));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:229:89: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("temperature").ToLocalChecked(), Nan::New(temperature));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:230:86: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("isValid").ToLocalChecked(), Nan::New(result == 0));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:231:82: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("errors").ToLocalChecked(), Nan::New(2 - retry));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp: In function ‘void ReadSpec(const Nan::FunctionCallbackInfo&)’:
../src/node-dht-sensor.cpp:242:43: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     int sensorType = args[0]->Uint32Value();
                                           ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:2544:47: note: declared here
   V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
                                               ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:256:37: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     int gpio = args[1]->Uint32Value();
                                     ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:2544:47: note: declared here
   V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
                                               ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:266:83: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("humidity").ToLocalChecked(), Nan::New(humidity));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:267:89: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("temperature").ToLocalChecked(), Nan::New(temperature));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:268:86: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("isValid").ToLocalChecked(), Nan::New(result == 0));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:269:82: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("errors").ToLocalChecked(), Nan::New(2 - retry));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp: In function ‘void Initialize(const Nan::FunctionCallbackInfo&)’:
../src/node-dht-sensor.cpp:286:43: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     int sensorType = args[0]->Uint32Value();
                                           ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:2544:47: note: declared here
   V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
                                               ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:294:37: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     GPIOPort = args[1]->Uint32Value();
                                     ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:2544:47: note: declared here
   V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
                                               ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp: At global scope:
../src/node-dht-sensor.cpp:299:11: error: variable or field ‘Init’ declared void
 void Init(Handle exports) {
           ^~~~~~
../src/node-dht-sensor.cpp:299:11: error: ‘Handle’ was not declared in this scope
../src/node-dht-sensor.cpp:299:11: note: suggested alternative: ‘rand_r’
 void Init(Handle exports) {
           ^~~~~~
           rand_r
../src/node-dht-sensor.cpp:299:24: error: expected primary-expression before ‘>’ token
 void Init(Handle exports) {
                        ^
../src/node-dht-sensor.cpp:299:26: error: ‘exports’ was not declared in this scope
 void Init(Handle exports) {
                          ^~~~~~~
In file included from ../src/node-dht-sensor.cpp:1:
../src/node-dht-sensor.cpp:307:30: error: ‘Init’ was not declared in this scope
 NODE_MODULE(node_dht_sensor, Init);
                              ^~~~
/home/pi/.electron-gyp/6.1.9/include/node/node.h:572:36: note: in definition of macro ‘NODE_MODULE_X’
       (node::addon_register_func) (regfunc),                          \
                                    ^~~~~~~
../src/node-dht-sensor.cpp:307:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(node_dht_sensor, Init);
 ^~~~~~~~~~~
../src/node-dht-sensor.cpp:307:30: note: suggested alternative:
 NODE_MODULE(node_dht_sensor, Init);
                              ^~~~
/home/pi/.electron-gyp/6.1.9/include/node/node.h:572:36: note: in definition of macro ‘NODE_MODULE_X’
       (node::addon_register_func) (regfunc),                          \
                                    ^~~~~~~
../src/node-dht-sensor.cpp:307:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(node_dht_sensor, Init);
 ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/node.h:221:18: note:   ‘node::Init’
 NODE_EXTERN void Init(int* argc,
                  ^~~~
In file included from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h: In instantiation of ‘void v8::PersistentBase::SetWeak(P*, typename v8::WeakCallbackInfo::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo::Callback = void (*)(const v8::WeakCallbackInfo&)]’:
/home/pi/.electron-gyp/6.1.9/include/node/node_object_wrap.h:84:78:   required from here
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:9810:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo&)’} [-Wcast-function-type]
                reinterpret_cast(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8.h: In instantiation of ‘void v8::PersistentBase::SetWeak(P*, typename v8::WeakCallbackInfo::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo::Callback = void (*)(const v8::WeakCallbackInfo&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:9810:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo&)’} [-Wcast-function-type]
make: *** [node_dht_sensor.target.mk:109: Release/obj.target/node_dht_sensor/src/node-dht-sensor.o] Error 1
make: uscita dalla directory "/home/pi/MagicMirror/node_modules/rpi-dht-sensor/build"
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:198:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System Linux 4.19.97-v7l+
gyp ERR! command "/usr/bin/node" "/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/.bin/node-gyp" "rebuild" "--target=6.1.9" "--arch=arm" "--dist-url=https://electronjs.org/headers" "--build-from-source"
gyp ERR! cwd /home/pi/MagicMirror/node_modules/rpi-dht-sensor
gyp ERR! node -v v10.19.0
gyp ERR! node-gyp -v v6.1.0
gyp ERR! not ok

Failed with exit code: 1

Error: gyp info it worked if it ends with ok
gyp info using<EMAIL_ADDRESS>gyp info using<EMAIL_ADDRESS>| linux | arm
gyp info find Python using Python version 3.7.3 found at "/usr/bin/python3"
gyp http GET https://electronjs.org/headers/v6.1.9/node-v6.1.9-headers.tar.gz
gyp http 200 https://electronjs.org/headers/v6.1.9/node-v6.1.9-headers.tar.gz
gyp http GET https://electronjs.org/headers/v6.1.9/SHASUMS256.txt
gyp http 200 https://electronjs.org/headers/v6.1.9/SHASUMS256.txt
gyp info spawn /usr/bin/python3
gyp info spawn args [ '/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/pi/MagicMirror/node_modules/rpi-dht-sensor/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/pi/.electron-gyp/6.1.9/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/pi/.electron-gyp/6.1.9',
gyp info spawn args   '-Dnode_gyp_dir=/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/home/pi/.electron-gyp/6.1.9/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/pi/MagicMirror/node_modules/rpi-dht-sensor',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: ingresso nella directory "/home/pi/MagicMirror/node_modules/rpi-dht-sensor/build"
  CC(target) Release/obj.target/node_dht_sensor/src/bcm2835.o
  CXX(target) Release/obj.target/node_dht_sensor/src/node-dht-sensor.o
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:326:49: warning: ‘MicrotasksCompletedCallback’ is deprecated [-Wdeprecated-declarations]
   declarator __attribute__((deprecated(message)))
                                                 ^
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:8205:3: note: in expansion of macro ‘V8_DEPRECATE_SOON’
   V8_DEPRECATE_SOON("Use *WithData version.",
   ^~~~~~~~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:326:49: warning: ‘MicrotasksCompletedCallback’ is deprecated [-Wdeprecated-declarations]
   declarator __attribute__((deprecated(message)))
                                                 ^
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:8214:3: note: in expansion of macro ‘V8_DEPRECATE_SOON’
   V8_DEPRECATE_SOON("Use *WithData version.",
   ^~~~~~~~~~~~~~~~~
In file included from ../src/node-dht-sensor.cpp:207:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2298:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast(AsyncExecuteComplete)
                                                              ^
../src/node-dht-sensor.cpp: In function ‘void Read(const Nan::FunctionCallbackInfo&)’:
../src/node-dht-sensor.cpp:228:83: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("humidity").ToLocalChecked(), Nan::New(humidity));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:229:89: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("temperature").ToLocalChecked(), Nan::New(temperature));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:230:86: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("isValid").ToLocalChecked(), Nan::New(result == 0));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:231:82: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("errors").ToLocalChecked(), Nan::New(2 - retry));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp: In function ‘void ReadSpec(const Nan::FunctionCallbackInfo&)’:
../src/node-dht-sensor.cpp:242:43: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     int sensorType = args[0]->Uint32Value();
                                           ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:2544:47: note: declared here
   V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
                                               ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:256:37: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     int gpio = args[1]->Uint32Value();
                                     ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:2544:47: note: declared here
   V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
                                               ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:266:83: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("humidity").ToLocalChecked(), Nan::New(humidity));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:267:89: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("temperature").ToLocalChecked(), Nan::New(temperature));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:268:86: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("isValid").ToLocalChecked(), Nan::New(result == 0));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:269:82: warning: ‘bool v8::Object::Set(v8::Local, v8::Local)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     readout->Set(Nan::New("errors").ToLocalChecked(), Nan::New(2 - retry));
                                                                                ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:3331:22: note: declared here
                 bool Set(Local key, Local value));
                      ^~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp: In function ‘void Initialize(const Nan::FunctionCallbackInfo&)’:
../src/node-dht-sensor.cpp:286:43: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     int sensorType = args[0]->Uint32Value();
                                           ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:2544:47: note: declared here
   V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
                                               ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp:294:37: warning: ‘uint32_t v8::Value::Uint32Value() const’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     GPIOPort = args[1]->Uint32Value();
                                     ^
In file included from /home/pi/.electron-gyp/6.1.9/include/node/v8-internal.h:14,
                 from /home/pi/.electron-gyp/6.1.9/include/node/v8.h:25,
                 from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:2544:47: note: declared here
   V8_DEPRECATED("Use maybe version", uint32_t Uint32Value() const);
                                               ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8config.h:311:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/node-dht-sensor.cpp: At global scope:
../src/node-dht-sensor.cpp:299:11: error: variable or field ‘Init’ declared void
 void Init(Handle exports) {
           ^~~~~~
../src/node-dht-sensor.cpp:299:11: error: ‘Handle’ was not declared in this scope
../src/node-dht-sensor.cpp:299:11: note: suggested alternative: ‘rand_r’
 void Init(Handle exports) {
           ^~~~~~
           rand_r
../src/node-dht-sensor.cpp:299:24: error: expected primary-expression before ‘>’ token
 void Init(Handle exports) {
                        ^
../src/node-dht-sensor.cpp:299:26: error: ‘exports’ was not declared in this scope
 void Init(Handle exports) {
                          ^~~~~~~
In file included from ../src/node-dht-sensor.cpp:1:
../src/node-dht-sensor.cpp:307:30: error: ‘Init’ was not declared in this scope
 NODE_MODULE(node_dht_sensor, Init);
                              ^~~~
/home/pi/.electron-gyp/6.1.9/include/node/node.h:572:36: note: in definition of macro ‘NODE_MODULE_X’
       (node::addon_register_func) (regfunc),                          \
                                    ^~~~~~~
../src/node-dht-sensor.cpp:307:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(node_dht_sensor, Init);
 ^~~~~~~~~~~
../src/node-dht-sensor.cpp:307:30: note: suggested alternative:
 NODE_MODULE(node_dht_sensor, Init);
                              ^~~~
/home/pi/.electron-gyp/6.1.9/include/node/node.h:572:36: note: in definition of macro ‘NODE_MODULE_X’
       (node::addon_register_func) (regfunc),                          \
                                    ^~~~~~~
../src/node-dht-sensor.cpp:307:1: note: in expansion of macro ‘NODE_MODULE’
 NODE_MODULE(node_dht_sensor, Init);
 ^~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/node.h:221:18: note:   ‘node::Init’
 NODE_EXTERN void Init(int* argc,
                  ^~~~
In file included from /home/pi/.electron-gyp/6.1.9/include/node/node.h:63,
                 from ../src/node-dht-sensor.cpp:1:
/home/pi/.electron-gyp/6.1.9/include/node/v8.h: In instantiation of ‘void v8::PersistentBase::SetWeak(P*, typename v8::WeakCallbackInfo::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo::Callback = void (*)(const v8::WeakCallbackInfo&)]’:
/home/pi/.electron-gyp/6.1.9/include/node/node_object_wrap.h:84:78:   required from here
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:9810:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo&)’} [-Wcast-function-type]
                reinterpret_cast(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pi/.electron-gyp/6.1.9/include/node/v8.h: In instantiation of ‘void v8::PersistentBase::SetWeak(P*, typename v8::WeakCallbackInfo::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo::Callback = void (*)(const v8::WeakCallbackInfo&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/pi/.electron-gyp/6.1.9/include/node/v8.h:9810:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo&)’} [-Wcast-function-type]
make: *** [node_dht_sensor.target.mk:109: Release/obj.target/node_dht_sensor/src/node-dht-sensor.o] Error 1
make: uscita dalla directory "/home/pi/MagicMirror/node_modules/rpi-dht-sensor/build"
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack     at ChildProcess.emit (events.js:198:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System Linux 4.19.97-v7l+
gyp ERR! command "/usr/bin/node" "/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/.bin/node-gyp" "rebuild" "--target=6.1.9" "--arch=arm" "--dist-url=https://electronjs.org/headers" "--build-from-source"
gyp ERR! cwd /home/pi/MagicMirror/node_modules/rpi-dht-sensor
gyp ERR! node -v v10.19.0
gyp ERR! node-gyp -v v6.1.0
gyp ERR! not ok

Failed with exit code: 1
    at SafeSubscriber._error (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/spawn-rx/lib/src/index.js:267:84)
    at SafeSubscriber.__tryOrUnsub (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/rxjs/internal/Subscriber.js:205:16)
    at SafeSubscriber.error (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/rxjs/internal/Subscriber.js:156:26)
    at Subscriber._error (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/rxjs/internal/Subscriber.js:92:26)
    at Subscriber.error (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/rxjs/internal/Subscriber.js:72:18)
    at MapSubscriber.Subscriber._error (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/rxjs/internal/Subscriber.js:92:26)
    at MapSubscriber.Subscriber.error (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/rxjs/internal/Subscriber.js:72:18)
    at SafeSubscriber._next (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/spawn-rx/lib/src/index.js:242:65)
    at SafeSubscriber.__tryOrUnsub (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/rxjs/internal/Subscriber.js:205:16)
    at SafeSubscriber.next (/home/pi/MagicMirror/modules/MMM-DHT-Sensor/node_modules/rxjs/internal/Subscriber.js:143:22)

This isn't a bug in electron-rebuild. Based on this:
../src/node-dht-sensor.cpp: At global scope:
../src/node-dht-sensor.cpp:299:11: error: variable or field ‘Init’ declared void
 void Init(Handle exports) {
           ^~~~~~
../src/node-dht-sensor.cpp:299:11: error: ‘Handle’ was not declared in this scope
../src/node-dht-sensor.cpp:299:11: note: suggested alternative: ‘rand_r’
 void Init(Handle exports) {
           ^~~~~~
           rand_r
../src/node-dht-sensor.cpp:299:24: error: expected primary-expression before ‘>’ token
 void Init(Handle exports) {
                        ^
../src/node-dht-sensor.cpp:299:26: error: ‘exports’ was not declared in this scope
 void Init(Handle exports) {
                          ^~~~~~~
In file included from ../src/node-dht-sensor.cpp:1:
../src/node-dht-sensor.cpp:307:30: error: ‘Init’ was not declared in this scope
 NODE_MODULE(node_dht_sensor, Init);
                              ^~~~

the native module you're using is not compatible with Node 12. See this blog post for details.
Unfortunately, due to the limited amount of time of the maintainers, we cannot help further debug your app at this time. Instead, you should consider using one of the community forums, as there are more people there available to answer questions.


Adding Multiple Apis In Jenkins

Hi Team,
We have hosted Hygieia on two different linux servers in our company network.
We have one Jenkins master, and we are using hygieia-jenkins plugin to get the data on Jenkins widget.
In the Jenkins master settings, api url for server 1 was given. Is it possible to give api links for both server1 and server 2 so that plugin can push the jenkins data to both the servers?
Please help

@kavitha0624 We are planning to have a hygieia publisher endpoint at the job level in jenkins in addition to the endpoint in the global settings.

@satishc1 - So, right now in Global settings, we can only specify one api right?

@kavitha0624 Yes. right now in Global settings, we can only specify one api

@satishc1  Hi,
I am too having the same issue. I want to send data from multiple(two) job to two different servers based on the job.
Is the development in progress to accommodate the change? When can we expect the roll out. Please update.

Hi Team,
Can any one please look into my issue 1439. I am waiting on this.


Pooling bugfix

This PR deletes a code fragment that causes memory corruption due to a buffer overrun.

Can one of the admins verify this patch?

BTW, it looks like your git is not setup correctly. Could you do git config --global user.email "xxx" && git config --global user.name "xxx", with the email and user name match up with your github account? Otherwise we can't tell you are the owner of those commits.

They are set, it's just that my github account is tied to my personal email instead of the amd.com email.


HTTP proxy

Hi! Thank you for great work!
Is it possible to use HTTP proxy to make requests?
I tied adding options.agent = new HttpProxyAgent('my_proxy") to fetch - but always getting failed, reason: connect ECONNREFUSED (though the proxy works fine).
Maybe you have some suggestions how to do it ?

There is nothing tweaked from original node-fetch client, if you getting the issue by setting agent, it seems like your proxy or settings has a problem. Thank you for creating an issue but I hope you to ask only Clubhouse-related ones.

How to apply proxy settings in node-fetch is just what you did.


Implement a tank feature system

Maybe this goes too far outside the intentions of BuildCraft (which I'd kinda like to stick to) but my original inspiration for extending the tank from BuildCraft was to create an "autarchic tank" which would auto pull liquids from nearby machines.
More useful than specific speciality tanks would be the ability to add feature modules to the tanks that would add things like the autarchic behavior.
The first step however, is to implement an events system for tanks, and an interface for the modules. That is the purpose of this enhancement.
I welcome feedback and discussion.

Do you want this as another mod, or implemented into the base Iron Tanks mod?

Would probably have to be done as part of IronTanks; can't imagine trying to do it as another mod since this mod doesn't have an API.

This isn't really on the table anymore.


[Feature Request] Allow a different image url for dark mode

Problem Statement
Currently, there is no way to supply a different image for the dark mode. We can use a transparent image but the text becomes an issue.
Light mode

Dark mode

Proposed solution
Use the {theme} parameter in the image path and re-load the image automatically when the appearance changes.
Alternatives or Workarounds
We use a transparent background image with a text color of #777

@el - great suggestion! I added this to our roadmap to investigate how we can implement this

Hey guys, it's been a few years. Just adding in that I would love this feature to be added in. Honestly, all I need is some sort of variable that tells me if the user is using Light theme or Dark theme in Teams and I can take care of the rest. This would open up a ton of possibilities for our team.

Hi @jonmill ! Just wanted to express that we need this feature as well. Adaptive cards are great, but when you are done design it and you switch to dark mode, it suddenly looks bad. Please help out! :-)


ENH: 4 digit year ID, first generator commit

Opened to resolve #28 , #29 , #30 . Will allow users to choose to identify meteorology files by all 4 digits of a year, or just two, as well as a choice as to outputting 2 or 4 digit years to trajectory file names.  4 digit years will allow correct determination of trajectory century during trajectory loading process.
In progress, this is first pass at trajectory generation part, more commits to follow

Commit 2: determination of trajectory century during trajectory loading process.  DatetimeIndex now constructed directly from data rather than making range with frequency of 1 hr from initial time, so that assumption is now gone (from trajectory loading, at least)


[LIB-277] As a user I can use custom webhook / codebox response in iOS library

Thanks, LGTM from me. Though, let's wait with merging for @jaskooo

@trapi Don't wait. Megre :) LGTM


Weirdly high CPU & GPU usage while idling (IDE)

What did you do?

Opened up the ENSO IDE, and created a new project. I waited a while, to allow it to finish compiling dependencies and get to a steady state.
What did you expect to see?

CPU and GPU usage should be relatively low when Enso is idle.
What did you see instead?

Enso Helper (GPU) using >80% of GPU, and WindowSever and Enso Helper (Renderer) using high CPU levels.  Screenshot attached - the initial spike is during Enso project initialization, and then settles to a slightly calmer steady-state.
Screenshot
Enso Version

2.0.0-alpha.18 - I previously observed similar performance on 2.0.0-alpha.16.
Additional notes
Testing done on a 2019 16" Macbook Pro. (2.6Ghz 6-core i7, 16GB RAM).
Moving the mouse is noticeably just a little slow - not impossible to use, just doesn't "feel snappy."
Resource utilization goes back to normal when Enso is quit, minimized, or on a non-visible virtual desktop.

I have seen this behavior as well for 2.0.0-alpha.14. Seemed about the same usage for the large Restaurants example as for a simple example.
I don't know much about the internals of the IDE, but I suspect the issue is the draw loop is continuously re-drawing the interface even if there are no updates.
# Macbook, 2.8 GHz Quad-Core Intel Core i7 Intel Iris Plus Graphics 655 1536 MB
Process                   CPU %   GPU %
Enso Helper (GPU)	  54.7    55.1 (seen as high as 80% when idle)
Enso Helper (Renderer)    32.9     0.0
Enso                       1.9     0.0
Enso Helper                0.0     0.0

The renderings look great though! Good job.


Code enhancement

Following Eduardo (VueJS Core team member) advises, quick enhancements on base code

LGTM, feel free to merge it, @sahbi-ktifa


Subsequent deployments report incorrect status

I deployed with the extension a container and due to an improper configuration, 2 containers collided on the host ports.
The system reported a deployment error, and I got this message:
{
  "status": "Failed",
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "VMExtensionProvisioningError",
        "message": "VM has reported a failure when processing extension 'DockerExtension'. Error message: \"Enable Docker failed: ERROR: 'docker-compose up' failed: executing /opt/bin/docker-compose [-f /etc/docker/compose/docker-compose.yml up -d] failed: exit status 1. Check logs at /var/log/azure/Microsoft.Azure.Extensions.DockerExtension/1.2.0/docker-extension.log.\"."
      }
    ]
  }
}

I fixed my template and re-executed the deployment on the same nodes.
I still got the error, even if the compose command worked.
Relevant lines in the log:
[DockerExtension] 2016/09/22 18:02:39 Setting docker-compose environment variable "COMPOSE_HTTP_TIMEOUT"="600".
[DockerExtension] 2016/09/22 18:02:39 Setting docker-compose environment variable "COMPOSE_PROJECT_NAME"="compose".
[executil] 2016/09/22 18:02:39 +++ invoke: /opt/bin/docker-compose [-f /etc/docker/compose/docker-compose.yml up -d]
Creating compose_statsd_1
failed to create endpoint compose_statsd_1 on network bridge: Bind for <IP_ADDRESS>:8126 failed: port is already allocated
[executil] 2016/09/22 18:02:40 --- invoke end
[DockerExtension] 2016/09/22 18:02:40 ERROR: 'docker-compose up' failed: executing /opt/bin/docker-compose [-f /etc/docker/compose/docker-compose.yml up -d] failed: exit status 1. Check logs at /var/log/azure/Microsoft.Azure.Extensions.DockerExtension/1.2.0/docker-extension.log.
[DockerExtension] 2016/09/22 18:02:40 Cleaned up .seqnum file.
[DockerExtension] 2016/09/22 18:02:40 Exiting with code 1.
[DockerExtension] 2016/09/22 19:02:43 ----------------------------------------
[DockerExtension] 2016/09/22 19:02:43 Extension handler launch args: "/var/lib/waagent/Microsoft.Azure.Extensions.DockerExtension-1.2.0/bin/docker-extension enable"
[DockerExtension] 2016/09/22 19:02:43 seqnum: 1
[DockerExtension] 2016/09/22 19:02:43 distro info: CoreOS 1122.2.0
[DockerExtension] 2016/09/22 19:02:43 using distro driver: driver.CoreOSDriver
[DockerExtension] 2016/09/22 19:02:43 user: root uid:0 gid:0
[DockerExtension] 2016/09/22 19:02:43 env['PATH'] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/share/oem/python/bin
[DockerExtension] 2016/09/22 19:02:43 + starting: 'enable'
[DockerExtension] 2016/09/22 19:02:43 ++ install docker
[DockerExtension] 2016/09/22 19:02:43 docker already installed. not re-installing
[DockerExtension] 2016/09/22 19:02:43 -- install docker
[DockerExtension] 2016/09/22 19:02:43 ++ install docker-compose
[DockerExtension] 2016/09/22 19:02:43 docker-compose is already installed at /opt/bin/docker-compose
[DockerExtension] 2016/09/22 19:02:43 -- install docker-compose
[DockerExtension] 2016/09/22 19:02:43 ++ add user to docker group
[DockerExtension] 2016/09/22 19:02:43 -- add user to docker group
[DockerExtension] 2016/09/22 19:02:43 ++ setup docker certs
[DockerExtension] 2016/09/22 19:02:43 Docker certificate /etc/docker/ca.pem is not provided in the extension settings, skipping docker certs installation
[DockerExtension] 2016/09/22 19:02:43 -- setup docker certs
[DockerExtension] 2016/09/22 19:02:43 ++ update dockeropts
[DockerExtension] 2016/09/22 19:02:43 Updating daemon args to: -H=<IP_ADDRESS>:2375 --cluster-store=consul://<IP_ADDRESS>:8500 --cluster-advertise=eth0:2375
[DockerExtension] 2016/09/22 19:02:43 restart needed: false
[DockerExtension] 2016/09/22 19:02:43 -- update dockeropts
[DockerExtension] 2016/09/22 19:02:43 ++ restart docker
[DockerExtension] 2016/09/22 19:02:43 no restart needed. issuing only a start command.
[executil] 2016/09/22 19:02:43 +++ invoke: systemctl [start docker]
[executil] 2016/09/22 19:02:43 --- invoke end
[DockerExtension] 2016/09/22 19:02:46 -- restart docker
[DockerExtension] 2016/09/22 19:02:46 ++ login docker registry
[DockerExtension] 2016/09/22 19:02:46 registry login not specificied
[DockerExtension] 2016/09/22 19:02:46 -- login docker registry
[DockerExtension] 2016/09/22 19:02:46 ++ compose up

[DockerExtension] 2016/09/22 19:02:46 Setting docker-compose environment variable "COMPOSE_HTTP_TIMEOUT"="600".

The workaround is very time consuming, in order to get a successful deployment I had to ssh in all the nodes and manually delete the file /var/log/azure/Microsoft.Azure.Extensions.DockerExtension/1.2.0/docker-extension.log

@cristidumitru There is not much DockerExtension can do in this case. docker-compose up command works additive  and is not a good way of orchestrating containers in a dynamic fashion.
If you are planning to update the compose section frequently, please do not use DockerExtension as it is not designed for that.
You'd probably still hit this error if you updated your compose file on your VM and just executed /opt/bin/docker-compose -f /etc/docker/compose/docker-compose.yml up -d after that.
My recipe for success for compose scenarios with DockerExtension is, first make sure you prepare a docker-compose.yml file that (a) works (b) you are not planning to change anytime soon, and use that. If your scenario does not fit (b), docker-compose is not the right tool for this job.
Does this help?

I am timing this issue.  Please re-open as appropriate.


Problem with Thymeleaf url syntax

In my project I'm using Thymeleaf as template engine to render web pages.
Now I need to dynamically set href  attribute for some menu links. Something like this:
<a th:text="${pg}" th:href="@{/(page=${pg},size=${pageSize})}"></a>

but I'm getting this error while rendering my page:
ERROR org.thymeleaf.TemplateEngine - [THYMELEAF][qtp1442191055-20] Exception processing template "/templates/index.html": Link base "/" cannot be context relative (/...) unless the context used for executing the engine implements the org.thymeleaf.context.IWebContext interface (template: "/templates/index.html" - line 14, col 48)
org.thymeleaf.exceptions.TemplateProcessingException: Link base "/" cannot be context relative (/...) unless the context used for executing the engine implements the org.thymeleaf.context.IWebContext interface (template: "/templates/index.html" - line 14, col 48)

Is Javalin providing a IWebContext implementation or should I implement it on my own? In this case can you suggest some way to make it correctly?

@davioooh Javalin isn't providing anything, the whole implementation can be seen in io.javalin.plugin.rendering.template.JavalinThymeleaf:
object JavalinThymeleaf : FileRenderer {

    private var templateEngine: TemplateEngine? = null

    @JvmStatic
    fun configure(staticTemplateEngine: TemplateEngine) {
        templateEngine = staticTemplateEngine
    }

    override fun render(filePath: String, model: Map<String, Any?>): String {
        Util.ensureDependencyPresent(OptionalDependency.THYMELEAF)
        templateEngine = templateEngine ?: defaultThymeLeafEngine()
        val context = Context()
        context.setVariables(model)
        return templateEngine!!.process(filePath, context)
    }

    private fun defaultThymeLeafEngine() = TemplateEngine().apply {
        setTemplateResolver(ClassLoaderTemplateResolver().apply {
            templateMode = TemplateMode.HTML
        })
    }

}

You can use the configure method to provide your own engine. I know nothing about thymeleaf, so I'm afraid I can't be of much assistance.
If you have a better suggestion for a default configuration, I'd be happy to merge a pull request!

Thank you for your reply @tipsy. I'm not an expert about Thymeleaf internals. I usually use this template engine in my Spring Boot projects, so I'd like to use it also in Javalin projects.
I'll take a look to Thymeleaf docs in order to find something useful and I'll try to work to submit a pull request.


[LAPACK][DOCS] Add LAPACK documentation

Description
Include LAPACK documentation from oneAPI spec.

Noting that when building docs, at least some backend must also be selected for building.

@ericlars I am not sure if the exceptions in the API pages apply to this repo. Can we consider removing them?

@mmeterel Thanks, I will remove


Navigate to /cases after submitting the CaseForm

After hitting submit the CaseForm is closed and the LinelistTable data is refreshed
Removes the add button on the LinelistTable
Shows the added/edited case row as highlighted in the LinelistTable
Shows success message above LinelistTable

Before adding a row:

After adding a row:

 Bug fixes


fix: update the tagline

There were the following issues with your Pull Request

Commit: bbebaede1259d22bf4a076185f0b63f6ded5acc9
Commits must be in the following format: %{type}(%{scope}): %{description}

Guidelines are available at https://github.com/fabric8io/fabric8-ui

This message was auto-generated by https://gitcop.com


OpenSea metadata not always returning from get*Metadata()

Environment
Node.js with alchemy-sdk 2.2.4
Describe the problem
getNFTMetadata and getContractMetadata both return an openSea payload... but only for some NFTs. It's unclear when it's supposed to appear and when it's not.
For example, I would very much expect that any collections under the OpenSea Shared Storefront contract (0x495f947276749ce646f68ac8c248420045cb7b5e) would return OpenSea metadata! But they don't seem to.
How to reproduce:
Using example above, I'm grabbing the metadata for Skateboarding: Culture in Motion # 47:
const { Alchemy } = require('alchemy-sdk');
const alchemy = new Alchemy({ /* YOUR API KEY AND STUFF */ });
alchemy.nft.getNftMetadata(
  '0x495f947276749Ce646f68AC8c248420045cb7b5e',
  '103337611933110337448161440806560268112476320183319594419260887108754088132609',
).then(response => {
   console.log(response);
}).catch(err => {
});

but the response has no openSea object on it!

@rbruels Thanks for filing the issue! This has been fixed in #213, and we'll have a release out later this week that includes the fix. Marking the issue as closed, but feel free to ask any other questions you may have!

👏 My apologies, I saw that issue but thought it had been included in a prior release. Thanks!