FOG resizes all partitions even System Reserved!
-
@Quazz I think it best to move the checks into a case statement and separate out whether it should be reserved or reserved with the accents.
I’m suspecting the Regex method is very finicky.
Possibly we need to use
.*[Rr][EeÈè][Ss][EeÈè][Rr][Vv][EeÈè].*
Here’s why:
https://stackoverflow.com/questions/2348379/use-regular-expression-in-if-condition-in-bashBasically, ? in the if statement regex = Wildcard for one or more characters. You were, I presume, using [Dd] as an “if d exists or not, let’s be true” kind of scenario?
I don’t think it has to do with the e or accented e’s, just plain it doesn’t know what to match and what not.
-
@Tom-Elliott We had case originally I believe, but it has more limited pattern matching, it wouldn’t work at all at the time.
I think it’s ultimately just going to be struggling with accented letters no matter what we do. Even cheeky capture methods like
[D-Fd-f]
don’t work to captureé
in the inits (but does on something like Centos 7 or even online shell sandboxes.I’m not sure WHY that is, though.
Basically, ? in the if statement regex = Wildcard for one or more characters. You were, I presume, using [Dd] as an “if d exists or not, let’s be true” kind of scenario?
I don’t think it has to do with the e or accented e’s, just plain it doesn’t know what to match and what not.
Yes, that was the original idea, which works in certain environments I suppose, but should definitely be replaced with a wild card instead. (along with
[Dd]
)However, even when removing that bit, it still fails to match. It so far has only worked with
[Rr]*[Ss][Ee][Rr][Vv]*
as the pattern.[Rr][EeÉé][Ss][Ee][Rr][Vv][EeÉé]*
does not work.I’m thinking that perhaps using grep to do the matching might be more consistent and predictable in its behavior.
Something like:
echo $label | grep -iq "R[ée]serv[ée]"
-
@Quazz A way around it:
I believe the problem is dealing with multiple different characters within the same pattern of matching.
Maybe something like:
.*[Rr][Ee|È|è][Ss][Ee|È|è][Rr][Vv][Ee|È|è][Dd|].*
-
I like that idea, I will test it in a minute, but I did edit it a little bit (correcting accents and changing the last character possibilities given the label format that gets checked + added support for Dutch)
[Rr][Ee|É|é][Ss][Ee][Rr][Vv][Ee|É|é][Dd|_|Ee]
Well edit with results
-
Running some testing:
I created a labels.txt file
I then pulled the information from labels.txt into a variable.
Then I run inline testing: Regex pattern used:
*[Rr][Ee|É|é][Ss][Ee|É|é][Rr][Vv][Ee|É|é|][Dd|_|]*
Then I run inline testing: Regex pattern used:
.*[Rr][Ee|É|é][Ss][Ee|É|é][Rr][Vv][Ee|É|é|][Dd|_|].*
Hopefully this can help shed light. The
.*
matters more than we might expect. -
@Quazz Are you sure it’s both that fail now or could it just be one of them? I could imagine this being a very dirty character encoding issue. Could be wrong though.
-
@Sebastian-Roth Talking with @Quazz in chat, he says “you’ll never guess what works, storing the regex into a variable”
-
@Tom-Elliott
[Rr][Ee|É|é][Ss][Ee][Rr][Vv][Ee|É|é][Dd|]
This one is confirmed to work in my test case.
Feel free to update github as I can’t create a PR atm
-
@Quazz Great work. Could you please make sure to test this in the FOS client as well as the bash version might differ to the one you have on other systems. Possibly you have done the tests in the client already, then forget my comment.
-
@Sebastian-Roth Yes, I have tested in FOS, every other variation we tried worked on regular systems already
edit: I may have messed up the test case, I’ll try again in a bit though
I dun goofed, I’m pretty embarassed. I messed up my sed which made the variable empty and of course it matches then…
-
@Quazz So what does this mean?
Is the test cases working properly now?
-
@Tom-Elliott Unfortunately not, it turns out it was working because the variable was empty.
Back to square one.
Would
[Rr]*[Ss][Ee][Rr][Vv]*
be dangerous to use in production? I don’t expect many false positives, but arguably not resizing certain partitions that should is less harmful than the reverse.edit: Even stuff like grep fails, the accents are blocking everything so far
-
@Quazz said in FOG resizes all partitions even System Reserved!:
Even stuff like grep fails, the accents are blocking everything so far
Possibly a character encoding thing. Sorry but have no great idea on how to work around this.
-
@Sebastian-Roth I suppose we could try enforcing all of the systems to load UTF-8 locale?
-
@Tom-Elliott
BR2_ENABLE_LOCALE_WHITELIST="en_US"
to
BR2_ENABLE_LOCALE_WHITELIST="en_US.UTF-8"
?edit: is it possible the difference is down the glibc vs uClibc???
-
Haven’t forgotten about this, just been setting up a build environment so I can try out some of the locale options and see if anything helps.
-
I did not really understand what was going on here… Have you made some progress?
-
@maxcarpone Basically, unicode support (required for letters such as é) is broken/missing in current builds, causing the check to fail.
I think we’re on the right track, but each build takes time to compile, so for each idea it takes hours before I can test.
Currently looking into busybox locale support.
-
Still no improvement, I did notice /usr/share/locale being empty, not sure if that’s expected on buildroot or not… (according to the buildroot code, locale support only works if the target file system has locales in /usr/share/locale)
I have a week off next week, so this seems like it will be on hold for a while.
-
@Quazz Thanks for looking into this!
Usually you don’t have to recomplie from scratch all the time. Try changing some code or setting and run
make
again. Depending on what you changed this will only take a couple of minutes.