diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index e69de29..d2d8bf6 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,10 @@ +make-3.81.tar.bz2 +/make-*/ +make-3.82.tar.bz2 +*.rpm +/make-4.0.tar.bz2 +/make-4.1.tar.bz2 +/make-4.2.1.tar.bz2 +/make-4.3.tar.gz +/make-4.4.tar.gz +/make-4.4.1.tar.gz diff --git a/STAGE1-make b/STAGE1-make new file mode 100644 index 0000000..f80f9ca --- /dev/null +++ b/STAGE1-make @@ -0,0 +1,7 @@ +srpm $1 +mcd $BUILDDIR/$1 +$SRC/${1}-*/configure $TCONFIGARGS +notparallel +test -d tools/gnulib/lib && make $J V=1 -C tools/gnulib/lib +make $J V=1 +make $J install DESTDIR=${ROOTFS} diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..ce3cdc1 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,19 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} +--- !Policy +product_versions: + - rhel-8 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} +--- !Policy +product_versions: + - rhel-9 +decision_context: osci_compose_gate +rules: + - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} diff --git a/make-4.0-noclock_gettime.patch b/make-4.0-noclock_gettime.patch new file mode 100644 index 0000000..65033e8 --- /dev/null +++ b/make-4.0-noclock_gettime.patch @@ -0,0 +1,12 @@ +diff -rup a/configure b/configure +--- a/configure 2022-10-31 02:23:40.000000000 -0400 ++++ b/configure 2022-11-01 17:25:35.970942563 -0400 +@@ -12467,7 +12467,7 @@ return clock_gettime (); + return 0; + } + _ACEOF +-for ac_lib in '' rt posix4 ++for ac_lib in '' posix4 + do + if test -z "$ac_lib"; then + ac_res="none required" diff --git a/make-4.3-cloexec.patch b/make-4.3-cloexec.patch new file mode 100644 index 0000000..c680367 --- /dev/null +++ b/make-4.3-cloexec.patch @@ -0,0 +1,36 @@ +From d79fe162c009788888faaf0317253b6f0cac7092 Mon Sep 17 00:00:00 2001 +From: Kevin Buettner +Date: Thu, 23 Apr 2020 17:05:34 -0400 +Subject: [SV 58232] Disable inheritance of jobserver FDs for recursive make + +A parent make will invoke a sub-make with close-on-exec disabled for +the jobserver pipe FDs. Force close-on-exec to be to be enabled in +the sub-make so the pipe is not always passed to child jobs. + +I have a test case which, when invoked with a suitable -j switch, +will hang if the recipe inherits the jobserver pipe. This test case +was inspired by a real world case in which testing GDB on Fedora +would hang due to some poorly written test GDB cases having been +passed the jobserver file descriptors. + +* src/posixos.c (jobserver_parse_auth): Call fd_noinherit() for +jobserver pipe descriptors. + +Copyright-paperwork-exempt: yes + +diff --git a/src/posixos.c b/src/posixos.c +index 525f292c..eab175a4 100644 +--- a/src/posixos.c ++++ b/src/posixos.c +@@ -145,6 +145,11 @@ jobserver_parse_auth (const char *auth) + /* When using pselect() we want the read to be non-blocking. */ + set_blocking (job_fds[0], 0); + ++ /* By default we don't send the job pipe FDs to our children. ++ See jobserver_pre_child() and jobserver_post_child(). */ ++ fd_noinherit (job_fds[0]); ++ fd_noinherit (job_fds[1]); ++ + return 1; + } + diff --git a/make-4.3-filter-out.patch b/make-4.3-filter-out.patch new file mode 100644 index 0000000..bdd2fcc --- /dev/null +++ b/make-4.3-filter-out.patch @@ -0,0 +1,268 @@ +From e49e11e069fe7f214263be1782242b9b50f71eaa Mon Sep 17 00:00:00 2001 +From: Paul Smith +Date: Thu, 12 Nov 2020 17:00:39 -0500 +Subject: [SV 59093] Rewrite filter/filter-out to avoid large stack usage + +* src/function.c (func_filter_filterout): Allocate arrays to hold +pattern and word information rather than creating linked lists on +the stack. +* tests/scripts/functions/filter-out: Test large filters. + +diff --git a/src/function.c b/src/function.c +index 0917e0cd..5edfe8b3 100644 +--- a/src/function.c ++++ b/src/function.c +@@ -910,7 +910,6 @@ func_foreach (char *o, char **argv, const char *funcname UNUSED) + + struct a_word + { +- struct a_word *next; + struct a_word *chain; + char *str; + size_t length; +@@ -941,7 +940,6 @@ a_word_hash_cmp (const void *x, const void *y) + + struct a_pattern + { +- struct a_pattern *next; + char *str; + char *percent; + size_t length; +@@ -950,78 +948,84 @@ struct a_pattern + static char * + func_filter_filterout (char *o, char **argv, const char *funcname) + { +- struct a_word *wordhead; +- struct a_word **wordtail; ++ struct a_word *words; ++ struct a_word *word_end; + struct a_word *wp; +- struct a_pattern *pathead; +- struct a_pattern **pattail; ++ struct a_pattern *patterns; ++ struct a_pattern *pat_end; + struct a_pattern *pp; ++ size_t pat_count = 0, word_count = 0; + + struct hash_table a_word_table; + int is_filter = funcname[CSTRLEN ("filter")] == '\0'; +- const char *pat_iterator = argv[0]; +- const char *word_iterator = argv[1]; ++ const char *cp; + int literals = 0; +- int words = 0; + int hashing = 0; + char *p; + size_t len; ++ int doneany = 0; + +- /* Chop ARGV[0] up into patterns to match against the words. +- We don't need to preserve it because our caller frees all the +- argument memory anyway. */ ++ /* Find the number of words and get memory for them. */ ++ cp = argv[1]; ++ while ((p = find_next_token (&cp, NULL)) != 0) ++ ++word_count; + +- pattail = &pathead; +- while ((p = find_next_token (&pat_iterator, &len)) != 0) +- { +- struct a_pattern *pat = alloca (sizeof (struct a_pattern)); ++ if (!word_count) ++ return o; ++ ++ words = xcalloc (word_count * sizeof (struct a_word)); ++ word_end = words + word_count; + +- *pattail = pat; +- pattail = &pat->next; ++ /* Find the number of patterns and get memory for them. */ ++ cp = argv[0]; ++ while ((p = find_next_token (&cp, NULL)) != 0) ++ ++pat_count; + +- if (*pat_iterator != '\0') +- ++pat_iterator; ++ patterns = xcalloc (pat_count * sizeof (struct a_pattern)); ++ pat_end = patterns + pat_count; ++ ++ /* Chop argv[0] up into patterns to match against the words. */ ++ ++ cp = argv[0]; ++ pp = patterns; ++ while ((p = find_next_token (&cp, &len)) != 0) ++ { ++ if (*cp != '\0') ++ ++cp; + +- pat->str = p; + p[len] = '\0'; +- pat->percent = find_percent (p); +- if (pat->percent == 0) ++ pp->str = p; ++ pp->percent = find_percent (p); ++ if (pp->percent == 0) + literals++; +- + /* find_percent() might shorten the string so LEN is wrong. */ +- pat->length = strlen (pat->str); ++ pp->length = strlen (pp->str); ++ ++ ++pp; + } +- *pattail = 0; + + /* Chop ARGV[1] up into words to match against the patterns. */ + +- wordtail = &wordhead; +- while ((p = find_next_token (&word_iterator, &len)) != 0) ++ cp = argv[1]; ++ wp = words; ++ while ((p = find_next_token (&cp, &len)) != 0) + { +- struct a_word *word = alloca (sizeof (struct a_word)); +- +- *wordtail = word; +- wordtail = &word->next; +- +- if (*word_iterator != '\0') +- ++word_iterator; ++ if (*cp != '\0') ++ ++cp; + + p[len] = '\0'; +- word->str = p; +- word->length = len; +- word->matched = 0; +- word->chain = 0; +- words++; ++ wp->str = p; ++ wp->length = len; ++ ++wp; + } +- *wordtail = 0; + + /* Only use a hash table if arg list lengths justifies the cost. */ +- hashing = (literals >= 2 && (literals * words) >= 10); ++ hashing = (literals > 1 && (literals * word_count) >= 10); + if (hashing) + { +- hash_init (&a_word_table, words, a_word_hash_1, a_word_hash_2, ++ hash_init (&a_word_table, word_count, a_word_hash_1, a_word_hash_2, + a_word_hash_cmp); +- for (wp = wordhead; wp != 0; wp = wp->next) ++ for (wp = words; wp < word_end; ++wp) + { + struct a_word *owp = hash_insert (&a_word_table, wp); + if (owp) +@@ -1029,51 +1033,49 @@ func_filter_filterout (char *o, char **argv, const char *funcname) + } + } + +- if (words) ++ /* Run each pattern through the words, killing words. */ ++ for (pp = patterns; pp < pat_end; ++pp) + { +- int doneany = 0; +- +- /* Run each pattern through the words, killing words. */ +- for (pp = pathead; pp != 0; pp = pp->next) ++ if (pp->percent) ++ for (wp = words; wp < word_end; ++wp) ++ wp->matched |= pattern_matches (pp->str, pp->percent, wp->str); ++ else if (hashing) + { +- if (pp->percent) +- for (wp = wordhead; wp != 0; wp = wp->next) +- wp->matched |= pattern_matches (pp->str, pp->percent, wp->str); +- else if (hashing) ++ struct a_word a_word_key; ++ a_word_key.str = pp->str; ++ a_word_key.length = pp->length; ++ wp = hash_find_item (&a_word_table, &a_word_key); ++ while (wp) + { +- struct a_word a_word_key; +- a_word_key.str = pp->str; +- a_word_key.length = pp->length; +- wp = hash_find_item (&a_word_table, &a_word_key); +- while (wp) +- { +- wp->matched |= 1; +- wp = wp->chain; +- } ++ wp->matched |= 1; ++ wp = wp->chain; + } +- else +- for (wp = wordhead; wp != 0; wp = wp->next) +- wp->matched |= (wp->length == pp->length +- && strneq (pp->str, wp->str, wp->length)); + } ++ else ++ for (wp = words; wp < word_end; ++wp) ++ wp->matched |= (wp->length == pp->length ++ && strneq (pp->str, wp->str, wp->length)); ++ } + +- /* Output the words that matched (or didn't, for filter-out). */ +- for (wp = wordhead; wp != 0; wp = wp->next) +- if (is_filter ? wp->matched : !wp->matched) +- { +- o = variable_buffer_output (o, wp->str, strlen (wp->str)); +- o = variable_buffer_output (o, " ", 1); +- doneany = 1; +- } ++ /* Output the words that matched (or didn't, for filter-out). */ ++ for (wp = words; wp < word_end; ++wp) ++ if (is_filter ? wp->matched : !wp->matched) ++ { ++ o = variable_buffer_output (o, wp->str, strlen (wp->str)); ++ o = variable_buffer_output (o, " ", 1); ++ doneany = 1; ++ } + +- if (doneany) +- /* Kill the last space. */ +- --o; +- } ++ if (doneany) ++ /* Kill the last space. */ ++ --o; + + if (hashing) + hash_free (&a_word_table, 0); + ++ free (patterns); ++ free (words); ++ + return o; + } + +diff --git a/tests/scripts/functions/filter-out b/tests/scripts/functions/filter-out +index 1fe4819d..dec5343e 100644 +--- a/tests/scripts/functions/filter-out ++++ b/tests/scripts/functions/filter-out +@@ -27,6 +27,22 @@ all: ; @echo '$(files1) $(files2)' + !, + '', "foo.elc foo.elc\n"); + ++# Force use of hash (see function.c:func_filter_filterout for params) ++ ++my $base = 'foo.1 foo.2 foo.3 foo.4 foo.5 foo.6 foo.7 foo.8 foo.9 foo.10'; ++ ++my $base10 = join(' ', ($base) x 10); ++my $out3 = join(' ', ('foo.3') x 10); ++my $out456 = join(' ', ('foo.4 foo.5 foo.6') x 10); ++ ++run_make_test("words := $base10" . q! ++files1 := $(filter %.3, $(words)) ++files2 := $(filter %.4 foo.5 foo.6, $(words)) ++all: ; @echo '$(files1) $(files2)' ++!, ++ '', "$out3 $out456\n"); ++ ++ + # Escaped patterns + run_make_test(q!all:;@echo '$(filter foo\%bar,foo%bar fooXbar)'!, + '', "foo%bar\n"); diff --git a/make-4.3-getcwd.patch b/make-4.3-getcwd.patch new file mode 100644 index 0000000..8825008 --- /dev/null +++ b/make-4.3-getcwd.patch @@ -0,0 +1,12 @@ +diff -rup a/src/makeint.h b/src/makeint.h +--- a/src/makeint.h 2022-10-24 02:22:00.000000000 -0400 ++++ b/src/makeint.h 2022-11-01 17:20:24.764001510 -0400 +@@ -678,7 +678,7 @@ long int lseek (); + # endif + + # ifdef HAVE_GETCWD +-# if !defined(VMS) && !defined(__DECC) ++# if !defined(VMS) && !defined(__DECC) && !defined(getcwd) + char *getcwd (void); + # endif + # else diff --git a/make-4.3-j8k.patch b/make-4.3-j8k.patch new file mode 100644 index 0000000..c965379 --- /dev/null +++ b/make-4.3-j8k.patch @@ -0,0 +1,25 @@ +diff -rup a/src/main.c b/src/main.c +--- a/src/main.c 2022-10-24 02:22:00.000000000 -0400 ++++ b/src/main.c 2022-11-01 17:31:41.072952404 -0400 +@@ -2195,6 +2195,21 @@ main (int argc, char **argv, char **envp + } + #endif + ++#ifdef PIPE_BUF ++ if (job_slots > PIPE_BUF) ++#elif defined _POSIX_PIPE_BUF ++ if (job_slots > _POSIX_PIPE_BUF) ++#else ++ if (job_slots > 512) ++#endif ++ { ++ O (error, NILF, ++ _("More parallel jobs (-jN) than this platform can handle requested.")); ++ O (error, NILF, _("Resetting to single job (-j1) mode.")); ++ job_slots = 1; ++ } ++ ++ + /* If we have >1 slot at this point, then we're a top-level make. + Set up the jobserver. + diff --git a/make-latest.spec b/make-latest.spec new file mode 100644 index 0000000..15ff879 --- /dev/null +++ b/make-latest.spec @@ -0,0 +1,595 @@ +# -*- coding: utf-8 -*- +# This decides the SRPM name. Set to "make" for a rolling release +# (like Fedora) or "make-latest" for a long term release that needs +# optional versioned updates. +Name: make-latest +Epoch: 1 +Version: 4.4.1 +Release: 3%{?dist} +License: GPLv3+ +URL: http://www.gnu.org/software/make/ +Source: ftp://ftp.gnu.org/gnu/make/make-%{version}.tar.gz + +%if "%{name}" != "make" +# Set this to the sub-package base name, for "make-latest" +%global make %(echo make%{version} | tr -d .) +%if 0%{?rhel} > 0 +%global _prefix /opt/rh/%{make} +%else +# We intentionally do not define a case for Fedora, as it should not +# need this functionality, and letting it error avoids accidents. +%{error:"Each downstream must specify its own /opt namespace"} +%endif +Summary: Meta package to include latest version of make +%else +%global make %{name} +Summary: A GNU tool which simplifies the build process for users +Provides: make-latest = %{version}-%{release} +Provides: %(echo make%{version} | tr -d .) = %{version}-%{release} +%endif + +%if 0%{?rhel} > 0 +# This gives the user the option of saying --with guile, but defaults to WITHOUT +%bcond_with guile +%else +# This gives the user the option of saying --without guile, but defaults to WITH +%bcond_without guile +%endif + +Patch0: make-4.3-getcwd.patch + +# Assume we don't have clock_gettime in configure, so that +# make is not linked against -lpthread (and thus does not +# limit stack to 2MB). +Patch1: make-4.0-noclock_gettime.patch + +# BZs #142691, #17374 +Patch2: make-4.3-j8k.patch + +# autoreconf +BuildRequires: make +BuildRequires: autoconf, automake, gettext-devel +BuildRequires: procps +BuildRequires: perl +%if %{with guile} +BuildRequires: pkgconfig(guile-2.2) +%endif +BuildRequires: gcc + +%if "%{name}" != "make" +# We're still on the make-latest package +Requires: %{make} +%description -n make-latest +The latest GNU Make, with a version-specific install +%files -n make-latest + +%package -n %{make} +Summary: A GNU tool which simplifies the build process for users +%endif + +%description -n %{make} +A GNU tool for controlling the generation of executables and other +non-source files of a program from the program's source files. Make +allows users to build and install packages without any significant +knowledge about the details of the build process. The details about +how the program should be built are provided for make in the program's +makefile. + +%package -n %{make}-devel +Summary: Header file for externally visible definitions + +%description -n %{make}-devel +The %{make}-devel package contains gnumake.h. + +%prep +%autosetup -n make-%{version} -p1 + +rm -f tests/scripts/features/parallelism.orig + +%build +autoreconf -vfi + +%configure \ +%if %{with guile} + --with-guile +%else + --without-guile +%endif + +%make_build + +%install +%make_install +ln -sf make ${RPM_BUILD_ROOT}/%{_bindir}/gmake +ln -sf make.1 ${RPM_BUILD_ROOT}/%{_mandir}/man1/gmake.1 +rm -f ${RPM_BUILD_ROOT}/%{_infodir}/dir + +%if "%{name}" != "make" +install -d -m 755 ${RPM_BUILD_ROOT}/etc/scl/prefixes +dirname %{_prefix} > %{make}.prefix +install -p -m 644 %{make}.prefix ${RPM_BUILD_ROOT}/etc/scl/prefixes/%{make} + +echo "export PATH=%{_prefix}/bin:\$PATH" > enable.scl +install -p -m 755 enable.scl ${RPM_BUILD_ROOT}/%{_prefix}/enable +%endif + +%find_lang make + +%check +echo ============TESTING=============== +/usr/bin/env LANG=C make check && true +echo ============END TESTING=========== + +%files -n %{make} -f make.lang +%license COPYING +%doc NEWS README AUTHORS +%{_bindir}/* +%{_mandir}/man*/* +%{_infodir}/*.info* +%{_includedir}/gnumake.h +%if "%{name}" != "make" +/etc/scl/prefixes/%{make} +%{_prefix}/enable +%endif + +%files -n %{make}-devel +%{_includedir}/gnumake.h + +%changelog +* Fri Jul 12 2024 DJ Delorie - 1:4.4.1-3 +- Initial commit for make-latest.el9 + +* Fri May 3 2023 DJ Delorie - 1:4.4.1-2 +- Ensure that we can transition from make-latest to make + +* Fri Mar 31 2023 DJ Delorie - 1:4.4.1-1 +- Rebase to make 4.4 + +* Mon Jan 30 2023 DJ Delorie - 1:4.4-3 +- Handle SIGPIPE as a fatal signal + +* Thu Jan 19 2023 Fedora Release Engineering - 1:4.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Tue Nov 1 2022 DJ Delorie - 1:4.4-1 +- Rebase to make 4.4 + +* Thu Jul 21 2022 Fedora Release Engineering - 1:4.3-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jul 14 2022 DJ Delorie - 1:4.3-10 +- Add SCL compatibility to LTS builds. + +* Wed Jun 29 2022 DJ Delorie - 1:4.3-9 +- Enable long-term supported builds. + +* Fri Apr 8 2022 DJ Delorie - 1:4.3-8 +- Rewrite filter/filter-out to avoid large stack usage. BZ #2010506 +- Require perl core modules for testsuite + +* Thu Jan 20 2022 Fedora Release Engineering - 1:4.3-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 1:4.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Feb 19 2021 DJ Delorie - 1:4.3-5 +- Allow users to build with or without guile support as desired. +- Allow derivative downstreams to default to disabling guile support. + +* Tue Jan 26 2021 Fedora Release Engineering - 1:4.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jul 29 2020 DJ Delorie - 1:4.3-3 +- Disable inheritance of jobserver FDs for recursive make. BZ #1827850 + +* Tue Jul 28 2020 Fedora Release Engineering - 1:4.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Mar 11 2020 DJ Delorie - 1:4.3-1 +- Rebase to make-4.3. Remove obsolete patches. + +* Wed Jan 29 2020 Fedora Release Engineering - 1:4.2.1-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Dec 06 2019 DJ Delorie - 1:4.2.1-15 +- Use a non-blocking read with pselect to avoid hangs. BZ #1556839 + +* Thu Jul 25 2019 Fedora Release Engineering - 1:4.2.1-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Feb 17 2019 Igor Gnatenko - 1:4.2.1-13 +- Run autoreconf + +* Sun Feb 17 2019 Igor Gnatenko - 1:4.2.1-12 +- Switch to latest guile version + +* Fri Feb 01 2019 Fedora Release Engineering - 1:4.2.1-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jul 13 2018 Fedora Release Engineering - 1:4.2.1-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Apr 25 2018 Patsy Griffin Franklin 1:4.2.1-9 +- Fix build failure caused by automake versioning differences related + to the glob changes. +- Fix testing failure due to Perl changes related to expanding paths. + +* Tue Feb 20 2018 Rex Dieter - 1:4.2.1-8 +- BR: gcc, rebuild (guile) + +* Thu Feb 08 2018 Fedora Release Engineering - 1:4.2.1-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Feb 02 2018 Igor Gnatenko - 1:4.2.1-6 +- Fix wrong assumptions of glibc's glob internals + +* Thu Feb 01 2018 Richard W.M. Jones - 1:4.2.1-5 +- Add upstream patch to fix incorrect use of glibc 2.27 glob internals. + +* Thu Aug 03 2017 Fedora Release Engineering - 1:4.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1:4.2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Feb 01 2017 Stephen Gallagher - 4.2.1-2 +- Add missing %%license macro + +* Sun Sep 25 2016 Fedora Release Engineering - 1:4.2.1-1 +- Rebase to make-4.2.1. Remove obsolete patches. BZ #1338558 + +* Sun Sep 25 2016 Fedora Release Engineering - 1:4.1-6 +- Make test suite requires Perl to run. + +* Thu Feb 04 2016 Fedora Release Engineering - 1:4.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Nov 4 2015 Patsy Franklin 1:4.1-4 +- Handle NULL returns from ttyname() Upstream Bug 43434. + Resolves: #1277968 + +* Thu Oct 29 2015 Patsy Franklin 1:4.1-3 +- Enable Guile support. + +* Thu Oct 29 2015 Patsy Franklin 1:4.1-2 +- Include patches dropped in last update as they fix reported bugs and + update the spec file to include more info on the patches. + +* Sat Oct 24 2015 Zbigniew Jędrzejewski-Szmek - 1:4.1-1 +- Update to latest version + +* Wed Jun 17 2015 Fedora Release Engineering - 1:4.0-5.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sat Feb 21 2015 Till Maas - 1:4.0-4.1 +- Rebuilt for Fedora 23 Change + https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code + +* Wed Sep 03 2014 Kyle McMartin - 1:4.0-3.1 +- Pass the test-suite unconditionally until I fix the tests to cope with + deterministic ar archives (which result in expected rebuilds not occuring) + +* Sun Aug 17 2014 Fedora Release Engineering - 1:4.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1:4.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Apr 30 2014 Patsy Franklin 1:4.0-1 +- Rebase to make-4.0 + - Created make-devel sub-package to handle new dependency on gnumake.h. + +* Thu Aug 22 2013 Petr Machata - 1:3.82-19 +- make now restores rlimit to its original values before launching + subprocess via $(shell) (make-3.82-func_shell-rlimit.patch) +- Determinize one test (make-3.82-tests-SECONDARY.patch) + +* Fri Jul 26 2013 Petr Machata - 1:3.82-18 +- Backport upstream patch that adds wildcard expansion to pattern + rules. (make-3.82-stem_glob.patch) + +* Wed Jun 19 2013 Petr Machata - 1:3.82-17 +- Add another fix for upstream bug 30612 + +* Thu Apr 4 2013 Petr Machata - 1:3.82-16 +- Update config.sub and config.guess to support aarch64 + +* Thu Feb 14 2013 Fedora Release Engineering - 1:3.82-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Nov 29 2012 Petr Machata - 1:3.82-14 +- Drop patch5, which hasn't been applied for years + +* Mon Sep 10 2012 Petr Machata - 1:3.82-13 +- Add fix for upstream bug 30653 +- Resolves: #835424 + +* Fri Jul 27 2012 Fedora Release Engineering - 1:3.82-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Mar 13 2012 Petr Machata - 1:3.82-11 +- Add a patch for avoiding glob if possible by Michael Meeks + +* Mon Mar 12 2012 Petr Machata - 1:3.82-10 +- Apply the following patches, proposed upstream by Norbert Thiebaud: + - A patch for warning on call of undefined function + - A patch for tracing calls to "eval" and "call" + +* Fri Jan 13 2012 Fedora Release Engineering - 1:3.82-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Thu Nov 3 2011 Petr Machata - 1:3.82-8 +- Add a patch for preserving -j across Makefile rebuild +- Resolves: #698702 + +* Wed Oct 26 2011 Fedora Release Engineering - 1:3.82-7 +- Rebuilt for glibc bug#747377 + +* Thu May 12 2011 Lubomir Rintel - 1:3.82-6 +- Fix free-after-use with nested assignments (#703104) + +* Tue Feb 08 2011 Fedora Release Engineering - 1:3.82-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Oct 27 2010 Petr Machata - 1:3.82-4 +- Fix a discrepancy between behavior of find_next_token and + pre-allocation of token memory in func_sort. +- Resolves: #643359 + +* Wed Sep 29 2010 jkeating - 1:3.82-3 +- Rebuilt for gcc bug 634757 + +* Mon Sep 13 2010 Petr Machata - 1:3.82-2 +- Add upstream fixes for upstream bugs 30612 and 30723 +- Resolves: #631552 + +* Wed Aug 11 2010 Petr Machata - 1:3.82-1 +- Upstream 3.82: + - Drop rlimit, fdleak, strcpy-overlap, recursion-test, double-free + patches, make supports this functionality now + - Disable the memory patch for the time being + - Port remaining patches + - Add weird-shell patch, upstream bug 30748 +- Resolves: #618998 + +* Wed Aug 11 2010 Petr Machata - 1:3.81-21 +- Add BR procps +- Resolves: #616813 + +* Thu Jul 1 2010 Petr Machata - 1:3.81-20 +- Add a patch by Steve Kemp @debian that might fix the double free + problem. +- Related: #609806 + +* Fri Jun 4 2010 Petr Machata - 1:3.81-19 +- Fix testsuite on F13 +- Resolves: #600004 + +* Tue Aug 11 2009 Petr Machata - 1:3.81-18 +- Fix installation with --excludedocs +- Resolves: #515917 + +* Fri Jul 31 2009 Petr Machata - 1:3.81-17 +- Replace the use of strcpy on overlapping areas with memmove +- Resolves: #514721 + +* Sat Jul 25 2009 Fedora Release Engineering - 1:3.81-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 1:3.81-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Sep 22 2008 Petr Machata - 1:3.81-14 +- Fix patches to apply cleanly with fuzz=0 + +* Tue Sep 16 2008 Petr Machata - 1:3.81-13 +- Mark opened files as cloexec to prevent their leaking through fork +- Resolves: #462090 + +* Tue Mar 25 2008 Petr Machata - 1:3.81-12 +- Fix the rlimit patch. The success flag is kept in memory shared + with parent process after vfork, and so cannot be reset. +- Related: #214033 + +* Tue Feb 19 2008 Fedora Release Engineering - 1:3.81-11 +- Autorebuild for GCC 4.3 + +* Thu Oct 4 2007 Petr Machata - 1:3.81-10 +- Fix parallel builds with reexec. +- Related: #212111, #211290 + +* Thu Oct 4 2007 Petr Machata - 1:3.81-8 +- Cleaned up per merge review. +- Related: #226120 + +* Thu Aug 16 2007 Petr Machata - 1:3.81-7 +- Fix licensing tag. + +* Fri Mar 16 2007 Petr Machata - 1:3.81-6 +- Always run testsuite with C locale. +- Resolves: #232607 + +* Thu Feb 22 2007 Petr Machata - 1:3.81-5 +- Fix newline handling for quoted SHELL. +- Resolves: #219409 + +* Fri Feb 2 2007 Petr Machata - 1:3.81-4 +- Tidy up the specfile per rpmlint comments +- Use utf-8 and fix national characters in contributor's names + +* Thu Jan 25 2007 Petr Machata - 1:3.81-3 +- Ville Skyttä: patch for non-failing %%post, %%preun +- Resolves: #223709 + +* Thu Jan 25 2007 Petr Machata - 1:3.81-2 +- make now restores rlimit to its original values before launching + subprocess (#214033) + +* Wed Jul 12 2006 Jesse Keating - 1:3.81-1.1 +- rebuild + +* Tue May 23 2006 Petr Machata - 1:3.81-1 +- Upstream 3.81: + - Contains several backwards incompatible changes. See NEWS inside + the source package to find out more. +- memory patch and error reporting patch were ported to this version. + +* Wed Mar 15 2006 Petr Machata 1:3.80-11 +- Applied (five years old) patch from Jonathan Kamens to allow make to + handle several pattern-specific variables (#52962). + + The patch was changed so that it forces make to process pattern + specific variables in the same order as they appear in file. + (Upstream make behaves this way, too.) This is change from old make + behavior, which processed the variables in reverse order. In case + you used only x=a assignments, this had the effect of using the + first pattern specific variable that matched. For x+=a this just + doesn't work, and it produces absolutely nonintuitive results. + +- (It would be great if make's target-specific variables were handled + the same way as pattern-specific ones, just without the pattern + component. However current handling is documented and considered a + feature.) + +* Fri Feb 10 2006 Jesse Keating - 1:3.80-10.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1:3.80-10.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Thu Feb 02 2006 Petr Machata 3.80-10 +- H.J. Lu caught a typo in the patch and provided a new one. (#175376) + +* Mon Jan 09 2006 Petr Machata 3.80-9 +- Applied patch from H.J. Lu. Somehow reduces make's enormous memory + consumption. (#175376) + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Aug 22 2005 Jakub Jelinek 3.80-8 +- make sure errno for error reporting is not lost accross _() calls +- report EOF on read pipe differently from read returning < 0 reporting + +* Mon Mar 7 2005 Jakub Jelinek 3.80-7 +- rebuilt with GCC 4 + +* Mon Dec 13 2004 Jakub Jelinek 3.80-6 +- refuse -jN where N is bigger than PIPE_BUF (#142691, #17374) + +* Thu Oct 7 2004 Jakub Jelinek 3.80-5 +- add URL rpm tag (#134799) + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Tue Dec 02 2003 Florian La Roche +- add important bug-fixes from make home-page + +* Sun Nov 30 2003 Florian La Roche +- update to 3.80 + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Sun Dec 29 2002 Tim Powers +- fix references to %%install in the changelog so that the package will build + +* Tue Dec 03 2002 Elliot Lee 3.79.1-15 +- _smp_mflags +- Fix ppc build (sys_siglist issues in patch2) + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Jakub Jelinek +- Run make check during build + +* Thu May 23 2002 Bernhard Rosenkraenzer +- Fix build with current auto* tools + +* Fri Jan 25 2002 Jakub Jelinek +- rebuilt with gcc 3.1 + +* Fri Jul 6 2001 Trond Eivind Glomsrød +- s/Copyright/License/ +- langify +- Make sure it isn't setgid if built as root + +* Sun Jun 24 2001 Elliot Lee +- Bump release + rebuild. + +* Mon Aug 7 2000 Tim Waugh +- change info-dir entry so that 'info make' works (#15029). + +* Tue Aug 1 2000 Jakub Jelinek +- assume we don't have clock_gettime in configure, so that + make is not linked against -lpthread (and thus does not + limit stack to 2MB). + +* Sat Jul 22 2000 Jeff Johnson +- add locale files (#14362). + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Sat Jun 24 2000 Preston Brown +- 3.79.1 bugfix release + +* Mon Jun 5 2000 Jeff Johnson +- FHS packaging. + +* Sun May 7 2000 Bernhard Rosenkraenzer +- Fix build for some odd situations, such as + - previously installed make != GNU make + - /bin/sh != bash + +* Mon Apr 17 2000 Florian La Roche +- update to 3.79 + +* Thu Feb 24 2000 Cristian Gafton +- add patch from Andreas Jaeger to fix dtype lookups (for glibc 2.1.3 + builds) + +* Mon Feb 7 2000 Jeff Johnson +- compress man page. + +* Fri Jan 21 2000 Cristian Gafton +- apply patch to fix a /tmp race condition from Thomas Biege +- simplify %%install + +* Sat Nov 27 1999 Jeff Johnson +- update to 3.78.1. + +* Thu Apr 15 1999 Bill Nottingham +- added a serial tag so it upgrades right + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 5) + +* Wed Sep 16 1998 Cristian Gafton +- added a patch for large file support in glob + +* Tue Aug 18 1998 Jeff Johnson +- update to 3.77 + +* Mon Apr 27 1998 Prospector System +- translations modified for de, fr, tr + +* Thu Oct 16 1997 Donnie Barnes +- udpated from 3.75 to 3.76 +- various spec file cleanups +- added install-info support + +* Mon Jun 02 1997 Erik Troan +- built against glibc diff --git a/plans/ci.fmf b/plans/ci.fmf new file mode 100644 index 0000000..85710d6 --- /dev/null +++ b/plans/ci.fmf @@ -0,0 +1,6 @@ +summary: CI Gating Plan +discover: + how: fmf + directory: tests +execute: + how: tmt diff --git a/sources b/sources new file mode 100644 index 0000000..034a492 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (make-4.4.1.tar.gz) = 145260cbd6a8226cef3dfef0c8baba31847beaebc7e6b65d39d02715fd4f4cab9b139b6c3772e550088d4f9ae80c6d3ed20b9a7664c693644dfb96b4cb60e67c diff --git a/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/Makefile b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/Makefile new file mode 100644 index 0000000..6102b4e --- /dev/null +++ b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/Makefile @@ -0,0 +1,63 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/make/Regression/GNU-make-utility-v-3-82-shipped-with-el7-breaks +# Description: Test for GNU make utility v.3.82 shipped with el7 breaks +# Author: Michal Kolar +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/make/Regression/GNU-make-utility-v-3-82-shipped-with-el7-breaks +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE test.mk golden.output + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Michal Kolar " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: GNU make utility v.3.82 shipped with el7 breaks" >> $(METADATA) + @echo "Type: Regression" >> $(METADATA) + @echo "TestTime: 2m" >> $(METADATA) + @echo "RunFor: make" >> $(METADATA) + @echo "Requires: make coreutils sed diffutils" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2+" >> $(METADATA) + @echo "Confidential: yes" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/PURPOSE b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/PURPOSE new file mode 100644 index 0000000..a82b16c --- /dev/null +++ b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/make/Regression/GNU-make-utility-v-3-82-shipped-with-el7-breaks +Author: Michal Kolar +Summary: GNU make utility v.3.82 shipped with el7 breaks environment vars diff --git a/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/golden.output b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/golden.output new file mode 100644 index 0000000..9d26cbc --- /dev/null +++ b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/golden.output @@ -0,0 +1,2 @@ +echo "TEST=false" +TEST=false diff --git a/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/main.fmf b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/main.fmf new file mode 100644 index 0000000..c24d1a1 --- /dev/null +++ b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/main.fmf @@ -0,0 +1,17 @@ +summary: GNU make utility v.3.82 shipped with el7 breaks +description: | + Summary: GNU make utility v.3.82 shipped with el7 breaks environment vars +contact: +- Michal Kolar +component: +- make +test: ./runtest.sh +framework: beakerlib +recommend: +- make +- coreutils +- sed +- diffutils +duration: 2m +extra-summary: /tools/make/Regression/GNU-make-utility-v-3-82-shipped-with-el7-breaks +extra-task: /tools/make/Regression/GNU-make-utility-v-3-82-shipped-with-el7-breaks diff --git a/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/runtest.sh b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/runtest.sh new file mode 100755 index 0000000..a3c631c --- /dev/null +++ b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/runtest.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/make/Regression/GNU-make-utility-v-3-82-shipped-with-el7-breaks +# Description: Test for BZ#1323206 (GNU make utility v.3.82 shipped with el7 breaks) +# Author: Michal Kolar +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +CMD="make" +PACKAGE="make" +BIN="$(which $CMD)" +export PACKAGE="${PACKAGE:-$(rpm -qf --qf='%{name}\n' $BIN)}" + +rlJournalStart + rlPhaseStartSetup + rlShowRunningKernel + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp test.mk golden.output $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "make -f test.mk test TEST=false >stdout" + rlRun "sed -i -e '/Entering directory/d' -e '/Leaving directory/d' stdout" + rlRun "diff golden.output stdout" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd + diff --git a/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/test.mk b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/test.mk new file mode 100644 index 0000000..c70fd08 --- /dev/null +++ b/tests/GNU-make-utility-v-3-82-shipped-with-el7-breaks/test.mk @@ -0,0 +1,5 @@ +# User makefile + +test: TEST ?= true +test: + echo "TEST=$(TEST)" diff --git a/tests/Use-after-free-when-eval-in-variable/Makefile b/tests/Use-after-free-when-eval-in-variable/Makefile new file mode 100644 index 0000000..7d290b3 --- /dev/null +++ b/tests/Use-after-free-when-eval-in-variable/Makefile @@ -0,0 +1,63 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/make/Regression/Use-after-free-when-eval-in-variable +# Description: Test for Use-after-free() when eval in variable +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/make/Regression/Use-after-free-when-eval-in-variable +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE test.mk + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Marek Polacek " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Test for Use-after-free() when eval in variable)" >> $(METADATA) + @echo "Type: Regression" >> $(METADATA) + @echo "TestTime: 2m" >> $(METADATA) + @echo "RunFor: make" >> $(METADATA) + @echo "Requires: make coreutils" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/Use-after-free-when-eval-in-variable/PURPOSE b/tests/Use-after-free-when-eval-in-variable/PURPOSE new file mode 100644 index 0000000..3334eb4 --- /dev/null +++ b/tests/Use-after-free-when-eval-in-variable/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/make/Regression/Use-after-free-when-eval-in-variable +Author: Marek Polacek +Summary: Use-after-free() when eval in variable assignments reassigns the same variable diff --git a/tests/Use-after-free-when-eval-in-variable/main.fmf b/tests/Use-after-free-when-eval-in-variable/main.fmf new file mode 100644 index 0000000..b951a06 --- /dev/null +++ b/tests/Use-after-free-when-eval-in-variable/main.fmf @@ -0,0 +1,15 @@ +summary: Test for Use-after-free() when eval in variable) +description: | + Summary: Use-after-free() when eval in variable assignments reassigns the same variable +contact: +- Marek Polacek +component: +- make +test: ./runtest.sh +framework: beakerlib +recommend: +- make +- coreutils +duration: 2m +extra-summary: /tools/make/Regression/Use-after-free-when-eval-in-variable +extra-task: /tools/make/Regression/Use-after-free-when-eval-in-variable diff --git a/tests/Use-after-free-when-eval-in-variable/runtest.sh b/tests/Use-after-free-when-eval-in-variable/runtest.sh new file mode 100755 index 0000000..dfc5e94 --- /dev/null +++ b/tests/Use-after-free-when-eval-in-variable/runtest.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/make/Regression/Use-after-free-when-eval-in-variable +# Description: Test for Use-after-free() when eval in variable +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +CMD="make" +BIN="$(which $CMD)" +PACKAGE="make" +export PACKAGE="${PACKAGE:-$(rpm -qf --qf='%{name}\n' $BIN)}" + +rlJournalStart + rlPhaseStartSetup + rlShowRunningKernel + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp test.mk $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "make -f test.mk" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Use-after-free-when-eval-in-variable/test.mk b/tests/Use-after-free-when-eval-in-variable/test.mk new file mode 100644 index 0000000..d845823 --- /dev/null +++ b/tests/Use-after-free-when-eval-in-variable/test.mk @@ -0,0 +1,2 @@ +VARIABLE = $(eval VARIABLE := $(shell sleep 1; echo echo ahoj))$(VARIABLE) +wololo:; $(VARIABLE) diff --git a/tests/make-3-79-has-a-parsing-bug/Makefile b/tests/make-3-79-has-a-parsing-bug/Makefile new file mode 100644 index 0000000..220bd7c --- /dev/null +++ b/tests/make-3-79-has-a-parsing-bug/Makefile @@ -0,0 +1,63 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/make/Regression/make-3-79-has-a-parsing-bug +# Description: make 3.79 has a parsing bug +# Author: Michal Kolar +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2017 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/make/Regression/make-3-79-has-a-parsing-bug +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE test.mk + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Michal Kolar " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: make 3.79 has a parsing bug" >> $(METADATA) + @echo "Type: Regression" >> $(METADATA) + @echo "TestTime: 1m" >> $(METADATA) + @echo "RunFor: make" >> $(METADATA) + @echo "Requires: make coreutils" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2+" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/make-3-79-has-a-parsing-bug/PURPOSE b/tests/make-3-79-has-a-parsing-bug/PURPOSE new file mode 100644 index 0000000..58337b2 --- /dev/null +++ b/tests/make-3-79-has-a-parsing-bug/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/make/Regression/make-3-79-has-a-parsing-bug +Description: make 3.79 has a parsing bug +Author: Michal Kolar diff --git a/tests/make-3-79-has-a-parsing-bug/main.fmf b/tests/make-3-79-has-a-parsing-bug/main.fmf new file mode 100644 index 0000000..3063c99 --- /dev/null +++ b/tests/make-3-79-has-a-parsing-bug/main.fmf @@ -0,0 +1,14 @@ +summary: make 3.79 has a parsing bug +description: '' +contact: +- Michal Kolar +component: +- make +test: ./runtest.sh +framework: beakerlib +recommend: +- make +- coreutils +duration: 1m +extra-summary: /tools/make/Regression/make-3-79-has-a-parsing-bug +extra-task: /tools/make/Regression/make-3-79-has-a-parsing-bug diff --git a/tests/make-3-79-has-a-parsing-bug/runtest.sh b/tests/make-3-79-has-a-parsing-bug/runtest.sh new file mode 100755 index 0000000..be60c1a --- /dev/null +++ b/tests/make-3-79-has-a-parsing-bug/runtest.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/make/Regression/make-3-79-has-a-parsing-bug +# Description: make 3.79 has a parsing bug +# Author: Michal Kolar +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2017 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +CMD="make" +BIN="$(which $CMD)" +PACKAGE="make" +export PACKAGE="${PACKAGE:-$(rpm -qf --qf='%{name}\n' $BIN)}" + +rlJournalStart + rlPhaseStartSetup + rlShowRunningKernel + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp test.mk $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "touch file.l" + rlRun "make -f test.mk" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/make-3-79-has-a-parsing-bug/test.mk b/tests/make-3-79-has-a-parsing-bug/test.mk new file mode 100644 index 0000000..3245364 --- /dev/null +++ b/tests/make-3-79-has-a-parsing-bug/test.mk @@ -0,0 +1,13 @@ +# Author: Petr Muller + +default: out/file.o +%/.exists: + -mkdir $(@D) + touch $@ +src/file.c: file.l src/.exists + @echo file.l to $@ + touch $@ +out/%.o: src/%.c out/.exists + @echo -c $< -o $@ + touch $@ + diff --git a/tests/order-only/Makefile b/tests/order-only/Makefile new file mode 100644 index 0000000..76828d1 --- /dev/null +++ b/tests/order-only/Makefile @@ -0,0 +1,63 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/make/Regression/order-only +# Description: Test for make bug +# Author: Petr Muller +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2017 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/make/Regression/order-only +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE test.mk golden.output + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Petr Muller " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Test for make bug" >> $(METADATA) + @echo "Type: Regression" >> $(METADATA) + @echo "TestTime: 1m" >> $(METADATA) + @echo "RunFor: make" >> $(METADATA) + @echo "Requires: make coreutils diffutils" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv3" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/order-only/PURPOSE b/tests/order-only/PURPOSE new file mode 100644 index 0000000..b2d9847 --- /dev/null +++ b/tests/order-only/PURPOSE @@ -0,0 +1,4 @@ +PURPOSE of /tools/make/Regression/order-only +Description: Regression Test for make bug +Author: Petr Muller +Summary: Test that make doesn't insert bogus values into order-only dependencies diff --git a/tests/order-only/golden.output b/tests/order-only/golden.output new file mode 100644 index 0000000..0382cfe --- /dev/null +++ b/tests/order-only/golden.output @@ -0,0 +1,9 @@ +mkdir -p dir/b/. +@ [a/b/c] +^ [] +? [] +mkdir -p a/b/. +@ [a] +^ [] +? [] +rm dir/b/. diff --git a/tests/order-only/main.fmf b/tests/order-only/main.fmf new file mode 100644 index 0000000..19e019f --- /dev/null +++ b/tests/order-only/main.fmf @@ -0,0 +1,16 @@ +summary: Test for make bug +description: | + Summary: Test that make doesn't insert bogus values into order-only dependencies +contact: +- Petr Muller +component: +- make +test: ./runtest.sh +framework: beakerlib +recommend: +- make +- coreutils +- diffutils +duration: 1m +extra-summary: /tools/make/Regression/order-only +extra-task: /tools/make/Regression/order-only diff --git a/tests/order-only/runtest.sh b/tests/order-only/runtest.sh new file mode 100755 index 0000000..c355ea3 --- /dev/null +++ b/tests/order-only/runtest.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/make/Regression/order-only +# Description: Test for make bug +# Author: Petr Muller +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2017 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +CMD="make" +BIN="$(which $CMD)" +PACKAGE="make" +export PACKAGE="${PACKAGE:-$(rpm -qf --qf='%{name}\n' $BIN)}" + +rlJournalStart + rlPhaseStartSetup + rlShowRunningKernel + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" + rlRun "cp test.mk golden.output $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "make -f test.mk | grep -v -e 'Entering' -e 'Leaving' >tested.output" + rlRun "diff golden.output tested.output" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/order-only/test.mk b/tests/order-only/test.mk new file mode 100644 index 0000000..71ca4b1 --- /dev/null +++ b/tests/order-only/test.mk @@ -0,0 +1,17 @@ +all: ./a/b/c a + +clean: + rm -rf a dir + +%/.: + mkdir -p $(@) + +a/%/c: | ./dir/%/. + @echo "@ [$@]" + @echo "^ [$^]" + @echo "? [$?]" + +a: | ./a/b/. + @echo "@ [$@]" + @echo "^ [$^]" + @echo "? [$?]" diff --git a/tests/smoke-check-make-runs/Makefile b/tests/smoke-check-make-runs/Makefile new file mode 100644 index 0000000..b9ddc15 --- /dev/null +++ b/tests/smoke-check-make-runs/Makefile @@ -0,0 +1,63 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /tools/make/Sanity/smoke-check-make-runs +# Description: Show your version. Build a one-file project. +# Author: Vaclav Kadlcik +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2015 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +export TEST=/tools/make/Sanity/smoke-check-make-runs +export TESTVERSION=1.0 + +BUILT_FILES= + +FILES=$(METADATA) runtest.sh Makefile PURPOSE hello_world.c smoke.mk + +.PHONY: all install download clean + +run: $(FILES) build + ./runtest.sh + +build: $(BUILT_FILES) + test -x runtest.sh || chmod a+x runtest.sh + +clean: + rm -f *~ $(BUILT_FILES) + + +include /usr/share/rhts/lib/rhts-make.include + +$(METADATA): Makefile + @echo "Owner: Vaclav Kadlcik " > $(METADATA) + @echo "Name: $(TEST)" >> $(METADATA) + @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) + @echo "Path: $(TEST_DIR)" >> $(METADATA) + @echo "Description: Show your version. Build a one-file project." >> $(METADATA) + @echo "Type: Sanity" >> $(METADATA) + @echo "TestTime: 5m" >> $(METADATA) + @echo "RunFor: make" >> $(METADATA) + @echo "Requires: make gcc" >> $(METADATA) + @echo "Priority: Normal" >> $(METADATA) + @echo "License: GPLv2+" >> $(METADATA) + @echo "Confidential: no" >> $(METADATA) + @echo "Destructive: no" >> $(METADATA) + @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) + + rhts-lint $(METADATA) diff --git a/tests/smoke-check-make-runs/PURPOSE b/tests/smoke-check-make-runs/PURPOSE new file mode 100644 index 0000000..65ec1a9 --- /dev/null +++ b/tests/smoke-check-make-runs/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /tools/make/Sanity/smoke-check-make-runs +Description: Show your version. Build a one-file project. +Author: Vaclav Kadlcik diff --git a/tests/smoke-check-make-runs/hello_world.c b/tests/smoke-check-make-runs/hello_world.c new file mode 100644 index 0000000..190a52a --- /dev/null +++ b/tests/smoke-check-make-runs/hello_world.c @@ -0,0 +1,8 @@ +#include + +int main(int argc, char ** argv) { + if (printf("Hello world!\n") < 0) { + return -1; + } + return 0; +} diff --git a/tests/smoke-check-make-runs/main.fmf b/tests/smoke-check-make-runs/main.fmf new file mode 100644 index 0000000..815130d --- /dev/null +++ b/tests/smoke-check-make-runs/main.fmf @@ -0,0 +1,14 @@ +summary: Show your version. Build a one-file project. +description: '' +contact: +- Vaclav Kadlcik +component: +- make +test: ./runtest.sh +framework: beakerlib +recommend: +- make +- gcc +duration: 5m +extra-summary: /tools/make/Sanity/smoke-check-make-runs +extra-task: /tools/make/Sanity/smoke-check-make-runs diff --git a/tests/smoke-check-make-runs/runtest.sh b/tests/smoke-check-make-runs/runtest.sh new file mode 100755 index 0000000..57e16d5 --- /dev/null +++ b/tests/smoke-check-make-runs/runtest.sh @@ -0,0 +1,61 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/make/Sanity/smoke-check-make-runs +# Description: Show your version. Build a one-file project. +# Author: Vaclav Kadlcik +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2015 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +MAKE="$(which --skip-alias make)" +PACKAGE="make" +export PACKAGE="${PACKAGE:-$(rpm -qf --qf='%{name}\n' $MAKE)}" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "cp hello_world.c $TmpDir" + rlRun "cp smoke.mk $TmpDir/Makefile" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun -t -s 'make -v' + rlAssertNotGrep '^STDERR:' $rlRun_LOG + rlAssertGrep '^STDOUT: GNU Make [0-9]' $rlRun_LOG + rlAssertNotExists 'hello_world' + rlRun 'make' + rlAssertExists 'hello_world' + rlRun './hello_world' + rlRun 'make clean' + rlAssertNotExists 'hello_world' + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/smoke-check-make-runs/smoke.mk b/tests/smoke-check-make-runs/smoke.mk new file mode 100644 index 0000000..a7a122a --- /dev/null +++ b/tests/smoke-check-make-runs/smoke.mk @@ -0,0 +1,9 @@ +all: hello_world + +hello_world: hello_world.o + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ + +clean: + rm -f hello_world hello_world.o + +.SUFFIXES: .c