rmlint: add missing patches

This commit is contained in:
Martin Sekera 2023-01-25 13:12:41 +01:00
parent 6a09433010
commit faa37a705f
6 changed files with 351 additions and 0 deletions

View file

@ -0,0 +1,18 @@
--- a/SConstruct
+++ b/SConstruct
@@ -724,7 +724,6 @@ if ARGUMENTS.get('DEBUG') == "1":
O_value = ARGUMENTS.get('O', O_DEBUG)
else:
conf.env.Append(CCFLAGS=['-DG_DISABLE_ASSERT', '-DNDEBUG'])
- conf.env.Append(LINKFLAGS=['-s'])
O_value = ARGUMENTS.get('O', O_RELEASE)
if O_value == 'debug':
@@ -735,7 +734,6 @@ elif O_value == 'release':
cc_O_option = '-O' + O_value
print("Using compiler optimisation {} (to change, run scons with O=[0|1|2|3|s|fast])".format(cc_O_option))
-conf.env.Append(CCFLAGS=[cc_O_option])
if ARGUMENTS.get('SYMBOLS') == '1':
print("Compiling with debugging symbols")

View file

@ -0,0 +1,40 @@
commit 41056d132ae772b3c050020d68b7daa585e4143c
Author: Louis Sautier <sautier.louis@gmail.com>
Date: Thu Sep 9 13:29:37 2021 +0200
Never hardcode compiler, select it based on CC environment variable
diff --git a/SConstruct b/SConstruct
index 7e12d413..20b080da 100755
--- a/SConstruct
+++ b/SConstruct
@@ -37,8 +37,9 @@ Export('VERSION_MAJOR VERSION_MINOR VERSION_PATCH VERSION_NAME')
def check_gcc_version(context):
context.Message('Checking for GCC version... ')
+ gcc = os.environ.get("CC", "gcc")
try:
- v = subprocess.check_output("printf '%s\n' __GNUC__ | gcc -E -P -", shell=True)
+ v = subprocess.check_output("printf '%s\n' __GNUC__ | {} -E -P -".format(gcc), shell=True)
try:
v = int(v)
context.Result(str(v))
diff --git a/tests/test_types/test_nonstripped.py b/tests/test_types/test_nonstripped.py
index a18648c9..d3190d1b 100644
--- a/tests/test_types/test_nonstripped.py
+++ b/tests/test_types/test_nonstripped.py
@@ -21,8 +21,12 @@ def create_binary(path, stripped=False):
path = path + '.stripped' if stripped else path + '.nonstripped'
full_path = os.path.join(TESTDIR_NAME, path)
- command = 'echo \'{src}\' | cc -o {path} {option} -std=c99 -xc -'.format(
- src=SOURCE, path=full_path, option=('-s' if stripped else '-ggdb3')
+ cc = os.environ.get("CC", "cc")
+ command = 'echo \'{src}\' | {cc} -o {path} {option} -std=c99 -xc -'.format(
+ cc=cc,
+ src=SOURCE,
+ path=full_path,
+ option=('-s' if stripped else '-ggdb3')
)
subprocess.call(command, shell=True)

View file

@ -0,0 +1,135 @@
--- a/tests/test_options/test_replay.py
+++ b/tests/test_options/test_replay.py
@@ -69,7 +69,7 @@ def test_replay_match_basename():
create_file('xxx', 'test1/b')
create_file('xxx', 'test2/a')
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
head, *data, footer = run_rmlint('-o json:{p}'.format(
p=replay_path
@@ -104,7 +104,7 @@ def test_replay_hidden():
create_file('xxx', 'test/.a')
create_file('xxx', 'test/.b')
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
head, *data, footer = run_rmlint('--hidden -o json:{p}'.format(
p=replay_path
@@ -130,7 +130,7 @@ def test_replay_must_match_tagged():
create_file('xxx', 'test_a/a')
create_file('xxx', 'test_b/a')
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
head, *data, footer = run_rmlint('-o json:{p}'.format(
p=replay_path
@@ -182,7 +182,7 @@ def test_sorting():
(''.join(p) for p in permutations(all_opts, n_terms))
)
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
for combo in combos:
combo_str = '-y ' + combo
@@ -218,7 +218,7 @@ def test_replay_no_dir():
try:
os.chdir(TESTDIR_NAME)
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
head, *data, footer = run_rmlint(
'-o json:{p}'.format(p=replay_path),
use_default_dir=False,
@@ -242,7 +242,7 @@ def test_replay_unicode_fuckup():
create_file('xxx', names[1])
create_file('xxx', names[2])
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
head, *data, footer = run_rmlint('-o json:{p}'.format(p=replay_path))
assert len(data) == 3
@@ -260,8 +260,8 @@ def test_replay_tagged_order():
create_file('xxx', 'b/1')
create_file('xxx', 'b/2')
- replay_path_a = '/tmp/replay-a.json'
- replay_path_b = '/tmp/replay-b.json'
+ replay_path_a = os.path.join(TESTDIR_NAME, 'replay-a.json')
+ replay_path_b = os.path.join(TESTDIR_NAME, 'replay-b.json')
# Create replay-a.json
head, *data, footer = run_rmlint(
@@ -326,7 +326,7 @@ def test_replay_duplicate_directory_size():
create_file('xxx', 'a/xxx')
create_file('xxx', 'b/xxx')
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
head, *data, footer = run_rmlint('-o json:{p} -S a'.format(p=replay_path))
assert len(data) == 2
@@ -427,7 +427,7 @@ def test_replay_pack_directories():
create_pack_and_unpack_scenario()
# Do a run without -D and pack it later during --replay.
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
head, *data, footer = run_rmlint('-o json:{p} -S ahD'.format(p=replay_path))
assert len(data) == 13
@@ -449,7 +449,7 @@ def test_replay_unpack_directories():
create_pack_and_unpack_scenario()
# Do a run with -D and pack it later during --replay.
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
head, *data, footer = run_rmlint('-o json:{p} -S ahD -D'.format(p=replay_path))
assert len(data) == 21
--- a/tests/test_options/test_size.py
+++ b/tests/test_options/test_size.py
@@ -90,7 +90,7 @@ def test_replay_size():
create_file('yyy', 'b/yyy')
create_testdir('empty_dir')
- replay_path = '/tmp/replay.json'
+ replay_path = os.path.join(TESTDIR_NAME, 'replay.json')
head, *data, footer = run_rmlint('-o json:{p}'.format(
p=replay_path
))
--- a/tests/test_options/test_stdin.py
+++ b/tests/test_options/test_stdin.py
@@ -69,7 +69,6 @@ def test_path_starting_with_dash():
os.chdir(TESTDIR_NAME)
data = check_output(
[cwd + '/rmlint', '-o', 'json', '-S', 'a', '--', subdir],
- stderr=STDOUT
)
finally:
os.chdir(cwd)
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -133,7 +133,7 @@ def run_rmlint_once(*args,
cmd += shlex.split(' '.join(args))
if with_json:
- cmd += ['-o', 'json:/tmp/out.json', '-c', 'json:oneline']
+ cmd += ['-o', 'json:' + os.path.join(TESTDIR_NAME, 'out.json'), '-c', 'json:oneline']
for idx, output in enumerate(outputs or []):
cmd.append('-o')
@@ -168,7 +168,7 @@ def run_rmlint_once(*args,
return output
if with_json:
- with open('/tmp/out.json', 'r') as f:
+ with open(os.path.join(TESTDIR_NAME, 'out.json'), 'r') as f:
json_data = json.loads(f.read())
else:
json_data = []

View file

@ -0,0 +1,93 @@
--- a/SConstruct
+++ b/SConstruct
@@ -515,7 +515,7 @@ AddOption(
action='store', metavar='DIR', help='libdir name (lib or lib64)'
)
-for suffix in ['libelf', 'gettext', 'fiemap', 'blkid', 'json-glib', 'gui']:
+for suffix in ['libelf', 'gettext', 'fiemap', 'blkid', 'json-glib', 'gui', 'docs']:
AddOption(
'--without-' + suffix, action='store_const', default=False, const=False,
dest='with_' + suffix
@@ -804,7 +804,8 @@ env.Default(library)
SConscript('tests/SConscript', exports='programs')
SConscript('po/SConscript')
-SConscript('docs/SConscript')
+if GetOption("with_docs"):
+ SConscript('docs/SConscript')
SConscript('gui/SConscript')
@@ -883,7 +884,6 @@ if 'config' in COMMAND_LINE_TARGETS:
Find non-stripped binaries (needs libelf) : {libelf}
Optimize using ioctl(FS_IOC_FIEMAP) (needs linux) : {fiemap}
Support for SHA512 (needs glib >= 2.31) : {sha512}
- Build manpage from docs/rmlint.1.rst : {sphinx}
Support for caching checksums in file's xattr : {xattr}
Support for reading json caches (needs json-glib) : {json_glib}
Checking for proper support of big files >= 4GB : {bigfiles}
@@ -898,6 +898,9 @@ if 'config' in COMMAND_LINE_TARGETS:
(needs <locale.h> for compile side support) : {locale}
(needs msgfmt to compile .po files) : {msgfmt}
+ Enable GUI : {gui}
+ Build docs : {docs}
+
{grey}The following constants will be used during the build:{end}
Version information : {version}
@@ -925,6 +928,8 @@ Type 'scons' to actually compile rmlint now. Good luck.
bigfiles=yesno(env['HAVE_BIGFILES']),
bigofft=yesno(env['HAVE_BIG_OFF_T']),
bigstat=yesno(env['HAVE_BIG_STAT']),
+ gui=yesno(GetOption("with_gui")),
+ docs=yesno(GetOption("with_docs")),
sphinx=COLORS['green'] + 'yes, using ' + COLORS['end'] + sphinx_bin if sphinx_bin else yesno(sphinx_bin),
compiler=env['CC'],
prefix=GetOption('prefix'),
--- a/gui/setup.py
+++ b/gui/setup.py
@@ -37,7 +37,7 @@ def get_prefix():
PREFIX = get_prefix()
-class PrePlusPostInstall(install):
+class PreInstall(install):
def run(self):
# Compile the resource bundle freshly
print('==> Compiling resource bundle')
@@ -59,24 +59,6 @@ class PrePlusPostInstall(install):
# Run the usual distutils install routine:
install.run(self)
- # Make sure the schema file is updated.
- # Otherwise the gui will trace trap.
- print('==> Compiling GLib Schema files')
-
- try:
- subprocess.call([
- 'glib-compile-schemas',
- os.path.join(PREFIX, 'share/glib-2.0/schemas')
- ])
- except subprocess.CalledProcessError as err:
- print('==> Could not update schemas: ', err)
- print('==> Please run the following manually:\n')
- print(' sudo glib-compile-schemas {prefix}'.format(
- prefix=os.path.join(PREFIX, 'share/glib-2.0/schemas')
- ))
- else:
- print('==> OK!')
-
setup(
name='Shredder',
@@ -88,7 +70,7 @@ setup(
url='https://rmlint.rtfd.org',
license='GPLv3',
platforms='any',
- cmdclass={'install': PrePlusPostInstall},
+ cmdclass={'install': PreInstall},
packages=['shredder', 'shredder.views'],
package_data={'': [
'resources/*.gresource'

View file

@ -0,0 +1,35 @@
commit 566198730352f2353fd8332794409d7c9edf80e2
Author: Louis Sautier <sautier.louis@gmail.com>
Date: Wed Sep 8 00:53:28 2021 +0200
tests: skip man and python2
Those tests fail respectively when the documentation isn't built and when
python2 isn't available (probably specific to Gentoo).
diff --git a/tests/test_formatters/test_py.py b/tests/test_formatters/test_py.py
index 92b17604..28d2dd42 100644
--- a/tests/test_formatters/test_py.py
+++ b/tests/test_formatters/test_py.py
@@ -16,7 +16,7 @@ def _check_interpreter(interpreter):
return False
-@parameterized(["python2", "python3"])
+@parameterized(["python3"])
@with_setup(usual_setup_func, usual_teardown_func)
def test_paranoia(interpreter):
if not _check_interpreter(interpreter):
diff --git a/tests/test_options/test_help.py b/tests/test_options/test_help.py
index d934724a..60bc40a0 100644
--- a/tests/test_options/test_help.py
+++ b/tests/test_options/test_help.py
@@ -17,7 +17,7 @@ def test_help():
@with_setup(usual_setup_func, usual_teardown_func)
-def test_man():
+def _test_man():
yelp = subprocess.check_output(
['./rmlint', '--show-man'], stderr=subprocess.STDOUT
).decode('utf-8')

View file

@ -0,0 +1,30 @@
commit 87c53a5cb0ec37412cf9fe748dc90dddc6812733
Author: Louis Sautier <sautier.louis@gmail.com>
Date: Wed Sep 8 19:39:07 2021 +0200
Fix max sizes on x86, closes #522
strtoull returns ULLONG_MAX, not ULONG_MAX.
diff --git a/lib/cmdline.c b/lib/cmdline.c
index 56141d94..36f48c1b 100644
--- a/lib/cmdline.c
+++ b/lib/cmdline.c
@@ -351,7 +351,7 @@ static RmOff rm_cmd_size_string_to_bytes(const char *size_spec, GError **error)
return 0;
}
- if(fraction_num == ULONG_MAX && errno == ERANGE) {
+ if(fraction_num == ULLONG_MAX && errno == ERANGE) {
g_set_error(error, RM_ERROR_QUARK, 0, _("Fraction is too big for uint64"));
return 0;
}
@@ -371,7 +371,7 @@ static RmOff rm_cmd_size_string_to_bytes(const char *size_spec, GError **error)
return 0;
}
- if(base_size == ULONG_MAX && errno == ERANGE) {
+ if(base_size == ULLONG_MAX && errno == ERANGE) {
g_set_error(error, RM_ERROR_QUARK, 0, _("Size is too big for uint64"));
return 0;
}