[LEDE-DEV] What's the purpose / gain from using VARIANT?

Rafał Miłecki zajec5 at gmail.com
Wed Dec 7 11:52:36 PST 2016


On 12/07/2016 08:36 PM, Sergey Ryazanov wrote:
> On Wed, Dec 7, 2016 at 10:10 PM, Rafał Miłecki <zajec5 at gmail.com> wrote:
>> I'm aware some packages (e.g. upstream-ssl, hostapd, dnsmasq) use VARIANT.
>>
>> I don't really understand the gain of this. How does it differ from
>> specifying separated packages?
>> I'm looking at package/libs/ustream-ssl/Makefile and I don't see much
>> code saving from using this VARIANT variable/feature.
>> Looking at package/system/opkg/Makefile I can see BUILD_VARIANT is
>> used for more specific CONFIGURE_ARGS. Is that where VARIANTS gets
>> really helpful?
>> Maybe I'm missing some real gain/value?
>
> IMHO VARIANT usage helps consolidate patches in single place. E.g. if
> you would like change some common code in hostapd then just create a
> new patch and VARIANT build two packages  (hostapd/wpa_supplicant)
> from updated code. Without VARIANT you should duplicate your changes
> (patch) in multiple places and keep them synchronized. So the gain is
> simple: reducing of unproductive work.

I don't think sharing patches has anything to do with VARIANT. As long as you
define packages in one Makefile they are going to share source (and so
patches).

I did a trivial test with iw package. I created iw2 and compiled it using
make package/network/utils/iw/install V=s

I got one source directory:
build_dir/target-*/iw-4.9
and two package directories:
build_dir/target-arm_cortex-a9_musl-1.1.15_eabi/iw-4.9/ipkg-*/iw
build_dir/target-arm_cortex-a9_musl-1.1.15_eabi/iw-4.9/ipkg-*/iw2



diff --git a/package/network/utils/iw/Makefile b/package/network/utils/iw/Makefile
index f84978f..7674056 100644
--- a/package/network/utils/iw/Makefile
+++ b/package/network/utils/iw/Makefile
@@ -28,6 +28,11 @@ define Package/iw
    DEPENDS:= +libnl-tiny
  endef

+define Package/iw2
+  $(Package/iw)
+  TITLE:=cfg80211 interface configuration utility 2
+endef
+
  define Build/Configure
  	echo "const char iw_version[] = \"$(PKG_VERSION)\";" > $(PKG_BUILD_DIR)/version.c
  	rm -f $(PKG_BUILD_DIR)/version.sh
@@ -54,4 +59,9 @@ define Package/iw/install
  	$(INSTALL_BIN) $(PKG_BUILD_DIR)/iw $(1)/usr/sbin/
  endef

+define Package/iw2/install
+	$(Package/iw/install)
+endef
+
  $(eval $(call BuildPackage,iw))
+$(eval $(call BuildPackage,iw2))




More information about the Lede-dev mailing list