text:
Initial support for SFMLConfig.cmake, for review

This PR is for review and feedbacks, not supposed to be merged yet!
TODO list:

[x] Have config file generated on all platforms
[x] Support debug/release config
[ ] Have no absolute path in generated config files on Linux / Windows / macOS / iOS? / Android?
[ ] Export internal dependencies in case of static build (ie. remove the need for SFML_DEPENDENCIES)
[ ] Support for components ?
[ ] Exhaustive testing!

=============
I've started doing the changes to support config file generation. At the moment this is working at least for me on macOS with frameworks. I expect it to work on other platforms too because it reuses the definitions of current SFML targets. This implies a LOT of changes though so I would like your feedback before going on.
Especially I have replaced all the listing of dependencies with calls to target_link_libraries() and target_include_directories() for 3 reasons:

this avoids redoing what CMake already does (target_link_libraries() and target_include_directories() already handle lists)
this makes it easier to group the full setup (include+link) of each dependency
this will allow specifying which dependencies must be public in case of static linking (what SFML_DEPENDENCIES currently does in FindSFML.cmake), same eventually if compile definitions or include dirs must be exported (currently only the root include dir of SFML is exported)

In terms of usage right now (example from sfeMovie) of course without any FindSFML.cmake:
find_package (SFML 2.3 COMPONENTS graphics window system audio REQUIRED)
target_link_libraries(sfeMovie PRIVATE sfml-graphics sfml-window sfml-system sfml-audio)

I didn't expose yet the fact that sfml-graphics depends on sfml-window and sfml-system. Could be done and would allow writing only
target_link_libraries(sfeMovie PRIVATE sfml-graphics sfml-audio)
Dunno yet if we want that though.
If you want to look at what the generated config looks like for now:
http://yalir.org/files/SFML/
It gets installed in /usr/local/lib/cmake/SFML by default.
References
https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#creating-packages
https://cmake.org/cmake/help/latest/command/find_package.html
https://cmake.org/cmake/help/latest/command/export.html
https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html
https://github.com/SFML/SFML/compare/master...SrTobi:support-config-file-packages
Related issues
https://github.com/SFML/SFML/issues/758
https://github.com/SFML/SFML/issues/937

Amazing work, thanks :+1:
I know very little about modern CMake usage, but what I see looks ok. We should now test it under various scenarios (static/dynamic link, on all OSes).

this will allow specifying which dependencies must be public in case of static linking

What exactly does that mean? Will CMake now automatically export the private dependencies in case of static linking, or does it require additional work? In any case, we no longer need SFML_DEPENDENCIES, right?

I didn't expose yet the fact that sfml-graphics depends on sfml-window and sfml-system. Could be done

Should be done, since the dependency does exist.

Didn't dig too deep into the changes, but with the branch as-is, sfml-main won't build, since its include directories aren't set (and therefore won't find SFML/Config.hpp).
You're basically missing this:
# set the include directory
target_include_directories(sfml-main PUBLIC
                               $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
                               $<INSTALL_INTERFACE:include>)

from sfml-main's CMakeLists.txt.
Also are you sure about the location of the SFMLConfig.cmake and the other files? I thought they'd have to be placed directly in lib or am I confusing it with PkgConfig?

I know very little about modern CMake usage, but what I see looks ok. We should now test it under various scenarios (static/dynamic link, on all OSes).

The most important part is correctly defining which target properties have PRIVATE, PUBLIC or INTERFACE visibility. Are you familiar with it?
Basically PRIVATE properties are used only when building the target.
PUBLIC properties are used when building the target and by targets that depend on your target.
INTERFACE properties are used only by targets that depend on your target.
And in these properties you can define include directories, libraries to link or preprocessor definitions.

What exactly does that mean? Will CMake now automatically export the private dependencies in case of static linking, or does it require additional work? In any case, we no longer need SFML_DEPENDENCIES, right?

It will, at least that's what I want. But it's not done yet with current changes. And yes SFML_DEPENDENCIES won't be needed anymore if I get it to work. Will update the PR when it's ready.

Should be done, since the dependency does exist.

Right, will update when it's done

Didn't dig too deep into the changes, but with the branch as-is, sfml-main won't build, since its include directories aren't set (and therefore won't find SFML/Config.hpp).

Indeed. Didn't do it yet as it's not needed on macOS, because I wanted feedbacks before going further. Will fix it.

Also are you sure about the location of the SFMLConfig.cmake and the other files? I thought they'd have to be placed directly in lib or am I confusing it with PkgConfig?

There are several possible paths, see https://cmake.org/cmake/help/latest/command/find_package.html
"Each entry is meant for installation trees following Windows (W), UNIX (U), or Apple (A) conventions:"
<prefix>/                                                       (W)
<prefix>/(cmake|CMake)/                                         (W)
<prefix>/<name>*/                                               (W)
<prefix>/<name>*/(cmake|CMake)/                                 (W)
<prefix>/(lib/<arch>|lib|share)/cmake/<name>*/                  (U)
<prefix>/(lib/<arch>|lib|share)/<name>*/                        (U)
<prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/          (U)
<prefix>/<name>*/(lib/<arch>|lib|share)/cmake/<name>*/          (W/U)
<prefix>/<name>*/(lib/<arch>|lib|share)/<name>*/                (W/U)
<prefix>/<name>*/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/  (W/U)
<prefix>/<name>.framework/Resources/                    (A)
<prefix>/<name>.framework/Resources/CMake/              (A)
<prefix>/<name>.framework/Versions/*/Resources/         (A)
<prefix>/<name>.framework/Versions/*/Resources/CMake/   (A)
<prefix>/<name>.app/Contents/Resources/                 (A)
<prefix>/<name>.app/Contents/Resources/CMake/           (A)

Still need to figure out where it'll be located in the end. It's probably not portable on this part right now.

I initiated the CI builds, checkout the build logs (Config.hpp can't be found).

Which is exactly what I've stated above. ;)

Build is fixed for sfml-main, everything builds fine locally on Windows (VS2017 32bits).
The dependencies between SFML modules are now public so examples like VOIP only need to depend on sfml-network and sfml-audio, no need to specify sfml-system. The same applies to external projects that will use find_package(SFML) and depend on a SFML module.
I ran the install step with the Debug/Release configuration and did a find_package(SFML) without any FindSFML.cmake and it did work on Windows, with the correct lib depending on selected configuration (Debug/Release).
There doesn't look to be any absolute path in the generated config file on Windows, which is nice for making releases. On the contrary for now the config file generated on macOS has absolute paths (/Library/Frameworks). To be fixed.
Still need to support static builds, most likely the hardest part because of the need to expose internal dependencies.
One important note
I changed a bit how the sfml-main library is created. Instead of custom add_library() and properties, it's created like any other SFML library : with suffix for debug / static, and with pdb next to the generated .lib file. The only customization I kept is that it always remains a static lib, whatever the value of BUILD_SHARED_LIBS.

Nice. I'd say absolute paths aren't that bad for now. Wouldn't they be the same on any machine anyway? No experience with Frameworks, but from my understand they're supposed to sit in that specific directory?

SFMLBuildMaster: Build this please.

New revision is building fine for me on Windows. Do we even have to keep (and therefore maintain) FindSFML.cmake? Or should it be deprecated/removed altogether? From my understanding we wouldn't need both. Or is there some minimum version requirement higher than using a Find….cmake file?

SFMLBuildMaster: Build this please.

Nice. I'd say absolute paths aren't that bad for now. Wouldn't they be the same on any machine anyway? No experience with Frameworks, but from my understand they're supposed to sit in that specific directory?

It depends on what you want to do. Currently FindSFML.cmake allows finding SFML in standard paths or in custom paths if you set SFML_ROOT. I don't see any reason to restrict the benefits of CMake config files to standard installations only.
Consider for example where you want to make sure that the package you're creating for your program is self-contained. In that case you don't want to have SFML installed in standard paths. You can also want to keep standard paths clean, or don't have admin rights, etc.

New revision is building fine for me on Windows. Do we even have to keep (and therefore maintain) FindSFML.cmake ? Or should it be deprecated/removed altogether? From my understanding we wouldn't need both. Or is there some minimum version requirement higher than using a Find….cmake file?

I'm always for keeping a simple and unique way to do things. But I don't think I'm the one to choose this for SFML :)
As for the minimum requirement.. is SFML's CI using CMake 2.8? If it does then it's ok, because I didn't add any conditional check for some CMake version.
Also I realize that currently existing FindSFML.cmake won't find the new sfml-main lib because of changed suffix. Is it acceptable to introduce such break in SFML 2.5?

Also I realize that currently existing FindSFML.cmake won't find the new sfml-main lib because of changed suffix. Is it acceptable to introduce such break in SFML 2.5?

Do you mean the -s affix? Why not just overwrite it after defining the target? Or won't that work?

Do you mean the -s affix? Why not just overwrite it after defining the target? Or won't that work?

Yes the -s suffix, and yes overwriting does work. Committing, thanks.

@MarioLiebisch Do you know where sfml-graphics links against OpenGL ES libraries on Android? I can't find it on SFML/master and I broke link step of this module on Android: https://ci.sfml-dev.org/builders/android-armeabi-v7a-api13/builds/267/steps/compile/logs/stdio
I saw that you worked on Android support so asking you :)

It used to be here:
https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/CMakeLists.txt#L126
but obviously got lost in the rewrite.

It's still there: https://github.com/Ceylo/SFML/blob/feature/CMakeTargetExport/src/SFML/Graphics/CMakeLists.txt#L124
And I don't think you pointed out the correct line, because in Config.cmake I see that Android uses OpenGL ES.

It seems like it was simply not set. But it previously worked because another signature of target_link_libraries() was used: https://cmake.org/cmake/help/latest/command/target_link_libraries.html?highlight=target_link_libraries#libraries-for-both-a-target-and-its-dependents
Which imported linkage for OpenGL ES from sfml-window target definition : https://github.com/SFML/SFML/blob/master/src/SFML/Window/CMakeLists.txt#L270
And it's no more the case with the explicit PRIVATE linkage (it was implicitly PUBLIC). Hopefully easy to fix :)

But that's outside the SFML_OPENGL_ES branching starting in line 113.

SFMLBuildMaster: Build this please.

Remaining discussed points are done!

When building macOS frameworks, CMAKE_INSTALL_PREFIX should be set by user to /Library/Frameworks for SFML to be directly usable. I've added SFML_DEPENDENCIES_INSTALL_PREFIX and SFML_MISC_INSTALL_PREFIX to support what was discussed. SFML_DEPENDENCIES_INSTALL_PREFIX defaults to /Library/Frameworks on macOS and to CMAKE_INSTALL_PREFIX on other platforms. SFML_MISC_INSTALL_PREFIX defaults to CMAKE_INSTALL_PREFIX except on macOS where it defaults to /usr/local. This allows changing CMAKE_INSTALL_PREFIX to install frameworks in /Library/Frameworks without modifying where "misc" contents goes.  So basically by default nothing changes except the install prefix for macOS frameworks.
When creating the SFML package for distribution, you should run the "install" target at least 4 times with the same install prefix. Twice for debug/release x twice for static/dynamic. This will generate the following files:

SFMLConfig.cmake
SFMLConfigDependencies.cmake
SFMLConfigVersion.cmake
SFML${type}Targets.cmake
SFML${type}Targets-${config}.cmake

Where ${type} is "Static" or "Shared", and ${config} is one of CMake build configurations (Release, Debug, MinSizeRel, RelWithDebInfo).
The files that are installed by more that one installation configuration are identical between the different configurations that can write it.
For frameworks it's similar except that only release dynamic config needs to be installed to get a complete SFMLConfig.
Either SFMLStaticTargets.cmake or SFMLSharedTargets.cmake is included by SFMLConfig.cmake depending on whether the user has set SFML_STATIC_LIBRARIES. SFML${config}Targets.cmake includes its debug/release child files depending on which ones exist. Note that if a user does a find_package(SFML) with an installation that only contain debug libs for example, these debug libs are used even when he builds his project in release. Can be an issue on Windows but that's how CMake generates these files.

I did test with CMake 3.0.2 and it did work. I checked the installed files, there are slight differences but nothing that prevents using this version. Requirement can't be lower as there are many uses of interface libraries. Will commit the corresponding changes soon.

For dependencies I created interface libraries. This is done by sfml_find_package(). For example sfml_find_package(FLAC INCLUDE "FLAC_INCLUDE_DIR" LINK "FLAC_LIBRARY") creates a target named "FLAC", and when linking against that target, the target that needs it automatically gets the correct compile and link flags. And it looks just like if we'd just built the FLAC library in the same project. The important point is that the created target name in current example is "FLAC". That means that if a user also creates a FLAC target and uses SFMLConfig, there'll be a conflict. I tried to add a namespace to have something like sf::FLAC as target name but namespaces are not allowed for interface libraries. I also considered sfFLAC but it looks weird, requires some changes and in the end I think there's very low probability to have a conflict. So I just left "FLAC".

The variables previously defined by FindSFML.cmake are not defined by SFMLConfig.cmake except SFML_FOUND and SFML_DOC_DIR.

So I guess now is the time for final review & testing! Would be nice to test as a user, by deleting the FindSFML.cmake you may have in your project and generate the SFMLConfig and use it. Especially to check that no use case is missing.

SFMLBuildMaster: Build this please.
Awesome! Thanks for the detailed summary.
I won't be able able to test this for the next 10 days or so, but maybe someone else with a mac can give some feedback. :)
Another thing, in order to include this with the next SFML RELEASE, we also need to update the tutorials. Could you have a look at them? (But maybe it would be wise just to wait for some additional approval of this PR?)
Cmake wise, we also have #1344. Would you like to have a look? You seems more proficient than I to solve it. No pressure though :)

Thanks :)
As for the tutorials indeed I'd prefer feedbacks on usage first. Will check the current tutorials though to get an idea of what needs to be changed.
And for the other PR I'll check, but I prefer to finish this one first and focus. Also a lot of CMake code has changed so the changes for #1344 would most likely conflict.
Concerning last failed build, I've fixed the error on Windows. On macOS though it requires changes to the cmake command line used for CI, because of the introduced install prefixes for dependencies and misc files. I don't know how that can be done because I suppose that the CI config does not depend on the branch, right? I also don't know where the CI steps are defined in order to help on that matter. Basically CMAKE_INSTALL_FRAMEWORK_PREFIX is not used anymore, and both SFML_DEPENDENCIES_INSTALL_PREFIX and SFML_MISC_INSTALL_PREFIX should be set to what you want.

@mantognini For the tutorials you were thinking of FindSFML.cmake or something else? I didn't find any mention about it except in forums and changelogs.

@LaurentGomila @MarioLiebisch @eXpl0it3r @mantognini So what do we do? This PR has been ready for testing for 2 weeks now.
I made a topic on SFML's forum one week ago: https://en.sfml-dev.org/forums/index.php?topic=23676.0
Since that time some of you answered on the forum and fixes were done, but I'm not aware of anyone actually trying to use this for his project. So no feedback on real uses at the moment.
The more other PRs are merged in the meantime, the harder it is to make sure I fix all conflicts correctly, because codebases diverge. On that part, @MarioLiebisch could you check my latest merge commit? There were many conflicts related to your changes for Android. I think it's ok but… just in case.

Sorry, I wanted to give it a shot this week but, you know, life... I'll try to get around to test it in the middle of next week.
SFMLBuildMaster: Build this please.

That being said, anyone else is welcome to try this PR! :)

Looks like CMake doesn't have the permission to install the FreeType framework on the CI. Does this need to be adjusted on the CI or in the setup?
I hope to have a look at this soon. Went to a C++ user group meeting this week and learned some stuff on modern CMake. 🙂

For the install issue this is what was discussed in https://github.com/SFML/SFML/pull/1335#issuecomment-362847863
There a small changes needed on CI side.
Thanks for checking the PR soon !

Can you open an issue on https://github.com/SFML/SFML-Buildbot with details so @binary1248 can fix it?

@eXpl0it3r No need to open an issue if I am just able to fix it like that. 😉

@binary1248 You should keep CMAKE_FRAMEWORK_INSTALL_PREFIX in cmake configure step as long as this PR is not merged, otherwise you break macOS build on other branches at the moment. For current branch it’ll be an unused cmake arg but it’s temporarily ok.

@Ceylo I like it better like this... more pressure to merge this faster. 😛

So… still blocked with testing for one more week. What do we do?
I can give it a try again on all platforms but that will only make sure it works in my use cases.
What do you think?

SFMLBuildMaster: Build this please.

Our CI install frameworks incorrectly ATM

[...]
-- Installing: /Users/SFML/Desktop/buildbot/osx-clang-el-capitan/install/./SFML.framework
[...]
-- Installing: /Users/SFML/Desktop/buildbot/osx-clang-el-capitan/install/./sfml-system.framework
[...]

They should go into [...]/install/Library/Frameworks.
@binary1248, could you append /Library/Frameworks to -DCMAKE_INSTALL_PREFIX current value? (According to https://github.com/SFML/SFML/pull/1335#issuecomment-362751934.)

@mantognini That doesn't sound right... CMAKE_INSTALL_PREFIX is used as a base directory for everything, not only frameworks. There are already a bunch of things installed into /Library/Frameworks which is specified via SFML_DEPENDENCIES_INSTALL_PREFIX, but I guess some things that should go in there as well aren't sent there by the install script.

It might looks a bit weird, but it's only for when building/installing frameworks. See above comments by @Ceylo. Other misc files are installed according to another variable.

@mantognini Should be fixed in https://ci.sfml-dev.org/#/builders/11/builds/31/steps/20/logs/stdio

Besides the Xcode template script issue, everything seems good on macOS. 👍

Thanks @binary1248, this looks good.

No, a bit more than that. The new script handles ressources being installed
elsewhere (according to the dependencies install prefix). Your change is
consistent with the rest so it's good. I've simply changes a few other
lines.
On Sun, 4 Mar 2018, 17:49 Ceylo, notifications@github.com wrote:

@Ceylo commented on this pull request.
In tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist.in
https://github.com/SFML/SFML/pull/1335#discussion_r172055425:

@@ -146,7 +146,7 @@ subject to the following restrictions:

If you're using static libraries (which is not recommended) you should remove this script from your project.
SETTINGS
-CMAKE_INSTALL_FRAMEWORK_PREFIX="@CMAKE_INSTALL_FRAMEWORK_PREFIX@"
+CMAKE_INSTALL_FRAMEWORK_PREFIX="@CMAKE_INSTALL_PREFIX@"
I suppose you mean rename the variable CMAKE_INSTALL_FRAMEWORK_PREFIX to
something else?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/SFML/SFML/pull/1335#discussion_r172055425, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAqU6y-JJ_n5Ox05iprPUXqoF9216hgUks5tbBszgaJpZM4RPltw
.

Ah right, I had not seen the link to your gist. Committing your changes.

Had a look at SFML tutorials for building SFML with CMake and here are the changes I suggest in the table containing CMake variable description (bold is new contents):

[update] CMAKE_INSTALL_PREFIX: This is the install path. By default, it is set to the installation path that is most typical on the operating system ("/usr/local" for Linux and macOS, "C:\Program Files" for Windows, etc.). When building frameworks on macOS, you may want to change the value to "/Library/Frameworks".
[remove] CMAKE_INSTALL_FRAMEWORK_PREFIX
[add] SFML_DEPENDENCIES_INSTALL_PREFIX: This is the path where SFML's dependencies like Freetype and OpenAL are installed. By default it is the same as CMAKE_INSTALL_PREFIX, except on macOS where it defaults to "/Library/Frameworks", because dependencies on macOS are provided as frameworks. As stated above for CMAKE_INSTALL_PREFIX, it is not mandatory to install SFML after building it, but it is definitely cleaner to do so.
[add] SFML_MISC_INSTALL_PREFIX: This is the path where SFML examples, documentation, license and readme files are installed. On Windows it defaults to CMAKE_INSTALL_PREFIX, and to CMAKE_INSTALL_PREFIX/share/SFML on FreeBSD, Linux and macOS.

Also in https://www.sfml-dev.org/tutorials/2.4/compile-with-cmake.php I found many usages of the name "Mac OS X" which should be replaced with "macOS". "Mac OS X" isn't used for naming the desktop OS from Apple since 2016.

Tried it on Linux (Xubuntu 17.10).
CMake 3.10.2
Works fine for both static and dynamic linking, but I had to do this in my CMakeLists.txt:
cmake_policy(SET CMP0057 NEW)
Otherwise, the script failed:
  if given arguments:

    "window" "IN_LIST" "SFML_FIND_COMPONENTS"

  Unknown arguments specified

Anyways, that's a very handy way of using SFML with CMake, so I'm looking forward to seeing it in SFML's master! It's very useful and makes everything neater.

Thanks a lot for testing and making me notice that it doesn't work with CMake < 3.3 (IN_LIST syntax). Will fix the installed config so that it works with 3.0.2 as the rest of SFML's CMake files.

SFMLBuildMaster: Build this please.

Had a look at SFML tutorials for building SFML with CMake and here are the changes I suggest in the table containing CMake variables descriptions

Thanks for your suggestions, I'll work on a quick PR for the tutorial in order to make this PR mergeable for the next release. :)

PS: my review accounts only for Mac. @eliasdaler can you confirm it works nicely now on Linux too? I leave it to others to double check the behaviour for the other platforms.

It works perfectly well on Linux now. :)

I finally got around to test this on a project of mine. I tried it out on MacOS for dynamic linking and it worked like a charm 👍

I've started SFML/SFML-Website#107 with the changes mentioned above.
Note that now there are some conflicts here... :/

Built with VS 2017 on Windows 10. Built (shared and static libs) without issues, and ran examples without issues!

@dabbertorres Just to make sure, you tested with your own project built against SFML with the find_package(SFML) stuff, right?
@mantognini Can you relaunch build? I fixed conflicts.

@MarioLiebisch @JonnyPtn @mantognini Is it ok for you in terms of code review? How many reviewers to we need to approve the changes?

I haven't been involved in this enough to make a fully informed decision, but I would say merge merge merge!

Is it ok for Android and iOS? Has it been tested with both makefile-based build systems and multi-configuration IDEs?

Haven't had a chance to test Windows yet, but Android projects (so far) shouldn't use CMake anyway. SFML is installed in the NDK's default directory for third party libraries, so you only have to reference them, no lookup required.

on iOS it doesn't find the openAL headers, but I'm struggling to establish why. OPENAL_INCLUDE_DIR seems correct and is set to the right folder...

SFMLBuildMaster: Build this please.

Is it ok for you in terms of code review?

I think it is for me. I went through the thing a few times as you added more commits. I can't pretend to understand everything without having to spend more time on it, but it seems to work (with the exception of iOS) and nothing in the code really made me jump. If you guys could find out why it fails for iOS that'd be great; otherwise, as far I'm concerned, it's ready to be merged.

How many reviewers do we need to approve the changes?

The more the better, as always, but I think we can move forward with this and adapt it if/when we get feedback (probably after official release).

Is it ok for Android and iOS?

Did FindSFML.cmake support Android and iOS? I supposed that it didn't according to
# detect the OS
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
    set(FIND_SFML_OS_WINDOWS 1)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
    set(FIND_SFML_OS_LINUX 1)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
    set(FIND_SFML_OS_FREEBSD 1)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
    set(FIND_SFML_OS_MACOSX 1)
endif()

in the original FinSFML.cmake, so I didn't do anything specific on these platforms. And @MarioLiebisch's answer confirms this at least for Android.

Has it been tested with both makefile-based build systems and multi-configuration IDEs?

Yup. At least it does work nicely on macOS with Xcode generator and Unix Makefiles generator for the client project. I expect it to work the same on Windows because the CMake code isn't specific to any platform on this matter.

on iOS it doesn't find the openAL headers, but I'm struggling to establish why. OPENAL_INCLUDE_DIR seems correct and is set to the right folder...

Ok will check.

@JonnyPtn It's fixed. OpenAL was correctly found but OPENAL_INCLUDE_DIR wasn't used on iOS, because I previously relied on the "-framework OpenAL" flag.
@mantognini Can you relaunch the build?

I have tested it using CMake inside QtCreator.

Having some issues on iOS when trying to find SFML from an app, mainly with the dependencies.
I attempted a fix here which you might want to test. It compiles successfully even though It doesn't search for openGL (or openGLES). The app does then crash immediately, but again I'm not sure if that's a problem with the config or with the way I'm using it, or just a completely different bug.
I've also tested macOS static and debug libs which both worked excellently.

SFMLBuildMaster: Build this please.

@JonnyPtn Fix me if I’m wrong but original FindSFML.cmake didn’t support iOS too, so adding it now is out of scope I think.

Sure, I don’t want to hold this up for other platforms, I can do a PR for these later

@LaurentGomila @mantognini @eXpl0it3r Is there anything left to do apart from squashing commits and merge?

For me, it's ready! Feel free to squash commits in a way you find pertinent.

Let's merge it and release it in SFML 2.5. And then let's fix it in 2.5.1 😁

@mantognini @eXpl0it3r @LaurentGomila Up to you now!

Perfect!
SFMLBuildMaster: Build this please.

Just for notice: it looks ready to be merged.

Testing this on Windows with Visual Studio 2017 x64 project file generator, CMake 3.11.0-rc4 and Doxygen 1.8.10.
SFML_DEPENDENCIES_INSTALL_PREFIX isn't being aligned with the CMAKE_INSTALL_PREFIX.
It's nice that there's the option to install it to different places, but having to always adjust both prefixes is a bit cumbersome and unintuitive. My expectation would be that when I change CMAKE_INSTALL_PREFIX it will also change SFML_DEPENDENCIES_INSTALL_PREFIX but not the other way around.

The documentation build fails, even though everything went fine - it even installs the documentation, but for some reason it's reports it as failed.
1>CUSTOMBUILD : error : failed to run html help compiler on index.hhp
[...]
1>Running html help compiler...
1>lookup cache used 3614/65536 hits=22719 misses=3879
1>finished...
1>Done.
1>Building Custom Rule D:/Dev/SFML/doc/CMakeLists.txt
1>CMake does not need to re-run because D:/Dev/SFML/build/doc/CMakeFiles/generate.stamp is up-to-date.
1>Done building project "doc.vcxproj" -- FAILED.

*.pdb files (debug symbol files) are not being installed next to the libraries, but are installed to <install prefix>\lib\Debug. Additionally an empty Release directory is created (maybe because of the same reason). PDB files should really just be placed next to the libraries.
Right now I'm not sure exactly how the PDB files work. This implementation generates PDB files with the none-debug prefix (no -d) in debug mode and no PDB files in release mode. What I'm not sure is:

Do we need PDB files for every release?
Do we need PDB files only for release binaries since the debug libs contain the debug symbols?
Are the release PDB binaries generated in debug mode?

What's up with the lib\cmake\SFML directory that gets installed? Is this the correct location?

You should rebuild and install for all the configurations that you want to use (debug/release, dynamic/static/frameworks) to the same target installation directory. Then remove FindSFML.cmake from your project to make sure it's not used, and clear your CMake cache.

So how does CMake find SFML at my custom location? Previously, I'd set SFML_ROOT and CMAKE_MODULE_PATH and it would find it, how do I tell CMake now to find SFML? Do I need to place the SFMLConfig files somewhere?
CMakeLists.txt
cmake_minimum_required(VERSION 3.1)

project(SFMLTest)

set(CMAKE_CXX_STANDARD 11)
set(SFML_STATIC_LIBRARIES TRUE)

find_package(SFML 2.4 COMPONENTS graphics window system)

add_executable(SFMLTest main.cpp)
target_link_libraries(SFMLTest ${SFML_LIBRARIES})

So how does CMake find SFML at my custom location

Define a SFML_DIR variable that points to the location of the SFMLConfig.cmake file. This is exactly what CMake says in the error message that results from find_package, by the way 😛

I see. Yeah, it showed that message for years and it never applied to SFML, so I didn't think to try it. But this brings me back to the question from above whether <install-prefix>\lib\cmake\SFML is the correct location for the SFMLConfig.cmake file.

Using SFMLConfig.cmake it can find SFML just fine, unfortunately it doesn't set the include directory. Is this intended? Do I still have to use include_directories() if the headers aren't installed in some compiler toolchain known header location?

But this brings me back to the question from above whether \lib\cmake\SFML is the correct location for the SFMLConfig.cmake file.

Looks ok to me, at least that's what I've seen in other libs (Qt).

Using SFMLConfig.cmake it can find SFML just fine, unfortunately it doesn't set the include directory

The output of find_package(SFML ...) are "sfml-xxx" imported targets, so that's what you should pass to the target_link_libraries call. I don't think ${SFML_LIBRARIES} exists anymore now.

Right, I actually wanted to change it and then forgot.
A bit cumbersome that you have to specify the "library" twice, but otherwise it seems to work now.

@eXpl0it3r What do you mean by specifying the library twice? Here's an example I was using to test this: https://github.com/JonnyPtn/SFML-DOOM/blob/master/CMakeLists.txt#L51

First you specify which module you want to find and then you link each module. So you repeat it twice. Sure it might have a different meaning and all, but it's also a bit annoying, plus a source for people getting it wrong and the many questions that follow it.
find_package(SFML 2.4 COMPONENTS graphics window system)
[...]
target_link_libraries(SFMLTest sfml-graphics sfml-window sfml-system)

So the problem is specifying which components to link as opposed to just linking ${SFML_LIBRARIES}? Personally I prefer explicitly stating the components, and it simplifies having multiple projects in a CMakeLists which require different SFML components

First you specify which module you want to find and then you link each module

Listing the modules in find_package is optional (or it should).  Plus, you can only specify sfml-graphics since the others are dependencies and will be automatically linked.

Okay, you can just ask for the graphics module and it will pull in the dependencies, but you seem to have to specify the components, otherwise CMake errors with:
find_package(SFML) called with no component

So here's a minimal CMakeLists.txt that works for me with a custom SFML installation.
cmake_minimum_required(VERSION 3.1)

project(SFMLTest)

set(SFML_DIR "<sfml root prefix>/lib/cmake/SFML")
find_package(SFML 2.4 COMPONENTS graphics)
add_executable(SFMLTest main.cpp)
target_link_libraries(SFMLTest sfml-graphics)

My expectation would be that when I change CMAKE_INSTALL_PREFIX it will also change SFML_DEPENDENCIES_INSTALL_PREFIX but not the other way around.

CMake cache system actually prevents from doing that. Once a cache entry is set, setting it in CMake code won't change it, unless you force updating the cache (but then you discard user choice).

The documentation build fails, even though everything went fine - it even installs the documentation, but for some reason it's reports it as failed.

My guess is that it is related to the "error :" that appears in logs. VS considers this a target failure even if the commands actually exit with status 0. I don't think I touched that part though. Is the error also happening on master branch?

*.pdb files (debug symbol files) are not being installed next to the libraries, but are installed to \lib\Debug. Additionally an empty Release directory is created (maybe because of the same reason). PDB files should really just be placed next to the libraries.

Booh… will check.

Right now I'm not sure exactly how the PDB files work. This implementation generates PDB files with the none-debug prefix (no -d) in debug mode and no PDB files in release mode.

Although it is interesting to get the answer, for this PR I will stick with the current behavior on master branch. The purpose of this PR isn't to change how/when PDB are generated.

What's up with the lib\cmake\SFML directory that gets installed? Is this the correct location?

This is one of the standard locations given by find_package()'s documentation. So I'd expect it to be correct :)

So how does CMake find SFML at my custom location (e.g. D:\Dev\SFML\install)? Previously, I'd set SFML_ROOT and CMAKE_MODULE_PATH and it would find it, how do I tell CMake now to find SFML? Do I need to place the SFMLConfig files somewhere?

As @LaurentGomila answered you need to set SFML_DIR instead, and you don't need to set CMAKE_MODULE_PATH because there isn't any FindSFML.cmake to find.

Listing the modules in find_package is optional (or it should). Plus, you can only specify sfml-graphics since the others are dependencies and will be automatically linked.

Did FindSFML.cmake previously work without any component given?
I followed what is done at https://github.com/SFML/SFML/pull/1335/files#diff-e40774a4a91e51bf8e2a254a86083435L126 which means, unless I missed something, that if no component is given, nothing is searched for by the FindSFML.cmake script.

@eXpl0it3r
I can't reproduce the issue about Doxygen. Here it generates the doc without any error log, and thus target succeeds. I'm using CMake 3.10.0, VS 2017 x64 generator and Doxygen 1.8.14. Didn't test with Doxygen 1.8.10 but if latest version works fine I guess it's ok. Does any of the CI builders generate the documentation? Can you test on your side with Doxygen 1.8.14?
As for where the PDB files go (ie. not next to libraries, and always in PREFIX/lib/Debug even for release builds), I checked and this is the same behavior as current master branch. Thus not going to change that for current PR.
The only difference I noticed about PDB files is that with my PR you now also get a PDB for sfml-main library.
All in all, if @LaurentGomila confirms expected behavior with find_package() and components, I guess current PR is still ok for merge. I'll just do a rebase against master to take into account latest commits.

CMake cache system actually prevents from doing that. Once a cache entry is set, setting it in CMake code won't change it, unless you force updating the cache (but then you discard user choice).

Yes, we musn't (can't) make one entry depend on the other. But what about using some default path if SFML_DEPENDENCIES_INSTALL_PREFIX is not set? Something relative to CMAKE_INSTALL_PREFIX.

set(SFML_DIR "<sfml root prefix>/lib/cmake/SFML")

In case someone takes your minimal example as a reference: the SFML_DIR variable should always be defined as a user variable, not directly in the CMakeLists.txt file 😃

Did FindSFML.cmake previously work without any component given?

Not sure about the current behaviour. But that was just an idea anyway. Do you think it's worth investigating?

CMake cache system actually prevents from doing that. Once a cache entry is set, setting it in CMake code won't change it, unless you force updating the cache (but then you discard user choice).

I thought so. For me it's just a different approach I'll have to take and define the prefix manually before clicking the configuration button. Unfortunately this will be an issue many people will fail to understand and we'll have to keep answering the same question. IMHO on Windows it never makes sense to install the dependencies somewhere else, as such this is really inconvenient for Windows users.

Yes, we musn't (can't) make one entry depend on the other. But what about using some default path if SFML_DEPENDENCIES_INSTALL_PREFIX is not set? Something relative to CMAKE_INSTALL_PREFIX.

By default it will use CMAKE_INSTALL_PREFIX. The issue is, that CMAKE_INSTALL_PREFIX has to be defined before you hit the configuration button in the CMake UI, similar to how you'd specify it in the command line the first time you call it.
Would it be an option to not set the SFML_DEPENDENCIES_INSTALL_PREFIX as long as SFML_DEPENDENCIES_INSTALL_PREFIX wasn't set by the user and instead always use CMAKE_INSTALL_PREFIX? That way CMAKE_INSTALL_PREFIX will always be used, unless the user explicitly specifies SFML_DEPENDENCIES_INSTALL_PREFIX. And since it's needed on macOS you could set it there directly. Maybe that's too many if-elses?

I can't reproduce the issue about Doxygen.

Checked again on master branch, it exists as well with my Doxygen version. The reason I stuck with the version is because newer versions don't generate the nice HTML output we want, but that's not important for this PR. Works fine with the latest Doxygen, so let's forget about this.

As for where the PDB files go (ie. not next to libraries, and always in PREFIX/lib/Debug even for release builds), I checked and this is the same behavior as current master branch. Thus not going to change that for current PR.

Odd, I could swear the behavior was different in the past, but yet, I see the same thing on master branch, so let's align this with another PR.

Did FindSFML.cmake previously work without any component given?
Not sure about the current behaviour. But that was just an idea anyway. Do you think it's worth investigating?

I think it's okay the way it is right now. I just suspect again that people will get it wrong and we'll have to keep answering the same question.

My suggestion would be, something that I kind of wanted for a while, to have a dedicated tutorial not on how to build SFML, but on how to use SFML with CMake. That way we can hopefully answer a lot of questions and have a reference for people.
Also we need to make sure to update the existing CMake tutorial for these changes.

But what about using some default path if SFML_DEPENDENCIES_INSTALL_PREFIX is not set? Something relative to CMAKE_INSTALL_PREFIX.

This is a good point indeed. Dunno why I didn't do that just like for SFML_MISC_INSTALL_PREFIX. It's committed.

Would it be an option to not set the SFML_DEPENDENCIES_INSTALL_PREFIX as long as SFML_DEPENDENCIES_INSTALL_PREFIX wasn't set by the user and instead always use CMAKE_INSTALL_PREFIX?

So with the relative path it's just fixed, not need for all these ifs :)

In case someone takes your minimal example as a reference: the SFML_DIR variable should always be defined as a user variable, not directly in the CMakeLists.txt file 😃

I don't think this is always true. For example if you take a project that depends on SFML and wants to embed all their dependencies in their repo (let's say with Git LFS). Setting this variable in the main project allows having a repo ready to use just with a single clone. So it depends on whether the developer wants to embed its dependencies or let its users provide them.

Not sure about the current behaviour. But that was just an idea anyway. Do you think it's worth investigating?

Just to make sure I tried using current FindSFML.cmake with no component. The result is actually worse than what I thought... with no component, it always consider SFML to be found even when it's not :/
Found SFML .. in SFML_INCLUDE_DIR-NOTFOUND
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
SFML_INCLUDE_DIR
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie/examples
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie/examples
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie/examples/Demo
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie/examples/Demo
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie/examples/Demo
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie/examples/MinimalistDemo
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie/examples/MinimalistDemo
   used as include directory in directory C:/Users/Ceylo/Documents/sfeMovie/examples/MinimalistDemo

So no regression on that matter. As for investigating about support "no component given" case, I think this should be discussed and eventually changed later. I don't really have an opinion at the moment about whether this is a good idea.

My suggestion would be, something that I kind of wanted for a while, to have a dedicated tutorial not on how to build SFML, but on how to use SFML with CMake. That way we can hopefully answer a lot of questions and have a reference for people.

Currently I'd say that the best tutorial for this is the documentation in SFMLConfig.cmake file. But you have to find first, which is not quite obvious 😄 .

Also we need to make sure to update the existing CMake tutorial for these changes.

Do you mean more than https://github.com/SFML/SFML/pull/1335#issuecomment-370251236 ?

Currently I'd say that the best tutorial for this is the documentation in SFMLConfig.cmake file. But you have to find that file first, which is not quite obvious

Could be more or less a 1:1 copy, I don't like spreading documentation across multiple places, especially since it's not an obvious place to look.

Do you mean more than #1335 (comment) ?

If that covers all, then that's good. 😊
SFMLBuildMaster: Build this please.

Could be more or less a 1:1 copy, I don't like spreading documentation across multiple places, especially since it's not an obvious place to look.

A 1:1 copy would look weird to me. What about giving a link to SFMLConfig.cmake from SFML tutorials page? This way you can also make sure that the tutorial is consistent with what is shipped.
Ideally there would be some sort of Doxygen that generates formatted doc from the comments in CMake files, but I’m not aware of such tool.
By the way builds have finished now.

Merged in fc655f52b91d3e70ee43426dc872723418f2bbee
Thanks for the exhaustive work and the pushing forward, really appreciated! 🎉

Hooorrraaaaaay!!!!!!!
At last… :D
I would like to discuss with you about the PR process. Mainly about the testing part: it took almost 2 months between the day the PR was ready for testing and the day it got merged. This is way too long, even in the opensource world, and honestly if it always take this long I'm not gonna do other PRs. So I'd like to talk and find solutions with you.
Where can we do that? The PR comments don't feel like it's the right place, and on the forum (except maybe in section "SFML development" where I can't open topics) it's also too wide: this is mainly toward SFML development team & contributors.

Yeah, this is a big step forward! I'm really happy for this top-quality contribution of yours! Thanks again.
I understand the feeling, and share your point of view. But the fact is that the team alone cannot handle everything, at least not quickly enough to keep the flow. The only solution I see is asking the community to test things out. Now, in the last few months, several people have joined the effort, and I thank them. Hopefully, this will attract more testers as well. In the meantime, if you have ideas on how to improve the overall process (doc, how-to's, issue handling,...) I feel it would best fit on the forum. I'm pretty sure a moderator will agree to move your thread in the right category. :)

I think that people will be less likely to test if developers either provide detailed instructions on how to perform testing or make a test program if it's possible.
The easier it is for people to test, the more likely they're to do it.

I've opened https://en.sfml-dev.org/forums/index.php?topic=23841.0

authors: Ceylo Foaly JonnyPtn LaurentGomila MarioLiebisch binary1248 dabbertorres eXpl0it3r eliasdaler mantognini

repo: SFML/SFML

license: Zlib


text:
[Release 1.0] 1차 작업사항

작업 내용이 정리된 것이 없어서 우선은 1차 작업사항 이라는 이름으로 PR을 올립니다.
작업 목록(여기에서 작업된 이슈) 이름들을 한번 정리해서 작성하면 좋을 것 같습니다.

@kms0524
https://github.com/SIDETEAM001/side-ios/pull/75
위의 PR까지 develop에 머지되면, 이 PR도 머지처리하겠습니다~

source: gharchive/pull-request

license: MIT

license_type: permissive

license_source: github-api


text:
🛑 Website is down

In dee9800, Website (ELTeam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Website is back up in 4bd3feb after 1 hour, 24 minutes.

source: gharchive/issue

repo: SIRMaxis/uptime-robot


text:
🛑 DE Server is down

In 18d2f76, DE Server (de1.elteam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DE Server is back up in d79702d after 30 minutes.


text:
🛑 DNS1.electro is down

In a2688ef, DNS1.electro (ns1.elteam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DNS1.electro is back up in 47936ca after 39 minutes.


text:
🛑 Website is down

In fec77b5, Website (ELTeam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Website is back up in 1a161d2 after 8 minutes.


text:
🛑 DNS1.electro is down

In 33319dc, DNS1.electro (ns1.elteam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DNS1.electro is back up in 2feb1d9 after 14 minutes.


text:
🛑 Website is down

In 8df3574, Website (ELTeam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Website is back up in 87340bb after 2 hours, 25 minutes.


text:
🛑 Website is down

In b83e540, Website (ELTeam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Website is back up in 4523501 after 18 minutes.


text:
🛑 DNS1.electro is down

In 4a1a918, DNS1.electro (ns1.elteam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DNS1.electro is back up in 152f177.


text:
🛑 DNS2.electro is down

In dcb9410, DNS2.electro (ns2.elteam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DNS2.electro is back up in f54656f after 25 minutes.


text:
🛑 DE Server is down

In 5079f93, DE Server (de1.elteam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DE Server is back up in 989a322 after 14 minutes.


text:
🛑 Website is down

In 632ac36, Website (ELTeam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Website is back up in f671a8e after 20 minutes.


text:
🛑 DNS1.electro is down

In aeb34f7, DNS1.electro (ns1.elteam.ir) was down:

HTTP code: 0
Response time: 0 ms

Resolved: DNS1.electro is back up in d14ce2e after 8 minutes.


text:
Added participants page for 2021.

Added participants (mostly auto-generated from solver csv file).

Preview is here:  http://smtcomp.jochen-hoenicke.de/2021/participants.html


text:
Add an option to change the username

MS has a route that allows you to change your username without the need to ping someone with database access. The URL is https://metasmoke.erwaysoftware.com/users/username.
Redunda should have such a feature too, if a user wants to change their name.

Or that. Just a way to update it would be nice.
Am Do., 14. Juni 2018 um 17:24 Uhr schrieb Jed Fox <notifications@github.com

:

Alternatively, it could be updated from the user’s SE display name upon
login (or on a schedule).
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/SOBotics/Redunda/issues/50#issuecomment-397335573,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AG-cjN-cym8pyr7UoAaacj2KuXWwaieNks5t8oA_gaJpZM4UoBsU
.

It should now trigger an async username update (from SE) on every login. Pretty cheap call, no reason not to send it often.

repo: SOBotics/Redunda

license_source: bigquery


text:
Disable comScore analytics while playing video in the background

As a Mediapulse analyst I don't want videos to be tracked when played in the background.
Context
Mediapulse requires videos not to be tracked when < 50% of the video surface is visible. We can identify 3 matching scenarios:

The video is visible but only < 50% of its surface is actually presented on screen (e.g. covered by other views or played in a mini player bar).
The video is played in PiP, whose overlay can be put away by the user.
The video is played in the background (lock screen or app switching).

Due to the nature of the problem we cannot automatically cover several of these use cases:

< 50% area coverage is difficult to address automatically (we cannot really reliably determine how much of a view is visible).
We cannot know when the PiP overlay is visible or not.

We should therefore:

Deal with the cases that can be addressed automatically (app state transitions).
Document how app developers should manually address the other cases, using the available isTracked flag.

Remark
The isTracked flag is greedy and disables all trackers. If finer-grained control is required we should discuss https://github.com/SRGSSR/pillarbox-documentation/issues/38 as well.
Acceptance criteria

Background video playback is not tracked where automatically feasible.
Limitations and manual implementation requirements are documented.

Tasks

[ ] Disable comScore analytics while the application is in background.
[ ] Document required manual implementation inside an app (disabled for < 50% visibility).

Duplicate of #419. Visibility documentation added to #355. Closed.

repo: SRGSSR/pillarbox-apple


text:
Refactor Communication

[ ] change ambiguous verb/noun names/functions
[ ] confirm battery voltage is sent back to ROS
[ ] confirm torques are sent back to ROS

[ ] IMU values

authors: guyfleeman joe-spall

repo: SSL-A-Team/firmware


text:
Returning object of a component client from another component action fails

I am trying to return an object of a component client from an action defined in another component. Passing the same object in action as argument seems to work fine, but returning produces an error. What is the correct way of doing it ?
Minimal code for what I want :
#include <hpx/hpx_init.hpp>
#include <hpx/include/actions.hpp>
#include <hpx/include/components.hpp>

#include <utility>

struct foo_server : public hpx::components::component_base<foo_server>
{
};

using foo_server_type = hpx::components::component<foo_server>;
HPX_REGISTER_COMPONENT(foo_server_type, foo_server);

struct foo : public hpx::components::client_base<foo, foo_server>
{
   public:
   using base_type = hpx::components::client_base<foo, foo_server>;

   foo() = default;

   foo(hpx::id_type id) : base_type(std::move(id))
   {
   }

};

struct bar_server : public hpx::components::component_base<bar_server>
{
   foo get_foo() {
       //return hpx::new_<foo_server>(hpx::find_here());
       return foo(hpx::find_here());
   }
   HPX_DEFINE_COMPONENT_DIRECT_ACTION(bar_server, get_foo, get_foo_action);
};
using bar_server_type = hpx::components::component<bar_server>;
HPX_REGISTER_COMPONENT(bar_server_type, bar_server);

HPX_REGISTER_ACTION(bar_server::get_foo_action);

struct bar : public hpx::components::client_base<bar, bar_server>
{
   public:
   using base_type = hpx::components::client_base<bar, bar_server>;

   bar() = default;

   bar(hpx::id_type id) : base_type(std::move(id))
   {
   }

   hpx::future<foo> get_foo() {
       bar_server::get_foo_action act;
       // This async statement gives compilation error
       return hpx::async(act, hpx::find_here());
   }

};

int hpx_main(int, char*[])
{

   bar b(hpx::find_here());
   auto res = b.get_foo().get();

   return hpx::finalize();
}

int main(int argc, char* argv[])
{
  return hpx::init(argc, argv);
}

Compilation fails with error :
test.cpp: In member function ‘hpx::lcos::future<foo> bar::get_foo()’:
test.cpp:54:26: error: could not convert ‘hpx::async(F&&, Ts&& ...) [with F = bar_server::get_foo_action&; Ts = {hpx::naming::id_type}; decltype (hpx::detail::async_dispatch<type
name hpx::util::decay<Action>::type>::call(forward<F>(f), (forward<Ts>)(hpx::async::ts)...)) = hpx::lcos::future<hpx::naming::id_type>; typename hpx::util::decay<Action>::type =
bar_server::get_foo_action](hpx::find_here(hpx::error_code&)())’ from ‘hpx::lcos::future<hpx::naming::id_type>’ to ‘hpx::lcos::future<foo>’
        return hpx::async(act, hpx::find_here());

just for a note, clang says:
ex.cc:54:15: error: no viable conversion from returned value of type 'future<typename traits::promise_local_result<typename hpx::traits::extract_action<get_foo_action>::remote_result_type>::type>' to
function return type 'future<foo>'
                return hpx::async(act, hpx::find_here());
.......
/usr/local/include/hpx/runtime/components/client_base.hpp:78:24: error: no matching conversion for functional-style cast from 'future<hpx::naming::id_type>' to 'foo'
                return Derived(future<id_type>(shared_state));

The problem is a result of several issues:

Direct actions currently don't support returning futures (clients are just special futures, and theyare treated as such by HPX). This needs to be fixed at some point.
hpx::async for actions unfortunately behaves differently if compared to hpx::async for local functions. The former automatically unwraps futures, the latter does not automatically unwraps those (the same holds for clients). This is an unfortunate inconsistency which we might want to fix at some point in the future as well.
The client implementations in the given code example miss a special implicit (converting) constructor from future<id_type>

Given these restrictions, the following code does what the OP needed:
#include <hpx/hpx_init.hpp>
#include <hpx/include/actions.hpp>
#include <hpx/include/components.hpp>

#include <utility>

///////////////////////////////////////////////////////////////////////////////
struct foo_server : public hpx::components::component_base<foo_server>
{
};

using foo_server_type = hpx::components::component<foo_server>;
HPX_REGISTER_COMPONENT(foo_server_type, foo_server);

struct foo : public hpx::components::client_base<foo, foo_server>
{
    using base_type = hpx::components::client_base<foo, foo_server>;

    foo() = default;

    // note: this constructor now creates a new component instance
    foo(hpx::id_type id) : base_type(hpx::new_<foo_server>(id)) {}

    // additional converting constructor
    foo(hpx::future<hpx::id_type> && id) : base_type(std::move(id)) {}
};

///////////////////////////////////////////////////////////////////////////////
struct bar_server : public hpx::components::component_base<bar_server>
{
    foo get_foo()
    {
        return foo(hpx::find_here());
    }

    HPX_DEFINE_COMPONENT_ACTION(bar_server, get_foo, get_foo_action);
};
using bar_server_type = hpx::components::component<bar_server>;
HPX_REGISTER_COMPONENT(bar_server_type, bar_server);

HPX_REGISTER_ACTION(bar_server::get_foo_action);

struct bar : public hpx::components::client_base<bar, bar_server>
{
    using base_type = hpx::components::client_base<bar, bar_server>;

    bar() = default;

    // note: this constructor now creates a new component instance
    bar(hpx::id_type id) : base_type(hpx::new_<bar_server>(id)) {}

    // additional converting constructor
    bar(hpx::future<hpx::id_type> && id) : base_type(std::move(id)) {}

    // note the client function returns a foo, not a future<foo>,
    // remember clients are 'futures' too, just special ones
    foo get_foo()
    {
        bar_server::get_foo_action act;
        return hpx::async(act, hpx::find_here());
    }
};

///////////////////////////////////////////////////////////////////////////////
int hpx_main(int, char*[])
{
   bar b(hpx::find_here());
   auto res = b.get_foo().get();

   return hpx::finalize();
}

int main(int argc, char* argv[])
{
  return hpx::init(argc, argv);
}

This can be closed as the OP has resolved his problems

authors: AntonBikineev hkaiser

repo: STEllAR-GROUP/hpx


text:
Fix outdated documentation and missing flags

Fixes #1868
Proposed Changes

Remove/add changed params
Add missing \cond \endcond attributes

Checklist
Not all points below apply to all pull requests.

[ ] I have added a new feature and have added tests to go along with it.
[ ] I have fixed a bug and have added a regression test.
[ ] I have added a test using random numbers; I have made sure it uses a seed, and that random numbers generated are valid inputs for the tests.

Can one of the admins verify this patch?

authors: StellarBot shachar-a


text:
🛑 SPCast / Loadbalancer is down

In 753352f, SPCast / Loadbalancer (https://loadbalancer.sp.radio.fm/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: SPCast / Loadbalancer is back up in 2966295 after 25 minutes.


text:
🛑 SPCast / Loadbalancer is down

In c9f6acc, SPCast / Loadbalancer (https://loadbalancer.sp.radio.fm/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: SPCast / Loadbalancer is back up in cf910f7 after 10 minutes.


text:
set testr with update alternatives

in an upgrade from 5to6 somehow testr points to /usr/bin/testr-2.6
which soes not exist. there is /usr/bin/testr-2.7 instead so we
need to set the right path with update-alternatives
17:10:42 + ./run_tempest.sh -N -t -s
17:10:42 + tee tempest.log
17:10:42 ./run_tempest.sh: line 90: testr: command not found
17:10:42 ./run_tempest.sh: line 107: testr: command not found
17:10:42 ./run_tempest.sh: line 107: subunit-2to1: command not found

not sure if that is the best solution, maybe we should run it only under certain conditions like "in an upgrade" or sth. does anyone have a better solution here, or can tell me the conditions under which we have to run this code?

hm. wasn't there a patch from @vuntz for that problem already?

hm. wasn't there a patch from @vuntz for that problem already?

i don't know. btw we have to do the same for subunit-2to1

This fix should go to somewhere else. Fixing it only for mkcloud runs seems odd. It is a quick workaround for sure, but it should be commented that this is a temporary workaround (with the corresponding bug number) that should be reverted once its fixed.
If we would keep it this PR hides the real issue from our ci runs.

This fix should go to somewhere else.

I guess that would be python-testrepository

or python-os-testr in D:C:6 in this case?

I just discovered https://github.com/crowbar/crowbar-core/pull/389 which could fix the issue

In that case lets close this PR

authors: MaximilianMeister jdsn toabctl

repo: SUSE-Cloud/automation


text:
Portus PORTUS_BACKGROUND=true and database empty

Hi All:
I enabled the background process with env PORTUS_BACKGROUND=true.
The problem is when the database are empty  and NOT READY because PORTUS on bootstrap does not create the database yet, so, error:
[Database] Not ready yet. Waiting...
/srv/Portus/lib/portus/db.rb:40:in `wait_until': Timeout reached for 'ready' status
[Database] Timeout reached, exiting with error. Check the logs...

Database are not ready because PORTUS launch background proccess before the database creation on bootstrap.
How I could solve this?
Regards

You need to run two containers, one without the worker setting and one with it set to true. If you just run the worker you won't actually have a Portus server running to init the DB.

This issue sadly slipped through...

You need to run two containers, one without the worker setting and one with it set to true. If you just run the worker you won't actually have a Portus server running to init the DB.

Exactly :+1:
I'll close this issue now, but feel free to leave more comments if you have further doubts on this issue.

What flag should I use to docker run Portus in server mode so that it will bootstrap the database.

@anandr781 no flag, actually. See this examples

authors: anandr781 felixPG mssola seanhoughton

repo: SUSE/Portus


text:
"Invalid filter syntax" on LDAP team sync

Description
Adding new users to teams through LDAP fails with the message [ldap] Connection error: Invalid filter syntax..
Steps to reproduce

Add a team "LW-LI" (matching the LDAP group CN=LW-LI,OU=Universal,OU=Group,OU=NW,OU=DE,OU=Production,DC=my-company,DC=com)
Add a new user "debk0l" through first login of LDAP account
Seeing that the user can login and works
Watching the background taks logs, waiting for team addition

Expected behavior: The use should be added to the team
Actual behavior: [ldap] Connection error: Invalid filter syntax.

Logs don't show any valuable information:
[ldap] Looking up an LDAP group membership for 'debk0l'
  User Load (0.4ms)  SELECT  `users`.* FROM `users` WHERE `users`.`username` = 'debk0l' LIMIT 1
[ldap] Connection error: Invalid filter syntax.

Assumption
I assume, it's failing here when accessing the distinguished name. In our LDAP, there is no field dn, just distinguishedName. This will result in search.groups_from in a filter of the form (&(cn=*)(member=)) which is of course invalid.
I think, like with the uid, the dn attribute needs to be configurable.
I currently can't build the image myself to try it out, since our IT is using a man-in-the-middle proxy (ZScaler) with a self-signed certificate that parts of the your build chain are not trusting.
Deployment information
Deployment method:
Docker compose, pretty similar to the example.
Configuration:
Running docker-image opensuse/portus:head from today.
ldap:
  enabled: true
  hostname: "mos1d00001.my-company.com"
  port: 636
  timeout: 5
  encryption:
    method: "simple_tls"
  base: "OU=Production,DC=my-company,DC=com"
  group_base: "OU=Universal,OU=Group,OU=NW,OU=DE,OU=Production,DC=my-company,DC=com"
  filter: "(&(objectCategory=person)(memberOf=CN=LW-LI,OU=Universal,OU=Group,OU=NW,OU=DE,OU=Production,DC=my-company,DC=com))"
  uid: "sAMAccountName"
  authentication:
    enabled: true
    bind_dn: "cn=ldap-user,ou=service,ou=user,ou=MB,ou=DE,ou=production,DC=my-company,DC=com"
  group_sync:
    enabled: true
    default_role: "contributor"
  guess_email:
    enabled: true
    attr: "userPrincipalName"

Portus version: 2.5.0-dev@a1b9f2ebfeb84680a9dcd5629195e4c52815735c
LDAP samples (relevant excerpt)
ldaps://mos1d00001.my-company.com:636/CN=Kraemer%5C,%20Benjamin,OU=LW-LI,OU=JLS,OU=Department,OU=People,OU=User,OU=MB,OU=DE,OU=Production,DC=my-company,DC=com

Field
Value

objectClass
person

cn
Kraemer, Benjamin

distinguishedName
CN=Kraemer, Benjamin,OU=LW-LI,OU=JLS,OU=Department,OU=People,OU=User,OU=MB,OU=DE,OU=Production,DC=my-company,DC=com

memberOf
CN=LW-LI,OU=Universal,OU=Group,OU=NW,OU=DE,OU=Production,DC=my-company,DC=com

sAMAccountName
dejhbk0l

userPrincipalName
Benjamin.Kraemer@my-company.com

ldaps://mos1d00001.my-company.com:636/LW-LI,OU=Universal,OU=Group,OU=NW,OU=DE,OU=Production,DC=my-company,DC=com

Field
Value

objectClass
group

member
CN=Kraemer, Benjamin,OU=LW-LI,OU=JLS,OU=Department,OU=People,OU=User,OU=MB,OU=DE,OU=Production,DC=my-company,DC=com

Still waiting for any attention by the team.

Still a problem

bump

/unstale


text:
Verbalizzare ricevimento 14/02

Ricevimento con il prof. Cardin - 14/02/2023
Informazioni preliminari
Durata: 8:50 - 9:15
Partecipanti:

Alessandro Massarenti
Mattia Casarotto
Luca Pierobon
Michele Bonavigo
Samuel Peron

Ricevimento
Discussioni iniziali
Discussione iniziale sullo scambio di mail avvenuto con il professor Cardin e Vardanega.
Discussione sulla direzione del PoC: Lo scopo del PoC è quello di costringere a fare una selezione di parte tecnologica, studiandola e verificando che si integri bene. Il PoC deve quindi dimostrare che abbiamo scelto e approfondito le tecnologie in modo che si integrino.
Q&A

Q: Cosa ne pensa il professore di Eclipse Mosquitto?
Chiedere se possiamo concentrarci su Mosquitto come concept e poi in futuro switchare ad altre tecnologie: si pensava HiveMQ.

A: Non si può cambiare tecnologia dopo PoC, segno di pessima progettazione. Ogni modifica deve essere giustificata.

Q: Differenza tra documento di Analisi dei requisiti ideale con quello attuale.

A: La parte fondamentale sono i requisiti, devono essere atomici, quantitativi e verificabili. Specificare i Requisiti di vincolo e i Requisiti di funzionalità.

Q: In che modo conviene (con che protocollo) far comunicare i client con il server per fare in modo che la pagina dell'interfaccia utente si aggiorni automaticamente quando cambia il server.
Aggiornare, perciò, in real-time le varie interfacce mentre l'utente è collegato ogni qualvolta il coordinatore decide di aggiornare lo stato di un lampione. [XMTP, SOAP, Long polling(?), ecc.]

A: Bisogno di un Websocket, a detta sua è prassi.
Altre alternative: Webhook, Server Sent Events (SSE).

Q: Problemi vari con le UC?
In particolare ci sono modi alternativi di rappresentare il Sistema di gestione (pag. 11)? Magari utilizzando un attore placeholder per sfruttare la generalizzazione.

A: Rimandato a nuovo ricevimento/email.
Discussione post ricevimento

Avendo una comunicazione presente già da client a server, SSE sembra la scelta più conveniente.
Necessario scegliere i protocolli anche pensando al problema della cifratura.

Questo è come SSE potrebbe essere utilizzato in una bozza di architettura stilata con @casYy:

repo: SWEasabi/verbali


text:
Cannot handle OLD MiSFiTMAME DAT entries.

Ex. MiSFiTMAME (v0.55) dat.
game (
	name diggermn
	description "Digger Man"
	year 1994
	manufacturer "Face ?"
	romof neogeo
	rom ( name dig_p1.rom size 524288 crc eda433d7 region cpu1 offs 0 )
	rom ( name dig_s1.rom size 65536 crc 75a88c1f region gfx1 offs 0 )
	rom ( name ng-sfix.rom merge ng-sfix.rom size 131072 crc 354029fc region gfx1 offs 20000 )
	rom ( name neo-geo.rom merge neo-geo.rom size 131072 crc 9036d879 region user1 flags 0x5 offs 0 )
	rom ( name ng-sm1.rom merge ng-sm1.rom size 131072 crc 97cf998b region cpu2 offs 0 )
	rom ( name dig_m1.rom size 65536 crc 833cdf1b region cpu2 offs 0 )
	rom ( name dig_v1.rom size 524288 crc ee15bda4 region sound1 flags soundonly offs 0 )
	rom ( name dig_c1.rom size 524288 crc 3db0a4ed region gfx2 offs 0 )
	rom ( name dig_c2.rom size 524288 crc 3e632161 region gfx2 offs 1 )
	chip ( type cpu name 68000 clock 12000000 )
	chip ( type cpu flags audio name Z80 clock 6000000 )
	chip ( type audio name YM2610 clock 8000000 )
	video ( screen raster orientation horizontal x 304 y 224 aspectx 4 aspecty 3 freq 60.000000 )
	sound ( channels 2 )
	input ( players 2 control joy8way buttons 4 coins 2 )
	dipswitch ( name "Test Switch" entry "Off" entry "On" default "Off" )
	dipswitch ( name "Coin Chutes?" entry "1?" entry "2?" default "2?" )
	dipswitch ( name "Autofire (in some games)" entry "Off" entry "On" default "Off" )
	dipswitch ( name "COMM Setting" entry "Off" entry "1" entry "2" entry "3" entry "4" default "Off" )
	dipswitch ( name "Free Play" entry "Off" entry "On" default "Off" )
	dipswitch ( name "Freeze" entry "Off" entry "On" default "Off" )
	dipswitch ( name "Territory" entry "Japan" entry "USA" entry "Europe" default "Europe" )
	driver ( status good color good sound good palettesize 4096 blit plain )
)

Translated by SabreTools
	<machine name="diggermn" romof="neogeo">
		<description>Digger Man</description>
		<year>1994</year>
		<manufacturer>Face ?</manufacturer>
		<rom name="dig_c1.rom" size="524288" crc="3db0a4ed" />
		<rom name="dig_c2.rom" size="524288" crc="3e632161" />
		<rom name="dig_m1.rom" size="65536" crc="833cdf1b" />
		<rom name="dig_p1.rom" size="524288" crc="eda433d7" />
		<rom name="dig_s1.rom" size="65536" crc="75a88c1f" />
		<rom name="dig_v1.rom" size="524288" crc="ee15bda4" />
		<rom name="neo-geo.rom" size="131072" crc="9036d879" />
		<rom name="ng-sfix.rom" size="131072" crc="354029fc" />
		<rom name="ng-sm1.rom" size="131072" crc="97cf998b" />
		<rom name="" size="" />
		<rom name="Rom_1" size="" />
		<chip name="68000" type="" />
		<chip name="YM2610" type="" />
		<chip name="Z80" type="" />
		<dipswitch name="Autofire (in some games)" tag="" mask="" />
		<dipswitch name="Coin Chutes?" tag="" mask="" />
		<dipswitch name="COMM Setting" tag="" mask="" />
		<dipswitch name="Free Play" tag="" mask="" />
		<dipswitch name="Freeze" tag="" mask="" />
		<dipswitch name="Territory" tag="" mask="" />
		<dipswitch name="Test Switch" tag="" mask="" />
		<driver status="" emulation="" savestate="" />
		<sound channels="" />
	</machine>

  <rom name="" size="" />
  <rom name="Rom_1" size="" />

Where from?
"video" "input" -> vanished.
"sound channels" -> lost value.

Should be supported now.

authors: Lutepatious mnadareski

repo: SabreTools/SabreTools


text:
ERROR: [TAG] Failed to resolve variable '${junit.version}'

Launching lib/main.dart on Android SDK built for x86 in debug mode...
ERROR: [TAG] Failed to resolve variable '${junit.version}'
ERROR: [TAG] Failed to resolve variable '${animal.sniffer.version}'

@AhmadShakerASH Merge with latest change

authors: AhmadShakerASH Sadmansamee

repo: SadaqaWorks/Quran-Flutter


text:
docs: Better documentation for developers

Closes #375.
Summary of Changes

Improved developer documentation about tests
Added guidelines about copying objects (rather than modifying them in-place)
Added code-style guidelines
Added code review guidelines

The code style section got somewhat small. Turns out we don't really have a common code style except for "do what the linter says".
Thought about alsl adding an FAQ for developers, but I came up with only like 3 questions, that didn't see emough, so I dropped the idea.
Don't have any other ideas, so let me mark this as ready for review.

:tada: This PR is included in version 0.15.0 :tada:
The release is available on:

v0.15.0
GitHub release

Your semantic-release bot :package::rocket:

authors: lars-reimann zzril

repo: Safe-DS/Stdlib


text:
Refactor the validation functions in DCA to incorporate changes from schematic

Incorporate backend updates from https://github.com/Sage-Bionetworks/schematic/pull/614

#315

[x] Ensure the updated validateModelManifest() works as expected
[x] Refactor related validation function in DCA to address the changes from schematic: e.g. validateModelManifest() now return two things: "error" and "warning". I think we just need first element (error) of output list in DCA for now

#322

[x] Test cross-manifest rules on HTAN data:  https://github.com/ncihtan/data-models/pull/28
[ ] update UI error messages for cross-manifest errors

related to https://github.com/Sage-Bionetworks/schematic/issues/683:

One thing to note for DCA:
Each row represents each invalid value with error in the UI error table, so "matchExactlyOne" might not be fit for the error table since entire column/attribute is invalid. Thus, we might consider "matchExactlyOne" errors as a separated error type, I could just highlight the invalid source attribute and throw its errors.

Editting:
I have run some tests on the cross-manifest testing (MatchAtLeast) using the latest schematic:

testing manifest
testing data model

there is only one cross-manifest rule:
"matchAtLeastOne scRNA-seqLevel1.HTANParentBiospecimenID Biospecimen.HTANBiospecimenID"

Here is my benchmarking result for running time (by running validation 5 times with ^ testing files using hypefine:
Using the schematic before  700 is merged:
hyperfine --warmup 1 --runs 5 --ignore-failure 'schematic model -c schematic_config.yml validate -mp ~/Downloads/htan/test-cross-link.csv -dt ScRNA-seqLevel1'

Using the latest schematic:
hyperfine --warmup 1 --runs 5 --ignore-failure 'schematic model -c schematic_config.yml validate -mp ~/Downloads/htan/test-cross-link.csv -dt ScRNA-seqLevel1'

This is my downloading speed:
Testing download speed................................................................................
Download: 8.13 Mbit/s
Testing upload speed......................................................................................................
Upload: 11.04 Mbit/s

@rrchai this is exactly the kind of benchmarking we need more of! My take aways from it:

we'll need project scoping - and repeat the same benchmark with it
very likely, we'll still need filtering based on component annotation - that would require adding the component annotation to HTAN dataset manifests retrospectively

@GiaJordan when you're back, what are your thoughts on project scoping readiness for testing?
@ychae what do you think about who'd be best positioned to work on HTAN's retroactive component annotations of manifests?

@rrchai
In the development of this I noticed that when there were multiple manifests for a dataset, it would just take the first one and this wouldn't always be desired, so I added logic there for selection. It shouldn't affect datasets with only one manifest though.
The manifests currently on synapse will also need to have component annotations added either manually or by re-uploading for the expedited gathering to work, otherwise it will revert back to the old behavior.
@milen-sage
Project scoping is ready for testing now; I'm planning on merging #701 on Monday

@ychae what do you think about who'd be best positioned to work on HTAN's retroactive component annotations of manifests?

@milen-sage I think the data liaisons might be able to help with this task -- ideally each liaison would add the component annotation for their centers but I'll need to float this idea by Ashley to see how keen the liaisons would be to take this on.

@GiaJordan @milen-sage By validating on only HTAN center A using the latest schematic (merged 701, the speed is amazing now.

validation results
error: Manifest syn27331282 does not contain the value HTA111111_121324 from row 2 of the attribute HTANParentBiospecimenID in the source manifest.
error: Manifest syn27331282 does not contain the value sdsadasd from row 3 of the attribute HTANParentBiospecimenID in the source manifest.
error: Manifest syn27331282 does not contain the value HTA3_8001_1002 from row 4 of the attribute HTANParentBiospecimenID in the source manifest.

Since there is no flag for project_scope using cli, I replace default value of project_scope with centerA's synId for testing.
hyperfine --warmup 1 --runs 5 'schematic model -c schematic_config.yml validate -mp ~/Downloads/htan/test-cross-link.csv -dt ScRNA-seqLevel1'
  Time (mean ± σ):     18.844 s ±  5.422 s    [User: 4.838 s, System: 0.672 s]
  Range (min … max):   11.972 s … 25.155 s    5 runs

@rrchai I'm not sure why there's different behavior for using the flag and chaning the default value. Does the master_fileview for both contain the CenterA project?
The warning for the unmet access restrictions is expected, though I suppose displaying a message that a censored version of the manifest will be downloaded instead would be helpful.
Very happy to hear about the times!

@GiaJordan ah, you are right. I forgot to use the HTAN's fileview. I will re-test it.

I forgot to use the HTAN's fileview. I will re-test it.

This might explain the speed up too. HTAN's fileview is larger.

Test HTAN fileview

validation results
error: Manifest syn27116926 does not contain the value HTA111111_121324 from row 2 of the attribute HTANParentBiospecimenID in the source manifest.
error: Manifest syn27116926 does not contain the value sdsadasd from row 3 of the attribute HTANParentBiospecimenID in the source manifest.
error: Manifest syn27116926 does not contain the value HTA3_8001_1002 from row 4 of the attribute HTANParentBiospecimenID in the source manifest.
error: Manifest syn30560343 does not contain the value HTA111111_121324 from row 2 of the attribute HTANParentBiospecimenID in the source manifest.
error: Manifest syn30560343 does not contain the value sdsadasd from row 3 of the attribute HTANParentBiospecimenID in the source manifest.
error: Manifest syn30560343 does not contain the value HTA3_8001_1002 from row 4 of the attribute HTANParentBiospecimenID in the source manifest.

hyperfine --warmup 1 --runs 5 'schematic model -c schematic_config.yml validate -mp ~/Downloads/htan/test-cross-link.csv -dt ScRNA-seqLevel1 -ps syn20977135'
  Time (mean ± σ):     120.861 s ± 66.810 s    [User: 16.036 s, System: 1.864 s]
  Range (min … max):   54.659 s … 215.867 s    5 runs

The speed is definitely faster by using project scope. I think 2 min averagely for me is okay to use and test on one/two cross-manifests validation. I notice the most time it takes on my end is querying the fileview table?
Downloading  [####################]100.00%   74.9MB/74.9MB (538.7kB/s) SYNAPSE_TABLE_QUERY_95623552.csv.synapse_download_95623552 Done...

Since the DCA has already stored the synapseStorage object at the beginning. @milen-sage I wonder if it possible to use the synapseStorage object directly as input to avoid downloading it again? I still can proceed to implement it in the DCA without this enhancement.

@GiaJordan I tested the develop-crossM-union-rule branch:

using "matchAtLeastOne Biospecimen.HTANBiospecimenID set":

It looks like it is validating individual values?
warning: Value(s) ['HTA111111_121324'] from row(s) [2] of the attribute htanparentbiospecimenid in the source manifest are missing. Manifest(s) ['syn27116926', 'syn30560343'] are missing the value(s).
Your manifest has been validated successfully. There are no errors in your manifest, and it can be submitted without any modifications.

using "matchAtLeastOne Biospecimen.HTANBiospecimenID value":

warning: Value(s) ['HTA111111_121324'] from row(s) [2] of the attribute htanparentbiospecimenid in the source manifest are missing. Manifest(s) ['syn27116926', 'syn30560343'] are missing the value(s).
Your manifest has been validated successfully. There are no errors in your manifest, and it can be submitted without any modifications.

FYI: currently, the DCA will only extract the error list (4 elements) from validation results and reformat it into a table:

Row
Column
Value
Error

1st element
2rd element
4th element
3rd element (anything start with "not")

Warning could also be used as long as it has the same format of errors. I found the almost all errors from schematic contains "not". To simplify the UI error message, only characters after "not" (including "not") are used. So the error message (3rd element of error output list) prefers to contain "not".

@rrchai yes, let's give reusing the fileview object a try! If this avoids the download time, it would be worth it for sure.
In this case it sounds like there are two items:

integration of the cross-manifest rule in the DCA and the dashboard
fileview object reuse in the dashboard

If the implementation of 2 doesn't affect 1 too much, you can start with 1 and then move on to 2.
On the other hand, if 2 will affect significantly how 1 is implemented, proceeding with 2 and testing it first would make more sense.
My intuition is that 2 shouldn't affect too much 1. What do you think?

@rrchai Thanks for the feedback. It will validate on the set or value level, but with either case it'll display which values are causing the invalidity. And while they've been switched to warnings, the format is still the same.
In response to the query being the limiting step currently, I added the project scope to the table query if one is provided. That should help to speed things up more. This change is still the cross manifest branch, so you can pull the latest version to try.
cc @milen-sage

okay,  my internet issue has been fixed and the downloading speed is back to normal:
Testing download speed................................................................................
Download: 170.74 Mbit/s
Testing upload speed......................................................................................................
Upload: 9.92 Mbit/s

I retested the latest develop branch and downloading fileview table is not as slow as before with ^ speed 😄 :
Using the latest develop branch:
hyperfine --warmup 1 --runs 10 'schematic model -c schematic_config.yml validate -mp ~/Downloads/htan/test-cross-link.csv -dt ScRNA-seqLevel1 -ps syn20977135'
  Time (mean ± σ):     42.877 s ±  5.390 s    [User: 15.350 s, System: 1.220 s]
  Range (min … max):   37.302 s … 51.442 s    10 runs

Using  develop-crossM-union-rule branch:
hyperfine --warmup 1 --runs 10 'schematic model -c schematic_config.yml validate -mp ~/Downloads/htan/test-cross-link.csv -dt ScRNA-seqLevel1 -ps syn20977135'
  Time (mean ± σ):     23.530 s ±  2.253 s    [User: 5.753 s, System: 0.740 s]
  Range (min … max):   20.351 s … 26.741 s    10 runs

@GiaJordan Thank you for the improvement. The new querying looks like that it reduces time significantly from 40ish to 20ish 🚀 !

My intuition is that 2 shouldn't affect too much 1. What do you think?
Based on the benchmarking results, I think downloading fileview object will affect the overall speed of validation. Since the @GiaJordan has already improve the query process and ~20s for one cross-manifest validation is good to me, I could start to implement the cross-manifest rules in the app now.

In short, by testing with one cross-manifest rule with my internet, the faster your downloading speed is and less projects/data to query/download, the faster the cross-manifest validation will be.

@rrchai Thanks for the benchmarking and updates!
In the farther future, we'll likely experiment with converting the synapse storage object to a sentinel object that can be reused within one validation run. This would expedite the validation further in cases where multiple attributes use the cross manifest validation rule.

Looks like we just need to review a PR and this will be ready to close?

@milen-sage can we then merge #751 as well?

authors: GiaJordan milen-sage rrchai ychae


text:
How can we add like a Pod?

Hello,
Can we add SRPopView using pod?
thanks in advance.
Vishal

Yes I am working on a swift version also with some enhancement, will update to a pod in a few days

Pod version is available

Ok thanks

I am adding to the trunk pod so it might take a few hours to take effect, so watch out for the update here

sure.

license: mit


text:
cleared

issue cleared

cleared

cleared

repo: SaikiranVoladri/Java-Placement-course


text:
Set persistent workers for validation dataloader

Following Lightning suggestion ⚡

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

Project coverage is 31.07%. Comparing base (d0a8066) to head (d62facf).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #151   +/-   ##
=======================================
  Coverage   31.07%   31.07%
=======================================
  Files          19       19
  Lines        1223     1223
=======================================
  Hits          380      380
  Misses        843      843

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

authors: codecov-commenter sfmig


text:
Update to 1.20x

Update to 1.20x

I will soon, just finalizing changes for 1.19.4 before thinking of dividing my work

authors: SaishoVibes gitdrug

repo: SaishoVibes/Back-in-Classic-Fabric


text:
ACCT_ViewOverride_CTRL Security Fix

Critical Changes
Changes
Issues Closed
Community Ideas Delivered
Features Intended for Future Release
Features for Elevate Customers
New Metadata
Deleted Metadata

W-13641227

repo: SalesforceFoundation/NPSP


text:
basic algorithms

#1

Hactoberfest-accepted

hacktoberest-accepted


text:
Type issue while onHover and onClick triggers.

Hello, I am facing the issue of gl geocoder disable after adding to clicks on MapGL instance, on hover, and onClick
Let me know how I can resolve this.

Hi @I1mran, is it possible for you to provide a Code Sandbox (https://codesandbox.io/) that demonstrates this issue?

I don't have code right now for sharing.

repo: SamSamskies/react-map-gl-geocoder


text:
Open to new maintainers?

Hi @SamVerschueren! Would you be open to new maintainers? It seems like this dependency will forever be a part of our dep tree, so it'd be great to see its dependencies updated (keeps getting flagged by vulnerability scanners, even though we only use it in local, non-production contexts).

I'm totally down for new maintainers as I don't have much time myself anymore and have different priorities.

Great! I'll volunteer. How do you want to move forward?

repo: SamVerschueren/listr-update-renderer


text:
add csrf protection for resources available to everyone

Reservations made through sulten were previously vulnerable to csrf attacks.

This manually implements the default behaviour in rails 4.
https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/request_forgery_protection.rb#L194

This manually implements the behaviour in rails 4

repo: Samfundet/Samfundet


text:
Implementation of  Installation of Compiling Env & Execution Env

Let's work on compiling env & execution env.
In this issue, only "local installation of debian package" will be handled.

[ ] designing UI for compiling env
[ ] designing UI for execution env
[ ] implementation of compiling env
[ ] implementation of execution env
[ ] implementation of auto detect (finding if any existing local env already exists)

find out the following

[ ] are they working

[ ] implementation of uninstall
[ ] implementation of install
[ ] implementation of install over existing one

Out of scope

remote installation
docker installation
supporting various backends

make it for existing backend first
consider various backends for easier refactoring later
but find clues for various backend support

/cc @jyoungyun

compiling env / execution env are very important concepts, I think. And I'm interested in them. Could you share your concrete concepts for impl them?

Related issue: #306

This issue was not done.
I think it's better to close this and reschedule after discussing with @jyoungyun.

authors: YongseopKim hyunsik-yoon jyoungyun

repo: Samsung/ONE-vscode


text:
Let's define and schdule for ONE-context-explorer and ONE-context-explorer-detail views

[ ] Define this task: ~4/14(Thr)
[ ] Divide/Separate this task and schedule: ~4/15(Fri)

Maybe it's like the below things?
UI Tasks: task0(M1), task1(M2), ...
Internal Impl Tasks for UI: task0(M1), task1(M2), ...

[ ] Make issues and assign on our ONE-project

/cc @Samsung/one-vscode

(Suggestion)
About the naming for those two views we discussed,
how about 'explorer view' and 'detail view' ?

Things to concern
If we are going to regard all tflite, onnx, ... model files as a 'base model' and npu model file as 'target model', our extension will be not very extensible for other model compiler usages.
For example, a model compiler who basically want to do onnx to tflite jobs, it would not work properly.
Therefore, I suggest the concept of 'base model'. Let's make user to select a 'base model' extension and let the 'explorer' only handles them and the 'detail view' to collect other files.
We may start by blocking other options than 'tflite' to make our jobs rather easy.

First of all, we need to discuss whether we support to convert onnx to tflite in our ONE-vscode. How about talking on next Monday about this subject?

First of all, we need to discuss whether we support to convert onnx to tflite in our ONE-vscode.

My suggestion was based on its extensibility, rather than the actual support. I heard that our extension kinda meant to support the other compilers.

I agree. I am closing this on behalf of other members.

authors: YongseopKim dayo09 jyoungyun


text:
[Execute] Introduce DeviceViewNode by device type

This commit introduces DeviceViewNode by device type.
ONE-vscode-DCO-1.0-Signed-off-by: Jiyoung Yun jy910.yun@samsung.com

This PR works normally only when #1660 and #1661 PRs are merged together.


text:
On Deleting  a task confetti should not pop up

You must have observed a new confetti feature on our website. The thing is this appears even when a user deletes a task (clicking on a cross button) . To resolve this call the API call when user wants to delete and API call when user has completed the task should come inside different functions .

@SaraswatGit I want to work on this issue under JWoC.

@Aniket-508  I have assigned the issue to you, Best Wishes, for any problem reach out to me on discord .

repo: SaraswatGit/PlanZap


text:
Added gyolo

when you type gyolo it will pull random commit message from the internet and commit changes with that message

@mrsupiri If you are interested, you can add something like Semantic or Conventional commit style.

authors: SarathSantoshDamaraju mrsupiri

repo: SarathSantoshDamaraju/lazyGit


text:
MergeSort Without Taking Extra Space

Enter your question -
Merge Without Extra Space
Enter link to the question(if question belongs to any online platform) -
Merge Without Extra Space
Tags for the question(eg - Array, Basic, Stack, etc.) -
Array,Sorting

@RAshid602,
Kindly add your solution to "GeeksForGeeks" folder.
Deadline - 10/10/2021

Can I work on this?

@sRahul-00,
Its great to see your interest to solve the question. But since the deadline ain't over yet. You may refer to CONTRIBUTING.md for getting futher details and guidelines on how to contribute to this repo.


text:
Need to standardize grammar, labels, language style

[ ] replace all straight/dumb quotation marks "" with fancy/smart quotes “” when needed as actual quotations. Terms and categories should be indicated using bold tags
[ ] use of HET vs Health Equity Tracker
[ ] need to define what is in the term itself, vs which is a logical combination multiple defined groups. &, and, or. When to use commas? When to use oxford commas? Josh noted CDC uses /

hold on this until larger website redesign and copy updates with Mahia

authors: benhammondmusic jgonzalezmsm

repo: SatcherInstitute/health-equity-tracker


text:
chore(chats): reactions position

STR:

go to chat
send message
right click

suggestion - when we add a reaction goes below the message but the reaction list is above the message, shouldn't both be either both in top or both in below?

macOS, m1

I think we should eventually use the emoji picker for the reactions or at least have options be in the context menu when you right click rather than be an additional action. Maybe we have a list of common reaction emoji and an extra button to view them all?

repo: Satellite-im/Uplink


text:
update(Friend): Create toast message for friend request and delete modals

What this PR does 📖
1. Create toast messages on friend requests action, and delete modals
2. After send a friend request, if it is successful or not, it delete did from input.
3. Fix null problem on current dev with a if
4. Update rules for input on username, and add rules for status message
Which issue(s) this PR fixes 🔨

Resolve #181

Special notes for reviewers 🗒
Additional comments 🎤

Tested the following

On Create Account screen:

Pin input empty - passed
Pin input less than 4 characters - passed
Pin input with spaces - passed
Pin input with non-alphanumeric chars - passed
Pin input with more than 32 chars - passed
Status input with more than 128 chars - passed
Noticed that create user button is always enabled even though there is an error input value (we might need a new ticket for this)

On Friend Requests

Modal is gone and now is toast notification displayed after sending friend request (sucess and to yourself) - Passed
Friend DID Input field is cleared out after sending friend request - Passed

Null Problem - Passed (app compiled correctly on branch)

Settings Profile

Same scenarios above passed
Noticed that Save/Cancel buttons are still displayed when there is a wrong input value. If user clicks on Save nothing happens
One more weird scenario found:

On settings profile, enter a new username - good value

Enter now a status exceeding 128 chars

Click on Save button

Profile updated toast notification will show

authors: lgmarchi luisecm

repo: Satellite-im/UplinkWeb