Commit Graph

96 Commits

Author SHA1 Message Date
Theodore Ts'o
2869485be9 Build the fuzzers from oss-fuzz
The fuzzers from oss-fuzz in projects/e2fsprogs/fuzz (as of commit
78ecd3f07fca with some slight modifications for better error
reporting) have been placed in the tests/fuzz directory and the
configure script now supports a new option --enable-fuzzing which will
build these fuzzers using clang's -fsanitize=fuzzer command line
option.

In general, some sanitizer such as --enable-addrsan or --enable-ubsan
(to enable ASAN or UBSAN, respectively) should be enabled alongside
--enable-fuzzing.

A typical configure command to build the fuzzers might be:

  configure CC=clang CXX=clang++ CFLAGS=-g --enable-fuzzing --enable-addrsan

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2022-08-09 19:45:07 -04:00
Theodore Ts'o
0d47f5ab05 Merge branch 'maint' into next 2021-01-19 23:58:57 -05:00
Theodore Ts'o
e598c29b4d Update gettext files to version 0.19.8
This also removes the built-in "intl" directory as this is now
considered deprecated by the gettext package.  This means that we
won't try to use an internal version of gettext if it's not installed
on the build system.  We will simply disable NLS support in that case.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2020-11-25 11:55:46 -05:00
Theodore Ts'o
3ab2fd4e23 Define MKDIR_P in the Makefile.in files instead in MCONFIG.in
In the case where mkdir -p is not thread-safe (for example, if the
build environment is using busybox's mkdir) the configure script will
fall back to the slow (but safe) install-sh script.  In that case
MKDIR_P will be using a relative pathname; so we can't use speed
optimization of defining configure substitutions in MCONFIG.in, since
the substitution will be different depending on depth of the
subdirectory in the Makefile.in file.

https://github.com/tytso/e2fsprogs/issues/51

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2020-10-04 23:05:01 -04:00
Theodore Ts'o
93df80d240 Teach makefiles to build all static programs using the target all-static
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2020-04-10 00:10:53 -04:00
Theodore Ts'o
62dfbc0fb2 Merge branch 'maint' into next 2018-10-04 10:39:50 -04:00
Theodore Ts'o
feb235e081 For --enable-subset, change "make install" so it implies "make install-libs"
The e2fsprogs-libs-1.44.x.tar.gz subset distribution had a hack so
that "make install" would install the libraries via an implied "make
install-libs" --- since after all the tarball had was just the
libraries.

This commit makes "make install" behave the same was as the
e2fsprogs-libs distribution in the case of "configure --enable-subset"

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2018-08-24 17:12:20 -04:00
Theodore Ts'o
f56db533fc Merge branch 'maint' into next 2018-08-23 11:33:22 -04:00
Theodore Ts'o
ed07fd9305 Fix "make install" for configure --enable-subset
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2018-08-22 13:42:23 -04:00
Theodore Ts'o
6ac81e4526 Merge branch 'maint' into next 2018-08-18 23:22:53 -04:00
Theodore Ts'o
0afb9be6aa Drop subset tarball and replace it with "configure --enable-subset"
There's no point creating two separate tarfiles.  It's not clear
anyone was actually using the subset tarball --- and if they are, they
can replace it by the full source distribution and using the
--enable-subset option.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2018-08-18 11:21:30 -04:00
Theodore Ts'o
e5f0f3eebe Stop generating e2fsprogs.spec automatically
It adds extra complexity for not much gain, and stands in the way of
generating the release tarfile via git archive.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2018-08-18 11:06:23 -04:00
Darrick J. Wong
5ce368f07c e2scrub: create online fsck tool of sorts
Implement online fsck for ext* filesystems which live on LVM-managed
logical volumes.  The basic strategy mirrors that of e2croncheck --
create a snapshot, fsck the snapshot, report whatever errors appear,
remove snapshot.  Unlike e2croncheck, this utility accepts any LVM
device path, knows about snapshots running out of space, and can call
fstrim having validated that the fs metadata is ok.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2018-08-05 14:43:12 -04:00
Theodore Ts'o
11b8ef8bd6 tests: skip running long test with "make check" and add "make fullcheck"
Don't run tests which take longer than 20 seconds to run (especially
f_large_dir, whose run time is well over ten minutes) for "make
check".  The new "make fullcheck" will run all of the regression tests
for e2fsprogs.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2017-04-26 10:07:18 -04:00
Theodore Ts'o
dcb8e1fa04 Merge branch 'maint' into next 2016-03-06 20:37:49 -05:00
Theodore Ts'o
0355d6d047 Fix build system to be compatible with BSD pmake
This fixes a number of incompatibilities which caused maint branch to
fail to build on on FreeBSD.  Also fix the Makefile in the tests
directory so that "make -jN check" works correctly on FreeBSD.

Previously the Makefile in the tests directory used a construct which
was specific to GNU Make, which which silently expanded to an empty
list, which caused "make check" to be a no-op when running using BSD's
pmake.  This Makefile has been changed to use the != macro assignment
syntax which is common to GNU make and BSD pmake.  It's technically
not completely portable (it will not be recognized by Solaris's ccs
make, for example), but most other operating systems ship GNU make
(Solaris, AIX), or BSD pmake (*BSD, Mac OS) as either the primary or
alternative make utility that this should an acceptable compromise,
since it makes running all of tests using something like "make -j8
check" or "make -j16 check" run *much* faster.

There are still some caveats if using BSD pmake; in particular, if the
configure script is run on a system which has GNU make (installed as
gmake on FreeBSD for example), the configure script will find it, and
enable some GNU make features in the Makefile, and the generated
makefiles *must* be built using gmake.  However, if isolated build
jail / chroot is used which only has pmake, the Makefiles should now
work with pmake.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2016-01-02 01:29:55 -05:00
Theodore Ts'o
f34af41b72 rename libquota.a to libsupport.a
We will be using libsupport.a for e2fsprogs's internal support
functions.  It will contain the quota support functions, but we will
also be moving code such as profile.c and plausible.c to libsupport.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2015-07-12 16:09:22 -04:00
Theodore Ts'o
59a220dd9f Fix "make clean" and "make distclean"
There were some generated files that weren't getting removed by the
clean and distclean targets; fix this.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2015-07-01 19:40:23 -04:00
Theodore Ts'o
ceff962c67 tst_libext2fs: add new debug program which used for libext2fs unit tests
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2014-05-27 12:14:27 -04:00
Theodore Ts'o
fedfb27fe5 Add coverage testing using gcov
To check the coverage of e2fsprogs's regression test, do the
following:

	configure --enable-gcov
	make -j8 ; make -j8 check ; make coverage.txt

The coverage information will be the coverage.txt and *.gcov files in
the build directories.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2014-02-23 00:17:09 -05:00
Theodore Ts'o
5f16f6c337 Fix optional static code analysis using sparse
Commit 832cb612: "e2fsprogs: add (optional) sparse checking to the
build" breaks systems that are not using GNU make.  In addition, it
breaks if the developer tries to build in a subdirectory (i.e., if he
or she tries running "make" in the misc or e2fsck or lib/ext2fs
directory), since CHECK_CMD is not set.

Fix this by moving the sparse setup to MCONFIG.

Cc: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2013-10-23 20:09:12 -04:00
Theodore Ts'o
147ba43de8 Fix noquota build
We need to build libquota even if the quota code is disabled.  This
fixes a build regression introduced by commit 43075b42bd: 'quota: fix
disabling quota, add quota tests".

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2013-10-23 12:51:32 -04:00
Darrick J. Wong
832cb612f8 e2fsprogs: add (optional) sparse checking to the build
Run sparse against source files when building e2fsprogs with 'make C=1'.  If
instead C=2, it configures basic ext2 types for bitwise checking with sparse,
which can help find the (many many) spots where conversion errors are
(possibly) happening.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2013-10-11 23:12:40 -04:00
Matthias Andree
58b3d8d3ae Fix parallel (make -j) build
Add a few dependencies where needed, so that "make -j17 check" now
works.

Signed-off-by: Matthias Andree <matthias.andree@gmx.de>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2012-05-11 22:13:29 -04:00
Theodore Ts'o
d1154eb460 Shorten compile commands run by the build system
The DEFS line in MCONFIG had gotten so long that it exceeded 4k, and
this was starting to cause some tools heartburn.  It also made "make
V=1" almost useless, since trying to following the individual commands
run by make was lost in the noise of all of the defines.

So fix this by putting the configure-generated defines in lib/config.h
and the directory pathnames to lib/dirpaths.h.

In addition, clean up some vestigal defines in configure.in and in the
Makefiles to further shorten the cc command lines.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2011-09-18 17:34:37 -04:00
Aditya Kali
f239fefc14 e2fsprogs: add quota library to e2fsprogs
This patch adds the quota library (ported form Jan Kara's quota-tools) in
e2fsprogs in order to make quotas as a first class supported feature in Ext4.
This patch also provides interface in lib/quota/mkquota.h that will be used by
mke2fs, tune2fs, e2fsck, etc. to initialize and update quota files.
This first version of the quota library does not support reading existing quota
files. This support will be added in the near future.
Thanks to Jan Kara for his work on quota-tools. Most of the files in this patch
are taken as-is from quota tools and were simply modified to work with
libext2fs in e2fsprogs.

Signed-off-by: Aditya Kali <adityakali@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2011-08-31 15:21:40 -04:00
Andreas Dilger
db7cb4b4a6 check: build all dependencies before "make check"
If "make check" is run on a clean repository, it fails due to missing
dependencies for building the test programs.  Have "make check" build
all dependencies before starting the tests to ensure that it can finish
without error.

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2011-06-15 22:17:38 -04:00
Theodore Ts'o
3a0d5d396b Fix dpkg-buildpackage -j2
Add a dependency on subs to all-libs-recursive and all-progs-recursive
to dpkg-buildpackage -j2, since it builds make target 'libs'
explicitly, and we need to make sure the 'subs' target is run first.

Addresses-Debian-Bug: #563487

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2010-05-17 23:48:52 -04:00
Scott James Remnant
39fd3d4f13 configure.in: add --disable-libuuid option
Add an option to switch between the private (in-tree) libuuid and
public (in-system installed) library.  The private version is still
enabled by default.

Signed-off-by: Scott James Remnant <scott@netsplit.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
2009-06-29 00:36:45 -04:00
Theodore Ts'o
14b596d409 configure.in: add --disable-libblkid option
Add an option to switch between the private (in-tree) libblkid and
public (in-system installed) library.  The private version is still
enabled by default.

If --disable-libblkid is specified the findfs(8) program, which is a
variant of tune2fs, is also not built or installed.

Signed-off-by: Karel Zak <kzak@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2009-04-22 09:18:30 -04:00
Theodore Ts'o
f0eae15c36 Fix parallel build problem with util/subst
Make sure util/subst is built before trying to build lib/et

Addresses-Sourceforge-Bug: #2143281

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-10-12 23:12:22 -04:00
Theodore Ts'o
60b30dbaa6 Fix e2fsprogs-libs build failure due to 'subs' target
In e2fsprogs-libs the lib/ext2fs directory is not present, and we need
to make sure the top-level Makefile doesn't blow up in it's not there.

Addresses-Sourceforge-Bug: #2087502

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-09-01 18:07:59 -04:00
Theodore Ts'o
749c4ad0fa Fix breakage caused by commit da17e370 (missing dependency in Makefile)
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-08-28 07:15:52 -04:00
Theodore Ts'o
da17e37092 Build lib/ext2fs/ext2_err.h early to avoid parallel build problems
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-08-27 18:44:50 -04:00
Theodore Ts'o
24c9b55806 Disable %.sh -> % GNU make rule in the top-level Makefile
It's not needed for e2fsprogs, but one niche distribution likes to use
configure.sh files which can cause GNU make to inappropriately fire an
implicit rule to overwrite the configure file resulting in a fork bomb
leading to the OOM crash.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-07-14 22:38:01 -04:00
Theodore Ts'o
399033a6ab Merge branch 'maint' 2008-02-29 00:43:29 -05:00
Mike Frysinger
1f803990b8 Fix makefile dependency issues for various install targets
Addresses-Sourceforge-Patches: #1903484
Addresses-Sourceforge-Patches: #1903466
Addresses-Sourceforge-Patches: #1903456

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-02-28 20:45:39 -05:00
Theodore Ts'o
428f6b32a9 Merge branch 'maint' into next
Conflicts:

	configure
	lib/ext2fs/ext2_fs.h
	misc/e2image.c
2008-01-27 20:09:05 -05:00
Theodore Ts'o
9c3ea642e3 Fix Makefile race so that "make -j3 distclean" works correctly
With this fix, "dpkg-buildpackage -j3" should work w/o problems for
the e2fsprogs package.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2008-01-01 17:00:39 -05:00
Theodore Ts'o
a98b51e9dd Miscellaneous Cleanups
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Signed-off-by: Girish Shilamkar <girish@clusterfs.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2007-08-03 20:10:46 -04:00
Andreas Dilger
54833579ee Add Makefile production rule for e2fsprogs.spec in case it gets deleted
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2007-05-22 16:20:14 -04:00
Andreas Dilger
90466c19c6 add "make rpm" target to top-level Makefile
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
2006-06-21 00:05:49 -04:00
Theodore Ts'o
4ea7ea007b Fix asm_types.h type conflicts
This caused FTBFS bugs on AMD64 platforms, since it uses a different
64-bit type when compared with IA64, so we need to make our
autoconfiguration system more intelligent.

Addresses Debian Bugs: #360661, #360317

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2006-04-09 08:41:55 -04:00
Theodore Ts'o
522798d342 Add install-strip and install-shlibs-strip targets
Use Linux-kernel-style makefile output for "make install"

Update intl/Makefile.in to version from gettext 0.14.1
2004-12-15 11:28:55 -05:00
Theodore Ts'o
605e6f0e24 Make make distclean remove all generated files.
Update the po and intl changelog files to indicate that we updated to 
gettext 0.14.1
2004-11-30 22:06:27 -05:00
Theodore Ts'o
47204ff983 Use Linux-kernel-style makefile output to make it easier to
see errors/warnings.
2004-11-30 10:52:27 -05:00
Theodore Ts'o
921f4ad536 Remove support for EVMS 1.x plugin library. 2004-11-19 17:25:27 -05:00
Theodore Ts'o
56eb4d4749 Remove XSI:isms for greater portability. (Addresses
Debian Bug #255589)
2004-09-17 19:54:22 -04:00
Matthias Andree
0ec1b153ba Use $(MAKE) rather than hardcoded "make", to aid build process on
systems that expect GNU make as "gmake".
2003-08-01 15:09:15 +02:00
Theodore Ts'o
d21ae6c5cd configure.in, configure, Makefile.in: Add --with-diet-libc
convenience option.  Add --disable-evms option.
2003-05-05 09:00:24 -04:00