[v2] oeqa: Touch cpio configure script before building

Submitted by Khem Raj on Feb. 7, 2020, 6:25 p.m. | Patch ID: 169822

Details

Message ID 20200207182542.300768-1-raj.khem@gmail.com
State New
Headers show

Commit Message

Khem Raj Feb. 7, 2020, 6:25 p.m.
since the versions of autotools might differ, and difference in
timestamps for configure and system can result in reconfigure lets avoid
that by touching the configure script to match system time

Avoids
error: newly created file is older than distributed files!

[YOCTO #13779]

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
v2: Touch configure to match timestamps with system
    Move the touch cmd to configure step itself

 meta/lib/oeqa/runtime/cases/buildcpio.py | 2 +-
 meta/lib/oeqa/sdk/cases/buildcpio.py     | 2 +-
 meta/lib/oeqa/selftest/cases/meta_ide.py | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

Patch hide | download patch | download mbox

diff --git a/meta/lib/oeqa/runtime/cases/buildcpio.py b/meta/lib/oeqa/runtime/cases/buildcpio.py
index 4bd72dd37e..a2cc8148db 100644
--- a/meta/lib/oeqa/runtime/cases/buildcpio.py
+++ b/meta/lib/oeqa/runtime/cases/buildcpio.py
@@ -27,6 +27,6 @@  class BuildCpioTest(OERuntimeTestCase):
     @OEHasPackage(['autoconf'])
     def test_cpio(self):
         self.project.download_archive()
-        self.project.run_configure()
+        self.project.run_configure('','touch ./configure;')
         self.project.run_make()
         self.project.run_install()
diff --git a/meta/lib/oeqa/sdk/cases/buildcpio.py b/meta/lib/oeqa/sdk/cases/buildcpio.py
index b0beafb38f..e412ee189f 100644
--- a/meta/lib/oeqa/sdk/cases/buildcpio.py
+++ b/meta/lib/oeqa/sdk/cases/buildcpio.py
@@ -28,7 +28,7 @@  class BuildCpioTest(OESDKTestCase):
             self.assertTrue(os.path.isdir(dirs["source"]))
             os.makedirs(dirs["build"])
 
-            self._run("cd {build} && {source}/configure $CONFIGURE_FLAGS".format(**dirs))
+            self._run("cd {build} && touch {source}/configure && {source}/configure $CONFIGURE_FLAGS".format(**dirs))
             self._run("cd {build} && make -j".format(**dirs))
             self._run("cd {build} && make install DESTDIR={install}".format(**dirs))
 
diff --git a/meta/lib/oeqa/selftest/cases/meta_ide.py b/meta/lib/oeqa/selftest/cases/meta_ide.py
index 809142559a..16acd1154d 100644
--- a/meta/lib/oeqa/selftest/cases/meta_ide.py
+++ b/meta/lib/oeqa/selftest/cases/meta_ide.py
@@ -43,7 +43,7 @@  class MetaIDE(OESelftestTestCase):
                         "https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
                         self.tmpdir_metaideQA, self.td['DATETIME'], dl_dir=dl_dir)
         self.project.download_archive()
-        self.assertEqual(self.project.run_configure(), 0,
+        self.assertEqual(self.project.run_configure('','touch configure;'), 0,
                         msg="Running configure failed")
         self.assertEqual(self.project.run_make(), 0,
                         msg="Running make failed")

Comments

Andre McCurdy Feb. 7, 2020, 6:39 p.m.
On Fri, Feb 7, 2020 at 10:25 AM Khem Raj <raj.khem@gmail.com> wrote:
>
> since the versions of autotools might differ, and difference in
> timestamps for configure and system can result in reconfigure lets avoid
> that by touching the configure script to match system time

This is probably only a partial fix. If you look at the various
dependencies in Makefile.in, ensuring that configure is newer than
$(am__configure_deps) is only one case that needs to be handled. You
also need to ensure that e.g. Makefile.in is newer than
$(srcdir)/Makefile.am $(srcdir)/Make.rules $(am__configure_deps), that
aclocal.m4 is newer than $(am__aclocal_m4_deps), etc.

Touching various files in the right order can be made to work, but
there's more to it than just touching configure. Configuring with
--disable-maintainer-mode and therefore disabling all these autotools
rules is probably a more robust solution.

> Avoids
> error: newly created file is older than distributed files!
>
> [YOCTO #13779]
>
> Signed-off-by: Khem Raj <raj.khem@gmail.com>
> ---
> v2: Touch configure to match timestamps with system
>     Move the touch cmd to configure step itself
>
>  meta/lib/oeqa/runtime/cases/buildcpio.py | 2 +-
>  meta/lib/oeqa/sdk/cases/buildcpio.py     | 2 +-
>  meta/lib/oeqa/selftest/cases/meta_ide.py | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/meta/lib/oeqa/runtime/cases/buildcpio.py b/meta/lib/oeqa/runtime/cases/buildcpio.py
> index 4bd72dd37e..a2cc8148db 100644
> --- a/meta/lib/oeqa/runtime/cases/buildcpio.py
> +++ b/meta/lib/oeqa/runtime/cases/buildcpio.py
> @@ -27,6 +27,6 @@ class BuildCpioTest(OERuntimeTestCase):
>      @OEHasPackage(['autoconf'])
>      def test_cpio(self):
>          self.project.download_archive()
> -        self.project.run_configure()
> +        self.project.run_configure('','touch ./configure;')
>          self.project.run_make()
>          self.project.run_install()
> diff --git a/meta/lib/oeqa/sdk/cases/buildcpio.py b/meta/lib/oeqa/sdk/cases/buildcpio.py
> index b0beafb38f..e412ee189f 100644
> --- a/meta/lib/oeqa/sdk/cases/buildcpio.py
> +++ b/meta/lib/oeqa/sdk/cases/buildcpio.py
> @@ -28,7 +28,7 @@ class BuildCpioTest(OESDKTestCase):
>              self.assertTrue(os.path.isdir(dirs["source"]))
>              os.makedirs(dirs["build"])
>
> -            self._run("cd {build} && {source}/configure $CONFIGURE_FLAGS".format(**dirs))
> +            self._run("cd {build} && touch {source}/configure && {source}/configure $CONFIGURE_FLAGS".format(**dirs))
>              self._run("cd {build} && make -j".format(**dirs))
>              self._run("cd {build} && make install DESTDIR={install}".format(**dirs))
>
> diff --git a/meta/lib/oeqa/selftest/cases/meta_ide.py b/meta/lib/oeqa/selftest/cases/meta_ide.py
> index 809142559a..16acd1154d 100644
> --- a/meta/lib/oeqa/selftest/cases/meta_ide.py
> +++ b/meta/lib/oeqa/selftest/cases/meta_ide.py
> @@ -43,7 +43,7 @@ class MetaIDE(OESelftestTestCase):
>                          "https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
>                          self.tmpdir_metaideQA, self.td['DATETIME'], dl_dir=dl_dir)
>          self.project.download_archive()
> -        self.assertEqual(self.project.run_configure(), 0,
> +        self.assertEqual(self.project.run_configure('','touch configure;'), 0,
>                          msg="Running configure failed")
>          self.assertEqual(self.project.run_make(), 0,
>                          msg="Running make failed")
> --
> 2.25.0
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Khem Raj Feb. 7, 2020, 7:01 p.m.
On Fri, Feb 7, 2020 at 10:40 AM Andre McCurdy <armccurdy@gmail.com> wrote:
>
> On Fri, Feb 7, 2020 at 10:25 AM Khem Raj <raj.khem@gmail.com> wrote:
> >
> > since the versions of autotools might differ, and difference in
> > timestamps for configure and system can result in reconfigure lets avoid
> > that by touching the configure script to match system time
>
> This is probably only a partial fix. If you look at the various
> dependencies in Makefile.in, ensuring that configure is newer than
> $(am__configure_deps) is only one case that needs to be handled. You
> also need to ensure that e.g. Makefile.in is newer than
> $(srcdir)/Makefile.am $(srcdir)/Make.rules $(am__configure_deps), that
> aclocal.m4 is newer than $(am__aclocal_m4_deps), etc.
>
> Touching various files in the right order can be made to work, but
> there's more to it than just touching configure. Configuring with
> --disable-maintainer-mode and therefore disabling all these autotools
> rules is probably a more robust solution.

right. Lets see if we run into that as well, I would send a v3 if this
is effective then we know we are on right path.

>
> > Avoids
> > error: newly created file is older than distributed files!
> >
> > [YOCTO #13779]
> >
> > Signed-off-by: Khem Raj <raj.khem@gmail.com>
> > ---
> > v2: Touch configure to match timestamps with system
> >     Move the touch cmd to configure step itself
> >
> >  meta/lib/oeqa/runtime/cases/buildcpio.py | 2 +-
> >  meta/lib/oeqa/sdk/cases/buildcpio.py     | 2 +-
> >  meta/lib/oeqa/selftest/cases/meta_ide.py | 2 +-
> >  3 files changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/meta/lib/oeqa/runtime/cases/buildcpio.py b/meta/lib/oeqa/runtime/cases/buildcpio.py
> > index 4bd72dd37e..a2cc8148db 100644
> > --- a/meta/lib/oeqa/runtime/cases/buildcpio.py
> > +++ b/meta/lib/oeqa/runtime/cases/buildcpio.py
> > @@ -27,6 +27,6 @@ class BuildCpioTest(OERuntimeTestCase):
> >      @OEHasPackage(['autoconf'])
> >      def test_cpio(self):
> >          self.project.download_archive()
> > -        self.project.run_configure()
> > +        self.project.run_configure('','touch ./configure;')
> >          self.project.run_make()
> >          self.project.run_install()
> > diff --git a/meta/lib/oeqa/sdk/cases/buildcpio.py b/meta/lib/oeqa/sdk/cases/buildcpio.py
> > index b0beafb38f..e412ee189f 100644
> > --- a/meta/lib/oeqa/sdk/cases/buildcpio.py
> > +++ b/meta/lib/oeqa/sdk/cases/buildcpio.py
> > @@ -28,7 +28,7 @@ class BuildCpioTest(OESDKTestCase):
> >              self.assertTrue(os.path.isdir(dirs["source"]))
> >              os.makedirs(dirs["build"])
> >
> > -            self._run("cd {build} && {source}/configure $CONFIGURE_FLAGS".format(**dirs))
> > +            self._run("cd {build} && touch {source}/configure && {source}/configure $CONFIGURE_FLAGS".format(**dirs))
> >              self._run("cd {build} && make -j".format(**dirs))
> >              self._run("cd {build} && make install DESTDIR={install}".format(**dirs))
> >
> > diff --git a/meta/lib/oeqa/selftest/cases/meta_ide.py b/meta/lib/oeqa/selftest/cases/meta_ide.py
> > index 809142559a..16acd1154d 100644
> > --- a/meta/lib/oeqa/selftest/cases/meta_ide.py
> > +++ b/meta/lib/oeqa/selftest/cases/meta_ide.py
> > @@ -43,7 +43,7 @@ class MetaIDE(OESelftestTestCase):
> >                          "https://ftp.gnu.org/gnu/cpio/cpio-2.13.tar.gz",
> >                          self.tmpdir_metaideQA, self.td['DATETIME'], dl_dir=dl_dir)
> >          self.project.download_archive()
> > -        self.assertEqual(self.project.run_configure(), 0,
> > +        self.assertEqual(self.project.run_configure('','touch configure;'), 0,
> >                          msg="Running configure failed")
> >          self.assertEqual(self.project.run_make(), 0,
> >                          msg="Running make failed")
> > --
> > 2.25.0
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core