Support sink metadata within an spkg

Subgraphs are deployable units: packages that can be sent to someone with the proper runtime, and turned into fully fledged service.
Substreams are packageable, but are not deployable units themselves, since they don't offer a query layer. They are only the transformation layer. The sinks are the components that turn a Substreams into something deployable, where with the proper runtime, it can be turned into a fully fledged service (graph-node being one of them).
I propose that Substreams Packages be augmented with a single field, called sink_meta of type pbany.Any at the end of https://github.com/streamingfast/substreams/blob/develop/proto/sf/substreams/v1/package.proto#L10-L22
Adding a single field at the top-level Package, means that a serialized spkg file could simply be appended with additional metadata.
Prometheus example
The substreams-prometheus-sink reads Substreams output in a certain shape, and writes to Prometheus - a popular time series database. However, certain things need to be known about the data being written - schemas, help strings, declaration of metrics, etc.. The current Package format has no space to accomodate such metadata.
With a conventional field of type Any (which includes a fully qualified protobuf message name, and serialized bytes for that message), the substreams CLI could print whether some sink metadata is attached (with its type). Optionally provide details if the sink metadata becomes well known. Sinks could read their Substreams dependencies and configuration from a single location: the spkg file.
Postgres example
Another example would be PostgreSQL sink:

the Substreams module could prepare the data for output, but it does not make sense for any map or store module to provide the schema of the target database
having sink_meta information could convey the SQL schema needed to initialize the database when the sink needs it.

Tooling
The prometheus sink could provide the tooling necessary to take in its manifest (ideally staying close to the Substreams experience, say prometheus-sink.yaml), and build up its protobuf message and "bundle" it with the spkg, turning the spkg package into a deployable unit.
I'm unsure if the extension should change to indicate that an spkg is now a bundled package. Some possibilities:

mysubstreamsmodule-v1.0.2.spkg (bundled and unbundled alike)
mysubstreamsmodule-v1.0.2.spkgs meaning bundled with a sink configuration
mysubstreamsmodule-v1.0.2.prometheus.spkg to indicate the spkg is bundled with prometheus configuration?
mysubstreamsmodule-v1.0.2.nicegraphs-v2.0.4+prometheus.spkg to indicate the versions of both layers (transform and load/query)
mysubstreamsmodule-v1.0.2.nicegraphs-v2.0.4.prometheus.spkg ? This seems like the most complete.

Where an example prometheus manifest (prometheus_sink.yaml) could look like:
package:
  name: nicegraphs
  version: v2.0.4

metrics:
  this_metric: Help string of the metric
  this_other_metric: Help string of that metric
labels:
  this_label: Meaning of that label

grafana_dashboards: grafana.json

and where the grafana.json file would be packaged in, and attached to the spkg.
This package would have everything needed for a successful deployment, as a single deployable unit.
Prior art

Docker containers are another deployable unit type that exists. However, they require a very different sandboxing and trust layer, making it more risky to receive packages to deploy from unknown participants in a permissionless network
WASM (and WASI) in particular are becoming nicely isolated deployable components, where the WebAssembly runtimes can be much more isolated and secure than Docker images.  However this wouldn't accomodate a large number of software that is desirable to deploy from an indexing perspective: the whole of Prometheus + Grafana, PostgreSQL and the likes, won't be able to run easily in the tight WASM environment.

Having specialized runtimes, with Substreams Packages as deployable units seem to be very fitting to our use cases, and warrant the further development of its format.
Is this the right abstraction?
If we consider Substreams as the transformation layer, and the Prometheus insertion as the "load" layer. We should think of the Grafana dashboards as the "query" layer, separate from "load". If we stretch our thinking here, we should imagine how to accomodate that additional query_metadata field right away.
Filenames could look like:

mysubstreamsmod-v1.0.2.myprommetrics-v3.2.3.myhugedashboards-v4.3.2.prometheus.grafana.spkg
mysubstreamsmod-v1.0.2.myprommetrics-v3.2.3.prometheus.myhugedashboards-v4.3.2.grafana.spkg
mysubstreamsmod-v1.0.2_myprommetrics-v3.2.3_myhugedashboards-v4.3.2.spkg (and leave the users name things meaningfully)
mysubstreamsmod-v1.0.2_myprommetrics-v3.2.3_myhugedashboards-v4.3.2.spkg+prom+grafana

That's pretty unwieldy, but we can imagine someone wanting to just update the dashboards, without redeploying the sink with its config (not reload postgres from scratch, etc..)
/cc @DenisCarriere @azf20 @fubhy

The bundle tool would need to be in each sink, though, unless there's a generalizable packer from sink manifests to a corresponding Protobuf message (that the substreams CLI doesn't know about initially?).
There are two options:

Either we have a singlesink_meta in the Substreams Package. And perhaps that sink protobuf contains its own query_meta.
or we have sink_meta + query_meta in the Substreams Package.

Option 1) means that we can't know if there's a query config in the package, because the substreams CLI is general, and doesn't know about all the possible sinks. All it can know is that there is a sf.whatever.sink.v1.KV configured in this package. You'll need to use the sinkkv toolkit to view the specific configuration. UNLESS the bundle operation also adds the required protobuf, in which case you could have a JSON view of the sink_meta.
Option 2) would allow us to know more about what's in the package, know if it's a deployable query layer also. Having that top-level would allow the package to be characterised as "deployable reading software", and the sink_meta could be characterised as "deployable writing software" taking its input from a sink.

There may be multiple possible sinks for one substream? How to handle that?

This is a dump of the previous issue's content, for reference. The main comment of the issue will contain what we've decided to go forward with.

Subgraphs are deployable units: packages that can be sent to someone with the proper runtime, and turned into fully fledged service.
Substreams are packageable, but are not deployable units themselves, since they don't offer a query layer. They are only the transformation layer. The sinks are the components that turn a Substreams into something deployable, where with the proper runtime, it can be turned into a fully fledged service (graph-node being one of them).
I propose that Substreams Packages be augmented with a single field, called sink_meta of type pbany.Any at the end of https://github.com/streamingfast/substreams/blob/develop/proto/sf/substreams/v1/package.proto#L10-L22
Adding a single field at the top-level Package, means that a serialized spkg file could simply be appended with additional metadata.
Prometheus example
The substreams-prometheus-sink reads Substreams output in a certain shape, and writes to Prometheus - a popular time series database. However, certain things need to be known about the data being written - schemas, help strings, declaration of metrics, etc.. The current Package format has no space to accomodate such metadata.
With a conventional field of type Any (which includes a fully qualified protobuf message name, and serialized bytes for that message), the substreams CLI could print whether some sink metadata is attached (with its type). Optionally provide details if the sink metadata becomes well known. Sinks could read their Substreams dependencies and configuration from a single location: the spkg file.
Postgres example
Another example would be PostgreSQL sink:

the Substreams module could prepare the data for output, but it does not make sense for any map or store module to provide the schema of the target database
having sink_meta information could convey the SQL schema needed to initialize the database when the sink needs it.

Tooling
The prometheus sink could provide the tooling necessary to take in its manifest (ideally staying close to the Substreams experience, say prometheus-sink.yaml), and build up its protobuf message and "bundle" it with the spkg, turning the spkg package into a deployable unit.
I'm unsure if the extension should change to indicate that an spkg is now a bundled package. Some possibilities:

mysubstreamsmodule-v1.0.2.spkg (bundled and unbundled alike)
mysubstreamsmodule-v1.0.2.spkgs meaning bundled with a sink configuration
mysubstreamsmodule-v1.0.2.prometheus.spkg to indicate the spkg is bundled with prometheus configuration?
mysubstreamsmodule-v1.0.2.nicegraphs-v2.0.4+prometheus.spkg to indicate the versions of both layers (transform and load/query)
mysubstreamsmodule-v1.0.2.nicegraphs-v2.0.4.prometheus.spkg ? This seems like the most complete.

Where an example prometheus manifest (prometheus_sink.yaml) could look like:
package:
  name: nicegraphs
  version: v2.0.4

source:
  package: my-package.spkg
  module: prom_out
  #start_block: -1000

metrics:
  this_metric: Help string of the metric
  this_other_metric: Help string of that metric
labels:
  this_label: Meaning of that label

grafana_dashboards: grafana.json

and where the grafana.json file would be packaged in, and attached to the spkg.
This package would have everything needed for a successful deployment, as a single deployable unit.
Implementable as:
substreams-sink-prometheus pack ./manifest.yaml
Prior art

Docker containers are another deployable unit type that exists. However, they require a very different sandboxing and trust layer, making it more risky to receive packages to deploy from unknown participants in a permissionless network
WASM (and WASI) in particular are becoming nicely isolated deployable components, where the WebAssembly runtimes can be much more isolated and secure than Docker images.  However this wouldn't accomodate a large number of software that is desirable to deploy from an indexing perspective: the whole of Prometheus + Grafana, PostgreSQL and the likes, won't be able to run easily in the tight WASM environment.

Having specialized runtimes, with Substreams Packages as deployable units seem to be very fitting to our use cases, and warrant the further development of its format.
Is this the right abstraction?
If we consider Substreams as the transformation layer, and the Prometheus insertion as the "load" layer. We should think of the Grafana dashboards as the "query" layer, separate from "load". If we stretch our thinking here, we should imagine how to accomodate that additional query_metadata field right away.
Filenames could look like:

mysubstreamsmod-v1.0.2.myprommetrics-v3.2.3.myhugedashboards-v4.3.2.prometheus.grafana.spkg
mysubstreamsmod-v1.0.2.myprommetrics-v3.2.3.prometheus.myhugedashboards-v4.3.2.grafana.spkg
mysubstreamsmod-v1.0.2_myprommetrics-v3.2.3_myhugedashboards-v4.3.2.spkg (and leave the users name things meaningfully)
mysubstreamsmod-v1.0.2_myprommetrics-v3.2.3_myhugedashboards-v4.3.2.spkg+prom+grafana

That's pretty unwieldy, but we can imagine someone wanting to just update the dashboards, without redeploying the sink with its config (not reload postgres from scratch, etc..)
/cc @DenisCarriere @azf20 @fubhy

Example flow from developer to indexer operation, wanting to deploy a kvsink with the fixed gRPC endpoint:

Dev crafts the Substreams modules, writes the kv_out following https://github.com/streamingfast/substreams-sink-kv
Drafts a sink-kv.yaml manifest:

specVersion: v0.1.0
package:
  name: mysink
  version: v2.3.2

module: kv_out
package: my-substreams-v1.0.2.spkg

The dev runs:

$ substreams-sink-kv pack sink-kv.yaml
Writing mysink-v2.0.1.spkg

The spkg file contains the sf.substreams.kv.v1.SinkGenericQuery configuration protobuf message in the target_sink field, as well as the Substreams modules.

The dev ships the file to an indexer
The indexer then inspects the contents:

substreams inspect ./mysink-v2.0.1.spkg | grep ^target_sink |grep sf.substreams.kv.v1.SinkGenericQuery

and deploys or not, depending on whether he knows how to deploy such a unit:
if $? != 0; do echo Unsupported sink; exit 1; done

NETWORK=$(substreams tools network-env-var ./mysink-v2.0.1.spkg)  // transforms the `ethereum:mainnet`  value in `target_network` into ETHEREUM_MAINNET, and resolves any aliases
ENVVAR=MY_ENDPOINTS_CONFIGS_$NETWORK
ENDPOINT=${!ENVVAR}
if $ENDPOINT == ""; do echo Unsupported network $NETWORK; exit 1; done

substreams-sink-kv run -e $ENDPOINT mysink-v2.0.1.spkg

Of course, any more sophisticated deployment machinery can be built around, but the simple case is possible.

No additional comments, this plan to package sinks into deployable units sounds like a great idea.
There will be some additional tooling required to "pack" in the various sinks, but won't shouldn't be a barrier.
Simple manifests (ex: sink-kv.yaml) shouldn't be too hard for users to add that additional configuration that's related to sinks and outside of scope of the map modules.
👍

Some thoughts:

From the indexer side: I feel like this is focusing too much on some kind of one-click managed solution that is likely not feasible in many cases. Because it requires indexers not only to run all kind of managed services (Prometheus/Grafana/PostgreSQL/...) but it requires all of them to figure out automated deployments of spkgs metadata (for example I now need to figure out a way on how to auto configure Grafana to use some dashboard from the spkgs). It also requires a lot of security research (are we vulnerable from malicious input in the metadata or grafana.json dashboards for example?). And then you might even need another layer wrapped around the spkgs to do things like secret injections (where do you put your Google Api token for example when deploying a sheets-sink.spkgs?) or potential deployment configurations (how many virtual cores should be assigned to the deployment).

From the Substream developer side: I don't currently see a way how to make this easily deployable for myself. I want to have an easy and quick way to set this up locally for testing and development (including necessary dependencies such as PostgreSQL). I also want an easy way for me to deploy this to my own servers (without having to figure out how to set up my own runtime for deploying spkgs bundles).

I feel like the answer to both sides is likely Docker. Don't think sandboxing is too big of a deal if we want to have a cloud solution, we could just deploy Substreams to a VPS on a cloud provider for example. That way each substream deployment is contained in it's own virtual machine, no access to our internal networks.


Cover app with data-test for e2e testing (organism approach)

I've covered most of the storefront with tags which will allow for writing stable e2e tests.

Moved snapshots update to separate commit for easier review


karapace: using Event instead of Lock

Exclusive lock is not the right abstraction, instead the code should just make the readers wait until the state set by the writer is available, which happens only once.

this also fixes the issue warned by pylint:
karapace/master_coordinator.py:145:8: R1732: Consider using 'with' for resource-allocating operations (consider-using-with)


buf() print unsigned char * error

buf() PR https://github.com/iovisor/bpftrace/pull/1107,  @acj
Does buf() support unsigned char *data .
struct sk_buff {
  unsigned char *data;
  unsigned int data_len;
};

when
printf("%r\n", buf($skb->data, $skb->len));

get error:
bpftrace: /usr/include/llvm/IR/Instructions.h:1207: void llvm::ICmpInst::AssertOK(): Assertion `getOperand(0)->getType() == getOperand(1)->getType() && "Both operands to ICmp instruction are not of the same type!"' failed.
Aborted

Does buf() support this?

The problem is the unsigned int length argument. Should be fixed by the linked PR.


How to obtain xpub string representation from ExtPubKey

Newbie here trying to extract a xpub key from a mnemonic. I already have an instance of an ExtPubKey, but I haven't been able to get a string representation of it, how can I do it?

Never mind, I figured I could do this:
BitcoinExtPubKey seedMainNetPublickKey = derivedETHPublicKey.GetWif(Network.Main);
Console.WriteLine(seedMainNetPublickKey.ToString());


Error in saving name of cheatsheet JSON file

Appears to have been resolved - was being caused by old named JSON files on other computers when pulling new copy. To test if still occurring on new machines when possible.


Action column not ignored in editmode

v4.3.11
Having selection box enabled and going to editmode, makes the actions to its own column in edit mode. A bit hard to explain but please look at the picture:
OK display mode:

Not OK edit mode, extra column (actions?):

Guessing the bug is somewhere here by the look of the code: https://github.com/material-table-core/core/blob/master/src/components/MTableEditRow/index.js#L266-L284

Confirmed, this is the issue, removing this and everything works fine, treedata or not: https://github.com/material-table-core/core/blob/master/src/components/MTableEditRow/index.js#L276

Is this still a problem with the newest release?

Yes, just tried it out

Ok can you put that in a sandbox so we can check it with your setup? @Tobbe129

This is now fixed in latest version. GJ!


dummy error script

when the script can't be created due to an error
rather than creating an empty script, create a script that prints the error

after talking with users, we've come to a consensus that it would be preferable to simply log in the command output what went wrong rather than pushing a different script than what they intended to push

actually I still want this to be a thing put instead an opt in with an option like --dummy-scripts


v 1.3 - unread notification not working

Hi,
Just downloaded this, but cannot get notifications to work.  I have set it in preferences and its OK in settings.
cheers,
J.

agh, had to set it also in Fastmail manually (the setting in the app didn't change Fastmail's settings).
I got a notification in the notification screen, but not on there app icon itself though.

Hey! Thanks for reporting. Notifications are not exactly related to the badge you see on the app icon - you get notifications depending on your settings for Fastmail (Fastmate will simply display these notifications in the notification centre).
The badge is only related to the Fastmate settings and shows the unread count of the folders of your choice.
Have you encountered a case where you expect a badge but didn't see one? Could you let me know your Fastmate settings for the badge?

Hi,
yes, I have had unread mail but with no badge icon.
I have:
"show unread mail indicator" checked
"in dock" checked
"inbox" checked.

huh.  now it correctly showed an unread mail, but it is now read yet the badge still shows unread.  I am not sure it is updating properly.

OK, I think it may be do do with my naming "inbox" with a small "I".  I just changed it to a capital "I" and it seems to work now 👍

Cool! Maybe I should consider making it case insensitive...

nah, I think it is best to keep it as it is as FM's folders are case sensitive (I just made two identical ones except for a capital letter).
Hey, by the way - this is a great app!! :-)

Yeah that's true. Thank you! Let me know if you find anything else that doesn't work as expected!


[storage-blob] migrate to test recorder v2

Packages impacted by this PR
@azure/storage-blob
Issues associated with this PR
#23427
Describe the problem that is addressed by this PR
Migrate to use the latest test recorder based on the standard engsys test proxy. This will allow us to migrate recordings out of the repository in a future PR.
I did notice that some tests were not currently possible to re-record because they rely on unreleased service features or environment variables not created as part of test-resources.json. @EmmaZhu could you assist in adding these recordings back or provide instructions for how to deploy the necessary resources?

API change check
API changes are not detected in this pull request.

Looks great overall.
You've got amazing patience 💯.

/azp run js - storage-blob - tests

/azp run js - storage-blob - tests

/azp run js - storage-blob - tests


VSCode extension reload command loads multiple instances of lsp at the same time

UnoCSS version
0.55.1
Describe the bug
When running the UnoCSS: reload command for the VSCode extension, the previous instance still runs, resulting in double-autocomplete and other annoyances:
double color previews

double hover previews:

double autocomplete suggestions:

temporary workaround: run Developer: Reload Window command, then run UnoCSS reload to load the LSP
Reproduction
any project with unocss 0.55.1 and the latest VSCode extension
System Info
Windows 10, Vivaldi,
Validations

[X] Read the Contributing Guidelines.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

this was sucessfully resolved by #3005. Thanks!


Git submodules and installation

Hello,
I'd like to ask you to use submodules. for each project. This way, installation becomes as easy as:
git clone https://github.com/GoogleCloudPlatform/google-daemon.git
cd google-daemon
GIT_WORK_TREE=/ git checkout -f

This last command, will create the files at /; which it's directory structure. The only thing to fix then it's permissions. Git keeps the executable permission, the user and group.
Besides, you won't change your directory structure if yo use sub-modules, while keeping your projects separate and being able to choose which releases to bundle in the compute-image-packages repo.

The guest environment has been entirely rewritten into a coherent python package and associated configs package. Closing this issue out as it is no longer relevant.


Application failed to stage with the error"Staging error: cannot get instances since staging failed"

However, by now I found the error came from warden, as the log of warden shows
{"timestamp":1394806282.589924,"message":"spawn (took 0.006291)","log_level":"debug","source":"Warden::Container::Linux","data":{"handle":"17khvj2d2is","request":{"handle":"17khvj2d2is","script":"set -o pipefail; export VCAP_APPLICATION=\"{\\\"limits\\\":{\\\"mem\\\":128,\\\"disk\\\":1024,\\\"fds\\\":16384},\\\"application_version\\\":\\\"e77c7512-55f1-413c-89f6-a7f87d02a16a\\\",\\\"application_name\\\":\\\"game\\\",\\\"application_uris\\\":[\\\"game.<IP_ADDRESS>.xip.io\\\"],\\\"version\\\":\\\"e77c7512-55f1-413c-89f6-a7f87d02a16a\\\",\\\"name\\\":\\\"game\\\",\\\"uris\\\":[\\\"game.<IP_ADDRESS>.xip.io\\\"],\\\"users\\\":null}\";\nexport VCAP_SERVICES=\"{}\";\nexport MEMORY_LIMIT=\"128m\";\nexport BUILDPACK_CACHE=\"/var/vcap/packages/buildpack_cache\";\nexport STAGING_TIMEOUT=\"900.0\";\nexport MEMORY_LIMIT=\"128m\";\n /usr/bin/ruby /var/vcap/packages/dea_next/buildpacks/bin/run /var/vcap/data/dea_next/staging/d20140314-13865-11fckr7/plugin_config | tee -a /tmp/staged/logs/staging_task.log","discard_output":true},"response":{"job_id":8}},"thread_id":10045560,"fiber_id":13436960,"process_id":13754,"file":"/var/vcap/data/packages/warden/40/warden/lib/warden/container/base.rb","lineno":300,"method":"dispatch"}
{"timestamp":1394806283.1540847,"message":"Exited with status 1 (0.567s): [[\"/var/vcap/data/packages/warden/40/warden/src/closefds/closefds\", \"/var/vcap/data/packages/warden/40/warden/src/closefds/closefds\"], \"/var/vcap/data/warden/depot/17khvj2d2is/bin/iomux-link\", \"-w\", \"/var/vcap/data/warden/depot/17khvj2d2is/jobs/8/cursors\", \"/var/vcap/data/warden/depot/17khvj2d2is/jobs/8\"]","log_level":"warn","source":"Warden::Container::Linux","data":{"handle":"17khvj2d2is","stdout":"","stderr":""},"thread_id":10045560,"fiber_id":13938680,"process_id":13754,"file":"/var/vcap/data/packages/warden/40/warden/lib/warden/container/spawn.rb","lineno":135,"method":"set_deferred_success"}

I am a little confused.
The script Exited with status 1, but the is no error info as the log says "stdout":"","stderr":""
I have tried to specify a buildpack https://github.com/heroku/heroku-buildpack-java.git.
-----> Downloaded app package (568K)
Initialized empty Git repository in /tmp/buildpacks/heroku-buildpack-java/.git/
Checking status of app 'game'...>>>
REQUEST: GET http://api.<IP_ADDRESS>.xip.io/v2/apps/f02b2573-6e5e-45ab-b643-f7546c6ff44d/instances
REQUEST_HEADERS:
  Accept : application/json
  Authorization : [PRIVATE DATA HIDDEN]
  Content-Length : 0
RESPONSE: [400]
RESPONSE_HEADERS:
  content-length : 153
  content-type : application/json;charset=utf-8
  date : Sun, 16 Mar 2014 17:05:46 GMT
  server : nginx
  x-content-type-options : nosniff
  x-vcap-request-id : ff7c54aa-7021-4efa-b5fd-d57230bd8e33
RESPONSE_BODY:
{"code":170001,"description":"Staging error: cannot get instances since staging failed","error_code":"CF-StagingError","types":["StagingError","Error"]}
<<<
Application failed to stage

The logs of warden is the same as default buildpack.
Bye the way, the CF is running behind a proxy. I have tried adding env: HTTP_PROXY HTTPS_PROXY to the manifest.yml.
I think something is wrong between downloading buildpack and compile. Since compiling error will be puts "stderr"

Hi there!
We use Pivotal Tracker to provide visibility into what our team is working on. A story for this issue has been automatically created.
The current status is as follows:

[ ] #99824368 Application failed to stage with the error"Staging error: cannot get instances since staging failed"

This comment, as well as the labels on the issue, will be automatically updated as the status in Tracker changes.

Closing due to inactivity.


added test cases for version check

Description
added a test case to ensure the library has the same version in package.json and package-lock.json
Issue reference
Please reference the issue this PR will close: #505
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[ ] Code compiles correctly
[x] Created/updated tests
[ ] Extended the documentation

Hi @shubham1172,
Please review this PR and provide your verification.
I have imported JSON files using the import statement.
Let me know if it should be handled using fs or if any changes are required.
Thank you.

Thank you @salmankhan-prs for the PR!!


VS code crashing upon launch, reason: 'crashed' code: '-1'

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version:
OS Version:

Steps to Reproduce:

Does this issue occur when all extensions are disabled?: Dont know
VS Code Version: 1.78.2
OS Version: Win10 22H2
Steps to Reproduce: Start vs code

I followed the steps and keeps on crashing. even with vs code insiders. When I run the last command you suggested, this happens. Thanks for the help.

I realized that this happened after I ran Chromedriver. Also, slack and discord are crashing now, I need help :(

It sounds like your system has an issue. You can check if this is as a result of VS Code by uninstalling it, but I really doubt this is caused by our app


No examples

There are no examples of working pages using the library. This may have a bigger priority than documentation because most users can get around with just an example.
(I'm kinda new to both Bootstrap and Haxe. Would be really cool if we had an example. No idea if should try to make up the UI through code or maybe build my UI on HTML and somehow access it through Haxe?)

There is no real difference between the official Bootstrap library and this package.
When using the official Bootstrap library:

You add the Bootstrap files to your project, either through a CDN or through a Node.js module.
You create your HTML code by following the Bootstrap documentation.
Eventually, you use the JavaScript API to customize the behavior of some components.

When using this package:

You add this package as a dependency of your project, with Haxelib or lix package manager. In a command prompt, try haxelib install bootstrap_bundle (or lix +lib bootstrap_bundle).
You add the Bootstrap files to your project through the provided commande line interface. In a command prompt, try haxelib run bootstrap_bundle --help (or lix run bootstrap_bundle --help) to see the available commands. Most of the time, you'll use the copy command: haxelib run bootstrap_bundle copy --help.
You create your HTML code by following the Bootstrap documentation.
Eventually, you use the JavaScript API, through the provided Haxe externs, to customize the behavior of some components.

An overview of the API exposed by the Haxe externs is available here:
https://cedx.github.io/bootstrap.hx/api/
I really need to create the documentation for a more useful explanation 😄
In the meantime, I've added some code samples in the example folder, corresponding to the components that have dedicated JavaScript API/Haxe externs.
In these samples, the UI is provided by the render() function, but in a real-world project, the UI would be provided by plain HTML code (i.e. you don't need to use Haxe to create the UI).

I close this issue because what is really missing is a complete documentation.
See issue #1 for a follow-up.


Not  Restore SMS from a particular contact. Really need it

Before you report your issue, please consider perusing the https://github.com/jberkel/sms-backup-plus#faq and searching the issues page to see if it has already been reported.
Expected behaviour
Actual behaviour
Steps to reproduce the behaviour
Please specify the following:

Android version: 8.0.0
Phone model / brand : Samsung Galaxy 7
SMS Backup+ version installed :1.5.11
Messaging app: Samsung messaging

Not fully restoring on 1 SMS  contact. I followed all the FAQ, restoring and archiving details provided, but still can't restore it.  I am missing about A YEARS WORTH from this 1 contact.  Please, i need this information. I appreciate your help

Is anyone providing support at all for any of the issues reported here!

i dont know

It does not need a feature in the App.
In GMail, make sure that the SMS backup label only applies to the messages that you want to restore, and then ask SMS Backup to restore from that label.
There are several ways to do this, but I suggest that you start by making a new GMail label; then either:

move all the messages from the SMS backup label to the new label, then search for the ones you want to restore and add your SMS backup label to them; or
add new label label to the messages you want restored, and change the settings in SMS Backup to use that label.

Then ask SMS Backup to restore your messages.
Then you might want to undo the changes above.

@chrisspar did the procedure above solve your problem?

No, it did not.
On Fri, Nov 8, 2019 at 11:23 PM, Martin<EMAIL_ADDRESS>wrote:
@chrisspar did the procedure above solve your problem?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

(sorry for the delay)
@Luisruns which of those options did you try, and what happened?
As a first step, we need to determine whether the messages were transferred or not.

They might have been transferred, but not assigned to the correct contact. Has the contact changed phone number or anything like that? Are there any oddball or unlabelled SMS conversations in your phone?
They might not have been transferred. Is there anything peculiar about the messages?  Are they perhaps older or newer than the messages that successfully restored? Do they use have the same "From:" and "To:" header format as your successfully restored messages?

How many messages are involved (per-user and total)?

Tried all options and still not working. I receive the attached error message when trying to reconnect to my gmail account.
On Thu, Dec 19, 2019 at 7:25 PM, Martin<EMAIL_ADDRESS>wrote:
(sorry for the delay)
@Luisruns which of those options did you try, and what happened?
As a first step, we need to determine whether the messages were transferred or not.

They might have been transferred, but not assigned to the correct contact. Has the contact changed phone number or anything like that? Are there any oddball or unlabelled SMS conversations in your phone?
They might not have been transferred. Is there anything peculiar about the messages? Are they perhaps older or newer than the messages that successfully restored? Do they use have the same "From:" and "To:" header format as your successfully restored messages?

How many messages are involved (per-user and total)?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

Sorry, do you mean that no messages were restored? (I took "not fully restoring" to mean "only partially restoring".)
Please log into Github and reply with your error report there, as email replies don't link attachments to bug reports.

@chrisspar is this still a problem for you?
Previously you said "I receive the attached error message", however no error message was included.
Note that files sent by email may not be attached to issue tickets in Github; if you want to contribute a file, please log into Github and attach it there.
Or for short text files, simply paste their content into the body of your email.


Allow RequireBotPermissionAttribute to be used on parameters

Basic usage case:
public Task SendMessageInChannelAsync(
[RequireBotPermission(ChannelPermission.SendMessages)]ITextChannel channel,
[Remainder] string message) {
            return channel.SendMessageAsync(message);
 }

Not a usecase. You'd make an overload, and put different permissions on that.

Also would want to increase priority for the moderator one.


rotation of map and contents to x degress.

Hi,
I have been using this on the iphone as a great mapping api for offline maps ... it rocks ...
I'm keen to extend the library to allow a method to be called to do a transformation of the map and it's contents (using the power of webkit ) to point north (assuming the user is using a phone with a compass api) ...  i.e.
-webkit-transform: rotate(12deg);
can someone point me in the right direction where i should start ...  or if this is a future feature ...
Cheers
coomsie
p.s. sorry if this is the wrong place to place new features requests ...

I'ts not so hard as it looks. Map rotation can be a graet thing when working with PhoneGap. as a test, just add the following the the CSS:
"-webkit-transform: rotate(30deg);"
This will show you the rotated map. Markers and tiles seam to work, but the canvas shoukd be expanded so it's a rectangular area with the size of the diagonal.

It's not so simple as it looks either. :) You need to transform all mouse and touch events correctly according to rotation, you need to make it work with non-rotated markers and popups, you need to write completely different algorithms for detecting current geographical bounds, detecting tiles to load, different polygon and polyline clipping algorithms, etc. etc. etc.

I also think that this feature should be the current #1 topic for leaflet. Please concider it, I think it is totally worth the effort.

No, it doesn't. At least for Leaflet.

Hm, sad to hear that. Why do you think, that this feature is not one of the most importent? The most of the other projects alread have this implemented.

:+1:

I would also love this.  Leaflet is a fantastic framework and it is such a shame there is no plans to support this.

Need rotation or need to look elsewhere...unfortunately

:+1:

This is a real shame as it's a deal breaker for us too. We're having to switch to OL3 for our app :o(

Have a look at my unofficial rotate-rc1 branch at https://github.com/hyperknot/Leaflet/tree/rotate-rc1
It is based on @IvanSanchez's older rotate work.

We have tested the framework, and really liked the results. However for professional use in navigation solutions, this is an indispensable feature. We understand the complexity involved in this implementation, but this feature would add much to the framework. Let's wait a little longer, and if this feature is not included, unfortunately, we will have to switch to OL3 ...

@maceto2016 I'll continue working on rotate-rc1 and @IvanSanchez is working on Leaflet GL, which also supports rotation: https://github.com/IvanSanchez/Leaflet.gl

@hyperknot Thanks for reply. Let's try the rotate-rc1 soon.

@hyperknot : Can you give a hint on the status for your work on the rotate stuff? I was checking to use leaflet for my nav software. Rotation is definitely required. I just made a poc for rotating the map "outside" - see this example. Basically it would fit my needs but unfortunately it requires accessing some internal methods and this way is not very future proof. So if there are chances for rotation being part of leaflet soon, I would prefer this. I would also be willing to contribute on this part.

We need rotate nap feature!!!

@wellenvogel @GaMsh have a look at my rotate-rc1 branch, we are developing it with @fnicollet, he is using it exactly for a navigational software.
@wellenvogel also, your example looks great, you've already solved popup rotation, I'd be interested in seeing your solution. Your contributions would be welcome on rotate-rc1.

@hyperknot : should we discuss some stuff here?
I was wondering if the idea would be to rotate oly some of the panes?
For me rotate + anti-rotate afterwards on an item gave me some issue with text being less readable(Chrome on Ubuntu).
So I thought it could be helpfull to only rotste the necessary panes.
But this woul introduce the need for translation functions being pane specific...

@wellenvogel can you check if the rotate + anti-rotate is giving your those problems on the rotate-rc1 branch as well? It's a possible solution to only rotate the tile + vector panes, but then the calculations need to be changed.

I have to say that I have these blur issues on your branch but I don't have
them in rotate-rc1, so rotate+anti-rotate works, when the calculations are
exact I believe. I am working on this branch for the fix:
https://github.com/fnicollet/Leaflet/tree/patch-14
This very fresh commit:
https://github.com/Leaflet/Leaflet/commit/bddfb1168f5ea859181857b5764ba1f16100ddd2
Has messed things up but I almost have it working
Fabien
On Tue, Jun 28, 2016 at 5:38 PM, Zsolt Ero<EMAIL_ADDRESS>wrote:

@wellenvogel https://github.com/wellenvogel can you check if the rotate

anti-rotate is giving your those problems on the rotate-rc1 branch as
well? It's a possible solution to only rotate the tile + vector panes, but
then the calculations need to be changed.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Leaflet/Leaflet/issues/268#issuecomment-229088690,
or mute the thread
https://github.com/notifications/unsubscribe/ABLtoa73ZBKvqplUDnl-Vvm8jbtxNExRks5qQT_2gaJpZM4BVuxg
.

--
Fabien Nicollet
Tel : +33 (0)6 60 54 72 20

Almost there, last thing is to call update when rotation of the map is
changed so that _updatePosition is changed. Have to go, will commit that
tonight probably
On Tue, Jun 28, 2016 at 5:53 PM, Fabien Nicollet<EMAIL_ADDRESS>wrote:

I have to say that I have these blur issues on your branch but I don't
have them in rotate-rc1, so rotate+anti-rotate works, when the calculations
are exact I believe. I am working on this branch for the fix:
https://github.com/fnicollet/Leaflet/tree/patch-14
This very fresh commit:
https://github.com/Leaflet/Leaflet/commit/bddfb1168f5ea859181857b5764ba1f16100ddd2
Has messed things up but I almost have it working
Fabien
On Tue, Jun 28, 2016 at 5:38 PM, Zsolt Ero<EMAIL_ADDRESS>wrote:

@wellenvogel https://github.com/wellenvogel can you check if the
rotate + anti-rotate is giving your those problems on the rotate-rc1 branch
as well? It's a possible solution to only rotate the tile + vector panes,
but then the calculations need to be changed.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Leaflet/Leaflet/issues/268#issuecomment-229088690,
or mute the thread
https://github.com/notifications/unsubscribe/ABLtoa73ZBKvqplUDnl-Vvm8jbtxNExRks5qQT_2gaJpZM4BVuxg
.

--
Fabien Nicollet
Tel : +33 (0)6 60 54 72 20

--
Fabien Nicollet
Tel : +33 (0)6 60 54 72 20

@hyperknot do you see chances that your work will be merged into master in the near future?
I really would like to stay as close as possible on master. Otherrwise I maybe would continue with some sort of plugin approach with minimal changes on the core code.

Please give link to compiled leaflet.js with this patch!

@hyperknot regularly builds and store the result in the branch's source code, but the best you can do it build it yourself just checkout the branch or download it (https://github.com/hyperknot/Leaflet/archive/rotate-rc1.zip), then build it just like leaflet, see Build Leaflet from source: http://leafletjs.com/download.html.
Last big issue is with vector layers https://github.com/hyperknot/Leaflet/issues/1, patch almost works but needs a fix (see comments), if you feel like helping us :)

For anyone interested, here is the link to the unofficial branch for leaflet rotation:
https://github.com/fnicollet/Leaflet/tree/rotate-master
You are welcome to try it and contribute to it :)
Fabien

We need rotation, too

@webleaf Then spend some time and resources debugging the rotate branches, as we'll all benefit from that and the code will be released quicker.

Yep rotation is definitely needed! Best example: a custom made map that changed orientation after georeferencing.

@mourner @fnicollet @hyperknot Is this planned to be merge to official version? I see a lot of people moving away from leaflet due to this feature which makes me sad, mainly because I like leaflet very much and because I feel that this feature will be needed in my project in the near future.

This function is a must to have, I don't understand why @mourner considers this feature not important especially since almost all the others map libraries offer this function !

@RafikSM Then spend some time and resources debugging the rotate branches, as we'll all benefit from that and the code will be released quicker.

does leaflet support rotate function????
i really want my map to rotate !
thanks so much! @IvanSanchez

@IvanSanchez Hi, first, thanks a lot for the amazing work of leaflet. I am wandering about whether to switch to other library for leaflet has no way to rotate map which is needed serious or not. So are there any new messages about this feature, and will this feature be supported by official library soon or maybe in future? I have tried a lot ways and have no luck with any hack to realize rotating my maps.

@goforward01 if map rotation is a required feature for a project, then yes, I recommend you to switch to a different library.

Thanks for feedback Ero.
We are using rc1 and the results are meeting our needs.
Em 12 de jun de 2016 06:33, "Zsolt Ero"<EMAIL_ADDRESS>escreveu:

@maceto2016 https://github.com/maceto2016 I'll continue working on
rotate-rc1 and @IvanSanchez https://github.com/IvanSanchez is working
on Leaflet GL, which also supports rotation: https://github.com/
IvanSanchez/Leaflet.gl
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Leaflet/Leaflet/issues/268#issuecomment-225422871,
or mute the thread
https://github.com/notifications/unsubscribe/AS8-0fdhl7X2nVx48mdKj7ce68jp86-nks5qK9JbgaJpZM4BVuxg
.

@hyperknot Okay, thanks for reply. BTW, I will keep an eye on leaflet, it's an awesome library.

If people wondering, I have merged and have updated the old @IvanSanchez rotate branch to the latest of Leaflet in my fork.

@va2ron1 I would very much like to test it, but I'm using angular-cli. is there a npm package I can use to test it?
Assuming this will work as planned, will it be merged to the official version? I really don't want to choose between rotation to other newly implemented features if the branch gets out of sync...

Hello,
There is no official plan to merge it to master anytime soon, consider it
experimental. There is no npm package for it either
Fabien
Le 20 mars 2018 19:57, "Harel M"<EMAIL_ADDRESS>a écrit :

@va2ron1 https://github.com/va2ron1 I would very much like to test it,
but I'm using angular-cli. is there a npm package I can use to test it?
Assuming this will work as planned, will it be merged to the official
version? I really don't want to choose between rotation to other newly
implemented features if the branch gets out of sync...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Leaflet/Leaflet/issues/268#issuecomment-374716899,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABLtoT-sJQnOUE8rAgDooI-9Wa101_D0ks5tgVEegaJpZM4BVuxg
.

@HarelM like @fnicollet said, this is just experimental. If you want to try it with angular, just install the package like this:
npm install https://github.com/va2ron1/Leaflet

@va2ron1 I wanted to test your branch but I have an issue with markercluster so i can't currently test it:
https://github.com/Leaflet/Leaflet.markercluster/issues/874
I will upload it once the issue is resolved and it runs to my beta site and let you know what issues I find.

Ok, The problem was that this branch is using the esm version and does not export L variable for leaflet.markercluster to use - fixed it locally.
I Added the following code to map initialization on my project:
{
...
rotate = true,
...
}
...
map.setBearing(30);

I have uploaded a version to the following address:
https://israelhiking.osm.org.il/beta/
My findings:

I could not rotate the map using 2 fingers - neither desktop with touch on win 10 and chrome nor chrome on android - not sure if this was not implemented or I didn't configured something...
DivIcon is not centered (I think) - in the following example the lower part of the white triangle should be pointing to the blue dot.

This is how it looks in the non rotated version:

getBounds function is drifting? I have a query to my DB to show all the points in the current screen using the following code:

let northEast = this.mapService.map.getBounds().pad(0.2).getNorthEast();
let southWest = this.mapService.map.getBounds().pad(0.2).getSouthWest();
sending to server

at first this works fine, but after a few panning and zooming I get incorrect response when calling this function.
4. not sure if there's a bug in my code or not but I see strange behavior with the following code:
https://github.com/IsraelHikingMap/Site/blob/master/IsraelHiking.Web/sources/application/services/snapping.service.ts
which should snap a marker when dragging it to the closest feature in a list, but it behaves strangely with the rotation.
Polygons and poly-lines are correctly rotated, and even ant-path works :-)
flyTo seems to work as expected.
overall, I think this is a good progress, the above issues are probably small/easy to fix unfortunately I don't think I'll be able to help out with the implementation at this state but I'll be happy to test things out.
Let me know if I can help more...

@HarelM If you don't mind, post this at my fork to leave this issue behind.

@mourner I know this issue is a bit old, any change to reconsider and opening so it will be added to leaflet officially? I've been using leaflet for the better part of the last five years and I really like it, I would hate to need to change the entire map presentation framework since this feature is not supported officially...

@HarelM For the rotation with the fingers, you may use hammer.js wih the following code :
	var myElement 	= document.getElementById('map');
	var manager 	= new Hammer.Manager(myElement);
	var Pan 	= new Hammer.Pan();
	var Rotate 	= new Hammer.Rotate();

	Rotate.recognizeWith([Pan]);

	// add the recognizers
	manager.add(Pan);
	manager.add(Rotate);

	// subscribe to events
	var currentRotation = 0, lastRotation, startRotation;
	manager.on('rotatemove', function(e)
	{
	 	var diff = startRotation - Math.round(e.rotation);
	  	currentRotation = lastRotation - diff;
		map.setBearing(currentRotation)
	});

	manager.on('rotatestart', function(e)
	{
		lastRotation = currentRotation;
		startRotation = Math.round(e.rotation);
	});

	manager.on('rotateend', function(e)
	{
	    lastRotation = currentRotation;
	});

hammer.js : https://hammerjs.github.io/
above code : https://stackoverflow.com/questions/40059866/rotate-on-hammer-js-bug

Someone has tried to merge @va2ron1 Leaflet fork to angular library @yaga/ng2-leaflet and tried to implement rotation directive? It might work?

This is now "open" for too long. The relevant fork doesn't work well. I now use my site inside Cordova to allow native device usage such as background recording. It's been a hell of a ride leaflet, but it's time to move on...

Hi @HarelM,
While I think we all agree that supporting map rotation in Leaflet would be extremely useful for many people, it is also clear that the technical difficulty (as clearly explained by @mourner from the very beginning) makes it unbearable for the current Leaflet team and resources unfortunately. :cold_sweat:
If you need this feature but @va2ron1's fork does not work right for you, the easiest solution for sure would be to change the mapping library. There are several open source alternatives with such feature.
Again, we would have loved to support it in Leaflet; it is just unreasonable in the current situation. :sob:
:arrow_right: out of current Leaflet scope.
As this thread has been closed for 7 years and it currently does not seem to bring further value, I am going to lock it.
Kind reminder: this is open source; we need your help! :pray: If you can provide help, please feel free to submit PR's, publish your own plugin, or contact us if you are ready to provide some funding.


Feature/get transactions endpoint

What is this pull request?
Endpoint of GetTransactions()
Why do you implement it? Why do we need this pull request?

As a server or client, I want to get transactions from transactions' hashes.
https://soramitsu.atlassian.net/browse/IR-622

How to use the features provided in the pull request?
message GetTransactions {
  repeated string tx_hashes = 1;
}

UPDATE

If there are some invalid transaction hashes, they are just ignored (skipped).

This behavior is tested at https://github.com/hyperledger/iroha/pull/703/files#diff-b8b4c7df15e84aef9b09063de9653c8fR134

P.S. (optional)

I'll implement the feature for IrohaCli in another PR.

Anyone can see review this?

Codecov Report

Merging #703 into develop will decrease coverage by 0.01%.
The diff coverage is 40.19%.

@@             Coverage Diff             @@
##           develop     #703      +/-   ##
===========================================
- Coverage    42.55%   42.54%   -0.02%
===========================================
  Files          309      309
  Lines        12677    12778     +101
  Branches      7085     7146      +61
===========================================
+ Hits          5395     5436      +41
  Misses         709      709
- Partials      6573     6633      +60

Impacted Files
Coverage Δ

irohad/model/converters/pb_query_factory.hpp
100% <ø> (ø)
:arrow_up:

irohad/model/converters/json_query_factory.hpp
100% <ø> (ø)
:arrow_up:

irohad/model/queries/get_transactions.hpp
0% <0%> (ø)
:arrow_up:

irohad/model/registration/query_registration.hpp
18.18% <0%> (-1.82%)
:arrow_down:

test/module/irohad/model/static_map.cpp
0% <0%> (ø)
:arrow_up:

...rohad/model/converters/json_query_factory_test.cpp
8.06% <15.15%> (+2.57%)
:arrow_up:

.../irohad/model/converters/pb_query_factory_test.cpp
10.14% <33.33%> (+2.2%)
:arrow_up:

irohad/model/converters/json_common.hpp
62.96% <50%> (-7.04%)
:arrow_down:

...rohad/model/converters/impl/json_query_factory.cpp
43.2% <52.94%> (+1.53%)
:arrow_up:

irohad/model/converters/impl/pb_query_factory.cpp
40.24% <59.09%> (+2.91%)
:arrow_up:

... and 3 more

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 b5c1212...c51d77c. Read the comment docs.

Two approvals — you can rebase and merge it :)


Dockerfile with 2 High and 2 Low Kics vulnerabilities + 1 Medium False Positive

Expected Behavior
0 kics vulnerabilities for Dockerfile in the root of kics repository
Actual Behavior
2 High - True positive:
Missing USER Instruction, Severity: HIGH, Results: 2

Dockerfile:22
Dockerfile:1

1 Medium - False Positive since this query is related with AWS not Dockerfile's:
Access Key Is Not Rotated Within 90 Days, Severity: MEDIUM, Results: 1

Dockerfile:1

2 Low - True Positive:
Healthcheck Instruction Missing, Severity: LOW, Results: 2

Dockerfile:1
Dockerfile:22

Steps to Reproduce the Problem

git clone https://github.com/Checkmarx/kics
Add docker-compose.yml file:

version: '3'

services:
  kics:
    platform: linux
    image: checkmarx/kics:latest
    container_name: kics
    hostname: kics
    volumes:
      - ./:/path/
    build:
      context: ./
      dockerfile: Dockerfile
    command: -p /path/Dockerfile

docker-compose up
 docker-compose up Recreating kics ... done Attaching to kics kics    | Files scanned: 1 kics    | Parsed files: 1 kics    | Queries loaded: 728 kics    | Queries failed to execute: 0 kics    | Access Key Is Not Rotated Within 90 Days, Severity: MEDIUM, Results: 1 kics    |       Dockerfile:1 kics    | Healthcheck Instruction Missing, Severity: LOW, Results: 2 kics    |       Dockerfile:1 kics    |       Dockerfile:22 kics    | Missing USER Instruction, Severity: HIGH, Results: 2 kics    |       Dockerfile:22 kics    |       Dockerfile:1 kics exited with code 0

Specifications

Version: latest
Platform: Linux
Subsystem: Docker

@ruigomescx I've scanned this repo: https://github.com/github/docs and I've found 698 FPs for query Access Key Is Not Rotated Within 90 Days, Severity: MEDIUM

@ruigomescx I've scanned this repo: https://github.com/github/docs and I've found 698 FPs for query Access Key Is Not Rotated Within 90 Days, Severity: MEDIUM

This issue has been fixed with PR - #1741

This issue has been fixed with PR - #1741

@ruigomescx @joaoReigota1 True Positive results should be fixed as well.
Dockerfile should be refactored in order to fix these vulnerabilities:
kics        | Healthcheck Instruction Missing, Severity: LOW, Results: 2
kics        |   Dockerfile:1
kics        |   Dockerfile:22
kics        | Missing USER Instruction, Severity: HIGH, Results: 2
kics        |   Dockerfile:1
kics        |   Dockerfile:22

@ruigomescx @joaoReigota1 True Positive results should be fixed as well.
Dockerfile should be refactored in order to fix these vulnerabilities:
kics        | Healthcheck Instruction Missing, Severity: LOW, Results: 2
kics        |   Dockerfile:1
kics        |   Dockerfile:22
kics        | Missing USER Instruction, Severity: HIGH, Results: 2
kics        |   Dockerfile:1
kics        |   Dockerfile:22


glog: 0.4.0 -> 0.5.0, also enable tests

Motivation for this change
https://github.com/google/glog/releases/tag/v0.5.0
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@tobim Would you be up to be co-maintainer on the glog package?

nixpkgs-review reveaals build failures of packages that depend on glog.
Example ceres:
-- No preference for use of exported glog CMake configuration set, and no hints for include/library directories provided. Defaulting to preferring an installed/exported glog CMake configuration if available.
CMake Error at /nix/store/40y5r3nqm0w3qb6jin75vlqnzn4fmjd3-glog-0.5.0/lib/cmake/glog/glog-config.cmake:22 (include):
  include could not find requested file:

    /nix/store/40y5r3nqm0w3qb6jin75vlqnzn4fmjd3-glog-0.5.0/lib/cmake/glog/glog-modules.cmake
Call Stack (most recent call first):
  cmake/FindGlog.cmake:208 (find_package)
  CMakeLists.txt:430 (find_package)

-- Found installed version of glog: /nix/store/40y5r3nqm0w3qb6jin75vlqnzn4fmjd3-glog-0.5.0/lib/cmake/glog
-- Detected glog version: 0.5.0
-- Found Glog: glog::glog
-- Found Google Log (glog). Assuming glog was built with gflags support as gflags was found. This will make gflags a public dependency of Ceres.

I cannot pursue this further now.
Somebody else needs to put some prints into the CMakeList.txt file to figure out if glog_REL_CMake_MODULES or some earlier/later variable is computed incorrectly.

I think this is enough to fix it:
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -868,7 +868,7 @@ configure_file (\"${CMAKE_CURRENT_SOURCE_DIR}/glog-modules.cmake.in\"
 file (INSTALL
   \"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/glog-modules.cmake\"
   DESTINATION
-  \"\${CMAKE_INSTALL_PREFIX}/${_glog_CMake_INSTALLDIR}\")
+  \"${_glog_CMake_INSTALLDIR}\")
 "
   COMPONENT Development
 )

If a relative DESTINATION is given, it's assumed to be relative to the install prefix. So this is more correct anyway, and upstreamable as-is.

I would rather not sign their CLA, especially for such a trivial change.

I would rather not sign their CLA, especially for such a trivial change.

@r-burns Makes sense. I will do it.

Upstream PR: https://github.com/google/glog/pull/733

Upstream PR: google/glog#733

Patch added to this PR.

nixpkgs-review reveaals build failures of packages that depend on glog.

This is fixed now with the above changes. Still building, but 33 of 77 packages have built so far and none has failed.

I get the same issue as https://github.com/google/glog/issues/709 on x86_64-darwin, and it happens on master as well. Maybe best to exclude that test for now

Maybe best to exclude that test for now

@r-burns OK, I disabled test on Darwin for now.

@r-burns Would you be up for being co-maintainer on it?

Absolutely, feel free to add me

Great, then we're done here. nixpkgs-review didn't produce any error, but 2 packages hang in their test suite (one is python3.8-einops-0.3.2) -- probably unrelated.

@GrahamcOfBorg build

Upstream PR was merged.

@tobim Would you be up to be co-maintainer on the glog package?

@nh2 I'm not particularly interested in this library and I kinda dislike the API, so I'll pass. :slightly_smiling_face:

@r-burns FYI for the future, upstream glog commit https://github.com/google/glog/commit/3362cc6c79014170f80e1b8a5c74e7fd61fcb5e4
commit 3362cc6c79014170f80e1b8a5c74e7fd61fcb5e4 (HEAD, refs/bisect/bad)
Author: Sergiu Deitsch<EMAIL_ADDRESS>Date:   Tue Oct 12 11:13:02 2021 +0200

    added log cleaner tests and fixed paths

introduced a test failure for me in the nix build (but not an Ubuntu build).
Output:

Running tests...
/nix/store/sg4gfdp6ahmz8341zh8r3f2s1hylmy47-cmake-3.21.2/bin/ctest --force-new-ctest-process
Test project /build/glog/build
      Start  7: cmake_package_config_init
      Start 11: cleanup_init
      Start  1: demangle
      Start  2: logging
      Start  3: signalhandler
      Start  4: stacktrace
      Start  5: stl_logging
      Start  6: symbolize
 1/14 Test  #1: demangle .........................   Passed    0.00 sec
 2/14 Test  #3: signalhandler ....................   Passed    0.00 sec
 3/14 Test  #4: stacktrace .......................   Passed    0.00 sec
 4/14 Test  #5: stl_logging ......................   Passed    0.00 sec
 5/14 Test #11: cleanup_init .....................   Passed    0.01 sec
      Start 13: cleanup_immediately
      Start 14: cleanup_with_prefix
 6/14 Test  #6: symbolize ........................   Passed    0.00 sec
 7/14 Test  #7: cmake_package_config_init ........   Passed    0.01 sec
      Start  8: cmake_package_config_generate
 8/14 Test  #2: logging ..........................***Failed    0.25 sec
F20211111 12:56:38.639839  3398 logging_unittest.cc:308] unexpected new
*** Check failure stack trace: ***
F00000000 00:00:00.000000  3398 logging_unittest.cc:479] RAW: Check false failed: failure 1
F20211111 12:56:38.639915  3398 logging_unittest.cc:637] CHECK_STREQ failed: __null == "this" ( vs. this)
*** Check failure stack trace: ***
F20211111 12:56:38.639915  3398 logging_unittest.cc:637] CHECK_STREQ failed: __null == "this" ( vs. this)F20211111 12:56:38.639921  3398 logging_unittest.cc:638] CHECK_STREQ failed: "this" == "siht" (this vs. siht)
*** Check failure stack trace: ***
F20211111 12:56:38.639915  3398 logging_unittest.cc:637] CHECK_STREQ failed: __null == "this" ( vs. this)F20211111 12:56:38.639921  3398 logging_unittest.cc:638] CHECK_STREQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639926  3398 logging_unittest.cc:639] CHECK_STRCASEEQ failed: __null == "siht" ( vs. siht)
*** Check failure stack trace: ***
F20211111 12:56:38.639915  3398 logging_unittest.cc:637] CHECK_STREQ failed: __null == "this" ( vs. this)F20211111 12:56:38.639921  3398 logging_unittest.cc:638] CHECK_STREQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639926  3398 logging_unittest.cc:639] CHECK_STRCASEEQ failed: __null == "siht" ( vs. siht)F20211111 12:56:38.639931  3398 logging_unittest.cc:640] CHECK_STRCASEEQ failed: "this" == "siht" (this vs. siht)
*** Check failure stack trace: ***
F20211111 12:56:38.639915  3398 logging_unittest.cc:637] CHECK_STREQ failed: __null == "this" ( vs. this)F20211111 12:56:38.639921  3398 logging_unittest.cc:638] CHECK_STREQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639926  3398 logging_unittest.cc:639] CHECK_STRCASEEQ failed: __null == "siht" ( vs. siht)F20211111 12:56:38.639931  3398 logging_unittest.cc:640] CHECK_STRCASEEQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639936  3398 logging_unittest.cc:641] CHECK_STRNE failed: __null != __null ( vs. )
*** Check failure stack trace: ***
F20211111 12:56:38.639915  3398 logging_unittest.cc:637] CHECK_STREQ failed: __null == "this" ( vs. this)F20211111 12:56:38.639921  3398 logging_unittest.cc:638] CHECK_STREQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639926  3398 logging_unittest.cc:639] CHECK_STRCASEEQ failed: __null == "siht" ( vs. siht)F20211111 12:56:38.639931  3398 logging_unittest.cc:640] CHECK_STRCASEEQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639936  3398 logging_unittest.cc:641] CHECK_STRNE failed: __null != __null ( vs. )F20211111 12:56:38.639942  3398 logging_unittest.cc:642] CHECK_STRNE failed: "this" != "this" (this vs. this)
*** Check failure stack trace: ***
F20211111 12:56:38.639915  3398 logging_unittest.cc:637] CHECK_STREQ failed: __null == "this" ( vs. this)F20211111 12:56:38.639921  3398 logging_unittest.cc:638] CHECK_STREQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639926  3398 logging_unittest.cc:639] CHECK_STRCASEEQ failed: __null == "siht" ( vs. siht)F20211111 12:56:38.639931  3398 logging_unittest.cc:640] CHECK_STRCASEEQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639936  3398 logging_unittest.cc:641] CHECK_STRNE failed: __null != __null ( vs. )F20211111 12:56:38.639942  3398 logging_unittest.cc:642] CHECK_STRNE failed: "this" != "this" (this vs. this)F20211111 12:56:38.639947  3398 logging_unittest.cc:643] CHECK_STREQ failed: (string("a")+"b").c_str() == "abc" (ab vs. abc)
*** Check failure stack trace: ***
F20211111 12:56:38.639915  3398 logging_unittest.cc:637] CHECK_STREQ failed: __null == "this" ( vs. this)F20211111 12:56:38.639921  3398 logging_unittest.cc:638] CHECK_STREQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639926  3398 logging_unittest.cc:639] CHECK_STRCASEEQ failed: __null == "siht" ( vs. siht)F20211111 12:56:38.639931  3398 logging_unittest.cc:640] CHECK_STRCASEEQ failed: "this" == "siht" (this vs. siht)F20211111 12:56:38.639936  3398 logging_unittest.cc:641] CHECK_STRNE failed: __null != __null ( vs. )F20211111 12:56:38.639942  3398 logging_unittest.cc:642] CHECK_STRNE failed: "this" != "this" (this vs. this)F20211111 12:56:38.639947  3398 logging_unittest.cc:643] CHECK_STREQ failed: (string("a")+"b").c_str() == "abc" (ab vs. abc)F20211111 12:56:38.639991  3398 logging_unittest.cc:658] Check failed: 'static_cast<void *>(NULL)' Must be non NULL
*** Check failure stack trace: ***
Passed 8 tests

PASS
Test with golden file failed. We'll try to show the diff:
--- /build/glog/src/logging_unittest.err.munged 2021-11-11 12:56:38.885929007 +0000
+++ /tmp/captured.err.munged    2021-11-11 12:56:38.885929007 +0000
@@ -1,288 +1,9 @@
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=0 stderrthreshold=2 logtostderr=0 alsologtostderr=0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
- WARNING: Logging before InitGoogleLogging() is written to STDERR
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info every 1 expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=0 stderrthreshold=0 logtostderr=0 alsologtostderr=0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info every 1 expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] foo bar 10 3.4
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Plog every 2, iteration 1: Success [0]
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log every 3, iteration 1
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log every 4, iteration 1
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 5, iteration 1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 1
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if less than 3 every 2, iteration 1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 2
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Plog every 2, iteration 3: No such file or directory [2]
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 3
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if less than 3 every 2, iteration 3
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log every 3, iteration 4
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 4
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Plog every 2, iteration 5: Interrupted system call [4]
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log every 4, iteration 5
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 5
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 5, iteration 6
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 6
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Plog every 2, iteration 7: No such device or address [6]
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log every 3, iteration 7
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 7
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 8
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Plog every 2, iteration 9: Exec format error [8]
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log every 4, iteration 9
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 9
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log every 3, iteration 10
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Log if every 1, iteration 10
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if this
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] array
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] const array
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] foo 1000<PHONE_NUMBER> 3e8
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] inner
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] outer
- no prefix
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: foo bar 10 3.400000
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: array
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: const array
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: ptr 0x12345678
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: ptr (nil)
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: foo 1000<PHONE_NUMBER> 3e8
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: foo 1000
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: foo 1000
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: RAW_LOG ERROR: The Message was too long!
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: RAW_LOG ERROR: The Message was too long!
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 0 on
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 1 on
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 2 on
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=0 stderrthreshold=0 logtostderr=0 alsologtostderr=0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info every 1 expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=1 stderrthreshold=0 logtostderr=0 alsologtostderr=0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog 1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info every 1 expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=-1 stderrthreshold=0 logtostderr=0 alsologtostderr=0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info every 1 expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=0 stderrthreshold=1 logtostderr=0 alsologtostderr=0
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=0 stderrthreshold=2 logtostderr=0 alsologtostderr=0
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=0 stderrthreshold=3 logtostderr=0 alsologtostderr=0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=0 stderrthreshold=3 logtostderr=1 alsologtostderr=0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info every 1 expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=0 stderrthreshold=3 logtostderr=0 alsologtostderr=1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info every 1 expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=1 stderrthreshold=1 logtostderr=0 alsologtostderr=0
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Test: v=1 stderrthreshold=3 logtostderr=0 alsologtostderr=1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: vlog 1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog 1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if -1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if info every 1 expr
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] log_if error every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] vlog_if 0 every 1 expr
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_STRING: reported info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_STRING: reported warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_STRING: reported error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Captured by LOG_STRING: LOG_STRING: collected info
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Captured by LOG_STRING: LOG_STRING: collected warning
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Captured by LOG_STRING: LOG_STRING: collected error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK: collected info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK: collected warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK: collected error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK: reported info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK: reported warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK: reported error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Captured by LOG_TO_SINK:
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK: collected info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK: collected warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK: collected error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK_BUT_NOT_TO_LOGFILE: collected info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK_BUT_NOT_TO_LOGFILE: collected warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_SINK_BUT_NOT_TO_LOGFILE: collected error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_STRING: collected info
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Captured by LOG_TO_STRING: LOG_TO_STRING: collected info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_STRING: collected warning
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Captured by LOG_TO_STRING: LOG_TO_STRING: collected warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_STRING: collected error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Captured by LOG_TO_STRING: LOG_TO_STRING: collected error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_STRING: reported info
-WYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_STRING: reported warning
-EYEARDATE TIME__ THREADID logging_unittest.cc:LINE] LOG_TO_STRING: reported error
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Message 1
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Buffering
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Buffered
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Waiting
-IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Sink got a messages
+
+
+
+
+
+
 IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] RAW: Waited
 IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Sink is sending out a message: IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Message 1
 IYEARDATE TIME__ THREADID logging_unittest.cc:LINE] Have 0 left
diff command was failed.
Check failed: MungeAndDiffTestStderr(FLAGS_test_srcdir + "/src/logging_unittest.err")

 9/14 Test  #8: cmake_package_config_generate ....   Passed    0.35 sec
      Start  9: cmake_package_config_build
10/14 Test  #9: cmake_package_config_build .......   Passed    0.62 sec
      Start 10: cmake_package_config_cleanup
11/14 Test #10: cmake_package_config_cleanup .....   Passed    0.01 sec
12/14 Test #14: cleanup_with_prefix ..............   Passed    3.04 sec
13/14 Test #13: cleanup_immediately ..............   Passed    3.04 sec
      Start 12: cleanup_logdir
14/14 Test #12: cleanup_logdir ...................   Passed    0.01 sec

93% tests passed, 1 tests failed out of 14

Total Test time (real) =   3.06 sec

The following tests FAILED:
          2 - logging (Failed)
Errors while running CTest

This will be relevant when we upgrade to the next glog release.


import error in pyLike

I am running some basic tests with Fermipy and upon import of pyLike, I get the following error:
~/work/threeML/threeML/threeML/plugins/FermipyLike.py in _expensive_imports_hook()
85
    213 def _expensive_imports_hook():
86
    214
87
--> 215     from fermipy.gtanalysis import GTAnalysis
88
    216     from GtBurst.LikelihoodComponent import findGalacticTemplate, findIsotropicTemplate
89
    217
90

91
/usr/share/miniconda/envs/test_env/lib/python3.7/site-packages/ROOT/_facade.py in _importhook(name, *args, **kwds)
92
    119                 except Exception:
93
    120                     pass
94
--> 121             return _orig_ihook(name, *args, **kwds)
95
    122         __builtin__.__import__ = _importhook
96
    123
97

98
/usr/share/miniconda/envs/test_env/lib/python3.7/site-packages/fermipy/gtanalysis.py in <module>
99
     19 import fermipy.wcs_utils as wcs_utils
100
     20 import fermipy.fits_utils as fits_utils
101
---> 21 import fermipy.gtutils as gtutils
102
     22 import fermipy.srcmap_utils as srcmap_utils
103
     23 import fermipy.skymap as skymap
104

105
/usr/share/miniconda/envs/test_env/lib/python3.7/site-packages/ROOT/_facade.py in _importhook(name, *args, **kwds)
106
    119                 except Exception:
107
    120                     pass
108
--> 121             return _orig_ihook(name, *args, **kwds)
109
    122         __builtin__.__import__ = _importhook
110
    123
111

112
/usr/share/miniconda/envs/test_env/lib/python3.7/site-packages/fermipy/gtutils.py in <module>
113
      4 from functools import wraps
114
      5 import numpy as np
115
----> 6 import pyLikelihood as pyLike
116
      7 from SrcModel import SourceModel
117
      8 from AnalysisBase import AnalysisBase
118

119
/usr/share/miniconda/envs/test_env/lib/python3.7/site-packages/ROOT/_facade.py in _importhook(name, *args, **kwds)
120
    119                 except Exception:
121
    120                     pass
122
--> 121             return _orig_ihook(name, *args, **kwds)
123
    122         __builtin__.__import__ = _importhook
124
    123
125

126
/usr/share/miniconda/envs/test_env/lib/python3.7/site-packages/fermitools/pyLikelihood.py in <module>
127
     13     from . import _pyLikelihood
128
     14 else:
129
---> 15     import _pyLikelihood
130
     16
131
     17 try:
132

133
/usr/share/miniconda/envs/test_env/lib/python3.7/site-packages/ROOT/_facade.py in _importhook(name, *args, **kwds)
134
    119                 except Exception:
135
    120                     pass
136
--> 121             return _orig_ihook(name, *args, **kwds)
137
    122         __builtin__.__import__ = _importhook
138
    123
139

140
ImportError: libCLHEP-<IP_ADDRESS>.so: cannot open shared object file: No such file or directory
141
ImportError: libCLHEP-<IP_ADDRESS>.so: cannot open shared object file: No such file or directory
142

My guess is a ROOT library is missing. This is run on a clean install of Ubuntu via conda.

Also, this is a python 3.7 install

I have the same error when importing pyLikelihood. Also in my case, I have a fresh instalation on Ubuntu.
It seems that CLHEP is present, but with the wrong version. I can find version <IP_ADDRESS>, while <IP_ADDRESS> is required.
(ft2-0-0) divenere@jupyterhub:~$ ls $CONDA_PREFIX/lib/libCLHEP*
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Cast-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Cast-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Evaluator-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Evaluator-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Exceptions-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Exceptions-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-GenericFunctions-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-GenericFunctions-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Geometry-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Geometry-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Matrix-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Matrix-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Random-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Random-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-RandomObjects-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-RandomObjects-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-RefCount-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-RefCount-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Vector-<IP_ADDRESS>.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP-Vector-<IP_ADDRESS>.so
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP.a
/home/divenere/anaconda3/envs/ft2-0-0/lib/libCLHEP.so

In this installation I have ROOT 6.22/06:
(ft2-0-0) divenere@jupyterhub:~$ conda list root
# packages in environment at /home/divenere/anaconda3/envs/ft2-0-0:
#
# Name                    Version                   Build  Channel
root                      6.22.6           py37h07c7eef_0    conda-forge
root-binaries             6.22.6           py37h07c7eef_0    conda-forge
root-dependencies         6.22.6           py37h07c7eef_0    conda-forge
root_base                 6.22.6           py37h5ed0ae1_0    conda-forge

In an old installation (same fermitools version, but installed one month ago), I have ROOT 6.22/02, with libCLHEP-<IP_ADDRESS>.

@ldivenere is this a clean install with the latest conda version as well?

yes, it was a clean install with the latest conda version. These are the details of the conda installed and of the linux system:
(ft2-0-0) divenere@jupyterhub:~$ conda --version
conda 4.9.2
(ft2-0-0) divenere@jupyterhub:~$ uname -a
Linux jupyterhub 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

yes, it was a clean install with the latest conda version. These are the details of the conda installed and of the linux system:
(ft2-0-0) divenere@jupyterhub:~$ conda --version
conda 4.9.2
(ft2-0-0) divenere@jupyterhub:~$ uname -a
Linux jupyterhub 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Thanks. Yeah, still cannot find a way to debug this..

Thanks. Yeah, still cannot find a way to debug this..

conda is relatively new to me, but the more I use it the more I hate it.

conda is relatively new to me, but the more I use it the more I hate it.

Doesn't solve the issue, but if you just conda install that particular version of CLHEP, it seems to work.  (At least I was able to run basic command line fermi tools.)

Doesn't solve the issue, but if you just conda install that particular version of CLHEP, it seems to work.  (At least I was able to run basic command line fermi tools.)

Also in my case, I tried to downgrade both ROOT to version 6.22.2 and CLHEP to <IP_ADDRESS>.
I get the same errors as in issue #101, but fermitools and fermipy seem to work.

Also in my case, I tried to downgrade both ROOT to version 6.22.2 and CLHEP to <IP_ADDRESS>.
I get the same errors as in issue #101, but fermitools and fermipy seem to work.

I have built version <IP_ADDRESS> of the Fermitools to link against CLHEP <IP_ADDRESS> . the dev build is available on anaconda cloud. If @paulray is growing to hate conda, I suggest downloading and using mamba in it's place for faster dependency resolution and acquisition. mamba implements a sane SAT solver algorithm in C++ rather than the slow loop-based python implementation that conda uses.
mamba create -n fermi -c conda-forge -c fermi/label/dev fermitools=<IP_ADDRESS> python=3

I have built version <IP_ADDRESS> of the Fermitools to link against CLHEP <IP_ADDRESS> . the dev build is available on anaconda cloud. If @paulray is growing to hate conda, I suggest downloading and using mamba in it's place for faster dependency resolution and acquisition. mamba implements a sane SAT solver algorithm in C++ rather than the slow loop-based python implementation that conda uses.
mamba create -n fermi -c conda-forge -c fermi/label/dev fermitools=<IP_ADDRESS> python=3

I haven't tried mamba, but the 2.0.7 build does seem to work. Thanks!  When will a version after 2.0 be released on the non-dev channel?

I haven't tried mamba, but the 2.0.7 build does seem to work. Thanks!  When will a version after 2.0 be released on the non-dev channel?

I'm hoping we can get a release out soon with at least this patch and a few others.  However, we're effectively short staffed at the moment and have some non-Fermitools related deadlines for the AAS meeting next week that we're dealing with, so I don't want to make any promises.

I'm hoping we can get a release out soon with at least this patch and a few others.  However, we're effectively short staffed at the moment and have some non-Fermitools related deadlines for the AAS meeting next week that we're dealing with, so I don't want to make any promises.

Hello y'all. I'm new at this. Installed miniconda and fermitools this afternoon following https://github.com/fermi-lat/Fermitools-conda/wiki/Installation-Instructions and the first thing I tried to run was gtselect, and it failed with
error while loading shared libraries: libCLHEP-<IP_ADDRESS>.so: cannot open shared object file: No such file or directory
So I simply found that I already had an old <IP_ADDRESS>/lib/libCLHEP.so on my disk, and created a link calling it <IP_ADDRESS> and then defined LD_LIBRARY_PATH to point to the link. Inelegant, but gtselect is running. I'm only telling you this in the hope that confirmation of a different manifestation of the bug might help you.

Hello y'all. I'm new at this. Installed miniconda and fermitools this afternoon following https://github.com/fermi-lat/Fermitools-conda/wiki/Installation-Instructions and the first thing I tried to run was gtselect, and it failed with
error while loading shared libraries: libCLHEP-<IP_ADDRESS>.so: cannot open shared object file: No such file or directory
So I simply found that I already had an old <IP_ADDRESS>/lib/libCLHEP.so on my disk, and created a link calling it <IP_ADDRESS> and then defined LD_LIBRARY_PATH to point to the link. Inelegant, but gtselect is running. I'm only telling you this in the hope that confirmation of a different manifestation of the bug might help you.

Until we release a new version. The following appears to be working
conda create -n fermi -c conda-forge -c fermi fermitools python=3 clhep=<IP_ADDRESS>

Until we release a new version. The following appears to be working
conda create -n fermi -c conda-forge -c fermi fermitools python=3 clhep=<IP_ADDRESS>

I was nervous about what "create" would do when I already had a "fermi", so first I did
conda remove --name fermi --all
and then your command, and now gtselect works without my LD_LIBRARY_PATH kluge.

I was nervous about what "create" would do when I already had a "fermi", so first I did
conda remove --name fermi --all
and then your command, and now gtselect works without my LD_LIBRARY_PATH kluge.

We've released Fermitools 2.0.8 which should fix this issue and several other things.   Please check the Release Notes.
If you have the Fermitools 2 already installed, you can update to the new version using the command:
conda update -c conda-forge  -c fermi fermitools
and then reactivate your fermi environment for the changes to take effect.

We've released Fermitools 2.0.8 which should fix this issue and several other things.   Please check the Release Notes.
If you have the Fermitools 2 already installed, you can update to the new version using the command:
conda update -c conda-forge  -c fermi fermitools
and then reactivate your fermi environment for the changes to take effect.

Thanks for that !

Thanks for that !