Abstract Base By Reference Canidate Causing Errors

Please consider this sample code:
#include <boost/rational.hpp>
#include <iostream>

class AbstractBase
{
public:
   virtual ~AbstractBase() {}
   virtual int MethodToMakeBaseAbstract() const = 0;
};
class Derived : public AbstractBase
{
public:
   int MethodToMakeBaseAbstract() const override { return 0; }
};

int FramesToSeconds( const AbstractBase& /*project*/ )
{
   return 3;
}
int FramesToSeconds( boost::rational<int> /*editRate*/ )
{
   return 4;
}

int main()
{
   AbstractBase* p = new Derived();

   std::cout << FramesToSeconds( *p ) << std::endl;

   delete p;
}

I believe the output should be 3 and with no problems compiling.  It compiles fine on Clang.  I am having issues with GCC (<IP_ADDRESS>902) and Microsoft Visual Studio 15.7.5 with Boost version 1.64.0 and higher (tested through Boost version 1.69.0).  Boost version 1.63.0 seems builds fine with that example on GCC.
Here is the compiler flags with using Wandbox to test this
g++ prog.cc -Wall -Wextra -I/opt/wandbox/boost-1.64.0/gcc-head/include -std=c++17

Here are the errors I am seeing:

```
In file included from /opt/wandbox/gcc-head/include/c++/9.0.1/string_view:40,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/bits/basic_string.h:48,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/string:55,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/bits/locale_classes.h:40,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/bits/ios_base.h:41,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/iomanip:40,
                 from /opt/wandbox/boost-1.64.0/gcc-head/include/boost/rational.hpp:68,
                 from prog.cc:1:
/opt/wandbox/gcc-head/include/c++/9.0.1/limits: In instantiation of 'struct std::numeric_limits':
/opt/wandbox/boost-1.64.0/gcc-head/include/boost/rational.hpp:119:7:   required from 'const bool boost::rational_detail::is_compatible_integer::value'
/opt/wandbox/boost-1.64.0/gcc-head/include/boost/rational.hpp:156:21:   required by substitution of 'template constexpr boost::rational::rational(const T&, const typename boost::enable_if_c::value, void>::type*) [with T = AbstractBase]'
prog.cc:29:37:   required from here
/opt/wandbox/gcc-head/include/c++/9.0.1/limits:317:7: error: invalid abstract return type 'AbstractBase'
  317 |       min() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
      |       ^~~
prog.cc:4:7: note:   because the following virtual functions are pure within 'AbstractBase':
    4 | class AbstractBase
      |       ^~~~~~~~~~~~
prog.cc:8:16: note: 	'virtual int AbstractBase::MethodToMakeBaseAbstract() const'
    8 |    virtual int MethodToMakeBaseAbstract() const = 0;
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /opt/wandbox/gcc-head/include/c++/9.0.1/string_view:40,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/bits/basic_string.h:48,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/string:55,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/bits/locale_classes.h:40,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/bits/ios_base.h:41,
                 from /opt/wandbox/gcc-head/include/c++/9.0.1/iomanip:40,
                 from /opt/wandbox/boost-1.64.0/gcc-head/include/boost/rational.hpp:68,
                 from prog.cc:1:
/opt/wandbox/gcc-head/include/c++/9.0.1/limits:321:7: error: invalid abstract return type 'AbstractBase'
  321 |       max() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
      |       ^~~
/opt/wandbox/gcc-head/include/c++/9.0.1/limits:327:7: error: invalid abstract return type 'AbstractBase'
  327 |       lowest() noexcept { return _Tp(); }
      |       ^~~~~~
/opt/wandbox/gcc-head/include/c++/9.0.1/limits:333:7: error: invalid abstract return type 'AbstractBase'
  333 |       epsilon() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
      |       ^~~~~~~
/opt/wandbox/gcc-head/include/c++/9.0.1/limits:337:7: error: invalid abstract return type 'AbstractBase'
  337 |       round_error() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
      |       ^~~~~~~~~~~
/opt/wandbox/gcc-head/include/c++/9.0.1/limits:341:7: error: invalid abstract return type 'AbstractBase'
  341 |       infinity() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
      |       ^~~~~~~~
/opt/wandbox/gcc-head/include/c++/9.0.1/limits:346:7: error: invalid abstract return type 'AbstractBase'
  346 |       quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
      |       ^~~~~~~~~
/opt/wandbox/gcc-head/include/c++/9.0.1/limits:351:7: error: invalid abstract return type 'AbstractBase'
  351 |       signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
      |       ^~~~~~~~~~~~~
/opt/wandbox/gcc-head/include/c++/9.0.1/limits:357:7: error: invalid abstract return type 'AbstractBase'
  357 |       denorm_min() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
      |       ^~~~~~~~~~
```

There are several workarounds I can do to get my code to compile such as make the AbstractBase class not be abstract (no pure virtual functions), or rename the function so it is no longer considered, and also make my function take the base class by pointer instead of reference.  Because it builds on Clang, I am not sure if it is ultimately a GCC/MSVC bug.
Let me know if there is any additional information I can give you to help.  Thank you.

Does the problem persist if you replace all the boost::rational<int> with (say) std::complex<double>?

The problem does not persist with std::complex<double>.  Here is that sample I tested for you:
#include <complex>
#include <iostream>

class AbstractBase
{
public:
   virtual ~AbstractBase() {}
   virtual int MethodToMakeBaseAbstract() const = 0;
};
class Derived : public AbstractBase
{
public:
   int MethodToMakeBaseAbstract() const override { return 0; }
};

int FramesToSeconds( const AbstractBase& /*project*/ )
{
   return 3;
}
int FramesToSeconds( std::complex<double> /*editRate*/ )
{
   return 4;
}

int main()
{
   AbstractBase* p = new Derived();

   std::cout << FramesToSeconds( *p ) << std::endl;

   delete p;
}

Ok, this is what I think is happening here.
Gcc looks at the two overloads for FramesToSeconds, and has a Derived & in hand.
So it attempts to see if it can convert this to a boost::rational<int> and fails, because there's a SFINAE check. But it produces a hard error, rather than a substitution failure.

and has a Derived & in hand

If it helps the problem still persists if I adjust the main function to look like this:
int main()
{
   AbstractBase* p = new Derived();

   const AbstractBase& baseRef = *p;

   std::cout << FramesToSeconds( baseRef ) << std::endl;

   delete p;
}

Maybe it is still fair to say Derived &.  🤷♂
But yes I think you are right about how it attempt to see if it can convert to a boost::rational<int> and fails, rather than a substitution failure.

The changes in ff2530e11924323daa995fbd5ec1cf4bae26b53c cause numeric_limits<AbstractBase> to be instantiated, and that is ill-formed (no diagnostic required) because it declares member functions returning an abstract type. GCC rejects this, even in uninstantiated templates, as described at the end of https://gcc.gnu.org/gcc-4.9/porting_to.html
The invalid instantiation happens outside the immediate context, and so is not just a substitution failure.
A minimal reproducer that fails with GCC is:
template<typename T>
struct numeric_limits
{
    static const bool is_specialized = false;
    static T zero() { return T(); }
};

template<bool, typename T = void>
struct enable_if
{
    typedef T type;
};

template<typename T>
struct enable_if<false, T>
{ };

struct rational {
    template<typename T>
    struct is_compatible_integer
    {
        static const bool value = numeric_limits<T>::is_specialized;
    };

    template<typename T>
    rational(T, typename enable_if<is_compatible_integer<T>::value>::type* = 0) { }
};

class AbstractBase
{
public:
   virtual int MethodToMakeBaseAbstract() const = 0;
};
class Derived : public AbstractBase
{
public:
   int MethodToMakeBaseAbstract() const override { return 0; }
};

int f( const AbstractBase& )
{
   return 3;
}
int f( rational )
{
   return 4;
}

void g(AbstractBase* p)
{
    f(*p);
}

The solution is use is_integral<T> instead of relying on numeric_limits<T>::is_integer, or use some other SFINAE-friendly check that the type is a value type that won't cause numeric_limits to explode.

@mclow asked me to comment.
See P0929, voted into the working paper as a defect report at Rapperswil 2018. The old rules for abstract classes don't work very well, because they create errors "too early", and in contexts where we never required the class type in question to even be a complete type.
Under the new post-P0929 rules, I think libstdc++'s technique is valid. Declaring a function whose return type is an abstract class type is now valid, and it's only defining or calling such a function that renders the program ill-formed (and instantiating numeric_limits<Abstract> to get at the is_integer member shouldn't do that). So you could argue that this is a GCC bug (but it wouldn't be especially fair to do so, since this is a recent DR). In the mean time, it seems like the onus is on boost to work around this.

Thanks, @zygoloid -- this is https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86252


Build errors v11.0.0

The MacPorts port maintainer here.
I was trying to update qpdf to version 11.0.0 under macOS 12.5.1. I get the following build errors:
:info:build [ 71%] Built target test_renumber :info:build /opt/local/var/macports/build/_Users_marius_Development_MacPorts_ports_textproc_qpdf/qpdf/work/qpdf-11.0.0/examples/pdf-create.cc:32:18: warning: 'ImageProvider::provideStreamData' hides overloaded virtual functions [-Woverloaded-virtual] :info:build     virtual void provideStreamData(QPDFObjGen const&, Pipeline* pipeline); :info:build                  ^ :info:build /opt/local/include/qpdf/QPDFObjectHandle.hh:120:22: note: hidden overloaded virtual function 'QPDFObjectHandle::StreamDataProvider::provideStreamData' declared here: different number of parameters (3 vs 2) :info:build         virtual void provideStreamData(int objid, int generation, :info:build                      ^ :info:build /opt/local/include/qpdf/QPDFObjectHandle.hh:123:22: note: hidden overloaded virtual function 'QPDFObjectHandle::StreamDataProvider::provideStreamData' declared here: different number of parameters (5 vs 2) :info:build         virtual bool provideStreamData( :info:build                      ^ :info:build /opt/local/var/macports/build/_Users_marius_Development_MacPorts_ports_textproc_qpdf/qpdf/work/qpdf-11.0.0/examples/pdf-create.cc:120:16: error: no member named 'writeString' in 'Pipeline' :info:build             p->writeString(stripes[i]); :info:build             ~  ^ :info:build /opt/local/var/macports/build/_Users_marius_Development_MacPorts_ports_textproc_qpdf/qpdf/work/qpdf-11.0.0/examples/pdf-create.cc:189:11: error: no matching member function for call to 'replaceStreamData' :info:build     image.replaceStreamData( :info:build     ~~~~~~^~~~~~~~~~~~~~~~~ :info:build /opt/local/include/qpdf/QPDFObjectHandle.hh:1193:10: note: candidate function not viable: no known conversion from 'std::shared_ptr<QPDFObjectHandle::StreamDataProvider>' to 'PointerHolder<Buffer>' for 1st argument :info:build     void replaceStreamData(PointerHolder<Buffer> data, :info:build          ^ :info:build /opt/local/include/qpdf/QPDFObjectHandle.hh:1202:10: note: candidate function not viable: no known conversion from 'std::shared_ptr<QPDFObjectHandle::StreamDataProvider>' to 'const std::string' (aka 'const basic_string<char, char_traits<char>, allocator<char>>') for 1st argument :info:build     void replaceStreamData(std::string const& data, :info:build          ^ :info:build /opt/local/include/qpdf/QPDFObjectHandle.hh:1232:10: note: candidate function not viable: no known conversion from 'std::shared_ptr<QPDFObjectHandle::StreamDataProvider>' to 'PointerHolder<QPDFObjectHandle::StreamDataProvider>' for 1st argument :info:build     void replaceStreamData(PointerHolder<StreamDataProvider> provider, :info:build          ^ :info:build /opt/local/include/qpdf/QPDFObjectHandle.hh:1243:10: note: candidate function not viable: no known conversion from 'std::shared_ptr<QPDFObjectHandle::StreamDataProvider>' to 'std::function<void (Pipeline *)>' for 1st argument :info:build     void replaceStreamData(std::function<void(Pipeline*)> provider, :info:build          ^ :info:build /opt/local/include/qpdf/QPDFObjectHandle.hh:1249:10: note: candidate function not viable: no known conversion from 'std::shared_ptr<QPDFObjectHandle::StreamDataProvider>' to 'std::function<bool (Pipeline *, bool, bool)>' for 1st argument :info:build     void replaceStreamData( :info:build          ^ :info:build make[2]: Leaving directory /opt/local/var/macports/build/_Users_marius_Development_MacPorts_ports_textproc_qpdf/qpdf/work/build :info:build /opt/local/var/macports/build/_Users_marius_Development_MacPorts_ports_textproc_qpdf/qpdf/work/qpdf-11.0.0/examples/pdf-create.cc:294:23: error: no matching member function for call to 'provideStreamData' :info:build             provider->provideStreamData(QPDFObjGen(), &b_p); :info:build             ~~~~~~~~~~^~~~~~~~~~~~~~~~~ :info:build /opt/local/include/qpdf/QPDFObjectHandle.hh:120:22: note: candidate function not viable: requires 3 arguments, but 2 were provided :info:build         virtual void provideStreamData(int objid, int generation, :info:build                      ^ :info:build /opt/local/include/qpdf/QPDFObjectHandle.hh:123:22: note: candidate function not viable: requires 5 arguments, but 2 were provided :info:build         virtual bool provideStreamData( :info:build                      ^ :info:build [ 71%] Built target pdf-count-strings :info:build 1 warning and 3 errors generated.

It looks to me like you're building new examples against an old copy of the headers. Is that possible?

It is possible that it is finding the headers from the currently installed version (10.6.3)

Confirmed!

I got a clean build after deactivating the old version.
Unfortunately, the update also breaks py-pikepdf. I'll wait to push qpdf until py-pikepdf supports it.

Thanks for the followup. I thought the build was set up so that the qpdf source tree was in front of any previous installed versions when building. I've never found a formula for that that works across everywhere...I was hoping maybe cmake would solve that. I'll have to take a fresh look.
Regarding pikepdf, there is a feature branch in the pikepdf repo that is known to work with qpdf 11 as released. I always run pikepdf's test suite against qpdf as part of my release process, and I've been in communication with @jbarlow83 about it. I suspect it won't be long before a pikepdf that works with qpdf 11 is out.

(Not related to the issue here, but I just compiled qpdf 11.0.0 from source on linux via cmake and everything appears to be correct. I also confirmed that the new qpdf works on the use cases I have e. g. removing pages from .pdf files. This is just meant as a bit info for jberkenbilt.)

We have a workaround for the old headers: https://github.com/macports/macports-ports/pull/16093

@rubyFeedback Thanks. FYI I created #762 for general release discussion, though I appreciate your providing the feedback either way. Any further discussion not related to this issue can go in #762.

@Schamschula In qpdf 11.1, which I intend to release today if possible, I have internally set CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE to ON, which is supposed to force project include directories before system include directories. I am hoping this will alleviate the need for your workaround. I'll try to remember to follow up after I release 11.1.

I will test w/o the MacPort workaround.

I will test w/o the MacPort workaround.

Great. I ran out of time for today but I have the release ready to go for tomorrow morning (US Eastern time).

I got a clean install with the old version (10.6.3) re-activated, after disabling the macPorts workaround. Looks good!


Unable to get core dumps because of SIGSEGV handler

In the Catch library, there is code for linux to handle interrupts. The primary purpose of these handlers seems to be to provide simple diagnostic messages. I've observed in my tests that it prevents core dumps. Before running my test manually, I set this:
$ ulimit -c unlimited

When I run a test program that crashes, I get the following output:
/home/user/code/TestCheckController.cpp:725: FAILED:
  {Unknown expression after the reported line}
due to a fatal error condition:
  SIGINT - Terminal interrupt signal

===============================================================================
test cases:  43 |  42 passed | 1 failed
assertions: 716 | 715 passed | 1 failed

No core dump was provided. I tested removing the SIGSEGV handler and I do get a core dump.
I expect that the signal interrupt handlers should either be disabled or forward the interrupt to the OS so that a core dump can happen. If neither of these are possible, perhaps design this system to use exceptions or do the minidumps yourself on Linux (make it a configurable option).
I'm happy to help contribute a fix for this, but I'd like some design feedback from @philsquared before I do any work to get an idea of where he'd like this to go. I need to understand more about the original intention.

I'm seeing something similar with GCC 6 on Fedora Rawhide. Any help would be appreciated.
https://sourceforge.net/p/zipios/bugs/9/

+1
Is there any plan on fixing this?

Sorry for the late reply (and for the issue in the first place).
I'm not an expert in signal handlers, so would value your input on this (in fact I would value it even if I was).
My best guess at how to resolve this would be to make the signal handler configurable (either on the command line or via a #define - or both).
If you know how we could get the best of both worlds (get the result you want without the need to configure) that would be even better!
Regarding the original intention, @rcdailey, it was just to try and do a best effort continuation of the Catch runner that treats the interrupt as a failure.

Thanks for responding. The logic used to handle the signal is fairly complex at first glance:
inline void fatal( std::string const& message, int exitCode ) {
    IContext& context = Catch::getCurrentContext();
    IResultCapture* resultCapture = context.getResultCapture();
    resultCapture->handleFatalErrorCondition( message );

	if( Catch::alwaysTrue() ) // avoids "no return" warnings
        exit( exitCode );
}

Which calls:
virtual void handleFatalErrorCondition( std::string const& message ) {
    ResultBuilder resultBuilder = makeUnexpectedResultBuilder();
    resultBuilder.setResultType( ResultWas::FatalErrorCondition );
    resultBuilder << message;
    resultBuilder.captureExpression();

    handleUnfinishedSections();

    // Recreate section for test case (as we will lose the one that was in scope)
    TestCaseInfo const& testCaseInfo = m_activeTestCase->getTestCaseInfo();
    SectionInfo testCaseSection( testCaseInfo.lineInfo, testCaseInfo.name, testCaseInfo.description );

    Counts assertions;
    assertions.failed = 1;
    SectionStats testCaseSectionStats( testCaseSection, assertions, 0, false );
    m_reporter->sectionEnded( testCaseSectionStats );

    TestCaseInfo testInfo = m_activeTestCase->getTestCaseInfo();

    Totals deltaTotals;
    deltaTotals.testCases.failed = 1;
    m_reporter->testCaseEnded( TestCaseStats(   testInfo,
                                                deltaTotals,
                                                "",
                                                "",
                                                false ) );
    m_totals.testCases.failed++;
    testGroupEnded( "", m_totals, 1, 1 );
    m_reporter->testRunEnded( TestRunStats( m_runInfo, m_totals, false ) );
}

What is the goal with all of this logic? Would it be unreasonable to just completely remove the signal handlers and let the OS manage it? Quite honestly, the ideal solution would be to forward the interrupt to the OS so that it would function normally, but I'm not certain if we can do that. Thoughts?

The original problem was that when a signal is raised there was no way to know which test case was being executed (because they are written lazily). That might be ok if it happens during a debug session (or you can otherwise recreate the symbols) - but otherwise can make it hard to track down.
This handler tries to invoke the lazy printing of context before resigning.

I found this, hopefully it helps:
http://www.alexonlinux.com/how-to-handle-sigsegv-but-also-generate-core-dump

@rcdailey I just have to say, I really like your GitHub pic. :D

I'm pretty sure this is a problem as well when using backward-cpp to show backtraces. When I comment out the relevant signal in catch's code (SIGSEGV in my case), backward-cpp suddenly starts working again.

I've made some changes to the signal handling so that, after intercepting and doing the reporting, it then re-installs the original handle and re-raises the signal (instead of calling exit()).
So far I have these changes on the signal branch.
If you get a chance (@rcdailey, @tombh, @vasyan1337h4x0r and @hobbes1069 - if you're still watching) - could you try out:
https://raw.githubusercontent.com/philsquared/Catch/signals/single_include/catch.hpp
And let me know if you still have problems?

@philsquared If you are changing signal handling, can you also incorporate changes in #753 ?

@philsquared Works perfectly for me. Cores are dumped and I can see the source of an error.
Looking forward to a release with this. Thanks!

Cool, thanks @vasyan1337h4x0r.
I'll probably merge the branch in shortly (possibly with some of @horenmar's other changes - which I hadn't seen until after I'd done this).
In the meantime would still be good to hear from more of the commenters here.

@philsquared I can confirm the sector branch is working with backward-cpp now. Excellent :)

@tombh Can you also check dev-signals? It should contain that change + other signal handling changes, but I am unable to resolve an error its starting to look like it might be confined to my specific machine, so more data would be useful.

@horenmar The single_include header from dev-signals works exactly the same as Phil's recent signal fix: backward-cpp now receives the signals.

Since the dev-signals branch has been merged to master, I am going to close this.

What's the plan for this? Been a long time and it would be nice to have a backtrace for segfaults on linux, since most of the time we're running unit tests in our CI build server with no debugging tools or GUI.

@rcdailey Current behaviour should be that a signal is caught, failure reported and then the signal is passed upward to whoever is waiting. Does this not work for you?

So I'm still not getting a backtrace, maybe I'm doing something else wrong? Here is the output from one of my tests:
[1/2] cd /home/TABLETOPMEDIA/robert/frontend_unit_tests && /usr/local/bin/ctest -C Debug -T Test --output-on-failure
   Site: febld
   Build name: Linux-clang++-3.8
Test project /home/TABLETOPMEDIA/robert/frontend_unit_tests
    Start 1: Test_UI
1/5 Test #1: Test_UI ..........................***Exception: SegFault  0.04 sec
Exception during initilization of LinuxEventData std::exceptionException during initilization of LinuxEventData std::exception
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Test_UI is a Catch v1.9.6 host application.
Run with -? for options

-------------------------------------------------------------------------------
Checking JavaScript Timer.Start()
-------------------------------------------------------------------------------
/home/TABLETOPMEDIA/robert/frontend/Core/UI/Test/Source/JavaScript/TestJSTimer.cpp:36
...............................................................................

/home/TABLETOPMEDIA/robert/frontend/Core/UI/Test/Source/JavaScript/TestJSTimer.cpp:36: FAILED:
due to a fatal error condition:
  SIGSEGV - Segmentation violation signal

Not sure what is ctest's behaviour, but when I create a minimal example and run it, I get regular coredump:
~/scratch$ cat test.cpp
#define CATCH_CONFIG_MAIN
#include "catch.hpp"

TEST_CASE("A", "[sigsegv]") {
    int* iptr = nullptr;
    REQUIRE(*iptr);
}

~/scratch$ g++ -std=c++11 test.cpp && ./a.out

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a.out is a Catch v2.0.0-develop.2 host application.
Run with -? for options

-------------------------------------------------------------------------------
A
-------------------------------------------------------------------------------
test.cpp:4
...............................................................................

test.cpp:4: FAILED:
due to a fatal error condition:
  SIGSEGV - Segmentation violation signal

===============================================================================
test cases: 1 | 1 failed
assertions: 1 | 1 failed

Segmentation fault (core dumped)
~/scratch$ ls
a.out  catch.hpp  core  test.cpp

The signal got to the system handler. which led to core dump and the core dump was collected into the core file (I should set better core naming pattern).
Do note that I had to do a bit of a dance to enable core dump collection on my system first, so maybe your system has core dumps disabled?


VirtualBox installation failure on macOS Mojave

Problem
When installing for the first time on macOS Mojave, VirtualBox fails to install because the system refuses to load the kernel extension:
Error: Failure while executing; `/usr/bin/sudo -E -- env LOGNAME=mr USER=mr USERNAME=mr /usr/sbin/installer -pkg /usr/local/Caskroom/virtualbox/5.2.22,126460/VirtualBox.pkg -target /` exited with 1. Here's the output:
installer: Package name is Oracle VM VirtualBox
installer: Installing at base path /
installer: The install failed (The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.)

At this time, a pop-up appears notifying that an extension was blocked. After allowing it in the Security preference pane, the second installation runs into
(default) Creating a new host-only adapter produced an error: /usr/local/bin/VBoxManage hostonlyif create failed:
(default) 0%...
(default) Progress state: NS_ERROR_FAILURE
(default) VBoxManage: error: Failed to create the host-only adapter
(default) VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory
(default) VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
(default) VBoxManage: error: Context: "RTEXITCODE handleCreate(HandlerArg *)" at line 94 of file VBoxManageHostonly.cpp
(default)
(default) This is a known VirtualBox bug. Let's try to recover anyway...
Error creating machine: Error in driver during machine creation: Error setting up host only network on machine start: The host-only adapter we just created is not visible. This is a well known VirtualBox bug. You might want to uninstall it and reinstall at least version 5.0.12 that is is supposed to fix this issue

Workaround
Open VirtualBox, delete the "default" VM, then run the installer again.
Allow the extension, then reboot, then run the installer again.

[I] ~/s/g/d/mobymac (master|✔) [130] $ ./install.sh fish
=========
 mobymac
=========
Creating docker v18.06.1-ce VM with 4096MB RAM and fish shell integration
WARNING: this will uninstall docker4mac and destroy all existing docker data
Press CTRL-C to abort (sleeping for 5 seconds)
=== Uninstalling Docker for Mac...
=== Not found - skipping
=== Installing Virtualbox...
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
No changes to formulae.
==> Caveats
To install and/or use virtualbox you may need to enable their kernel extension in
System Preferences → Security & Privacy → General
For more information refer to vendor documentation or the Apple Technical Note:
https://developer.apple.com/library/content/technotes/tn2459/_index.html
==> Satisfying dependencies
==> Downloading https://download.virtualbox.org/virtualbox/5.2.22/VirtualBox-5.2.22-126460-OSX.dmg
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'virtualbox'.
==> Installing Cask virtualbox
==> Running installer for virtualbox; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
installer: Package name is Oracle VM VirtualBox
installer: Installing at base path /
installer: The install failed (The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.)
==> Purging files for version 5.2.22,126460 of Cask virtualbox
Error: Failure while executing; /usr/bin/sudo -E -- env LOGNAME=mr USER=mr USERNAME=mr /usr/sbin/installer -pkg /usr/local/Caskroom/virtualbox/5.2.22,126460/VirtualBox.pkg -target / exited with 1. Here's the output:
installer: Package name is Oracle VM VirtualBox
installer: Installing at base path /
installer: The install failed (The Installer encountered an error that caused the installation to fail. Contact the software manufacturer for assistance.)
Follow the instructions here:
https://github.com/Homebrew/homebrew-cask#reporting-bugs
/usr/local/Homebrew/Library/Homebrew/system_command.rb:107:in assert_success' /usr/local/Homebrew/Library/Homebrew/system_command.rb:50:in run!'
/usr/local/Homebrew/Library/Homebrew/system_command.rb:27:in run' /usr/local/Homebrew/Library/Homebrew/system_command.rb:31:in run!'
/usr/local/Homebrew/Library/Homebrew/cask/artifact/pkg.rb:59:in block in run_installer' /usr/local/Homebrew/Library/Homebrew/cask/artifact/pkg.rb:65:in with_choices_file'
/usr/local/Homebrew/Library/Homebrew/cask/artifact/pkg.rb:52:in run_installer' /usr/local/Homebrew/Library/Homebrew/cask/artifact/pkg.rb:32:in install_phase'
/usr/local/Homebrew/Library/Homebrew/cask/installer.rb:209:in block in install_artifacts' /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/set.rb:674:in each'
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/set.rb:674:in each' /usr/local/Homebrew/Library/Homebrew/cask/installer.rb:200:in install_artifacts'
/usr/local/Homebrew/Library/Homebrew/cask/installer.rb:95:in install' /usr/local/Homebrew/Library/Homebrew/cask/cmd/install.rb:21:in block in run'
/usr/local/Homebrew/Library/Homebrew/cask/cmd/install.rb:14:in each' /usr/local/Homebrew/Library/Homebrew/cask/cmd/install.rb:14:in run'
/usr/local/Homebrew/Library/Homebrew/cask/cmd/abstract_command.rb:34:in run' /usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:89:in run_command'
/usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:155:in run' /usr/local/Homebrew/Library/Homebrew/cask/cmd.rb:120:in run'
/usr/local/Homebrew/Library/Homebrew/cmd/cask.rb:7:in cask' /usr/local/Homebrew/Library/Homebrew/brew.rb:89:in '
[I] ~/s/g/d/mobymac (master|✔) [1] $ ./install.sh fish
mobymac
Creating docker v18.06.1-ce VM with 4096MB RAM and fish shell integration
WARNING: this will uninstall docker4mac and destroy all existing docker data
Press CTRL-C to abort (sleeping for 5 seconds)
=== Uninstalling Docker for Mac...
=== Not found - skipping
=== Installing Virtualbox...
=== Already installed - skipping
=== Removing old docker packages...
===> OK
=== Installing docker packages...
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
No changes to formulae.
==> Downloading https://homebrew.bintray.com/bottles/docker-18.09.0.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/fd/fd7f17039daf874ced54a20a4d0b285cebcc35edf547a6ac62a5beb6c4c05326?gda=exp=1542973329~hmac=941786fcfb688c68ddbd537a9060a960ae786
######################################################################## 100.0%
==> Pouring docker-18.09.0.mojave.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
fish completions have been installed to:
/usr/local/share/fish/vendor_completions.d
==> Summary
🍺  /usr/local/Cellar/docker/18.09.0: 8 files, 48.9MB
==> Installing dependencies for docker-compose: libyaml, gdbm, openssl, readline, sqlite, xz and python
==> Installing docker-compose dependency: libyaml
==> Downloading https://homebrew.bintray.com/bottles/libyaml-0.2.1.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring libyaml-0.2.1.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/libyaml/0.2.1: 9 files, 299.3KB
==> Installing docker-compose dependency: gdbm
==> Downloading https://homebrew.bintray.com/bottles/gdbm-1.18.1.mojave.bottle.tar.gz
######################################################################## 100.0%
==> Pouring gdbm-1.18.1.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/gdbm/1.18.1: 20 files, 591.2KB
==> Installing docker-compose dependency: openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2p.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/ca/cabda4ca62a0b206366658e36ce7175e7da5f8ad24846843611ed19d7759404b?gda=exp=1542973337~hmac=a42bba2397da400b8d9e3f0d622260b243cd7
######################################################################## 100.0%
==> Pouring openssl-1.0.2p.mojave.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
/usr/local/etc/openssl/certs
and run
/usr/local/opt/openssl/bin/c_rehash
openssl is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.
If you need to have openssl first in your PATH run:
echo 'set -g fish_user_paths "/usr/local/opt/openssl/bin" $fish_user_paths' >> ~/.config/fish/config.fish
For compilers to find openssl you may need to set:
set -gx LDFLAGS "-L/usr/local/opt/openssl/lib"
set -gx CPPFLAGS "-I/usr/local/opt/openssl/include"
==> Summary
🍺  /usr/local/Cellar/openssl/1.0.2p: 1,793 files, 12MB
==> Installing docker-compose dependency: readline
==> Downloading https://homebrew.bintray.com/bottles/readline-7.0.5.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/59/5976a79f0dbd5ccb2a261f692763319d612309caa2b8cf703f209270764c657c?gda=exp=1542973345~hmac=8cc9fa7922afaf08f372928727be8c014d984
######################################################################## 100.0%
==> Pouring readline-7.0.5.mojave.bottle.tar.gz
==> Caveats
readline is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.
For compilers to find readline you may need to set:
set -gx LDFLAGS "-L/usr/local/opt/readline/lib"
set -gx CPPFLAGS "-I/usr/local/opt/readline/include"
==> Summary
🍺  /usr/local/Cellar/readline/7.0.5: 46 files, 1.5MB
==> Installing docker-compose dependency: sqlite
==> Downloading https://homebrew.bintray.com/bottles/sqlite-3.25.3.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/6e/6e6e8e439db5458beba5ed5eedd45650f1db85709df6902e8be8a3853077eb65?gda=exp=1542973347~hmac=fa75bc6295dedd20d2b3a9523bb9efd37536c
######################################################################## 100.0%
==> Pouring sqlite-3.25.3.mojave.bottle.tar.gz
==> Caveats
sqlite is keg-only, which means it was not symlinked into /usr/local,
because macOS provides an older sqlite3.
If you need to have sqlite first in your PATH run:
echo 'set -g fish_user_paths "/usr/local/opt/sqlite/bin" $fish_user_paths' >> ~/.config/fish/config.fish
For compilers to find sqlite you may need to set:
set -gx LDFLAGS "-L/usr/local/opt/sqlite/lib"
set -gx CPPFLAGS "-I/usr/local/opt/sqlite/include"
==> Summary
🍺  /usr/local/Cellar/sqlite/3.25.3: 11 files, 3.7MB
==> Installing docker-compose dependency: xz
==> Downloading https://homebrew.bintray.com/bottles/xz-5.2.4.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/01/010667293df282c8bceede3bcd36953dd57c56cef608d09a5b50694ab7d4b96b?gda=exp=1542973349~hmac=efed92a823f0d9abe5889c097f39e93ed271b
######################################################################## 100.0%
==> Pouring xz-5.2.4.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/xz/5.2.4: 92 files, 1MB
==> Installing docker-compose dependency: python
==> Downloading https://homebrew.bintray.com/bottles/python-3.7.1.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/5c/5cc9c4b87eb68c2b2f491cf907ee4517279bfc2c4e41c366ef994aebff7e9684?gda=exp=1542973354~hmac=adb31ab5faf88b4f5e629492cc910824782e6
######################################################################## 100.0%
==> Pouring python-3.7.1.mojave.bottle.tar.gz
==> /usr/local/Cellar/python/3.7.1/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python/3.7.1/bin --install-lib=/usr/local/lib/
==> /usr/local/Cellar/python/3.7.1/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python/3.7.1/bin --install-lib=/usr/local/lib/
==> /usr/local/Cellar/python/3.7.1/bin/python3 -s setup.py --no-user-cfg install --force --verbose --install-scripts=/usr/local/Cellar/python/3.7.1/bin --install-lib=/usr/local/lib/
==> Caveats
Python has been installed as
/usr/local/bin/python3
Unversioned symlinks python, python-config, pip etc. pointing to
python3, python3-config, pip3 etc., respectively, have been installed into
/usr/local/opt/python/libexec/bin
If you need Homebrew's Python 2.7 run
brew install python@2
You can install Python packages with
pip3 install
They will install into the site-package directory
/usr/local/lib/python3.7/site-packages
See: https://docs.brew.sh/Homebrew-and-Python
==> Summary
🍺  /usr/local/Cellar/python/3.7.1: 3,820 files, 59.2MB
==> Installing docker-compose
==> Downloading https://homebrew.bintray.com/bottles/docker-compose-1.23.1.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/e0/e0ff1f3b92d2a5988ad5b189845eed2365488858caad420a4987870975e9d157?gda=exp=1542973375~hmac=57610e89cf947fa7fd3712276e709955fe671
######################################################################## 100.0%
==> Pouring docker-compose-1.23.1.mojave.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Summary
🍺  /usr/local/Cellar/docker-compose/1.23.1: 892 files, 9MB
==> Downloading https://homebrew.bintray.com/bottles/docker-machine-0.16.0.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/9a/9aec00d16a4a501a17247b170739f23e66f0c86a3d0543bc65419bf4463b2431?gda=exp=1542973382~hmac=c8c57033fc3369d3b44a660823f7983cbb7d5
######################################################################## 100.0%
==> Pouring docker-machine-0.16.0.mojave.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
To have launchd start docker-machine now and restart at login:
brew services start docker-machine
Or, if you don't want/need a background service you can just run:
docker-machine start
==> Summary
🍺  /usr/local/Cellar/docker-machine/0.16.0: 11 files, 35.7MB
==> Downloading https://github.com/adlogix/docker-machine-nfs/archive/0.5.1.tar.gz
==> Downloading from https://codeload.github.com/adlogix/docker-machine-nfs/tar.gz/0.5.1
######################################################################## 100.0%
🍺  /usr/local/Cellar/docker-machine-nfs/0.5.1: 5 files, 18.4KB, built in 6 seconds
==> Caveats
==> docker
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
fish completions have been installed to:
/usr/local/share/fish/vendor_completions.d
==> openssl
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
/usr/local/etc/openssl/certs
and run
/usr/local/opt/openssl/bin/c_rehash
openssl is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.
If you need to have openssl first in your PATH run:
echo 'set -g fish_user_paths "/usr/local/opt/openssl/bin" $fish_user_paths' >> ~/.config/fish/config.fish
For compilers to find openssl you may need to set:
set -gx LDFLAGS "-L/usr/local/opt/openssl/lib"
set -gx CPPFLAGS "-I/usr/local/opt/openssl/include"
==> readline
readline is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.
For compilers to find readline you may need to set:
set -gx LDFLAGS "-L/usr/local/opt/readline/lib"
set -gx CPPFLAGS "-I/usr/local/opt/readline/include"
==> sqlite
sqlite is keg-only, which means it was not symlinked into /usr/local,
because macOS provides an older sqlite3.
If you need to have sqlite first in your PATH run:
echo 'set -g fish_user_paths "/usr/local/opt/sqlite/bin" $fish_user_paths' >> ~/.config/fish/config.fish
For compilers to find sqlite you may need to set:
set -gx LDFLAGS "-L/usr/local/opt/sqlite/lib"
set -gx CPPFLAGS "-I/usr/local/opt/sqlite/include"
==> python
Python has been installed as
/usr/local/bin/python3
Unversioned symlinks python, python-config, pip etc. pointing to
python3, python3-config, pip3 etc., respectively, have been installed into
/usr/local/opt/python/libexec/bin
If you need Homebrew's Python 2.7 run
brew install python@2
You can install Python packages with
pip3 install
They will install into the site-package directory
/usr/local/lib/python3.7/site-packages
See: https://docs.brew.sh/Homebrew-and-Python
==> docker-compose
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> docker-machine
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
To have launchd start docker-machine now and restart at login:
brew services start docker-machine
Or, if you don't want/need a background service you can just run:
docker-machine start
===> OK
=== Removing existing VMs...
About to remove default
WARNING: This action will delete both local reference and remote instance.
Error removing host "default": Docker machine "default" does not exist. Use "docker-machine ls" to list machines. Use "docker-machine create" to add a new one.
Can't remove "default"
===> OK
=== Creating docker VM...
Creating CA: /Users/mr/.docker/machine/certs/ca.pem
Creating client certificate: /Users/mr/.docker/machine/certs/cert.pem
Running pre-create checks...
(default) Image cache directory does not exist, creating it at /Users/mr/.docker/machine/cache...
Creating machine...
(default) Downloading /Users/mr/.docker/machine/cache/boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.06.1-ce/boot2docker.iso...
(default) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Creating a new host-only adapter produced an error: /usr/local/bin/VBoxManage hostonlyif create failed:
(default) 0%...
(default) Progress state: NS_ERROR_FAILURE
(default) VBoxManage: error: Failed to create the host-only adapter
(default) VBoxManage: error: VBoxNetAdpCtl: Error while adding new interface: failed to open /dev/vboxnetctl: No such file or directory
(default) VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
(default) VBoxManage: error: Context: "RTEXITCODE handleCreate(HandlerArg *)" at line 94 of file VBoxManageHostonly.cpp
(default)
(default) This is a known VirtualBox bug. Let's try to recover anyway...
Error creating machine: Error in driver during machine creation: Error setting up host only network on machine start: The host-only adapter we just created is not visible. This is a well known VirtualBox bug. You might want to uninstall it and reinstall at least version 5.0.12 that is is supposed to fix this issue

I added a troubleshooting section in the README: https://github.com/dziemba/mobymac/commit/a92110ce8361f7b9150d34d3db20545fe1d6661b
I hope that covers all the cases. If not, please open a new issue! 🙂


convert supported_for_catalog to supports?(:catalog)

remove the custom supports_method and convert over to standard supports(:action)
I had expected there to be more references to this but there were only the 2, and they are both in this repo

Looks great, wonder if following-up we should add supports :catalog explicitly in the providers which support it rather than just checking catalog_types.present?

Think this is a great question and a larger question. Do we want to make the supports mechanism very simple and have the various providers opt in, or do we want to put a bunch of lambdas onto the base class and have the system automatically discover things. (had a similar question around the delegate question)


Ardilight process is killed after game goes fullscreen

Hello,
I noticed strange behavior with some games. Platform: Windows 10, Adrilight 2.0.9. When i run some games, after the game goes fullscreen Adrilight process is killed. I have no idea what this may be related to. Some games works properly with Adrilight and some does not. Does anyone have similar issue? Maybe someone know solution?...
Update:
It looks, like it have something with scaling. Usually i use 4k resolution, but all games i run in 1920/1080. When i set this resoluttion in windows, and start Ardilight, and then game, everything works grate. But when i try start game (1920/1080) from Windows 4k resolution, the Ardilight process is killed after game goes fullscreen.

Have a similar problem with Kodi and 4K.
Looks like, Borderless fullscreen works with 4K, at least the last 10min without crash
Maybe the logfile helps
adrilight.log.2020-11-17.txt


Move custom formatting configuration to environ.py (#157)

This PR reinstates a lost custom logging format by moving a call of basicConfig from run_jobs.py to environ.py. The PR aims to resolve issue #157.

@jonespm, are you on board with adding funcName as in this commit? This came up in a conversation I was having with @lsloan.

Yeah sure, looks fine to me @ssciolla

K, I'm gonna merge then.


Is this repo dead? It looks like the main developer doesn't care at all

Is this repo dead? It looks like the main developer doesn't care at all neither about issues nor new features. If it's the case, may be putting a "Maintainers Wanted" in the Readme could be a good idea. With so much stars, it's a pity that this project is still not taking of seriously.

The main developer, Unknwon, made a commit 5 days ago to master, 4 days ago to develop, and 9 days ago to feature/pull_request. I would say not.

@zenati The owner just got back a few days ago, see https://github.com/gogits/gogs/issues/1304

Hi all, thanks for asking and sorry for a late response.
Really appreciate for all who love Gogs, it's the greatest honor we've got so far! :grinning:
And of course, Gogs is not dead. :dizzy:


FIX: 1225 horizontal lines not rendering at max and min

This fixes #1255 where extra horizontal lines would not be painted when they were to be drawn horizontally along the min or max of the chart.

We have this logic in BarChart too. Please check and fix it if there is any bug in the BarChart.
Thanks!

BTW everything looks good to me.
Please fix the codecov issue, then we are ready to merge it.

BTW everything looks good to me. Please fix the codecov issue, then we are ready to merge it.

codecov/patch is reporting uncovered lines on code that existed before this PR. The lines in question were simply indented because they are now wrapped in an if block. They are not new.

Okay I have merged it. Thank you!


Member email not a default property.

I'm not sure if this is a problem with Umbraco or ModelsBuilder - I'm guessing it's Umbraco because the property is pretty weird.
The property name in the Umbraco office for a member email is _umb_email (visible when you hover over the default Email in Umbraco):

For some reason, to get the data for a member you have to use the alias Email.
But anyway, this property isn't enabled by default on a member so I have to add a property:
namespace Umbraco.Web.PublishedContentModels
{
    public partial class Member
    {
        ///<summary>
        /// Email
        ///</summary>
        [ImplementPropertyType("Email")]
        public string Email
        {
            get { return this.GetPropertyValue<string>("Email"); }
        }
    }
}

Is there anything that can be done about this in the ModelsBuilder?

@HarveyWilliams the reason why you need to use "Email" is because this specific alias is resolved to lookup the internal property value of the email field on members.
https://github.com/umbraco/Umbraco-CMS/blob/5397f2c53acbdeb0805e1fe39fda938f571d295a/src/Umbraco.Web/PublishedCache/MemberPublishedContent.cs#L132-L138
However it would be nice if you could get the property value by using camelcase syntax like the default suggested property alias when adding a new property to a document, media or member type.
http://issues.umbraco.org/issue/U4-10383
It would also be great if ModelsBuilder generated properties for the Membership properties like e.g. the "Email" property.

@zpqrtbnk is it possible that ModelsBuilder also can ensure to generate a property for Email?
At the moment I have to do something like this:
var memberShipHelper = new MembershipHelper(UmbracoContext.Current);
                            var apoMember = memberShipHelper.GetById(picupId).OfType<ContentModels.ClickAndCollect>();

addressDetails.ShippingAddress.CompanyName = member.ApoName;
addressDetails.ShippingAddress.Line1 = member.Address;
addressDetails.ShippingAddress.Line2 = "";
addressDetails.ShippingAddress.PostalCode = member.Zip;
addressDetails.ShippingAddress.City = member.City;
addressDetails.ShippingAddress.PhoneNumber = member.Phone;
addressDetails.ShippingAddress.EmailAddress = member.GetPropertyValue<string>("Email");

where the the Email property needs to be uppercase E and is resolved to _umb_email in the internal code in core.
Maybe also a property for _umb_login, which is login/username.


some errors in spawning quadcopter

OS Version: ubutu 18.04
Compiler version (amd 64)
sir, i ran catkin_make on the roscopter directory and it worked perfectly however when i ran catkin_make on ibvs sim it generated errors:
[ 96%] Building CXX object ibvs_sim/CMakeFiles/boat_forces_and_moments_plugin.dir/plugins/src/boat_forces_and_moments.cpp.o
[ 97%] Built target ekf_rosbag
[ 98%] Built target ekf_node
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp: In destructor ‘virtual gazebo::BoatForcesAndMoments::~BoatForcesAndMoments()’:
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:29:18: error: ‘DisconnectWorldUpdateBegin’ is not a member of ‘gazebo::event::Events’
event::Events::DisconnectWorldUpdateBegin(updateConnection_);
^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp: In member function ‘void gazebo::BoatForcesAndMoments::SendForces()’:
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:39:7: error: ‘math’ has not been declared
math::Vector3(actual_forces_.Fx, actual_forces_.Fy, actual_forces_.Fz));
^~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:41:7: error: ‘math’ has not been declared
math::Vector3(actual_forces_.l, actual_forces_.m, actual_forces_.n));
^~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp: In member function ‘void gazebo::BoatForcesAndMoments::UpdateForcesAndMoments()’:
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:166:3: error: ‘math’ has not been declared
math::Pose W_pose_W_C = link_->GetWorldCoGPose();
^~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:167:15: error: ‘W_pose_W_C’ was not declared in this scope
double pn = W_pose_W_C.pos.x;
^~~~~~~~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:170:3: error: ‘math’ has not been declared
math::Vector3 euler_angles = W_pose_W_C.rot.GetAsEuler();
^~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:171:16: error: ‘euler_angles’ was not declared in this scope
double phi = euler_angles.x;   // roll
^~~~~~~~~~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:171:16: note: suggested alternative: ‘file_handle’
double phi = euler_angles.x;   // roll
^~~~~~~~~~~~
file_handle
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:175:3: error: ‘math’ has not been declared
math::Vector3 C_linear_velocity_W_C = link_->GetRelativeLinearVel();
^~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:176:14: error: ‘C_linear_velocity_W_C’ was not declared in this scope
double u = C_linear_velocity_W_C.x;
^~~~~~~~~~~~~~~~~~~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:179:3: error: ‘math’ has not been declared
math::Vector3 C_angular_velocity_W_C = link_->GetRelativeAngularVel();
^~~~
/home/arsalan/in_ws/src/ibvs_sim/plugins/src/boat_forces_and_moments.cpp:180:14: error: ‘C_angular_velocity_W_C’ was not declared in this scope
double p = C_angular_velocity_W_C.x;
^~~~~~~~~~~~~~~~~~~~~~
ibvs_sim/CMakeFiles/boat_forces_and_moments_plugin.dir/build.make:62: recipe for target 'ibvs_sim/CMakeFiles/boat_forces_and_moments_plugin.dir/plugins/src/boat_forces_and_moments.cpp.o' failed
make[2]: *** [ibvs_sim/CMakeFiles/boat_forces_and_moments_plugin.dir/plugins/src/boat_forces_and_moments.cpp.o] Error 1
CMakeFiles/Makefile2:8938: recipe for target 'ibvs_sim/CMakeFiles/boat_forces_and_moments_plugin.dir/all' failed
make[1]: *** [ibvs_sim/CMakeFiles/boat_forces_and_moments_plugin.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j4 -l4" failed
can anyone kindly help me to address this issue, thanks

It looks like ibvs_sim is not updated to support Gazebo 8 as a part of ROS Melodic.
This doesn't seem to be a ROSflight error, you'd be best to ask the ibvs_sim maintainers.

Yes I tried ros flight and it ran fine, I tried ibvs sim on ros kinetic as well but it failed that's why I moved on melodic anyways thanks for kind response, sir


missing socket.getblocking

socket.getblocking appears to be missing.
Here is a minimally reproducible example:
import socket

import mocket

my_mocket = mocket.mocket.MocketSocket(socket.AF_INET, socket.SOCK_STREAM)
my_mocket.connect(("locahost", 1234))
my_mocket.setblocking(False)

print(my_mocket.getblocking())  # expect False but get None here.

Hi @kj4tmp, thanks for opening this issue.
Here is a new version of Mocket with the missing method:
https://pypi.org/project/mocket/3.12.5/


adding genomicAlleleShortForm to requestParameters

The parameter exists in endpoints but not in the parameters schema.
As mentioned in https://github.com/ga4gh-beacon/beacon-v2-Models/pull/108

@jrambla I assume this was just a missing option? I think to remember that you had mentioned this once as something requested from clinical partners?

It was not requested by the clinical partners in particular. It was not missing but an approach to make the GET query parameters  compact vs making POST ones more verbose.
Although the original purpose is missing then, I'm fine with aligning both as makes GET and POST more interchangeable.


Fix IOT Device Update readme issue

Fix issue https://github.com/Azure/azure-sdk-for-python/issues/17626
@jongio for notification.

@jongio - Who should we ping to review this PR?

@lmazuel  Could you help me review this PR?


no progress bar showing after v8.0.2

Bug report
Describe the bug
next.js shows no building progress after 8.0.2+
To Reproduce

install next.js 8.0.1
run next and there's build progress
install next.js 8.0.2 or 8.0.3
run next and there's no build progress
install back next.js 8.0.1
run next and there's build progress.

so this breaks after 8.0.2
Expected behavior
next.js should show building progress in 8.0.2 8.0.3
Screenshots
8.0.1 next

8.0.2 or 8.0.3 next

System information

OS: Ubuntu 18.04
Version of Next.js: 8.0.2, 8.0.3

Additional context

This was done for performance reasons. You're welcome to add it back yourself (Webpack Bar).
Thanks!
See previous comment: https://github.com/zeit/next.js/issues/4016#issuecomment-471861486


explain_analyze broken in 1.1.0

%%dql -e explain_analyze_draw
select 'a'

will fail with
InvalidInputException: Invalid Input Error: Attempting to get collection from an unsuccessful query result : Error Not implemented Error: No mapping from ExplainFormat::HTML to ProfilerPrintFormat
https://github.com/duckdb/duckdb/issues/13926

Fixed in duckdb 1.1.1


flake: lib.nixpkgs.mkPkgs

Description of changes
Depends on https://github.com/NixOS/nixpkgs/pull/324614 (and includes it for now)
=> Only review the final commit(s?)
Adds a nicer Nixpkgs entrypoint that

Does not rely being able to access files in a Flake (something which Flakes seems to have done for ease of adoption; it's bad design)
Has nix-repl> :doc documentation
Does not carry unnecessary baggage and inconsistencies

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

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

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Right now I can not do pkgs = import nixpkgs { <custom_config_here>} in a flake, when evaluating in restricted mode (e.g. with Hydra). I need to at least add allowed-uris = "github:" to my nix.conf (related https://github.com/NixOS/nix/issues/7098).
I assume that mkPkgs would bypass that issue, by using pkgs = nixpkgs.lib.nixpkgs.mkPkgs { <custom_config_here>}  instead, since the import would happen inside nixpkgs and not my own flake?

Internally, Nix implements the wiring of inputs using builtins.fetchTree and import in its internal file call-flake.nix. Restricted mode checks don't account for the location of the import call as far as I know, but maybe Hydra does/could add something to the evaluator to make that work for a given flake. So I wouldn't count on this solving that, but it's more likely to make it better than worse.


radar || polarArea chart  -TypeError: Cannot set property 'backdropColor' of undefined

Expected Behavior
There should be a backgroundColor /backdropColor Chart.default property for the scale/ticks options.
Current Behavior
I can change the font color with fontColor only but not the background.
Chart.defaults.ticks.backgroundColor = 'transparent'
Chart.defaults.ticks.backdropColor = 'transparent'

Error:
Render Graph Error on polarArea :  TypeError: Cannot set property 'backgroundColor' of undefined
Render Graph Error on radar :  TypeError: Cannot set property 'backgroundColor' of undefined
Render Graph Error on radar :  TypeError: Cannot set property 'backdropColor' of undefined

I am trying to display a radar || polarArea chart on a page with a dark background.
Thank you!
Possible Solution
I'm looking for a way to set the background color via the global.default settings for the ticks in radar and polarArea. You can use the options, but I would always have to do this explicitly for all displays. It would be easier for me if I could do this with the global settings.
Environment

Chart.js version: "chart.js": "^2.9.4"
Browser name and version: Chrome Version 86.0.4240.80 (Offizieller Build) (x86_64)

I believe this only currently exists for the labels around the side of the radar chart. #7700 requests this as well, but for cartesian axes.

@etimberg
Thanks.
So i try to find a workaround..

@zibous I'm sorry, but I didn't notice this earlier. I think you're setting the backdrop colour in the wrong spot. The following is the correct way to set it for all radial scales.
Chart.defaults.scales.radialLinear.ticks.backdropColor = 'transparent';

If you only want to do it for the radar chart, this should work. Chart.defaults.set will create objects as needed on the way down so that you don't need to possibly create them if Chart.defaults.radar.scales does not exist for example.
Chart.defaults.set('radar.scales.r.ticks', { backdropColor: 'red' });

Live sample: https://jsfiddle.net/vuc4k1jq/

@etimberg
Thanks, but this only work with version 3, not with 2.9.4
Chart.defaults.polarArea.scales.r.ticks = { backdropColor: "transparent" };
// Chart.defaults.set('polarArea.scales.r.ticks', { backdropColor: 'transparent' });

I'm still looking for a way to test version 3, but can't integrate it.
import Chart from "chart.js";  // works for 2.9.4
// NOT WORKING - ERROR
import { Chart, LineController, Line, Point, LinearScale, Title } from './libs/chart.js'
Chart.register(LineController, Line, Point, LinearScale, Title);

ERROR ON Build:
> rollup -c
src/main.js → dist/graph-chartjs-card.js...
[!] Error: 'Chart' is not exported by src/libs/chart.js, imported by src/graphchart.js
https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module
src/graphchart.js (8:9)
6:  */
7:
8: import { Chart, LineController, Line, Point, LinearScale, Title } from './libs/chart.js'
            ^
9: Chart.register(LineController, Line, Point, LinearScale, Title);
Error: 'Chart' is not exported by src/libs/chart.js, imported by src/graphchart.js
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>rollup: `rollup -c`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>rollup script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

Project see: https://github.com/zibous/lovelace-graph-chart-card

What is in libs/chart.js?
You should do npm i chart.js@next

@kurkle
Yes installed with node npm i chart.js@next and than copy the folder to the projects folder ./libs.
see: https://github.com/zibous/lovelace-graph-chart-card/tree/main/src/libs/chart.js
The reason why I use version 3.0 in the project folder is that I could test both versions with it.
Also testet :

Delete npm installed chart.js
Install npm i chart.js@next

Same error.

In v2, Chart.defaults.set isn't available, but you can set the defaults in a similar way. https://jsfiddle.net/am8pe3rv/
There might be some relative paths in node_modules/dist/chart.esm.js that are causing problems. That's my hunch, but I don't have time to confirm it right now.

@etimberg
Thanks it works with 2.9.4 👍
Chart.defaults.polarArea.scale.ticks = { backdropColor: 'transparent' };
Chart.defaults.radar.scale.ticks = { backdropColor: 'transparent' };

There might be some relative paths in node_modules/dist/chart.esm.js that are causing problems

OK. This is one approach, maybe I can find a workaround ....

@etimberg
I have now found a way how I can use both versions (2.9.4 and v3.0.0-beta.4).
Build the dist file with gulp instead of rollup and use the your prepared chart.js files.

Version 2.9.4 works as before, exactly as generated with rollup and/or gulp.

With version v3.0.0-beta.4 I only have the following problems:
The tooltips and the switching on / off of the segments via the legend do not work with Chrome version 86.0.4240.111 and with Safari version 13.1.2 (136<IP_ADDRESS>.5).

Firefox 82.0 (64-bit) works without errors, tooltips work and I can switch the segment on and off via the legend.

I use simple settings, only "Title, Legend and Chart Type". At the moment I am not overwriting any of the default settings.
With the title I can only change the fontStyle, fontSize:
title: {
   display: true,
   fontStyle: "normal",
   text: "This is the chart title",
   fontSize: 18
 },

Am I doing something wrong ?
The 3.0 version is a lot better than the 2.9 version,
if this would also work for Chrome and Safarie.

I haven't seen those issues before with the tooltip/legend. Were there any console errors?

@etimberg
Negativ, no error ?
If i switch to developer view and use "responsive mode" and i click to a pie segment, the tooltip comes and goes away:
see: http://www.ipscon.com/transfer/chartjs_tooltips.gif
On Desktop view i can't see the tooltips.
Can i disable the animation ?

You can disable the tooltip animation (@kurkle would have the exact config needed for that). One thing you could try is to change options.events to just be ['click'] so that only click events would trigger the tooltip. I suspect there's some interaction between the click & mousemove handlers. If you can put together a jsfiddle that reproduces, I can debug it and see.

@etimberg
I made a few attempts with different browsers. With a simple HTML page, the tooltips work perfectly for all of them.
Only with the Homeassistant (https://www.home-assistant.io/) View

does not work with version 3.0
but with version 2.9.4 it does.

I suspect that it is due to the registration of the mouse events, because at the time when I instantiate a new chart object, it is not yet visible and I cannot register any mouse events at that time.
		// ------------------------------------------------------
		// register new chart
		// ------------------------------------------------------
		this.chart = new Chart(this.ctx, this.chartCurrentConfig);
		if (this.chart) {
			this.chart_ready = true;
			this.chart_update = true;
		}
                // TESTCASE MOUSE EVENS
		var canvs = document.getElementById(this.canvasId);
		console.log(this.canvasId, canvs);

                ---> chart-e7urqaasg null

		if(canvs){
		  canvs.addEventListener("mousemove", function (event) {
		  console.log(
			"mousemove: " +
			event.clientX +
			"/" +
			event.clientY +
			" buttons: " +
			event.buttons
		  );
		});
					}

So far I haven't found a workaround for it.

@zibous looks like you made some progress and backdropColor is not an issue anymore?
Animations can be disabled by setting options.animation = false or just for tooltips: options.tooltips.animation = false
Now, to you last message, you are suspecting the registration of mouse events.
I see in your previous gif that the tooltip is briefly displayed. That would mean at least some of the events get registered alright, unless you are triggering the tooltip manually.
You can easily test the events by adding a plugin to your chart:
new Chart(ctx, {
  data: (...),
  options: (...),
  plugins: [{
    id: 'eventlogger',
    afterEvent(chart, event) {
      console.log(event);
    }
  }]
});

plugin demo

@kurkle
Thanks for the information.

add your options
add plugin eventlogger

{
  "type": "pie",
  "data": {
    "labels": [
      "Eiweis",
      "Fett",
      "Kohlenhydrate"
    ],
    "datasets": [
      {
        "data": [
          "875.0",
          "375.0",
          "1250.0"
        ],
        "borderWidth": 0,
        "hoverBorderWidth": 0,
        "pointRadius": 0,
        "fill": true,
        "unit": "",
        "mode": "current"
      }
    ]
  },
  "options": {
    "type": "pie",
    "responsive": true,
    "maintainAspectRatio": false,
    "animation": false,
    "units": "",
    "font": {
      "color": "#e1e1e1",
      "family": "\"Roboto\", \"Noto\", sans-serif",
      "size": 12,
      "style": "normal",
      "lineHeight": 1.2,
      "lineWidth": 0
    },
    "title": {
      "display": true,
      "text": "Aufteilung Nährstoffe (kal) pro Tag",
      "font": {
        "style": "normal",
        "color": "#ff9500",
        "family": "Quicksand, Roboto, 'Open Sans','Rubik',sans-serif"
      }
    },
    "layout": {
      "padding": {
        "left": 16,
        "right": 16,
        "top": 0,
        "bottom": 20
      }
    },
    "chartArea": {
      "backgroundColor": "transparent"
    },
    "legend": {
      "display": true,
      "position": "bottom",
      "lineWidth": 0,
      "labels": {
        "usePointStyle": true,
        "boxWidth": 8
      }
    },
    "tooltips": {
      "enabled": true,
      "mode": "nearest",
      "position": "nearest",
      "backgroundColor": "#ecf0f1",
      "titleFont": {
        "style": "normal",
        "color": "#647687"
      },
      "bodyFont": {
        "style": "normal",
        "color": "#647687"
      },
      "footerFont": {
        "style": "normal",
        "color": "#647687"
      },
      "animation": false
    },
    "hover": {
      "mode": "nearest",
      "intersect": true
    },
    "elements": {
      "point": {
        "radius": 0.33,
        "hitRadius": 8
      }
    },
    "spanGaps": true,
    "plugins": {
      "autocolors": {
        "useAutoColors": true,
        "enabled": true,
        "mode": "data"
      }
    }
  }
}

Now i can see the mouse events and the coordinate are different, Firefox works, Chrome do not work !
Chrome
------
{type: "mousemove", chart: t, native: MouseEvent, x: 437, y: 259, …}
chart: t {platform: e, id: 24, ctx: CanvasRenderingContext2D, canvas: canvas#chart-sf06rnuzp, config: {…}, …}
native: MouseEvent {isTrusted: true, screenX: 530, screenY: 355, clientX: 438, clientY: 258, …}
offsetX: undefined
offsetY: undefined
type: "mousemove"
x: 437
y: 259

Firefox
-------
chart: Object { id: 24, width: 352, height: 240, … }
native: mousemove { target: home-assistant
, clientX: 496, clientY: 285, … }
offsetX: undefined
offsetY: undefined
type: "mousemove"
x: 16
y: 36

@kurkle

@zibous looks like you made some progress and backdropColor is not an issue anymore?

With 3.0 it works:

Ok. So this issue seems resolved. Your current issue must be about events and shadow dom.
I don't currently have the time to start debugging that, but you could step through getRelativePosition and see what goes wrong.

Inside the shadowroot, I would make sure that there's a div before the canvas. The sizing goes really bad when inside the shadowroot directly.

@etimberg

Inside the shadowroot, I would make sure that there's a div before the canvas. The sizing goes really bad when inside the shadowroot directly.

Yes there is a  div before the canvas
<ha-card id="card-cjv4hls21" class="type-custom-chart-card">

           <ha-icon icon="mdi:nutrition" style="position: relative; top: -4px; padding: 0px 12px 0px 4px;"></ha-icon>
           Makro Nährstoffe

          <canvas id="chart-cjv4hls21" height="240" width="352"
                        style="user-select: none; display: block;
                        box-sizing: border-box; width: 352px; height: 240px;">
          </canvas>

</ha-card>

@etimberg
I suspect it is due to the getCanvasPosition, because with this the geometry
is calculated differently than with version 2.9.4.
In my particular case v 2.9.4. works for all browsers, v3.0.0-beta.4 only for FIREFOX.
function getCanvasPosition(evt, canvas) {
  var e = evt.originalEvent || evt;
  var touches = e.touches;
  var source = touches && touches.length ? touches[0] : e;
  var offsetX = source.offsetX,
      offsetY = source.offsetY;
  var box = false;
  var x, y;
  if (offsetX > 0 || offsetY > 0) {
    x = offsetX;
    y = offsetY;
  } else {
    var rect = canvas.getBoundingClientRect();
    x = source.clientX - rect.left;
    y = source.clientY - rect.top;
    box = true;
  }
  return {
    x: x,
    y: y,
    box: box
  };
}

Firefox always returns 0 for offsetX, offsetY, but Chrome returns values> 0.
Results Firefox:
return { x: 164.5, y: 292, box: true }
Result Chrome:
' return {x: 613, y: 79, box: false}`
Can I change something on the DIV or CANVAS element with inline CSS?

Chart.defaults.set('radar.scales.r.ticks', { backdropColor: 'red' });

Do not work any more...
Downloaded Chart.js-3.0.0-beta.5.zip
But in package.json I see '"version": "3.0.0-beta.3"'. So I'm not sure if it's really version "3.0 beta-5".

We moved the controller defaults under controller. So defaults.controllers.radar.

@kurkle

We moved the controller defaults under controllers. So defaults.controllers.radar.
Thanks, but when is use:

              case "radar":
				Chart.defaults.set("controllers.radar.r", {
					ticks: {
						backdropColor: "transparent",
					},
					angleLines: {
						display: true,
						color: this.themeSettings.gridlineColor,
						lineWidth: 0.3333,
					},
					gridLines: {
						circular: true,
					},
				});
				Chart.defaults.set("scale", {
					gridLines: {
						display: true,
						lineWidth: 0.333,
					},
				});

the backdropColor do not change.

@kurkle
Thanks, works now with:
Chart.defaults.set("controllers.radar.scales.r", {....)
Chart.defaults.set("controllers.polarArea.scales.r", {...)

Closing in favor of #8056


Rename EC2 block storage to EC2 EBS storage

The initial version of the Amazon block storage manager used the name
ec2_block_storage which has now been replaced with ec2_ebs_storage
to make it more explicit. This patch fixes the ext_management_system
spec and the corresponding tamplate to use the new name.
@miq-bot add_label providers/amazon,providers/storage,wip

This PR depends on https://github.com/ManageIQ/manageiq-providers-amazon/pull/107, which has received the first "ok". Please review this change as well.
@miq-bot remove_label wip

Closing in favour of https://github.com/ManageIQ/manageiq/pull/13569


refresh a qgridwidget

In Jupyter I create a grid and display it:
grid = qgrid.QGridWidget(df=df, filter=False)
display(grid)

This works well. However, if the underlying DataFrame changes in shape, e.g. more rows are added, is there any way to notify the QGridWidget to refresh the output cell (without having multiple grids shown)?

Sorry, just seen #49 for how to do this.


Could we evaluate once the child expressions of GpuExtractChunk32

The GpuExtractChunk32 expression gets evaluated 4 times for a decimal column (as far as I understand). This expression could also have some child expressions, for example:
gpudecimal128sum((cast(ss_quantity#139 as decimal(10,0)) * ss_sales_price#142)
So in this case, the multiply and the cast are both required to be re-evaluated 4 times. This means that for the aggregate we could spend most of the time in the pre-processing steps (I see this in queries q4, q5, q14*, q23*, q67). See the red GpuExtractChunk32 blocks, and the libcudf calls under it. They can be non-trivial amounts of time:

This issue is to track coming up with a way to extract this child expression and evaluate it once if possible.

In offline discussions about this, @revans2 raised an excellent point that ideally we should not do a "one-off" for this.  There are other cases where there are common sub-expressions across projections that could be extracted and materialized to save on redundant computation.  We should investigate more general solutions as part of fixing this.

I thought I had filed an issue for this, but I could not find it. I was thinking that we could do a combination of operations when we bind the expressions and in GpuProject itself that would let us look for duplicate sub-expressions and then place them into tiers. For example because of how SQL works we often have operations written like if (a + b +c < 0, 0, a + b). We would then re-write this into two project operations a+b as tmp, c and if(tmp +c < 0, 0, tmp).  We have to be very careful about how we re-write it. Any operation that has side-effects and is under a conditional would not be eligible for de-duplication. Unless it also appears in a non-conditional execution section of the same expression also. It gets kind of complicated quickly. I think we can start off with something simple and then expand it as we go.

Discussed this offline with @revans2 to get a clearer idea of what he has in mind.
The general idea is to provide an alternative to bindGpuReferences where instead of returning a list of expressions that we later do a GpuProjectExec.project() on, we instead return an object which will potentially do a series of projects.
This new interface would do a de-duping pass on the expressions and if it finds some common expressions, it would create multiple tiers of expression sets.  Expressions in earlier tiers are replaced with references to their output in later tiers.
The first step to is to do this without any deduping - just return an object that does the same project() we do now, and make sure that works without impacting performance.

I put up a draft PR which is a proof-of-concept.  I am planning to gather some performance numbers for this POC.
https://github.com/NVIDIA/spark-rapids/pull/6324

This is a snippet from nsys traces of q4 in the POC.
Original:

With Tiered Project:

I added some debug code to show the transformation from the original list of expressions to the tiers.  The last tier corresponds to the original set of expressions, with sub-expressions replaced with references to outputs from the previous tier.
This is an example derived from tpcds query 4:
22/08/18 20:46:15 WARN GpuEquivalentExpressions: Expressions
22/08/18 20:46:15 WARN GpuEquivalentExpressions: Expression with hashcode:<PHONE_NUMBER> nodeName: AttributeReference
ss_customer_sk#3: int

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: 820333799 nodeName: GpuExtractChunk32
gpuextractchunk32(cast((cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13) as decimal(28,2)), 0, true)
+- cast((cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13) as decimal(28,2))
   +- (cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13)
      :- cast(ss_quantity#10 as decimal(10,0))
      :  +- ss_quantity#10: int
      +- ss_sales_price#13: decimal(7,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: -152117521 nodeName: GpuExtractChunk32
gpuextractchunk32(cast((cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13) as decimal(28,2)), 1, true)
+- cast((cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13) as decimal(28,2))
   +- (cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13)
      :- cast(ss_quantity#10 as decimal(10,0))
      :  +- ss_quantity#10: int
      +- ss_sales_price#13: decimal(7,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode:<PHONE_NUMBER> nodeName: GpuExtractChunk32
gpuextractchunk32(cast((cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13) as decimal(28,2)), 2, true)
+- cast((cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13) as decimal(28,2))
   +- (cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13)
      :- cast(ss_quantity#10 as decimal(10,0))
      :  +- ss_quantity#10: int
      +- ss_sales_price#13: decimal(7,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: 641350793 nodeName: GpuExtractChunk32
gpuextractchunk32(cast((cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13) as decimal(28,2)), 3, true)
+- cast((cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13) as decimal(28,2))
   +- (cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13)
      :- cast(ss_quantity#10 as decimal(10,0))
      :  +- ss_quantity#10: int
      +- ss_sales_price#13: decimal(7,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: -1169151920 nodeName: GpuIsNull
gpuisnull((cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13))
+- (cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13)
   :- cast(ss_quantity#10 as decimal(10,0))
   :  +- ss_quantity#10: int
   +- ss_sales_price#13: decimal(7,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: -----------------------------------------------------------
22/08/18 20:46:15 WARN GpuEquivalentExpressions: Tier
22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode:<PHONE_NUMBER> nodeName: GpuAlias
(cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13) AS tiered_input_2#150
+- (cast(ss_quantity#10 as decimal(10,0)) * ss_sales_price#13)
   :- cast(ss_quantity#10 as decimal(10,0))
   :  +- ss_quantity#10: int
   +- ss_sales_price#13: decimal(7,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: -----------------------------------------------------------
22/08/18 20:46:15 WARN GpuEquivalentExpressions: Tier
22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: -1836725879 nodeName: GpuAlias
tiered_input_2#150 AS tiered_input_0#148
+- tiered_input_2#150: decimal(18,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: -75195783 nodeName: GpuAlias
cast(tiered_input_2#150 as decimal(28,2)) AS tiered_input_1#149
+- cast(tiered_input_2#150 as decimal(28,2))
   +- tiered_input_2#150: decimal(18,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: -----------------------------------------------------------
22/08/18 20:46:15 WARN GpuEquivalentExpressions: Tier
22/08/18 20:46:15 WARN GpuEquivalentExpressions: Expression with hashcode:<PHONE_NUMBER> nodeName: AttributeReference
ss_customer_sk#3: int

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: 790517665 nodeName: GpuExtractChunk32
gpuextractchunk32(tiered_input_1#149, 0, true)
+- tiered_input_1#149: decimal(28,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: -1301134232 nodeName: GpuExtractChunk32
gpuextractchunk32(tiered_input_1#149, 1, true)
+- tiered_input_1#149: decimal(28,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: 170332615 nodeName: GpuExtractChunk32
gpuextractchunk32(tiered_input_1#149, 2, true)
+- tiered_input_1#149: decimal(28,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: 664247163 nodeName: GpuExtractChunk32
gpuextractchunk32(tiered_input_1#149, 3, true)
+- tiered_input_1#149: decimal(28,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: GPU Expression with hashcode: -873385257 nodeName: GpuIsNull
gpuisnull(tiered_input_0#148)
+- tiered_input_0#148: decimal(18,2)

22/08/18 20:46:15 WARN GpuEquivalentExpressions: -----------------------------------------------------------

The output implies we're trying to do reuse on AttributeReference.  Is that the case, and if so, is that actually helpful in practice?  Seems like we would want to avoid trying to manifest that explicitly, as it's just a lookup.  I think in practice it ends up being a no-op due to the use of incRefCount, but it also seems unnecessary to track and attempt reuse on this expression.

@jlowe thanks for the comment!
We are not doing reuse on AttributeReference.  The last tier will retain AttributeReferences from the original list of expressions, but they are unchanged.  The output above prints the list of original Expressions, and then some number of tiers, 3 in the first example, and 2 in the second example.  There should only be AttributeReferences in the final tier.  The earlier tiers contain GpuAlias's of the re-used expressions.

I ran the nds 2.0 benchmark experiment on spark2a with 5 iterations over all queries to confirm whether there are improvements.
21c21
< export SPARK_RAPIDS_PLUGIN_JAR=$SPARK_RAPIDS_PLUGIN_DIR/rapids-4-spark_2.12-22.10.0-SNAPSHOT-cuda11-jimb.jar
---
> export SPARK_RAPIDS_PLUGIN_JAR=$SPARK_RAPIDS_PLUGIN_DIR/rapids-4-spark_2.12-22.10.0-SNAPSHOT-cuda11-jimb-tiered.jar
--------------------------------------------------------------------
Name = query4
Means = 20180.790948867798, 17002.71906852722
Time diff = 3178.071880340576
Speedup = 1.1869155084861296
T-Test (test statistic, p value, df) = 17.247464686537167, 1.2999180919197392e-07, 8.0
T-Test Confidence Interval = 2753.160333589061, 3602.9834270920915
ALERT: significant change has been detected (p-value < 0.05)
ALERT: improvement in performance has been observed
--------------------------------------------------------------------
Name = query14_part1
Means = 12905.730295181274, 11487.930536270142
Time diff = 1417.7997589111328
Speedup = 1.1234164634295793
T-Test (test statistic, p value, df) = 13.142003824183801, 1.0693169248673698e-06, 8.0
T-Test Confidence Interval = 1169.020946300991, 1666.5785715212746
ALERT: significant change has been detected (p-value < 0.05)
ALERT: improvement in performance has been observed
--------------------------------------------------------------------
Name = query14_part2
Means = 10959.199810028076, 9378.48424911499
Time diff = 1580.715560913086
Speedup = 1.1685470187852853
T-Test (test statistic, p value, df) = 15.759766763274348, 2.625678845273424e-07, 8.0
T-Test Confidence Interval = 1349.4217432741355, 1812.0093785520364
ALERT: significant change has been detected (p-value < 0.05)
T-Test (test statistic, p value, df) = 13.85670666887973, 7.113693878001213e-07, 8.0
T-Test Confidence Interval = 3050.0834062181166, 4267.932264558251
ALERT: significant change has been detected (p-value < 0.05)
ALERT: improvement in performance has been observed
--------------------------------------------------------------------
Name = query23_part2
Means = 42346.40235900879, 37041.990661621094
Time diff = 5304.411697387695
Speedup = 1.1431999631403058
T-Test (test statistic, p value, df) = 12.985262540894466, 1.172497422442868e-06, 8.0
T-Test Confidence Interval = 4362.421093071979, 6246.4023017034115
ALERT: significant change has been detected (p-value < 0.05)
ALERT: improvement in performance has been observed
--------------------------------------------------------------------
Name = query66
Means = 7410.863351821899, 3972.072172164917
Time diff = 3438.7911796569824
Speedup = 1.86574237088515
T-Test (test statistic, p value, df) = 75.18693372274068, 1.0911087180935187e-12, 8.0
T-Test Confidence Interval = 3333.322499300267, 3544.259860013698
ALERT: significant change has been detected (p-value < 0.05)
ALERT: improvement in performance has been observed
--------------------------------------------------------------------
Name = query67
Means = 39017.781829833984, 35937.08119392395
Time diff = 3080.700635910034
Speedup = 1.0857248427963844
T-Test (test statistic, p value, df) = 7.321858457525679, 8.21354157057269e-05, 8.0
T-Test Confidence Interval = 2110.4403602683215, 4050.960911551747
ALERT: significant change has been detected (p-value < 0.05)
ALERT: improvement in performance has been observed
--------------------------------------------------------------------
Name = benchmark
Means =<PHONE_NUMBER>542938,<PHONE_NUMBER>971802
Time diff = 24046.899557113647
Speedup = 1.039185554314146
T-Test (test statistic, p value, df) = 12.331952709991503, 1.7408981452795226e-06, 8.0
T-Test Confidence Interval = 19550.267829965676, 28543.53128426162
ALERT: significant change has been detected (p-value < 0.05)
ALERT: improvement in performance has been observed


Ubuntu 20.04 based Tensorflow images don't include Python 3.9 as indicated in the dockerhub docs

I believe there is either a build issue or the dockerhub docs need to be clarified.
My understanding is that the image for the tensorflow:2.10.0 release (and other recent releases) is guaranteed to include Python 3.9 based on the following excerpts from the dockerhub docs:

"Images built after Sept 2021 are based on Ubuntu 20.04"
"... [Python] 3.9 for Ubuntu 20-based images"

When using the 2.10.0 image I find that the OS is correctly Ubuntu 20.04 but that the Python version is 3.8. Running the following commands indicate the absence of Python 3.9:
root@4fbf1b14a2dd:/# cat /etc/issue
Ubuntu 20.04.5 LTS \n \l
root@4fbf1b14a2dd:/# python3 -V
Python 3.8.10
root@4fbf1b14a2dd:/# ls /usr/bin/python*
/usr/bin/python3  /usr/bin/python3-config  /usr/bin/python3.8  /usr/bin/python3.8-config

I looked through the issues/pull requests and through stackoverflow and found no reports of this issue which I find surprising. That most likely means that I am just misinterpreting the guarantees made by the docs - but maybe this is sufficient support to clarify the docs further if that is the case?

To avoid this, run the container by specifying your user's userid:

$ docker run -u $(id -u):$(id -g) args...

root@3d174a62a5ca:/# cat /etc/issue
Ubuntu 20.04.5 LTS \n \l

root@3d174a62a5ca:/# python3 -V
Python 3.8.10
root@3d174a62a5ca:/# ls /usr/bin/python*
/usr/bin/python3         /usr/bin/python3.8
/usr/bin/python3-config  /usr/bin/python3.8-config
root@3d174a62a5ca:/#

and i could find python 3.8.10 only there.
Then I have checked the docker documentation here which states:
Versioned images <= 1.15.0 (1.x) and <= 2.1.0 (2.x) have Python 3 (3.5 for Ubuntu 16-based images; 3.6 for Ubuntu 18-based images; 3.9 for Ubuntu 20-based images) in images tagged "-py3" and Python 2.7 in images without "py" in the tag.
which states until <= 2.x for Ubuntu 20 OS it is Python 3.9 .
and then i found:
All newer images are Python 3 only.
It's not clearly stated which Python Version being used whether 3.8 or 3.9 & higher? Isn't it ?
I will also cross check with concern Team and let you updated.But the thing is it is not confirmed anywhere in the documentation (at least that i have gone through) that 3.9 Version being used in TF latest docker images.Am I missing anything here ? Please let me know.
Thankyou!

Got the same issue here, looking forward to get Python 3.9 with Tensorflow >=2.11
Thankyou! :)

@SuryanarayanaY yes your findings and understanding of the docs seem to match mine.
I should also add another point about the following guarantee:

Versioned images <= 1.15.0 (1.x) and <= 2.1.0 (2.x) have Python 3 (3.5 for Ubuntu 16-based images; 3.6 for Ubuntu 18-based images; 3.9 for Ubuntu 20-based images) in images tagged "-py3" and Python 2.7 in images without "py" in the tag.

Testing those latest versions specified reveal that they are both Ubuntu 18-based and come with Python 3.6. Here are my findings (tested in a similar manner):
tensorflow-2.1.0-py3: Ubuntu 18.04, Python 3.6.9
tensorflow:1.15.0-py3: Ubuntu 18.04, Python 3.6.8

Since those are the latest versions specified by that guarantee, and they are Ubuntu-18 based, it doesn't seem like there would be any Ubuntu 20-based versions before that. So why would it be specified? This is what made me think that this guarantee (3.9 for Ubuntu 20-based images) applied to the more recent Tensorflow releases (which are Ubuntu 20-based).
It seems up to that tf version <= 2.1.0 the docs clearly outline what version of Python to expect. And for more recent versions, the docs aren't very clear. So I feel, at a minimum, the docs could be improved by outlining which Python version to expect for more recent versions.

@TaylorZowtuk ,
Thanks for all your hardwork and time you put on this issue.We will definitely verify and rectify wherever corrections/clarifications needed and the same will be updated.
Thankyou!

@angerson , Could you please look into this, it seems like the python versions 3.9 and 3.10 are not included in the published docker images, unlike the version which we publish for the tf-nightly-gpu where python version is included from 3.7 - 3.10 here https://pypi.org/project/tf-nightly-gpu/2.12.0.dev20221201/#files.

Any updates?

Yes, it looks like this was a documentation error. I have fixed it now, and the line in question now reads "Python 3.8".
Thanks for your report & patience.


⚠ SceneTime has degraded performance

In 1994035, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 1201 ms

Resolved: SceneTime performance has improved in e888ce6.


Fix the issue of random labelling

Index in position 2 exceeds array bounds (must not exceed 5).

Error in Create_Fleiss_Matrix (line 9)
        Fleiss_kappa_matrix(i, matrix(j,i)) = Fleiss_kappa_matrix(i, matrix(j,i)) + 1;

Error in fleiss (line 25)
F = Create_Fleiss_Matrix(k,matrix);

Update the implementation to support random labeling instead of ordered labeling of 1,2,3,....

The labeling should be able to support random labeling of 1,2, 10, etc...
Also, update the k meaning from the number of labelers to the number of categories

"Fixed"
Changes: Added line 24 in Fleiss.m to accomodate unlabelled.


Allow terraform to generate the base role for cluster creation

This is a fork from https://github.com/yuvipanda/terraform-deploy/tree/fix/no-users and the idea is that you can terraform apply from the aws-creds folder to create a group that may assume a role from which you may then run the real terraform script from the aws folder. You simply add yourself to the group and then use awsudo or sts to assume the role in a shell before creating your EKS cluster. Looking for direction here, I took a lot of liberties and I want to gauge interest in adopting this system for other orgs.

No longer a WIP, this is legit now!


Create Vic2 culture file instead of copying an existing one

Instead of simply copying a pre-built vic2 cultures file, create a new one during conversion (though the old one can be used as a base to start from). This will enable the ability to create several other features, as well as making missing culture mappings less of an issue.

We have it by now, isn't it?

Nope, we just have a pre-defined one in the data files.


Passing an environment variable that should be parsed as None

I have a settings variable that is Optional, like the following:
from typing import Literal
from pydantic_settings import BaseSettings, SettingsConfigDict

class MySettings(BaseSettings):

    FOO: Optional[Literal["bar"]] = Field("bar", description="test")

Is there a mechanism where the user can pass the equivalent of a Python None as an environment variable? I read the section on "Passing environment variable values", but it doesn't have an example for None.
Passing an environment variable like export FOO= will yield an error because the input_value='' and input_type=str (which is good --- we shouldn't change that!). So, I'm trying to figure out what the ideal mechanism is to pass a None. Is there some setting where I can define what a None value would be?

I think it is related to https://github.com/pydantic/pydantic-settings/issues/199. we already have a fix for it but it has not been deployed yet.
It will be available in the next release.

Fantastic! That is just what I was looking for!


[android] Downloads are pausing for no apparent reason

I've completely uninstalled FrostWire from my device, cleared all files, installed from scratch.
I'm connected on Wi-Fi full signal, no other downloads, I start downloading the latest promos, including "Steal This Show" which is a .torrent we didn't create ourselves, and pretty much all downloads go to "Paused" state after a few seconds.
I've yet to do another test by running from source on master to see if this issue has gone away with the latest jlibtorrent binaries. My initial thoughts are that this may have something to do with Session parameter tunning on android.
However, @aldenml might have a better idea what may have introduced this issue.
Fixing this should be our #1 priority this week.

A few questions, since I tested right now and downloaded all the promos without any issue.

"installed from scratch" means from Google Play?
Even with full Wi-Fi signal, did you confirm having a smooth connectivity? HTTP is know to be very robust, but looking an online non-cached video should reveal if there are connectivity issues.
Where you having less than 4 torrents downloading or all of them went to "Paused"?

Same Issue here.
I had 1 torrent downloading. After a minutes, it paused.
FrostWire Plus 1.7.0. build 9000232
Galaxy J7
Android 5.1.1.

I tested on two different wifi signals (at mall and at home).

Interesting, @alejandroarturom  can you test FrostWire Basic (from Google Play)? Are you saving to internal storage or external? Thanks

@aldenml Internal storage. Let me test FrostWire Basic

Also, I'm not using a VPN on my Samsung.

FW Basic is not pausing when downloading torrents.

Plus from the website isn't pausing for me. Testing from sources.

I cannot reproduce this issue on FrostWire 1.7.1 (build 237) although some users are complaining about it. Tested on LG Android 5.0.2, Sony Xperia Android 5.1, Android 4.4


Update to use ephemeris and timing using Astropy instead of Pyephem

It has been noted that using ephem does not account for all subtleties and thus propagates uncertainty in timing. It has been recommended to use Astropy modules for timing conversions.

In 7355c0a, all noticeable and major ephemeris inaccuracies were fixed using Astropy-based coordinate transformations.


tag code version for v2.3.2a1

Could you add a tag for the code version corresponding to the release 2.3.2a1 on pypi?
I'm specifically looking for the matching version of amis.txt .  Thanks!

Hi @notestaff,
it's an alpha version made for test, so we don't usually tag those versions.
Btw this should be the commit of the AMI you are looking for https://github.com/aws/aws-parallelcluster/commit/9fc747627012e30df534226335ee489da1a2ef80


[WFCORE-4995] Bump management API version to 14.0.0

and urn:jboss:domain:14.0 for the XSD
JIRA: https://issues.redhat.com/browse/WFCORE-4995
Signed-off-by: Jeff Mesnil<EMAIL_ADDRESS>

@yersan thanks for the review, I've fixed the commit and updated the PR with it.


In tox, run pytest with xdist

That way, plain pytest usage does not need it, and hence it is not listed in the [test] extra.

@frenzymadness, could you also cut a release with this fix? It would help to build mashralparser in Copr.