row updated on OConcurrentModificationException

OrientDB Version, operating system, or hardware.

v2.2.7, Windows 10, laptop

Operating System

[x ] Windows

Expected behavior and actual behavior
The below query is throwing OConcurrentModificationException while calling commit. but the record is still updated.
update crud_log set status = 'processed' return after where entity='user' crud_type = 'create' and status = 'unread' limit 20
update crud_log set status = 'processed' return after where entity='user' crud_type = 'create' and status = 'unread' limit 20
Steps to reproduce the problem
below is the table and data:
,,<crud_type>,
lee,user,create,processed
khan,user,create,processed
chad,user,create,processed
tim,user,create,processed
steve,user,create,unread
Query used:
update crud_log set status = 'processed' return after where entity='user' crud_type = 'create' and status = 'unread' limit 20
Code user to call query:
List result = graph.getRawGraph().command(new OCommandSQL(query)).execute();
Commit method code:
(this method is always returning false, we call rollback when falls is returned, but the row is updated)
boolean commit=false;
if(graph!=null){
int maxRetries = 20;
for (int retry = 0; retry < maxRetries; ++retry) {
try{
graph.commit();
commit=true;
//exit from retry loop
break;
}catch( OConcurrentModificationException e ) {
//retry;
}
}
graph=null;
} else {
this.setError("cannot commit. database is null");
}
return commit;

Hi @smallik , just to clarify:

Does it happen sporadically or that is always reproducible?
Is it enough to run your code using data listed in the issue to reproduce the problem ?

hi,
If you are running in remote the query run outside the transaction, so in that case you need to do the update with the java API and not with the sql.
Hope this help

it happens consistently.
the crud log table is being updated anytime a crud operation happens. Ie
when ever a create, insert, view, delete happens. So the data is fine. But
in my case there are many threads involved that could update this table. I
can share some of my code if that helps. Let me know if you are not able to
reproduce.

On Oct 27, 2016 5:44 AM, "Andrey Lomakin"<EMAIL_ADDRESS>wrote:

Hi @smallik https://github.com/smallik , just to clarify:

Does it happen sporadically or that is always reproducible?
Is it enough to run your code using data listed in the issue to
reproduce the problem ?

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/orientechnologies/orientdb/issues/6851#issuecomment-256596269,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAuzOHSi6hYkIIYH2wDMN6MjKitHAzKSks5q4HKJgaJpZM4Kh0T7
.

Ok, are you saying that update queries needs to be outside transaction?
In this case it is totally fine as it is a atomic operation.
What will be my option if this was part of other update queries that has to
be part of the same transaction? also Is this specific for update with
returns or any updates?
Thanks
Mallik
On Thu, Oct 27, 2016 at 8:07 AM, tglman<EMAIL_ADDRESS>wrote:

hi,
If you are running in remote the query run outside the transaction, so in
that case you need to do the update with the java API and not with the sql.
Hope this help
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/orientechnologies/orientdb/issues/6851#issuecomment-256622906,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAuzOOtrVuzTGjS2w6YvtFChj_cGaVydks5q4JP4gaJpZM4Kh0T7
.

--
S. J. Mallik
(404) 913-2046

we do need to run it inside a transaction, otherwise the update could happen more than once depending on the threads executing.

Hi @smallik, sorry for the delay, caught a terrible cold last weekend, working on the issue now.

Just to clarify the situation, how you noticed that the rows was updated by the thread calling the provided code? Maybe it was updated by the other thread? What kind of a database access you use, embedded/server/distributed server?

We are currently using just one thread to check for new rows on this table. It is throwing OCuncurrentModificationException every time but the commit happens. I try to call commit 10 times for retry and it throws exception each time.
we are running in embedded mode with single tomcat server on a windows 10 laptop.

As I understand, there are many inserting threads and a single "processor" thread which updates the record status once it's processed. Are there other threads that may mutate the record after it was inserted?

Tried various combinations of writing/reading threads, still unable to reproduce. If it possible, could you please provide a stripped down version of your code which reproduces the issue.

Tried various combinations of writing/reading threads, still unable to reproduce. If it possible, could you please provide a stripped down version of your code which reproduces the issue.

Tried various combinations of writing/reading threads, still unable to reproduce. If it possible, could you please provide a stripped down version of your code which reproduces the issue.

I will try to isolate the problem and recreate in locally what I can pass on to you. butt its going to be a while.
Once the record is set to processes then no one will try to update it.

I created a doc that details the steps to recreate the issue with some code. Let me know if you have questions.
recreate bug.pdf

The issue was on my end. the database reference was getting set to null by an underlying code and hence the rollback was not happening. this is not an bug, I am closing it. sorry about the false report.

@smallik great you found it :)


Error returned on Get-GPO

As we shown on the capture, I've an error when I launch Get-AdModernReport
How can I track and correct that ?

For advance track :
if (!$nogpomod) {
$LinkedGPOs.Add((Get-GPO -Guid $Split2 -ErrorAction Stop -Errorvariable GPOTrack).DisplayName)
write-host $GPOTrack
}


Going from view to sketch mode and back is blinding

For some reason we have view -> sketch mode transition going to a completely different color (white to black).

oh this is weird something didnt carry over w the background change

Yeah the overlay in the client-side sketch mode is still dark so users can still see the sketch lines. @Irev-Dev and I have to let the sketch scene's colors follow the theme too, I'll rename the issue

frank fixed this so closing


messageicons: add more icons including gmail, google agenda, google m…

…essages

Looks good to me!


Not installing on Linux Mint 22

rares@msi-TOMAHAWK-X670E:~ curl -L https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/autodesk_fusion_installer_x86-64.sh -o "autodesk_fusion_installer_x86-64.sh" && chmod +x autodesk_fusion_installer_x86-64.sh && ./autodesk_fusion_installer_x86-64.sh --install --default
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
100 60218  100 60218    0     0   168k      0 --:--:-- --:--:-- --:--:--  168k
grep: /etc/upstream-release: Is a directory
grep: /etc/upstream-release: Is a directory
Checking for required package: curl ...
Checking for required package: lsb-release ...
The required package (lsb-release) is not installed!
The installer will install the required packages for the installation!
Missing package: lsb-release
The installer doesn't support your current Linux distribution  at this time!
The installer has been terminated!
rares@msi-TOMAHAWK-X670E:~

Solved now!

is just the same after the "update"


Unknown model (interfuser_baseline) / CUDA errorv / timm

I am a beginner in end-to-end autonomous driving and am trying to revive the InterFuser project.
My GPU is NVIDIA 4080 Super and it brings me some tough problems which hold me back.
I went through an extremely difficult experience and finally solved them, and now I wanna share it with you all.
If you find some problems in the solution or have better alternative please let me know. I'd appreciate it very much！
sm89 CUDA Capability
At first My CUDA version is 11.4 and Pytorch version is 1.12.x, virtual env with python 3.7 (created by requirements.txt)
BUT NVIDIA 40 Series's CUDA Capability is sm89, and the Traceback suggests that it is not compatible with the current PyTorch.
So some error emerge

After some research it suggests that sm89 needs CUDA 12.x
So I reinstall CUDA 12.1 and PyTorch which matches it, and find another problem.
PyTorch's oldest version which matches CUDA 12.x doesn't support Python 3.7
It at least need python 3.8
So I didn't listen to README.MD, created env with python 3.8
And this makes requirements.txt-installation meet some conflicts.
I made some adjustments by myself and try to run run_evaluation.sh
And I suspect this is why my timm module was not correctly installed.
No module named 'timm'
This is the third problem, when I run run_evaluation.sh
I first pip install timm, and clearly it didn't work.
Then I find some clue in Issues and find timm version was 0.4.13.
BUT pip install timm==0.4.13 didn't work too.
Just follow the instruction in the Setup section and use \interfuser\setup.py
Missing this may cause errors which doesn't note timm.
BTW, if running run_evaluation.sh with this result

just delete the file in InterFuser/results/sample_result.json
Hope that my experience can provide you with some references : )

Hi!
Thank you so much for your kind help! I’ve added the "good first issue" tag to attract more attention from newcomers and updated the README with the corresponding link. By the way, regarding the installation of timm, we’ve provided detailed instructions in the "Setup" section.

Thanks for reminding！For some reason, the installation was not successful at the beginning, and I carelessly ignored it later. I've modified origin issue.


flake8

just flake8.
I don't know why I cannot push in my own branch anymore... So this is the PR

@OhMaley It's because I merged it to a codalab branch, in order to trigger auto tests


fetch failures with cloudflare-adapter

Describe the bug
I'm not sure if this is an issue specific to sveltekit's cloudflare adapter or not (but I'm specifically wondering about the special fetch used by FormActions and how that works with the adapter), and I've also opened an issue in the cloudflare/workers-sdk repo here. The fetch works as expected with Vite.
Describe the Bug
Using fetch with wrangler dev results in errors. Attempted on both Mac and Linux.
const resp = await fetch(`https://stg.mul-bill.jp/`)

This results in internal server error.
Reproduction
https://github.com/maemigh/cloudflare-test
This is just a build that has a submit button, which calls the fetch within the formaction where it produces the error.
Run the build and then
npx wrangler pages dev .svelte-kit/cloudflare

Navigate to http://localhost:8788/ja/apply and press the submit button. The fetch will cause the internal server error.
Logs
workerd/util/symbolizer.c++:98: warning: Not symbolizing stack traces because $LLVM_SYMBOLIZER is not set. To symbolize stack traces, set $LLVM_SYMBOLIZER to the location of the llvm-symbolizer binary. When running tests under bazel, use `--test_env=LLVM_SYMBOLIZER=<path>`.
workerd/jsg/util.c++:275: error: e = kj/compat/tls.c++:72: failed: OpenSSL error; message = error:10000410:SSL routines:OPENSSL_internal:SSLV3_ALERT_HANDSHAKE_FAILURE
error:1000009a:SSL routines:OPENSSL_internal:HANDSHAKE_FAILURE_ON_CLIENT_HELLO
stack: 10160890c 101610940 1027a0294 1027a06dc 10172893c 10172922c 10172a8f4 101707e30 10170e9f0 101724db4 100e6792c 1009b762c 100ed3ce4; sentryErrorContext = jsgInternalError

System Info
System:
    OS: macOS 14.0
    CPU: (8) arm64 Apple M1
    Memory: 97.20 MB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 21.1.0 - /opt/homebrew/bin/node
    npm: 10.2.0 - /opt/homebrew/bin/npm
    pnpm: 8.7.0 - ~/Library/pnpm/pnpm
  Browsers:
    Brave Browser: <IP_ADDRESS>
    Edge: 118.0.2088.76
    Firefox Nightly: 92.0a1
    Safari: 17.0
  npmPackages:
    @sveltejs/adapter-auto: ^2.0.0 => 2.1.0
    @sveltejs/adapter-cloudflare: ^2.3.3 => 2.3.3
    @sveltejs/kit: ^1.20.4 => 1.27.2
    svelte: ^4.0.5 => 4.2.2
    vite: ^4.4.2 => 4.5.0

Severity
annoyance
Additional Information
Can't test a whole lot locally since fetch fails. Need to deploy to cloudflare to test the formaction.

This seems like an issue with workerd rather than SvelteKit. The reproduction works fine when running outside workerd (npm run preview). There's nothing special about the fetch function when it comes to different adapters too. You can test this by not using fetch function provided by SvelteKit and you will get the same 500 internal server error result.


Implement vital chef's hat functionality

About the PR

If you put a player-controlled mouse or hamster into a chef's hat and wear it, the mouse/hamster will be able to control your movement. Obviously.
The wearer does still have control as well, so have fun trying to coordinate movement!
Why / Balance

I noticed that the chef's hat has an inventory that fits a single tiny item, and that mice are tiny items. I tried it and was disappointed to see that this wasn't already a feature. So now it is.
This also enables a potentially friendly interaction between two characters who typically don't get along. As a mouse, do you stop and hope the chef will be kind and put you in his hat instead of the microwave?
Technical details

Adds PilotedClothingComponent, which is uses InputRelay to set up a connection from the pilot to the wearer. The link is broken if the clothing is unequipped or the pilot leaves the clothing's storage. Both the wearer and the pilot are able to steer the character.
Adds PilotedByClothingComponent to the wearer while the connection is active. This just disables physics prediction for the wearer. Trust me, it feels awful with prediction on. The delay from having it unpredicted adds to the effect anyway.
Adds a tag "ChefPilot" and gives it to mice and hamsters. PilotedClothingSystem uses a whitelist to validate that this tag is on a potential pilot.
Media

https://github.com/space-wizards/space-station-14/assets/85356/f59d5905-057a-4e17-a220-7ae773c9b040

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog

:cl:

add: Mice and hamsters inside chef's hats can now steer the hat's wearer.

This pr... this is a perfect idea...

sounds like a rather complex mechanic that is very narrowly applicable and not reusable.    Or is it strictly fixed to the conditions of clothing slots

sounds like a rather complex mechanic that is very narrowly applicable and not reusable.

You have described... Space Station 13

sounds like a rather complex mechanic that is very narrowly applicable and not reusable.    Or is it strictly fixed to the conditions of clothing slots

The way it's implemented, it is limited to the "pilot" being inside a clothing item and the clothing item being worn by the person being controlled.
But the reusable system already existed with the InputRelay system, which is used for transferring control from pilots to mechs. This just bridges a couple of gaps to reuse that functionality for this specific case.
It would definitely be possible to implement a brain worm with InputRelay in a way pretty similar to this (and I might look into that), but I think the differences are significant enough to deserve separate implementations.

This idea is amazing. Could you add cockroaches and mothroaches to the pilots as well?

Vital PR

Could you add cockroaches and mothroaches to the pilots as well?

I'm going to keep it limited to rodents for now, but I encourage you or anyone else to submit a follow-up PR for that change if this gets merged.

mothroaches as hats should let them pilot people as well

On a side note, if anyone adds a larger chef's hat that can fit a raccoon, they'll have my support instantly

Rat king sized chef hat :godo:

Speaking of the prediction, wouldn't this affect players with high ping more than those with less ping? Iirc devbuild has simulated delay of around 185ms so this perhaps didn't come up during testing.

I wonder if this would be better served as a generic vehicle system to relay movement inputs instead of having:

jetpacks
pilotedclothing
shuttle
vehicle 2.0 + cardboard box + mechs.

Specifically by splitting the component into one for being a vehicle and another for being a vehicle able to be piloted via clothing?

You're just trying to dupe me into doing the vehicle refactor, aren't you? 😛
You make a good point though; all those systems probably could be combined. I can look into doing that, but for now I've just fixed the specific issues you pointed out.

Closed due to feature freeze May 10th-June 14th. Comment to have it reopen after this.

The completion and merge of this PR is vital to my mental health

holy shit SSD people can now be used for something useful

The lack of prediction is pretty bad but I don't think there's an easy way around having 2 players control the same mob so.

Uploading 2024-07-30 08-12-23.mp4…

Uploading 2024-07-30 08-12-23.mp4…

Uploading 2024-07-30 08-12-23_compressed.mp4…

https://drive.google.com/file/d/1NKXE98TCdvA54PwMnsqiG5EBZmyfXvPm/view?usp=sharing
watch video, i cant upload it here.

https://drive.google.com/file/d/1NKXE98TCdvA54PwMnsqiG5EBZmyfXvPm/view?usp=sharing watch video, i cant upload it here.

That is a known bug
#29288

https://drive.google.com/file/d/1NKXE98TCdvA54PwMnsqiG5EBZmyfXvPm/view?usp=sharing watch video, i cant upload it here.

That is a known bug #29288

what about ghost movement? maybe just use a bit of RIPLEY code?

what about ghost movement?

I don't think that's a bug and if it was it would not get fixed, its kinda funny and an admin would have to cause it anyway.

what about ghost movement?

I don't think that's a bug and if it was it would not get fixed, its kinda funny and an admin would have to cause it anyway.

i think what author need to use RIPLEY code instead, cuz' now its so laggy tbh
and he needs to add hands and other interface to mouse, in Ratatouille Remi can control hands and oher stuff

i think what author need to use RIPLEY code instead, cuz' now its so laggy tbh and he needs to add hands and other interface to mouse, in Ratatouille Remi can control hands and oher stuff

It's using the RIPLEY code, it feels laggy because predictions are turned off so it does not look like your player is teleporting constantly. I agree about that hands but... wyci 🙃


lxc file push: preserve file permissions if not specified

Fixes #1472
Signed-off-by: Nehal J Wani<EMAIL_ADDRESS>

This pull request didn't trigger Jenkins as its author isn't in the whitelist.
An organization member must perform one of the following:

To have this branch tested by Jenkins, use the "ok to test" command.
To have a one time test done, use the "test this please" command.

Those commands are simple Github comments of the format: "jenkins: COMMAND"

jenkins: test this please

Thanks!


Right Click on misspelled words slow on macOS

My Setup

[x] I have tested with the latest version
[x] I can simulate the issue easily

Description
Right-clicking on a word that is misspelled takes a few seconds for the context menu to appear. I do not see this behavior on Windows.
Current Behavior

Expected Behavior
Immediate right click!

Please test if the latest release did solve this. If not please reopen the issue or create a new one and tell us. I will be closing this one for now.
Thank you!


Rename base branch to main

This PR updates CONTRIBUTING.md to reflect the updated default base branch name of main.

Thanks @byencho !


No Installation Steps for Linux

Hi team,
I would like to ask you kindly to provide the installation steps for this systemd_exporter tool. I was not able to find them here nor on the internet. Could you please provide the steps needed to install it on a Linux machine?
Thank you in advance!

Simplest is to clone this repository and run go build to compile the binary
You should end up with a binary like this:
./systemd_exporter --help

usage: systemd_exporter [<flags>]

Flags:
  -h, --[no-]help                Show context-sensitive help (also try --help-long and --help-man).
      --systemd.collector.unit-include=".+"
                                 Regexp of systemd units to include. Units must both match include and not match exclude to be included.
      --systemd.collector.unit-exclude=".+\\.(device)"
                                 Regexp of systemd units to exclude. Units must both match include and not match exclude to be included.
      --[no-]systemd.collector.private
                                 Establish a private, direct connection to systemd without dbus.
      --[no-]systemd.collector.user
                                 Connect to the user systemd instance.
      --[no-]systemd.collector.enable-restart-count
                                 Enables service restart count metrics. This feature only works with systemd 235 and above.
      --[no-]systemd.collector.enable-ip-accounting
                                 Enables service ip accounting metrics. This feature only works with systemd 235 and above.
      --web.telemetry-path="/metrics"
                                 Path under which to expose metrics.
      --[no-]web.disable-exporter-metrics
                                 Exclude metrics about the exporter itself (promhttp_*, process_*, go_*).
      --web.max-requests=40      Maximum number of parallel scrape requests. Use 0 to disable.
      --[no-]web.systemd-socket  Use systemd socket activation listeners instead of port listeners (Linux only).
      --web.listen-address=:9558 ...
                                 Addresses on which to expose metrics and web interface. Repeatable for multiple addresses.
      --web.config.file=""       [EXPERIMENTAL] Path to configuration file that can enable TLS or authentication. See: https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md
      --log.level=info           Only log messages with the given severity or above. One of: [debug, info, warn, error]
      --log.format=logfmt        Output format of log messages. One of: [logfmt, json]
      --[no-]version             Show application version.

Then you should be able to start it via systemd by just running the binary without passing any params. It'll open port 9558 by default and the endpoint is /metrics. I.e: curl http://localhost:9558/metrics

they have also pre built binaries here if you prefer https://github.com/prometheus-community/systemd_exporter/releases/tag/v0.5.0

We should add a link to the Ansible collection docs.
https://prometheus-community.github.io/ansible/branch/main/systemd_exporter_role.html


Simplify the julia compat entry in Project.toml

In a compat entry, if you write 1.3, this is equivalent to saying "any version that is >= 1.3.0 and < 2.0.0". So all of the following entries would be exactly equivalent:

julia = "1.3"
julia = "1.3, 1.4"
julia = "1.3, 1.4, 1.5"
julia = "1.3, 1.4, 1.5, 1.6"

Therefore, we can simplify the current compat entry (julia = "1.3, 1.4, 1.5") to simply julia = "1.3".

Bump @blenessy


Restrict create/update of subscription to admin only

The retrieve/list is still accessible to authenticated user.

With this patch, we'll need to make sure the user that initialize the client(worker process) has appropriate permissions. Patch subscription is needed in the backend for dedup.

LGTM


Sub-set check program - Python

@SeaSkyThe contribute here https://github.com/Ishaan28malik/Get-Dev-Resources


build: update tosource

i notice that tosource 2.0.0-alpha.2 has no dts, and alpha.3 fix a bug about output -0.
it's unnecessary,but can reduce a line of type comments.

Codecov Report

Merging #561 (3bc134d) into main (54fc77f) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 3bc134d differs from pull request most recent head 084a0af. Consider uploading reports for the commit 084a0af to get more accurate results

@@           Coverage Diff           @@
##             main     #561   +/-   ##
=======================================
  Coverage   88.08%   88.08%
=======================================
  Files          56       56
  Lines        4808     4808
  Branches     1034     1034
=======================================
  Hits         4235     4235
  Misses        310      310
  Partials      263      263

Impacted Files
Coverage Δ

src/lib/index.ts
79.79% <ø> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 9d82a92...084a0af. Read the comment docs.


Python Documentation bug in sitk.Image constructor

Describe the bug
The documentation of SimpleITK.Image in the python API says
"""
        img:
        After the operation img is valid only for destructing and assignment;
        all other operations have undefined behavior.
"""

This seems to indicate that I should be very careful to not copy an image like so:
img_copy = sitk.Image(img)

I traced this constructor to following C++ code
SWIGINTERN PyObject *_wrap_new_Image__SWIG_1(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
  PyObject *resultobj = 0;
  itk::simple::Image *arg1 = 0 ;
  void *argp1 = 0 ;
  int res1 = 0 ;
  itk::simple::Image *result = 0 ;

  if ((nobjs < 1) || (nobjs > 1)) SWIG_fail;
  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_itk__simple__Image,  0  | 0);
  if (!SWIG_IsOK(res1)) {
    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Image" "', argument " "1"" of type '" "itk::simple::Image const &""'");
  }
  if (!argp1) {
    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "new_Image" "', argument " "1"" of type '" "itk::simple::Image const &""'");
  }
  arg1 = reinterpret_cast< itk::simple::Image * >(argp1);
  {
    try {
      {
        SWIG_PYTHON_THREAD_BEGIN_ALLOW;
        result = (itk::simple::Image *)new itk::simple::Image((itk::simple::Image const &)*arg1);

i.e., the copy constructor Image::Image(const Image&) is called.
To Reproduce
Look at SimpleITK.py in v2.3.0.

Operating system, version, and architecture

OS: all
Architecture: all

Programming language: Python 3
Version of SimpleITK: 2.3.0
How was SimpleITK installed?

python -m pip install SimpleITK]

Expected behavior
The documentation should instead state that Image(img: Image) is a copy constructor, i.e. it copies the input image img.
Images
na
Additional context
na

happy to provide a PR, if you agree that this is wrong/misleading.

Thank you for the report.
It looks like the C++ move constructor is what python picked up for the doc strings.
This is the file where SWIG picks up  the doc strings:
https://github.com/SimpleITK/SimpleITK/blob/9db174c691899d0eb608edfeb649d50c215e7a25/Wrapping/Python/PythonDocstrings.i#L16417-L16441
That file is generated by manually running a script to convert the C++ Doxygen into the doc strings:
https://github.com/SimpleITK/SimpleITK/blob/master/Utilities/GenerateDocs/SwigDocUpdate.sh
This particular methods is not even seen by SWIG, but is enabled when the Doxygen is run.  Maybe a separate doxygen run could be done with SWIG defined? Maybe one of those scripts could be updated which generate the .i file.
Honestly, this doctoring system is a little clunky. SWIG added some support for Doxygen strings, which would be easier, but last I looked at the output it appears inferior to what was currently being produced. It may deserve another look.

If I understand correctly, the .i files are generated manually? Do you run it after each PR if the API changes or what triggers the update?
I think the simplest and cleanest way would be to define SWIG when generating the .xml files during the build. Then these methods probably would not get picked up by doxygen.

Actually, I think the easiest thing to do would to just ignore this method here:
https://github.com/SimpleITK/SimpleITK/blob/master/Wrapping/Python/Python.i#L33


After trigger form reset then the Textfield get wrong classes

Although it's a bit issue...

codepen example

I just trigger change itself but does any solution for that

solve in my solution
Because I need some way to reset component.

@andyyou Can you PR that fix? Looks like a good solution to the problem.

OK


[PPP-4654] Test cleanup

:white_check_mark: Build finished in 20m 24s
Build command:
mvn clean verify -B -e -Daudit -amd -pl engine

:exclamation: No tests found!
:information_source:  This is an automatic message


Webpack dev server improvements.

Based on the outcome of the discussion here:

devServer options were moved to the webpack.client.js
notification about starting the compilation

Also:

during -serve without --debug liveReload and overlay for devServer is disabled (otherwise it creates very strange issues like infinite page reloading)
I could not disable webpack:client in --debug mode, because another task static:inject depends on the output from webpack:client. When webpack:client is disabled, static:inject will produce the wrong output and will break everything (though the build looks ok, the app doesn't work)

/cc @pschaeflein

Will update the change log in a minute.


Update build.yml

Where the name of the checks are coming from?

Where the name of the checks are coming from?

https://github.com/AbsaOSS/fa-db/pull/31/files#diff-5c3fa597431eda03ac3339ae6bf7f05e1a50d6fc7333679ec38e21b337cb6721R73


kconfig: drivers: i2s: Remove redundant deps.

I2S_STM32 is already within an if I2S, in drivers/i2s/Kconfig.
if FOO is just shorthand for adding depends on FOO to each item
within the if. There are no "conditional includes" in Kconfig, so
if FOO has no special meaning around a source. Conditional includes
wouldn't be possible, because an if condition could include (directly
or indirectly) forward references to symbols not defined yet.
Tip: When adding a symbol, check its dependencies in the menuconfig
(ninja menuconfig, then / to jump to the symbol). The menuconfig also
shows how the file with the symbol got included, so if you see
duplicated dependencies, it's easy to hunt down where they come from.

Codecov Report

Merging #14224 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #14224   +/-   ##
=======================================
  Coverage   52.68%   52.68%
=======================================
  Files         307      307
  Lines       45473    45473
  Branches    10530    10530
=======================================
  Hits        23956    23956
  Misses      16640    16640
  Partials     4877     4877

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d7ae2a8...2a90d01. Read the comment docs.


Implement types conversion on Axon endpoint

Closes: #XXX
Description

PR author checklist:

[ ] Added changelog entry, using unclog.
[ ] Added tests: integration (for Forcerelay) or unit/mock tests (for modules).
[ ] Linked to GitHub issue.
[ ] Updated code comments and documentation (e.g., docs/).
[ ] Tagged one reviewer who will be the one responsible for shepherding this PR.

Reviewer checklist:

[ ] Reviewed Files changed in the GitHub PR explorer.
[ ] Manually tested (in case integration/unit/mock tests are absent).

In the PR I unwrap all Result, as I think error should not be returned at conversion If the IBC solidity follows the same id format or enum order. The related issue is https://github.com/synapseweb3/ibc-solidity-contract/issues/3, and we should check clientId and clientType format carefully that user registers.

have a check of CI issues about forecrelay-test and clippy, forcerelay-test can be fixed by rebasing the main brach


this fixes an issue with host name

If the host name is not node the graph wouldn't get data, with this fix you can use non node named hosts.  Thanks @lborguetti

the following job titles wouldn't pull data until I applied this updated json
[
  {
    "targets": [ "localhost:9100" ],
    "labels": {
      "job": "nfs1"
    }
  }
]

Hi,
Actually I can use any hostname with the current json, for example, in the "prometheus.yml" I have working this:
  - job_name: 'node'
    static_configs:
      - targets:
        - web1.prod.server:9100
        - web2.prod.server:9100
        - web1.dev.server:9100

Thanks,

your call, but any non node job name doesn't work without this.  i think it would work either way with the change


Why can use with react native CLI Project

Hi, when i install the dependecy and want to use it, i get:
`Error: The package 'react-native-mock-location-detector' doesn't seem to be linked. Make sure:

You have run pod install'
You rebuilt the app after installing the package
You are not using Expo managed workflow`

Hello, thanks for the report. It's a known issue due to last PR. I'm working on new version with support for React Native 0.72.

Opened PR #8

I've published new version 2.2.0


Any way to override light and dark themes seprately and switch between them?

Hi, Cool theme @petergardfjall !
i am trying to use the light variant during day time and the dark variant during night time.
but overriding say backgroud-primary overrides it in BOTH light and dark variants.
i am looking for some thing so i can configure separate settings for the two. i am not sure i understand what roles to background-light or primary-light play since they do not refer to the light variant's background and primary colors. hope i could get my issue across.
quite simply i think i may be missing something here.

Hi, thanks for the feedback!
Much of the code dates back to a time when there was only a dark variant of the theme. Some parts, like the color override customization as well as the primary-dark/primary-light naming reflects that.
With the recent commit https://github.com/petergardfjall/emacs-immaterial-theme/releases/tag/v0.8.0 I've tried to correct that. The immaterial-color-override-alist is now more flexible, capable of changing colors for either variant of the theme. The README goes into more detail but here is an example:
(setq immaterial-color-override-alist
  '(("background-primary" . ((dark  . "#000000") (light . "#eeffdd")))
    ("background-on"      . ((dark  . "#003300") (light . "#ddffaa")))
    ;; override 'primary' only for dark theme
    ("primary"            . ((dark  . "#80cbc4")))
    ;; override 'warning' only for light theme
    ("warning"            . ((light . "#ed4079")))))

Also the accent colors  (primary,secondary,tertiary) now support two variants hi and lo (contrast, with respect to the background color) instead of dark and light.
Feel free to try it out.

Hi!
This is wonderful @petergardfjall , i played around a bit & this works exactly as i wanted 🥇
Thanks a lot for taking a look into this and a super quick turnaround 💯


MQTT TLS and long user/password

Perform all steps below and tick them with [x]

[X] Check the related part of the Documentation
[X] Update openHASP to the latest version
[X] Reproduce the issue and describe all steps

Describe the bug
I tried to connect to a TLS enabled MQTT broker but it doesn't work, the board continues to reboot.
I tried to connect to a standard MQTT broker with a long (a token) username or password but it get truncated and does not connect
To Reproduce
Use a TLS enabled MQTT broker (port 8883) or try to connect to a plain MQTT broker with a long username or password.
Expected behavior
Successful connection
Screenshots or video

MQTT TLS isn't suported atm. Please define how long username/password you need. The lengths are adjustable if you compile the firmware yourself:
// Lengths
#ifndef MAX_PASSWORD_LENGTH
#define MAX_PASSWORD_LENGTH 64
#endif
#ifndef MAX_USERNAME_LENGTH
#define MAX_USERNAME_LENGTH 32
#endif
#ifndef MAX_HOSTNAME_LENGTH
#define MAX_HOSTNAME_LENGTH 128
#endif


[Bug] Argument overwritten inside a conditional statement should not raise W0921

What happened?
argument-overwritten-before-usage / W0921 is raised when overriding an argument in a conditional statement. The override was on purpose and the warning should not be raised.

What command/code did you try to run?
My Keyword
    [Documentation]    argument conditionnaly changed still shows
    ...    argument-overwritten-before-usage / W0921
    [Arguments]    ${to print}    ${another arg}
    IF    ${another arg} != "KEEP"
        VAR    ${to print}    "overwrite"
    END
    Log To Console    ${to print}

What is the full error message?
Keyword argument '${to print}' is overwritten before usagerobocop argument-overwritten-before-usage-W0921
What did you expect to happen instead?
The rule could assume that if the variable is overwritten from inside an IF clause, it is on purpose.
Operating System
Windows
Robocop version
5.0.4

That rule is bit tricky because there could be numerous reasons for variable being overwritten. The purpose was mainly to catch 'useless' arguments, for example that are always overwritten without being used.
But I agree if there is any condition, the issue shouldn't be raised - since the argument is not always overwritten but only in some cases.


Error using the script with kicad 7

Hey, thanks a lot for the script.
Had some problems that can be fixed by applying this simple patch
diff --git a/fetchComponent.py b/fetchComponent.py
index cd72349..cd05937 100755
--- a/fetchComponent.py
+++ b/fetchComponent.py
@@ -148,8 +148,8 @@ def postProcessFootprint(footprint):
     refPos = topMiddle(bbox) + pcbnew.wxPoint(0, -footprint.Reference().GetTextHeight())
     valuePos = bottomMiddle(bbox) + pcbnew.wxPoint(0, +footprint.Reference().GetTextHeight())

-    footprint.Reference().SetPosition(refPos)
-    footprint.Value().SetPosition(valuePos)
+    footprint.Reference().SetPosition(pcbnew.VECTOR2I(refPos.x, refPos.y))
+    footprint.Value().SetPosition(pcbnew.VECTOR2I(valuePos.x, valuePos.y))

     footprint.Reference().SetVisible(True)
     footprint.Value().SetVisible(True)

Most likely due to this: https://forum.kicad.info/t/kicad-7-scripting-position-errors/40719/3
After patching it seems to be working correctly.

Applying the patch would make it incompatible with KiCAD 6.
Nevertheless, this project is-more-less abandoned a and there I well-maintained alternatives: https://github.com/uPesy/easyeda2kicad.py

Might be worth to mention this in README, as I found this project via some article I googled, unaware of more up-to-date alternatives.
Thanks.


Fix zgen instructions

Sorry @MikeDacre, there was a copy-pasta error in the zgen instructions in the original commit.

No problem, thanks for the fix.


Regression 8024ea3b to 5640b9b5: completion item also inserts ?

I'm using compe with a TypeScript codebase. Since 5640b9b50ee51a3df9212857a929ddb6677ff723 completion items also insert the ? optional token, which it shouldn't.
Before (good, 8024ea3b44db0e90b1048dfbf14cfb97439dd9c0)

After (not good, 5640b9b50ee51a3df9212857a929ddb6677ff723):

Sorry for annoying. It was a my rough work...

No worries, very grateful for your work on nvim-compe!


Enhanced retry epic

[x] Basic retry options - customise message failure retry delay - currently 1 seconds, enable/disable retry
[ ] Retry max reached skip die or dlq or skip?  #196
[x] Retry failure callback (instead or as well as DQL) implemented in #92
[ ]  #242
[ ] DLQ #310

Strongly related to https://github.com/confluentinc/parallel-consumer/issues/34 - Monitor for progress and optionally shutdown (leave consumer group), skip message or send to DLQ #34

BTW @ismarslomic , did you see ParallelConsumerOptions#defaultMessageRetryDelay? Do you think there should be more documentation around it?
I've added some docs - see https://github.com/confluentinc/parallel-consumer/pull/66/commits/917e4698a272a0764cdf6554237c6e819569db0a

BTW @ismarslomic , did you see ParallelConsumerOptions#defaultMessageRetryDelay? Do you think there should be more documentation around it?
I've added some docs - see https://github.com/confluentinc/parallel-consumer/pull/66/commits/917e4698a272a0764cdf6554237c6e819569db0a

@radoslawtwardy -> https://github.com/confluentinc/parallel-consumer/issues/82 Custom retry delay duration from supplier function #82

Custom retry delay duration from supplier function
Possibility to define custom function will be great.

Custom retry delay duration from supplier function

Possibility to define custom function will be great.

Great! Try out https://github.com/confluentinc/parallel-consumer/compare/master...astubbs:retry-delay-generator-func linked from the issue and let me know what you think of the api amd functionality.

Closing Issue


Samza-2330: Handle expired resource request for Container allocator when host affinity is disabled

Summary of the problem: Today when host affinity is not enabled & Cluster Manager does not issue the requested resources, the allocator thread keeps on looping forever, we want to add an expiry check for such requests to re-issue another ANY_HOST just in case if capacity is later added
This PR introduces expiry check for container allocator when host affinity is disabled. Expiry timeout is defined by the existing config: cluster-manager.container.request.timeout.ms with a default of 5 mins. This will prevent samza users to prevent to restart jobs in case of cluster manager being not responsive.
Testing: Added unit tests for simulating and verifying the behavior
Note: This is a Stacked PR which is the third in series of:

SAMZA-2319: [1/2] Simplify Container Allocation logic
SAMZA-2319: [2/2] Simplify Container Allocation logic : Rename AbstractContainerAllocator to ContainerAllocator

@rmatharu Please have a look


Questions/issues in using overrides

I am in the midst of testing overrides on 1.5.2, and I am running into issues where my attempts to do manual overrides are not working... I'm thinking of a use case where, rather than using the auto-discovery feature, I can have different fabio servers that will read from different consul k/vs on the same cluster, so each fabio picks up its own set of unique routes.....
a.  If I tried to enter a override in the consul k/v of fabio/config (where I have it set as default)... it does not appear to do anything.....
My route overrides were going to be very simple... I tried two use cases.  Neither does anything.

I have auto discovery find all routes, then I add an route del {servicename}
I turned off auto discovery by not adding the tags to the service, then I tried to do an route add {servicename} {path}

b.  If I tried to enter in a override in the GUI, it complains on a server error, and a corresponding 403
Looking at the logs from Fabio.  The 1st one is when I updated the consul k/v.  It seemed to have acknowledged my k/v update, but it didn't do anything.
The 2nd one corresponds to the internal server error prompt that I get.  As you see, it complains of a 403.
I'm still new on using Fabio, so any guidance on it would be much appreciated.
2017/10/13 16:50:25 [INFO] consul: Manual config changed to #26493793
2017/10/13 16:50:43 [ERROR] Unexpected response code: 403 (rpc error: rpc error: Permission denied)

Ok.... after going a bit further.... it's a consul ACL issue where I have my k/v s set to default deny with the anonymous token.... So I imagine either adding an ACL to the consul agent where fabio runs, or relaxing the ACL for the anon token, is an option....
It is interesting, however, that the 403 error only occurs if you tried to enter the override from the GUI, as it tries to write to the KV.  However, it does not complain when it, at 1st, cannot read from the k/v.
Given that.... i am still trying the use case of basically having it add a service without doing a prefix tagging.... so I tried something like this on the config, where I want it to automatically find the service and route it to the destination, and now it is complaining that the syntax is invalid.
Is such a config currently supported?
route add apachecontainercheck /

You can have Fabio talk to a specific consul cluster or use different tag prefixes to separate name spaces. Can you explain more what you’re trying to do? My gut feel tells me that you’re trying to do smth that fabio wasn’t designed for. The auto-discovery is the whole point of its existence.

While I personally agree that the automatic discovery is the best way to go, my use case is that I will get pushback from other stakeholders of the microservices that they may not want to 'share' the same set of fabio services for load balancing, while still using the same consul cluster for discovery.
I think the best workaround, in this case, is to use seperate consul clusters just for that seperation....  But I was just wondering whether my use case is unique.. apparently it is....

I think you can use different tag prefixes for that. fabio-a[123] uses tag.prefix a- instead of urlprefix-, fabio-b[123] uses b- and so forth. This way multiple fabio clusters can share the same consul server cluster. The services then need to register a-/foo and b-/bar. You still need to route inbound traffic to them though.
Frank Schröder

On 16. Oct 2017, at 18:35, Victor Chan<EMAIL_ADDRESS>wrote:
While I personally agree that the automatic discovery is the best way to go, my use case is that I will get pushback from other stakeholders of the microservices that they may not want to 'share' the same set of fabio services for load balancing, while still using the same consul cluster for discovery.
I think the best workaround, in this case, is to use seperate consul clusters just for that seperation.... But I was just wondering whether my use case is unique.. apparently it is....
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Oh yeah... that's right... I see that it is something you can setup in fabio.properties.... I did not think about utilizing that.
That would definitely satisfy the use case that I have......


Add stringer for pods status

What type of PR is this?
/kind feature

What this PR does / why we need it:
Add stringer interface for pods status to improve logging output readability
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:

/ok-to-test


[Improve][Parent-Pom] add repositories

(Please specify the module before the PR name: [core] ... or [flink] ...)
Purpose
(What is the purpose of the change, or the associated issue)
Tests
(List UT and IT cases to verify this change)
API and Format
(Does this change affect API or storage format)
Documentation
(Does this change introduce a new feature)

@JingsongLi PTAL thanks.


[freeimage:x64-linux] build failure

Host Environment

OS: Ubuntu 20.04 LTS
Compiler: GCC 9.3.0

To Reproduce
Steps to reproduce the behavior:
./vcpkg install freeimage:x64-linux
compile with cmake using attached CMakeLists.txt
Failure logs
[ 97%] Linking CXX executable ../../../../bin/InspectionSystemTestbench
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjpegxr.a(strenc.c.o): in function `StrIOEncInit':
strenc.c:(.text+0xf04): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libFreeImage.a(PluginWebP.cpp.o): in function `Open(FreeImageIO*, void*, int)':
PluginWebP.cpp:(.text+0x22e): undefined reference to `WebPMuxCreateInternal'
/usr/bin/ld: PluginWebP.cpp:(.text+0x26e): undefined reference to `WebPNewInternal'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libFreeImage.a(PluginWebP.cpp.o): in function `Load(FreeImageIO*, void*, int, int, void*)':
PluginWebP.cpp:(.text+0x340): undefined reference to `WebPMuxGetFeatures'
/usr/bin/ld: PluginWebP.cpp:(.text+0x361): undefined reference to `WebPMuxGetFrame'
/usr/bin/ld: PluginWebP.cpp:(.text+0xac6): undefined reference to `WebPMuxGetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xb1e): undefined reference to `WebPMuxGetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xb4e): undefined reference to `WebPMuxGetChunk'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libFreeImage.a(PluginWebP.cpp.o): in function `Save(FreeImageIO*, FIBITMAP*, void*, int, int, void*)':
PluginWebP.cpp:(.text+0xe4d): undefined reference to `WebPMuxSetImage'
/usr/bin/ld: PluginWebP.cpp:(.text+0xe9d): undefined reference to `WebPMuxSetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xf08): undefined reference to `WebPMuxSetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xf6e): undefined reference to `WebPMuxSetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xf84): undefined reference to `WebPMuxAssemble'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libFreeImage.a(PluginWebP.cpp.o): in function `Close(FreeImageIO*, void*, void*)':
PluginWebP.cpp:(.text+0x15d): undefined reference to `WebPMuxDelete'
collect2: error: ld returned 1 exit status

CMakeLists.txt
cmake_minimum_required (VERSION 3.15)
project (ImageProcessingTests)

find_package(Catch2 CONFIG REQUIRED)
find_package(freeimage CONFIG REQUIRED)

add_executable (${PROJECT_NAME} main.cpp image-processing-tests.cpp)
target_link_libraries (
        ${PROJECT_NAME} PRIVATE Catch2::Catch2 freeimage::FreeImage
        -fopenmp
        -lpthread)

ppaet@ubuntu-box-0002:~/_repos/sw_dev/build/vcpkg$ ./vcpkg list
catch2:x64-linux                                   2.13.1           A modern, header-only test framework for unit te...
freeglut:x64-linux                                 3.2.1-4          Open source implementation of GLUT with source a...
freeimage:x64-linux                                3.18.0#17        Support library for graphics image formats
jasper:x64-linux                                   2.0.20           Open source implementation of the JPEG-2000 Part...
josuttis-jthread:x64-linux                         2020-07-21#1     C++ class for a joining and cooperative interrup...
jxrlib:x64-linux                                   2019.10.9#2      Open source implementation of the jpegxr image f...
lcms:x64-linux                                     2.11             Little CMS.
libffi:x64-linux                                   3.3#6            Portable, high level programming interface to va...
libjpeg-turbo:x64-linux                            2.0.5            libjpeg-turbo is a JPEG image codec that uses SI...
liblzma:x64-linux                                  5.2.5#1          Compression library with an API similar to that ...
libpng:x64-linux                                   1.6.37#12        libpng is a library implementing an interface fo...
libraw:x64-linux                                   201903-3         raw image decoder library
libwebp:x64-linux                                  1.1.0#1          WebP codec: library to encode and decode images ...
libwebp[nearlossless]:x64-linux                                     Enable near-lossless encoding
libwebp[simd]:x64-linux                                             Enable any SIMD optimization.
opencl:x64-linux                                   2.2#4            C/C++ headers and ICD loader (Installable Client...
openexr:x64-linux                                  2.5.0#1          OpenEXR is a high dynamic-range (HDR) image file...
opengl:x64-linux                                   0.0-7            Open Graphics Library (OpenGL)[3][4][5] is a cro...
openjpeg:x64-linux                                 2.3.1#2          JPEG 2000 image library
openssl:x64-linux                                  1.1.1h#2         OpenSSL is an open source project that provides ...
python3:x64-linux                                  3.8.3#2          The Python programming language as an embeddable...
tiff:x64-linux                                     4.1.0            A library that supports the manipulation of TIFF...
zlib:x64-linux                                     1.2.11#9         A compression library

Hi @PhilippPaetzold
Thanks for posting this issue.
Could you please help provide these contents in main.cpp image-processing-tests.cpp files?
Thanks.

Hi Nancy,
thank you for the quick response. I can not attach the full source code of these files, as its confidential. I will however create a minimal source code example reproducing the problem and attach it to this issue. Please give me a couple of days for this.

Hi Nancy,
sorry, it took me awhile. I wrote a minimal source code example:
[main.cpp]
#include <FreeImage.h>
#include <string>

int main ()
{
    FreeImage_Initialise();
    std::string fileName = "test.png";
    FREE_IMAGE_FORMAT imageFormat = FreeImage_GetFileType (fileName.c_str(), 0);
    FIBITMAP* hBitmap = FreeImage_Load (imageFormat, fileName.c_str());
    FreeImage_Unload (hBitmap);
    FreeImage_DeInitialise();

    return 0;
}

[CMakeLists.txt]
cmake_minimum_required (VERSION 3.15)
project (ImageProcessingTests)

find_package(freeimage CONFIG REQUIRED)

add_executable (${PROJECT_NAME} main.cpp)
target_link_libraries (${PROJECT_NAME} PRIVATE freeimage::FreeImage freeimage::FreeImagePlus -fopenmp)

I get errors during linking:
Build configuration: RELEASE
-- Configuring done
-- Generating done
-- Build files have been written to: /home/roeber/_repos/sw_dev/cmake-build-relwithdebinfo
[ 50%] Linking CXX executable ../../../bin/ImageProcessingTests
/usr/bin/ld: ../../../../build/vcpkg/installed/x64-linux/lib/libjpegxr.a(strenc.c.o): in function `StrIOEncInit':
strenc.c:(.text+0xf04): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/usr/bin/ld: ../../../../build/vcpkg/installed/x64-linux/lib/libFreeImage.a(PluginWebP.cpp.o): in function `Open(FreeImageIO*, void*, int)':
PluginWebP.cpp:(.text+0x22e): undefined reference to `WebPMuxCreateInternal'
/usr/bin/ld: PluginWebP.cpp:(.text+0x26e): undefined reference to `WebPNewInternal'
/usr/bin/ld: ../../../../build/vcpkg/installed/x64-linux/lib/libFreeImage.a(PluginWebP.cpp.o): in function `Load(FreeImageIO*, void*, int, int, void*)':
PluginWebP.cpp:(.text+0x340): undefined reference to `WebPMuxGetFeatures'
/usr/bin/ld: PluginWebP.cpp:(.text+0x361): undefined reference to `WebPMuxGetFrame'
/usr/bin/ld: PluginWebP.cpp:(.text+0xac6): undefined reference to `WebPMuxGetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xb1e): undefined reference to `WebPMuxGetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xb4e): undefined reference to `WebPMuxGetChunk'
/usr/bin/ld: ../../../../build/vcpkg/installed/x64-linux/lib/libFreeImage.a(PluginWebP.cpp.o): in function `Save(FreeImageIO*, FIBITMAP*, void*, int, int, void*)':
PluginWebP.cpp:(.text+0xe4d): undefined reference to `WebPMuxSetImage'
/usr/bin/ld: PluginWebP.cpp:(.text+0xe9d): undefined reference to `WebPMuxSetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xf08): undefined reference to `WebPMuxSetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xf6e): undefined reference to `WebPMuxSetChunk'
/usr/bin/ld: PluginWebP.cpp:(.text+0xf84): undefined reference to `WebPMuxAssemble'
/usr/bin/ld: ../../../../build/vcpkg/installed/x64-linux/lib/libFreeImage.a(PluginWebP.cpp.o): in function `Close(FreeImageIO*, void*, void*)':
PluginWebP.cpp:(.text+0x15d): undefined reference to `WebPMuxDelete'
collect2: error: ld returned 1 exit status
make[3]: *** [roeber/_shared/ImageProcessing.Tests/CMakeFiles/ImageProcessingTests.dir/build.make:139: bin/ImageProcessingTests] Error 1
make[2]: *** [CMakeFiles/Makefile2:595: roeber/_shared/ImageProcessing.Tests/CMakeFiles/ImageProcessingTests.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:602: roeber/_shared/ImageProcessing.Tests/CMakeFiles/ImageProcessingTests.dir/rule] Error 2
make: *** [Makefile:249: ImageProcessingTests] Error 2

I think the issue is with the WebP library. Vcpgk seems to have installed alongside FreeImage:
roeber@roeber-osg-0002:~/_repos/sw_dev/build/vcpkg$ ./vcpkg list
...
freeimage:x64-linux                                3.18.0#17        Support library for graphics image formats
...
libwebp:x64-linux                                  1.1.0#1          WebP codec: library to encode and decode images ...
libwebp[nearlossless]:x64-linux                                     Enable near-lossless encoding
libwebp[simd]:x64-linux                                             Enable any SIMD optimization.
...

Thank you so much for looking into it. I really appreciate your work on vcpkg and I think its one of the best package managers for C++!

Thanks for your above info @PhilippPaetzold.
I will test this on my machine and update the status once finished.

Confirmed  this is a bug for freeimage. I will investigate and fix it later.

You can update these codes in CMaeLists.txt:
Update find_package(WebP     REQUIRED)   as find_package(WebP  CONFIG    REQUIRED)
Update ${WEBP_LIBRARIES} as  WebP::libwebpmux
Please help confirm if this can work fine for you.

Thank you @NancyLi1013. This is working for me.

I think I found the reason for the linker errors when building the other source code project.
In the other project I also link with OpenCV, which I also installed with vcpkg. If you use the small sample project and also add OpenCV as a dependency, it can be reproduced:
cmake_minimum_required (VERSION 3.15)
project (testbench)

find_package (freeimage CONFIG REQUIRED)
find_package (WebP CONFIG REQUIRED)
find_package (OpenCV REQUIRED)

add_executable (${PROJECT_NAME} main.cpp)
target_link_libraries (${PROJECT_NAME} PRIVATE freeimage::FreeImage WebP::libwebpmux ${OpenCV_LIBS} -fopenmp)

Hi @NancyLi1013,
should I open a new issue for this?

Sorry for the late response. I haven't investigate it yet.
I think you can open a new issue for this if it is a new problem for freeimage. If not, we can reopen this issue.

Ok, Since I don't know if its related to FreeImage, I leave this issue open then. Thank you for your help.

Hi @NancyLi1013,
I think the issue is related to an incompatibility between one of the FreeImage libraries and the OpenCV lib "opencv_imgcodecs". If I explicitly avoid linking to "opencv_imgcodecs" in my CMakeLists.txt, I can get my application to link without any issue:
target_link_libraries (${PROJECT_NAME} PRIVATE opencv_core freeimage::FreeImage WebP::libwebpmux -fopenmp)

I hope this information can help you!

Thanks for your above information and further investigation about this issue.
I will check this point on my machine.

For these error, which are related with jxrlib. I need to investigate and confirm.
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlue.c.o): in function `PKCodecFactory_CreateDecoderFromFile':
JXRGlue.c:(.text+0x833): undefined reference to `CreateWS_File'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlue.c.o): in function `PKCreateFactory':
JXRGlue.c:(.text+0x8c5): undefined reference to `CreateWS_File'
/usr/bin/ld: JXRGlue.c:(.text+0x8d0): undefined reference to `CreateWS_Memory'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o): in function `PKImageDecode_Copy_WMP':
JXRGlueJxr.c:(.text+0x303): undefined reference to `ImageStrDecInit'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x44a): undefined reference to `ImageStrDecDecode'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x722): undefined reference to `ImageStrDecDecode'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x7b7): undefined reference to `ImageStrDecTerm'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x7f9): undefined reference to `ImageStrDecInit'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x858): undefined reference to `ImageStrDecTerm'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x903): undefined reference to `ImageStrDecTerm'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x921): undefined reference to `ImageStrDecInit'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x94e): undefined reference to `ImageStrDecInit'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x971): undefined reference to `ImageStrDecTerm'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o): in function `PKImageEncode_Transcode_WMP':
JXRGlueJxr.c:(.text+0x252e): undefined reference to `WMPhotoTranscode'
/usr/bin/ld: JXRGlueJxr.c:(.text+0x2597): undefined reference to `WMPhotoTranscode'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeContent_Init':
JXRGlueJxr.c:(.text+0x2763): undefined reference to `ImageStrEncInit'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeContent_Encode':
JXRGlueJxr.c:(.text+0x286d): undefined reference to `ImageStrEncEncode'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeContent_Term':
JXRGlueJxr.c:(.text+0x28d0): undefined reference to `ImageStrEncTerm'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeAlpha_Init':
JXRGlueJxr.c:(.text+0x2b38): undefined reference to `ImageStrEncInit'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeAlpha_Encode':
JXRGlueJxr.c:(.text+0x2c46): undefined reference to `ImageStrEncEncode'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeAlpha_Term':
JXRGlueJxr.c:(.text+0x2ef0): undefined reference to `ImageStrEncTerm'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o): in function `PKImageDecode_Initialize_WMP':
JXRGlueJxr.c:(.text+0x40dd): undefined reference to `ImageStrDecGetInfo'
collect2: error: ld returned 1 exit status

If you want to reproduce / narrow down the problem, you can use the following small test project:
[main.cpp]
#include <FreeImage.h>
#include <opencv2/opencv.hpp>
#include <string>

int main ()
{
    FreeImage_Initialise();
    std::string fileName = "test.png";
    FREE_IMAGE_FORMAT imageFormat = FreeImage_GetFileType (fileName.c_str(), 0);
    FIBITMAP* hBitmap = FreeImage_Load (imageFormat, fileName.c_str());

    const int width = FreeImage_GetWidth(hBitmap);
    const int height = FreeImage_GetHeight(hBitmap);
    const int bpp = FreeImage_GetBPP(hBitmap);
    const BYTE* pData = FreeImage_GetBits(hBitmap);
    const size_t pitch = FreeImage_GetPitch(hBitmap);

    // Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP);
    cv::Mat cvDib (height, width, CV_MAKETYPE(bpp, 3), (void*)pData, (size_t)pitch);

    FreeImage_Unload (hBitmap);
    FreeImage_DeInitialise();

    return 0;
}

[CMakeLists.txt]
cmake_minimum_required (VERSION 3.15)
project (testbench)

find_package (freeimage CONFIG REQUIRED)
find_package (OpenCV CONFIG REQUIRED)

add_executable (${PROJECT_NAME} main.cpp)
target_link_libraries (${PROJECT_NAME} PRIVATE
        opencv_calib3d;
        opencv_core;
        opencv_dnn;
        opencv_features2d;
        opencv_flann;
        # opencv_highgui;
        # opencv_imgcodecs;
        opencv_imgproc;
        opencv_ml;
        opencv_objdetect;
        opencv_photo;
        opencv_stitching;
        opencv_video;
        #opencv_videoio
        freeimage::FreeImage
        WebP::libwebpmux
        -fopenmp)

The example above compiles and runs without errors. When I comment in one of the opencv-libs: opencv_highgui, opencv_imgcodecs OR opencv_videoio, I get the following errors:
[100%] Linking CXX executable ../../../../bin/debug/testbench
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlue.c.o): in function `PKCreateFactory':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlue.c:367: undefined reference to `CreateWS_File'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlue.c:368: undefined reference to `CreateWS_Memory'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlue.c.o): in function `PKCodecFactory_CreateDecoderFromFile':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlue.c:419: undefined reference to `CreateWS_File'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeContent_Init':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:812: undefined reference to `ImageStrEncInit'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeContent_Encode':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:836: undefined reference to `ImageStrEncEncode'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeContent_Term':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:848: undefined reference to `ImageStrEncTerm'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeAlpha_Init':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:938: undefined reference to `ImageStrEncInit'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeAlpha_Encode':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:960: undefined reference to `ImageStrEncEncode'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeAlpha_Term':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:972: undefined reference to `ImageStrEncTerm'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_Transcode_WMP':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1413: undefined reference to `WMPhotoTranscode'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1425: undefined reference to `WMPhotoTranscode'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageDecode_Initialize_WMP':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1855: undefined reference to `ImageStrDecGetInfo'
/usr/bin/ld: ../../../../../build/vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageDecode_Copy_WMP':
/home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1984: undefined reference to `ImageStrDecInit'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1998: undefined reference to `ImageStrDecTerm'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2000: undefined reference to `ImageStrDecInit'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2026: undefined reference to `ImageStrDecDecode'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2049: undefined reference to `ImageStrDecTerm'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2105: undefined reference to `ImageStrDecInit'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2117: undefined reference to `ImageStrDecTerm'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2118: undefined reference to `ImageStrDecInit'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2126: undefined reference to `ImageStrDecDecode'
/usr/bin/ld: /home/roeber/_repos/sw_dev/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2131: undefined reference to `ImageStrDecTerm'
collect2: error: ld returned 1 exit status
make[3]: *** [roeber/os_g/cpp/testbench/CMakeFiles/testbench.dir/build.make:153: bin/debug/testbench] Error 1
make[2]: *** [CMakeFiles/Makefile2:781: roeber/os_g/cpp/testbench/CMakeFiles/testbench.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:788: roeber/os_g/cpp/testbench/CMakeFiles/testbench.dir/rule] Error 2
make: *** [Makefile:327: testbench] Error 2

Hope this helps

Hi @NancyLi1013,
is there any progress on this?

Hi @NancyLi1013,
is there any progress on this?

@PhilippPaetzold
Sorry for the long delay. I will try to check this these days and update the status ASAP.

@PhilippPaetzold
Sorry for the long delay. I will try to check this these days and update the status ASAP.

Hi @PhilippPaetzold
I cannot reproduce this issue on my machine now.
Could you please try to update vcpkg yo the latest version to rebuild this?

Hi @PhilippPaetzold
I cannot reproduce this issue on my machine now.
Could you please try to update vcpkg yo the latest version to rebuild this?

Hello, any update on this issue? I arrive at the same result when building colmap package. I am tried to install this on a HPC server so I had some difficulties arriving at the last step of the package installation. For example, I had to manually remove the dependency to SQL from qt5. But I do not think this is the issue. Something related to some globally installed package that is creating a conflict? Or maybe an expected library that is not found. Thank you for your help.
P.S. I do not know if this issue would be more appropriate to be opened on the colmap repository. What do you think?
/mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlue.c.o):JXRGlue.c:function PKCodecFactory_CreateDecoderFromFile: error:             undefined reference to 'CreateWS_File'                                                                                753 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlue.c.o):JXRGlue.c:function PKCreateFactory: error: undefined reference to           'CreateWS_File'
754 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlue.c.o):JXRGlue.c:function PKCreateFactory: error: undefined reference to           'CreateWS_Memory'
755 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecInit'
756 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecDecode'
757 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecDecode'                                                                                758 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecTerm'                                                                                759 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecInit'
760 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecTerm'
761 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecTerm'
762 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecInit'
763 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecInit'
764 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageDecode_Copy_WMP: error: undefined           reference to 'ImageStrDecTerm'                                                                                765 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageEncode_Transcode_WMP: error: undefined      reference to 'WMPhotoTranscode'                                                                                766 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageEncode_Transcode_WMP: error: undefined      reference to 'WMPhotoTranscode'
767 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageEncode_EncodeContent_Init: error:           undefined reference to 'ImageStrEncInit'
768 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageEncode_EncodeContent_Encode: error:         undefined reference to 'ImageStrEncEncode'
769 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageEncode_EncodeContent_Term: error:           undefined reference to 'ImageStrEncTerm'                                                                                770 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageEncode_EncodeAlpha_Init: error:             undefined reference to 'ImageStrEncInit'
771 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageEncode_EncodeAlpha_Encode: error:           undefined reference to 'ImageStrEncEncode'                                                                                772 /mnt/irisgpfs/users/ccimarelli/source/vcpkg/installed/x64-linux/lib/libjxrglue.a(JXRGlueJxr.c.o):JXRGlueJxr.c:function PKImageEncode_EncodeAlpha_Term: error:             undefined reference to 'ImageStrEncTerm'

@ClaudioCimarelli
Could you please try to build the latest vcpkg?

Hi @PhilippPaetzold
I cannot reproduce this issue on my machine now.
Could you please try to update vcpkg yo the latest version to rebuild this?

@NancyLi1013
I will try it out this week and come back to you

Hi Nancy,
I tried it with the latest vcpkg version as you suggested and still run into linker errors when using the freeimage-lib together with opencv.
You can reproduce this under under Ubuntu 20.04 using GCC 9.3.0 x64 with my ZIP containing my project structure along with a simple test-project "testbench", which links with freeimage and opencv:
sw_test.zip
These are the steps for reproduction:

Unzip
Clone vcpkg into the local repo and into the folder: sw_test/build/vcpkg
cd sw_test/build/vcpkg
Build vcpkg: 		sudo ./bootstrap-vcpkg.sh
Install freeimage:x64: 	sudo ./vcpkg install freeimage
Install opencv:x64:	sudo ./vcpkg install opencv
Build by opening the sw_test root with your IDE (I tried VS Code with C++\Cmake Plugins and CLion 2020.3.2) and selecting the project "sw_test/roeber/testbench"

I get the following errors from the linker:
[main] Building folder: sw_test
[build] Starting build
[proc] Executing command: /usr/bin/cmake --build /home/roeber/_repos/sw_test/build --config Debug --target testbench -- -j 10
[build] Scanning dependencies of target testbench
[build] [ 50%] Building CXX object roeber/testbench/CMakeFiles/testbench.dir/main.cpp.o
[build] [100%] Linking CXX executable ../../bin/debug/testbench
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlue.c.o): in function `PKCreateFactory':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlue.c:367: undefined reference to `CreateWS_File'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlue.c:368: undefined reference to `CreateWS_Memory'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlue.c.o): in function `PKCodecFactory_CreateDecoderFromFile':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlue.c:419: undefined reference to `CreateWS_File'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeContent_Init':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:812: undefined reference to `ImageStrEncInit'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeContent_Encode':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:836: undefined reference to `ImageStrEncEncode'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeContent_Term':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:848: undefined reference to `ImageStrEncTerm'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeAlpha_Init':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:938: undefined reference to `ImageStrEncInit'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeAlpha_Encode':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:960: undefined reference to `ImageStrEncEncode'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_EncodeAlpha_Term':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:972: undefined reference to `ImageStrEncTerm'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageEncode_Transcode_WMP':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1413: undefined reference to `WMPhotoTranscode'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1425: undefined reference to `WMPhotoTranscode'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageDecode_Initialize_WMP':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1855: undefined reference to `ImageStrDecGetInfo'
[build] /usr/bin/ld: ../../vcpkg/installed/x64-linux/debug/lib/libjxrglued.a(JXRGlueJxr.c.o): in function `PKImageDecode_Copy_WMP':
[build] /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1984: undefined reference to `ImageStrDecInit'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:1998: undefined reference to `ImageStrDecTerm'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2000: undefined reference to `ImageStrDecInit'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2026: undefined reference to `ImageStrDecDecode'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2049: undefined reference to `ImageStrDecTerm'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2105: undefined reference to `ImageStrDecInit'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2117: undefined reference to `ImageStrDecTerm'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2118: undefined reference to `ImageStrDecInit'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2126: undefined reference to `ImageStrDecDecode'
[build] /usr/bin/ld: /home/roeber/_repos/sw_test/build/vcpkg/buildtrees/jxrlib/src/0dd9dbbdb4-4d68cbd583.clean/jxrgluelib/JXRGlueJxr.c:2131: undefined reference to `ImageStrDecTerm'
[build] collect2: error: ld returned 1 exit status
[build] make[3]: *** [roeber/testbench/CMakeFiles/testbench.dir/build.make:156: bin/debug/testbench] Error 1
[build] make[2]: *** [CMakeFiles/Makefile2:133: roeber/testbench/CMakeFiles/testbench.dir/all] Error 2
[build] make[1]: *** [CMakeFiles/Makefile2:140: roeber/testbench/CMakeFiles/testbench.dir/rule] Error 2
[build] make: *** [Makefile:118: testbench] Error 2
[build] Build finished with exit code 2

Hi @PhilippPaetzold
Seems it is related with jxrlib. I noticed that there is also another port colmop failed with the same error
https://github.com/colmap/colmap/issues/1104
So it should be a bug for jxrlib itself.
@traversaro
Could you please help take a look about this issue?
Thanks!

@traversaro
Could you please help take a look about this issue?

I contributed the jxrlib port back when vcpkg was Windows-only, and I am afraid that the CMake build system is only working properly on Windows and was never properly updated to work on Linux.
I found a similar issue in Arch: https://bugs.archlinux.org/task/59002 .
They solved it by using a CMakeLists.txt taken from Fedora: https://github.com/archlinux/svntogit-community/commit/caa26464835f2991d42dcd5fbf90df03af3a638f#diff-3e341d2d9c67be01819b25b25d5e53ea3cdf3a38d28846cda85a195eb9b7203a, you could look into adopting that one or at least understand the difference that is causing the problem (even if in that case it could be that the issue is hided by the use of shared library).

At a first glance, it seems that a few files that should be compiled as part of jxrgluelib are not compiled:

https://github.com/4creators/jxrlib/blob/master/image/sys/strcodec.c
https://github.com/4creators/jxrlib/blob/master/image/decode/strdec.c

And possible a few more, it should be sufficient to search for the missing symbols and check where they are defined (warning, for some reason the GitHub search does not seem to work on that repo). Probably it should be sufficient to add the missing files in the library in https://github.com/microsoft/vcpkg/blob/master/ports/jxrlib/CMakeLists.txt#L86 .

By the way, looking a bit at the jxrlib port, it seems that on Windows it was made static only in https://github.com/microsoft/vcpkg/commit/050e71d01dc9e65e6cdf1d13534fc14889e4ae38#diff-363a6074f19e7a27e72b719c2158397dedb95804836d7c1090a1195a8747353b by removing the use of CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS. However, in the case of that port the use of CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS was explicit and useful, so if you want you can add it back to support the use of jxrlib as a shared library on Windows.

Hi @NancyLi1013, is there any update about this issue?

Hi @PhilippPaetzold
Sorry for the long delay.
Now I can reproduce this problem with your project sample. I will try to look into jxrlib, but I'm not sure if I can figure out this.   I will try to do that anyway according to the above information from @traversaro.

Hi @PhilippPaetzold
Sorry for the long delay.
Now I can reproduce this problem with your project sample. I will try to look into jxrlib, but I'm not sure if I can figure out this. I will try to do that anyway according to the above information from @traversaro.

As mentioned in https://github.com/microsoft/vcpkg/issues/14498#issuecomment-778075186, I think it should just a matter of adding the missing files to the build. If you have any doubt @NancyLi1013 feel free to ping me in this issue.

@traversaro Thanks for your help.
I noticed that https://github.com/4creators/jxrlib/blob/master/image/sys/strcodec.c
https://github.com/4creators/jxrlib/blob/master/image/decode/strdec.c
these two files have been added to jpegxr . And jpegxr also is linked to jxrglue. So I think it's unnecessary to add the files to
jxrglue to compile.
https://github.com/microsoft/vcpkg/blob/master/ports/jxrlib/CMakeLists.txt#L98
For CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS, according to our policy, we prefer not to add CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS to the library unless the author of the library is already using it.
Please see https://github.com/microsoft/vcpkg/blob/master/docs/maintainers/maintainer-guide.md#do-not-add-cmake_windows_export_all_symbols

https://github.com/microsoft/vcpkg/blob/master/ports/jxrlib/CMakeLists.txt#L98
For CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS, according to our policy, we prefer not to add CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS to the library unless the author of the library is already using it.
Please see https://github.com/microsoft/vcpkg/blob/master/docs/maintainers/maintainer-guide.md#do-not-add-cmake_windows_export_all_symbols

I think the policy make sense for ports that provide the CMake-based build system themself. In this case, the CMakeLists.txt is part of the port, so the author of the CMakeLists.txt (me) was indeed explicitly using and totally intentionally.

I noticed that https://github.com/4creators/jxrlib/blob/master/image/sys/strcodec.c
https://github.com/4creators/jxrlib/blob/master/image/decode/strdec.c
these two files have been added to jpegxr . And jpegxr also is linked to jxrglue. So I think it's unnecessary to add the files to
jxrglue to compile.
https://github.com/microsoft/vcpkg/blob/master/ports/jxrlib/CMakeLists.txt#L98

Good catch! So we probably need to understand why jpegxr is not linked in this case, or if it is linked why is not providing the required symbols. Could it be simply a problem of order in which the static libraries are passed to the linker (similar to https://osrf-migration.github.io/ignition-gh-pages/#!/ignitionrobotics/ign-msgs/pull-requests/151/page/1)? It probably would be helpful to compile freeimage with full verbosity (ninja -v or make VERBOSE=1) to get the exact command.

@traversaro
Thanks for your further investigation.
Currently we can confirm that jpegxr has also been linked to freeimage::FreeImage, which can be verified via this in freeimage-target.cmake:
set_target_properties(freeimage::FreeImage PROPERTIES
  INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
  INTERFACE_LINK_LIBRARIES "${_IMPORT_PREFIX}/lib/libz.a;${_IMPORT_PREFIX}/lib/libjpeg.a;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/libtiff.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/libtiffd.a>;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/liblzma.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/liblzmad.a>;${_IMPORT_PREFIX}/lib/libjpeg.a;${_IMPORT_PREFIX}/lib/libz.a;m;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/libpng.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/libpng16d.a>;${_IMPORT_PREFIX}/lib/libz.a;m;openjp2;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/libwebp.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/libwebpd.a>;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/libwebpdecoder.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/libwebpdecoderd.a>;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/libwebpdemux.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/libwebpdemuxd.a>;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/libjpegxr.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/libjpegxrd.a>;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/libjxrglue.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/libjxrglued.a>;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/libraw.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/librawd.a>;\$<\$<NOT:\$<CONFIG:DEBUG>>:${_IMPORT_PREFIX}/lib/libjasper.a>;\$<\$<CONFIG:DEBUG>:${_IMPORT_PREFIX}/debug/lib/libjasperd.a>;${_IMPORT_PREFIX}/lib/libjpeg.a;OpenEXR::IlmImf"
)

For the order linker, there seems no dependent relations between the link libraries. So this is not related with this point.
Now I don't know how to figure out why is not providing the required symbols. Do you have any suggestions to investigate this ?

I can confirm that the linking issues does still(latest vcpkg and freeimage port) happen even without OpenCV being involved. Even with a simple project (CMakeLists.txt, main.cpp and vcpkg.json) like the following, I am getting linker errors when using freeimage in another project or application.
Effected Triplet: x64-linux only
cmake_minimum_required(VERSION 3.5)

project(freeimage_test VERSION 0.0.1 LANGUAGES CXX)

find_package(freeimage CONFIG REQUIRED)

add_executable(freeimage_test main.cpp)

target_link_libraries(freeimage_test PRIVATE freeimage::FreeImage)

#include <FreeImage.h>

int main(void)
{
    FreeImage_Initialise();
    FreeImage_DeInitialise();
    return 0;
}

{
    "name": "freeimagetest",
    "version": "0.0.1",
    "supports": "x64",
    "dependencies": [
        "freeimage"
    ]
}

Shared below is the error log - to me it seems all dependencies of freeimage are not being found even though they are appear in the INTERFACE_LINK_LIBRARIES property of the freeimage target.
error.log
hopefully this will shed more light on the root cause of it.

Need link to libgomp.

~Need link to libgomp.~
No, we don't have gomp now, curious why you need it.

@JackBoosY Assuming the question was to me. What I shared in the comment is the whole project, I don't use OpenMP anywhere directly unless freeimage is trying to use it. Those three code snippets is the entirety of the minimal project setup that gave me the linker errors. I tried this minimal setup after getting errors in another project to see if it was my project or freeimage in vcpkg that is causing the problem.

We have had no issues with FreeImage at all!
Just built FreeImage 3.18.0 from source.

FYI

FreeImage tests:
$ ./testAPI
FreeImage version: 3.18.0
This program uses FreeImage, a free, open source image library supporting all common bitmap formats.
File size : 166290
testMemIO ...

*** JPEG Format
FreeImage_SaveToHandle: cannot save "header only" formats ***
testExifRaw ...
testThumbnail ...
... exif.jpg contains a thumbnail whose size is 128x85

@sfhacker To clarify the problem I reported happens when FreeImage built with vcpkg for triplet x64-linux is used in any cmake application. For x64-linux vcpkg builds freeimage as static library. I was able to build freeimage from source fine.

@9prady9 Did you ever solve this problem?
Basically, I'm seeing something similar:
To successfully link freeimage statically (I'm on Ubuntu 18.04), in addition to the cmake usage requirements of freeimage,
I need to also call find_package(WebP CONFIG REQUIRED) and then link WebP::libwebpmux and -fopenmp.
Thanks!

@9prady9 Did you ever solve this problem?
Basically, I'm seeing something similar:
To successfully link freeimage statically (I'm on Ubuntu 18.04), in addition to the cmake usage requirements of freeimage,
I need to also call find_package(WebP CONFIG REQUIRED) and then link WebP::libwebpmux and -fopenmp.
Thanks!

Sorry, I am missing the context. Did I report similar issue in the past ?
I have faced some issues with vcpkg on linux. It has been a while though. Can't recollect now.

Sorry, didn't reference your original reply: https://github.com/microsoft/vcpkg/issues/14498#issuecomment-824792872
I'm seeing similar errors (with GOMP, etc) to what you have in the error.log file you posted.

Sorry, didn't reference your original reply: #14498 (comment)
I'm seeing similar errors (with GOMP, etc) to what you have in the error.log file you posted.

That is alright. I couldn't see all the conversations on GitHub mobile. I will check over the weekend and let you know.

I will try to fix this issue in these days.

Can anyone test my PR https://github.com/microsoft/vcpkg/pull/22336 whether it works plz?

I think this issue was closed by mistake. There are two issues here:

vcpkg freeimage does not declare WebP::libwebpmux as dependency and will cause linking issue when used. This issue doesn't seem to be fixed even in master.

vcpkg freeimage, when used together with OpenCV (and possibly other libraries), causes linking issues related to jxr.  This issue seems to have been fixed by the last update to jxrlib (2019.10.9, port-version 3).

@yuanchen-zhu I will take a look.

This issue is over a year old and still impacting users!
Seems really hard to troubleshoot and fix.
How can we reproduce this issue locally?
Cheers.

@sfhacker To reproduce it, use https://github.com/microsoft/vcpkg/issues/14498#issuecomment-727915447 and build under linux.

@sfhacker To reproduce it, use #14498 (comment) and build under linux.

Reproducing...

Confirmed:
/home/usr/work/vcpkg/installed/x64-linux/lib/libjpegxr.a(strenc.c.o): In function `StrIOEncInit':
strenc.c:(.text+0xe94): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/home/usr/work/vcpkg/installed/x64-linux/debug/lib/libFreeImaged.a(PluginWebP.cpp.o): In function `WebPMuxNew':
/home/usr/work/vcpkg/installed/x64-linux/include/webp/mux.h:114: undefined reference to `WebPNewInternal'
/home/usr/work/vcpkg/installed/x64-linux/debug/lib/libFreeImaged.a(PluginWebP.cpp.o): In function `WebPMuxCreate':
/home/usr/work/vcpkg/installed/x64-linux/include/webp/mux.h:138: undefined reference to `WebPMuxCreateInternal'
/home/usr/work/vcpkg/installed/x64-linux/debug/lib/libFreeImaged.a(PluginWebP.cpp.o): In function `Close(FreeImageIO*, void*, void*)':
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:203: undefined reference to `WebPMuxDelete'
/home/usr/work/vcpkg/installed/x64-linux/debug/lib/libFreeImaged.a(PluginWebP.cpp.o): In function `Load(FreeImageIO*, void*, int, int, void*)':
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:356: undefined reference to `WebPMuxGetFeatures'
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:362: undefined reference to `WebPMuxGetFrame'
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:373: undefined reference to `WebPMuxGetChunk'
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:381: undefined reference to `WebPMuxGetChunk'
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:403: undefined reference to `WebPMuxGetChunk'
/home/usr/work/vcpkg/installed/x64-linux/debug/lib/libFreeImaged.a(PluginWebP.cpp.o): In function `Save(FreeImageIO*, FIBITMAP*, void*, int, int, void*)':
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:591: undefined reference to `WebPMuxSetImage'
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:608: undefined reference to `WebPMuxSetChunk'
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:622: undefined reference to `WebPMuxSetChunk'
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:636: undefined reference to `WebPMuxSetChunk'
/home/usr/work/vcpkg/buildtrees/freeimage/src/9d9cc7e2d5-e3148e0804.clean/Source/FreeImage/PluginWebP.cpp:644: undefined reference to `WebPMuxAssemble'
collect2: error: ld returned 1 exit status

sudo apt-get install libfreeimage3 libfreeimage-dev
Source: https://forums.developer.nvidia.com/t/freeimage-is-not-set-up-correctly-please-ensure-freeimae-is-set-up-correctly/66950

sudo apt-get install libfreeimage3 libfreeimage-dev
Hopefully, This will solve the issue.

This is a solution which conflicts with vcpkg build of freeimage, so it is invalid.


Bibliography module

Linguistic Bibliographies - i.e. list of references linked to languages - are a fairly common and simple datatype. E.g.

https://ldh.clld.org/
Glottolog ref providers

Often, the BibTeX format - used for the bibliographic info - is slightly abused by adding additional metadata to records, e.g. Glottolog's Doctype. Wrapping such bibliographies into CLDF datasets could make such metadata more transparent - as well as the language links. A CLDF module Bibliography could consist of

a LanguageTable with a list-valued foreign key contributionReference
a ContributionTable listing additional metadata of bib records with a source field linking to
BibTeX records

I think the biblesources that I created as a test case for handling bible data would also account for this module (just made them visible): https://github.com/cldf-datasets/biblesources/blob/main/cldf/languages.csv

@xrotwang, in the context of CLD, I would call the contributionReference now a "resource" and assume some triple that links a Language_ID via a Resource to some kind of Information. I think apart from the different wording, this would be in line with this proposal. But what I would envision is that a Contribution can in theory link to various sources in BibTex. This would essentially happen in those cases where we assume multiple editions or multiple prints with different locations of the same reference, but also BibTeX records assembled from different sources.
The advantage is that we could avoid to be forced to clean individual bibliographic references at once, but rather would say the Referenc is what we want to reflect the resource.

In BIBFRAME, this distinction is made via "Work" and "Instance", see https://www.loc.gov/bibframe/docs/bibframe2-model.html which is also supported by DNB, see https://www.dnb.de/EN/Professionell/ProjekteKooperationen/Projekte/BIBFRAME/bibframe_node.html

Perfect, thanks!