Files
packages/utils/shadow/Makefile
T
John Audia 5883c07493 shadow: reintroduce newgidmap and newuidmap
The lxc-unprivileged package depends on both newgidmap and newuidmap
if users are installing and setting it up for the first time. dc52894
dropped both of the applets.

This change builds libusbid as a shared lib which builds a versioned
symbol which OpenWrt does not stage so build with --disable-shared
and --enable-static to avoid a failure.

Signed-off-by: John Audia <therealgraysky@proton.me>
2026-06-11 19:40:44 +03:00

167 lines
4.0 KiB
Makefile

#
# Copyright (C) 2008-2015 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=shadow
PKG_VERSION:=4.19.4
PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/shadow-maint/shadow/releases/download/$(PKG_VERSION)
PKG_HASH:=ce57a313e315a0a7cb04a8f50cc20753e994e487bbe9b78a2a824ca75cb486c0
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=COPYING
PKG_CPE_ID:=cpe:/a:debian:shadow
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
PKG_BUILD_DEPENDS:=libxcrypt
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
SHADOW_APPLETS := \
chage chfn chgpasswd chpasswd chsh expiry faillog gpasswd \
groupadd groupdel groupmems groupmod grpck grpconv grpunconv \
login logoutd newgrp newgidmap newuidmap newusers nologin \
passwd pwck pwconv pwunconv su \
useradd userdel usermod vipw
CONFIGURE_ARGS += \
--without-audit \
--without-libpam \
--without-selinux \
--without-acl \
--without-attr \
--without-tcb \
--without-nscd \
--without-sssd \
--without-libbsd \
--disable-logind \
--enable-subordinate-ids \
--disable-shared \
--enable-static \
--with-bcrypt
CONFIGURE_VARS += \
ac_cv_func_ruserok=no
define Package/shadow/Default
SECTION:=utils
CATEGORY:=Utilities
TITLE:=The PLD Linux shadow utilities
URL:=https://github.com/shadow-maint/shadow
endef
define Package/shadow
$(call Package/shadow/Default)
TITLE+= (all)
DEPENDS:=$(foreach u,$(SHADOW_APPLETS),+shadow-$(u))
HIDDEN:=1
endef
define Package/shadow/description
Full versions of standard shadow utilities. Normally, you would not
use this package, since the functionality in BusyBox is more than
sufficient and much smaller.
endef
define Package/shadow/install
true
endef
define Package/shadow-utils
$(call Package/shadow/Default)
endef
define Package/shadow-utils/config
menu "Select shadow utilities"
depends on PACKAGE_shadow-utils
config shadow-all
bool "Include all PLD shadow utilities"
select PACKAGE_shadow
default y
comment "Utilities"
$(foreach u,$(SHADOW_APPLETS), \
config PACKAGE_shadow-$(u)
prompt "Full PLD version of $(u) utility"
)
endmenu
endef
Package/shadow-utils/description = $(Package/shadow/description)
define Package/shadow-common
$(call Package/shadow/Default)
TITLE:=Shared definitions for the PLD Linux shadow utilities
DEPENDS:=$(ICONV_DEPENDS) $(INTL_DEPENDS)
HIDDEN:=1
endef
define GenPlugin
define Package/shadow-$(1)
$(call Package/shadow/Default)
TITLE:=Utility $(1) from the PLD Linux shadow utilities
DEPENDS:=+shadow-common
HIDDEN:=1
endef
define Package/shadow-$(1)/description
Full version of standard $(1) utility. Normally, you would not use this
package, since the functionality in BusyBox is more than sufficient.
endef
endef
$(foreach u,$(SHADOW_APPLETS),$(eval $(call GenPlugin,$(u))))
define Package/shadow-common/conffiles
/etc/login.defs
endef
#hack to get libxcrypt working
TARGET_LDFLAGS:=-L$(STAGING_DIR)/usr/lib/libxcrypt $(TARGET_LDFLAGS)
define Package/shadow-common/install
$(INSTALL_DIR) $(1)/etc
$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/login.defs $(1)/etc/
$(SED) 's,SU_NAME,#SU_NAME,g' $(1)/etc/login.defs
$(SED) 's,#ENCRYPT_METHOD DES,ENCRYPT_METHOD BCRYPT,g' $(1)/etc/login.defs
endef
define Package/shadow-utils/install
true
endef
define BuildPlugin
define Package/shadow-$(1)/install
[ -x "$(PKG_INSTALL_DIR)/usr/sbin/$(1)" ] && { \
$(INSTALL_DIR) $$(1)/usr/sbin; \
$(CP) $(PKG_INSTALL_DIR)/usr/sbin/$(1) $$(1)/usr/sbin/; \
} || { \
$(INSTALL_DIR) $$(1)/usr/bin; \
$(CP) $(PKG_INSTALL_DIR)/usr/bin/$(1) $$(1)/usr/bin/; \
}
endef
$$(eval $$(call BuildPackage,shadow-$(1)))
endef
$(foreach u,$(SHADOW_APPLETS),$(eval $(call BuildPlugin,$(u))))
$(eval $(call BuildPackage,shadow-utils))
$(eval $(call BuildPackage,shadow-common))
$(eval $(call BuildPackage,shadow))