Update ci container

Description
Fixes to the underlying CI container to incorporate qhull as well as adding vader to the ci workflow. (both are requirements for building saber).
This change ought to be capable of getting saber built and tested. So far my workflow run on this only gives me a failure on the coding norms test:
The following tests FAILED:
	  1 - test_orcajedi_coding_norms (Failed)
Errors while running CTest

Looks good thanks for sorting this. (I'll admit the coding norms are my fault which I'll sort).


Improve template

This PR improves the template for the generated commands. The timestamp is removed to avoid unnecessary changes when (re)generating the files.
Unfortunately, there are still a few (annoying) trailing tabs in the commands with flags.

Thanks for this, I have pushed updates for test cases, if format is looking okay I will update more.


Keep output signature of the test fn on #[wasm_bindgen_test]

Motivation
I would like to use ? in my wasm_bindgen tests
Proposed Solution
#[wasm_bindgen_test]
fn capture_keypress() -> Result<(), JsValue> {
   ....
   let event = document.create_event("KeyboardEvent")?;
   ...
    Ok(())
}

should correctly work, now I"m getting
error[E0271]: type mismatch resolving `<fn() -> std::result::Result<(), wasm_bindgen::JsValue> {capture_keypress} as std::ops::FnOnce<()>>::Output == ()`
 --> lib/system/web/tests/keyboard_engine.rs:9:1
  |
9 | #[wasm_bindgen_test]
  | ^^^^^^^^^^^^^^^^^^^^ expected enum `std::result::Result`, found ()
  |
  = note: expected type `std::result::Result<(), wasm_bindgen::JsValue>`
             found type `()`

Thanks for the report! Support this seems pretty reasonable to me!
Right now the #[wasm_bindgen_test] macro is pretty simple, but we can probably support this with some trait trickery.

Resolved by #3051.


Update readme to clarify CentOS issue

Closes #96

cc @justinribeiro

I think the clarification is helpful. @samuelli Looks good to me.


Does not work with the newer Diffusers

Lcleaner needs to be updated to work with newer dependencies. It is stopping ComfUI nodes from functioning.
Model
lama-cleaner 1.2.5 requires diffusers==0.16.1, but you have diffusers 0.25.1 which is incompatible.
Describe the bug
lama-cleaner 1.2.5 requires diffusers==0.16.1, but you have diffusers 0.25.1 which is incompatible.
System Info
Software version used

lama-cleaner:    1.2.5
torch:   2.1.2+cu121
CUDA: 21.2

Lama-cleaner has been renamed to iopaint in the new version. I suggest switching to iopaint, which uses the latest diffusers.


use in separate thread

hello again.
with the old version for of 0.8.4 i was able to change your addon to also work inside a thread other than the main one.
basically did this in multiple locations
if(bUseInThread) img->setUseTexture(false);

but your new addon does this
img = std::make_shared<ofImage>();

which i think ignore my setUseTexture call.
do you think there is a way to have this run in a separate thread?

ok. taking out the following line made it work.
img = std::make_shared<ofImage>();

but i am not sure how stable it will be.
what do you think?

You should be able to just call IPVideoGrabber::setUseTexture() on your instance to disable texture use for non-main-thread use.

thanks.
just tried
      ipCamGrabber = std::make_shared<Video::IPVideoGrabber>();
    ipCamGrabber->setUseTexture(false);

    ipCamGrabber->setUsername(cam_user);
    ipCamGrabber->setPassword(cam_password);

but it prints out
[ error ] IPVideoGrabber: update() may not be called from outside the main thread.

because your addon checks
if(!isMainThread())

Aha.  That's something that would be pretty easy to fix.

great.
i tried by commenting out code some code and it did make it work inside a separate thread. but the video got pretty slow.


ERROR in Maximum call stack size exceeded : Feature module circular dependency

Bug Report or Feature Request (mark with an x)
- [X] bug report -> please search issues before submitting
- [ ] feature request

Versions.

@angular/cli: 1.0.0-rc.2
node: 6.10.0
os: linux x64
@angular/common: 2.4.10
@angular/compiler: 2.4.10
@angular/core: 2.4.10
@angular/forms: 2.4.10
@angular/http: 2.4.10
@angular/platform-browser: 2.4.10
@angular/platform-browser-dynamic: 2.4.10
@angular/router: 3.4.10
@angular/cli: 1.0.0-rc.2
@angular/compiler-cli: 2.4.10

Repro steps.

STEPS TO REPRODUCE
See git repo
https://github.com/vaibhavbparikh/circular-routes
The log given by the failure.

** NG Live Development Server is running on http://localhost:4200 **
Hash: f669143e24ec08ff9586
Time: 23223ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 232 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 332 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 304 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 5.64 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
ERROR in Maximum call stack size exceeded
webpack: Failed to compile.

However when I do any changes in file and save it again, angular-cli compiles it again and it runs fine then.
Desired functionality.

This behaviour shall not create cyclic dependency, there should be mechanism to detect this and break.
Either it shall not compile at all or it shall not throw error at first compile.
** USE CASE **

I have 3 Feature modules in the application. Each Feature modules contains 3 or more sub feature modules with their own components and specially routes with router module.
Now consider below scenario.
I have modules as below.

Feature 1

Feature1Sub Feature 1
Feature1Sub Feature 2

Feature 2

Feature2Sub Feature 1
Feature2Sub Feature 2

Feature 3

Feature3Sub Feature 1
Feature3Sub Feature 2

Now Consider below flow.
I am loading Feature 1 -> Feature1Sub Feature 1. I want to load Feature2Sub Feature 1 directly from Feature1Sub Feature 1. Without loading whole Feature 2 module. Also, I need to maintain navigation flow with back button.
So I will need to write routes and load that module with loadchildren feature in module of Feature1Sub Feature 1.
Same way I want to load Feature1Sub Feature 1 directly from Feature2SubFeature 1 without loading whole Feature 2 module. So again I will need to write routes in Feature1Sub Feature 1 module.

As a complex and large application, there might be need to create flow where two or more modules needs each other with routing.
Mention any other details that might be useful.

https://github.com/angular/angular-cli/issues/5427
This is similar issue but it is scenario is different.

@sumitarora any tentative timeline for this issue?

I've been getting this error too on<EMAIL_ADDRESS>Uncaught RangeError: Maximum call stack size exceeded
    at http://localhost:9000/portal/assets/dist/vendor.bundle.js:124400:56
    at Array.forEach (native)
    at DirectiveResolver._mergeWithPropertyMetadata (http://localhost:9000/portal/assets/dist/vendor.bundle.js:124400:39)
    at DirectiveResolver.resolve (http://localhost:9000/portal/assets/dist/vendor.bundle.js:124381:29)
    at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (http://localhost:9000/portal/assets/dist/vendor.bundle.js:125095:64)
    at CompileMetadataResolver._getEntryComponentMetadata (http://localhost:9000/portal/assets/dist/vendor.bundle.js:125804:45)
    at http://localhost:9000/portal/assets/dist/vendor.bundle.js:125131:59
    at Array.map (native)
    at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (http://localhost:9000/portal/assets/dist/vendor.bundle.js:125131:22)
    at CompileMetadataResolver._getEntryComponentMetadata (http://localhost:9000/portal/assets/dist/vendor.bundle.js:125804:45)

@mikeumus Can you share more details about how you are getting this error?

Windows 7 Pro
Angular 4.1.0
Angular CLI 1.0.5
The project still runs fine in Angular 2.4 / CLI 1.0.0-rc.2
Max exceed error in browser with dev build ng build
Max exceed in cli terminal with prod/AoT build.

I am also having these problem with latest versions, I also have a module referencing it self:
Windows 10 Pro (Creators Update)
Node 6.10.3
Npm 3.10.10
Angular 4.1.3
Angular CLI 1.1.0
The weird thing is that when I use watch mode and save a file it builds successfully

I have the same problem. Compiling is ok.
angular-cli: 1.0.0-beta.28.3
node: 6.11.0
os: darwin x64
** NG Live Development Server is running on http://localhost:4200. **
10% building modules 6/9 modules 3 active ...ode_modules/style-loader/addStyles.jswebpack: wait until bundle finished: /
Hash: 9d419dcdcaa3b2128c8b
Time: 9348ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.map (polyfills) 232 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.map (main) 5.39 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.map (styles) 9.71 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.map (vendor) 2.63 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
Error: Error in ./SimpleFormComponent class SimpleFormComponent - inline template:2:8 caused by: Maximum call stack size exceeded
at ViewWrappedError.ZoneAwareError (http://localhost:4200/polyfills.bundle.js:6871:33)

Still happening on<EMAIL_ADDRESS>

@mikeumus even after removing the circular dependencies?

It is also happening to me, I also tried to activate the show dependencies flag which reported that it does not exist.

I resolved this by renaming one of my modules.  I thought if it was in another directory it would be ok to have the same name,... guess not.

@vaibhavbparikh  @filipesilva  The lazy loaded or feature module must have a route declared.
app.routing.ts -->  path="lazy" loadchildren="../lazy/lazy.module#LazyModule"
inside Lazy Module --> path=' ' component="lazyParentComponent"
path='child' loadChildren='../child/child.module#childModule
If we skip routing in lazy module or don`t give path to when lazy module is loaded it gives error

the ERROR in Maximum call stack size exceeded  happens actually when you have some  infinite loop in your code.
I had the same problem with my routes.
Scenario:
i have a lazyloadmodule that does not bind any component to the view -->
{
        path: 'home',
        loadChildren: './home#HomeModule',
        pathMatch: 'full'
    },

##Before: in HomeModule -->
@NgModule({
    imports: [

        CommonModule
    ],
    declarations: [HomeComponent]
})
export class HomeModule {
}

##After: (Solution) in HomeModule -->
@NgModule({
    imports: [
        RouterModule.forChild([
            {path: '', component: HomeComponent, pathMatch: 'full'}
        ]),
        CommonModule
    ],
    declarations: [HomeComponent]
})
export class HomeModule {
}

i hope that could helps someone

in angular5 and cli 1.5 this is working without problems!

Still happening on 1.5.0, I've got a PageModule which reference itself in it's routing. It works if I remove the circular dependency, start the app and then add it again. But not if I stop the server and start it again with the circular dependency already there. How can I solve this?

are you using Angular 5? It works for me (I have a self reference too) since I upgraded to Angular 5.0.1 (I upgraded it alongside with CLI to 1.5.0 and Material to 5.0.0-rc0)
I believe this is due to the new compile-cli from angular

In my situation it was because feature module was not importing its child routes.
This solved my issue.

In my situation, this issue occurred because same name of two components.

In my case, the changes were not reflecting in the browser. I had to save lazyModule and lazyRoutingModule again :|


Adding NodeBots writeup

ace.  Have we got any good pictures for it?  Either one nice one across the top, or some embedded tweets in there.  Dunno if we could give the sponsors more of a mention too - logos?

:+1: agree some photos would be nice

Great write-up @robshep! I know Sarah took a few photos, and you can embed any of my videos if you want :)

Completely agree about photos/tweets, @benfoxall, @AverageMarcus, @danielthepope if anyone could add a few in to this PR that would be great. I'm quite short on time this week and we want to get this post out relatively soon.
@benfoxall if we add sponsor logos it might be a bit weird because this is a write-up by a member so it doesn't have to be 'on-message'. This post still sits just next to the event notification post. Adding sponsor logos feels a bit false, but don't mind too much – if you're still keen could you add them to this PR?

I would have done last night, but I was busy upgrading downgrading my laptop to Windows 10.
Also how do you embed a tweet in markdown?

Added a few images and links to mine/Dans writeup.
@spikeheap / @benfoxall - If you know of any other writeups from the day do you want to add them?

I don't have push access to the branch :( Could someone add a link to my video on line 35 please? Or even better, could that be embedded? @AverageMarcus how do you embed tweets in your blog?
[light following](https://twitter.com/danielthepope/status/624969982934392832)

@danielthepope Yeah, I do it a lot on my blog. I have a little Jekyll plugin that handles it. If it's something we're gonna do often I could include it in JS Oxford too.
Not sure when I'll get the time though - parents visiting tonight, birthday tomorrow, sleeping Sunday, traveling to Bruges on Monday.

traveling to Bruges on Monday.

:scream:
@AverageMarcus Did you kill someone and need to flee the country 'til the heat dies down? I can't think of any other reason for visiting Bruges. Marcus, please reconsider... you're too vital a part of the JSOxford community to have dealings with dwarves in hellish Belgian cities.

@richdouglasevans My robot got loose and killed a whole bunch of people. Think I might need a few days away to rest from all the work burying bodies.

Could @benfoxall or @spikeheap merge this now please?

:+1: cheers everyone!


docs: auto release version in docs/conf.py

use correct release version as specified in pyproject.toml - similar to solution in PR #6
see also:

https://stackoverflow.com/questions/67085041/how-to-specify-version-in-only-one-place-when-using-pyproject-toml/67097076#67097076 - many thanks!
https://docs.python.org/3/library/importlib.metadata.html

https://pretty-toml-sort--7.org.readthedocs.build/7/ - seems to show correct version now


Build fails for master branch

Go build fails even if I create the workaround for #146 and created required jimmidyson/minishift
 $ go build
# github.com/jimmidyson/minishift/pkg/minikube/cluster
../../jimmidyson/minishift/pkg/minikube/cluster/openshift_caching.go:42: undefined: Asset

@LalatenduMohanty You need to run make build - it's not go gettable as it does some build time generation (embedding binary assets) that require separate build step right now.

@jimmidyson My understanding was go build should work always even if we have Makefile for the project.

cc @hferentschik

Your understanding isn't quite right. There are many, many examples of non go buildable projects, this is just one of them.

You need to run make build - it's not go gettable as it does some build time generation (embedding binary assets) that require separate build step right now.

@jimmidyson OOI, Which assets are getting included? Can you point me to the code

Your understanding isn't quite right. There are many, many examples of non go buildable projects, this is just one of them.

I think it is enough to make sure to run 'make' once, after that go build works. I think this is essential, since otherwise IDE integration gets problematic.
@LalatenduMohanty, can you run make once and then go build?

See https://github.com/MiniShift/minishift/blob/master/Makefile#L78-L79
Personally I just run make every time... it handles updating assets as required.

Once we decide whether we're going to embed the OpenShift binary in MiniShift binary (I don't think we should any more if we're going oc cluster up) then we can remove this build step.

Right, so go-bindata is used to embed the openshift binary - https://github.com/MiniShift/minishift/blob/master/Makefile#L78
This won't be required anymore once we use cluster up. For now we should be good.

See also issues #151

@jimmidyson @hferentschik make followed by go build does not fix the issue. It seems make is completing the build process and creating a minishift binary at the end.
Also make build fails as there is no rule in the Makefile for make build.
$ make
mkdir -p /Users/lmohanty/code/gocode/src/github.com/MiniShift/minishift/_gopath/src/github.com/jimmidyson
ln -s -f /Users/lmohanty/code/gocode/src/github.com/MiniShift/minishift /Users/lmohanty/code/gocode/src/github.com/MiniShift/minishift/_gopath/src/github.com/jimmidyson
mkdir out 2>/dev/null || true
cd /Users/lmohanty/code/gocode/src/github.com/MiniShift/minishift/_gopath/src/github.com/jimmidyson/minishift && go run hack/get_openshift.go v1.3.1
Downloading OpenShift v1.3.1
 59.49 MB / 59.49 MB [==========================================================================================================================================================] 100.00% 0sDownloading OpenShift v1.3.1 checksums
 0 B / 947 B [---------------------------------------------------------------------------------------------------------------------------------------------------------------------]   0.00%
 947 B / 947 B [================================================================================================================================================================] 100.00% 0s
GOBIN=/Users/lmohanty/code/gocode/src/github.com/MiniShift/minishift/_gopath/bin go get github.com/jteeuwen/go-bindata/...
/Users/lmohanty/code/gocode/src/github.com/MiniShift/minishift/_gopath/bin/go-bindata -nomemcopy -o pkg/minikube/cluster/assets.go -pkg cluster ./out/openshift
CGO_ENABLED=0 GOARCH=amd64 GOOS=darwin go build --installsuffix cgo -ldflags="-X github.com/jimmidyson/minishift/pkg/version.version=0.9.0 -X github.com/jimmidyson/minishift/pkg/version.openshiftVersion=v1.3.1 -s -w -extldflags '-static'" -o ./out/minishift-darwin-amd64 ./cmd/minikube
cp ./out/minishift-darwin-amd64 /Users/lmohanty/code/gocode/bin/minishift

Lalatendus-MacBook-Pro:minishift lmohanty$ go build
# github.com/jimmidyson/minishift/pkg/minikube/cluster
../../jimmidyson/minishift/pkg/minikube/cluster/openshift_caching.go:42: undefined: Asset

make build also returning error as there is no rule in Makefile for it.

As I said above:

Personally I just run make every time... it handles updating assets as required.

So it seems there is no standard way to deal of these kind of things.  So we should document the workflow we are following (even contribute it back to minikube).

@LalatenduMohanty after doing #152 I can build with GOPATH=pwd/_gopath make


Pass Config as processArg to add new config options

It would be nice as a processor/mixin developer to be able to add additional config options (such as a custom matchMedia-method for server-side vendor prefixing).
Best Regards,
David

Hmm yeah, this sounds quite convincing. Could be quite useful for any kind of processor/mixin that needs additional settings.
You may send a pull request if you considered adding that on your own.
Greets, Robin!

Done, created PR ready to merge.

Awesome! Thanks again


Implement clawback of  ALL Osmo and Ion at end of claim period (Prop 32)

This was requested by governance in the successful passing of Proposal 32
https://www.mintscan.io/osmosis/proposals/32
Should this happen automatically on-chain or during an upgrade?

Closing in favor of #592


What are the XP rates for different actions?

I am having trouble finding the xp rates for various actions (e.g. mining a tree vs. a rock, killing a small vs big biter, etc.) - how can I figure this out?
Thanks

The rates are defined here:
For mining:
https://github.com/Gerkiz/RPG/blob/447d6ad766c9443b57e95c496bfaede65f408831/rpg/main.lua#L620
Biters:
https://github.com/Gerkiz/RPG/blob/447d6ad766c9443b57e95c496bfaede65f408831/rpg/main.lua#L267


[$2000] When copy&paste multiple messages line breaks aren't maintained

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open app
Copy a message with multiple line breaks
Paste into another chat

Steps 2

Send 3 separate messages
Copy all 3 messages
Paste in compose box

Expected Result:
Line breaks should be maintained. The three messages would show on three lines
Actual Result:
Line breaks are not maintained. The three messages are on one line.
Workaround:
Unknown.
Platform:

Where is this issue occurring?

Web
iOS
Android
Desktop App
Mobile Web

Version Number: 1.1.30-3
Reproducible in staging?: Y
Reproducible in production?: Y
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
Related to https://github.com/Expensify/App/issues/5142

Expensify/Expensify Issue URL:
Issue reported by:  @mallenexpensify
Slack conversation: https://expensify.slack.com/archives/C01GTK53T8Q/p1642095778439500
View all open jobs on GitHub

Triggered auto assignment to @roryabraham (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

Triggered auto assignment to @kadiealexander (External), see https://stackoverflow.com/c/expensify/questions/8582 for more details.

cc @kursat since you worked on https://github.com/Expensify/App/issues/5142
In case you wanted to work on this

@kursat Hey Kursat! Just looping back to this issue https://github.com/Expensify/App/pull/6732, could you comment some additional context where data-testID comes from and what significance it serves?

What other purpose does data-testId serve? Because this selectionScrapper functionality seems to have been implemented recently, and I can't find the occurrence of this attribute elsewhere.

I too am trying to figure out where this comes from. It seems like it might be an implementation detail from either react-native-render-html or react-native-web 🤔
If that's the case, I think we need to decouple the SelectionScraper implementation from the data-testid attribute and instead make it reliant upon something we set explicitly in our app. I am still trying to understand all the implementation details of the SelectionScraper library, but it seems like at a high level it:

Uses the Selection Web API and then, for each Range in the selection, finds the closest div tag with the data-testid attribute. Aggregate all those results under a single div.

This part seems like it's dependent upon low-level implementation details of react-native-web and is very unclear to me.

Takes the result of the previous step and parses it using htmlparser2
Takes the result of the previous step, and recursively (for the dom tree parsed in the previous step) transform any div tags with the data-testid attribute to the actual tag specified in the attribute.

There is a comment here that alludes to that, but unless I'm mistaken this transform actually happens in a separate function here.
After each time we include a custom <comment> tag, we insert a
 here.

"Re-render" the transformed html tree using dom-serializer here

This doesn't actually render anything, but instead just simulates a render and returns the resultant html as a string.

Parse the html from the previous step to mark down using our own ExpensiMark library.

I have several thoughts about how this could all be simplified/cleaned up, but first I want to confirm that my high-level understanding of this is correct. @kursat Any comments?

Posted to upwork: https://www.upwork.com/jobs/~0104b0a207be0dbbcb

Triggered auto assignment to Contributor-plus team member for initial proposal review - @rushatgabhane (Exported)

Current assignee @roryabraham is eligible for the Exported assigner, not assigning anyone new.

We can enclose the decoded HTML for the single line messages in a div with the data-testid passed explicitly as comment. The id gets attached to the DOM element and parsing is done accordingly.

Hmm I think that'll lead to an extra new line at the end of copied text.
Copying a single line of text will have a new line, which isn't ideal.

Hey @thienlnam, data-testid is added by react-native-render-html.
@roryabraham all steps are correct.
@sig5's proposal looks like a workaround to me. So I am trying to find a better solution for this for a couple days. @roryabraham  If I can be able to find a better solution, we can also implement your improvement ideas.

If I can be able to find a better solution, we can also implement your improvement ideas.

@kursat any updates on this one? Thanks!

Hey @rushatgabhane, I couldn't find enough time to find a proper solution yet. Please let me work some more this weekend. Hopefully, I will send a proposal on Monday.

@roryabraham should this job be doubled? I know @kursat said they're working on it but that shouldn't be a reason to not double because anyone can propose a solution and be hired

Yep, let's double this one.

Doubled price to $500 - https://www.upwork.com/jobs/~0104b0a207be0dbbcb

No new proposals here?

Doubled price to $1000 - https://www.upwork.com/jobs/~0104b0a207be0dbbcb

No new proposals here?

Nope.
@kursat please let us know if you have any updates, thanks ^^

hello, I was looking in the code trying to fix it but I could not find where the chat room fragment is located I found "copytexttoclipboard.js" but it seems like it had nothing to do with this am I right please correct me thank you!

it's related to https://github.com/Expensify/App/issues/7644#issuecomment-1046210899
@rushatgabhane  when we copy we parse the copy HTML to markdown so we again use this function
https://github.com/Expensify/expensify-common/blob/main/lib/ExpensiMark.js#L197
which have some issues so I want to add these lines to support the correct copy here.
pre : inputString
+.replaceAll("

","").replaceAll("

","").replaceAll('

', '
')
.replace('

', '
').replace('

', '
')
.replace(SLACK_SPAN_NEW_LINE_TAG + SLACK_SPAN_NEW_LINE_TAG, '

').replace(SLACK_SPAN_NEW_LINE_TAG, '

')

https://user-images.githubusercontent.com/21364901/154840470-eb1d97e8-0520-4afd-a747-ff31f76b7f49.mov

hello me too I was checking #3983 (https://github.com/Expensify/App/issues/3983)
it has to do with  html to markdown parsing :)

@ahmdshrif since you're modifying the same rule in #7644,
could you please post an updated proposal which combines both for better clarity?

@rushatgabhane  this is work for both.
 pre: inputString => inputString
+.replaceAll("

","").replaceAll("

","").replaceAll('

', '
').replaceAll('
', '
')
.replace('

', '
').replace('

', '
')
.replace(SLACK_SPAN_NEW_LINE_TAG + SLACK_SPAN_NEW_LINE_TAG, '

').replace(SLACK_SPAN_NEW_LINE_TAG, '

'),

@ahmdshrif visit this file and try copying these lines.
https://github.com/Expensify/App/blob/403fc28984e9d96f3127257a3dc3ac6e66a75cd6/src/components/TextInputFocusable/index.js#L14-L16
I'm getting 2 line breaks instead of 1.
    maxLines: PropTypes.number,
<-- line break
<-- line break
    /** The default value of the comment box */
    defaultValue: PropTypes.string,

👋  should the price of this job double again today @kadiealexander ?

@michaelhaxhiu Our engineers have advised not to double the price yet in this instance. :)

@ahmdshrif it seems like you're pretty close to the core issue here, but we're just lacking a complete proposal including the context for your changes. Why would we have double div tags, and why would we remove those from the markdown?
Furthermore, it looks like your solution preserves only one newline, but not messages that have multiple newlines in a row.

I thought this one is solved may you clarify for me what is still needed please ?

my proposal handle both newline messages that have multiple newlines in a row. and. but I will do some changes that are will work better for this issue. I am still working on optimizing the code block issue.
the reason here when we map HTML to markdown we assume the new line only happens if we use the
 tag ond some few tags.
but on our case here the new line is HTML use div instead of br
but we can't map any div to a new line . for example that's what we have when we copy the  4 message

line1

line2

line3

line4

lot of div and if we map the close div as new line will have many extralines between message .
so we just need to map the dev that have text between open and close tags to new line .
for example we just will map

line1

line1

my proposal handle both newline messages that have multiple newlines in a row. and. but I will do some changes that are will work better for this issue. I am still working on optimizing the code block issue.
the reason here when we map HTML to markdown we assume the new line only happens if we use the
 tag ond some few tags.
but on our case here the new line is HTML use div instead of br
but we can't map any div to a new line . for example that's what we have when we copy the  4 message

line1

line2

line3

line4

lot of div and if we map the close div as new line will have many extralines between message .
so we just need to map the dev that have text between open and close tags to new line .
for example we just will map

line1

line2

line3

also will not map

line4

to new line because this will give extra line at the end .
also will ignore all other div tags
my suggestion here is to delete any empty div inputString.replaceAll('', '')
and then map only the div that have open div next not it to new line .
.replaceAll('','')
I test this on many cases and work fine
so the final change here will be
 pre: inputString => inputString
+.replaceAll("

","").replaceAll("

","").replaceAll('

', '
').replaceAll('
', '
')
.replace('

', '
').replace('

', '
')
.replace(SLACK_SPAN_NEW_LINE_TAG + SLACK_SPAN_NEW_LINE_TAG, '

').replace(SLACK_SPAN_NEW_LINE_TAG, '

'),

just work on this to optimize it with regex
this part is what we need only to add to fix this one
.replaceAll(/<\/div>(<[^/])/g, "
$1")
this regex map any close div that is not in the end to br
and that is the same as what I do before but this is perfect and handles the case on copy code from VSCode.
and that's the final proposal that fixes both issues as you request  @rushatgabhane  will be this: -
 pre: inputString => inputString
+.replaceAll(/<\/div>(<[^/])/g, `<br/>$1`).replaceAll(/(<tr.*?<\/tr>)/g,`$1<br/>`).replaceAll('

',"")
.replace('

', '
').replace('

', '
')
.replace(SLACK_SPAN_NEW_LINE_TAG + SLACK_SPAN_NEW_LINE_TAG, '

').replace(SLACK_SPAN_NEW_LINE_TAG, '

'),

I will explain more about the second regex on the second issue. since it's more related to copying code from Github.
https://user-images.githubusercontent.com/21364901/155846490-2f432e9d-5aba-4e49-b05e-fa9c7a70c92b.mov

Proposal
let's explain what is the issue and  how  these three issues are related to each other https://github.com/Expensify/App/issues/7352 ,  https://github.com/Expensify/App/issues/7912 , https://github.com/Expensify/App/issues/7644
when we try to copy some text from Expensify what happens is this text is converted to a bad HTML code then htmlToMarkdown function tries to convert this bad HTML to text and put it into our clipboard so we can paste it anywhere, the problem is htmlToMarkdown function can't convert this bad HTML to text correctly so when we try to paste it into Expensify or into any text editor we get the text in a wrong format.
here is what happens when we try to copy 1234 from Expensify to a text editor we get 4321.

fixing the issue by trying to convert this bad HTML to text while pasting it into Expensify isn't a good solution, it works for a simple and small HTML, not for a complex one and the problem exists when we try to paste it into any text editor,  so we won't do anything to handlePaste and won't handle any HTML there, it works fine by default, instead we will correct our HTML while coping so we can paste it anywhere in a correct format.
converting HTML to text is not easy, and one line regex can't do it correctly, we don't only remove HTML elements because some divs maybe represent a new line and others represent something else.
html-to-text module is a good solution, here is their repo  https://github.com/html-to-text/node-html-to-text
Unfortunately, html-to-text can't convert this bad HTML correctly but it is converting better than our function htmlToMarkdown
so we will fix some issues in this bad HTML manually then pass the output to html-to-text and we will get the correct text.
here is how it work
https://user-images.githubusercontent.com/100511864/156055569-3ade56c9-aa84-43d1-97f1-30c6fdccf99d.mov

proposal
The problem is the converter couldn't detect line break across ReportActionItem we could assist this by adding:

 in :
Above:
https://github.com/Expensify/App/blob/d6e64b37e2cc38a692b0778de3348e6e7da924f0/src/pages/home/report/ReportActionItem.js#L159
And Below:
https://github.com/Expensify/App/blob/d6e64b37e2cc38a692b0778de3348e6e7da924f0/src/pages/home/report/ReportActionItemSingle.js#L89

@rushatgabhane what do you think of the above proposals? 😊

For this proposal @ahmdshrif
Try copy paste for these lines. Something to do with the text made bold using *
*Lorem Ipsum* is simply dummy text of the printing and typesetting industry.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.

Hello 👋

https://user-images.githubusercontent.com/29673073/157110753-1dc2b65e-8802-4a32-8b1b-2c7d73391055.mov

@blacknight3 it'd be great if we can find a solution without using any extra libraries

@K4tsuki I think that's same as https://github.com/Expensify/App/issues/7352#issuecomment-1020288547 which seems like a hack

Doubled price to $2000 - https://www.upwork.com/jobs/~0104b0a207be0dbbcb

proposal
this solution will fix https://github.com/Expensify/App/issues/7352 ,https://github.com/Expensify/App/issues/7644 but not https://github.com/Expensify/App/issues/7912  without using any  packages

In src/components/TextInputFocusable/index.js comment this if statement if (types.includes(TEXT_HTML)) {...}
in src/libs/SelectioinScraper/index.js add this function :

const fixReverseHTML = (reversedHtml) => {
    let zindexes = reversedHtml.split('<div class="css-view-1dbjc4n r-flexDirection-1d5kdc7 r-transform-1qc3rpd" ')
    zindexes.shift()
    if (zindexes.length == 0) {
        return reversedHtml
    }
    for (let i = 0; i < zindexes.length; i++) {
        if (zindexes[i].includes('

') || zindexes[i].includes('

') || zindexes[i].includes('css-view-1dbjc4n r-flexBasis-1mlwlqe r-overflow-1udh08x r-zIndex-417010')) {
            zindexes.splice(i, 1)
        }
    }
    if (zindexes.length == 1 && zindexes[0].includes('
')) {
        zindexes[0] = `<div class="css-view-1dbjc4n r-flexDirection-1d5kdc7 r-transform-1qc3rpd" ` + zindexes[0].replace('
', '
')
        return zindexes
    }
    for (let j = 0; j < zindexes.length - 1; j++) {
        if (zindexes.length > 1) {
            for (let i = 0; i < zindexes.length; i++) {
                if (i + 1 < zindexes.length) {
                    let currenZindexValue = parseInt(zindexes[i].split(';">')[0].slice(16))
                    let nextZindexValue = parseInt(zindexes[i + 1].split(';">')[0].slice(16))
                    if (currenZindexValue > nextZindexValue) {
                        let currentIndex = zindexes[i]
                        zindexes[i] = zindexes[i + 1]
                        zindexes[i + 1] = currentIndex
                    }
                    else {
                    }
                }
                else {
                }
            }
        }
    }
    for (let i = 0; i < zindexes.length; i++) {
        zindexes[i] = `<div class="css-view-1dbjc4n r-flexDirection-1d5kdc7 r-transform-1qc3rpd" ` + zindexes[i]
    }
    if (!zindexes[0].includes('
')) {
        zindexes[0] += '
'
    }
    if (zindexes[zindexes.length - 1].includes('

')) {
        zindexes[zindexes.length - 1] = zindexes[zindexes.length - 1].replace('
', '
')
    }
    for (let i = 0; i < zindexes.length; i++) {
        if (i < zindexes.length - 1) {
            zindexes[i] = zindexes[i].replaceAll(/
]*>?<\/div>/gm, '
')
        }
    }
    let correctedHtml = zindexes.join('')
    return correctedHtml
}

call it here const domRepresentation = parseDocument(fixReversedHTML(selectionHtml));

Result:
https://user-images.githubusercontent.com/100511864/157664522-4891c7aa-f582-42fa-81f3-00e205064996.mp4

@rushatgabhane  these changes fix all cases.
https://github.com/ahmdshrif/expensify-common/commit/c99333c617c4833f4b7609fb2c50799784f2fd85
https://user-images.githubusercontent.com/21364901/157667557-d121a22b-ad50-4bec-8766-91d52f4a544a.mov

@ahmdshrif could you please help me understand your proposal?
Like what was the cause, and what fixed it.

@blacknight3 sorry, I'm not able to understand what fixReverseHTML() does. Could you please give me a high level overview of what's happening?
Anyway, we already have ExpensiMark, so why not use it instead?

@rushatgabhane  the regex fails because it's not the true way to handle this I can do some changes to handle the case of blood text but expect to fail on other cases we do not try it.
the problem is we do not handle the case of mapping block.
by block, I mean div for example. since it can be used as a new line comment also can be used as block .
I do many tests on when the div can be a newline.  I have 4 examples will explain it
1-if we have div inside the text
 line 1
line 2

 we have new line
 line 1 line 2
2- if open and close div inside the text
line 1

line 2
 we have new line
line 1 line 2
3- if many div then word

line 1
 we  not have new line
line 1
4- if div then word in div the word then div  new line

line 1
line 2

line 1line 2
5- this all will be newline
line 1
line 2
line 3

line 1line 2line 3
the conclusion here we need to check the text  (NOT EMPTY OR WHITE SPACE )if it has an open or closed dive after it  we will add a new line
but we need also to ignore all other HTML tags since we can't count them as text
so the solution here start after applying all rules by mapping any open or close div or comment  to [block] to not split with stripHTML function then split the HTML
generatedMarkdown = generatedMarkdown.replaceAll(/
|<\/div>|<comment.*?>|<\/comment>/gm,"[block]")
return Str.htmlDecode(this.mapBlock(Str.stripHTML(generatedMarkdown)));

then we send it to mapBlock function
in mapblock i split the text by "[block] "t o an array with text between blocks
     const splitText = htmlString.split("[block]")

then check if this text is not empty spaces by trim()
if it's not empty we can add a new line to it.
this is a complete function.
mapBlock (htmlString){
        const splitText = htmlString.split("[block]");
        let joinedText = splitText[0]
        for (let index = 1; index < splitText.length -1; index++) {
            if (splitText[index].trim()) {
                joinedText += splitText[index]+ '\n'
            }
        }
        return joinedText
    }

@rushatgabhane  fixReverseHTML() function does the following :
1. Arrange HTML elements z-index ascending
when I try to copy these lines line1 line2 line3 I get it in a reversed order line 3line 2line 1, so first I have to arrange HTML elements z-index ascending to get it in the correct order. I use Expensify version 1.1.30-3
https://user-images.githubusercontent.com/100511864/157856682-8243be3a-be52-4513-b759-e79b1adda224.mov

Replacing some
 into

In  HTML code this
<\div> represent a line break, so we need to replace it with
, note : our converter convert it to

 and it is the problem.

Removing extra line breaks
after arranging HTML elements ascending by z-index I need to remove the line break from the first element and add it to the last one,
remove extra line break from the middle elements.

Note:
if you don't have the issue in step 1 you don't need fixReverseHTML() function, only do the following :
in src/libs/SelectioonScraper/index.js add this if statement and you will get the same result.
+   if(dom.attribs && dom.attribs["class"]){
+       if(dom.attribs['class']== "css-view-1dbjc4n r-position-u8s1d"){
+           dom.children.push(new Element('br', {}));
+       }
+   }
    // We need to preserve href attribute in order to copy links.
    if (dom.attribs && dom.attribs.href) {
        domAttribs.href = dom.attribs.href;
    }

Finally
we still can't copy any HTML element because what our converter does  'if I'm not mistaken' is take HTML code and convert most of the HTML elements into

 then extract text between these divs.
ex: hello
how

are
 you  ---> our converter ---> hello how are you

@rushatgabhane I thought we have library with html styling awareness to convert html with styling to markdown, but actually we make our own converter. At this rate if something changes in ReportActionItemor component inside it then we must modify the converter. So, it will not be one time solution to fix current and future change of ReportActionItem.

@ahmdshrif thanks!
From what I understand,  you're adding [block] to keep track of indexes to add '\n', because you'll lose them after Str.stripHTML().
But.. Str.stripHTML() doesn't remove '\n'. So why not add it instead of [block] in the first place?

Because not all blocks will mapped to '/n'
The condition here is we have word between blocks (word not spacess or html tag)

@blacknight3 thanks for explaining your proposal, but it breaks when copying text from top to bottom
https://user-images.githubusercontent.com/29673073/158485560-9d5a7e36-0269-4c56-bf66-758de2351808.mov

@ahmdshrif we have an extra line breaker when copying italic text
https://user-images.githubusercontent.com/29673073/158487665-e480fb9d-4c0e-4001-8797-3f9a458e3f32.mov

@rushatgabhane it seems a browser issue because this code works fine on chrome [linux] but doesn't work on firefox [linux].
updated proposal
in src/libs/SelectioonScraper/index.js
+   if(dom.attribs && dom.attribs["class"]){
+       if(dom.attribs['class']== "css-text-901oao r-userSelect-1xnzce8" && !dom.attribs['data-testid'] && !dom.parentNode.attribs['data-testid']){
+           dom.children.push(new Element('br', {}));
+       }
+   }
    // We need to preserve href attribute in order to copy links.
    if (dom.attribs && dom.attribs.href) {
        domAttribs.href = dom.attribs.href;
    }

this code works on both firefox [linux] and chrome [linux], also it can skip the italic issue
https://user-images.githubusercontent.com/100511864/158608930-4d4b79df-f100-4a0f-a0fb-e7238684ad41.mp4
.

@ahmdshrif it's not copying line breakers from vscode, are you able to fix that?

@blacknight3 sorry but your proposal seems like a hack, and It's very similiar to https://github.com/Expensify/App/issues/7352#issuecomment-1020288547
Please correct me if I'm wrong

@rushatgabhane  yes get it the trim function skip the new line.
so it fixed by this line            if (splitText[index].trim()||splitText[index].match(/\n/)) {
for (let index = 1; index < splitText.length -1 ; index++) {
            if (splitText[index].trim()||splitText[index].match(/\n/)) {
                if (splitText[index].match(/\n$/)) {
                    joinedText += splitText[index]
                } else {
                    joinedText += splitText[index] + '\n'
                }
            }
        }

I also note we have a new line at the end also add some code to fix it
check the final version here https://github.com/ahmdshrif/expensify-common/blob/main/lib/ExpensiMark.js
I will clean up the code more when I get hired but now focus on cover all cases for both issues.
https://user-images.githubusercontent.com/21364901/158702115-72fbc476-5cf4-40e8-9e22-bb74f3dd1093.mov

Okay sounds good. Here are some edge cases.
https://user-images.githubusercontent.com/29673073/158704476-9bb0a373-d0dd-42b8-a6f3-d836f9a9056e.mov
@roryabraham I'd love your opinion on @ahmdshrif's approach. It seems like we're gonna have too many cases to test, and debuging the code later on won't be easy. Here's the diff for you - https://github.com/Expensify/expensify-common/compare/main...ahmdshrif:main
I honestly wouldn't mind using some lib to handle things for us

I believe the hard task is done now and we have a few steps to finish.
we will add some test cases related to all tags that we map
but for the case you mention here, it's already happened on prod and that's something that needs to fix from the modifyTextForQuote  first.
https://user-images.githubusercontent.com/21364901/158779904-3158688c-fa9c-469a-ada2-095cfc3541e7.mov
I can work on it but still waiting for your decision.

Thanks @ahmdshrif
C+ reviewed 🎀 👀 🎀
@roryabraham I think we should hire @ahmdshrif, we can then work together on all the test cases.
@ahmdshrif's proposal looks good to me.

Okay. Honestly, I had some difficulty following the language used throughout this discussion, but the videos give me enough confidence to think that we're on the right track.

@roryabraham We might be compounding on a wrong path, so I'd love your opinion on @ahmdshrif's approach. It seems like we're gonna have too many cases to test, and debuging the code later on won't be easy.

I agree that there's a substantial burden on maintenance in our Markdown parser, but that predates my time at Expensify so I don't have all the context around why we decided to build our own Markdown parser. Generally I think the reason is that we wanted to have full control over the markdown syntax we choose to support not to support in our chat application.

📣 @ahmdshrif You have been assigned to this job by @roryabraham!
Please apply to this job in Upwork and leave a comment on the Github issue letting us know when we can expect a PR to be ready for review 🧑💻
Keep in mind: Code of Conduct | Contributing 📖

Have sent contracts to @ahmdshrif and @rushatgabhane to ensure they're paid when this is completed. Please accept when you can!

pr here @rushatgabhane  @roryabraham
https://github.com/Expensify/expensify-common/pull/436

Looks like the PR is almost ready. @rushatgabhane mentioned that he wants to review, so I'm waiting on the C+ 👍  before I do a final review.

PR review is still ongoing

Expensify-common PR was merged just a few minutes ago. Next up is the NewDot PR.

@roryabraham in case anything is weird with this issue, can you drop a comment in denoting payment date if one isn't auto-added?

See update above! Begone, Melvin.

@roryabraham do we need to issue payment for anything so far? I'm unclear on if this issue has anything unusual I need to manage.

@kadiealexander this issue should be setttled on May 20.
PR https://github.com/Expensify/App/pull/8743 was deployed to production on May 13.

Thanks @rushatgabhane!

Paid!!! Thanks for your work team.

Cheers!


Create components to display export methods as separate boxes

Notes

Currently, all sections have no margin whereas export methods require vertical separation.

Closing, dupe of #415.


Request add: Universidad Tecnológica de Nezahualcóyotl

Could you please add my college?:
Universidad Tecnológica de Nezahualcóyotl.
Kind regards, :)

@LordSexyWolf First stage of verification passed, official domain is utn.edu.mx as far as I verified. This is just an informational note. Pull request is still in the review. I appreciate your patience while waiting for the final decision.

@LordSexyWolf Pull request merged. Thank you.

Hello, good morning.
I tried again to register with my college account but with no success.
Can you please help me with that?
I just uploaded the file that you gave me before.
El jue, 30 mar 2023 a las 0:04, Philip Torchinsky @.***>)
escribió:

@LordSexyWolf https://github.com/LordSexyWolf Pull request merged.
Thank you.
—
Reply to this email directly, view it on GitHub
https://github.com/JetBrains/swot/pull/17054#issuecomment-1489745817,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AOZGRPJNXI2D35UUIIQANPLW6UO5BANCNFSM6AAAAAAWJMZMU4
.
You are receiving this because you were mentioned.Message ID:
@.***>


Use testing from pynxtools #335

This is a draft to see if I can implement my suggested changes in small-test-fixes for the STM reader.

@RubelMozumder this works now, but please feel free to modify if you want to add anything else.


Example in your plunkr and v3.0.1 are not the same

I have an issue with setting up the default value of selectize.
After I tried your the angular-selectize(plunkr example) code works but not in v3.0.1.

selectize is not reading my model.


Live examples

I've just managed to plug in the example tag but haven't investigated a great deal yet. Should I be able to run examples of my own directives yet? If so, where do I point to my compiled app code?

I've looked at the gettext project and attempted to configure my examples to use my application code in a similar way to the Gruntfile in that project. However, it looks like my code isn't being processed correctly despite being referenced in the iFrame, my modules are not being initialised. This is the final piece before I'll be ready to use this in our project so any help would be greatly appreciated. I'm not totally sure how the dependencyPath property in the deployments configuration works for example.

Hi Andy,
Thank you for your comment and for your tries to make dgeni-alive working for you.
Comments to the referenced definition is in the code
    require("dgeni-alive/tasks/dgeni-alive").docgen.Package([
        "dgeni-alive/src/packages/jsdoc-ext",
        "dgeni-alive/src/packages/ngdoc-ext",
        "dgeni-alive/src/packages/links-ext",
        "dgeni-alive/src/packages/examples-ext"]) // examples-ext is required, it copies referenced files to the docs
        .config(function (generateExamplesProcessor, generateProtractorTestsProcessor) {
        var cdnUrl = "//ajax.googleapis.com/ajax/libs/angularjs/1.5.0/";
        var deployments = {
            name: "default", // default is referenced below as 'deploymentTarget' name
            examples: {
                commonFiles: {
                    scripts: [
                        cdnUrl + "angular.min.js",
                        "dist/angular-gettext.js" // this file will be copied to the docs by examples-ext package
                    ]
                },
                dependencyPath: cdnUrl
            },
            scripts: [
                cdnUrl + "angular.min.js",
                "../dist/angular-gettext.js" // this is the reference to use in examples
            ],
            stylesheets: [
            ]
        };
        generateExamplesProcessor.deployments = [ deployments ];
        generateProtractorTestsProcessor.deployments = [ deployments ];
    })
    .config(function (renderDocsProcessor) {
        renderDocsProcessor.extraData.deploymentTarget = "default"; // use 'default' deployment
    });

Hope this helps, if not please give me a link to your project and I'll find a way to make it working.

ok so my config looks like this
var packages = [
  require('dgeni-alive/src/packages/jsdoc-ext'),
  require('dgeni-alive/src/packages/ngdoc-ext'),
  require('dgeni-alive/src/packages/links-ext'),
  require('dgeni-alive/src/packages/examples-ext')
  // require('dgeni-packages/git')
];
var path = require('path');
var docgen = require('dgeni-alive/src/docgen')();

docgen.Package(packages)
.config(function(log) {
  log.level = 'info';
})
.config(function (generateExamplesProcessor, generateProtractorTestsProcessor) {
  var deployments = {
    name: 'default',
    examples: {
      commonFiles: {
        scripts: [
          'dist/js/vendor.bundle.js',
          'dist/js/app.bundle.js'
        ]
      }
    },
    scripts: [
      '../dist/js/vendor.bundle.js',
      '../dist/js/app.bundle.js'
    ],
    stylesheets: [
    ]
  };
  generateExamplesProcessor.deployments = [ deployments ];
  generateProtractorTestsProcessor.deployments = [ deployments ];
})
.config(function (renderDocsProcessor) {
    renderDocsProcessor.extraData.deploymentTarget = 'default';
})
.config(function(generateWebsite) {
  generateWebsite.locals('productTitle', 'Sequoia Product Console');
});
docgen.src(['client/src/**/*.js', 'ngdocs/**/*.ngdoc'])
.dest('jsdocs/')
.generate().then(function() {
  console.log('I\'m done!');
});

where vendor.bundle.js and app.bundle.js are generated generated by webapack prior to processing the ngdocs. They files are present when I view the docs on a server...
None of my angular modules seem to be being registered and I'm gettng a "Cannot read property 'document' of undefined" error in both my application files...

I'm also get this in my console when I generate the documentation:
info:    running processor: readFilesProcessor
info:    running processor: extractJSDocCommentsProcessor
info:    running processor: parseExamplesProcessor
info:    running processor: parseTagsProcessor
info:    running processor: filterNgDocsProcessor
info:    running processor: extractTagsProcessor
info:    running processor: codeNameProcessor
info:    running processor: exampleDependenciesBuilder
info:    running processor: generateExamplesProcessor
info:    running processor: generateProtractorTestsProcessor
info:    running processor: computeIdsProcessor
warn:    No getAlias(doc) method provided - doc "default/dist/js/vendor.bundle.js" (example-dependency)
warn:    No getAlias(doc) method provided - doc "default/dist/js/app.bundle.js" (example-dependency)
info:    running processor: memberDocsProcessor
info:    running processor: moduleDocsProcessor
info:    running processor: generateErrorsGroupArea
info:    running processor: generateComponentGroupsProcessor
info:    running processor: providerDocsProcessor
info:    running processor: computePathsProcessor
info:    running processor: generateConfigProcessor
info:    running processor: generateNavigationProcessor
info:    running processor: structuredParamProcessor
info:    running processor: generateWebsite
info:    running processor: renderDocsProcessor
info:    running processor: unescapeCommentsProcessor
info:    running processor: inlineTagProcessor
warn:    Invalid link (does not match any doc): "AUTH_EVENTS" - doc "module:console.app.changePassword.controller:ChangePasswordController" (controller)  - from file "client/src/app/change-password/change-password.controller.js" - starting at line 3, ending at line 153
warn:    Invalid link (does not match any doc): "authService" - doc "module:console.app.changePassword.controller:ChangePasswordController" (controller)  - from file "client/src/app/change-password/change-password.controller.js" - starting at line 3, ending at line 153
warn:    Invalid link (does not match any doc): "flashr" - doc "module:console.app.changePassword.controller:ChangePasswordController" (controller)  - from file "client/src/app/change-password/change-password.controller.js" - starting at line 3, ending at line 153
info:    running processor: generateIndexProcessor
info:    running processor: embedImages
error:   Can't read file: Cannot read property 'filePath' of undefined
error:   Can't read file: Cannot read property 'filePath' of undefined
error:   Can't read file: Cannot read property 'filePath' of undefined
error:   Can't read file: Cannot read property 'filePath' of undefined
error:   Can't read file: Cannot read property 'filePath' of undefined
error:   Can't read file: Cannot read property 'filePath' of undefined
error:   Can't read file: Cannot read property 'filePath' of undefined
info:    running processor: writeFilesProcessor
info:    running processor: checkAnchorLinksProcessor
warn:    Dangling Links Found in "partials/api/console.app.changePassword/controller/ChangePasswordController.html":
 - AUTH_EVENTS,
 - authService,
 - flashr
warn:    3 'unmatched links'

The missing links are no big deal - I just haven't documented those yet, but the "Cannot read property 'filePath' of undefined" errors might be an issue?

I actually think it's trying to parse my imported javascript files - if I pass in non-minified js it tries to process it as documentation...

So I'm fairly certain the root of my issue is the "Cannot read property 'document' of undefined" problem - I can create angular modules inline in example code and they run without problems. I suspect that my project code is falling over due to being unable to read "document" and that's why I'm having problems...

It works if I point my script files to an online location, so http://localhost:8000/js/app.bundle.js, in my case.Other the example package tries to decorate my code with:
function(angular) {
  MY_CODE;
}(window.angular)

which is breaking my code, at least in my specific case...
That will do for me for now, but it would be nice to be able to point to a relative location. If I need to point to a different url and set those up as individual deployments though then that wouldn't be a deal breaker.

Ok, so I've solved this as well...
Adding a template.js file in my local ngdocs/templates directory which looks like this:
{$ doc.fileContents $}

my templates directory is added to my config like so:
.config(function(templateFinder, renderDocsProcessor, gitData) {
  templateFinder.templateFolders.unshift(path.resolve(root, 'ngdocs/templates'));
  renderDocsProcessor.extraData.git = gitData;
})

Thanks @andy-dorman you helped me get to at least a place where the examples work.

To anyone who might come across this issue, I've made some improvements and fixes to live examples in my fork and submitted a PR https://github.com/wingedfox/dgeni-alive/pull/29. If that hasn't been merged feel free to use my fork https://github.com/nhorvath/dgeni-alive.
I've also updated the readme with step by step instructions for getting live examples working with grunt.


Add Graph display style for atmos debug overlay

About the PR
Adds a graph display style to atmos debug for when you want to see more at once.
> showatmos
> atvstyle Graph

atvstyle is a new command that swaps overlays. The old style (atvstyle Block) is the default and remains untouched.
The command atvmode exists and works like it always has, if you just want to use it as before, but when in Graph display style, it toggles things on and off instead of swapping modes. In Block display style it has the new feature of letting you toggle drawing of blocked air directions, pressure directions and excited groups. Using the command atvmode by itself gives you some hopefully self-explanatory help.
What atvstyle Graph does is try to divide the tile into four quadrants and use them for various info but still let you see what's going on in the game underneath:
flow |
dir  |
     |
-----------
notes|log
temp |bar
kPa  |graph

"flow dir": a big dumb arrow kind of thing. Glows pink when there is a PressureDirection and is grey when there's only a LastPressureDirection.

"notes": "EXC" for a tile part of an Excited Group and "EXC HOT" for one that is also a hotspot. (Also "HOT" for hot but not in an excited group but iirc that isn't supposed to be possible.) temp and kPa are self explanatory.

the "log bar graph" - not really useful to determine what the real numbers are, but it gives you a general handwavy sense of what gases are present and if there's an "important" amount of them. No bar appears if there's literally zero of a gas, but any amount above zero will draw at least a couple pixels.

Screenshots

With integer scaling

Without

I tried to record a video but my laptop is a potato, at least when it comes to ss14 + rider + recording at the same time, or I am using the wrong tool or something.

You coming back to this @drcatdoctor ?


Fix browse category CSS

Closes #232

Not sure why Circle hasn't updated the PR, since the build finished ages ago.


Clarify instructions for Seek and Destroy

Describe the Issue
The instructions for the JS challenge Seek and Destroy clearly say "Note: You have to use the arguments object." But yet you can pass this challenge without using the arguments object by modifying the function to use a rest parameter to capture the additional arguments. In addition, there is also a solution in the hints that uses this exact technique.
Affected Page
https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/seek-and-destroy
Your code
This code passes:
function destroyer(arr, ...nums) {
  return arr.filter(num => !nums.includes(num));
}

Expected behavior
Unless we have a specific reason for wanting the user to use the arguments object, I think the rest parameter version is the more acceptable approach and we should be pushing that one, or at the least we should not be telling the user that they have to use the argument object if they really don't have to.
The question is, how helpful do we want to be setting up the function? Do we want to add a rest parameter to the function definition? Or do we want to keep it as is (with just the arr argument) and then the note can say that you can use either the arguments object or you can add a rest parameter to the arguments list?
Screenshots
No response
System
N/A
Additional context
No response

I'd be good with either dropping the hint or saying that either arguments parameter or rest parameter is needed. I think I have a mild preference for the first.
We are still making updates to these challenges, but only small updates.

Yeah, I think dropping the instruction is fine.
Given that this is the intermediate algorithm section, we should be less concerned with the implementation and more concerned that it works. Since we test with variadic arguments, any implementation should be fine.

I think it's just meant as a hint and its age is why it only talks about the arguments object. I'm not sure we can't have a hint and just call it that.

Hint: You have to use rest parameter syntax or the arguments object.

I updated the hint page on the forum a bit.

I like the idea of changing the current note in the instructions to let them know that they can modify the function by adding a rest parameter. I would word it something like the following:

Note: You can access the additional arguments either through the arguments object or by adding a rest parameter to the function definition.

My concern is that since we seed the function with only the arr argument, some people might not think they are allowed to add a rest parameter.

That works for me. I might suggest switching the order so the bit about the arguments object comes last (to give the rest parameter higher priority).

It does feel to me like the information can be integrated as part of the main challenge description and requirements without it needing a note section. But I guess I'm fine with either way.

You will be provided with an initial array (the first argument in the destroyer function), followed by one or more arguments. Remove all elements from the initial array that are of the same value as these arguments.
The function must accept an indeterminate number of arguments, also known as a variadic function. You can access the additional arguments by adding a rest parameter to the function definition or using the arguments object.

I like that, yes.


CRM says its not a managed solution

When importing the solution from the solutions Folder (bin/debug), CRM says its not a managed solution.

There is an error when I try to npm run built:
pcf-scripts] [Error] encountered unexpected error: Error: No ESLint configuration found in /Users/mile/source/PCF_Components/Training101.

Which repo?


feat: make custom team Grafana dashboards persistent

Team Grafana dashboards in Otomi are automatically configured. If a dashboard is added manually and the team's Gafana instance restarts, all custom dashboards are lost. This PR adds the option to make custom dashboards persistent, by creating a custom-dashboards configmap in the team-namespace that will then be automatically loaded.

Cool pattern injecting into the configmap, but it bypasses the grafana-dashboards chart/releases, which injects dashboards via filesystem (as far as I know).
My opinion is that it would be better to stick with a single approach, either sticking with the grafana-dashboards chart as-is, or refactoring the chart to implement the pattern you proposed here.


PWM frequency testing and there is 6.75% error

Is there anyone met the same problem with me for the PWM in opentitan?

clk_div
measured frequency
expected frequency

0x8000
17.88
19.07Hz

0x800
286
305.03

0x80
4.543k
4845

0x8
65.1k
69444

0x0
586k
625k

estimate 2

CC: @tjaychen

Hi @nicolast0604, can you describe your measurement setup?

PWM.zip
This is the testing program for your reference.

Hi @nicolast0604,
Great thanks!  I'm presuming you ran this from within the OpenTitan test framework. Could you please send some explicit instructions how to reproduce the test?  Having the code is great, but's only part of the process.  You can take a look at this issue description, particularly the part that the bottom where it says "to reproduce this issue".   I find that the best issue descriptions have:

A pointer to a branch on someone's fork so that the exact repository state can pre reproduced
An explicit sequence to run the test.

For confirmation: I'm presuming you are running this in verilator?

Hi @nicolast0604
I am trying to recreate your findings but I am not seeing the same issue as you see.
the easiest is to talk in clock vs frequency as the numbers will match no matter what frequency.
I did some simulations and my findings are that the output matches what I expect.
here are a few of my simulation results:
Clkdiv of 0, duty-cycle 1, resolution 15 - we would expect a pulse every 2^16 clk
which is what I see

now simulating full resolution for larger values of ClkDiv becomes impractical so I have used a resolution setting of 12.
same simulation with a resolution of 12
ClkDiv of 0, duty-cycle 1, resolution 12 (one pulse every 2^(12+1) clk  ) which equals a pulse every 8192 clk

ClkDiv of h8, duty-cycle 1, resolution 12 (one pulse every 2^(12+1) clk)
Should give 1 pulse every 2^13*9 cycles (73728)

Could you re-check your results
it would be helpful if you could also share your PWM configuration values

Hi
Great thanks for your quick and detail response.
My PWM configurations is as below. and my testing procedure is in the word file.
PWM testing procedure  en-US.docx
#ifndef PWM_REG_DEFS
#define PWM_REG_DEFS
#ifdef __cplusplus
extern "C" {
#endif
// Register width
#define PWM_PWM_PARAM_REG_WIDTH					32
// Alert Test Register
#define PWM_ALERT_TEST_REG_OFFSET				0x0
#define PWM_ALERT_TEST_REG_RESVAL				0x0
#define PWM_ALERT_TEST_FATAL_FAULT_BIT			0
// Write enable Register
#define PWM_REGWEN_REG_OFFSET					0x4
#define PWM_REGWEN_REG_RESVAL					0x1
// Configuration Register
#define PWM_CFG_REG_OFFSET						0x8
#define PWM_CFG_REG_RESVAL						0x38008000
#define PWM_CFG_CLK_DIV_MASK					0x7ffffff
#define PWM_CFG_CLK_DIV_OFFSET					0
#define PWM_CFG_CLK_DIV_FIELD 					((bitfield_field32_t) {
.mask = PWM_CFG_CLK_DIV_MASK,
.index = PWM_CFG_CLK_DIV_OFFSET
})
#define PWM_CFG_DC_RESN_MASK					0xf
#define PWM_CFG_DC_RESN_OFFSET					27
#define PWM_CFG_DC_RESN_FIELD					((bitfield_field32_t) {
.mask = PWM_CFG_DC_RESN_MASK,
.index = PWM_CFG_DC_RESN_OFFSET
})
#define PWM_CFG_CNTR_EN_BIT						31
// PWM Enable Register
#define PWM_PWM_EN_REG_OFFSET					0xc
#define PWM_PWM_EN_REG_RESVAL					0x0
#define PWM_PWM_EN_0_BIT						0
#define PWM_PWM_EN_1_BIT						1
#define PWM_PWM_EN_2_BIT						2
#define PWM_PWM_EN_3_BIT						3
#define PWM_PWM_EN_4_BIT						4
#define PWM_PWM_EN_5_BIT						5
// PWM Invert register
#define PWM_INVERT_REG_OFFSET					0x10
#define PWM_INVERT_REG_RESVAL					0x0
#define PWM_INVERT_0_BIT						0
#define PWM_INVERT_1_BIT						1
#define PWM_INVERT_2_BIT						2
#define PWM_INVERT_3_BIT						3
#define PWM_INVERT_4_BIT						4
#define PWM_INVERT_5_BIT						5
// PWM Channel Parameters register common defines
#define PWM_PWM_PARAM_REG_RESVAL				0x0
#define PWM_PWM_PARAM_PHASE_DELAY_MASK			0xffff
#define PWM_PWM_PARAM_PHASE_DELAY_OFFSET		0
#define PWM_PWM_PARAM_PHASE_DELAY_FIELD			((bitfield_field32_t) {
.mask = PWM_PWM_PARAM_PHASE_DELAY_MASK,
.index = PWM_PWM_PARAM_PHASE_DELAY_OFFSET
})
#define PWM_PWM_PARAM_HTBT_EN_BIT				30
#define PWM_PWM_PARAM_BLINK_EN_BIT				31
// PWM Channel Parameters 0 register
#define PWM_PWM_PARAM_0_REG_OFFSET				0x14
#define PWM_PWM_PARAM_0_REG_RESVAL				PWM_PWM_PARAM_REG_RESVAL
#define PWM_PWM_PARAM_0_PHASE_DELAY_0_MASK		PWM_PWM_PARAM_PHASE_DELAY_MASK
#define PWM_PWM_PARAM_0_PHASE_DELAY_0_OFFSET	PWM_PWM_PARAM_PHASE_DELAY_OFFSET
#define PWM_PWM_PARAM_0_PHASE_DELAY_0_FIELD		PWM_PWM_PARAM_PHASE_DELAY_FIELD
#define PWM_PWM_PARAM_0_HTBT_EN_0_BIT			PWM_PWM_PARAM_HTBT_EN_BIT
#define PWM_PWM_PARAM_0_BLINK_EN_0_BIT			PWM_PWM_PARAM_BLINK_EN_BIT
// PWM Channel Parameters 1 register
#define PWM_PWM_PARAM_1_REG_OFFSET				0x18
#define PWM_PWM_PARAM_1_REG_RESVAL				PWM_PWM_PARAM_REG_RESVAL
#define PWM_PWM_PARAM_1_PHASE_DELAY_1_MASK		PWM_PWM_PARAM_PHASE_DELAY_MASK
#define PWM_PWM_PARAM_1_PHASE_DELAY_1_OFFSET	PWM_PWM_PARAM_PHASE_DELAY_OFFSET
#define PWM_PWM_PARAM_1_PHASE_DELAY_1_FIELD		PWM_PWM_PARAM_PHASE_DELAY_FIELD
#define PWM_PWM_PARAM_1_HTBT_EN_1_BIT			PWM_PWM_PARAM_HTBT_EN_BIT
#define PWM_PWM_PARAM_1_BLINK_EN_1_BIT			PWM_PWM_PARAM_BLINK_EN_BIT
// PWM Channel Parameters 2 register
#define PWM_PWM_PARAM_2_REG_OFFSET				0x1c
#define PWM_PWM_PARAM_2_REG_RESVAL				PWM_PWM_PARAM_REG_RESVAL
#define PWM_PWM_PARAM_2_PHASE_DELAY_2_MASK		PWM_PWM_PARAM_PHASE_DELAY_MASK
#define PWM_PWM_PARAM_2_PHASE_DELAY_2_OFFSET	PWM_PWM_PARAM_PHASE_DELAY_OFFSET
#define PWM_PWM_PARAM_2_PHASE_DELAY_2_FIELD		PWM_PWM_PARAM_PHASE_DELAY_FIELD
#define PWM_PWM_PARAM_2_HTBT_EN_2_BIT			PWM_PWM_PARAM_HTBT_EN_BIT
#define PWM_PWM_PARAM_2_BLINK_EN_2_BIT			PWM_PWM_PARAM_BLINK_EN_BIT
// PWM Channel Parameters 3 register
#define PWM_PWM_PARAM_3_REG_OFFSET				0x20
#define PWM_PWM_PARAM_3_REG_RESVAL				PWM_PWM_PARAM_REG_RESVAL
#define PWM_PWM_PARAM_3_PHASE_DELAY_3_MASK		PWM_PWM_PARAM_PHASE_DELAY_MASK
#define PWM_PWM_PARAM_3_PHASE_DELAY_3_OFFSET	PWM_PWM_PARAM_PHASE_DELAY_OFFSET
#define PWM_PWM_PARAM_3_PHASE_DELAY_3_FIELD		PWM_PWM_PARAM_PHASE_DELAY_FIELD
#define PWM_PWM_PARAM_3_HTBT_EN_3_BIT			PWM_PWM_PARAM_HTBT_EN_BIT
#define PWM_PWM_PARAM_3_BLINK_EN_3_BIT			PWM_PWM_PARAM_BLINK_EN_BIT
// PWM Channel Parameters 4 register
#define PWM_PWM_PARAM_4_REG_OFFSET				0x24
#define PWM_PWM_PARAM_4_REG_RESVAL				PWM_PWM_PARAM_REG_RESVAL
#define PWM_PWM_PARAM_4_PHASE_DELAY_4_MASK		PWM_PWM_PARAM_PHASE_DELAY_MASK
#define PWM_PWM_PARAM_4_PHASE_DELAY_4_OFFSET	PWM_PWM_PARAM_PHASE_DELAY_OFFSET
#define PWM_PWM_PARAM_4_PHASE_DELAY_4_FIELD		PWM_PWM_PARAM_PHASE_DELAY_FIELD
#define PWM_PWM_PARAM_4_HTBT_EN_4_BIT			PWM_PWM_PARAM_HTBT_EN_BIT
#define PWM_PWM_PARAM_4_BLINK_EN_4_BIT			PWM_PWM_PARAM_BLINK_EN_BIT
// PWM Channel Parameters 5 register
#define PWM_PWM_PARAM_5_REG_OFFSET				0x28
#define PWM_PWM_PARAM_5_REG_RESVAL				PWM_PWM_PARAM_REG_RESVAL
#define PWM_PWM_PARAM_5_PHASE_DELAY_5_MASK		PWM_PWM_PARAM_PHASE_DELAY_MASK
#define PWM_PWM_PARAM_5_PHASE_DELAY_5_OFFSET	PWM_PWM_PARAM_PHASE_DELAY_OFFSET
#define PWM_PWM_PARAM_5_PHASE_DELAY_5_FIELD		PWM_PWM_PARAM_PHASE_DELAY_FIELD
#define PWM_PWM_PARAM_5_HTBT_EN_5_BIT			PWM_PWM_PARAM_HTBT_EN_BIT
#define PWM_PWM_PARAM_5_BLINK_EN_5_BIT			PWM_PWM_PARAM_BLINK_EN_BIT
// PWM DUTY CYCLE register common defines
#define PWM_DUTY_CYCLE_REG_RESVAL				0x7fff7fff
#define PWM_DUTY_CYCLE_A_MASK					0xffff
#define PWM_DUTY_CYCLE_A_OFFSET					0
#define PWM_DUTY_CYCLE_A_FIELD					((bitfield_field32_t) {
.mask = PWM_DUTY_CYCLE_A_MASK,
.index = PWM_DUTY_CYCLE_A_OFFSET
})
#define PWM_DUTY_CYCLE_B_MASK					0xffff
#define PWM_DUTY_CYCLE_B_OFFSET					16
#define PWM_DUTY_CYCLE_B_FIELD					((bitfield_field32_t) {
.mask = PWM_DUTY_CYCLE_B_MASK,
.index = PWM_DUTY_CYCLE_B_OFFSET
})
// PWM DUTY CYCLE 0 register
#define PWM_DUTY_CYCLE_0_REG_OFFSET				0x2c
#define PWM_DUTY_CYCLE_0_REG_RESVAL				PWM_DUTY_CYCLE_REG_RESVAL
#define PWM_DUTY_CYCLE_0_A_0_MASK				PWM_DUTY_CYCLE_A_MASK
#define PWM_DUTY_CYCLE_0_A_0_OFFSET				PWM_DUTY_CYCLE_A_OFFSET
#define PWM_DUTY_CYCLE_0_A_0_FIELD				PWM_DUTY_CYCLE_A_FIELD
#define PWM_DUTY_CYCLE_0_B_0_MASK				PWM_DUTY_CYCLE_B_MASK
#define PWM_DUTY_CYCLE_0_B_0_OFFSET				PWM_DUTY_CYCLE_B_OFFSET
#define PWM_DUTY_CYCLE_0_B_0_FIELD				PWM_DUTY_CYCLE_B_FIELD
// PWM DUTY CYCLE 1 register
#define PWM_DUTY_CYCLE_1_REG_OFFSET				0x30
#define PWM_DUTY_CYCLE_1_REG_RESVAL				PWM_DUTY_CYCLE_REG_RESVAL
#define PWM_DUTY_CYCLE_1_A_1_MASK				PWM_DUTY_CYCLE_A_MASK
#define PWM_DUTY_CYCLE_1_A_1_OFFSET				PWM_DUTY_CYCLE_A_OFFSET
#define PWM_DUTY_CYCLE_1_A_1_FIELD				PWM_DUTY_CYCLE_A_FIELD
#define PWM_DUTY_CYCLE_1_B_1_MASK				PWM_DUTY_CYCLE_B_MASK
#define PWM_DUTY_CYCLE_1_B_1_OFFSET				PWM_DUTY_CYCLE_B_OFFSET
#define PWM_DUTY_CYCLE_1_B_1_FIELD				PWM_DUTY_CYCLE_B_FIELD
// PWM DUTY CYCLE 2 register
#define PWM_DUTY_CYCLE_2_REG_OFFSET				0x34
#define PWM_DUTY_CYCLE_2_REG_RESVAL				PWM_DUTY_CYCLE_REG_RESVAL
#define PWM_DUTY_CYCLE_2_A_2_MASK				PWM_DUTY_CYCLE_A_MASK
#define PWM_DUTY_CYCLE_2_A_2_OFFSET				PWM_DUTY_CYCLE_A_OFFSET
#define PWM_DUTY_CYCLE_2_A_2_FIELD				PWM_DUTY_CYCLE_A_FIELD
#define PWM_DUTY_CYCLE_2_B_2_MASK				PWM_DUTY_CYCLE_B_MASK
#define PWM_DUTY_CYCLE_2_B_2_OFFSET				PWM_DUTY_CYCLE_B_OFFSET
#define PWM_DUTY_CYCLE_2_B_2_FIELD				PWM_DUTY_CYCLE_B_FIELD
// PWM DUTY CYCLE 3 register
#define PWM_DUTY_CYCLE_3_REG_OFFSET				0x38
#define PWM_DUTY_CYCLE_3_REG_RESVAL				PWM_DUTY_CYCLE_REG_RESVAL
#define PWM_DUTY_CYCLE_3_A_3_MASK				PWM_DUTY_CYCLE_A_MASK
#define PWM_DUTY_CYCLE_3_A_3_OFFSET				PWM_DUTY_CYCLE_A_OFFSET
#define PWM_DUTY_CYCLE_3_A_3_FIELD				PWM_DUTY_CYCLE_A_FIELD
#define PWM_DUTY_CYCLE_3_B_3_MASK				PWM_DUTY_CYCLE_B_MASK
#define PWM_DUTY_CYCLE_3_B_3_OFFSET				PWM_DUTY_CYCLE_B_OFFSET
#define PWM_DUTY_CYCLE_3_B_3_FIELD				PWM_DUTY_CYCLE_B_FIELD
// PWM DUTY CYCLE 4 register
#define PWM_DUTY_CYCLE_4_REG_OFFSET				0x3c
#define PWM_DUTY_CYCLE_4_REG_RESVAL				PWM_DUTY_CYCLE_REG_RESVAL
#define PWM_DUTY_CYCLE_4_A_4_MASK				PWM_DUTY_CYCLE_A_MASK
#define PWM_DUTY_CYCLE_4_A_4_OFFSET				PWM_DUTY_CYCLE_A_OFFSET
#define PWM_DUTY_CYCLE_4_A_4_FIELD				PWM_DUTY_CYCLE_A_FIELD
#define PWM_DUTY_CYCLE_4_B_4_MASK				PWM_DUTY_CYCLE_B_MASK
#define PWM_DUTY_CYCLE_4_B_4_OFFSET				PWM_DUTY_CYCLE_B_OFFSET
#define PWM_DUTY_CYCLE_4_B_4_FIELD				PWM_DUTY_CYCLE_B_FIELD
// PWM DUTY CYCLE 5 register
#define PWM_DUTY_CYCLE_5_REG_OFFSET				0x40
#define PWM_DUTY_CYCLE_5_REG_RESVAL				PWM_DUTY_CYCLE_REG_RESVAL
#define PWM_DUTY_CYCLE_5_A_5_MASK				PWM_DUTY_CYCLE_A_MASK
#define PWM_DUTY_CYCLE_5_A_5_OFFSET				PWM_DUTY_CYCLE_A_OFFSET
#define PWM_DUTY_CYCLE_5_A_5_FIELD				PWM_DUTY_CYCLE_A_FIELD
#define PWM_DUTY_CYCLE_5_B_5_MASK				PWM_DUTY_CYCLE_B_MASK
#define PWM_DUTY_CYCLE_5_B_5_OFFSET				PWM_DUTY_CYCLE_B_OFFSET
#define PWM_DUTY_CYCLE_5_B_5_FIELD				PWM_DUTY_CYCLE_B_FIELD
// PWM Blink/Heartbeat Parameters register common defines
#define PWM_BLINK_PARAM_REG_RESVAL				0x0
#define PWM_BLINK_PARAM_X_MASK					0xffff
#define PWM_BLINK_PARAM_X_OFFSET				0
#define PWM_BLINK_PARAM_X_FIELD					((bitfield_field32_t) {
.mask = PWM_BLINK_PARAM_0_X_0_MASK,
.index = PWM_BLINK_PARAM_0_X_0_OFFSET
})
#define PWM_BLINK_PARAM_Y_MASK					0xffff
#define PWM_BLINK_PARAM_Y_OFFSET				16
#define PWM_BLINK_PARAM_Y_FIELD					((bitfield_field32_t) {
.mask = PWM_BLINK_PARAM_0_Y_0_MASK,
.index = PWM_BLINK_PARAM_0_Y_0_OFFSET
})
// PWM Blink/Heartbeat Parameters 0 register
#define PWM_BLINK_PARAM_0_REG_OFFSET			0x44
#define PWM_BLINK_PARAM_0_REG_RESVAL			PWM_BLINK_PARAM_REG_RESVAL
#define PWM_BLINK_PARAM_0_X_0_MASK				PWM_BLINK_PARAM_X_MASK
#define PWM_BLINK_PARAM_0_X_0_OFFSET			PWM_BLINK_PARAM_X_OFFSET
#define PWM_BLINK_PARAM_0_X_0_FIELD				PWM_BLINK_PARAM_X_FIELD
#define PWM_BLINK_PARAM_0_Y_0_MASK				PWM_BLINK_PARAM_Y_MASK
#define PWM_BLINK_PARAM_0_Y_0_OFFSET			PWM_BLINK_PARAM_Y_OFFSET
#define PWM_BLINK_PARAM_0_Y_0_FIELD				PWM_BLINK_PARAM_Y_FIELD
// PWM Blink/Heartbeat Parameters 1 register
#define PWM_BLINK_PARAM_1_REG_OFFSET			0x48
#define PWM_BLINK_PARAM_1_REG_RESVAL			PWM_BLINK_PARAM_REG_RESVAL
#define PWM_BLINK_PARAM_1_X_1_MASK				PWM_BLINK_PARAM_X_MASK
#define PWM_BLINK_PARAM_1_X_1_OFFSET			PWM_BLINK_PARAM_X_OFFSET
#define PWM_BLINK_PARAM_1_X_1_FIELD				PWM_BLINK_PARAM_X_FIELD
#define PWM_BLINK_PARAM_1_Y_1_MASK				PWM_BLINK_PARAM_Y_MASK
#define PWM_BLINK_PARAM_1_Y_1_OFFSET			PWM_BLINK_PARAM_Y_OFFSET
#define PWM_BLINK_PARAM_1_Y_1_FIELD				PWM_BLINK_PARAM_Y_FIELD
// PWM Blink/Heartbeat Parameters 2 register
#define PWM_BLINK_PARAM_2_REG_OFFSET			0x4c
#define PWM_BLINK_PARAM_2_REG_RESVAL			PWM_BLINK_PARAM_REG_RESVAL
#define PWM_BLINK_PARAM_2_X_2_MASK				PWM_BLINK_PARAM_X_MASK
#define PWM_BLINK_PARAM_2_X_2_OFFSET			PWM_BLINK_PARAM_X_OFFSET
#define PWM_BLINK_PARAM_2_X_2_FIELD				PWM_BLINK_PARAM_X_FIELD
#define PWM_BLINK_PARAM_2_Y_2_MASK				PWM_BLINK_PARAM_Y_MASK
#define PWM_BLINK_PARAM_2_Y_2_OFFSET			PWM_BLINK_PARAM_Y_OFFSET
#define PWM_BLINK_PARAM_2_Y_2_FIELD				PWM_BLINK_PARAM_Y_FIELD
// PWM Blink/Heartbeat Parameters 3 register
#define PWM_BLINK_PARAM_3_REG_OFFSET			0x50
#define PWM_BLINK_PARAM_3_REG_RESVAL			PWM_BLINK_PARAM_REG_RESVAL
#define PWM_BLINK_PARAM_3_X_3_MASK				PWM_BLINK_PARAM_X_MASK
#define PWM_BLINK_PARAM_3_X_3_OFFSET			PWM_BLINK_PARAM_X_OFFSET
#define PWM_BLINK_PARAM_3_X_3_FIELD				PWM_BLINK_PARAM_X_FIELD
#define PWM_BLINK_PARAM_3_Y_3_MASK				PWM_BLINK_PARAM_Y_MASK
#define PWM_BLINK_PARAM_3_Y_3_OFFSET			PWM_BLINK_PARAM_Y_OFFSET
#define PWM_BLINK_PARAM_3_Y_3_FIELD				PWM_BLINK_PARAM_Y_FIELD
// PWM Blink/Heartbeat Parameters 4 register
#define PWM_BLINK_PARAM_4_REG_OFFSET			0x54
#define PWM_BLINK_PARAM_4_REG_RESVAL			PWM_BLINK_PARAM_REG_RESVAL
#define PWM_BLINK_PARAM_4_X_4_MASK				PWM_BLINK_PARAM_X_MASK
#define PWM_BLINK_PARAM_4_X_4_OFFSET			PWM_BLINK_PARAM_X_OFFSET
#define PWM_BLINK_PARAM_4_X_4_FIELD				PWM_BLINK_PARAM_X_FIELD
#define PWM_BLINK_PARAM_4_Y_4_MASK				PWM_BLINK_PARAM_Y_MASK
#define PWM_BLINK_PARAM_4_Y_4_OFFSET			PWM_BLINK_PARAM_Y_OFFSET
#define PWM_BLINK_PARAM_4_Y_4_FIELD				PWM_BLINK_PARAM_Y_FIELD
// PWM Blink/Heartbeat Parameters 5 register
#define PWM_BLINK_PARAM_5_REG_OFFSET			0x58
#define PWM_BLINK_PARAM_5_REG_RESVAL			PWM_BLINK_PARAM_REG_RESVAL
#define PWM_BLINK_PARAM_5_X_5_MASK				PWM_BLINK_PARAM_X_MASK
#define PWM_BLINK_PARAM_5_X_5_OFFSET			PWM_BLINK_PARAM_X_OFFSET
#define PWM_BLINK_PARAM_5_X_5_FIELD				PWM_BLINK_PARAM_X_FIELD
#define PWM_BLINK_PARAM_5_Y_5_MASK				PWM_BLINK_PARAM_Y_MASK
#define PWM_BLINK_PARAM_5_Y_5_OFFSET			PWM_BLINK_PARAM_Y_OFFSET
#define PWM_BLINK_PARAM_5_Y_5_FIELD				PWM_BLINK_PARAM_Y_FIELD
#ifdef __cplusplus
}  // extern "C"
#endif
#endif  // PWM_REG_DEFS

@rasmus-madsen rasmus-madsen
https://github.com/lowRISC/opentitan/files/7859286/PWM.testing.procedure.en-US.docx

@nicolast0604 this is interesting - although we currently have some wierd behavior with the never versions of PWM that is being looked into.
please see https://github.com/lowRISC/opentitan/issues/10062
once we have a stable PWM core I will see if I can reproduce your findings - since the problem also excist without the clock divider enabled I am thinking that this might actually be a problem with the input clock and not the pwm module it self.

Thanks for your help.
The input clock is set to 10Mhz as the same as the CPU clock.
Please feel free to let me know any recommendations.

@jdonjdon @tjaychen @msfschaffner we should double check whether anything needs to be fixed here for M2.

Triaged for pwm. Assigning to M2.5 with https://github.com/lowRISC/opentitan/labels/Priority%3AP2 because we should check if this problem still exists and fix it if necessary.

De-prioritizing pwm for M2.5.

Assigning to @engdoreis to investigate. If issues are found - please report to @andreaskurth . If more analysis is needed please contact @nasahlpa

I made some experiments measuring with the logic analyser:
FPGA CW340 with aon clock = 250khz

clk_div
expected (Hz)
CW340 FPGA (Hz)

0x8000
3.814697265625
3.815

0x800
61.03515625
61.006

0x80
976.5625
960.002

0x8
15625
13889

0x0
125k
125k

Silicon with aon clock = 200khz

clk_div
expected (Hz)
Silicon (Hz)

0x8000
3.0517578125
3.067

0x800
48.828125
49.051

0x80
781.25
779.056

0x8
12500
11166

0x0
100000
100503

@moidx / @andreaskurth / @vogelpi please see PWM analysis results carried out by @engdoreis. The percentage deviation seems to be fine for all apart from the 0x8 clk_div
FPGA CW340 with aon clock = 250khz

clk_div
expected (Hz)
CW340 FPGA (Hz)
Percentage diff

0x8000
3.814697265625
3.815
+0.007936

0x800
61.03515625
61.006
-0.0477696

0x80
976.5625
960.002
-1.6957952

0x8
15625
13889
-11.1104

0x0
125k
125k
0

Silicon with aon clock = 200khz

clk_div
expected (Hz)
Silicon (Hz)
Percentage diff

0x8000
3.0517578125
3.067
+0.499456

0x800
48.828125
49.051
+0.456448

0x80
781.25
779.056
+0.280832

0x8
12500
11166
-10.672

0x0
100000
100503
+0.503

Thanks for doing the measurements @engdoreis and for feeding the results back @johngt . This looks good to me. The deviation at 0x8 looks systematic to me. I think we're actually dividing by 9 instead:

250k / 2 / 9 = 13888
200k / 2 / 9 = 11111

We might be one clock tick off or something. This should be investigated.

Thx @engdoreis -- reassigning to @rswarbrick as M4 HW coordinator of pwm to investigate (or delegate)

Looking at pwm's specification

the numbers in the Silicon (Hz) column of the table above look correct to me for DC_RESN = 0 and f_coreclk = 200 kHz:

clk_div
calculated (Hz)
Silicon (Hz)
Percentage diff

0x0
100e3
100503
+0.5%

0x8
11.1e3
11166
+0.5%

0x80
775
779.056
+0.5%

0x800
48.8
49.051
+0.5%

0x8000
3.05
3.067
+0.5%

So I think the AON clock (which is pwm's core_clk) on the measured chip just runs 0.5% faster than 200 kHz, and since pwm's output is derived from that clock, the output is faster as well. We don't have a tolerance specification for pwm AFAIK, but given the intended use case I think this is totally fine.
What is not clear to me, though: Where do the values in the expected (Hz) column in the tables above come from, @engdoreis?

What is not clear to me, though: Where do the values in the expected (Hz) column in the tables above come from, @engdoreis?

Looks like it's just an off-by-one error in the interpretation of the encoding. @engdoreis was missing the + 1 in the divisor.

Ah, I see, makes sense. SGTM, let's close this. @engdoreis and @johngt if you think we have overlooked something in the last two comments, please reopen.

Yes, @a-will is right, the expected column is the clock that I computed, but I forgot to add the +1 in the divisor, as in the formula above.


user_status: Fix the revoking of away status on setting status text.

Fixes #17071
On setting the status text whilst the status is set to unavailable leads to revoking of the away status setting it to normal.
This commit fixes the problem by passing the previous status along the new status text to the endpoint.

Testing plan:
Tested on dev server.
GIFs or screenshots:

I am fixing this in https://github.com/zulip/zulip/pull/17091.  Closing.  Thanks for working on this!

I am fixing this in https://github.com/zulip/zulip/pull/17091.  Closing.  Thanks for working on this!


First cut at Quick Start guide

I have a couple friends who were curious about analyzing data that we have collected (about property tax and land values in our town). They had been using spreadsheets, but the analysis gets unwieldy...
I really like the combination of qStudio and PRQL for making queries on a SQL database. So I wrote a few "quick start" guides that my friends could use to get up to speed.
It's at: qStudio-PRQL Quick Start If you have comments or suggestions, raise an Issue to that repo. Enjoy!

@ryanhamilton This is very cool! Thanks!


Variable substitution not working?

Describe the bug
Thank you for the great tool!
I'm trying to use variable substitution to script out a realm.json file for automated deployments, but the CLI doesn't substitute environment variables at runtime, submitting values to Keycloak like "${env:SOME_ENV_VARIABLE}". There aren't any warnings or errors, and the import succeeds. I can view the new realm in the Keycloak interface. I'm running Docker locally on Mac OS. I'm passing import_var-substitution=true to the docker run command.
I should note that passing other flags, like keycloak_availability-check_enabled=true and keycloak_availability-check_timeout=120s seems to have no effect. When I run docker-compose up, the CLI will fail after the first HTTP request fails, without retrying or waiting. Am I misunderstanding how to use the CLI?
To Reproduce
Run CLI via Docker:
docker run \
    -e keycloak_url=http://docker.for.mac.localhost:8080 \
    -e keycloak_user=admin \
    -e keycloak_password=admin \
    -e IMPORT_PATH=/realms/my-realm.json \
    -e import_var-substitution=true \
    -e API_CLIENT_SECRET=somesecret \
    -v /Users/me/Projects/keycloak-example/src/realms:/realms \
    adorsys/keycloak-config-cli:master

realm.json (some detail omitted):
{
  "id": "app",
  "realm": "My App",
  "enabled": true,
  "clients": [
    {
      "clientId": "api",
      "name": "API",
      "enabled": true,
      "clientAuthenticatorType": "client-secret",
      "secret": "${env:API_CLIENT_SECRET}",
      "webOrigins": ["+"],
      "standardFlowEnabled": true,
      "implicitFlowEnabled": false,
      "serviceAccountsEnabled": true
    }
  ]
}

Expected behavior
I would expect to the see the value specified for API_CLIENT_SECRET to be injected into Keycloak.
Environment (please complete the following information):

Keycloak Version: 11.0.2
keycloak-config-cli Version: I've tried both master and latest

Hi,
i tested, it works.
According to spring boot docs: https://github.com/spring-projects/spring-boot/wiki/Relaxed-Binding-2.0#environment-variables
Environment variables should not contain hyphen. import_var-substitution -> import_varsubstitution

@jkroepke Thanks for the quick response. I can confirm that using IMPORT_VARSUBSTITUTION in my docker run command works. The above example should be revised as follows:
docker run \
    -e KEYCLOAK_URL=http://docker.for.mac.localhost:8080 \
    -e KEYCLOAK_USER=admin \
    -e KEYCLOAK_PASSWORD=admin \
    -e IMPORT_PATH=/realms/my-realm.json \
    -e IMPORT_VARSUBSTITUTION=true \
    -e API_CLIENT_SECRET=somesecret \
    -v /Users/me/Projects/keycloak-example/src/realms:/realms \
    adorsys/keycloak-config-cli:master

  "secret": "${env:API_CLIENT_SECRET}",

Which version are you using @sandhraprakash? In the later versions, you need to use $() format.
       "secret": "$(env:API_CLIENT_SECRET)",

  "secret": "${env:API_CLIENT_SECRET}",

Which version are you using @sandhraprakash? In the newer versions, you need to use $() format.
       "secret": "$(env:API_CLIENT_SECRET)",

sorry I immediately realized the mistake I made.
it works with this "secret": "$(API_CLIENT_SECRET)"

On more recent versions, 5.x with 18.x JARs, you actually need:

IMPORT_VARSUBSTITUTION_ENABLED: true

Haven't tried with env: part successfully in the variable substitution itself but worked for me without. It may also work with that prefix and it was _ENABLED that I was missing all along.

  "secret": "${env:API_CLIENT_SECRET}",

Which version are you using @sandhraprakash? In the newer versions, you need to use $() format.
       "secret": "$(env:API_CLIENT_SECRET)",

sorry I immediately realized the mistake I made. it works with this "secret": "$(API_CLIENT_SECRET)"

very helpful, it was the replacement of the curly braces for me


Comment Block/Line Action not Working from F1 or with keyboard shorcut

VS Code Version: 1.53.1
OS Version: Kernel: 5.10.16-arch1-1

Steps to Reproduce:

Select Line or Block Text
2.Press F1
3.Select Toggle Line Comment or Toggle Block Comment
4.It does not work

Does this issue occur when all extensions are disabled?: Yes/No
Yes. I even deleted settings.json to no avail.

/needsMoreInfo
What language?
Do you have any error notifications before that?

/needsMoreInfo
What language?
Do you have any error notifications before that?

I'm writing in python. I don't think its a keybinding issue I'm directly calling the actions.
Ctrl+A works for example.

I'm unable to reproduce the issue with a Python file. Does it still show up for you when trying VS Code Insiders? Also, do you have the Python extension installed?


Clarify encoding mode (VME vs. VDENC) in sample encode and smt

Starting from 1.31 API implementation we started to change default encoding mode:
https://github.com/Intel-Media-SDK/MediaSDK/blob/073bf0f47ebe8dcf4221a7f1cbfa51d80aa4c161/_studio/mfx_lib/shared/src/mfx_h264_enc_common_hw.cpp#L1430
Here is code snippet:
#if (MFX_VERSION >= 1031)
    if ((platfrom == MFX_HW_JSL || platfrom == MFX_HW_EHL)
        && par.mfx.LowPower == MFX_CODINGOPTION_UNKNOWN)
    {
        par.mfx.LowPower = MFX_CODINGOPTION_ON;
        return sts;
    }
#endif

Can you, please, clarify:

Which is the default encoding mode for sample encode and smt for each platform?
If default mode for JSL/EHL is VDENC, how user can change it to VME? (I think there is only -qsv-ff which enables VDENC, but not disables it)

I recommend to print out some info clarifying the work mode of samples. Plus, I would consider changing command line option to something more sensible, like --lowpower=on|off

Which is the default encoding mode for sample encode and smt for each platform?

In which way would you like to have it? Just a comment in current issue or ..?

If default mode for JSL/EHL is VDENC, how user can change it to VME? (I think there is only -qsv-ff which enables VDENC, but not disables it)
I recommend to print out some info clarifying the work mode of samples. Plus, I would consider changing command line option to something more sensible, like --lowpower=on|off

@AntonGrishin , could you please follow up?


Cursor resetting in insert mode for workspaces with python files

The cursor resets itself to the originally inserted position after a couple of seconds in insert mode. I have all other extensions disabled.

Issue must have been with my nvim settings. Resetting them fixed the problem.

Since this morning I'm having the exact same issue. I've made a small .gif to showcase the behaviour:

The weird thing is, it just started out of the blue and now is present in every vscode instance.
Even using a portable vscode version without any other extensions and a different neovim installation the issue is triggered as soon, as a python file is opened.


Upgrade mattermost to 4.9.0

Release: https://github.com/mattermost/mattermost-server/releases/tag/v4.9.0
Changelog: https://github.com/mattermost/docs/blob/e55503f1633027b67be727eebfe04530eaa67180/source/administration/changelog.md#release-v49

Thanks for this contribution :)

Thanks for this contribution :)


Sign redis updates with HMAC-SHA256

We should use HMAC-SHA256 on redis updates pushed into the cloud.  Messages are unique, as they are timestamped and sent infrequently, so we don't need a nonce. 🌉
See

https://stackoverflow.com/questions/31715611/push-mechanism-auth-on-webhook-endpoint
https://en.wikipedia.org/wiki/Message_authentication_code

Implemented.


Design fixes part 3

Fixes for:

#36
#37
#46
#49
#70

@liaprins-czi thank you for this round of feedback, the fixes are deployed and ready for review please 😄
https://napari.github.io/napari-sphinx-theme


ci: don't run build & test for docs

Fix #1159
Signed-off-by: muyuan0<EMAIL_ADDRESS>

Codecov Report

Merging #1179 (b5f42d6) into main (746c943) will increase coverage by 0.45%.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main    #1179      +/-   ##
==========================================
+ Coverage   62.49%   62.95%   +0.45%
==========================================
  Files          72       77       +5
  Lines        9645     9660      +15
==========================================
+ Hits         6028     6081      +53
+ Misses       3197     3165      -32
+ Partials      420      414       -6

see 11 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

rethinking, we can't ignore the docs path for pull requests since we need to run lint/spell checks on it.
I prefer if we left things as is


Load and Paste image work only one time

With PNG work fine! With SVG don't work!
I open another issue to fix this


[ETFE-2933] Read from UserAnswers, if no data, then read from IE801

IMPORTANT

I've raised this as a DRAFT just for visibility really. It's not near being ready to be raised and merged properly yet.
Someone else needs to pick this up? Would recommend @james-work-account probably as I git chery-picked most of the changes from his branch. Then refactored bits.
The code compiles and runs. The flow is currently nonsense as the INFO section will be re-puprosed to ask the CoD upfront questions. But there's a flow that to mimick completing that and then landing on the Task List page
The task list page has logic to work out if a ReviewPage has been answered for each section. Those pages don't exist yet, but will be built as part of future stories.
The task list renders the sections - but the logic around what sections should render has NOT been checked or changed yet. That again needs to be done in future stories
When you click into a section, it currently goes to the CYA and shows you all the answers for that section. Those values are either from the IE801 or the saved draft answers depending on whether you change and save anything amendments.
The Unit Tests COMPILE but DO NOT RUN. There's a lot of tests which check something like "IF there's no data THEN do not show." but these tests do now return data because it falls back on the IE801 response. So all of those tests need updating and any other failing tests reviewed. It took me ages to rebase, refactor and update the code and tests so didn't get time to go through the failing tests unfortunately.

Spotted a bug on the Transport Units section. When the user tries to add more transport units (when there is already existing TU's in 801) then the FE returns an error because the 801 TU state is not reflected in the user answers.
Solution implemented: when the user hits the index page for TU and they have no existing TU's in their local user answers, then copy all the TU's from 801

I'll double check it against my PTs and the JTs then re-review


Update path to reflect new home.

@dlapiduz

@frodenas Do you mind if I merge this?

@dlapiduz Sure, go ahead please.


destroy volume  for each run to avoid disk full.

Codecov Report

Merging #1917 (1abcbc7) into main (6ba5739) will increase coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #1917      +/-   ##
==========================================
+ Coverage   61.54%   61.56%   +0.02%
==========================================
  Files         135      135
  Lines       23440    23440
==========================================
+ Hits        14425    14432       +7
+ Misses       7341     7334       -7
  Partials     1674     1674

Impacted Files
Coverage Δ

pkg/fs/fs.go
76.87% <0.00%> (-0.79%)
:arrow_down:

pkg/meta/sql.go
64.73% <0.00%> (-0.20%)
:arrow_down:

pkg/vfs/reader.go
80.29% <0.00%> (+3.10%)
: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 6ba5739...1abcbc7. Read the comment docs.


AWS API Gateway: Clarify access

Point out that resources can't be made "network internal" but that they may requrie authentication.

LGTM, @chids - thank you! Bouncing over to @jlevy for second stage review.

👍 LGTM too. Thanks!


Pack Bug

With the new version of minecraft the resource pack no longer works
For example, when you open an inventory with a size of 9 you see 27 slots, but you can only put items in the first 9 slots.

I tested it with version 1.21.2, and it worked fine.


Fix use of ln on OS X [phab:D895]

Created by zarko at 2016-05-16 23:48:24:
This change unbreaks builds after clean (and possibly some
other scenarios, but I was reliably able to get it to trip
using bazel clean):
$ bazel clean --expunge
$ bazel build //kythe/go/storage/leveldb/...
INFO: Found 2 targets...
...
INFO: Elapsed time: 67.263s, Critical Path: 29.49s
$ bazel clean
INFO: Starting clean (this may take a while). Consider using --expunge_async if the clean takes more than several minutes.
$ bazel build //kythe/go/storage/leveldb/...
INFO: Found 2 targets...
ERROR: /private/var/tmp/.../2be6994bf77f75bac8f1433eb6e9dc33/external/go_levigo/BUILD:9:1: error executing shell command: 'set -e
export GOROOT=$PWD/external/local_goroot
export CC=$PWD/external/local_config_cc/clang
export CGO_CFLAGS="-DLEVELDB_PLATFORM_POSIX -DOS_MACOSX -isystem $PWD/third_party/leveldb/include -isys...' failed: bash failed: error executing command /bin/bash -c ... (remaining 1 argument(s) skipped): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1.
ln: /var/folders/ft/bv0xnfpx2bqbqc1zp24gc4n8001p27/T//gopath/src/github.com/jmhodges/levigo/go_levigo: File exists
INFO: Elapsed time: 24.082s, Critical Path: 20.79s

schroederc accepted this revision at 2016-05-17 04:01:26

zarko closed via commit 432309a547339c86f43dda8058fb450608c57f89 at 2016-05-17 17:48:48