Single-package build failing on 'make package/.../install'

Hi. I'm facing following error while trying to rebuild existing package.

My goal is to create my own custom package, but before going for that, I'm now trying to get used to the OpenWRT build system. However, I'm failing even with the simplest example.

https://openwrt.org/docs/guide-developer/quickstart-build-images
https://openwrt.org/docs/guide-developer/single.package

I'm following above documentation as-is, and getting following result:

...
$ make menuconfig
$ make -j5
...(This 'make world' completes without any error with valid firmware image)...

$ make package/ncurses/compile
 make[1] package/ncurses/compile
 make[2] -C package/libs/ncurses host-compile
 make[2] -C package/libs/toolchain compile
 make[2] -C package/libs/zlib compile
 make[2] -C package/libs/ncurses compile

$ make package/ncurses/install V=sc
make[1]: Entering directory '/d/src/openwrt/openwrt'
make[1]: *** No rule to make target 'package/ncurses/install'.  Stop.
make[1]: Leaving directory '/d/src/openwrt/openwrt'
make: *** [/d/src/openwrt/openwrt/include/toplevel.mk:218: package/ncurses/install] Error 2

What could be a cause of this error?
As no file is changed after 'git clone' and full 'make -j5' went successfully, I'm not sure make is not finding the right target. Am I missing something to get this run?

Also, this is same for all other packages - I can do 'make package/.../compile' fine, but 'make package/.../install' fails for any package I tried.

I'm using master branch, at commit b133e466b08e25ea59be9108de5f262f7eff49a6 .

1 Like

Yea, me too! Driving me nuts. However if you do a full build the install rule clearly worked since my custom module WAS installed in the image.

It's hard for me to imagine that this has been broken for over a year and you and I are the only once to notice it.

Just for the record I'm working with linux4sam-2020.04 from https://github.com/linux4sam/openwrt-at91.

Skip

Probably there has been changes to the makefiles since those docs where written...
have you tried
make package/libs/ncurses/compile
make package/libs/ncurses/install

The root Makefile imports and runs other makefiles downstream as the result of make or make world.
You simply need to look for what you need in the Makefiles of the other directories

read the contents of toplevel.mk to see that the recipe isn't there

take a look at the makefile for the ncurses libraries

I believe running a simple make while in that directory will achieve what youre talking about but I'm not sure

also see the makefile for all packages

Yes I have and it fails as did every other package that I've tried so I guess as you suggest the docs are (still) out of date.

I've done tons and tons of development on backfire needless to say lots of things have changed since then, but it would be nice if the docs (eventually) caught up. I'd edit the Wiki myself if I were more confident that it was a change and not just a local issue.

Skip

So did you try to cd into the folder and run a simple make?

No I hadn't but I just tried it did, and it didn't work. If I set TOPDIR manually then it does, but that's not the point.

The point is that "make <path to package/install" use to work and is documented as working, but it does not. As I pointed out in my post both "make <path to package/compile" and full builds work. Now that I know the "install" action is deprecated I won't try to use it and I won't worry about it any further.

Thanks for the reply.
Skip

1 Like

Hey all, I am also running into this issue. I still don't understand how to build the ipk file for a single package. The docs seem to be wrong? Did nobody try to build a package since oct 2020? Or is this plain obvious to everybody except newbies? I'd love to update the docs, if only I could find out what the correct build target is.
Just for testing, I am trying to compile a package from the luci feed. Compiling it works, just not the install rule/target doesn't seem to exist. (in a docker container:)

# make package/feeds/luci/luci-theme-openwrt/compile
 make[1] package/feeds/luci/luci-theme-openwrt/compile
 make[2] -C /data/openwrt_lede-18.06/luci/modules/luci-base host-compile
 make[2] -C package/libs/toolchain compile
 make[2] -C package/utils/lua host-compile
 make[2] -C /data/openwrt_lede-18.06/luci/themes/luci-theme-openwrt compile
# make package/feeds/luci/luci-theme-openwrt/install -j1 V=s
make[1]: Entering directory '/data/openwrt_lede-18.06/openwrt'
make[1]: *** No rule to make target 'package/feeds/luci/luci-theme-openwrt/install'.  Stop.
make[1]: Leaving directory '/data/openwrt_lede-18.06/openwrt'
/data/openwrt_lede-18.06/openwrt/include/toplevel.mk:216: recipe for target 'package/feeds/luci/luci-theme-openwrt/install' failed
make: *** [package/feeds/luci/luci-theme-openwrt/install] Error 2