Can't compile for TVout

Hi,
this is the first time posting an issue so hopefully I explain myself in a way that works for everyone.
I've been trying to compile rx5808-pro-diversity for TVout for a couple of days on and off now and have had no success. I got the OLED version compiling (although I don't have a screen so I can't test it). I get warnings about use of memory but other than that all good.  As for the TV out I have included the appropriate libraries (I think) but I get these
Error: unknown opcode `svprt'
for all of the macros in the asm_macros.h file (in TVout/spec). If I try to add #include "spec\asm_macros.h" I just get
Error: Macro `svprt' was already defined
I had been installing a bunch of other GCC libraries for other IDE's and I figured it was possible something got pointed to the wrong library so I ulgraded my arduino from 1.6.11 to 1.6.12 and still ended up with the same errors.  I'm at a loss. Does anybody have any ideas?
Here is a complete listing of the errors I am getting. I can include the verbose version if someone thinks that would be usefull.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

I was also not able to compile it on tte latest Arduino IDE.
For me the Version 1.6.8 is working without Errors
http://blog.seidel-philipp.de/rx5808-diversity-modul-flashen-laforge-true-d-realacc/#Software

Thank you, that seemed to work (in that it compiles now, I have yet to test functionality or burn it to a board). I'm wondering if the problem is a bug in the new arduino code or just incompatibility or if there is something wrong with my system configuration. It's strange though that the TVout demo projects compiled just fine for me.  Hopefully I won't have any more issues.

This appears to be a non issue.

Only as long as you use Arduino 1.6.8. Later versions do not compile.

Hello!
Please... pls..Any solution to this erratic behaviour ? I can compile samples of tvout in 1.6.12 but sometimes my own code does not compile showing the same opcodes messages :(
Thks!!!!

Hey akua73,
I was able to compile TVout too but not the rx5808 code I don't know where the problem is but try using version 1.6.8 as that totally fixed the problem with me.  I'm assuming it messes up something when certain combinations of libraries mess up the compiler or linker with some change they've made in Arduino. I don't know how or why but hopefully version 1.6.8 fixes your code too.  It really sucks to be stuck using an old version but maybe they'll fix it at some point.

thanks a lot for your answer neirbomit,
yes, my code using tv-out library (this one : https://github.com/Avamander/arduino-tvout ) in a pro-micro 5v/16mhz and UI 1.6.8 compiles well, but the result in my tv screen is not stable, the image is erratic ... also the examples in PAL or NTSC : the image in the TV screen is not stable ... :(
so I have two options :
1- try to solve the opcode errors in UI 1.16.12
2- try to solve the unstable tv-out screen using UI 1.16.8
and , if possible , it seems better the option1 :)
don’t know,, i will try to contact arduino developers... and will see...
any other ideas will be very appreciated !
thanks!!
PS: on the other hand,, in tv-out the file video_gen.cpp seems to have all the assembler code that could be causing these errors when compiling, I will take a look here …

Hi,
Same happens here in 1.6.12. The same opcode show up using the TV-out library. It's weird as the sample code compile, and as soon as I put more code (even not "playing" with the TV) then It will through those errors..

akua73 - I wonder if the stability is from the version or some other timing thing in your code? 1.6.8 is perfectly stable for me. Is it a possible hard ware problem, loose connection,  wrong resistor value? Maybe even check your actual monitor input with a different source.
Mickyleitor - I just tried to add a bunch of random code to TV-out in 1.6.12 and it compiled for me. Is there a specific library that you added or specific piece of code that you added when it stopped compiling? Maybe try and compile for a different board?

@neirbomit I'm using TVout.h and fontALL.h, I will add more in the future but It's ok for debug purposes. The code is using the standard serial to read and print from/to the keyboard/monitor (I know, this will stop momentany the TV streaming but not really a problem for my application).
I will try to take out different parts of code finding out what code could be.

@akua73, Mickeyleitor just gave me an idea for your stability problem. It might not be the issue but Serial.print statements are blocking in arduino if there is too much data for the buffer.  If you are using a lot of print statements you might want to consider commenting them out to see if this fixes you problem.  If it does you might want to check the buffer flags before writing anything to serial. Or maybe even switching to a much higher serial rate.

I think i already tested it (remove all serial debug prints)... Dont remember .... On the other hand I can not test anything by now... But  I will try all the ideas in my next experiments session... Thanks for the help

Now i see that all these problems regarding macros were already discovered in the first post ;) ... Sorry!
Maybe we can just substitute the code in the macros directly in video_gen.cpp .... Dont know...

@akua73 It's really just weird. If you look at the macros that (delay2 for example) that's all it's doing, it should just be replacing the itself with a couple of nops before being compiled. Something in the linker has got to be messed up, but why sometime and not others and why with the newer versions.  I'll have to look over the code again. I'm not sure what #define REMOVE6C etc do. that's a step in the right direction though... maybe.

well, at the end I achieved , more or less, the goal : it compiles and it works (in 1.6.12)... but yes.. very extrange,,, i dont know why the macros are not running properly ...
the solution was simply to substitue delay1,delay2,delay3, o1bs and svprt code directly ...
I used this sed file if someone is interested in doing the same workaround:
s/"delay3\\n\\t"/"nop\\n\\t"\n"nop\\n\\t"\n"nop\\n\\t"/g
s/"delay2\\n\\t"/"nop\\n\\t"\n"nop\\n\\t"/g
s/"delay1\\n\\t"/"nop\\n\\t"/g
s/"svprt\t\%\[port\]\\n\\t"/"in             r16,\%\[port\]\\n\\t"\nANDI_HWS/g
s/"o1bs\t\%\[port\]\\n\\t"/BLD_HWS\n        "out \%\[port\],r16\\n"/g
s/"o1bs\t\%\[port\]\\n"/BLD_HWS\n        "out \%\[port\],r16\\n"/g

and this command:
cat ../video_gen.cpp_BACKUP | sed -f fixit.sed > /root/Arduino/libraries/TVout/video_gen.cpp
now it works well with an 'stable' image on the monitor
i suposse it will be a bug, but i dont know where...
now next step is how to pause and resume the tv signal ... ;)  will see.
regards.-

I have the same error , i''m kind of new in programming .
in one cees the code compiles and for example if i change an print command to println , the code would not compile.
akua73 used a work around , but i dont realy know how to do that. .... just copy paste in video_gen.cpp ?
what is a sed file ?
b.t.w. i''m building a wireless timer to use on horse riding and save the time data to sd card. i alsow use a rtc to keep up with global time. to use in the time files that are being created on the sd card.
and i''m dutch that explains the bad text.

Did it 👍
copyed and replaced all the macro code in the video_gen.cpp library.
now it works normal in arduino 1.6.13

Perfect 🙂👍

I'v found that this problem have appeared after arduino IDE start to use "-flto" GCC compile and link flag.
Actually, I use not the ARduino IDE itself, but Netbeans with plugged toolchain and libs from installed Arduino IDE on Debian. After removing -flto switch from compile and link kstages I can compile for MEGA2560, using 1.8.1 toolset. From the other side, -flto flag is important and allows to forget problems in optimising and inlining the code, placed in different object modules, and ommit this option is not desirable.

Why this issue closed?? I just checked on latest Arduino IDE (1.8.2) and it does not compile.
Since the source comes with library bundled, why not apply this macro so it works for the latest IDE? Sed behaves differently on Mac so I can not even fix it myself.

I can confirm I get the same error when using arduino 1.8.3, downgraded to 1.6.8 and it will compile.

My tvout is working i can upload but would be first for me...  first sleep,
speek to you soon.
Op 5 jun. 2017 23:36 schreef "Frank Fallon"<EMAIL_ADDRESS>
I can confirm I get the same error when using arduino 1.8.3, downgraded to
1.6.8 and it will compile.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/sheaivey/rx5808-pro-diversity/issues/89#issuecomment-306317346,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AWpYuP2Vl9cLb1jkO_RMKURUCvTUGnZDks5sBHTrgaJpZM4KH5Er
.

I am running into this same issue. Going back to 1.6.8 didn't seem to fix it for me either.

I had the same compiling to arduino pro mini with IDE 1.8.3, and got the same asm errors, then I downgraded to 1.6.4, and it compiled well and uploaded to the board.
then, the board broke and changed it to pro mini that had lying around, but got the same errors again on the same IDE 1.6.4
can somebody that had a solution help??

Can someone pass me the cpp file?

@BoRKeLSNoRKeL How did you fix the error in version 1.6.13? I tried to return to 1.6.8, but this compilation error did not disappear. Also I installed 1.6.4, on which the sketch is compiled without errors, but the image is not output on TV :(
Please show the library "video_gen.cpp". Thank you.

/*
Copyright (c) 2010 Myles Metzer
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*/
/* A note about how Color is defined for this version of TVout
*

Where ever choosing a color is mentioned the following are true:
BLACK	=0
WHITE	=1
INVERT	=2
All others will be ignored.
*/

#include "TVout.h"
/* Call this to start video output with the default resolution.
*

Arguments:

mode:

 The video standard to follow:

 PAL		=1	=_PAL

 NTSC	=0	=_NTSC

Returns:

0 if no error.

4 if there is not enough memory.
*/
char TVout::begin(uint8_t mode) {
return begin(mode,255,220);
} // end of begin

/* call this to start video output with a specified resolution.
*

Arguments:
mode:

 The video standard to follow:

 PAL		=1	=_PAL

 NTSC	=0	=_NTSC

x:

 Horizonal resolution must be divisable by 8.

y:

 Vertical resolution.

Returns:

 0 if no error.

 1 if x is not divisable by 8.

 2 if y is to large (NTSC only cannot fill PAL vertical resolution by 8bit limit)

 4 if there is not enough memory for the frame buffer.

*/
char TVout::begin(uint8_t mode, uint8_t x, uint8_t y) {
// check if x is divisable by 8
if ( !(x & 0xF8))
	return 1;
x = x/8;

screen = (unsigned char*)malloc(x * y * sizeof(unsigned char));
if (screen == NULL)
	return 4;

cursor_x = 0;
cursor_y = 0;

render_setup(mode,x,y,screen);
clear_screen();
return 0;

} // end of begin
/* Stop video render and free the used memory.
*/
void TVout::end() {
TIMSK1 = 0;
free(screen);
}
/* Fill the screen with some color.
*

Arguments:
color:

 The color to fill the screen with.

 (see color note at the top of this file)

*/
void TVout::fill(uint8_t color) {
switch(color) {
case BLACK:
cursor_x = 0;
cursor_y = 0;
for (int i = 0; i < (display.hres)*display.vres; i++)
display.screen[i] = 0;
break;
case WHITE:
cursor_x = 0;
cursor_y = 0;
for (int i = 0; i < (display.hres)display.vres; i++)
display.screen[i] = 0xFF;
break;
case INVERT:
for (int i = 0; i < display.hresdisplay.vres; i++)
display.screen[i] = ~display.screen[i];
break;
}
} // end of fill
/* Gets the Horizontal resolution of the screen
*

Returns:
The horizonal resolution.
/
unsigned char TVout::hres() {
return display.hres8;
} // end of hres

/* Gets the Vertical resolution of the screen
*

Returns:
The vertical resolution
*/
unsigned char TVout::vres() {
return display.vres;
} // end of vres

/* Return the number of characters that will fit on a line
*

Returns:
The number of characters that will fit on a text line starting from x=0.
Will return -1 for dynamic width fonts as this cannot be determined.
/
char TVout::char_line() {
return ((display.hres8)/pgm_read_byte(font));
} // end of char_line

/* delay for x ms

The resolution is 16ms for NTSC and 20ms for PAL

Arguments:
x:

 The number of ms this function should consume.

*/
void TVout::delay(unsigned int x) {
unsigned long time = millis() + x;
while(millis() < time);
} // end of delay
/* Delay for x frames, exits at the end of the last display line.

delay_frame(1) is useful prior to drawing so there is little/no flicker.

Arguments:
x:

 The number of frames to delay for.

/
void TVout::delay_frame(unsigned int x) {
int stop_line = (int)(display.start_render + (display.vres(display.vscale_const+1)))+1;
while (x) {
while (display.scanLine != stop_line);
while (display.scanLine == stop_line);
x--;
}
} // end of delay_frame
/* Get the time in ms since begin was called.

The resolution is 16ms for NTSC and 20ms for PAL

Returns:
The time in ms since video generation has started.
*/
unsigned long TVout::millis() {
if (display.lines_frame == _NTSC_LINE_FRAME) {
return display.frames * _NTSC_TIME_SCANLINE * _NTSC_LINE_FRAME / 1000;
}
else {
return display.frames * _PAL_TIME_SCANLINE * _PAL_LINE_FRAME / 1000;
}
} // end of millis

/* force the number of times to display each line.
*

Arguments:
sfactor:

 The scale number of times to repeate each line.

*/
void TVout::force_vscale(char sfactor) {
delay_frame(1);
display.vscale_const = sfactor - 1;
display.vscale = sfactor - 1;
}
/* force the output start time of a scanline in micro seconds.
*

Arguments:
time:

 The new output start time in micro seconds.

*/
void TVout::force_outstart(uint8_t time) {
delay_frame(1);
display.output_delay = ((time * _CYCLES_PER_US) - 1);
}
/* force the start line for active video
*

Arguments:
line:

 The new active video output start line

*/
void TVout::force_linestart(uint8_t line) {
delay_frame(1);
display.start_render = line;
}
/* Set the color of a pixel
*

Arguments:
x:

 The x coordinate of the pixel.

y:

 The y coordinate of the pixel.

c:

 The color of the pixel

 (see color note at the top of this file)

/
void TVout::set_pixel(uint8_t x, uint8_t y, char c) {
if (x >= display.hres8 || y >= display.vres)
return;
sp(x,y,c);
} // end of set_pixel
/* get the color of the pixel at x,y
*

Arguments:
x:

 The x coordinate of the pixel.

y:

 The y coordinate of the pixel.

Returns:
The color of the pixel.
(see color note at the top of this file)

Thank you gijs on the arduino.cc forum for the non obviouse fix.
/
unsigned char TVout::get_pixel(uint8_t x, uint8_t y) {
if (x >= display.hres8 || y >= display.vres)
return 0;
if (display.screen[x/8+y*display.hres] & (0x80 >>(x&7)))
return 1;
return 0;
} // end of get_pixel

/* Draw a line from one point to another
*

Arguments:
x0:

 The x coordinate of point 0.

y0:

 The y coordinate of point 0.

x1:

 The x coordinate of point 1.

y1:

 The y coordinate of point 1.

c:

 The color of the line.

 (see color note at the top of this file)

*/
void TVout::draw_line(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, char c) {
if (x0 > display.hres*8 || y0 > display.vres || x1 > display.hres*8 || y1 > display.vres)
	return;
if (x0 == x1)
	draw_column(x0,y0,y1,c);
else if (y0 == y1)
	draw_row(y0,x0,x1,c);
else {
	int e;
	signed int dx,dy,j, temp;
	signed char s1,s2, xchange;
	signed int x,y;

	x = x0;
	y = y0;

	//take absolute value
	if (x1 < x0) {
		dx = x0 - x1;
		s1 = -1;
	}
	else if (x1 == x0) {
		dx = 0;
		s1 = 0;
	}
	else {
		dx = x1 - x0;
		s1 = 1;
	}

	if (y1 < y0) {
		dy = y0 - y1;
		s2 = -1;
	}
	else if (y1 == y0) {
		dy = 0;
		s2 = 0;
	}
	else {
		dy = y1 - y0;
		s2 = 1;
	}

	xchange = 0;

	if (dy>dx) {
		temp = dx;
		dx = dy;
		dy = temp;
		xchange = 1;
	}

	e = ((int)dy<<1) - dx;

	for (j=0; j<=dx; j++) {
		sp(x,y,c);

		if (e>=0) {
			if (xchange==1) x = x + s1;
			else y = y + s2;
			e = e - ((int)dx<<1);
		}
		if (xchange==1)
			y = y + s2;
		else
			x = x + s1;
		e = e + ((int)dy<<1);
	}
}

} // end of draw_line
/* Fill a row from one point to another
*

Argument:
line:

 The row that fill will be performed on.

x0:

 edge 0 of the fill.

x1:

 edge 1 of the fill.

c:

 the color of the fill.

 (see color note at the top of this file)

*/
void TVout::draw_row(uint8_t line, uint16_t x0, uint16_t x1, uint8_t c) {
uint8_t lbit, rbit;
if (x0 == x1)
	set_pixel(x0,line,c);
else {
	if (x0 > x1) {
		lbit = x0;
		x0 = x1;
		x1 = lbit;
	}
	lbit = 0xff >> (x0&7);
	x0 = x0/8 + display.hres*line;
	rbit = ~(0xff >> (x1&7));
	x1 = x1/8 + display.hres*line;
	if (x0 == x1) {
		lbit = lbit & rbit;
		rbit = 0;
	}
	if (c == WHITE) {
		screen[x0++] |= lbit;
		while (x0 < x1)
			screen[x0++] = 0xff;
		screen[x0] |= rbit;
	}
	else if (c == BLACK) {
		screen[x0++] &= ~lbit;
		while (x0 < x1)
			screen[x0++] = 0;
		screen[x0] &= ~rbit;
	}
	else if (c == INVERT) {
		screen[x0++] ^= lbit;
		while (x0 < x1)
			screen[x0++] ^= 0xff;
		screen[x0] ^= rbit;
	}
}

} // end of draw_row
/* Fill a column from one point to another
*

Argument:
row:

 The row that fill will be performed on.

y0:

 edge 0 of the fill.

y1:

 edge 1 of the fill.

c:

 the color of the fill.

 (see color note at the top of this file)

*/
void TVout::draw_column(uint8_t row, uint16_t y0, uint16_t y1, uint8_t c) {
unsigned char bit;
int byte;

if (y0 == y1)
	set_pixel(row,y0,c);
else {
	if (y1 < y0) {
		bit = y0;
		y0 = y1;
		y1 = bit;
	}
	bit = 0x80 >> (row&7);
	byte = row/8 + y0*display.hres;
	if (c == WHITE) {
		while ( y0 <= y1) {
			screen[byte] |= bit;
			byte += display.hres;
			y0++;
		}
	}
	else if (c == BLACK) {
		while ( y0 <= y1) {
			screen[byte] &= ~bit;
			byte += display.hres;
			y0++;
		}
	}
	else if (c == INVERT) {
		while ( y0 <= y1) {
			screen[byte] ^= bit;
			byte += display.hres;
			y0++;
		}
	}
}

}
/* draw a rectangle at x,y with a specified width and height
*

Arguments:
x0:

 The x coordinate of upper left corner of the rectangle.

y0:

 The y coordinate of upper left corner of the rectangle.

w:

 The widht of the rectangle.

h:

 The height of the rectangle.

c:

 The color of the rectangle.

 (see color note at the top of this file)

fc:

 The fill color of the rectangle.

 (see color note at the top of this file)

 default =-1 (no fill)

*/
void TVout::draw_rect(uint8_t x0, uint8_t y0, uint8_t w, uint8_t h, char c, char fc) {
if (fc != -1) {
	for (unsigned char i = y0; i < y0+h; i++)
		draw_row(i,x0,x0+w,fc);
}
draw_line(x0,y0,x0+w,y0,c);
draw_line(x0,y0,x0,y0+h,c);
draw_line(x0+w,y0,x0+w,y0+h,c);
draw_line(x0,y0+h,x0+w,y0+h,c);

} // end of draw_rect
/* draw a circle given a coordinate x,y and radius both filled and non filled.
*

Arguments:
x0:

 The x coordinate of the center of the circle.

y0:

 The y coordinate of the center of the circle.

radius:

 The radius of the circle.

c:

 The color of the circle.

 (see color note at the top of this file)

fc:

 The color to fill the circle.

 (see color note at the top of this file)

 defualt  =-1 (do not fill)

*/
void TVout::draw_circle(uint8_t x0, uint8_t y0, uint8_t radius, char c, char fc) {
int f = 1 - radius;
int ddF_x = 1;
int	ddF_y = -2 * radius;
int x = 0;
int y = radius;
uint8_t pyy = y,pyx = x;

//there is a fill color
if (fc != -1)
	draw_row(y0,x0-radius,x0+radius,fc);

sp(x0, y0 + radius,c);
sp(x0, y0 - radius,c);
sp(x0 + radius, y0,c);
sp(x0 - radius, y0,c);

while(x < y) {
	if(f >= 0) {
		y--;
		ddF_y += 2;
		f += ddF_y;
	}
	x++;
	ddF_x += 2;
	f += ddF_x;

	//there is a fill color
	if (fc != -1) {
		//prevent double draws on the same rows
		if (pyy != y) {
			draw_row(y0+y,x0-x,x0+x,fc);
			draw_row(y0-y,x0-x,x0+x,fc);
		}
		if (pyx != x && x != y) {
			draw_row(y0+x,x0-y,x0+y,fc);
			draw_row(y0-x,x0-y,x0+y,fc);
		}
		pyy = y;
		pyx = x;
	}
	sp(x0 + x, y0 + y,c);
	sp(x0 - x, y0 + y,c);
	sp(x0 + x, y0 - y,c);
	sp(x0 - x, y0 - y,c);
	sp(x0 + y, y0 + x,c);
	sp(x0 - y, y0 + x,c);
	sp(x0 + y, y0 - x,c);
	sp(x0 - y, y0 - x,c);
}

} // end of draw_circle
/* place a bitmap at x,y where the bitmap is defined as {width,height,imagedata....}
*

Arguments:
x:

 The x coordinate of the upper left corner.

y:

 The y coordinate of the upper left corner.

bmp:

 The bitmap data to print.

i:

 The offset into the image data to start at.  This is mainly used for fonts.

 default	=0

width:

 Override the bitmap width. This is mainly used for fonts.

 default =0 (do not override)

height:

 Override the bitmap height. This is mainly used for fonts.

 default	=0 (do not override)

*/
void TVout::bitmap(uint8_t x, uint8_t y, const unsigned char * bmp,
uint16_t i, uint8_t width, uint8_t lines) {
uint8_t temp, lshift, rshift, save, xtra;
uint16_t si = 0;

rshift = x&7;
lshift = 8-rshift;
if (width == 0) {
	width = pgm_read_byte((uint32_t)(bmp) + i);
	i++;
}
if (lines == 0) {
	lines = pgm_read_byte((uint32_t)(bmp) + i);
	i++;
}

if (width&7) {
	xtra = width&7;
	width = width/8;
	width++;
}
else {
	xtra = 8;
	width = width/8;
}

for (uint8_t l = 0; l < lines; l++) {
	si = (y + l)*display.hres + x/8;
	if (width == 1)
		temp = 0xff >> rshift + xtra;
	else
		temp = 0;
	save = screen[si];
	screen[si] &= ((0xff << lshift) | temp);
	temp = pgm_read_byte((uint32_t)(bmp) + i++);
	screen[si++] |= temp >> rshift;
	for ( uint16_t b = i + width-1; i < b; i++) {
		save = screen[si];
		screen[si] = temp << lshift;
		temp = pgm_read_byte((uint32_t)(bmp) + i);
		screen[si++] |= temp >> rshift;
	}
	if (rshift + xtra < 8)
		screen[si-1] |= (save & (0xff >> rshift + xtra));	//test me!!!
	if (rshift + xtra - 8 > 0)
		screen[si] &= (0xff >> rshift + xtra - 8);
	screen[si] |= temp << lshift;
}

} // end of bitmap
/* shift the pixel buffer in any direction

This function will shift the screen in a direction by any distance.

Arguments:
distance:

 The distance to shift the screen

direction:

 The direction to shift the screen the direction and the integer values:

 UP		=0

 DOWN	=1

 LEFT	=2

 RIGHT	=3

/
void TVout::shift(uint8_t distance, uint8_t direction) {
uint8_t * src;
uint8_t * dst;
uint8_t * end;
uint8_t shift;
uint8_t tmp;
switch(direction) {
case UP:
dst = display.screen;
src = display.screen + distancedisplay.hres;
end = display.screen + display.vres*display.hres;
		while (src <= end) {
			*dst = *src;
			*src = 0;
			dst++;
			src++;
		}
		break;
	case DOWN:
		dst = display.screen + display.vres*display.hres;
		src = dst - distance*display.hres;
		end = display.screen;

		while (src >= end) {
			*dst = *src;
			*src = 0;
			dst--;
			src--;
		}
		break;
	case LEFT:
		shift = distance & 7;

		for (uint8_t line = 0; line < display.vres; line++) {
			dst = display.screen + display.hres*line;
			src = dst + distance/8;
			end = dst + display.hres-2;
			while (src <= end) {
				tmp = 0;
				tmp = *src << shift;
				*src = 0;
				src++;
				tmp |= *src >> (8 - shift);
				*dst = tmp;
				dst++;
			}
			tmp = 0;
			tmp = *src << shift;
			*src = 0;
			*dst = tmp;
		}
		break;
	case RIGHT:
		shift = distance & 7;

		for (uint8_t line = 0; line < display.vres; line++) {
			dst = display.screen + display.hres-1 + display.hres*line;
			src = dst - distance/8;
			end = dst - display.hres+2;
			while (src >= end) {
				tmp = 0;
				tmp = *src >> shift;
				*src = 0;
				src--;
				tmp |= *src << (8 - shift);
				*dst = tmp;
				dst--;
			}
			tmp = 0;
			tmp = *src >> shift;
			*src = 0;
			*dst = tmp;
		}
		break;
}

} // end of shift
/* Inline version of set_pixel that does not perform a bounds check

This function will be replaced by a macro.
/
static void inline sp(uint8_t x, uint8_t y, char c) {
if (c==1)
display.screen[(x/8) + (ydisplay.hres)] |= 0x80 >> (x&7);
else if (c==0)
display.screen[(x/8) + (ydisplay.hres)] &= ~0x80 >> (x&7);
else
display.screen[(x/8) + (ydisplay.hres)] ^= 0x80 >> (x&7);
} // end of sp

/* set the vertical blank function call

The function passed to this function will be called one per frame. The function should be quickish.

Arguments:
func:

 The function to call.

*/
void TVout::set_vbi_hook(void (*func)()) {
vbi_hook = func;
} // end of set_vbi_hook
/* set the horizonal blank function call

This function passed to this function will be called one per scan line.
The function MUST be VERY FAST(~2us max).

Arguments:
funct:

 The function to call.

*/
void TVout::set_hbi_hook(void (*func)()) {
hbi_hook = func;
} // end of set_bhi_hook
/* Simple tone generation
*

Arguments:
frequency:

 the frequency of the tone

courtesy of adamwwolf
*/
void TVout::tone(unsigned int frequency) {
tone(frequency, 0);
} // end of tone

/* Simple tone generation
*

Arguments:

frequency:

 the frequency of the tone

duration_ms:

 The duration to play the tone in ms

courtesy of adamwwolf
*/
void TVout::tone(unsigned int frequency, unsigned long duration_ms) {
if (frequency == 0)
return;

#define TIMER 2
//this is init code
TCCR2A = 0;
TCCR2B = 0;
TCCR2A |= _BV(WGM21);
TCCR2B |= _BV(CS20);
//end init code
//most of this is taken from Tone.cpp from Arduino
uint8_t prescalarbits = 0b001;
uint32_t ocr = 0;

DDR_SND |= _BV(SND_PIN); //set pb3 (digital pin 11) to output

//we are using an 8 bit timer, scan through prescalars to find the best fit
ocr = F_CPU / frequency / 2 - 1;
prescalarbits = 0b001;  // ck/1: same for both timers
if (ocr > 255) {
    ocr = F_CPU / frequency / 2 / 8 - 1;
    prescalarbits = 0b010;  // ck/8: same for both timers

    if (ocr > 255) {
		ocr = F_CPU / frequency / 2 / 32 - 1;
		prescalarbits = 0b011;
    }

    if (ocr > 255) {
		ocr = F_CPU / frequency / 2 / 64 - 1;
		prescalarbits = TIMER == 0 ? 0b011 : 0b100;
		if (ocr > 255) {
			ocr = F_CPU / frequency / 2 / 128 - 1;
			prescalarbits = 0b101;
		}

		if (ocr > 255) {
			ocr = F_CPU / frequency / 2 / 256 - 1;
			prescalarbits = TIMER == 0 ? 0b100 : 0b110;
			if (ocr > 255) {
				// can't do any better than /1024
				ocr = F_CPU / frequency / 2 / 1024 - 1;
				prescalarbits = TIMER == 0 ? 0b101 : 0b111;
			}
		}
    }
}
TCCR2B = prescalarbits;

if (duration_ms > 0)
	remainingToneVsyncs = duration_ms*60/1000; //60 here represents the framerate
else
	remainingToneVsyncs = -1;

// Set the OCR for the given timer,
OCR2A = ocr;
//set it to toggle the pin by itself
TCCR2A &= ~(_BV(COM2A1)); //set COM2A1 to 0
TCCR2A |= _BV(COM2A0);

} // end of tone
/* Stops tone generation
*/
void TVout::noTone() {
TCCR2B = 0;
PORT_SND &= ~(_BV(SND_PIN)); //set pin 11 to 0
} // end of noTone

the above is the TVout.cpp
here is the video_gen.cpp
/*
Copyright (c) 2010 Myles Metzer
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*/
#include <avr/interrupt.h>
#include <avr/io.h>
#include "video_gen.h"
#include "video_properties.h"
#include "asm_macros.h"
#include "hardware_setup.h"
//#define REMOVE6C
//#define REMOVE5C
//#define REMOVE4C
//#define REMOVE3C
int renderLine;
TVout_vid display;
void (*render_line)();			//remove me
void (*line_handler)();			//remove me
void (*hbi_hook)() = ∅
void (*vbi_hook)() = ∅
// sound properties
volatile long remainingToneVsyncs;
void empty() {}
void render_setup(uint8_t mode, uint8_t x, uint8_t y, uint8_t *scrnptr) {
display.screen = scrnptr;
display.hres = x;
display.vres = y;
display.frames = 0;

if (mode)
	display.vscale_const = _PAL_LINE_DISPLAY/display.vres - 1;
else
	display.vscale_const = _NTSC_LINE_DISPLAY/display.vres - 1;
display.vscale = display.vscale_const;

//selects the widest render method that fits in 46us
//as of 9/16/10 rendermode 3 will not work for resolutions lower than
//192(display.hres lower than 24)
unsigned char rmethod = (_TIME_ACTIVE*_CYCLES_PER_US)/(display.hres*8);
switch(rmethod) {
	case 6:
		render_line = &render_line6c;
		break;
	case 5:
		render_line = &render_line5c;
		break;
	case 4:
		render_line = &render_line4c;
		break;
	case 3:
		render_line = &render_line3c;
		break;
	default:
		if (rmethod > 6)
			render_line = &render_line6c;
		else
			render_line = &render_line3c;
}

DDR_VID |= _BV(VID_PIN);
DDR_SYNC |= _BV(SYNC_PIN);
PORT_VID &= ~_BV(VID_PIN);
PORT_SYNC |= _BV(SYNC_PIN);
DDR_SND |= _BV(SND_PIN);	// for tone generation.

// inverted fast pwm mode on timer 1
TCCR1A = _BV(COM1A1) | _BV(COM1A0) | _BV(WGM11);
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10);

if (mode) {
	display.start_render = _PAL_LINE_MID - ((display.vres * (display.vscale_const+1))/2);
	display.output_delay = _PAL_CYCLES_OUTPUT_START;
	display.vsync_end = _PAL_LINE_STOP_VSYNC;
	display.lines_frame = _PAL_LINE_FRAME;
	ICR1 = _PAL_CYCLES_SCANLINE;
	OCR1A = _CYCLES_HORZ_SYNC;
	}
else {
	display.start_render = _NTSC_LINE_MID - ((display.vres * (display.vscale_const+1))/2) + 8;
	display.output_delay = _NTSC_CYCLES_OUTPUT_START;
	display.vsync_end = _NTSC_LINE_STOP_VSYNC;
	display.lines_frame = _NTSC_LINE_FRAME;
	ICR1 = _NTSC_CYCLES_SCANLINE;
	OCR1A = _CYCLES_HORZ_SYNC;
}
display.scanLine = display.lines_frame+1;
line_handler = &vsync_line;
TIMSK1 = _BV(TOIE1);
sei();

}
// render a line
ISR(TIMER1_OVF_vect) {
hbi_hook();
line_handler();
}
void blank_line() {
if ( display.scanLine == display.start_render) {
	renderLine = 0;
	display.vscale = display.vscale_const;
	line_handler = &active_line;
}
else if (display.scanLine == display.lines_frame) {
	line_handler = &vsync_line;
	vbi_hook();
}

display.scanLine++;

}
void active_line() {
wait_until(display.output_delay);
render_line();
if (!display.vscale) {
display.vscale = display.vscale_const;
renderLine += display.hres;
}
else
display.vscale--;
if ((display.scanLine + 1) == (int)(display.start_render + (display.vres*(display.vscale_const+1))))
	line_handler = &blank_line;

display.scanLine++;

}
void vsync_line() {
if (display.scanLine >= display.lines_frame) {
OCR1A = _CYCLES_VIRT_SYNC;
display.scanLine = 0;
display.frames++;
	if (remainingToneVsyncs != 0)
	{
		if (remainingToneVsyncs > 0)
		{
			remainingToneVsyncs--;
		}

	} else
	{
		TCCR2B = 0; //stop the tone
		PORTB &= ~(_BV(SND_PIN));
	}

}
else if (display.scanLine == display.vsync_end) {
	OCR1A = _CYCLES_HORZ_SYNC;
	line_handler = &blank_line;
}
display.scanLine++;

}
static void inline wait_until(uint8_t time) {
asm volatile (
"subi	%[time], 10\n"
"sub	%[time], %[tcnt1l]\n\t"
"100:\n\t"
"subi	%[time], 3\n\t"
"brcc	100b\n\t"
"subi	%[time], 0-3\n\t"
"breq	101f\n\t"
"dec	%[time]\n\t"
"breq	102f\n\t"
"rjmp	102f\n"
"101:\n\t"
"nop\n"
"102:\n"
:
: [time] "a" (time),
[tcnt1l] "a" (TCNT1L)
);
}
void render_line6c() {
#ifndef REMOVE6C
asm volatile (
"ADD	r26,r28\n\t"
"ADC	r27,r29\n\t"
//save PORTB
"in    r16,%[port]\n\t"    ANDI_HWS
	"rjmp	enter6\n"
"loop6:\n\t"
	"bst	__tmp_reg__,0\n\t"			//8
	BLD_HWS     "out  %[port],r16\n"
"enter6:\n\t"
	"LD		__tmp_reg__,X+\n\t"			//1
	"nop\n"
	"bst	__tmp_reg__,7\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"   "nop\n"						//2
	"bst	__tmp_reg__,6\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"   "nop\n"						//3
	"bst	__tmp_reg__,5\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"   "nop\n"						//4
	"bst	__tmp_reg__,4\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"   "nop\n"						//5
	"bst	__tmp_reg__,3\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"   "nop\n"						//6
	"bst	__tmp_reg__,2\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"   "nop\n"						//7
	"bst	__tmp_reg__,1\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"dec	%[hres]\n\t"
	"brne	loop6\n\t"					//go too loopsix
	"nop\n"  "nop\n"
	"bst	__tmp_reg__,0\n\t"			//8
	BLD_HWS     "out  %[port],r16\n"

	"in    r16,%[port]\n\t"    ANDI_HWS
	BST_HWS
	BLD_HWS     "out  %[port],r16\n\t"
	:
	: [port] "i" (_SFR_IO_ADDR(PORT_VID)),
	"x" (display.screen),
	"y" (renderLine),
	[hres] "d" (display.hres)
	: "r16" // try to remove this clobber later...
);
#endif

}
void render_line5c() {
#ifndef REMOVE5C
asm volatile (
"ADD	r26,r28\n\t"
"ADC	r27,r29\n\t"
//save PORTB
"in    r16,%[port]\n\t"    ANDI_HWS
	"rjmp	enter5\n"
"loop5:\n\t"
	"bst	__tmp_reg__,0\n\t"			//8
	BLD_HWS     "out  %[port],r16\n"
"enter5:\n\t"
	"LD		__tmp_reg__,X+\n\t"			//1
	"bst	__tmp_reg__,7\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"						//2
	"bst	__tmp_reg__,6\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"						//3
	"bst	__tmp_reg__,5\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"						//4
	"bst	__tmp_reg__,4\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"						//5
	"bst	__tmp_reg__,3\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"  "nop\n"						//6
	"bst	__tmp_reg__,2\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"nop\n"						//7
	"dec	%[hres]\n\t"
	"bst	__tmp_reg__,1\n\t"
	BLD_HWS     "out  %[port],r16\n\t"
	"brne	loop5\n\t"					//go too loop5
	"nop\n"
	"bst	__tmp_reg__,0\n\t"			//8
	BLD_HWS     "out  %[port],r16\n"

	"in    r16,%[port]\n\t"    ANDI_HWS
	BST_HWS
	BLD_HWS     "out  %[port],r16\n\t"
	:
	: [port] "i" (_SFR_IO_ADDR(PORT_VID)),
	"x" (display.screen),
	"y" (renderLine),
	[hres] "d" (display.hres)
	: "r16" // try to remove this clobber later...
);
#endif

}
void render_line4c() {
#ifndef REMOVE4C
asm volatile (
"ADD	r26,r28\n\t"
"ADC	r27,r29\n\t"
	"rjmp	enter4\n"
"loop4:\n\t"
	"lsl	__tmp_reg__\n\t"			//8
	"out	%[port],__tmp_reg__\n\t"
"enter4:\n\t"
	"LD		__tmp_reg__,X+\n\t"			//1
	"nop\n"
	"out	%[port],__tmp_reg__\n\t"
	"nop\n"  "nop\n"						//2
	"lsl	__tmp_reg__\n\t"
	"out	%[port],__tmp_reg__\n\t"
	"nop\n"  "nop\n"						//3
	"lsl	__tmp_reg__\n\t"
	"out	%[port],__tmp_reg__\n\t"
	"nop\n"  "nop\n"						//4
	"lsl	__tmp_reg__\n\t"
	"out	%[port],__tmp_reg__\n\t"
	"nop\n"  "nop\n"						//5
	"lsl	__tmp_reg__\n\t"
	"out	%[port],__tmp_reg__\n\t"
	"nop\n"  "nop\n"						//6
	"lsl	__tmp_reg__\n\t"
	"out	%[port],__tmp_reg__\n\t"
	"nop\n"						//7
	"lsl	__tmp_reg__\n\t"
	"dec	%[hres]\n\t"
	"out	%[port],__tmp_reg__\n\t"
	"brne	loop4\n\t"					//go too loop4
	"nop\n"						//8
	"lsl	__tmp_reg__\n\t"
	"out	%[port],__tmp_reg__\n\t"
	"nop\n\t"
"nop\n\t"
"nop\n"
	"cbi	%[port],7\n\t"
	:
	: [port] "i" (_SFR_IO_ADDR(PORT_VID)),
	"x" (display.screen),
	"y" (renderLine),
	[hres] "d" (display.hres)
	: "r16" // try to remove this clobber later...
);
#endif

}
// only 16mhz right now!!!
void render_line3c() {
#ifndef REMOVE3C
asm volatile (
".macro byteshift\n\t"
"LD		tmp_reg,X+\n\t"
"out	%[port],tmp_reg\n\t"	//0
"nop\n\t"
"lsl	tmp_reg\n\t"
"out	%[port],tmp_reg\n\t"	//1
"nop\n\t"
"lsl	tmp_reg\n\t"
"out	%[port],tmp_reg\n\t"	//2
"nop\n\t"
"lsl	tmp_reg\n\t"
"out	%[port],tmp_reg\n\t"	//3
"nop\n\t"
"lsl	tmp_reg\n\t"
"out	%[port],tmp_reg\n\t"	//4
"nop\n\t"
"lsl	tmp_reg\n\t"
"out	%[port],tmp_reg\n\t"	//5
"nop\n\t"
"lsl	tmp_reg\n\t"
"out	%[port],tmp_reg\n\t"	//6
"nop\n\t"
"lsl	tmp_reg\n\t"
"out	%[port],tmp_reg\n\t"	//7
".endm\n\t"
	"ADD	r26,r28\n\t"
	"ADC	r27,r29\n\t"

	"cpi	%[hres],30\n\t"		//615
	"breq	skip0\n\t"
	"cpi	%[hres],29\n\t"
	"breq	jumpto1\n\t"
	"cpi	%[hres],28\n\t"
	"breq	jumpto2\n\t"
	"cpi	%[hres],27\n\t"
	"breq	jumpto3\n\t"
	"cpi	%[hres],26\n\t"
	"breq	jumpto4\n\t"
	"cpi	%[hres],25\n\t"
	"breq	jumpto5\n\t"
	"cpi	%[hres],24\n\t"
	"breq	jumpto6\n\t"
"jumpto1:\n\t"
	"rjmp	skip1\n\t"
"jumpto2:\n\t"
	"rjmp	skip2\n\t"
"jumpto3:\n\t"
	"rjmp	skip3\n\t"
"jumpto4:\n\t"
	"rjmp	skip4\n\t"
"jumpto5:\n\t"
	"rjmp	skip5\n\t"
"jumpto6:\n\t"
	"rjmp	skip6\n\t"
"skip0:\n\t"
	"byteshift\n\t"	//1		\\643
"skip1:\n\t"
	"byteshift\n\t"	//2
"skip2:\n\t"
	"byteshift\n\t"	//3
"skip3:\n\t"
	"byteshift\n\t"	//4
"skip4:\n\t"
	"byteshift\n\t"	//5
"skip5:\n\t"
	"byteshift\n\t"	//6
"skip6:\n\t"
	"byteshift\n\t"	//7
	"byteshift\n\t"	//8
	"byteshift\n\t"	//9
	"byteshift\n\t"	//10
	"byteshift\n\t"	//11
	"byteshift\n\t"	//12
	"byteshift\n\t"	//13
	"byteshift\n\t"	//14
	"byteshift\n\t"	//15
	"byteshift\n\t"	//16
	"byteshift\n\t"	//17
	"byteshift\n\t"	//18
	"byteshift\n\t"	//19
	"byteshift\n\t"	//20
	"byteshift\n\t"	//21
	"byteshift\n\t"	//22
	"byteshift\n\t"	//23
	"byteshift\n\t"	//24
	"byteshift\n\t"	//25
	"byteshift\n\t"	//26
	"byteshift\n\t"	//27
	"byteshift\n\t"	//28
	"byteshift\n\t"	//29
	"byteshift\n\t"	//30

	"nop\n"  "nop\n"
	"cbi	%[port],7\n\t"
	:
	: [port] "i" (_SFR_IO_ADDR(PORT_VID)),
	"x" (display.screen),
	"y" (renderLine),
	[hres] "d" (display.hres)
	: "r16" // try to remove this clobber later...
);
#endif

}

@BoRKeLSNoRKeL Thank you very much again. I fixed the libraries "TVout.cpp" and "video_gen.cpp", now the compiler produces errors about unknown names of functions and structures. Apparently the versions of our libraries do not match.  :-)

I upload to my github (first time)  only my ino file is missing with
'includes' i look into that.  Look at borkelsnorkel github please.
Greetings.
Op 30 okt. 2017 20:50 schreef "NikitaGerasin"<EMAIL_ADDRESS>
@BoRKeLSNoRKeL https://github.com/borkelsnorkel Thank you very much
again. I fixed the libraries "TVout.cpp" and "video_gen.cpp", now the
compiler produces errors about unknown names of functions and structures.
Apparently the versions of our libraries do not match.  :-)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/sheaivey/rx5808-pro-diversity/issues/89#issuecomment-340563520,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AWpYuGNzfstSHjvlSyjAdPKNIrL_3GbGks5sxiiPgaJpZM4KH5Er
.


How do I retain the actual names of registers ?

In our design there are D flipflops and fifo registers. After synthesing yosys , renames the flip flops
sky130_fd_sc_hd_dfrtp_2 _14258 (
.CLK(CLK),
.D(00157),
.Q(mv_output[20]),
.RESET_B(RST_N)
);
When synthesizing Verilog in openlane yosys generates a verilog rtl which consists of  6-digit codes for the registers. Thus most of the registers have unhelpful names such as 14258.
How do I retain the actual names of the registers usded in the verilog rtl?

@prathiksha97
Add "SYNTH_AUTONAME": 1, part of config.json and try it.

I added this step in yosys tcl file
scripts/yosys/synth.tcl
@@ -335,6 +335,17 @@ proc run_strategy {output script strategy_name {postfix_with_strategy 0}} {
tee -o "$::env(synth_report_prefix).$strategy_escaped.chk.rpt" check
tee -o "$::env(synth_report_prefix).$strategy_escaped.stat.rpt" stat -top $::env(DESIGN_NAME) -liberty [lindex $::env(LIB_SYNTH_NO_PG) 0]
if { [info exists ::env(SYNTH_AUTONAME)] && $::env(SYNTH_AUTONAME) } {
    # Generate public names for the various nets, resulting in very long names that include
    # the full heirarchy, which is preferable to the internal names that are simply
    # sequential numbers such as `000019`. Renamed net names can be very long, such as:
    #     manual_reset_gf180mcu_fd_sc_mcu7t5v0_dffq_1_Q_D_gf180mcu \
    #     fd_sc_mcu7t5v0_nor3_1_ZN_A1_gf180mcu_fd_sc_mcu7t5v0aoi21 \
    #     1_A2_A1_gf180mcu_fd_sc_mcu7t5v0_nand3_1_ZN_A3_gf180mcu_fd \
    #     sc_mcu7t5v0_and3_1_A3_Z_gf180mcu_fd_sc_mcu7t5v0_buf_1_I_Z
    autoname
}

And I did add "SYNTH_AUTONAME": 1 in config.json but I got this error

Only SYNTH_AUTONAME is needed. No need to modify synth.tcl. Do you get this error without SYNTH_AUTONAME on?

Something issue with src/mk_combo_mul.v in line 112

@kareefardi yess, I tried running without modifying the synth.tcl and with "SYNTH_AUTONAME" :1 in config.json
I still got the error
Without adding "SYNTH_AUTONAME":1 in config.json the flow runs without any errors

can you share OpenLane commit you're using?

@vijayank88
This is the commit I am using
commit a0b19fa68b79eff3e29b674106b06d20aab637f1 (HEAD, tag: 2022.11.02)
Author: Mohamed Gaber<EMAIL_ADDRESS>Date:   Tue Nov 1 19:09:25 2022 +0200
Yess I did add this manually in synth.tcl
if { [info exists ::env(SYNTH_AUTONAME)] && $::env(SYNTH_AUTONAME) } {
# Generate public names for the various nets, resulting in very long names that include
# the full heirarchy, which is preferable to the internal names that are simply
# sequential numbers such as 000019. Renamed net names can be very long, such as:
#     manual_reset_gf180mcu_fd_sc_mcu7t5v0_dffq_1_Q_D_gf180mcu
#     fd_sc_mcu7t5v0_nor3_1_ZN_A1_gf180mcu_fd_sc_mcu7t5v0aoi21
#     1_A2_A1_gf180mcu_fd_sc_mcu7t5v0_nand3_1_ZN_A3_gf180mcu_fd
#     sc_mcu7t5v0_and3_1_A3_Z_gf180mcu_fd_sc_mcu7t5v0_buf_1_I_Z
autoname
}

@prathiksha97 2022.11.02 it is last year tag.
Better updated and run again.
git checkout master
git pull
make

@vijayank88
This is the commit I am using
commit a0b19fa68b79eff3e29b674106b06d20aab637f1 (HEAD, tag: 2022.11.02)
Author: Mohamed Gaber<EMAIL_ADDRESS>Date:   Tue Nov 1 19:09:25 2022 +0200
I added the below code in synth.tcl, this was done manually
if { [info exists ::env(SYNTH_AUTONAME)] && $::env(SYNTH_AUTONAME) } {
# Generate public names for the various nets, resulting in very long names that include
# the full heirarchy, which is preferable to the internal names that are simply
# sequential numbers such as 000019. Renamed net names can be very long, such as:
#     manual_reset_gf180mcu_fd_sc_mcu7t5v0_dffq_1_Q_D_gf180mcu
#     fd_sc_mcu7t5v0_nor3_1_ZN_A1_gf180mcu_fd_sc_mcu7t5v0aoi21
#     1_A2_A1_gf180mcu_fd_sc_mcu7t5v0_nand3_1_ZN_A3_gf180mcu_fd
#     sc_mcu7t5v0_and3_1_A3_Z_gf180mcu_fd_sc_mcu7t5v0_buf_1_I_Z
autoname
}

Can you remove the manual change, update OpenLane and try again?

@kareefardi
When I removed the manual change the flow ran without any errors
But I am still getting the 6 digits instead of actual names
Also I updated Openlane

@prathiksha97 Add "SYNTH_AUTONAME": 1, part of config.json and try it.
Note: Add a synthesis step to generate names for instances. This results in instance names that can be very long, but may be more useful than the internal names that are six digit numbers.

@prathiksha97 now add this part of config.json and run again.

I'm sorry but previously my Openlane wasn't updated but when I updated and ran the design I am getting this error

The environment is not matching with the Openlane scripts

Not sure how you updated OpenLane, but I would try a fresh clone and following the quick start guide.

@kareefardi  I ran these cmds
git checkout master
git pull
make
This was the commit after updating
commit 4c74d8b13c39ac20acfd412d90fdd689a959fafc (HEAD -> master, tag: 2023.08.01, origin/master, origin/HEAD)
Author: Kareem Farid<EMAIL_ADDRESS>Date:   Mon Jul 31 17:13:43 2023 +0000

You need to unset that variable. This is causing the issue above.

@kareefardi  and @vijayank88  Thank You!!
I could get the desired results after adding the "SYNTH_AUTONAME": 1 in config json file and
changing the yosys synth.tcl file.


Fix code examples

I could be wrong, but I didn't find the RetryPolicy class. Therefore I use the interface IRetryPolicy instead.

@fldvrees : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Approved!  Thanks!

#sign-off


Keyboard focus states inside datepicker

We need a keyboard focus state for the arrow buttons used to select a month in the datepicker:

We also need a specific keyboard focus state for the selected day.

I'll just tag the designers here to get your attention 😅
@Steinop @Mikkelinski @idalower

@piofinn https://www.figma.com/file/Wh8Gfnesn25shH31sKyIaT/Jøkul-bibliotek?node-id=1143%3A65
Could work as a first draft for focus & hover in the datepicker


fix(cli): reworks --mst to --state=mst

Please verify the following:

[x] yarn test jest tests pass with new tests, if relevant
[x] yarn lint eslint checks pass with new code, if relevant
[x] yarn format:check prettier checks pass with new code, if relevant
[x] README.md (or relevant documentation) has been updated with your changes

Describe your PR

Updates --mst to --state=mst|none with default of mst
Refactors remove-mst-markup/code command to read same as remove demo block

TODO

[ ] Discuss switching it from Y/n to choices

The more I look at it, the more I like it.


props Not updated in time

Vue version
3.2.47
Link to minimal reproduction
https://sfc.vuejs.org/#eNqFUstO6zAQ/ZWRN6RVa5dtblrpCrFFCFh6E8KkBOKHbKcgRfl3xnZTXlLZeR7nzPicGdl/a/lhQFayyjeuswE8hsHupO6UNS7ACA7bFWh8Dw9d8woTtM4ouCDQxanpijIpLRkXFCROyf5JDVI3RvsAjVF32MI20hULquT04NHd1AqPBRkX6gkaO4DAtM1Dp9AMoSgWsN3BGPMzih/qfohYye5r5Qe9z0OP03KZ7zHE5jQ1csLpN185z4KmhdTTCi43m01MVCKLRTJREFDZvg5IEUAVtaCvbCXLfJJBqYmJEvPaku2qKBMBKnFCsxXLcq5VbfmLN5pcSavJY8FLVs7LSpYkLunxHIL1pRC+baLuL54btxf04m7QgdTj6NX60Zk3mk/Ekq2+cAhKHtCtHeondOjOcf5o/cWbpCKl6CvzFfxxWT/uSWqxXIJ1xnpYivlIcryFJ2w7jbcxKpIMUdcS7oPryHk9zQbnvut3azzmxpObn15rb3rkvdkXiZ5HrqPZJE/iOmfz8+VuHNMCME2VoPC7mdMHmi0klQ==
Steps to reproduce
1、open Chrome Console
What is expected?
print Samsung
print Samsung
What is actually happening?
print Apple
print Samsung
System Info
No response
Any additional comments?
No response

need more info

Yeah, I can't see the described problem either. SFC playground example works as desired.

Closing this as I don't see any problem

Closing this as I don't see any problem

I filled out the expected and actual data inversely

 need more info

I filled out the expected and actual data inversely

I think this is expected because the task of updating the component after the props change is done in a queue.
cc @LinusBorg

Correct


Special characters like Slashes are not dealt with properly

Checklist

[X] I'm reporting a bug unrelated to a specific site
[X] I've verified that I'm running yt-dlp version 2022.04.08 (update instructions) or later (specify commit)
[X] I've checked that all provided URLs are alive and playable in a browser
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Description
YTID: UnIhRpIT7nc
Full Title:
inabakumori - Lagtrain (Vo. Kaai Yuki) / 稲葉曇『ラグトレイン』Vo. 歌愛ユキ
yt-dlp output title:
稲葉曇『ラグトレイン』Vo. 歌愛ユキ [UnIhRpIT7nc]
Command:
yt-dlp -x https://www.youtube.com/watch?v=UnIhRpIT7nc
Issue:
The title is truncated to the part after the slash.
YTID: MhyTR_M8QnA
Full Title:
Nightcore - Lonely Ones // LOVA (Lyrics)
yt-dlp output title:
Nightcore - Lonely Ones _ LOVA (Lyrics) [MhyTR_M8QnA]
Command:
yt-dlp -x https://www.youtube.com/watch?v=MhyTR_M8QnA
Issue:
The slashes are substituted with underscores.
YTID: _bHXZvm2hUY
Full Title:
10 | Wait, he has a point
yt-dlp output title:
10 _ Wait, he has a point [_bHXZvm2hUY]
Command:
yt-dlp -x https://www.youtube.com/watch?v=_bHXZvm2hUY
Issue:
"|" is substituted with an underscore.
YTID: Z53VDLjBZhY
Full Title:
96 | Cat? I'm a kitty cat.
yt-dlp output title:
96 _ Cat I'm a kitty cat. [Z53VDLjBZhY]
Command:
yt-dlp -x https://www.youtube.com/watch?v=Z53VDLjBZhY
Issue:
"|" is substituted with an underscore and the questionmark is non-existent. * whispers *: (on ext4 filesystems you can have a questionmark in a filename)
Note: i know the id can be removed with ´-o "%(title)s.%(ext)s"´. The yt-video-id is not in question.
Verbose log
$ yt-dlp -x -vU https://www.youtube.com/watch?v=UnIhRpIT7nc
[debug] Command-line config: ['-x', '-vU', 'https://www.youtube.com/watch?v=UnIhRpIT7nc']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, err utf-8, pref UTF-8
[debug] yt-dlp version 2022.04.08 [7884ade65] (zip)
[debug] Python version 3.8.10 (CPython 64bit) - Linux-5.4.0-107-generic-x86_64-with-glibc2.29
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 4.2.4, ffprobe 4.2.4
[debug] Optional libraries: brotli, certifi, Crypto, secretstorage, sqlite
[debug] Proxy map: {}
Latest version: 2022.04.08, Current version: 2022.04.08
yt-dlp is up to date (2022.04.08)
[debug] [youtube] Extracting URL: https://www.youtube.com/watch?v=UnIhRpIT7nc
[youtube] UnIhRpIT7nc: Downloading webpage
[youtube] UnIhRpIT7nc: Downloading android player API JSON
[debug] Sort order given by extractor: quality, res, fps, hdr:12, source, codec:vp9.2, lang, proto
[debug] Formats sorted by: hasvid, ie_pref, quality, res, fps, hdr:12(7), source, vcodec:vp9.2(10), acodec, lang, proto, filesize, fs_approx, tbr, vbr, abr, asr, vext, aext, hasaud, id
[info] UnIhRpIT7nc: Downloading 1 format(s): 251
[debug] Invoking downloader on "https://rr4---sn-8xgn5uxa-4g5s.googlevideo.com/videoplayback?expire=1649631462&ei=hgxTYqHfIIbVgAedzLH4BQ&ip=<IP_ADDRESS>&id=o-AIzPOZnFyM1auRd6hQjOVWzlVYzAeeCAiPFS0lMYHw5C&itag=251&source=youtube&requiressl=yes&mh=8b&mm=31%2C29&mn=sn-8xgn5uxa-4g5s%2Csn-4g5ednds&ms=au%2Crdu&mv=m&mvi=4&pl=24&initcwndbps=1471250&vprv=1&mime=audio%2Fwebm&gir=yes&clen=3957278&dur=251.881&lmt=1615029428068029&mt=1649609085&fvip=4&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5531432&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRgIhAPRRQ818o8gfhe27t8ZFLnolE-p53CTm2qcXdOk3_-gBAiEAwXX85NhT_eHrzddGfMfwFgxqxSRvhgwzpvBvX3BFtd4%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRAIgfYy92rYLFF17tGu0Q9vtMBOIv4GDM70KEolgy3YcIvICIFSkDWMeJjtB7MZCmC6EV5egXtA2af5rWmK3Uq9A_7vm"
[download] Destination: 稲葉曇『ラグトレイン』Vo. 歌愛ユキ [UnIhRpIT7nc].webm
[download] 100% of 3.77MiB in 00:00
[debug] ffmpeg command line: ffprobe -show_streams 'file:稲葉曇『ラグトレイン』Vo. 歌愛ユキ [UnIhRpIT7nc].webm'
[ExtractAudio] Destination: 稲葉曇『ラグトレイン』Vo. 歌愛ユキ [UnIhRpIT7nc].opus
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:稲葉曇『ラグトレイン』Vo. 歌愛ユキ [UnIhRpIT7nc].webm' -vn -acodec copy -movflags +faststart 'file:稲葉曇『ラグトレイン』Vo. 歌愛ユキ [UnIhRpIT7nc].opus'
Deleting original file 稲葉曇『ラグトレイン』Vo. 歌愛ユキ [UnIhRpIT7nc].webm (pass -k to keep)

YTID: UnIhRpIT7nc
Full Title:
inabakumori - Lagtrain (Vo. Kaai Yuki) / 稲葉曇『ラグトレイン』Vo. 歌愛ユキ
yt-dlp output title:
稲葉曇『ラグトレイン』Vo. 歌愛ユキ [UnIhRpIT7nc]
Command:
yt-dlp -x youtube.com/watch?v=UnIhRpIT7nc
Issue:
The title is truncated to the part after the slash

That is the correct title. The rest is translated title which yt-dlp doesn't currently extract https://github.com/yt-dlp/yt-dlp/issues/387
❯ yt-dlp UnIhRpIT7nc -O filename= -O title=
filename = '稲葉曇『ラグトレイン』Vo. 歌愛ユキ [UnIhRpIT7nc].webm'
title = '稲葉曇『ラグトレイン』Vo. 歌愛ユキ'

The rest are not bugs - as in they are intentional changes. We can definitely discuss if/how it is possible to detect compatible filesystems and avoid those "translations"


Class with Pessimistic Locking, Detail View Save

Hi,
I have a Class with the pessimisticlockig attribute. If I create a new Dataobject it works fine but if I try to edit the dataobject I get an error. How to edit/save such an object?
The class:
[PessimisticLocking]
[Custom("ViewEditMode", "View")]
public partial class AccountingVoucherNumber : XPCustomObject
{
Guid fOid;
[Key(true)]
public Guid Oid
{
get { return fOid; }
set { SetPropertyValue("Oid", ref fOid, value); }
}
string fName;
public string Name
{
get { return fName; }
set { SetPropertyValue("Name", ref fName, value); }
}
Mandatory fMandatory;
[DevExpress.Persistent.Validation.RuleRequiredField(DevExpress.Persistent.Validation.DefaultContexts.Save)]
public Mandatory Mandatory
{
get { return fMandatory; }
set { SetPropertyValue("Mandatory", ref fMandatory, value); }
}
AccountingPeriod fAccountingPeriod;
[Association(@"AccountingVoucherNumberReferencesAccountingPeriod")]
[DevExpress.Persistent.Validation.RuleRequiredField(DevExpress.Persistent.Validation.DefaultContexts.Save)]
public AccountingPeriod AccountingPeriod
{
get { return fAccountingPeriod; }
set { SetPropertyValue("AccountingPeriod", ref fAccountingPeriod, value); }
}
AccountingSection fAccountingSection;
[Association(@"AccountingVoucherNumberReferencesAccountingSection")]
[DevExpress.Persistent.Validation.RuleRequiredField(DevExpress.Persistent.Validation.DefaultContexts.Save)]
public AccountingSection AccountingSection
{
get { return fAccountingSection; }
set { SetPropertyValue("AccountingSection", ref fAccountingSection, value); }
}
int fNextNumber;
[ColumnDefaultValue(1)]
public int NextNumber
{
get { return fNextNumber; }
set { SetPropertyValue("NextNumber", ref fNextNumber, value); }
}
	public AccountingVoucherNumber(Session session) : base(session) { }
    public override void AfterConstruction() { base.AfterConstruction(); }

}

The Error when editing the name and click the save button:
Key cannot be null.
Parameter name: key
at System.Collections.Specialized.ListDictionary.get_Item(Object key)
at System.Collections.Specialized.HybridDictionary.get_Item(Object key)
at System.ComponentModel.PropertyDescriptorCollection.Find(String name, Boolean ignoreCase)
at DevExpress.ExpressApp.Xpo.DataLockingHelper.CollectObjectLockingInfo(Session session, XPClassInfo classInfo, List`1 objectToSaveKeys, UInt16 hostParametersMaxNumber)
at DevExpress.ExpressApp.Xpo.DataLockingHelper.GetDataLockingInfo(Session session, UInt16 hostParametersMaxNumber)
at DevExpress.ExpressApp.Xpo.XPObjectSpace.DevExpress.ExpressApp.IDataLockingManager.GetDataLockingInfo()
at DevExpress.ExpressApp.SystemModule.ProcessDataLockingInfoController.GetDataLockingInfo()
at DevExpress.ExpressApp.SystemModule.ProcessDataLockingInfoController.action_Executing(Object sender, CancelEventArgs e)
at System.ComponentModel.CancelEventHandler.Invoke(Object sender, CancelEventArgs e)
at DevExpress.ExpressApp.Actions.ActionBase.OnExecuting(CancelEventArgs e)
at DevExpress.ExpressApp.Actions.ActionBase.ExecuteCore(Delegate handler, ActionBaseEventArgs eventArgs)

We will try to answer all questions that do not require research within 24hr.
To prioritize cases that require research we use the following labels in order. For all other issues the posting time is respected.

❤ Bronze Sponsor
❤ Sponsor
❤ Backer
Installation
ShowStopper
Nuget
Contribution
BreakingChange
ReproSample
Deployment
must-have

This case is prioritized.

hmm i do not see how it relates to this framework, does it? the stacktrace you provided has no reference nor I recall a related feature. I can say my opinion but I am not the best to handle this case u should probably ask the xpo support guys.
the posible line that throws in the xaf code base is :
private static IEnumerable<ObjectLockingInfo> CollectObjectLockingInfo(Session session, XPClassInfo classInfo, List<Object> objectToSaveKeys, UInt16 hostParametersMaxNumber) {
	List<ObjectLockingInfo> result = new List<ObjectLockingInfo>();
	IEnumerable<ViewRecord> view = GetDataFromDataLayer(session, classInfo, objectToSaveKeys, hostParametersMaxNumber);
	foreach(ViewRecord record in view) {
		Object objectToSave = session.GetLoadedObjectByKey(classInfo, record[classInfo.KeyProperty.Name]);
		Boolean isLocked;
		if(classInfo.OptimisticLockingBehavior == OptimisticLockingBehavior.ConsiderOptimisticLockingField) {
			Object valueInSession = classInfo.OptimisticLockFieldInDataLayer.GetValue(objectToSave);
			//THROWS IN THE NEXT LINE
			Object valueInDataLayer = record[classInfo.OptimisticLockFieldName];
			isLocked = !AreEqual(valueInDataLayer, valueInSession);
		}
		else {
			isLocked = IsLocked(session, classInfo, objectToSave, record);
		}
		if(isLocked) {
			IList<String> serverSideModifiedMemberNames = null;
			Boolean canMerge = CanMerge(session, classInfo, objectToSave, record, out serverSideModifiedMemberNames);
			result.Add(new ObjectLockingInfo(objectToSave, canMerge, serverSideModifiedMemberNames));
		}
	}
	return result;
}

given this fact my focus would be some related IntermediateClassInfo that causes this effect. However cannot guess more if you want to debug it your self you can use the steps described at [1. Index the symbols to your custom DevExpresss installation location] (https://github.com/eXpandFramework/DevExpress.XAF/wiki/How-to-boost-your-DevExpress-Debugging-Experience#1-index-the-symbols-to-your-custom-devexpresss-installation-location)
to step in the XAF code and see what exactly is going on
hoev

Hi Tolis,
I changed at the top to
[PessimisticLocking]
[Custom("ViewEditMode", "View")]
[OptimisticLocking(false)]
then no error occurs, only the merge Window, so that you can merge and save.

good work!
i now have a better picture the Xpand.Persistent.Base.General.Controllers.PessimisticLockingAttribute is an eXpandFramework attribute. Got confused apologies.
Looking a bit deeper I see there is a code to add the OptimisticLocking false
https://github.com/eXpandFramework/eXpand/blob/f916916dcf045b5317c48a8d7740fdc169f86fe4/Xpand/Xpand.ExpressApp/Xpand.ExpressApp/SystemModule/XpandSystemModule.cs#L96-L108
not clear though why it did not work

Issue is deprioritized as no Assignee found and scheduled for auto-close if no activity in the next 60 days.

Closing issue for age. Feel free to reopen it at any time.
.Thank you for your contribution.


Add dynamic time filters

Currently you can only choose 3 months, 1 months, 7 days, 24 hours and 1 hour.
We want to allow our users to select dynamic time ranges

done


[cffLib_test] Test setting topDict.Encoding

#1177
Sorry for the boilerplate again.

there's a fontTools.misc.testTools. Just define a class in there which subclasses unittest.TestCase (find a good name for it, I don't know right now), set all the boilerplate methods in it but don't add any test_ methods of course. Then in your test modules, import it and use it as a base class for your actual test case classes.

the assertRaisesRegex thing we want it for all our unittest-based tests. The other helper methods, only for some of them that actually use them.
So I'd say, in testTools we from unittest import TestCase as _TestCase and then define a generic class TestCase(_TestCase)  that has the renamed assertRaisesRegex method. And we change all the tests to subclass that one instead of the built-in so we don't need to repeat that trick.
For this ttx-roundtripping-sort-of-tests, you can define yet another subclass of our TestCase class (always inside testTools) that defines those, and import and use it when you need it, like in here.

the ci test failures are completely unrelated
https://travis-ci.org/fonttools/fonttools/jobs/344901864#L721
unicode_literals is really weird.. why is this triggering only now with your PR whereas it passed on master?
the fix (only old versions of python 2.7.x) would be to ensure that the struct format string is a native str (bytes on python2, unicode on python3). Either by removing unicode_literals (and then check all the string literals and add u"" as necessary), or by calling our tostr(">HHH") which seems silly but does the right thing.

Got it. Working on the changes.

why is this triggering only now with your PR whereas it passed on master?

It must be because I'm special 😁
The changes are in. I opted for the easiest fix on the name table test.


Recognize KISAO:0000656 in addition to KISA0:0000107

Tellurium recognizes KISA0:0000107 for the boolean argument whether to use adaptive time steps. However, this is a term for an algorithm characteristic rather than an algorithm parameter.
I added an algorithm parameter term KISAO:0000656 for this purpose.
Tellurium should either replace KISAO:0000107 with KISAO:0000656 or recognize KISAO:0000656 as a "synonym" for KISAO:0000107.
Here's the relevant line:
https://github.com/sys-bio/tellurium/blob/3e7cfb57d448ca507e5193470f7526c98f070188/tellurium/sedml/tesedml.py#L245

Actually, the above line should be deleted because neither should be recognized in conjunction with SED-ML UniformTimeCourse.
KISAO_0000565 could be recognized for variable time courses described with the new SED-ML Analysis class.

OK, since the dictionary in question is just 'terms Tellurium recognizes', I added the new term instead of removing the old one.  Eventually when we support the generic Analysis class, we'll want it in the list.
For now, there's just an inherent contradiction in providing a 'variable step size' parameter for a uniform time course; the proper thing to do would be to provide an error.  I'll leave this open until that's done.

Another possible middle ground is to raise a DeprecationWarning to discourage its use (e.g., to communicate that this would not be portable across tools) while retaining support.


Update mongodb.yaml

Doesn't look like any changes were made

As you can see , when you uncomment the code , the separation in the yaml file is not at the right place and made me loose half an hour by looking after the indentation or else.


Support file uploading via SFTP

Adds SFTP class with upload() method. I don't need download or any other functionality yet, but it seems to be rather easy to implement if it will be needed.

Apologies for looking at this after such a long delay, left a couple comments!


Error training example engine

Hi MMT team,
I've installed MMT v2.4 binaries on a new server with Ubuntu 16.04. Trying to train the example engine provided by default, I get next error. Can you help me to resolve this?
$ ./mmt create -e test en it examples/data/train/

=========== TRAINING STARTED ===========

ENGINE:  test
BILINGUAL CORPORA: 3 documents
MONOLINGUAL CORPORA: 0 documents
LANGS:   en > it

INFO: (1 of 6) Corpora cleaning...                                     DONE (in 3s)
INFO: (2 of 6) Corpora pre-processing...                               DONE (in 2s)
INFO: (3 of 6) Context Analyzer training...                            DONE (in 1s)
INFO: (4 of 6) Aligner training...                                     DONE (in 4s)
INFO: (5 of 6) Translation Model training...
ERROR Unexpected exception:
        Command '/home/pangeanic/mmt/build/bin/sapt_build --lex /home/pangeanic/mmt/runtime/test/tmp/training/tm/model.tlex --input /home/pangeanic/mmt/runtime/test/tmp/training/tm/corpora --model /home/pangeanic/mmt/engines/test/models/decoder/sapt -s en -t it -v /home/pangeanic/mmt/engines/test/models/decoder/vocab.vb' failed with exit code -4

Traceback (most recent call last):
  File "./mmt", line 846, in <module>
    main()
  File "./mmt", line 792, in main
    actions[command](args)
  File "./mmt", line 186, in main_create
    training.start()
  File "/home/pangeanic/mmt/cli/training.py", line 63, in start
    self._builder.build(self)
  File "/home/pangeanic/mmt/cli/mmt/engine.py", line 402, in build
    self._build(resume=False, listener=listener)
  File "/home/pangeanic/mmt/cli/mmt/engine.py", line 482, in _build
    method(self, args, skip=skip, log=log_stream, delete_on_exit=self._delete_on_exit)
  File "/home/pangeanic/mmt/cli/mmt/engine.py", line 294, in __call__
    self._f(*args, **kwargs)
  File "/home/pangeanic/mmt/cli/mmt/phrasebased.py", line 320, in _train_tm
    self._engine.moses.pt.train(corpora, self._engine.aligner, working_dir, log=log)
  File "/home/pangeanic/mmt/cli/mmt/phrasebased.py", line 183, in train
    shell.execute(command, stdout=log, stderr=log)
  File "/home/pangeanic/mmt/cli/libs/shell.py", line 55, in execute
    raise ShellError(str_cmd, returncode, stderr_dump)
cli.libs.shell.ShellError: Command '/home/pangeanic/mmt/build/bin/sapt_build --lex /home/pangeanic/mmt/runtime/test/tmp/training/tm/model.tlex --input /home/pangeanic/mmt/runtime/test/tmp/training/tm/corpora --model /home/pangeanic/mmt/engines/test/models/decoder/sapt -s en -t it -v /home/pangeanic/mmt/engines/test/models/decoder/vocab.vb' failed with exit code -4

I see this error in mmt/runtime/test/logs/training.log:
== Backward model training ==
Initial setup... DONE in 0.212584s
Iteration 1:
        Computing alignments... DONE in 0.108556s
        Optimizing diagonal tension... DONE in 0.0289819s
        Normalizing translation table... DONE in 0.34735s
Iteration 2:
        Computing alignments... DONE in 0.114801s
        Optimizing diagonal tension... DONE in 0.0332708s
        Normalizing translation table... DONE in 0.347645s
Iteration 3:
        Computing alignments... DONE in 0.116061s
        Optimizing diagonal tension... DONE in 0.0332689s
        Normalizing translation table... DONE in 0.347978s
Iteration 4:
        Computing alignments... DONE in 0.11181s
        Optimizing diagonal tension... DONE in 0.0332601s
        Normalizing translation table... DONE in 0.349145s
Pruning model... DONE in 0.0260119s

Training DONE in 2.21196s

Writing model...DONE in 0.025722s
2018-03-06 12:49:27,620 [INFO] - Training step "train_aligner" completed in 4 s
2018-03-06 12:49:27,621 [INFO] - Training step "write_config" (6/9) started
2018-03-06 12:49:27,621 [INFO] - Training step "write_config" completed in 0 s
2018-03-06 12:49:27,622 [INFO] - Training step "train_tm" (7/9) started
2018-03-06 12:49:27,623 [DEBUG] - Shell exec: /home/pangeanic/mmt/build/bin/fa_align --model /home/pangeanic/mmt/engines/test/models/aligner/en__it.mdl --input /home/pangeanic/mmt/runtime/test/tmp/training/tm/corpora --output /home/pangeanic/mmt/runtime/test/tmp/training/tm/corpora --source en --target it --strategy 1
2018-03-06 12:49:28,141 [DEBUG] - Shell exec: /home/pangeanic/mmt/build/bin/fa_export --model /home/pangeanic/mmt/engines/test/models/aligner/en__it.mdl --output /home/pangeanic/mmt/runtime/test/tmp/training/tm/model.tlex
2018-03-06 12:49:28,433 [DEBUG] - Shell exec: /home/pangeanic/mmt/build/bin/sapt_build --lex /home/pangeanic/mmt/runtime/test/tmp/training/tm/model.tlex --input /home/pangeanic/mmt/runtime/test/tmp/training/tm/corpora --model /home/pangeanic/mmt/engines/test/models/decoder/sapt -s en -t it -v /home/pangeanic/mmt/engines/test/models/decoder/vocab.vb
Lexical model import DONE in 0.103695s
2018-03-06 12:49:28,773 [ERROR] - Unexpected exception
Traceback (most recent call last):
  File "/home/pangeanic/mmt/cli/mmt/engine.py", line 482, in _build
    method(self, args, skip=skip, log=log_stream, delete_on_exit=self._delete_on_exit)
  File "/home/pangeanic/mmt/cli/mmt/engine.py", line 294, in __call__
    self._f(*args, **kwargs)
  File "/home/pangeanic/mmt/cli/mmt/phrasebased.py", line 320, in _train_tm
    self._engine.moses.pt.train(corpora, self._engine.aligner, working_dir, log=log)
  File "/home/pangeanic/mmt/cli/mmt/phrasebased.py", line 183, in train
    shell.execute(command, stdout=log, stderr=log)
  File "/home/pangeanic/mmt/cli/libs/shell.py", line 55, in execute
    raise ShellError(str_cmd, returncode, stderr_dump)
ShellError: Command '/home/pangeanic/mmt/build/bin/sapt_build --lex /home/pangeanic/mmt/runtime/test/tmp/training/tm/model.tlex --input /home/pangeanic/mmt/runtime/test/tmp/training/tm/corpora --model /home/pangeanic/mmt/engines/test/models/decoder/sapt -s en -t it -v /home/pangeanic/mmt/engines/test/models/decoder/vocab.vb' failed with exit code -4

Best regards,
Alex

Hi Alex!
long story short: try to install MMT from source re-compiling the package - instructions are available at INSTALL.md - Installing from source.
More in details: the phrase-based version has some low-level code that relies on specific hardware. for optimization purposes. We make our builds on our hardware, but sometimes this is not compatible with other consumer machines. Re-compiling from scratch you should avoid this problem.
If you plan to train neural engines this is not required, you just have to specify the --neural option to MMT create:
./mmt create -e test en it examples/data/train/ --neural

You can check Hardware requirements here and be sure to follow the Pre-installation steps

Hi Davide,
Thanks for your answer, I'm going to try it.
BR,
Alex

Hi Davide,
Right now I'm with the compilation and I get this error in the "./compile" because Cassandra 3.11.0 isn't available anymore on the Apache site:
Installing RocksDB...

  GEN      util/build_version.cc
make: No se hace nada para 'shared_lib'.
RocksDB successfully built

Installing Cassandra 3.11.0...

Traceback (most recent call last):
  File "./compile", line 350, in <module>
    run_all()
  File "./compile", line 314, in run_all
    install_cassandra()
  File "./compile", line 270, in install_cassandra
    install_apache_lib(cassandra_apache_path, cassandra_home)
  File "./compile", line 175, in install_apache_lib
    apache_download(path, tar_destination, apache_connect(path))
  File "./compile", line 166, in apache_download
    raise Exception('Failed to download ' + apache_path)
Exception: Failed to download /cassandra/3.11.0/apache-cassandra-3.11.0-bin.tar.gz

Cassandra 3.11.2 is available: http://www.apache.org/dyn/closer.lua/cassandra/3.11.2/apache-cassandra-3.11.2-bin.tar.gz
Changing "CASSANDRA_VERSION = '3.11.0'" to "CASSANDRA_VERSION = '3.11.2'" makes the compilation work.
BR,
Alex

.. great!
We will change the Cassandra version ASAP (thanks for the report!) meanwhile you can just copy the cassandra and kafka folders from the binary version you already have: same folder names inside vendor.
It should work! Let me know if this does the trick.

Hi Davide,
After compiling/installing, I've got another error related to cassandra. I've needed to change also the pom.xml:
"<cassandra.version>3.11.0</cassandra.version>" to " <cassandra.version>3.11.2</cassandra.version>"
$ ./mmt create -e test en it examples/data/train

=========== TRAINING STARTED ===========

ENGINE:  test
BILINGUAL CORPORA: 3 documents
MONOLINGUAL CORPORA: 0 documents
LANGS:   en > it

INFO: (1 of 6) Corpora cleaning...                                     DONE (in 3s)
INFO: (2 of 6) Corpora pre-processing...                               DONE (in 2s)
INFO: (3 of 6) Context Analyzer training...                            DONE (in 1s)
INFO: (4 of 6) Aligner training...                                     DONE (in 5s)
INFO: (5 of 6) Translation Model training...                           DONE (in 3s)
INFO: (6 of 6) Language Model training...                              DONE (in 13s)

=========== TRAINING SUCCESS ===========

You can now start, stop or check the status of the server with command:
        ./mmt start|stop|status -e test

$ ./mmt start -e test
Starting MMT engine 'test'... OK
Loading models... FAIL

ERROR Unexpected exception:
        Exception('failed to start node, check log file for more details: /home/pangeanic/ModernMT/runtime/test/logs/node.log',)
Traceback (most recent call last):
  File "./mmt", line 846, in <module>
    main()
  File "./mmt", line 792, in main
    actions[command](args)
  File "./mmt", line 245, in main_start
    node.wait('READY')
  File "/home/pangeanic/ModernMT/cli/mmt/cluster.py", line 427, in wait
    raise Exception('failed to start node, check log file for more details: ' + self._log_file)
Exception: failed to start node, check log file for more details: /home/pangeanic/ModernMT/runtime/test/logs/node.log

The error is related to the version of cassandra:
2018-03-06 16:06:35,116 FATAL eu.modernmt.facade.ModernMT [main] Unexpected exception thrown by thread [main]
eu.modernmt.engine.BootstrapException: java.io.FileNotFoundException: File '/home/pangeanic/ModernMT/vendor/cassandra-3.11.0/conf/cassandra.yaml' does not exist
        at eu.modernmt.cluster.db.EmbeddedCassandra.start(EmbeddedCassandra.java:36)
        at eu.modernmt.cluster.ClusterNode.start(ClusterNode.java:395)
        at eu.modernmt.facade.ModernMT.start(ModernMT.java:53)
        at eu.modernmt.cli.ClusterNodeMain.main(ClusterNodeMain.java:168)
Caused by: java.io.FileNotFoundException: File '/home/pangeanic/ModernMT/vendor/cassandra-3.11.0/conf/cassandra.yaml' does not exist
        at org.apache.commons.io.FileUtils.openInputStream(FileUtils.java:299)
        at org.apache.commons.io.FileUtils.lineIterator(FileUtils.java:1856)
        at eu.modernmt.cluster.db.EmbeddedCassandra.createConfig(EmbeddedCassandra.java:131)
        at eu.modernmt.cluster.db.EmbeddedCassandra.start(EmbeddedCassandra.java:73)
        at eu.modernmt.cluster.db.EmbeddedCassandra.start(EmbeddedCassandra.java:32)

After compiling/installing, I've got another error related to cassandra. I've needed to change also the pom.xml:
"<cassandra.version>3.11.0</cassandra.version>" to "<cassandra.version>3.11.2</cassandra.version>"

Revert that change. the problem is that MMT is searching for Cassandra in now folder vendor/cassandra-3.11.2 while, if you followed my advice, you should now have a folder called vendor/cassandra-3.11.0

Hi Davide,
Changing the pom.xml and compile to 3.11.2, it has worked the compilation/installation, and also a have created the engines without problems. but I haven't tested everything yet.
BR,
Alex

@alexpangeanic we have just pushed a fix that make MMT use new Cassandra in our master branch.

Please let me know if this solves the issue.
Thanks!
Davide

Thanks a lot!


Error: cannot create group: Group with name uc-quickstart-cpu2oe-sandbox_users already exists.

Is this a valid issue. Not showing up in recent testing. Can reopen if we see it again.


Improve Documentation

Improve Layout of Documentation pages and add Collaboration Information

Seems like its already been merged by the bot... I'll need to fix that so
it doesn't happen again.
On Sun, 29 Nov 2020, 13:32 Hannah Elliman<EMAIL_ADDRESS>wrote:

@ellimanh approved this pull request.
Looks good!
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/DerangedSenators/website/pull/4#pullrequestreview-540480174,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGEJBT3RXNMC6JQLPIP53ZDSSJEORANCNFSM4UFX44UA
.

Seems like its already been merged by the bot... I'll need to fix that so it doesn't happen again.
…
On Sun, 29 Nov 2020, 13:32 Hannah Elliman, @.> wrote: @.* approved this pull request. Looks good! — You are receiving this because you were assigned. Reply to this email directly, view it on GitHub <#4 (review)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGEJBT3RXNMC6JQLPIP53ZDSSJEORANCNFSM4UFX44UA .

Ah okay, also I'd recommend perhaps setting Sahar as the reviewer in future as she is head of the website development.

Sure will do
On Sun, 29 Nov 2020, 14:02 Hannah Elliman<EMAIL_ADDRESS>wrote:

Seems like its already been merged by the bot... I'll need to fix that so
it doesn't happen again.
… <#m_1591343414966114724_>
On Sun, 29 Nov 2020, 13:32 Hannah Elliman, @.*> wrote: @.** approved
this pull request. Looks good! — You are receiving this because you were
assigned. Reply to this email directly, view it on GitHub <#4 (review)
https://github.com/DerangedSenators/website/pull/4#pullrequestreview-540480174>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGEJBT3RXNMC6JQLPIP53ZDSSJEORANCNFSM4UFX44UA
.
Ah okay, also I'd recommend perhaps setting Sahar as the reviewer in
future as she is head of the website development.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/DerangedSenators/website/pull/4#issuecomment-735399653,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGEJBTY2WSLSJQOYPFGDNV3SSJH7TANCNFSM4UFX44UA
.


Capture tags in ClickHouse on course publish

Tagging is coming soon, we should make sure that anyone running with tags gets them captured to ClickHouse even if we're not using them in reporting yet. We should set up a test environment with tagging enabled and confirm that any tags get passed through, and nothing errors if they are not present.
I expect we should be able to get the tags here: https://github.com/openedx/platform-plugin-aspects/blob/main/platform_plugin_aspects/sinks/course_overview_sink.py#L97

@bmtcril Tags are not versioned in the same way as courses are -- versioning was out of scope for the MVP -- so tags on blocks/courses can change independently of course publish.
Do you still want tags to sync only on course publish, or can they sync independently as they're created/deleted?


cube correlation calculation dies without negative binning

Trying to calculate cube correlation (i.e., no randoms), if I try to plug in something natural like
edges = (np.linspace(0, 5, 21), np.linspace(0, 50, 51))
This line crashes
https://github.com/cosmodesi/pycorr/blob/81b4774dcd168de56c6785e80b26e78d02c45aad/pycorr/twopoint_estimator.py#L845
because self.R1R2.wcounts has shape (20,50) while self.D1D2.normalized_wcounts() is (20,100).
Ok, after figuring this out with the debugger I fixed it by extending radial bins negative, but it's ugly...

fixed in e5d1cc244561874e71c08e6ccc4987e3824b68e7
Note however that this is only for backward-compatibility purposes, and a warning will be issued, as the standard is now to provide np.linspace(-50, 50, 101).


add --col-width to helm search

Fixes #3947

Also looks like you need to run make docs and commit those changes as well.

thanks!

In case someone else comes looking for this feature, the flag is now --max-col-width.
Example use to automatically get the correct width:
helm search --max-col-width $(tput cols)

This flag is no longer present in helm list. Is that a bug? Did it simply get lost in refactoring?


Accounting exports summary APIs

We're currently processing your upload.  This comment will be updated when the results are available.


Docs page 404 error

Hey. Something wrong with docs

Sorry for the inconvinience, we're migrating the docs portal to https://docs.plainadmin.com/ Now, you can access the docs for the updated templates will be available shortly.
Thanks!


Feature Request: Image to Text (BLIP image captioning)

BLIP image captioning
mlops.BLIP_image_captioning.1.0.hdalc
This experimental node converts an image represented as colored points into a textual description of its content. The description is stored as a point attribute called 'prompt' and is based on a machine learning model trained on image-caption pairs.

Based on: Salesforce/blip-image-captioning-base
More models: BLIP
Model documentation: BLIP
Interactive page: Salesforce/BLIP

Has been added!


"ISE: Cannot determine backend storage parameters" on GROUP with with and shape

The query builder does automatic with extraction that produces queries like this:
WITH
  __scope_0_Movie_expr := DETACHED default::Movie,
  __scope_0_Movie := (FOR __scope_0_Movie_inner IN {__scope_0_Movie_expr} UNI
ON (
    WITH
      __withVar_1 := std::len(__scope_0_Movie_inner.title)
    SELECT __scope_0_Movie_inner {
      __withVar_1 := __withVar_1
    }
  ))
GROUP __scope_0_Movie {
  id,
  title
}
USING
  title := std::len(__scope_0_Movie.title),
  title1 := __scope_0_Movie.__withVar_1,
  title2 := __scope_0_Movie.__withVar_1,
  title3 := __scope_0_Movie.__withVar_1
BY title1, title2, title3;

This query fails with edgedb error: InternalServerError: cannot determine backend storage parameters for the <QualName __derived__::__|__withVar_1@__derived__|__scope_0_Movie&w~2> pointer: the cardinality is not known.
The query works if the shape is removed:
WITH
  __scope_0_Movie_expr := DETACHED default::Movie,
  __scope_0_Movie := (FOR __scope_0_Movie_inner IN {__scope_0_Movie_expr} UNI
ON (
    WITH
      __withVar_1 := std::len(__scope_0_Movie_inner.title)
    SELECT __scope_0_Movie_inner {
      __withVar_1 := __withVar_1
    }
  ))
GROUP __scope_0_Movie
USING
  title := std::len(__scope_0_Movie.title),
  title1 := __scope_0_Movie.__withVar_1,
  title2 := __scope_0_Movie.__withVar_1,
  title3 := __scope_0_Movie.__withVar_1
BY title1, title2, title3;

Full traceback:
edgedb> WITH
.......   __scope_0_Movie_expr := DETACHED default::Movie,
.......   __scope_0_Movie := (FOR __scope_0_Movie_inner IN {__scope_0_Movie_expr} UNI
ON (
.......     WITH
.......       __withVar_1 := std::len(__scope_0_Movie_inner.title)
.......     SELECT __scope_0_Movie_inner {
.......       __withVar_1 := __withVar_1
.......     }
.......   ))
....... GROUP __scope_0_Movie {
.......   id,
.......   title
....... }
....... USING
.......   title := std::len(__scope_0_Movie.title),
.......   title1 := __scope_0_Movie.__withVar_1,
.......   title2 := __scope_0_Movie.__withVar_1,
.......   title3 := __scope_0_Movie.__withVar_1
....... BY title1, title2, title3;
edgedb error: InternalServerError: cannot determine backend storage parameters for the <QualName __derived__::__|__withVar_1@__derived__|__scope_0_Movie&w~2> pointer: the cardinality is not known
  Hint: This is most likely a bug in EdgeDB. Please consider opening an issue ticket at https://github.com/edgedb/edgedb/issues/new?template=bug_report.md
  Server traceback:
      Traceback (most recent call last):
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/__init__.py", line 118, in compile_ir_to_sql_tree
          qtree = dispatch.compile(ir_expr, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/functools.py", line 889, in wrapper
          return dispatch(args[0].__class__)(*args, **kw)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/expr.py", line 60, in compile_Set
          _compile_set_impl(ir_set, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/expr.py", line 114, in _compile_set_impl
          _compile_set(ir_set, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/expr.py", line 633, in _compile_set
          relgen.get_set_rvar(ir_set, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relgen.py", line 160, in get_set_rvar
          return _process_toplevel_query(ir_set, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relgen.py", line 263, in _process_toplevel_query
          rvars = _get_set_rvar(ir_set, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relgen.py", line 302, in _get_set_rvar
          rvars = process_set_as_subquery(ir_set, stmt, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relgen.py", line 1334, in process_set_as_subquery
          dispatch.visit(expr, ctx=newctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/functools.py", line 889, in wrapper
          return dispatch(args[0].__class__)(*args, **kw)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/dispatch.py", line 44, in visit
          compile(ir, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/functools.py", line 889, in wrapper
          return dispatch(args[0].__class__)(*args, **kw)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/stmt.py", line 146, in compile_GroupStmt
          return group.compile_group(stmt, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/group.py", line 386, in compile_group
          return _compile_group(stmt, ctx=sctx, parent_ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/group.py", line 221, in _compile_group
          dispatch.visit(value, ctx=groupctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/functools.py", line 889, in wrapper
          return dispatch(args[0].__class__)(*args, **kw)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/expr.py", line 85, in visit_Set
          _compile_set_impl(ir_set, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/expr.py", line 110, in _compile_set_impl
          _compile_set(ir_set, ctx=scopectx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/expr.py", line 633, in _compile_set
          relgen.get_set_rvar(ir_set, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relgen.py", line 207, in get_set_rvar
          rvars = _get_set_rvar(ir_set, ctx=subctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relgen.py", line 302, in _get_set_rvar
          rvars = process_set_as_subquery(ir_set, stmt, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relgen.py", line 1334, in process_set_as_subquery
          dispatch.visit(expr, ctx=newctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/functools.py", line 889, in wrapper
          return dispatch(args[0].__class__)(*args, **kw)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/dispatch.py", line 44, in visit
          compile(ir, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/functools.py", line 889, in wrapper
          return dispatch(args[0].__class__)(*args, **kw)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/stmt.py", line 97, in compile_SelectStmt
          outvar = clauses.compile_output(stmt.result, ctx=ictx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/clauses.py", line 204, in compile_output
          dispatch.visit(ir_set, ctx=newctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/functools.py", line 889, in wrapper
          return dispatch(args[0].__class__)(*args, **kw)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/expr.py", line 85, in visit_Set
          _compile_set_impl(ir_set, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/expr.py", line 110, in _compile_set_impl
          _compile_set(ir_set, ctx=scopectx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/expr.py", line 633, in _compile_set
          relgen.get_set_rvar(ir_set, ctx=ctx)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relgen.py", line 155, in get_set_rvar
          if rvar := _lookup_set_rvar(ir_set, scope_stmt=scope_stmt, ctx=ctx):
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relgen.py", line 136, in _lookup_set_rvar
          rvar = relctx.unpack_rvar(
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/relctx.py", line 915, in unpack_rvar
          ref = pathctx.get_rvar_path_var(
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/pathctx.py", line 734, in get_rvar_path_var
          outvar = get_path_output(
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/pathctx.py", line 1067, in get_path_output
          return _get_path_output(rel, path_id=path_id, aspect=aspect,
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/pathctx.py", line 1127, in _get_path_output
          ref = get_path_var(rel, path_id, aspect=aspect, flavor=flavor, env=env)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/pathctx.py", line 162, in get_path_var
          ptr_info = pg_types.get_ptrref_storage_info(
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/types.py", line 437, in get_ptrref_storage_info
          return _get_ptrref_storage_info(
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/types.py", line 457, in _get_ptrref_storage_info
          raise RuntimeError(
      RuntimeError: cannot determine backend storage parameters for the <QualName __derived__::__|__withVar_1@__derived__|__scope_0_Movie&w~2> pointer: the cardinality is not known

      The above exception was the direct cause of the following exception:

      Traceback (most recent call last):
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/server/compiler_pool/worker_proc.py", line 55, in worker
          res = meth(*args)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/server/compiler_pool/worker.py", line 158, in compile
          units, cstate = COMPILER.compile(
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/server/compiler/compiler.py", line 2142, in compile
          units = self._compile(ctx=ctx, source=source)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/server/compiler/compiler.py", line 1694, in _compile
          return self._try_compile(ctx=ctx, source=source)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/server/compiler/compiler.py", line 1747, in _try_compile
          comp, capabilities = self._compile_dispatch_ql(
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/server/compiler/compiler.py", line 1668, in _compile_dispatch_ql
          query = self._compile_ql_query(ctx, ql)
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/server/compiler/compiler.py", line 614, in _compile_ql_query
          sql_text, argmap = pg_compiler.compile_ir_to_sql(
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/__init__.py", line 150, in compile_ir_to_sql
          qtree = compile_ir_to_sql_tree(
        File "/Users/colinmcd94/Library/Application Support/edgedb/portable/2.0-dev.6638/lib/python3.10/site-packages/edb/pgsql/compiler/__init__.py", line 133, in compile_ir_to_sql_tree
          raise errors.InternalServerError(*args) from e
      edb.errors.InternalServerError: cannot determine backend storage parameters for the <QualName __derived__::__|__withVar_1@__derived__|__scope_0_Movie&w~2> pointer: the cardinality is not known

Obviously it's a bug either way, but what's the deal with using for like that?

Basically the query builder makes it easy to declare intermediate variables that depend on each other:
e.group(e.Movie, movie => ({
  const titleLen = e.len(movie.title);
  const titleLenPlusOne = e.op(titleLen, '+', 1);
  const titleLenPlusTwo = e.op(titleLenPlusOne, '+', 1);

  return {
    title: true,
    titleLenPlusTwo,
    by: { titleLenPlusTwo }
  }
}));

Because we automatically extract all expressions that occur more than once, we need some sort of with construct s.t. we can declare a series of computed expressions, some of which may reference previously defined expressions. So we do this weird for construct to do that.
WITH
  __scope_0_Movie_expr := DETACHED default::Movie,
  __scope_0_Movie := (FOR __scope_0_Movie_inner IN {__scope_0_Movie_expr} UNION (
    WITH
      __withVar_1 := std::len(__scope_0_Movie_inner.title),
      __withVar_2 := (__withVar_1 + 1)
    SELECT __scope_0_Movie_inner {
      __withVar_1 := __withVar_1,
      __withVar_2 := __withVar_2
    }
  ))
SELECT __scope_0_Movie {
  title,
  single titleLen := __scope_0_Movie.__withVar_1,
  single titleLenPlusOne := __scope_0_Movie.__withVar_2,
  single titleLenPlusTwo := (__scope_0_Movie.__withVar_2 + 1)
}

Another possibly nicer alternative (which I alluded to on the call) would be to use a series of anonymous aliases. But as you add more of these in a row, the query gets slower and slower. For me, compilation hangs if you add ~12-15 of these in a row.
WITH
  __scope_0_Movie_0 := DETACHED default::Movie,
  __scope_0_Movie_1 := (__scope_0_Movie_0 {
    __withVar_1 := std::len(__scope_0_Movie_inner.title)
  }),
  scope_0_Movie_final := (__scope_0_Movie_1 {
    __withVar_2 := (__scope_0_Movie_1.__withVar_1 + 1)
  })
SELECT scope_0_Movie_final {
  title,
  single titleLen := __scope_0_Movie.__withVar_1,
  single titleLenPlusOne := scope_0_Movie_final.__withVar_2,
  single titleLenPlusTwo := (scope_0_Movie_final.__withVar_2 + 1)
}


Use Pessimistic Proof to gate settlement for chains without executions proofs

A chain with the pessimistic rollupType will have a consensus verifier that can accept the pessimistic proof instead of an execution proof. We need to handle this case such that the AggLayer is able to direct the right proofs to the right verifier.
This is related to #55 since there will be other information to pass along to this verifier.

SP1 verifier should be selected when adding a new rollupType:

https://github.com/0xPolygonHermez/zkevm-contracts/blob/feature/ongoingPP/contracts/v2/PolygonRollupManager.sol#L418

Program execution identifier programVKey must be also specififed:

https://github.com/0xPolygonHermez/zkevm-contracts/blob/feature/ongoingPP/contracts/v2/PolygonRollupManager.sol#L423

Closing as it has been done or replace by other ticket


Content-Security-Policy is blocking our company url

Hello,
thank you for the plugin. Unfortunately it is not possible to setup the plugin for our self hosted company gitlab as there is a content-security-policy:
Refused to connect to 'https://gitlab.mycompany.com/api/v4/projects/1/trigger/pipeline' because it violates the following Content Security Policy directive: "default-src data: blob: https://github.com https://bitbucket.org/ https://gitlab.com/ https://rsms.me https://.bitbucket.org/ https://.gitlab.com/ https://*.github.com". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.
It would be helpful if we can change this content-security-policy or disable it.
Best regards
Philipp

Hey, it is not possible to disable the content security policy as this will break figma <> github.
It may be possible to add a wildcard to the connect-src.
If you want to check this in the figma api docs and send a PR, that would be great.


Feature Suggestion

I love the mod!
I have a suggestion:
Have a way to configure the "toastCooldownTime" to be infinite (so you only get the toast the first time you enter a biome in a specific world) I'm not sure if you would be able to do this unless you create a separate setting that can be toggled on/off. This setting would mean each world/server will get a list of all biomes that the player has discovered (there may be a way to read this from advancements, but I'm not too sure)
Currently, my solution to this is to have a very large value for "toastCooldownTime", but this isn't the best solution

I'm glad you enjoy the mod!
You're definitely right that setting a large value for 'toastCooldownTime' is not very optimal. I'll see if the information can be retrieved from advancement data--if so, I'll implement this in the next version!


Fix regex for ping result parsing

I tried to run the pingall test on my host but it always failed. I discovered that the output of the ping programm changed and that therefore the parsing failed. This is a small fix to correctly parse the new output format. It should be backwards compatible.

What OS and ping version are you using?

Either Arch Linux with ping version ping utility, iputils-s20160308 or Debian 7 with ping version ping (GNU inetutils) 1.9.
You can test it with mininet in the docker ozzyjohnson/mininet image.
docker run --privileged=true -it --rm ozzyjohnson/mininet


MultiModelPusher

TF Serving supports hosting multiple models in one place. I want to discuss if it is a useful to pushes multiple models from multiple Trainers?

@deep-diver Thank you for your submission. Just a clarification: What's the benefit over having n Pusher components in a pipeline?

I am not sure yet, but TFServing supports this feature, so I thought there might be some good usecases. For instance, 1. training slightly different models => serve them for A/B testing, 2. or just simply serve the model from current pipeline along with the last one for A/B testing.