mbox series

[v4,0/2] Makefile: libfdt: build only the strict necessary

Message ID 20200514193811.6798-1-cfontana@suse.de (mailing list archive)
Headers show
Series Makefile: libfdt: build only the strict necessary | expand

Message

Claudio Fontana May 14, 2020, 7:38 p.m. UTC
v3 -> v4: NB! only useful when updating to latest dtc (not in QEMU yet)

* changed the approach to leverage new upstream dtc Makefile,
  needs dtc submodule update to include upstream dtc commit
  85e5d839847af54efab170f2b1331b2a6421e647.

* LIBFDT_srcdir does not exist anymore in upstream dtc: it is also
  not used anymore.

* LIBFDT_lib: need to avoid building libfdt.so at least for now, so pass as
  empty to avoid building the .so. This is to avoid breaking existing
  trees with objects already compiled without -fPIC.

* clean: no need to make dtc clean target, every artifact is captured by
  global clean rule

v2 -> v3:

* changed into a 2 patch series; in the second patch we remove the old
  compatibility gunks that were meant for removal some time after 4.1.

* renamed the libfdt PHONY rule to dtc/all, with the intent to make
  existing working trees forward and backward compatible across the change.

v1 -> v2:

* fix error generated when running UNCHECKED_GOALS without prior configure,
  for example during make docker-image-fedora. Without configure, DSOSUF is
  empty, and the module pattern rule in rules.mak that uses this variable
  can match too much; provide a default in the Makefile to avoid it.

* only attempt to build the archive when there is a non-empty list of objects.
  This could be done in general for the %.a: pattern in rules.mak, but maybe
  there are valid reasons to build an empty .a?

* removed some intermediate variables that did not add much value
  (LIBFDT_srcdir, LIBFDT_archive)

Tested locally with 3 VPATH configurations (no-, VPATH, VPATH in src subdir),
and with docker-image-fedora, docker-test-debug@fedora that failed before.

Claudio Fontana (2):
  Makefile: libfdt: build only the strict necessary
  Makefile: remove old compatibility gunks

 Makefile  | 32 ++++++++++++++++----------------
 configure |  6 +-----
 rules.mak |  2 ++
 3 files changed, 19 insertions(+), 21 deletions(-)

Comments

Philippe Mathieu-Daudé May 15, 2020, 7:50 a.m. UTC | #1
Hi Claudio,

On 5/14/20 9:38 PM, Claudio Fontana wrote:
> v3 -> v4: NB! only useful when updating to latest dtc (not in QEMU yet)
> 
> * changed the approach to leverage new upstream dtc Makefile,
>    needs dtc submodule update to include upstream dtc commit
>    85e5d839847af54efab170f2b1331b2a6421e647.

I don't have this commit locally:

fatal: bad object 85e5d839847af54efab170f2b1331b2a6421e647

My remote is https://git.qemu.org/git/dtc.git, might it be de-synchronized?

> 
> * LIBFDT_srcdir does not exist anymore in upstream dtc: it is also
>    not used anymore.

Why not include the submodule update in the first patch?

> 
> * LIBFDT_lib: need to avoid building libfdt.so at least for now, so pass as
>    empty to avoid building the .so. This is to avoid breaking existing
>    trees with objects already compiled without -fPIC.
> 
> * clean: no need to make dtc clean target, every artifact is captured by
>    global clean rule
> 
> v2 -> v3:
> 
> * changed into a 2 patch series; in the second patch we remove the old
>    compatibility gunks that were meant for removal some time after 4.1.
> 
> * renamed the libfdt PHONY rule to dtc/all, with the intent to make
>    existing working trees forward and backward compatible across the change.
> 
> v1 -> v2:
> 
> * fix error generated when running UNCHECKED_GOALS without prior configure,
>    for example during make docker-image-fedora. Without configure, DSOSUF is
>    empty, and the module pattern rule in rules.mak that uses this variable
>    can match too much; provide a default in the Makefile to avoid it.
> 
> * only attempt to build the archive when there is a non-empty list of objects.
>    This could be done in general for the %.a: pattern in rules.mak, but maybe
>    there are valid reasons to build an empty .a?
> 
> * removed some intermediate variables that did not add much value
>    (LIBFDT_srcdir, LIBFDT_archive)
> 
> Tested locally with 3 VPATH configurations (no-, VPATH, VPATH in src subdir),
> and with docker-image-fedora, docker-test-debug@fedora that failed before.
> 
> Claudio Fontana (2):
>    Makefile: libfdt: build only the strict necessary
>    Makefile: remove old compatibility gunks
> 
>   Makefile  | 32 ++++++++++++++++----------------
>   configure |  6 +-----
>   rules.mak |  2 ++
>   3 files changed, 19 insertions(+), 21 deletions(-)
>
Claudio Fontana May 15, 2020, 7:56 a.m. UTC | #2
On 5/15/20 9:50 AM, Philippe Mathieu-Daudé wrote:
> Hi Claudio,
> 
> On 5/14/20 9:38 PM, Claudio Fontana wrote:
>> v3 -> v4: NB! only useful when updating to latest dtc (not in QEMU yet)
>>
>> * changed the approach to leverage new upstream dtc Makefile,
>>    needs dtc submodule update to include upstream dtc commit
>>    85e5d839847af54efab170f2b1331b2a6421e647.
> 
> I don't have this commit locally:
> 
> fatal: bad object 85e5d839847af54efab170f2b1331b2a6421e647
> 
> My remote is https://git.qemu.org/git/dtc.git, might it be de-synchronized?

Hi Philippe, maybe that commit is not in the qemu dtc.git yet, only in David's tree at:

https://github.com/dgibson/dtc.git

> 
>>
>> * LIBFDT_srcdir does not exist anymore in upstream dtc: it is also
>>    not used anymore.
> 
> Why not include the submodule update in the first patch?

Right, I am not sure how git.qemu.org/git/dtc.git is updated?

I guess once it is, I should include the submodule update.

Thanks!

Claudio

> 
>>
>> * LIBFDT_lib: need to avoid building libfdt.so at least for now, so pass as
>>    empty to avoid building the .so. This is to avoid breaking existing
>>    trees with objects already compiled without -fPIC.
>>
>> * clean: no need to make dtc clean target, every artifact is captured by
>>    global clean rule
>>
>> v2 -> v3:
>>
>> * changed into a 2 patch series; in the second patch we remove the old
>>    compatibility gunks that were meant for removal some time after 4.1.
>>
>> * renamed the libfdt PHONY rule to dtc/all, with the intent to make
>>    existing working trees forward and backward compatible across the change.
>>
>> v1 -> v2:
>>
>> * fix error generated when running UNCHECKED_GOALS without prior configure,
>>    for example during make docker-image-fedora. Without configure, DSOSUF is
>>    empty, and the module pattern rule in rules.mak that uses this variable
>>    can match too much; provide a default in the Makefile to avoid it.
>>
>> * only attempt to build the archive when there is a non-empty list of objects.
>>    This could be done in general for the %.a: pattern in rules.mak, but maybe
>>    there are valid reasons to build an empty .a?
>>
>> * removed some intermediate variables that did not add much value
>>    (LIBFDT_srcdir, LIBFDT_archive)
>>
>> Tested locally with 3 VPATH configurations (no-, VPATH, VPATH in src subdir),
>> and with docker-image-fedora, docker-test-debug@fedora that failed before.
>>
>> Claudio Fontana (2):
>>    Makefile: libfdt: build only the strict necessary
>>    Makefile: remove old compatibility gunks
>>
>>   Makefile  | 32 ++++++++++++++++----------------
>>   configure |  6 +-----
>>   rules.mak |  2 ++
>>   3 files changed, 19 insertions(+), 21 deletions(-)
>>
>
Philippe Mathieu-Daudé May 15, 2020, 8:25 a.m. UTC | #3
On 5/15/20 9:56 AM, Claudio Fontana wrote:
> On 5/15/20 9:50 AM, Philippe Mathieu-Daudé wrote:
>> Hi Claudio,
>>
>> On 5/14/20 9:38 PM, Claudio Fontana wrote:
>>> v3 -> v4: NB! only useful when updating to latest dtc (not in QEMU yet)
>>>
>>> * changed the approach to leverage new upstream dtc Makefile,
>>>     needs dtc submodule update to include upstream dtc commit
>>>     85e5d839847af54efab170f2b1331b2a6421e647.
>>
>> I don't have this commit locally:
>>
>> fatal: bad object 85e5d839847af54efab170f2b1331b2a6421e647
>>
>> My remote is https://git.qemu.org/git/dtc.git, might it be de-synchronized?
> 
> Hi Philippe, maybe that commit is not in the qemu dtc.git yet, only in David's tree at:
> 
> https://github.com/dgibson/dtc.git
> 
>>
>>>
>>> * LIBFDT_srcdir does not exist anymore in upstream dtc: it is also
>>>     not used anymore.
>>
>> Why not include the submodule update in the first patch?
> 
> Right, I am not sure how git.qemu.org/git/dtc.git is updated?
> 
> I guess once it is, I should include the submodule update.

OK. Maybe David want to make a libdtc release first, before to update 
QEMU submodule.

Meanwhile using David's remote, and the submodule update:

-- >8 --
diff --git a/dtc b/dtc
index 88f18909db..85e5d83984 160000
--- a/dtc
+++ b/dtc
@@ -1 +1 @@
-Subproject commit 88f18909db731a627456f26d779445f84e449536
+Subproject commit 85e5d839847af54efab170f2b1331b2a6421e647
---

for the series:
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> 
> Thanks!
> 
> Claudio
> 
>>
>>>
>>> * LIBFDT_lib: need to avoid building libfdt.so at least for now, so pass as
>>>     empty to avoid building the .so. This is to avoid breaking existing
>>>     trees with objects already compiled without -fPIC.
>>>
>>> * clean: no need to make dtc clean target, every artifact is captured by
>>>     global clean rule
>>>
>>> v2 -> v3:
>>>
>>> * changed into a 2 patch series; in the second patch we remove the old
>>>     compatibility gunks that were meant for removal some time after 4.1.
>>>
>>> * renamed the libfdt PHONY rule to dtc/all, with the intent to make
>>>     existing working trees forward and backward compatible across the change.
>>>
>>> v1 -> v2:
>>>
>>> * fix error generated when running UNCHECKED_GOALS without prior configure,
>>>     for example during make docker-image-fedora. Without configure, DSOSUF is
>>>     empty, and the module pattern rule in rules.mak that uses this variable
>>>     can match too much; provide a default in the Makefile to avoid it.
>>>
>>> * only attempt to build the archive when there is a non-empty list of objects.
>>>     This could be done in general for the %.a: pattern in rules.mak, but maybe
>>>     there are valid reasons to build an empty .a?
>>>
>>> * removed some intermediate variables that did not add much value
>>>     (LIBFDT_srcdir, LIBFDT_archive)
>>>
>>> Tested locally with 3 VPATH configurations (no-, VPATH, VPATH in src subdir),
>>> and with docker-image-fedora, docker-test-debug@fedora that failed before.
>>>
>>> Claudio Fontana (2):
>>>     Makefile: libfdt: build only the strict necessary
>>>     Makefile: remove old compatibility gunks
>>>
>>>    Makefile  | 32 ++++++++++++++++----------------
>>>    configure |  6 +-----
>>>    rules.mak |  2 ++
>>>    3 files changed, 19 insertions(+), 21 deletions(-)
>>>
>>
>
David Gibson May 15, 2020, 1:36 p.m. UTC | #4
On Fri, May 15, 2020 at 09:56:25AM +0200, Claudio Fontana wrote:
> On 5/15/20 9:50 AM, Philippe Mathieu-Daudé wrote:
> > Hi Claudio,
> > 
> > On 5/14/20 9:38 PM, Claudio Fontana wrote:
> >> v3 -> v4: NB! only useful when updating to latest dtc (not in QEMU yet)
> >>
> >> * changed the approach to leverage new upstream dtc Makefile,
> >>    needs dtc submodule update to include upstream dtc commit
> >>    85e5d839847af54efab170f2b1331b2a6421e647.
> > 
> > I don't have this commit locally:
> > 
> > fatal: bad object 85e5d839847af54efab170f2b1331b2a6421e647
> > 
> > My remote is https://git.qemu.org/git/dtc.git, might it be de-synchronized?
> 
> Hi Philippe, maybe that commit is not in the qemu dtc.git yet, only in David's tree at:
> 
> https://github.com/dgibson/dtc.git

Oops, I forgot to push it to the master tree at
git://git.kernel.org/pub/scm/utils/dtc/dtc.git

Done now.  The qemu.org mirror should update within a day or so.

> >> * LIBFDT_srcdir does not exist anymore in upstream dtc: it is also
> >>    not used anymore.
> > 
> > Why not include the submodule update in the first patch?
> 
> Right, I am not sure how git.qemu.org/git/dtc.git is updated?
> 
> I guess once it is, I should include the submodule update.
> 
> Thanks!
> 
> Claudio
> 
> > 
> >>
> >> * LIBFDT_lib: need to avoid building libfdt.so at least for now, so pass as
> >>    empty to avoid building the .so. This is to avoid breaking existing
> >>    trees with objects already compiled without -fPIC.
> >>
> >> * clean: no need to make dtc clean target, every artifact is captured by
> >>    global clean rule
> >>
> >> v2 -> v3:
> >>
> >> * changed into a 2 patch series; in the second patch we remove the old
> >>    compatibility gunks that were meant for removal some time after 4.1.
> >>
> >> * renamed the libfdt PHONY rule to dtc/all, with the intent to make
> >>    existing working trees forward and backward compatible across the change.
> >>
> >> v1 -> v2:
> >>
> >> * fix error generated when running UNCHECKED_GOALS without prior configure,
> >>    for example during make docker-image-fedora. Without configure, DSOSUF is
> >>    empty, and the module pattern rule in rules.mak that uses this variable
> >>    can match too much; provide a default in the Makefile to avoid it.
> >>
> >> * only attempt to build the archive when there is a non-empty list of objects.
> >>    This could be done in general for the %.a: pattern in rules.mak, but maybe
> >>    there are valid reasons to build an empty .a?
> >>
> >> * removed some intermediate variables that did not add much value
> >>    (LIBFDT_srcdir, LIBFDT_archive)
> >>
> >> Tested locally with 3 VPATH configurations (no-, VPATH, VPATH in src subdir),
> >> and with docker-image-fedora, docker-test-debug@fedora that failed before.
> >>
> >> Claudio Fontana (2):
> >>    Makefile: libfdt: build only the strict necessary
> >>    Makefile: remove old compatibility gunks
> >>
> >>   Makefile  | 32 ++++++++++++++++----------------
> >>   configure |  6 +-----
> >>   rules.mak |  2 ++
> >>   3 files changed, 19 insertions(+), 21 deletions(-)
> >>
> > 
>