diff options
| author | Christian Poessinger <christian@poessinger.com> | 2021-03-05 08:09:48 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-05 08:09:48 +0100 | 
| commit | ce6e6c665fa11eee9fd07a92b4a18d99ad82f730 (patch) | |
| tree | e37af23b28b3181194686b3116cc3fc1a3d8e9ed | |
| parent | d79c80ff078ac686ae2a4e0da66bfbd40d67f824 (diff) | |
| parent | 658456982ad4543790a3835f6ddbfbe3b583ec44 (diff) | |
| download | vyos-1x-ce6e6c665fa11eee9fd07a92b4a18d99ad82f730.tar.gz vyos-1x-ce6e6c665fa11eee9fd07a92b4a18d99ad82f730.zip | |
Merge pull request #759 from bstepler/T3271
grub: T3271: don't write grub.cfg if it hasn't changed
| -rwxr-xr-x | src/conf_mode/system_console.py | 25 | 
1 files changed, 18 insertions, 7 deletions
| diff --git a/src/conf_mode/system_console.py b/src/conf_mode/system_console.py index b17818797..33a546bd3 100755 --- a/src/conf_mode/system_console.py +++ b/src/conf_mode/system_console.py @@ -17,9 +17,8 @@  import os  import re -from fileinput import input as replace_in_file  from vyos.config import Config -from vyos.util import call +from vyos.util import call, read_file, write_file  from vyos.template import render  from vyos import ConfigError, airbag  airbag.enable() @@ -98,15 +97,27 @@ def generate(console):      if not os.path.isfile(grub_config):          return None -    # stdin/stdout are redirected in replace_in_file(), thus print() is fine +    lines = read_file(grub_config).split('\n') +      p = re.compile(r'^(.* console=ttyS0),[0-9]+(.*)$') -    for line in replace_in_file(grub_config, inplace=True): +    write = False +    newlines = [] +    for line in lines:          if line.startswith('serial --unit'): -            line = f'serial --unit=0 --speed={speed}\n' +            newline = f'serial --unit=0 --speed={speed}'          elif p.match(line): -            line = '{},{}{}\n'.format(p.search(line)[1], speed, p.search(line)[2]) +            newline = '{},{}{}'.format(p.search(line)[1], speed, p.search(line)[2]) +        else: +            newline = line + +        if newline != line: +            write = True + +        newlines.append(newline) +    newlines.append('') -        print(line, end='') +    if write: +        write_file(grub_config, '\n'.join(newlines))      return None | 
