rts: buggy handling of non-trivial dynamic flavours of the library

It turns out hadrian can produce any flavour we want of the RTS library, but Cabal just won't see them as its code just expects one shared lib, for the "just dynamic" way. This in particular keeps us from building the stage 2 GHC with -dynamic, like the make build system does, at least whenever we build a flavour that contains at least one dynamic-enabled way. Why? Because the stage 2 GHC is also meant to be built with -threaded, 99% of the time, which requires the thr_dyn way of the RTS library, that Cabal doesn't install.
I have a Cabal patch that adds extra-dynamic-library-flavours, which seemed like the least bad solution when I discussed this problem with @hvr. See https://github.com/haskell/cabal/pull/5606.
This then of course also requires a change to rts.cabal.in:
diff --git a/rts/rts.cabal.in b/rts/rts.cabal.in
index 76fd353134..9c95fbb342 100644
--- a/rts/rts.cabal.in
+++ b/rts/rts.cabal.in
@@ -39,6 +39,8 @@ flag debug
   default: False
 flag logging
   default: False
+flag dynamic
+  default: False

 library
     -- rts is a wired in package and
@@ -65,8 +67,14 @@ library
         extra-library-flavours: _debug_p _thr_debug_p
     if flag(debug)
       extra-library-flavours: _debug _thr_debug
+      if flag(dynamic)
+        extra-dynamic-library-flavours: _debug _thr_debug
     if flag(logging)
       extra-library-flavours: _l _thr_l
+      if flag(dynamic)
+        extra-dynamic-library-flavours: _l _thr_l
+    if flag(dynamic)
+      extra-dynamic-library-flavours: _thr

     exposed: True
     exposed-modules:

that I will submit to GHC, along with a Cabal submodule bump, once I get the feature merged in Cabal.
Finally, I have some hadrian patch here that makes use of that new dynamic flag. The result is that with all those elements, we not only produce all the dynamic ways we want, as before, but Cabal sees them and installs them all in the package database, unlike before.
@DavidEichmann and I stumbled upon this problem while investigating a test failure, where David noticed the "GHC Dynamic" bit of the ghc --info output differed between hadrian built GHCs and make built GHCs. On top of all those patches he will submit a PR that builds GHC with -dynamic whenever we're building a flavour that contains one dynamic-enabled way, or something along those lines.

@alpmestan Thanks a lot! This all sounds good to me, although it feels a bit strange that the dynamic way is treated specially. For example, are we going to also need extra-profiling-library-flavours later?
Hope all three patches (Cabal, GHC and Hadrian) will land soon!

No, dynamic is special because it yields shared libs. Profiled libraries can be either static or dynamic, so we're never going to need some special support as long as extra[-dynamic]-library-flavours let us get non-trivial flavours of static or shared libraries.
I'm not ecstatic about this solution but it was either that or keep just extra-library-flavours and treat anything with dyn it in in a special way. That was judged too hacky, which is why I went for the new field.

omg. what box have I opened with extra-library-flavours.
@snowleopard I doubt we'll need specialization for profiling. From a systems perspective there are only static and dynamic libraries; where the extra-library-flavours was mostly concerned with allowing multiple static libraries in a cabal package (without cabal knowing how to actually build those libraries).

Eventually, I suppose some of hadrian's logic for building object files for many complex flavours could be carried over in Cabal, and then we would have a nicer approach to ask for a bunch of ways to be built. What's a little troubling is that this is only ever going to be useful for libHSrts, since any other Haskell library ever only comes in vanilla, profiled or dynamic(/shared) flavour, they just don't have any other flavour to offer.
Would it make sense to generalize this notion of flavour so that not only libHSrts could offer its current menu of flavours to its customers, but other libraries could perhaps make use of this too? I don't know. All I know right now is that without the Cabal patch above, we simply can't have both sentences be true:

hadrian uses Cabal for reading package info, registering libs, etc
hadrian can produce, say, a threaded dynamic flavour of libHSrts

@alpmestan @angerman Thank you! It makes sense to me now. Let's go ahead with the proposed solution. I guess other libraries might start building various flavours once this is supported and documented.

When doing a clean hadrian build (flavour=quick) from my branch (https://github.com/DavidEichmann/ghc b7ca1a1413dd1a6f369f6fbd652182fc94b73474), I see that the GenericPackageDescription for the rts has extra-lib-flavours, but no extra-dyn-lib-flavours. I added debug output to Hadrian.Haskell.Cabal.Parser.resolveContextData:
when (package == rts) . liftIO . putStrLn $ " @@@ generic condLibrary: " ++ show (C.condLibrary gpd)

And got the output:

| ContextData oracle: resolving data for 'rts' (Stage1, dyn)...
 @@@ generic condLibrary: Just (CondNode {
        condTreeData = Library {
            ...
            extraLibFlavours = ["_thr"],
            extraDynLibFlavours = [],
            ...
            options = [(GHC, ["-this-unit-id","rts"])],
        }
    },
    ...)

| ContextData oracle: resolving data for 'rts' (Stage1, dyn)...
 @@@ generic condLibrary: Just (CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = ["Apply.cmm","Compact.cmm","Exception.cmm","HeapStackCheck.cmm","PrimOps.cmm","StgMiscClosures.cmm","StgStartup.cmm","StgStdThunks.cmm","Updates.cmm","AutoApply.cmm"], cSources = ["Adjustor.c","Arena.c","Capability.c","CheckUnload.c","ClosureFlags.c","Disassembler.c","FileLock.c","Globals.c","Hash.c","Heap.c","Hpc.c","HsFFI.c","Inlines.c","Interpreter.c","LdvProfile.c","Libdw.c","LibdwPool.c","Linker.c","Messages.c","OldARMAtomic.c","PathUtils.c","Pool.c","Printer.c","ProfHeap.c","ProfilerReport.c","ProfilerReportJson.c","Profiling.c","Proftimer.c","RaiseAsync.c","RetainerProfile.c","RetainerSet.c","RtsAPI.c","RtsDllMain.c","RtsFlags.c","RtsMain.c","RtsMessages.c","RtsStartup.c","RtsSymbolInfo.c","RtsSymbols.c","RtsUtils.c","STM.c","Schedule.c","Sparks.c","StableName.c","StablePtr.c","StaticPtrTable.c","Stats.c","StgCRun.c","StgPrimFloat.c","Task.c","ThreadLabels.c","ThreadPaused.c","Threads.c","Ticky.c","Timer.c","TopHandler.c","Trace.c","WSDeque.c","Weak.c","eventlog/EventLog.c","eventlog/EventLogWriter.c","hooks/FlagDefaults.c","hooks/LongGCSync.c","hooks/MallocFail.c","hooks/OnExit.c","hooks/OutOfHeap.c","hooks/StackOverflow.c","linker/CacheFlush.c","linker/Elf.c","linker/LoadArchive.c","linker/M32Alloc.c","linker/MachO.c","linker/PEi386.c","linker/SymbolExtras.c","linker/elf_got.c","linker/elf_plt.c","linker/elf_plt_aarch64.c","linker/elf_plt_arm.c","linker/elf_reloc.c","linker/elf_reloc_aarch64.c","linker/elf_util.c","sm/BlockAlloc.c","sm/CNF.c","sm/Compact.c","sm/Evac.c","sm/Evac_thr.c","sm/GC.c","sm/GCAux.c","sm/GCUtils.c","sm/MBlock.c","sm/MarkWeak.c","sm/Sanity.c","sm/Scav.c","sm/Scav_thr.c","sm/Storage.c","sm/Sweep.c","xxhash.c","fs.c"], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = ["_thr"], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = ["build","../includes","includes","includes/dist-derivedconstants/header"], includes = ["Stg.h"], installIncludes = ["Cmm.h","HsFFI.h","MachDeps.h","Rts.h","RtsAPI.h","Stg.h","ghcautoconf.h","ghcconfig.h","ghcplatform.h","ghcversion.h","DerivedConstants.h","ffi.h","ffitarget.h","rts/Adjustor.h","rts/BlockSignals.h","rts/Bytecodes.h","rts/Config.h","rts/Constants.h","rts/EventLogFormat.h","rts/EventLogWriter.h","rts/FileLock.h","rts/Flags.h","rts/GetTime.h","rts/Globals.h","rts/Hpc.h","rts/IOManager.h","rts/Libdw.h","rts/LibdwPool.h","rts/Linker.h","rts/Main.h","rts/Messages.h","rts/OSThreads.h","rts/Parallel.h","rts/PrimFloat.h","rts/Profiling.h","rts/Signals.h","rts/SpinLock.h","rts/StableName.h","rts/StablePtr.h","rts/StaticPtrTable.h","rts/TTY.h","rts/Threads.h","rts/Ticky.h","rts/Time.h","rts/Timer.h","rts/Types.h","rts/Utils.h","rts/prof/CCS.h","rts/prof/LDV.h","rts/storage/Block.h","rts/storage/ClosureMacros.h","rts/storage/ClosureTypes.h","rts/storage/Closures.h","rts/storage/FunTypes.h","rts/storage/Heap.h","rts/storage/GC.h","rts/storage/InfoTables.h","rts/storage/MBlock.h","rts/storage/TSO.h","stg/DLL.h","stg/HaskellMachRegs.h","stg/MachRegs.h","stg/MiscClosures.h","stg/Prim.h","stg/Regs.h","stg/RtsMachRegs.h","stg/SMP.h","stg/Ticky.h","stg/Types.h"], options = [(GHC,["-this-unit-id","rts"])], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = [CondBranch {condBranchCondition = Var (OS Windows), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = ["Cffi-6"], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Just (CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = ["Cffi"], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []})},CondBranch {condBranchCondition = Var (Flag (FlagName "profiling")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = ["_p","_thr_p"], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = [CondBranch {condBranchCondition = Var (Flag (FlagName "debug")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = ["_debug_p","_thr_debug_p"], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing}]}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "debug")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = ["_debug","_thr_debug"], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = [CondBranch {condBranchCondition = Var (Flag (FlagName "dynamic")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing}]}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "logging")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = ["_l","_thr_l"], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = [CondBranch {condBranchCondition = Var (Flag (FlagName "dynamic")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing}]}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "dynamic")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "libm")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["m"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "librt")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["rt"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "libdl")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["dl"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "ffi")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["ffi"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (OS Windows), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["wsock32","gdi32","winmm","dbghelp","psapi"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "need-pthread")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["pthread"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "libbfd")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["bfd","iberty"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "mingwex")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["mingwex"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "libdw")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["elf","dw"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "libnuma")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = ["numa"], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = CNot (Var (Flag (FlagName "smp"))), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = ["-DNOSMP"], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "64bit")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = [CondBranch {condBranchCondition = Var (Flag (FlagName "leading-underscore")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = ["-Wl,-u,_hs_atomic_add64","-Wl,-u,_hs_atomic_sub64","-Wl,-u,_hs_atomic_and64","-Wl,-u,_hs_atomic_nand64","-Wl,-u,_hs_atomic_or64","-Wl,-u,_hs_atomic_xor64","-Wl,-u,_hs_cmpxchg64","-Wl,-u,_hs_atomicread64","-Wl,-u,_hs_atomicwrite64"], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Just (CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = ["-Wl,-u,hs_atomic_add64","-Wl,-u,hs_atomic_sub64","-Wl,-u,hs_atomic_and64","-Wl,-u,hs_atomic_nand64","-Wl,-u,hs_atomic_or64","-Wl,-u,hs_atomic_xor64","-Wl,-u,hs_cmpxchg64","-Wl,-u,hs_atomicread64","-Wl,-u,hs_atomicwrite64"], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []})}]}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (Flag (FlagName "leading-underscore")), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = ["-Wl,-u,_base_GHCziTopHandler_runIO_closure","-Wl,-u,_base_GHCziTopHandler_runNonIO_closure","-Wl,-u,_ghczmprim_GHCziTuple_Z0T_closure","-Wl,-u,_ghczmprim_GHCziTypes_True_closure","-Wl,-u,_ghczmprim_GHCziTypes_False_closure","-Wl,-u,_base_GHCziPack_unpackCString_closure","-Wl,-u,_base_GHCziWeak_runFinalizzerBatch_closure","-Wl,-u,_base_GHCziIOziException_stackOverflow_closure","-Wl,-u,_base_GHCziIOziException_heapOverflow_closure","-Wl,-u,_base_GHCziIOziException_allocationLimitExceeded_closure","-Wl,-u,_base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-Wl,-u,_base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-Wl,-u,_base_GHCziIOziException_cannotCompactFunction_closure","-Wl,-u,_base_GHCziIOziException_cannotCompactPinned_closure","-Wl,-u,_base_GHCziIOziException_cannotCompactMutable_closure","-Wl,-u,_base_ControlziExceptionziBase_absentSumFieldError_closure","-Wl,-u,_base_ControlziExceptionziBase_nonTermination_closure","-Wl,-u,_base_ControlziExceptionziBase_nestedAtomically_closure","-Wl,-u,_base_GHCziEventziThread_blockedOnBadFD_closure","-Wl,-u,_base_GHCziConcziSync_runSparks_closure","-Wl,-u,_base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-Wl,-u,_base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure","-Wl,-u,_base_GHCziConcziSignal_runHandlersPtr_closure","-Wl,-u,_base_GHCziTopHandler_flushStdHandles_closure","-Wl,-u,_base_GHCziTopHandler_runMainIO_closure","-Wl,-u,_ghczmprim_GHCziTypes_Czh_con_info","-Wl,-u,_ghczmprim_GHCziTypes_Izh_con_info","-Wl,-u,_ghczmprim_GHCziTypes_Fzh_con_info","-Wl,-u,_ghczmprim_GHCziTypes_Dzh_con_info","-Wl,-u,_ghczmprim_GHCziTypes_Wzh_con_info","-Wl,-u,_base_GHCziPtr_Ptr_con_info","-Wl,-u,_base_GHCziPtr_FunPtr_con_info","-Wl,-u,_base_GHCziInt_I8zh_con_info","-Wl,-u,_base_GHCziInt_I16zh_con_info","-Wl,-u,_base_GHCziInt_I32zh_con_info","-Wl,-u,_base_GHCziInt_I64zh_con_info","-Wl,-u,_base_GHCziWord_W8zh_con_info","-Wl,-u,_base_GHCziWord_W16zh_con_info","-Wl,-u,_base_GHCziWord_W32zh_con_info","-Wl,-u,_base_GHCziWord_W64zh_con_info","-Wl,-u,_base_GHCziStable_StablePtr_con_info","-Wl,-u,_hs_atomic_add8","-Wl,-u,_hs_atomic_add16","-Wl,-u,_hs_atomic_add32","-Wl,-u,_hs_atomic_sub8","-Wl,-u,_hs_atomic_sub16","-Wl,-u,_hs_atomic_sub32","-Wl,-u,_hs_atomic_and8","-Wl,-u,_hs_atomic_and16","-Wl,-u,_hs_atomic_and32","-Wl,-u,_hs_atomic_nand8","-Wl,-u,_hs_atomic_nand16","-Wl,-u,_hs_atomic_nand32","-Wl,-u,_hs_atomic_or8","-Wl,-u,_hs_atomic_or16","-Wl,-u,_hs_atomic_or32","-Wl,-u,_hs_atomic_xor8","-Wl,-u,_hs_atomic_xor16","-Wl,-u,_hs_atomic_xor32","-Wl,-u,_hs_cmpxchg8","-Wl,-u,_hs_cmpxchg16","-Wl,-u,_hs_cmpxchg32","-Wl,-u,_hs_atomicread8","-Wl,-u,_hs_atomicread16","-Wl,-u,_hs_atomicread32","-Wl,-u,_hs_atomicwrite8","-Wl,-u,_hs_atomicwrite16","-Wl,-u,_hs_atomicwrite32","-Wl,-u,_findPtr"], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Just (CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = ["-Wl,-u,base_GHCziTopHandler_runIO_closure","-Wl,-u,base_GHCziTopHandler_runNonIO_closure","-Wl,-u,ghczmprim_GHCziTuple_Z0T_closure","-Wl,-u,ghczmprim_GHCziTypes_True_closure","-Wl,-u,ghczmprim_GHCziTypes_False_closure","-Wl,-u,base_GHCziPack_unpackCString_closure","-Wl,-u,base_GHCziWeak_runFinalizzerBatch_closure","-Wl,-u,base_GHCziIOziException_stackOverflow_closure","-Wl,-u,base_GHCziIOziException_heapOverflow_closure","-Wl,-u,base_GHCziIOziException_allocationLimitExceeded_closure","-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-Wl,-u,base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-Wl,-u,base_GHCziIOziException_cannotCompactFunction_closure","-Wl,-u,base_GHCziIOziException_cannotCompactPinned_closure","-Wl,-u,base_GHCziIOziException_cannotCompactMutable_closure","-Wl,-u,base_ControlziExceptionziBase_absentSumFieldError_closure","-Wl,-u,base_ControlziExceptionziBase_nonTermination_closure","-Wl,-u,base_ControlziExceptionziBase_nestedAtomically_closure","-Wl,-u,base_GHCziEventziThread_blockedOnBadFD_closure","-Wl,-u,base_GHCziConcziSync_runSparks_closure","-Wl,-u,base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-Wl,-u,base_GHCziConcziIO_ioManagerCapabilitiesChanged_closure","-Wl,-u,base_GHCziConcziSignal_runHandlersPtr_closure","-Wl,-u,base_GHCziTopHandler_flushStdHandles_closure","-Wl,-u,base_GHCziTopHandler_runMainIO_closure","-Wl,-u,ghczmprim_GHCziTypes_Czh_con_info","-Wl,-u,ghczmprim_GHCziTypes_Izh_con_info","-Wl,-u,ghczmprim_GHCziTypes_Fzh_con_info","-Wl,-u,ghczmprim_GHCziTypes_Dzh_con_info","-Wl,-u,ghczmprim_GHCziTypes_Wzh_con_info","-Wl,-u,base_GHCziPtr_Ptr_con_info","-Wl,-u,base_GHCziPtr_FunPtr_con_info","-Wl,-u,base_GHCziInt_I8zh_con_info","-Wl,-u,base_GHCziInt_I16zh_con_info","-Wl,-u,base_GHCziInt_I32zh_con_info","-Wl,-u,base_GHCziInt_I64zh_con_info","-Wl,-u,base_GHCziWord_W8zh_con_info","-Wl,-u,base_GHCziWord_W16zh_con_info","-Wl,-u,base_GHCziWord_W32zh_con_info","-Wl,-u,base_GHCziWord_W64zh_con_info","-Wl,-u,base_GHCziStable_StablePtr_con_info","-Wl,-u,hs_atomic_add8","-Wl,-u,hs_atomic_add16","-Wl,-u,hs_atomic_add32","-Wl,-u,hs_atomic_sub8","-Wl,-u,hs_atomic_sub16","-Wl,-u,hs_atomic_sub32","-Wl,-u,hs_atomic_and8","-Wl,-u,hs_atomic_and16","-Wl,-u,hs_atomic_and32","-Wl,-u,hs_atomic_nand8","-Wl,-u,hs_atomic_nand16","-Wl,-u,hs_atomic_nand32","-Wl,-u,hs_atomic_or8","-Wl,-u,hs_atomic_or16","-Wl,-u,hs_atomic_or32","-Wl,-u,hs_atomic_xor8","-Wl,-u,hs_atomic_xor16","-Wl,-u,hs_atomic_xor32","-Wl,-u,hs_cmpxchg8","-Wl,-u,hs_cmpxchg16","-Wl,-u,hs_cmpxchg32","-Wl,-u,hs_atomicread8","-Wl,-u,hs_atomicread16","-Wl,-u,hs_atomicread32","-Wl,-u,hs_atomicwrite8","-Wl,-u,hs_atomicwrite16","-Wl,-u,hs_atomicwrite32","-Wl,-u,findPtr"], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []})},CondBranch {condBranchCondition = Var (OS OSX), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = ["-Wl,-search_paths_first"], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = [CondBranch {condBranchCondition = CNot (Var (Arch X86_64)), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = ["-read_only_relocs","warning"], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing}]}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = COr (COr (Var (Arch I386)) (Var (Arch (OtherArch "powerpc")))) (Var (Arch (OtherArch "powerpc64"))), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = ["AdjustorAsm.S"], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = COr (COr (Var (Arch (OtherArch "powerpc"))) (Var (Arch (OtherArch "powerpc64")))) (Var (Arch (OtherArch "powerpc64le"))), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = ["StgCRunAsm.S"], cmmSources = [], cSources = [], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Nothing},CondBranch {condBranchCondition = Var (OS Windows), condBranchIfTrue = CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = ["win32/AsyncIO.c","win32/AwaitEvent.c","win32/ConsoleHandler.c","win32/GetEnv.c","win32/GetTime.c","win32/IOManager.c","win32/OSMem.c","win32/OSThreads.c","win32/ThrIOManager.c","win32/Ticker.c","win32/WorkQueue.c","win32/veh_excn.c"], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []}, condBranchIfFalse = Just (CondNode {condTreeData = Library {libName = Nothing, exposedModules = [], reexportedModules = [], signatures = [], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], buildToolDepends = [], cppOptions = [], asmOptions = [], cmmOptions = [], ccOptions = [], cxxOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], extraFrameworkDirs = [], asmSources = [], cmmSources = [], cSources = ["posix/GetEnv.c","posix/GetTime.c","posix/Itimer.c","posix/OSMem.c","posix/OSThreads.c","posix/Select.c","posix/Signals.c","posix/TTY.c"], cxxSources = [], jsSources = [], hsSourceDirs = [], otherModules = [], virtualModules = [], autogenModules = [], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraGHCiLibs = [], extraBundledLibs = [], extraLibFlavours = [], extraDynLibFlavours = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], profOptions = [], sharedOptions = [], staticOptions = [], customFieldsBI = [], targetBuildDepends = [], mixins = []}}, condTreeConstraints = [], condTreeComponents = []})}]})

@DavidEichmann Perhaps, we haven't yet implemented the new parsing functionality in Hadrian?
I think the relevant function is:
https://github.com/snowleopard/hadrian/blob/master/src/Hadrian/Haskell/Cabal/Parse.hs#L173

Yes we've been looking at this function, but I personally fail to understand why things go fine for extraLibFlavours but not extraDynLibFlavours. Why one is preserved but not the other. It was all working fine before I rebased and got the last few commits (among which the caching ones?), so this is quite confusing.

@DavidEichmann This output is expected. This is "by default", without taking into account all the flags etc. In particular, you can notice how extraLibFlavours only has _thr while we in fact end up building and even installing a lot more static flavours than that. _thr is there because we always build at least vanilla + threaded static libs for the RTS, whatever the flavour. On the other hand, the dyn lib flavours is empty because by default we don't want to produce any shared lib, only when the dynamic cabal flag is passed when configuring the rts lib. Makes sense?

@alpmestan Actually, it appears that we don't even record anything flavour-related in ContextData:
https://github.com/snowleopard/hadrian/blob/master/src/Hadrian/Haskell/Cabal/Type.hs#L40
Should we? If rts.cabal contains this information, then maybe we need to parse it and put into ContextData.extraLibFlavours or something like that?

Yeah maybe. Yet, it still works for static library flavours (extraLibFlavours field in Cabal's BuildInfo type), even though we don't have that information in ContextData. So there's something odd going on, we're completely missing a piece of the puzzle, and we definitely need to figure it out. It is not completely crazy to think that even if we were storing that data in ContextData, we still would not get Cabal to install our extra dynamic flavours. I actually consider this to be the most likely outcome.

It looks like the empty extraDynLibFlavours was caused by my branch (DavidEichmann/ghc@b7ca1a1 being based on too old of a version of cabal (2.4). Hence the default value of [] is used as per this line of code. Commenting that line out leads to a successful build with ghc build with -dynamic and ghc --info gives ("GHC Dynamic","YES").

I've noticed a further issue with the dynamically linked ghc binary (e.g. in the perf flavour).
In the case of hadrian, we currently do not specify such linker options, but should. As hadrian installs all .so files in the same directory, we just need to use e.g. this option when building the ghc binary:
-optl-Wl,-rpath -optl-Wl,'$ORIGIN/../lib/x86_64-linux-ghc-8.7.20181018'


Enable bundle removal for FBC operators

A user can remove a bundle from repository of it uses FCB workflow and the removed bundle is not used in any of existing catalogs. A user can also combine a bundle removal and catalog updates so they can remove entire bundle and catalog at the same time.
JIRA: ISV-5138

One nitpick and after addressing Marek's comments LGTM Is there a plan to cover this new functionality with integration test scenario?

I wasn't thinking about it because to remove something from a repo you have to add it first by the official way. It makes this test very long because all pipelines need to run twice.

I wasn't thinking about it because to remove something from a repo you have to add it first by the official way. It makes this test very long because all pipelines need to run twice.
Makes sense - one option might be to extend the current FBC tests, just revert the change afterwards?.. Not sure about the complexity though.


Use a simpler implementation of Diagnosticable.toString when running in profile/release mode

Diagnosticable.toString may be called in performance sensitive contexts
(for example, creating debug labels for Tickers)

/cc @jacob314

The concern is related to speed, not size.  Diagnosticable.toString is being called during construction of some UI elements such as Tickers.  The goal is to avoid the performance cost of the full toString in cases where the string is unlikely to be used.

If the toString is actually being called as part of rendering widgets then absolutely remove it from profile mode. Is there no way to remove the toString calls from ticker?

The toString call is used to construct a debug label for the Ticker.  IIUC it's potentially useful to have a debug label even in profile/release mode as long as the cost is negligible.


How to get current node

Sorry to post many questions..
But i got trouble when get the current node, i used getSelectionNode() to get the DOM but sometimes i got only string, how can i got only p tag in my scenario?
Thanks !

core.util.getFormatElement(core.getSelectionNode()) or core.getSelectedElements(null)
http://suneditor.com/sample/html/out/document-editor.html#getSelectedElements

Thanks so much, it worked :D


Create StaticSite like construct for mobile apps to generate sst-env output file

Requests:

Ernie https://serverless-stack.slack.com/archives/C01JG3B20RY/p1646959079916689

We are transition this repo to https://github.com/sst/v2 and are closing this issue for now. If it is still relevant please reopen it there - sorry for the trouble


Fix bug in /emojis command

Summary
Fix bug in /emojis command
Details
When /emojis command was invoked in a server with no emojis, it gave ValueError.
So I put a try/except block t fix it

Thanks!


Zeppelin - 241: Add REST API Setting CRUD tests

This PR adds tests for create, Update Delete settings operations using REST API.

Looks good to me!

+1, looks great, thank you for contribution!


https://api.nuget.org/v3/index.json needs "Content-Type: application/json"

Please add "Content-Type: application/json" to header, then any json filter plugin can catch this.
Now this generates a download request
curl https://api.nuget.org/v3/index.json

StatusCode        : 200
StatusDescription : OK
Content           : {123, 13, 10, 32...}
RawContent        : HTTP/1.1 200 OK
                    Access-Control-Allow-Origin: *
                    Access-Control-Expose-Headers: x-ms-request-id,Server,x-ms-version,Content-Length,Date,Transfer-Encoding
                    Content-MD5: fcCClYvV4jCDNa1yDUmTfg==
                    Vary: ...
Headers           : {[Access-Control-Allow-Origin, *], [Access-Control-Expose-Headers, x-ms-request-id,Server,x-ms-version,Content-Length,Date,Transfer-Encoding], [Content-MD5, fcCClYvV4jCDNa1yDUmTfg==], [Vary, Accept-Encoding].
                    ..}
RawContentLength  : 6070

Thanks

I was always wondering why it generated a download request and didn't just open it in the browser.
I just looked into this and noticed that we currently have Content-Type: application/ld+json marked for our index page. I think the reason we did this initially is that we use RDF to generate our JSON, so we might as well mark it as JSON-LD, which it technically is. The problem here is that nothing seems to understand application/ld+json like it should: a smart JSON filter plugin should catch this and process it the same way, but it doesn't seem like that's the case, at least with regard to the plugins I've used in the past.
An additional confusion here is that all of our other V3 resources are marked as application/json, despite also being generated using RDF and thus being in JSON-LD form. Registration index pages, registration leaf pages, and flat-container index pages are all marked as Content-Type: application/json.
I agree that we should consider changing our https://api.nuget.org/v3/index.json to be marked as Content-Type: application/json to be consistent with the rest of our resources and to be more compatible with everything else.

Discussed this some more. You should be able to tell your browser to use have a different behavior for Content-Type: application/ld+json and resolve the issue. What browser or json filter plugin are you using?

@emgarten , @joelverhagen , is there a reason to keep index.json with Content-Type: application/ld+json?

I would like to see the index use standard json content type instead of ld+json purely so I can open it in firefox.
The last comment on this mentioned it was for historical reasons: https://github.com/NuGet/NuGetGallery/issues/2663#issuecomment-246409611

I looked at this with this @scottbommarito and it looks like it's not easy to make Firefox view application/ld+json in the browser. For some reason only a specific set of content types can be handled by Firefox and there's no way to override this.
This seems like a big enough usability fail to switch to application/json.
application/ld+json is technically correct and viewers should be able to be configured to support this content type. Since Firefox can't, let's just fix it.


refactor: #13 confluence html zip to CODING

Codecov Report

Merging #17 (a99b4a5) into php (3ffa6ed) will increase coverage by 0.57%.
The diff coverage is 90.32%.

@@             Coverage Diff              @@
##                php      #17      +/-   ##
============================================
+ Coverage     89.63%   90.21%   +0.57%
- Complexity       51       54       +3
============================================
  Files             4        6       +2
  Lines           222      235      +13
============================================
+ Hits            199      212      +13
  Misses           23       23

Impacted Files
Coverage Δ

app/Commands/WithCoding.php
72.72% <72.72%> (ø)

app/Coding.php
95.23% <100.00%> (+0.50%)
:arrow_up:

app/Commands/WikiImportCommand.php
85.58% <100.00%> (+0.54%)
:arrow_up:

app/Commands/WikiUploadCommand.php
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Fix for issue #5069, where using lockOrientation breaks in firefox

Please do not update the README or Change Log, we will do this when we merge your PR.
This PR (delete as applicable)

Fixes a bug #5069

Describe the changes below:
Using game.scale.lockOrientation('portrait'); in firefox gave the error 'TypeError: 'mozLockOrientation' called on an object that does not implement interface Screen.'.
It was being caused as the method screen.lockOrientation was being stored in a variable and used. I wrote a patch that uses screen.lockOrientation directly if in firefox.

👍


Seems not to work in an isolation context (on electron-forge)

When using in secure isolation context (webPreferences: { ... 	nodeIntegration: false, 	contextIsolation: true, enableRemoteModule: false, ... } electron-forge compilation fails due to 'fs' inclusion from 'electron'.
Is there any way to make it work without breaking the isolation? When passed through the contextBridge, there is no way to chain it using pipe anymore...

I've created one that worked, based on this repo.
https://github.com/linonetwo/electron-ipc-cat


please add website in the description of this repository

https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/visual-fsharp should appear in the top description

Fixed, thanks for the report!


[Bug] 用hdfs进行还原时，提示failed to download|signature=323207|job_id=295022|error=[NOT_FOUND]failed to open file for md5sum

Search before asking

[X] I had searched in the issues and found no similar issues.

Version
2.1.0跟2.1.1都有这个问题
What's Wrong?
用hdfs进行还原时，提示failed to download|signature=323207|job_id=295022|error=[NOT_FOUND]failed to open file for md5sum。备份是在2.0.3版本上进行的，要还原到2.1.0版本跟2.1.1版本就会提示这个错误
What You Expected?
就是能够正常恢复
How to Reproduce?
No response
Anything Else?
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

the same problem

same on 2.1.2

@d378971067 Can you provide the BE log and the definition of the repository?

@d378971067 Can you provide the BE log and the definition of the repository?
hadoop version:3.3.4  apache_hdfs_broker version: doris 2.1.0 extension
be.info

apache_hdfs_broker.log

error file path

This problem has been fixed in version 2.1.3, and the relevant PR is at #33556.
@d378971067 @zh0122 @mongo360

It's probably not fixed yet. This image is a screenshot based on version 2.1.3.
@w41ter

This problem has been fixed in version 2.1.3, and the relevant PR is at #33556.
@d378971067 @zh0122 @mongo360

test fail on 2.1.3-rc06

@d378971067 So this result is produced by 2.1.3-rc06?

@d378971067 So this result is produced by 2.1.3-rc06?

yes

@d378971067 It seems that you have encountered a bug in the broker file system. In version 2.1.3, you can use the hdfs repository directly.


Styling changes (last ones from Chet), plus always show Graph/JSON tabs

Before:

After:

@EricJizbaMSFT Thanks, Chris mentioned dots, but I couldn't see them.  Will check it out.


Add in documentation for the underlying mujoco API

Related to https://github.com/JamieMair/MuJoCo.jl/issues/22.
The underlying mujoco API has some docs which are scraped from the mujoco introspect library. It may be worth documenting this in our documentation pages, along with linking to official docs.

Some of the initial work has been done in https://github.com/JamieMair/MuJoCo.jl/pull/53.

@JamieMair what did you have in mind for this? The documentation in https://github.com/JamieMair/MuJoCo.jl/pull/64 includes links to DeepMind's documentation where relevant. What extra docs would we need for the underlying C API?

I think this is great for now. I think that merging https://github.com/JamieMair/MuJoCo.jl/pull/64 should close this issue.


Should we be publishing workshops tagged "Library Carpentry"

...and if so where?
DC website lists DC workshops only
SWC website lists SWC and DC workshops

Currently the API allows anyone to peek at LC published events (https://amy.software-carpentry.org/api/v1/events/published/?tag=LC), so I'm closing this issue as not relevant to AMY.


[Feature Request] HTML-only version

Can write the code myself but just wanted someone else's opinion first
Is your feature request related to a problem? Please describe.
Mango doesn't work on basic browsers (such as the Kindle Paperwhite's built-in browser) due to a lack of JS in these browsers.
Describe the solution you'd like
An HTML-only mode that strips out all JS
Describe a small use-case for this feature request
Would make Mango more accessible to Kindle Paperwhite users and other basic browsers
Additional context
I love Mango, but have been trying to reduce screen time as it's been impacting my sleep.

If this feature isn't wanted, I'll just try to get an e-ink display and attach it to a Pi and do it that way.

Hi there! Yes I think it would be a great feature to have. Some thoughts:

Without the ability to lazy load images, the continuous mode reader doesn't make sense, and we will need a custom paged reader
I think we should have a special entry for the HTML-only mode (e.g., /html/library maybe?), and add a noscript tag to all pages to instruct users to use the HTML-only mode when their browser doesn't support JS or has it disabled

Overall I think this would be a big feature that requires substantial effort, but please feel free to initiate it and let me know if you need any help.

Without the ability to lazy load images, the continuous mode reader doesn't make sense, and we will need a custom paged reader

About that, before I open a request in relation to that: Why is that required? Some mangas are released with reaaaallly long pages so the entire chapter has like 4 images. When reading on a slower connection you keep running into not yet loaded images(same with too high res images where loading on demand can't keep up). So I'd have requested to disable the lazy loading or make it prefetch further ahead.
I don't know how browsers handle it, but why wouldn't continuous mode make sense in that case (disabled lazy loading/pure html version)?

@tr7zw Without lazy-loading the browser will have to fetch all images on that page, which increases the page load time (especially on low-power devices like e-ink readers). You can use the lazy loading attribute to achieve lazy-loading without JS, but the browser support isn't great, and I doubt that it's available in the Kindle browser.

@hkalexling But does that mean that the page is just white till all images are loaded, or will the page render and the images load as fast as they can? Because with the current implementation you can stay at the top of the page for 5 mins, scroll down a bit and nothing will be loaded since it only starts the loading once you get there. If an image takes 10 seconds to load, and I read the current image for more than 10 seconds, I'd expect not to run into unloaded images.

@tr7zw I am not entirely sure, but I think without lazy-loading the browser would attempt to load all images simultaneously instead of prioritizing the images in view. So in the continuous mode, you won't be able to start reading until all images are loaded, which can take a while.
But yes, I agree we should preload a few pages when in the continuous reader, but for the HTML-only version, maybe it's better to limit it to paged mode.


tiago_navigation: 4.0.0-1 in 'humble/distribution.yaml' [bloom]

Increasing version of package(s) in repository tiago_navigation to 4.0.0-1:

upstream repository: https://github.com/pal-robotics/tiago_navigation.git
release repository: https://github.com/pal-gbp/tiago_navigation-release.git
distro file: humble/distribution.yaml
bloom version: 0.11.2
previous version for package: null

tiago_2dnav
* Merge branch 'update_copyright' into 'humble-devel'
  Update copyright
  See merge request robots/tiago_navigation!65
* update package format
* update copyright
* Merge branch 'update_maintainers' into 'humble-devel'
  update maintainers
  See merge request robots/tiago_navigation!64
* update maintainers
* Merge branch 'linters' into 'humble-devel'
  linters
  See merge request robots/tiago_navigation!63
* linters
* First version of foxy-devel tiago_2dnav
* Contributors: Jordan Palacios, Noel Jimenez, Victor Lopez

tiago_navigation
* Merge branch 'update_copyright' into 'humble-devel'
  Update copyright
  See merge request robots/tiago_navigation!65
* update package format
* Merge branch 'update_maintainers' into 'humble-devel'
  update maintainers
  See merge request robots/tiago_navigation!64
* update maintainers
* First version of foxy-devel tiago_2dnav
* Contributors: Jordan Palacios, Noel Jimenez, Victor Lopez

Needs a rebase

Holding for sync: https://discourse.ros.org/t/preparing-for-humble-sync-and-patch-release-2022-11-21/28234


Corrupted characters in response

I found this code in HttpNodeInstanceEntryPoint.ts file. As I understand, it read and parse request stream and chunk is a byte array. We convert it to string and append to requestBodyAsString.
In utf-8 a symbol could be represented not only by a single byte, but by sequence of bytes. So, the start or end of the chunk could contain incomplete character sequence.
function readRequestBodyAsJson(request, callback) {
    let requestBodyAsString = '';
    request.on('data', chunk => { requestBodyAsString += chunk; });
    request.on('end', () => { callback(JSON.parse(requestBodyAsString)); });
}

let body = [];
request.on('data', (chunk) => {
  body.push(chunk);
}).on('end', () => {
  body = Buffer.concat(body).toString();
  // at this point, `body` has the entire request body stored in it as a string
});

This is a snippet from Node.js documentation. It does not have that issue, because converting to string happens only when complete response received.

Thanks for reporting this. Would you be interested in submitting a PR that resolves this?

@SteveSandersonMS I'd love to! Unfortunately, I'm facing the issue to build the source code. I described it in #1605


Matrix index->entity API

Fix #430

Codecov Report

Merging #431 (82069b0) into master (2224c32) will increase coverage by 0.03%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #431      +/-   ##
==========================================
+ Coverage   80.64%   80.68%   +0.03%
==========================================
  Files         145      145
  Lines       12449    12450       +1
  Branches     1681     1681
==========================================
+ Hits        10040    10045       +5
+ Misses       1895     1893       -2
+ Partials      514      512       -2

Impacted Files
Coverage Δ

Sources/AngouriMath/Convenience/MathS.cs
68.19% <100.00%> (+0.12%)
:arrow_up:

...Solvers/EquationSolver/AnalyticalEquationSolver.cs
83.33% <0.00%> (+2.08%)
:arrow_up:

...inuous/Solvers/EquationSolver/ExponentialSolver.cs
95.58% <0.00%> (+2.94%)
:arrow_up:

Continue to review full report at Codecov.

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


Spelling Mistake

The following text has a typo:
'In general, search will attempt to match text across all fields; it does not distinguish between uppercase and lowercase characters (in other words, case insensitive), and will match text placed anwhere in the field (at the beginning, end, or in the middle).'
The word 'anwhere' in the above should be replaced with 'anywhere'.

Document details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 802c5ab2-6384-9f67-586f-8de66cd361cc
Version Independent ID: 12fb39ec-1f3c-e49b-de9c-7d9d09b29fc4
Content: Sorting, Searching, and Filtering Lists - Business Central
Content Source: business-central/ui-enter-criteria-filters.md
Service: dynamics365-business-central
GitHub Login: @jswymer
Microsoft Alias: jswymer

Thanks for spotting it. The topic has been updated and will be available within one week.


Refactor the global ID generator

Following https://github.com/apache/skywalking/issues/10849, I have refactored the ID generator.
ID generate format(same with java): {instanceID}.{goid}.{timestamp}{sequence}. We bind the IDContext to each goroutine(using TLS) to reduce the global locker.
Here are simple batch marks for comparison with UUID：
goos: darwin
goarch: amd64
pkg: github.com/apache/skywalking-go/plugins/core
cpu: Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
BenchmarkGenerateID
BenchmarkGenerateID-16             	  956929	      1168 ns/op
BenchmarkGenerateIDParallels
BenchmarkGenerateIDParallels-16    	 4309476	       323.3 ns/op
BenchmarkUUID
BenchmarkUUID-16                   	 1000000	      1008 ns/op
BenchmarkUUIDParallels
BenchmarkUUIDParallels-16          	  856684	      1341 ns/op
PASS

I will do another bench mark for the agent, If there is no performance issue, I will remove the UUID dependency.

Please indicate how much is the improvement?

In the UUID default implementation, they use the global locker when generate. In the current implementation, we haven't any locker.
Based on the benchmark result (parallel), it will be about 3-4 times faster than UUID.


How do I create the following chainable functions?

I would like to be able to have a more Ruby like syntax, so being able to do the following on the "Object" would be great:
Object("one").isEqual("two") // false
Object("one").isNotEqual("two") // true
Object(false).isTrue() // false
Object(false).isFalse() // true

Is it possible to create these chainable functions? How would I do that in Sugar?

Yes! That is now possible through the use of chainables.

@andrewplummer That sounds great. I've just spend the better part of an hour trying to figure out the correct Syntax for creating such chainable functions. Can you give an example?
Right now my code looks like this:
Sugar.Object.defineStaticWithArguments
  isNotEqual: (objectOne, objectTwo) ->
    !Sugar.Object.isEqual(objectOne, objectTwo)

Sugar.Object.defineStatic
  isPresent: (object) ->
    !Sugar.Object.isEmpty(object)

  isTrue: (object) ->
    Sugar.Object.isEqual(object, true)

  isFalse: (object) ->
    Sugar.Object.isEqual(object, false)

Sugar.Object.defineInstance
  isTrueTest: (object) ->
    Sugar.Object.isEqual(object, true)

Sugar.extend()

But when I try to get if the object is true or false, then I get this error:
Object(undefined).isFalse() // Uncaught TypeError: Object(...).isFalse is not a function(…)

I know I can do this:
Sugar.Object(undefined).isTrueTest() // SugarChainable {raw: false}

But writing "Sugar.Object" seems a bit long and I can't really use it for much if I don't get back the true/false result.

You seem to have it set up correctly. When you run extend it will not extend Object.prototype by default. You can force it to do this by running:
Sugar.extend({
  objectPrototype: true
});

However this is highly discouraged as it can have lots of unintended consequences. Also, even if you do this your example still will not work as undefined is not an actual object with a prototype and so cannot have it's methods mapped.
The idea behind chainables is that they are always used through the Sugar global, so Object(undefined) isn't running through Sugar in any way (you may already know this). Calling extend will only map methods onto natives and their prototypes, nothing else.
If using Sugar.Object (or ideally new Sugar.Object) is too long you can map it to something shorter like $O, etc.
As for the result, this is intended behavior, so the result can be accessed through the .raw property. The property is intentionally short so it shouldn't add much overhead to your code. Additionally valueOf is mapped to this property so although you can't do truthy/falsy tests, if you use ==, it will unwrap and you won't have to use .raw.

Thanks for the thorough explanation. I have 2 last questions:

Can I map to "Sugar" to "S", so my function would look like this:
S.Object("foo").isEqual("bar")

Is there any way I can get back a true/false property, so I can do something like this:
Sugar.Object("Test").isEqual("sdsd") ? "true" : "false" // "false"

Yes! You can map any variable to another, right? So mapping the global (as you have) or one of it's "namespaces" (as I did above with $O) is totally valid.

Unfortunately, no. Chainables always return objects (this is what allows them to stay "chainable"), and objects are always truthy. What you're asking, however is similar to what another user proposed and lead me to this proposal. It seems to make common sense when coming from a perspective like yours that isXXX methods should NOT return chainable objects, but instead booleans, however it does mean that the statement chainable methods always return a new chainable can no longer be true, which was the starting point for this feature. The fact that you can't use standard JS control flow without unwrapping the chainables seems like a hurdle here, however, so I'm leaning toward this proposal for the next version, however it will need to be documented well, and I'll have to look over method names to make sure that it's crystal clear how this works.

To answer your question, though, for now you will need to do either:
Sugar.Object("Test").isEqual("sdsd").raw ? "true" : "false" // "false"

or
Sugar.Object("Test").isEqual("sdsd") == true ? "true" : "false" // "false"

These are 2 different ways to "unwrap" the resulting chainable.

Hmm ok. I'll be looking forward to the next version as well. If chainable functions could return true/false values, it would add a lot to the readability of the code IMO.
Thanks for the clarification.

Agreed. Can you also give the proposal a thumbs up? I'm trying to use that to gauge which proposals to focus on for the next version.

Sure thing.


Fix running MGPU gtests

Right now if I run all the gtests together (./testxgboost) on a multi-gpu machine I get an error. This is not caught by the CI since we run single-gpu and multi-gpu tests separately.

@trivialfis @hcho3

Curiously, I have been running the gtest suite over and over again in recent days.

On a multi-gpu machine? It shouldn't have worked since we short circuit nccl initialization with a single gpu: https://github.com/dmlc/xgboost/blob/master/src/collective/nccl_device_communicator.cuh#L27. So when we switch to an MGPU test, GPU 0 would be uninitialized.

Yes, 2-GPU machine.

NVM. I was using an old commit.


[v1.4.6] PPP Draft 2

Coverage remained the same at 74.224% when pulling d14464603c263456bf204885daf90c617f737c72 on kylerwsm:master into b9fb0223463b82e5a0cae61472649c312488ef34 on CS2103-AY1819S2-W17-2:master.


Default loglevel is invalid

It looks like the loglevel settings for fail2ban ceased being numeric back in 2014, so the role sets it to an invalid value by default.  The default in the role should therefore be INFO rather than 3

http://www.fail2ban.org/wiki/index.php/Commands


⚠ Bofrost.de has degraded performance

In 26bdb5d, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1375 ms

Resolved: Bofrost.de performance has improved in 5190c9f after 20 minutes.


Quickstart, table / column family admin samples

Fixes #138, #131

[ ] Tests and linter pass
[ ] Code coverage does not decrease (if any source code was changed)
[ ] Appropriate docs were updated (if necessary)

@sduskis FYI

I left some comments, but otherwise it LGTM

@kolodny: Do we need to make the linter happy before we merge this?

Sorry, just saw this. I can go ahead and make those changes I've outlined above and fix the lint errors. @jabubake Does that sound good?

@kolodny : I'm sorry I just saw this. Sound good to me, I'll add the tests soon, if you can fix the lint / other issues and merge, would be great. thank you !

Lint is fully fixed now. I'm happy with this PR. @jabubake did you want to reword anything or take another pass?

Will take a final pass today

@kolodny @sduskis Added a nested GC code sample, all good otherwise and ready to merge.


Downloading more than 999 timelapse-images

Describe the bug
First: Thanks a lot for providing this API, it saved us so much work!
The GoPro 7 Black (and I assume others too) save files in subfolders, each subfolder containing up to 999 files. When I use the downloadAll function in GoProCamera.py it only downloads the latest folder and none of the older ones. In my application I let the GoPro run for hours and create about 3000+ images and would love to download them all in one go afterwards.
Edit: This seems only to happen when taking a timelapse of 1000+ images
2nd Edit: Now I also encountered the problem with just images (not timelapse). :(
To Reproduce
Steps to reproduce the behavior:

Take more than 999 images
run GoProCamera.downloadAll('all')

Expected behavior
Downloading all images.
Desktop (please complete the following information):

OS: Windows 10
GoPro Hero 7 Black

I should note, I changed the code a bit, such that a destination-folder can be given to downloadAll. The changes exactly are:
Line 890:
def downloadAll(self, option="", prefix=''):
and Line 904:
self.downloadMedia(folder, file, custom_filename=prefix+folder+"-"+file)
nothing else was changed.

Seeing a similar issue with GoPro Hero 5 Black.
I currently have two folders on the Cam: 100GOPRO and 101GOPRO
downloadAll() only downloads the first file from each folder.


uProxy server runs in node.js

As of https://github.com/uProxy/uproxy-lib/pull/308
We now have a headless uproxy-lib setup.
It fails on making WebRTC connections because freedom-for-node lacks support at the moment.
Related to https://github.com/uProxy/uproxy/issues/587

We now have a cloud server running on Node.js! Benchmarks here:
https://github.com/uProxy/uproxy-docker/pull/96


Make support for press combinations for KeyboardManipulator class

Resolves https://github.com/Empiree/DeftSharp.Windows.Input/commit/a4b31b9d69ee2fd7ebb5f50b19b322649d50ad0b (KeyboardManipulator - Add PressCombination method)


Type definition and tests for node cson module

cson/cson.d.ts
check list

[ ] is collect naming convention?

https://www.npmjs.com/package/cson
http://bower.io/search/?q=cson
others?

[X] has a test file? (cson/cson-tests.ts or others)
[ ] pass the Travic-CI test?

@stpettersens thanks mate!

np.


Building in Microsoft Visual 2017

Building this in Microsoft Visual 2017 on windows 7 PC returns an error requiring an update to a pointer to updated SDK. This is easily fixed by simply clicking retarget solution.
Then rebuild returns an error that makes no sense seen below
Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2019	unresolved external symbol _sprintf referenced in function "public: void __thiscall CCyUSBDevice::UsbdStatusString(unsigned long,char *)" (?UsbdStatusString@CCyUSBDevice@@QAEXKPAD@Z)	rtd2660	C:\YOURFILEPATH\RTD-2660-Programmer-master\RTD Programmer\CyAPI.lib(CyAPI.obj)	1
Double clicking on this error and MV2017 cannot even find the location to correct the syntax.
control + f search of entire build for _sprintf returns no results.
How do I correct a syntax error that doesn't exist?
(Obviously change YOURFILEPATH to your file path to get to the folder)

Obviously the project is quite old and new visual studio brings new issues.
The error seems to come from the Cypress CyAPI library. You may try to get
a new version from Cypress.
~V
On Aug 8, 2017 6:05 PM, "quickquestion1"<EMAIL_ADDRESS>wrote:

Building this in Microsoft Visual 2017 on windows 7 PC returns an error
requiring an update to a pointer to updated SDK. This is easily fixed by
simply clicking retarget solution.
Then rebuild returns an error that makes no sense seen below
Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol _sprintf referenced in function
"public: void __thiscall CCyUSBDevice::UsbdStatusString(unsigned
long,char *)" (?UsbdStatusString@CCyUSBDevice@@qaexkpad@Z) rtd2660
C:\YOURFILEPATH\RTD-2660-Programmer-master\RTD Programmer\CyAPI.lib(CyAPI.obj)
1
Double clicking on this error and MV2017 cannot even find the location to
correct the syntax.
control + f search of entire build for _sprintf returns no results.
How do I correct a syntax error that doesn't exist?
(Obviously change YOURFILEPATH to your file path to get to the folder)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ghent360/RTD-2660-Programmer/issues/7, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AHxY1t9a41XfhyIvJNJyjMRnANCA1tJmks5sWQW8gaJpZM4OxeR1
.

Did download another version of the CyAPI.lib and got the same error.
When I open CyAPI.lib in microsoft visual studio it appears as an indecipherable mess of hexidecimals in two columns and a third column with what appears to be some form of c++ code in a single long string. None of it contains any sprintf.
Could you upload the version of Microsoft Visual Studio that returns no build errors or any suggestions for if not fixing at least finding the error?
Also thanks for uploading the code in the first place.

You need to link with legacy_stdio_definitions.lib and turn off ImageHasSafeExceptionHandlers

@hasaranga Linking legacy_stdio_definitions.lib worked for me! Looks like VS introduced a universal C Runtime(CRT) in 2015 that got rid of the patchwork backwards compatibility that was available before. This breaks old libraries that rely on the old CRT. Microsoft actually recommends you upgrade your library to run on the Universal CRT. This article does a good job of explaining your options:
https://docs.microsoft.com/en-us/cpp/porting/overview-of-potential-upgrade-issues-visual-cpp?view=msvc-160

Thank you. I have not compiled software for windows in 10 years.


compression with tinyPNG

Closes #411 Write a compressImage() Function using Dart #4118

Thank you so much for the PR 🤩. We're adding the hacktoberfest-accepted label to ensure this PR counts towards your Hacktoberfest contributions count. With that said, please stay active on this PR to address any comments once you receive a review. Happy Hacktoberfest! 🎃

Thanks for the amazing PR 😇 I have added small changes.
Merging the PR now 🥳


next() middleware function

All the Express middleware supports next() function. Calling this function invokes the next middleware function in the app.
I'm not sure how to currently implement it so I would like to hear suggestions / examples.
PRs are also welcome

Implemented in https://github.com/talentlessguy/tinyhttp/commit/952a6ce46374fbbf499387331b0b2e7c46649fc9


SecRequestBodyNoFilesLimit Not Working in Nginx Config

ModSecurity 3.0.8
ModSecurity-nginx v1.0.3
Nginx/1.23.2
CRS 4.0.0-rc1
Ubuntu 22.04
Greetings,
I am trying to deal with false positives and ran into an issue where users submit heavily formatted listings, but ModSecurity flagged them because the Request Body (Without Files Upload) was too large. It is not unusual for some of the listings to be over 200KB in size. I asked about it here: https://security.stackexchange.com/questions/267536/modsecurity-how-to-increase-secrequestbodylimit-for-specific-website-request-ur/267585#267585 , and thought I had a solution by writing a Nginx rule exclusion in the Nginx Virtual Host file for my website, but today I'm noticing that this rule appears to be ignored.
Users submit their full listing at the url "/add/submit.php", so I wanted to make a ModSecurity exception just for that one URL, not for the full website.
Here is what I have in my Nginx config:
server {
    server_name www.*****.com;
   ....

    location /add/submit.php {
      modsecurity_rules 'SecRequestBodyNoFilesLimit 300000';
    }

    ....

Here is the ModSecurity audit log details:
---27vkMc5I---A--
[18/Jan/2023:23:02:05 +0000]<PHONE_NUMBER>96.435482 ***.***.***.*** 50358 ***.***.***.*** 443
---27vkMc5I---B--
POST /add/submit.php HTTP/2.0
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36
sec-fetch-site: same-origin
content-type: application/x-www-form-urlencoded
origin: https://www.******.com
sec-ch-ua-mobile: ?0
upgrade-insecure-requests: 1
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
cache-control: max-age=0
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-fetch-user: ?1
sec-ch-ua-platform: "Windows"
referer: https://www.*****.com/
content-length: 217490
host: www.*****.com
sec-fetch-mode: navigate
sec-fetch-dest: document
accept-encoding: gzip, deflate, br
cookie: *****

---27vkMc5I---F--
HTTP/2.0 302
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: public
Location: /item/*********/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
X-XSS-Protection: 1; mode=block
Pragma: no-cache
Connection: close
Content-Type: text/html; charset=UTF-8
Date: Wed, 18 Jan 2023 23:02:06 GMT
Server: nginx
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin
Permissions-Policy: geolocation=(),midi=(),sync-xhr=(),microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=(self),payment=()

---27vkMc5I---H--
ModSecurity: Warning. Matched "Operator `Eq' with parameter `0' against variable `REQBODY_ERROR' (Value: `1' ) [file "/etc/nginx/modsec/modsecurity.conf"] [line "75"] [id "200002"] [rev ""] [msg "Failed to parse request body."] [data "Request body excluding files is bigger than the maximum expected."] [severity "2"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "***.***.***.***"] [uri "/add/submit.php"] [unique_id "167408292596.435482"] [ref "v0,1"]

According to the log, it looks like the POST request content length is "217490", which should be allowed if SecRequestBodyNoFilesLimit is set to 300000.
I was wondering if someone could take a look at this and let me know if I'm writing the rule wrong or if this is some kind of bug related to Nginx and ModSecurity.
Thanks

Hello @peppies ,
There are at least a couple of possibilities.
One is that the configuration setting that you have supplied is being overridden by a different configuration setting elsewhere in your setup. You could try removing the one that you have specified above and see if there is any change.
Another possibility (although probably less likely) is that the request body is bigger than what is indicated by the request header. One way to check this is with a rule like:
SecRule REQUEST_BODY "@rx .*" "id:9001,phase:2,t:length,log,logdata:'request body size =%{MATCHED_VAR}'"

Hello @peppies ,
Just FYI that a recent change has been made to v3/master ( at 3311dda0e55d8c6e630a78fd83337d9d60a64f8a ), such that, when the limit is exceeded, the associated debug log message will output the value of the limit that was used for the check. This might help you identify if it's the first possibility that I mentioned in the previous comment.


Optional persistence in generic_thermostat

Description:
Generic thermostat can, optionally, hold target_temp and state if changed in UI
Pull request in home-assistant.github.io with documentation (if applicable): home-assistant/home-assistant.github.io#4003
Example entry for configuration.yaml (if applicable):
- platform: generic_thermostat
  name: Test
  heater: switch.Test
  target_sensor: sensor.test
  min_temp: 4
  max_temp: 60
  target_temp: 20
  min_cycle_duration:
    seconds: 1
  keep_alive:
    minutes: 5
  cold_tolerance: 0.5
  hot_tolerance: 0.5
  persistence: both

Checklist:
If user exposed functionality or configuration variables are added/changed:

[x] Documentation added/updated in home-assistant.github.io

If the code communicates with devices, web services, or third-party tools:

[x] Local tests with tox run successfully. Your PR cannot be merged unless tests pass

Sorry, I think I pushed my PR literally a minute before you pushed yours. If you want, you can certainly rebase on top of the current dev branch - since my PR doesn't restore the operation mode, it would actually add functionality. However, I don't think that this should be configurable. If a user doesn't want the target temperature to be restored on startup, he / she can set the target_temperature option.

My patch work even if target_temperature is set: if there are no prevous states temperature is set from configuration.

@ziotibia81 Then you should change that. :wink: The usual semantics with initial values being set in the configuration is: Restore the state only if no such value is set.

I agree with @tinloaf, I don't think it should be configurable

Ok, but we have to restore also 'operation mode' (configurabile if restore or not,  or with initial value). Before my patch at restat the state is always auto. So if user want turn off thermostat and be sure that sta off at restart he have to cange setpoint. Is more confortable to change state in off.

Yes, I agree, we should also restore the operation mode. And if you want to do it 100 percent, you could add an optional initial_operation_mode config, which overrides the restore value if set.

Ok! I will work on it tomorrow or Monday.

Outdated by #10690


Set SPACE REFERENCE AOI Assets

Is your feature request related to a problem? Please describe.
currently in step0_processor_s2_sr.py  (https://github.com/swisstopo/topo-satromo/blob/step0/step0_processors/step0_processor_s2_sr.py) and all step0_processor_<>_<>.py SPACE REFERENCE AOI Assets are not in swisstopo owned  GEE Account
Describe the solution you'd like
upload the SPACE REFERENCE AOI assets to NPOC account

[x] aoi_CH
[x] aoi_CH_simplified
[x]  S2_gri
[x] DEM_sa3d
[x] lakes
[x] rivers
[x] replace in JS and py code

(search for all users/wulf/SATROMO/  locations)

missing:
copy

[ ] s2 TOA
[ ] s2 SR

to PROD
/ users/satromo/prod/step0/Sentinel-2
and replace
" users/wulf/SATROMO/"
with
"projects/satromo-prod/assets/res/"

Sentinel-2 scripts also updated for both python and JavaScript


Is security scheme value lowercase or case-insensitive?

The scheme field of the Security Scheme Object is defined as follows:

The name of the HTTP Authorization scheme to be used in the Authorization header as defined in RFC7235.

and subsequent examples use  scheme: basic and scheme: bearer - with lowercase scheme names.
However, the Authentication Scheme Registry defines the scheme names starting with an uppercase letter:

Basic
Bearer
Digest
...

Could you please clarify if the scheme value must be lowercase, or if both scheme: basic (as in the current examples) and scheme: Basic (as in the Auth Scheme Registry) are valid and equivalent?

@hkosova As per RFC7235 auth scheme is case insensitive:

2.1.  Challenge and Response
HTTP provides a simple challenge-response authentication framework
that can be used by a server to challenge a client request and by a
client to provide authentication information.  It uses a case-
insensitive token as a means to identify the authentication scheme,
followed by additional information necessary for achieving

https://tools.ietf.org/html/rfc7235#section-2.1


Please, add support for Safari 13

After updating Safari to version 13, the JSONView extension was removed as incompatible.
Could you please add support for Safari 13?
Thank you!

It looks like JSONView is dead, unfortunately.
As the workaround, I've found and used another Safari extension - "JSON Peep for Safari":
https://apps.apple.com/ua/app/json-peep-for-safari/id1458969831
Seems like a good alternative 👍


Error in rendering result

Played with such object:
get `:test1/ set ([] qqq:1.1 2.2 3.3 4.4 5.5; c:{ ([] a:x+til 3; b: til 3)}  each til 5)
Got the following Exception:
Error occurred during query execution: kx.c$K4Exception: type kx.c$K4Exception: type
at kx.c.k(c.java:678)
at kx.c$1.run(c.java:138)
at java.lang.Thread.run(Thread.java:748)

The issue exist in the latest c.java:
https://github.com/KxSystems/javakdb/issues/51

Another way to have error (probably it is the same problem):
:sp/ set ([]a:1 2 3;b:10 20 30) k)+(ab)!/:.Q.dd[:.;:.],`sp


How to get the pose of  image？

I would like to further develop some features such as 3D reconstruction work, where do I quickly get the pose of the image?

Hi, sure, this could help https://github.com/3DOM-FBK/COLMAP_SLAM/issues/3

I understand. Still, can you tell me if the loc.txt file contains information in the ./out  folder that is the global pose of keyframes? Its format seems to be relatively better understood compared to images.txt (which protects so much information that I can't understand it by reading).this is my output in images.txt information:
Uploading images.txt…


[5.9] Move the references setting back to the DocTopic component

Explanation: Fixes a bug with in Safari where links in bullet points were miss-aligned
Scope: DocumentationTopic pages
Issue: rdar://109856608
Risk: Medium
Testing: Manual and automated testing in all modes
Reviewer: @mportiz08
Original PR: #693

@swift-ci test

@swift-ci test


Missing resource files

It appears that some resource files, such as index.html, are missing.

Closing via 11208039eddcc7758d0bbe9eafeb4e50e53f124b


Are there plans to be Mo' Bends compatible?

Do you plan to be compatible with the latest version of Mo' Bends?

I fixed a Mo' Bends crash a while ago, however, I don't play with the mod so some more specific reproduction steps would be great if there's an incompatibility I'm not aware of.

I've tested it in-game and it's fully compatible, I turned off the problem.

In the first person any destruction of the square looks normal, if the second person or third person, it is the head has been in "NO"

And the sword has a problem too!

https://user-images.githubusercontent.com/83713575/155938376-e59d10d4-ffc6-4a96-8250-8ccf0035eed6.mp4
videos


chore(package): update semantic-release to version 7.0.2

Codecov Report

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

@@           Coverage Diff           @@
##           master     #129   +/-   ##
=======================================
  Coverage   58.33%   58.33%
=======================================
  Files           1        1
  Lines          12       12
=======================================
  Hits            7        7
  Misses          5        5

Continue to review full report at Codecov.

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