From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755301AbcIMHYY (ORCPT ); Tue, 13 Sep 2016 03:24:24 -0400 Received: from mx2.suse.de ([195.135.220.15]:46695 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753127AbcIMHYX (ORCPT ); Tue, 13 Sep 2016 03:24:23 -0400 Date: Tue, 13 Sep 2016 09:24:14 +0200 From: Michal Marek To: Florian Fainelli Cc: linux-kernel@vger.kernel.org, sam@ravnborg.org, mmarek@suse.cz, joe@perches.com, lede-dev@lists.infradead.org, openwrt-devel@lists.openwrt.org Subject: Re: gen_initramfs_list.sh escaping problem or stale dependency file? Message-ID: <20160913072414.GA13667@sepie.suse.cz> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Sep 12, 2016 at 05:12:15PM -0700, Florian Fainelli wrote: > Hi, > > I have a root filesystem embedding filenames that look like these: > > /lib/data/: > > these are essentially files that can be matched against an USB > vendor/product id in an easy way. > > Now, the fun part is that this is only a problem when doing the > following (using OpenWrt/LEDE as a build system): > > 1: > - set CONFIG_INITRAMFS_SOURCE="" > - build kernel modules > - build my user-space tools > - build the kernel image > - reconfigure the kernel to now use an initramfs > - build the kernel w/ initramfs > > and then back to step 1 with the kernel build, would I hit this error: > > usr/Makefile:64: *** multiple target patterns. Stop. [...] > Which sorts of make sense here because the file name contains a ":" > which is not escaped, so GNU Make tries to interpret it. > > Now the part that does not quite make sense to me is why this file is > even relevant here considering that the first thing we do is set > CONFIG_INITRAMFS_SOURCE="" to disable the initramfs basically. It is possible that we read usr/Makefile twice for some reason. But the real problem is the lack of escaping. Can you try the following (untested) patch? diff --git a/scripts/gen_initramfs_list.sh b/scripts/gen_initramfs_list.sh index 17fa901418ae..5d3188e74101 100755 --- a/scripts/gen_initramfs_list.sh +++ b/scripts/gen_initramfs_list.sh @@ -97,7 +97,10 @@ print_mtime() { } list_parse() { - [ ! -L "$1" ] && echo "$1 \\" || : + if [ -L "$1" ]; then + return + fi + echo "$1" | sed 's/\([:%]\)/\\\1/g; s/$/ \\/' } # for each file print a line in following format Thanks, Michal