Signed-off-by: Andy Walsh <andy.walsh44+github@gmail.com>lilik-openwrt-22.03
@ -0,0 +1,90 @@ | |||||
config SAMBA4_SERVER_ACL | |||||
bool "ACL support (xattr)" | |||||
depends on PACKAGE_samba4-server | |||||
select PACKAGE_acl | |||||
help | |||||
installs: sharesec | |||||
modules: vfs_acl_xattr vfs_acl_tdb vfs_posixacl | |||||
Extended access control list support | |||||
default n | |||||
config SAMBA4_SERVER_AD_DC | |||||
bool "Active Directory Domain Controller support (requires krb5-server) (EXPERIMENTAL)" | |||||
depends on PACKAGE_samba4-server | |||||
select PACKAGE_python-base | |||||
select PACKAGE_python-crypto | |||||
select PACKAGE_libopenssl | |||||
select PACKAGE_libgnutls | |||||
select PACKAGE_libopenldap | |||||
help | |||||
installs: samba (meta-daemon) python-crypt ntlm_auth | |||||
scripts: samba-tool | |||||
Run as a Active Directory Domain Controller | |||||
see: https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller | |||||
HINT: see section (# Using the Domain Controller as a File Server) | |||||
NOTE: Extroot is recommend for this setup, as it is not optimized to run completely from RAM/tempfs! | |||||
default n | |||||
config SAMBA4_SERVER_AVAHI | |||||
bool "Avahi support" | |||||
depends on PACKAGE_samba4-server | |||||
select PACKAGE_libavahi-client | |||||
help | |||||
Announce Samba resources via DNS/DNS-SD using the Avahi daemon | |||||
default n | |||||
config SAMBA4_SERVER_VFS | |||||
bool "Common VFS modules" | |||||
depends on PACKAGE_samba4-server | |||||
help | |||||
installs: | |||||
modules: (vfs_btrfs) vfs_fruit vfs_shadow_copy2 vfs_recycle vfs_fake_perms vfs_readonly vfs_cap vfs_offline vfs_crossrename | |||||
Commonly used VFS modules, vfs_btrfs requires kmod-fs-btrfs to be selected separately | |||||
default y | |||||
config SAMBA4_SERVER_QUOTAS | |||||
bool "Disk quota support" | |||||
depends on PACKAGE_samba4-server | |||||
help | |||||
installs: | |||||
modules: vfs_default_quota | |||||
Support for disk quotas using the quotas VFS module (vfs_default_quota) | |||||
default n | |||||
config SAMBA4_SERVER_VFSX | |||||
bool "Extended VFS modules" | |||||
depends on PACKAGE_samba4-server | |||||
help | |||||
installs: | |||||
modules: vfs_virusfilter vfs_shell_snap vfs_commit vfs_worm vfs_xattr_tdb vfs_streams_xattr vfs_aio_fork vfs_aio_pthread (vfs_linux_xfs_sgid) vfs_netatalk vfs_dirsort vfs_fileid vfs_catia | |||||
Additional VFS modules that aren't commonly used, vfs_linux_xfs_sgid requires kmod-fs-xfs to be selected separately | |||||
default n | |||||
config SAMBA4_SERVER_NETBIOS | |||||
bool "NetBIOS support" | |||||
depends on PACKAGE_samba4-server | |||||
help | |||||
installs: nmbd (daemon) | |||||
Announce Samba resources via NetBIOS using the nmbd daemon | |||||
WSD (Web Services for Devices) replaces the functionality of NetBIOS and is provided by the wsdd2 package (selected by default). | |||||
Note: As of Windows 10 Fall Creators Update (1709) NetBIOS isn't supported unless the old SMB1 feature is reinstalled (not recommended). | |||||
Network shares can be directly accessed via network paths '\\hostname\sharename' and mounted via 'map network drive' without NetBIOS or WSD. | |||||
default n | |||||
config SAMBA4_SERVER_WINBIND | |||||
bool "Winbind support" | |||||
depends on PACKAGE_samba4-server | |||||
depends on SAMBA4_SERVER_AD_DC | |||||
help | |||||
installs: winbindd (daemon) wbinfo | |||||
Support using domain users and groups in local commands, such as chown and chgrp. | |||||
Display domain users and groups in local command's output, such as ls. | |||||
see: https://wiki.samba.org/index.php/Configuring_Winbindd_on_a_Samba_AD_DC | |||||
default n |
@ -0,0 +1,384 @@ | |||||
# Based partially on (wongsyrone/hbl0307106015) versions | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=samba | |||||
PKG_VERSION:=4.8.3 | |||||
PKG_RELEASE:=1 | |||||
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com> | |||||
PKG_LICENSE:=GPL-3.0-only | |||||
PKG_LICENSE_FILES:=COPYING | |||||
PKG_SOURCE_URL:=https://download.samba.org/pub/samba/stable/ | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz | |||||
PKG_HASH:=e0569a8a605d5dfb49f1fdd11db796f4d36fe0351c4a7f21387ef253010b82ed | |||||
# Buildroot bug? Can't add target deps via '+SAMBA4_SERVER_AD_DC:python-crypto' (as work-around we select via config.in) | |||||
PKG_BUILD_DEPENDS:=perl/host python/host qemu-userspace/host SAMBA4_SERVER_AD_DC:python-crypto | |||||
PKG_CONFIG_DEPENDS:= \ | |||||
CONFIG_SAMBA4_SERVER_NETBIOS \ | |||||
CONFIG_SAMBA4_SERVER_AVAHI \ | |||||
CONFIG_SAMBA4_SERVER_VFS \ | |||||
CONFIG_SAMBA4_SERVER_VFSX \ | |||||
CONFIG_SAMBA4_SERVER_QUOTAS \ | |||||
CONFIG_SAMBA4_SERVER_ACL \ | |||||
CONFIG_SAMBA4_SERVER_AD_DC \ | |||||
CONFIG_SAMBA4_SERVER_WINBIND \ | |||||
CONFIG_PACKAGE_kmod-fs-btrfs \ | |||||
CONFIG_PACKAGE_kmod-fs-xfs | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/samba4/Default | |||||
SECTION:=net | |||||
CATEGORY:=Network | |||||
TITLE:=Samba $(PKG_VERSION) | |||||
URL:=http://www.samba.org/ | |||||
endef | |||||
define Package/samba4/Default/description | |||||
The Samba software suite is a collection of programs that implements the | |||||
SMB/CIFS protocol for UNIX systems, allowing you to serve files and printers. | |||||
Samba 4 implements up-to protocol version SMB v3.1.1 (Win10), supports mDNS via AVAHI and a AD-DC setup via krb5. | |||||
NOTE: No cluster and printer support. | |||||
endef | |||||
define Package/samba4-libs | |||||
$(call Package/samba4/Default) | |||||
TITLE+= libs | |||||
DEPENDS:= +zlib +libtirpc +krb5-libs +libpopt \ | |||||
+PACKAGE_libcap:libcap +PACKAGE_jansson:jansson +PACKAGE_libpthread:libpthread +PACKAGE_libnettle:libnettle +PACKAGE_libarchive:libarchive \ | |||||
+SAMBA4_SERVER_ACL:acl +SAMBA4_SERVER_ACL:attr \ | |||||
+SAMBA4_SERVER_AVAHI:libavahi-client \ | |||||
+SAMBA4_SERVER_AD_DC:python-base +SAMBA4_SERVER_AD_DC:libopenssl +SAMBA4_SERVER_AD_DC:libgnutls +SAMBA4_SERVER_AD_DC:libopenldap | |||||
endef | |||||
define Package/samba4-server | |||||
$(call Package/samba4/Default) | |||||
TITLE+= server | |||||
DEPENDS:= +samba4-libs | |||||
endef | |||||
define Package/samba4-server/description | |||||
installs: smbd (daemon) smbpasswd pdbedit testparm | |||||
This provides the basic fileserver service and is the minimum needed to serve file shares. | |||||
HINT: https://fitzcarraldoblog.wordpress.com/2016/10/17/a-correct-method-of-configuring-samba-for-browsing-smb-shares-in-a-home-network/ | |||||
endef | |||||
define Package/samba4-server/config | |||||
select PACKAGE_wsdd2 | |||||
source "$(SOURCE)/Config.in" | |||||
endef | |||||
define Package/samba4-client | |||||
$(call Package/samba4/Default) | |||||
TITLE+= client | |||||
DEPENDS:= +samba4-libs | |||||
endef | |||||
define Package/samba4-client/description | |||||
installs: smbclient cifsdd | |||||
The smbclient program implements a simple ftp-like client for accessing SMB shares | |||||
endef | |||||
define Package/samba4-admin | |||||
$(call Package/samba4/Default) | |||||
TITLE+= admin tools | |||||
DEPENDS:= +samba4-libs | |||||
endef | |||||
define Package/samba4-admin/description | |||||
installs: net smbcontrol profiles rpcclient smbcacls smbcquotas | |||||
Administration tools collection | |||||
endef | |||||
define Package/samba4-utils | |||||
$(call Package/samba4/Default) | |||||
TITLE+= utils | |||||
DEPENDS:= +samba4-libs | |||||
endef | |||||
define Package/samba4-utils/description | |||||
installs: smbstatus smbtree smbget nmblookup mvxattr | |||||
Utilities collection | |||||
endef | |||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections | |||||
TARGET_LDFLAGS += -Wl,--gc-sections | |||||
CONFIGURE_VARS += \ | |||||
CPP="$(TARGET_CROSS)cpp" | |||||
CONFIGURE_CMD = ./buildtools/bin/waf | |||||
# Strip options that WAF configure script does not recognize | |||||
CONFIGURE_ARGS:=$(filter-out \ | |||||
--host=% \ | |||||
--build=% \ | |||||
--program-suffix=% \ | |||||
--disable-nls \ | |||||
--disable-ipv6 \ | |||||
, $(CONFIGURE_ARGS)) | |||||
CONFIGURE_ARGS += \ | |||||
--hostcc="$(HOSTCC)" \ | |||||
--cross-compile \ | |||||
--cross-execute="qemu-$(ARCH) -L $(STAGING_DIR_ROOT)" \ | |||||
--disable-cups \ | |||||
--disable-iprint \ | |||||
--disable-cephfs \ | |||||
--disable-fault-handling \ | |||||
--disable-glusterfs \ | |||||
--disable-rpath \ | |||||
--disable-rpath-install \ | |||||
--disable-rpath-private-install \ | |||||
--enable-fhs \ | |||||
--without-automount \ | |||||
--without-iconv \ | |||||
--without-lttng \ | |||||
--without-ntvfs-fileserver \ | |||||
--without-pam \ | |||||
--without-systemd \ | |||||
--without-utmp \ | |||||
--without-dmapi \ | |||||
--without-fam \ | |||||
--without-gettext \ | |||||
--without-regedit \ | |||||
--without-gpgme | |||||
# Optional AES-NI support - https://lists.samba.org/archive/samba-technical/2017-September/122738.html | |||||
# Support for Nettle wasn't comitted | |||||
CONFIGURE_ARGS += --accel-aes=none | |||||
CONFIGURE_ARGS += \ | |||||
--with-lockdir=/var/lock \ | |||||
--with-logfilebase=/var/log \ | |||||
--with-piddir=/var/run \ | |||||
--with-privatedir=/etc/samba | |||||
CONFIGURE_ARGS += \ | |||||
--with-system-mitkrb5 "$(STAGING_DIR)/usr" \ | |||||
--with-system-mitkdc=/usr/sbin/krb5kdc | |||||
## embedded-heimdal | |||||
# --bundled-libraries=talloc,tevent,tdb,ldb,com_err,cmocka,roken,wind,hx509,asn1,heimbase,hcrypto,krb5,gssapi,heimntlm,hdb,kdc,NONE | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_AVAHI),y) | |||||
CONFIGURE_ARGS += --enable-avahi | |||||
else | |||||
CONFIGURE_ARGS += --disable-avahi | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_QUOTAS),y) | |||||
CONFIGURE_ARGS += --with-quotas | |||||
else | |||||
CONFIGURE_ARGS += --without-quotas | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y) | |||||
CONFIGURE_ARGS += --with-acl-support | |||||
else | |||||
CONFIGURE_ARGS += --without-acl-support | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||||
CONFIGURE_ARGS += --enable-gnutls --with-dnsupdate --with-ads --with-ldap | |||||
TARGET_CFLAGS := -I$(STAGING_DIR)/usr/include/python2.7 $(TARGET_CFLAGS) | |||||
else | |||||
CONFIGURE_ARGS += --without-ad-dc --disable-python --nopyc --nopyo --disable-gnutls --without-dnsupdate --without-ads --without-ldap | |||||
CONFIGURE_VARS += \ | |||||
python_LDFLAGS="" \ | |||||
python_LIBDIR="" | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y) | |||||
CONFIGURE_ARGS += --with-winbind | |||||
else | |||||
CONFIGURE_ARGS += --without-winbind | |||||
endif | |||||
SAMBA4_IDMAP_MODULES := | |||||
SAMBA4_IDMAP_MODULES_SHARED := | |||||
SAMBA4_PDB_MODULES :=pdb_smbpasswd,pdb_tdbsam, | |||||
SAMBA4_AUTH_MODULES :=auth_builtin,auth_sam,auth_unix,auth_script, | |||||
SAMBA4_VFS_MODULES :=vfs_default, | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_VFS),y) | |||||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_fruit,vfs_shadow_copy2,vfs_recycle,vfs_fake_perms,vfs_readonly,vfs_cap,vfs_offline,vfs_crossrename, | |||||
ifeq ($(CONFIG_PACKAGE_kmod-fs-btrfs),y) | |||||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_btrfs, | |||||
endif | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_VFSX),y) | |||||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_virusfilter,vfs_shell_snap,vfs_commit,vfs_worm,vfs_xattr_tdb,vfs_streams_xattr,vfs_aio_fork,vfs_aio_pthread,vfs_netatalk,vfs_dirsort,vfs_fileid,vfs_catia, | |||||
ifeq ($(CONFIG_PACKAGE_kmod-fs-xfs),y) | |||||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_linux_xfs_sgid, | |||||
endif | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_QUOTAS),y) | |||||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_default_quota, | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y) | |||||
SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_posixacl,vfs_acl_xattr,vfs_acl_tdb, | |||||
# vfs_zfsacl needs https://github.com/zfsonlinux/zfs/tree/master/include/sys/zfs_acl.h | |||||
# vfs_nfs4acl_xattr needs https://github.com/notriddle/libdrpc/blob/master/rpc/xdr.h | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||||
SAMBA4_PDB_MODULES :=$(SAMBA4_PDB_MODULES)pdb_samba_dsdb, | |||||
SAMBA4_AUTH_MODULES :=$(SAMBA4_AUTH_MODULES)auth_samba4, | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y) | |||||
SAMBA4_IDMAP_MODULES :=$(SAMBA4_IDMAP_MODULES)idmap_passdb,idmap_nss,idmap_tdb,idmap_tdb2,idmap_script,nss_info_template, | |||||
SAMBA4_IDMAP_MODULES_SHARED :=$(SAMBA4_IDMAP_MODULES_SHARED)idmap_autorid,idmap_rid,idmap_ad,idmap_rfc2307, | |||||
# idmap_ad needs --with-ads | |||||
# idmap_rfc2307 needs ldap headers | |||||
SAMBA4_AUTH_MODULES :=$(SAMBA4_AUTH_MODULES)auth_winbind, | |||||
endif | |||||
SAMBA4_MODULES :=${SAMBA4_AUTH_MODULES}${SAMBA4_PDB_MODULES}${SAMBA4_IDMAP_MODULES}${SAMBA4_VFS_MODULES} | |||||
SAMBA4_MODULES_SHARDED :=${SAMBA4_IDMAP_MODULES_SHARED} | |||||
CONFIGURE_ARGS += \ | |||||
--with-static-modules=$(SAMBA4_MODULES)!DEFAULT,!FORCED \ | |||||
--with-shared-modules=$(SAMBA4_MODULES_SHARDED)!DEFAULT,!FORCED | |||||
# Setup build/install targets | |||||
# CONFIG_PACKAGE_samba4-server | |||||
BUILD_TARGETS_SERVER :=smbd/smbd,smbpasswd,pdbedit,testparm | |||||
# Optional server targets | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y) | |||||
BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),sharesec | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_NETBIOS),y) | |||||
BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),nmbd | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||||
BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),samba,nsstest,ntlm_auth | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y) | |||||
BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),winbindd,wbinfo,winbind_krb5_locator | |||||
endif | |||||
# CONFIG_PACKAGE_samba4-client | |||||
BUILD_TARGETS_CLIENT :=client/smbclient,client/cifsdd | |||||
# CONFIG_PACKAGE_samba4-admin | |||||
BUILD_TARGETS_ADMIN :=net,smbcontrol,profiles,rpcclient,smbcacls,smbcquotas | |||||
# CONFIG_PACKAGE_samba4-utils | |||||
BUILD_TARGETS_UTILS :=smbstatus,smbtree,smbget,mvxattr,nmblookup | |||||
# lib bundling | |||||
# NOTE: Compile some unique libs into related bins, so we end-up with a unified samba4-libs base, mainly to allow package separation (server, client, admin, utils) | |||||
CONFIGURE_ARGS += --builtin-libraries=smbclient,netapi,samba-passdb,ads,auth,cli-spoolss,libcli-lsa3,gpext,talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace | |||||
#CONFIGURE_ARGS += --nonshared-binary=$(BUILD_TARGETS_SERVER) | |||||
# NOTE: bundle + make private, we want to avoid version configuration (build, link) conflicts | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||||
CONFIGURE_ARGS += --bundled-libraries=talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace,pytalloc-util,pyldb-util,NONE | |||||
else | |||||
CONFIGURE_ARGS += --bundled-libraries=talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace,NONE | |||||
endif | |||||
CONFIGURE_ARGS += --private-libraries=talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace | |||||
define Build/Prepare | |||||
$(Build/Prepare/Default) | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),) | |||||
# un-bundle dnspython | |||||
$(SED) '/"dns.resolver":/d' $(PKG_BUILD_DIR)/third_party/wscript | |||||
# unbundle iso8601 | |||||
$(SED) '/"iso8601":/d' $(PKG_BUILD_DIR)/third_party/wscript | |||||
endif | |||||
endef | |||||
define Build/Configure | |||||
$(call Build/Configure/Default,configure) | |||||
endef | |||||
# BUG: We need to use "waf install --targets=" otherwise a "make install" or "waf install" will retrigger a full recompile of all possible targets! | |||||
define Build/Compile | |||||
(cd $(PKG_BUILD_DIR); \ | |||||
./buildtools/bin/waf install -j$(shell nproc) \ | |||||
--targets=$(SAMBA4_MODULES)$(SAMBA4_MODULES_SHARDED)$(BUILD_TARGETS_SERVER),$(BUILD_TARGETS_UTILS),$(BUILD_TARGETS_ADMIN),$(BUILD_TARGETS_CLIENT) \ | |||||
--destdir="$(PKG_INSTALL_DIR)" \ | |||||
) | |||||
endef | |||||
# No default install see above | |||||
define Build/Install | |||||
endef | |||||
define Package/samba4-libs/install | |||||
$(INSTALL_DIR) $(1)/usr/lib | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/ | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/*.so* $(1)/usr/lib/ | |||||
endef | |||||
define Package/samba4-client/install | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{smbclient,cifsdd} $(1)/usr/bin/ | |||||
endef | |||||
define Package/samba4-admin/install | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{net,smbcontrol,profiles,rpcclient,smbcacls,smbcquotas} $(1)/usr/bin/ | |||||
endef | |||||
define Package/samba4-utils/install | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{smbstatus,smbtree,smbget,mvxattr,nmblookup} $(1)/usr/bin/ | |||||
endef | |||||
define Package/samba4-server/install | |||||
$(INSTALL_DIR) $(1)/usr/lib/samba | |||||
if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/idmap ]; then \ | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/idmap $(1)/usr/lib/samba/; \ | |||||
fi | |||||
if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/auth ]; then \ | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/auth $(1)/usr/lib/samba/; \ | |||||
fi | |||||
if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/vfs ]; then \ | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/vfs $(1)/usr/lib/samba/; \ | |||||
fi | |||||
if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/pdb ]; then \ | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/pdb $(1)/usr/lib/samba/; \ | |||||
fi | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{smbpasswd,pdbedit,testparm} $(1)/usr/bin/ | |||||
$(INSTALL_DIR) $(1)/usr/sbin | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/smbd $(1)/usr/sbin/ | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y) | |||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/python2.7 $(1)/usr/lib/ | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{samba-tool,ntlm_auth} $(1)/usr/bin | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{samba,samba_gpoupdate,samba_dnsupdate,samba_kcc,samba_spnupdate,samba_upgradedns} $(1)/usr/sbin/ | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_NETBIOS),y) | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nmbd $(1)/usr/sbin/ | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y) | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/wbinfo $(1)/usr/bin/ | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/winbindd $(1)/usr/sbin/ | |||||
endif | |||||
ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y) | |||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sharesec $(1)/usr/bin/ | |||||
endif | |||||
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/samba $(1)/etc/init.d | |||||
$(INSTALL_DATA) ./files/samba.config $(1)/etc/config/samba4 | |||||
$(INSTALL_DATA) ./files/smb.conf.template $(1)/etc/samba | |||||
$(INSTALL_BIN) ./files/samba.init $(1)/etc/init.d/samba4 | |||||
endef | |||||
define Package/samba4-server/conffiles | |||||
/etc/config/samba4 | |||||
/etc/samba/smb.conf.template | |||||
/etc/samba/smb.conf | |||||
/etc/samba/smbpasswd | |||||
/etc/samba/secrets.tdb | |||||
/etc/samba/passdb.tdb | |||||
/etc/samba/idmap.ldb | |||||
/etc/samba/lmhosts | |||||
/etc/nsswitch.conf | |||||
endef | |||||
$(eval $(call BuildPackage,samba4-libs)) | |||||
$(eval $(call BuildPackage,samba4-server)) | |||||
$(eval $(call BuildPackage,samba4-client)) | |||||
$(eval $(call BuildPackage,samba4-admin)) | |||||
$(eval $(call BuildPackage,samba4-utils)) |
@ -0,0 +1,7 @@ | |||||
config samba | |||||
option 'name' 'OpenWrt-SMB' | |||||
option 'workgroup' 'WORKGROUP' | |||||
option 'description' 'Samba on OpenWrt' | |||||
option 'charset' 'UTF-8' | |||||
option 'homes' '0' | |||||
@ -0,0 +1,192 @@ | |||||
#!/bin/sh /etc/rc.common | |||||
START=99 | |||||
USE_PROCD=1 | |||||
smb_header() { | |||||
config_get samba_iface $1 interface "loopback lan" | |||||
# resolve interfaces | |||||
local interfaces=$( | |||||
. /lib/functions/network.sh | |||||
local net | |||||
for net in $samba_iface; do | |||||
local device | |||||
network_is_up $net || continue | |||||
network_get_device device "$net" | |||||
echo -n "${device:-$net} " | |||||
done | |||||
) | |||||
local name workgroup description charset | |||||
local hostname="$(uci_get system.@system[0].hostname)" | |||||
config_get name $1 name "${hostname:-OpenWrt}" | |||||
config_get workgroup $1 workgroup "${hostname:-WORKGROUP}" | |||||
config_get description $1 description "Samba on ${hostname:-OpenWrt}" | |||||
config_get charset $1 charset "UTF-8" | |||||
config_get_bool DISABLE_NETBIOS $1 disable_netbios 0 | |||||
config_get_bool DISABLE_AD_DC $1 disable_ad_dc 0 | |||||
config_get_bool DISABLE_WINBIND $1 disable_winbind 0 | |||||
mkdir -p /var/etc | |||||
sed -e "s#|NAME|#$name#g" \ | |||||
-e "s#|WORKGROUP|#$workgroup#g" \ | |||||
-e "s#|DESCRIPTION|#$description#g" \ | |||||
-e "s#|INTERFACES|#$interfaces#g" \ | |||||
-e "s#|CHARSET|#$charset#g" \ | |||||
/etc/samba/smb.conf.template > /var/etc/smb.conf | |||||
echo -e "\n######### Dynamic written config options #########\n" >> /var/etc/smb.conf | |||||
if [ "$DISABLE_NETBIOS" -eq 1 ] || [ ! -x /usr/sbin/nmbd ]; then | |||||
echo -e "\tdisable netbios = yes" >> /var/etc/smb.conf | |||||
fi | |||||
local homes | |||||
config_get_bool homes $1 homes 0 | |||||
[ $homes -gt 0 ] && { | |||||
cat <<EOT >> /var/etc/smb.conf | |||||
[homes] | |||||
comment = Home Directories | |||||
browsable = no | |||||
writable = yes | |||||
read only = no | |||||
create mask = 0750 | |||||
EOT | |||||
} | |||||
[ -L /etc/samba/smb.conf ] || ln -nsf /var/etc/smb.conf /etc/samba/smb.conf | |||||
} | |||||
smb_add_share() { | |||||
local name | |||||
local path | |||||
local users | |||||
local public | |||||
local writable | |||||
local printable | |||||
local create_mask | |||||
local browseable | |||||
local read_only | |||||
local guest_ok | |||||
local guest_only | |||||
local inherit_owner | |||||
local vfs_objects | |||||
config_get name $1 name | |||||
config_get path $1 path | |||||
config_get users $1 users | |||||
config_get public $1 public | |||||
config_get writable $1 writable | |||||
config_get printable $1 printable | |||||
config_get create_mask $1 create_mask | |||||
config_get dir_mask $1 dir_mask | |||||
config_get browseable $1 browseable | |||||
config_get read_only $1 read_only | |||||
config_get guest_ok $1 guest_ok | |||||
config_get guest_only $1 guest_only | |||||
config_get inherit_owner $1 inherit_owner | |||||
config_get vfs_objects $1 vfs_objects | |||||
[ -z "$name" -o -z "$path" ] && return | |||||
echo -e "\n[$name]\n\tpath = $path" >> /var/etc/smb.conf | |||||
[ -n "$users" ] && echo -e "\tvalid users = $users" >> /var/etc/smb.conf | |||||
[ -n "$public" ] && echo -e "\tpublic = $public" >> /var/etc/smb.conf | |||||
[ -n "$writable" ] && echo -e "\twritable = $writable" >> /var/etc/smb.conf | |||||
[ -n "$printable" ] && echo -e "\tprintable = $printable" >> /var/etc/smb.conf | |||||
[ -n "$create_mask" ] && echo -e "\tcreate mask = $create_mask" >> /var/etc/smb.conf | |||||
[ -n "$dir_mask" ] && echo -e "\tdirectory mask = $dir_mask" >> /var/etc/smb.conf | |||||
[ -n "$browseable" ] && echo -e "\tbrowseable = $browseable" >> /var/etc/smb.conf | |||||
[ -n "$read_only" ] && echo -e "\tread only = $read_only" >> /var/etc/smb.conf | |||||
[ -n "$guest_ok" ] && echo -e "\tguest ok = $guest_ok" >> /var/etc/smb.conf | |||||
[ -n "$guest_only" ] && echo -e "\tguest only = $guest_only" >> /var/etc/smb.conf | |||||
[ -n "$inherit_owner" ] && echo -e "\tinherit owner = $inherit_owner" >> /var/etc/smb.conf | |||||
[ -n "$vfs_objects" ] && echo -e "\tvfs objects = $vfs_objects" >> /var/etc/smb.conf | |||||
} | |||||
init_config() { | |||||
# Create samba dirs | |||||
[ -d /var/lib/samba ] || mkdir -p /var/lib/samba | |||||
[ -d /var/cache/samba ] || mkdir -p /var/cache/samba | |||||
[ -d /var/run/samba ] || mkdir -p /var/run/samba | |||||
[ -d /var/log/samba ] || mkdir -p /var/log/samba | |||||
[ -d /var/lock ] && chmod 0755 /var/lock || { | |||||
mkdir -p /var/lock | |||||
chmod 0755 /var/lock | |||||
} | |||||
config_load samba4 | |||||
config_foreach smb_header samba | |||||
config_foreach smb_add_share sambashare | |||||
} | |||||
reload_service() { | |||||
init_config | |||||
killall -HUP samba | |||||
killall -HUP smbd | |||||
killall -HUP nmbd | |||||
killall -HUP winbindd | |||||
} | |||||
service_triggers() { | |||||
procd_add_reload_trigger samba4 | |||||
local i | |||||
for i in $samba_iface; do | |||||
procd_add_reload_interface_trigger $i | |||||
done | |||||
} | |||||
start_service() { | |||||
init_config | |||||
# start main AC-DC daemon, will spawn (smbd,nmbd,winbindd) as needed/configured. | |||||
if [ "$DISABLE_AD_DC" -ne 1 ] && [ -x /usr/sbin/samba ]; then | |||||
procd_open_instance | |||||
procd_set_param command /usr/sbin/samba -F | |||||
procd_set_param respawn | |||||
procd_set_param file /var/etc/smb.conf | |||||
procd_close_instance | |||||
else | |||||
# start fileserver daemon | |||||
procd_open_instance | |||||
procd_set_param command /usr/sbin/smbd -F | |||||
procd_set_param respawn | |||||
procd_set_param file /var/etc/smb.conf | |||||
procd_close_instance | |||||
# start netbios daemon | |||||
if [ "$DISABLE_NETBIOS" -ne 1 ] && [ -x /usr/sbin/nmbd ]; then | |||||
procd_open_instance | |||||
procd_set_param command /usr/sbin/nmbd -F | |||||
procd_set_param respawn | |||||
procd_set_param file /var/etc/smb.conf | |||||
procd_close_instance | |||||
fi | |||||
# start winbind daemon | |||||
if [ "$DISABLE_WINBIND" -ne 1 ] && [ -x /usr/sbin/winbindd ]; then | |||||
procd_open_instance | |||||
procd_set_param command /usr/sbin/winbindd -F | |||||
procd_set_param respawn | |||||
procd_set_param file /var/etc/smb.conf | |||||
procd_close_instance | |||||
fi | |||||
fi | |||||
# lower priority using renice (if found) | |||||
if [ -x /usr/bin/renice ]; then | |||||
[ -x /usr/sbin/samba ] && renice -n 2 $(pidof samba) | |||||
[ -x /usr/sbin/smbd ] && renice -n 2 $(pidof smbd) | |||||
[ -x /usr/sbin/nmbd ] && renice -n 2 $(pidof nmbd) | |||||
[ -x /usr/sbin/winbindd ] && renice -n 2 $(pidof winbindd) | |||||
fi | |||||
} |
@ -0,0 +1,100 @@ | |||||
[global] | |||||
netbios name = |NAME| | |||||
interfaces = |INTERFACES| | |||||
server string = |DESCRIPTION| | |||||
unix charset = |CHARSET| | |||||
workgroup = |WORKGROUP| | |||||
## This global parameter allows the Samba admin to limit what interfaces on a machine will serve SMB requests. | |||||
bind interfaces only = yes | |||||
## time for inactive connections to-be closed in minutes | |||||
deadtime = 15 | |||||
## disable core dumps | |||||
enable core files = no | |||||
## set security (auto, user, domain, ads) | |||||
security = user | |||||
## This parameter controls whether a remote client is allowed or required to use SMB encryption. | |||||
## It has different effects depending on whether the connection uses SMB1 or SMB2 and newer: | |||||
## If the connection uses SMB1, then this option controls the use of a Samba-specific extension to the SMB protocol introduced in Samba 3.2 that makes use of the Unix extensions. | |||||
## If the connection uses SMB2 or newer, then this option controls the use of the SMB-level encryption that is supported in SMB version 3.0 and above and available in Windows 8 and newer. | |||||
##(default/auto,desired,required,off) | |||||
#smb encrypt = default | |||||
## set invalid users | |||||
invalid users = root | |||||
## map unknow users to guest | |||||
map to guest = Bad User | |||||
## allow client access to accounts that have null passwords. | |||||
null passwords = yes | |||||
## The old plaintext passdb backend. Some Samba features will not work if this passdb backend is used. (NOTE: enabled for size reasons) | |||||
## (tdbsam,smbpasswd,ldapsam) | |||||
passdb backend = smbpasswd | |||||
## Set location of smbpasswd ('smbd -b' will show default compiled location) | |||||
#smb passwd file = /etc/samba/smbpasswd | |||||
## LAN/WAN options (IPTOS_LOWDELAY TCP_NODELAY) WAN (IPTOS_THROUGHPUT) | |||||
socket options = IPTOS_LOWDELAY TCP_NODELAY | |||||
## lower CPU useage if supported | |||||
use sendfile = yes | |||||
## samba will behave as previous versions of Samba would and will fail the lock request immediately if the lock range cannot be obtained. | |||||
#blocking locks = No | |||||
## disable loading of all printcap printers by default (iprint, cups, lpstat) | |||||
load printers = No | |||||
printcap name = /dev/null | |||||
## Disable that nmbd is acting as a WINS server for unknow netbios names | |||||
#dns proxy = No | |||||
## win/unix user mapping backend | |||||
#idmap config * : backend = tdb | |||||
## Allows the server name that is advertised through MDNS to be set to the hostname rather than the Samba NETBIOS name. | |||||
## This allows an administrator to make Samba registered MDNS records match the case of the hostname rather than being in all capitals. | |||||
## (netbios, mdns) | |||||
#mdns name = mdns | |||||
## Clients that only support netbios won't be able to see your samba server when netbios support is disabled. | |||||
#disable netbios = Yes | |||||
## Setting this value to no will cause nmbd never to become a local master browser. | |||||
#local master = no | |||||
## (auto, yes) If this is set to yes, on startup, nmbd will force an election, and it will have a slight advantage in winning the election. It is recommended that this parameter is used in conjunction with domain master = yes, so that nmbd can guarantee becoming a domain master. | |||||
#preferred master = yes | |||||
## (445 139) Specifies which ports the server should listen on for SMB traffic. | |||||
## 139 is netbios/nmbd | |||||
#smb ports = 445 139 | |||||
## This is a list of files and directories that are neither visible nor accessible. | |||||
## Each entry in the list must be separated by a '/', which allows spaces to be included in the entry. '*' and '?' can be used to specify multiple files or directories as in DOS wildcards. | |||||
veto files = /Thumbs.db/.DS_Store/._.DS_Store/.apdisk/ | |||||
## If a directory that is to be deleted contains nothing but veto files this deletion will fail unless you also set the delete veto files parameter to yes. | |||||
delete veto files = yes | |||||
################ Filesystem and creation rules ################ | |||||
## reported filesystem type (NTFS,Samba,FAT) | |||||
#fstype = FAT | |||||
## Allows a user who has write access to the file (by whatever means, including an ACL permission) to modify the permissions (including ACL) on it. | |||||
#dos filemode = Yes | |||||
## file/dir creating rules | |||||
#create mask = 0666 | |||||
#directory mask = 0777 | |||||
#force group = root | |||||
#force user = root | |||||
#inherit owner = windows and unix | |||||
################################################################ |
@ -0,0 +1,29 @@ | |||||
--- samba-4.4.0rc2/source3/wscript | |||||
+++ samba-4.4.0rc2/source3/wscript | |||||
@@ -870,7 +870,7 @@ | |||||
if conf.env.with_iconv: | |||||
conf.DEFINE('HAVE_ICONV', 1) | |||||
- if Options.options.with_pam: | |||||
+ if Options.options.with_pam != False: | |||||
use_pam=True | |||||
conf.CHECK_HEADERS('security/pam_appl.h pam/pam_appl.h') | |||||
if not conf.CONFIG_SET('HAVE_SECURITY_PAM_APPL_H') and not conf.CONFIG_SET('HAVE_PAM_PAM_APPL_H'): | |||||
@@ -943,6 +943,17 @@ | |||||
conf.DEFINE('WITH_PAM', 1) | |||||
conf.DEFINE('WITH_PAM_MODULES', 1) | |||||
+ else: | |||||
+ Logs.warn("PAM disabled") | |||||
+ use_pam=False | |||||
+ conf.undefine('WITH_PAM') | |||||
+ conf.undefine('WITH_PAM_MODULES') | |||||
+ conf.undefine('HAVE_SECURITY_PAM_APPL_H') | |||||
+ conf.undefine('PAM_RHOST') | |||||
+ conf.undefine('PAM_TTY') | |||||
+ conf.undefine('HAVE_PAM_PAM_APPL_H') | |||||
+ | |||||
+ | |||||
seteuid = False | |||||
# |
@ -0,0 +1,19 @@ | |||||
samba: build dnsserver_common code | |||||
Just 'install' does not seem to do it. | |||||
Upstream-Status: Pending | |||||
Signed-off-by: Joe Slater <joe.slater@windriver.com> | |||||
--- a/source4/dns_server/wscript_build | |||||
+++ b/source4/dns_server/wscript_build | |||||
@@ -4,7 +4,7 @@ bld.SAMBA_LIBRARY('dnsserver_common', | |||||
source='dnsserver_common.c', | |||||
deps='samba-util samba-errors ldbsamba clidns', | |||||
private_library=True, | |||||
- install=bld.AD_DC_BUILD_IS_ENABLED() | |||||
+ enabled=bld.AD_DC_BUILD_IS_ENABLED() | |||||
) | |||||
bld.SAMBA_MODULE('service_dns', |
@ -0,0 +1,20 @@ | |||||
--- a/source3/lib/messages.c | |||||
+++ b/source3/lib/messages.c | |||||
@@ -221,7 +221,7 @@ struct messaging_context *messaging_init | |||||
return NULL; | |||||
} | |||||
- priv_path = private_path("msg.sock"); | |||||
+ priv_path = lock_path("msg.sock"); | |||||
if (priv_path == NULL) { | |||||
TALLOC_FREE(ctx); | |||||
return NULL; | |||||
@@ -311,7 +311,7 @@ NTSTATUS messaging_reinit(struct messagi | |||||
msg_ctx->msg_dgm_ref = messaging_dgm_ref( | |||||
msg_ctx, msg_ctx->event_ctx, &msg_ctx->id.unique_id, | |||||
- private_path("msg.sock"), lck_path, | |||||
+ lock_path("msg.sock"), lck_path, | |||||
messaging_recv_cb, msg_ctx, &ret); | |||||
if (msg_ctx->msg_dgm_ref == NULL) { |
@ -0,0 +1,11 @@ | |||||
--- a/source4/lib/messaging/messaging.c | |||||
+++ b/source4/lib/messaging/messaging.c | |||||
@@ -323,7 +323,7 @@ struct imessaging_context *imessaging_in | |||||
goto fail; | |||||
} | |||||
- msg->sock_dir = lpcfg_private_path(msg, lp_ctx, "msg.sock"); | |||||
+ msg->sock_dir = lpcfg_lock_path(msg, lp_ctx, "msg.sock"); | |||||
if (msg->sock_dir == NULL) { | |||||
goto fail; | |||||
} |
@ -0,0 +1,58 @@ | |||||
Some modules such as dynamic library maybe cann't be imported while cross compile, | |||||
we just check whether does the module exist. | |||||
Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com> | |||||
Index: samba-4.4.2/buildtools/wafsamba/samba_bundled.py | |||||
=================================================================== | |||||
--- samba-4.4.2.orig/buildtools/wafsamba/samba_bundled.py | |||||
+++ samba-4.4.2/buildtools/wafsamba/samba_bundled.py | |||||
@@ -2,6 +2,7 @@ | |||||
import sys | |||||
import Build, Options, Logs | |||||
+import imp, os | |||||
from Configure import conf | |||||
from samba_utils import TO_LIST | |||||
@@ -230,17 +231,32 @@ def CHECK_BUNDLED_SYSTEM_PYTHON(conf, li | |||||
# versions | |||||
minversion = minimum_library_version(conf, libname, minversion) | |||||
- try: | |||||
- m = __import__(modulename) | |||||
- except ImportError: | |||||
- found = False | |||||
- else: | |||||
+ # Find module in PYTHONPATH | |||||
+ stuff = imp.find_module(modulename, [os.environ["PYTHONPATH"]]) | |||||
+ if stuff: | |||||
try: | |||||
- version = m.__version__ | |||||
- except AttributeError: | |||||
+ m = imp.load_module(modulename, stuff[0], stuff[1], stuff[2]) | |||||
+ except ImportError: | |||||
found = False | |||||
+ | |||||
+ if conf.env.CROSS_COMPILE: | |||||
+ # Some modules such as dynamic library maybe cann't be imported | |||||
+ # while cross compile, we just check whether the module exist | |||||
+ Logs.warn('Cross module[%s] has been found, but can not be loaded.' % (stuff[1])) | |||||
+ found = True | |||||
else: | |||||
- found = tuplize_version(version) >= tuplize_version(minversion) | |||||
+ try: | |||||
+ version = m.__version__ | |||||
+ except AttributeError: | |||||
+ found = False | |||||
+ else: | |||||
+ found = tuplize_version(version) >= tuplize_version(minversion) | |||||
+ finally: | |||||
+ if stuff[0]: | |||||
+ stuff[0].close() | |||||
+ else: | |||||
+ found = False | |||||
+ | |||||
if not found and not conf.LIB_MAY_BE_BUNDLED(libname): | |||||
Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion)) | |||||
sys.exit(1) |
@ -0,0 +1,43 @@ | |||||
Don't check xsltproc manpages | |||||
Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com> | |||||
Index: samba-4.4.2/lib/ldb/wscript | |||||
=================================================================== | |||||
--- samba-4.4.2.orig/lib/ldb/wscript | |||||
+++ samba-4.4.2/lib/ldb/wscript | |||||
@@ -65,7 +65,7 @@ def configure(conf): | |||||
conf.define('USING_SYSTEM_LDB', 1) | |||||
if conf.env.standalone_ldb: | |||||
- conf.CHECK_XSLTPROC_MANPAGES() | |||||
+ #conf.CHECK_XSLTPROC_MANPAGES() | |||||
# we need this for the ldap backend | |||||
if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'): | |||||
Index: samba-4.4.2/lib/talloc/wscript | |||||
=================================================================== | |||||
--- samba-4.4.2.orig/lib/talloc/wscript | |||||
+++ samba-4.4.2/lib/talloc/wscript | |||||
@@ -56,7 +56,7 @@ def configure(conf): | |||||
if conf.env.standalone_talloc: | |||||
conf.env.TALLOC_COMPAT1 = Options.options.TALLOC_COMPAT1 | |||||
- conf.CHECK_XSLTPROC_MANPAGES() | |||||
+ #conf.CHECK_XSLTPROC_MANPAGES() | |||||
if not conf.env.disable_python: | |||||
# also disable if we don't have the python libs installed | |||||
Index: samba-4.4.2/lib/tdb/wscript | |||||
=================================================================== | |||||
--- samba-4.4.2.orig/lib/tdb/wscript | |||||
+++ samba-4.4.2/lib/tdb/wscript | |||||
@@ -92,7 +92,7 @@ def configure(conf): | |||||
not conf.env.disable_tdb_mutex_locking): | |||||
conf.define('USE_TDB_MUTEX_LOCKING', 1) | |||||
- conf.CHECK_XSLTPROC_MANPAGES() | |||||
+ #conf.CHECK_XSLTPROC_MANPAGES() | |||||
if not conf.env.disable_python: | |||||
# also disable if we don't have the python libs installed |
@ -0,0 +1,21 @@ | |||||
--- a/libcli/smbreadline/wscript_configure | |||||
+++ b/libcli/smbreadline/wscript_configure | |||||
@@ -1,11 +1,13 @@ | |||||
#!/usr/bin/env python | |||||
-conf.CHECK_HEADERS('readline.h history.h readline/readline.h readline/history.h') | |||||
-for termlib in ['ncurses', 'curses', 'termcap', 'terminfo', 'termlib', 'tinfo']: | |||||
- if conf.CHECK_FUNCS_IN('tgetent', termlib): | |||||
- conf.env['READLINE_TERMLIB'] = termlib | |||||
- break | |||||
+#conf.CHECK_HEADERS('readline.h history.h readline/readline.h readline/history.h') | |||||
+#for termlib in ['ncurses', 'curses', 'termcap', 'terminfo', 'termlib', 'tinfo']: | |||||
+# if conf.CHECK_FUNCS_IN('tgetent', termlib): | |||||
+# conf.env['READLINE_TERMLIB'] = termlib | |||||
+# break | |||||
+ | |||||
+conf.undefine('HAVE_READLINE_READLINE_H') | |||||
# | |||||
# Check if we need to work around readline/readline.h |
@ -0,0 +1,46 @@ | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=wsdd2 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE_PROTO:=git | |||||
PKG_SOURCE_URL:=https://github.com/Andy2244/wsdd2.git | |||||
PKG_SOURCE_DATE:=2018-07-24 | |||||
PKG_SOURCE_VERSION:=2c31ba3b720af81848c47dff7ad7c6c30c0c0f50 | |||||
PKG_MIRROR_HASH:=eb903a870d99c6001996dbfc22c15e1020278c45ed2441ceb61bc5395f417afa | |||||
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com> | |||||
PKG_LICENSE:=GPL-3.0-only | |||||
PKG_LICENSE_FILES:=COPYING | |||||
include $(INCLUDE_DIR)/package.mk | |||||
define Package/wsdd2 | |||||
SECTION:=net | |||||
CATEGORY:=Network | |||||
SUBMENU:=IP Addresses and Names | |||||
TITLE:=Web Services for Devices (WSD) daemon | |||||
URL:=https://kb.netgear.com/2649/NETGEAR-Open-Source-Code-for-Programmers-GPL | |||||
endef | |||||
define Package/wsdd2/description | |||||
Web Services for Devices or Web Services on Devices (WSD), | |||||
is a Microsoft API to simplify programming connections to web service | |||||
enabled devices, such as printers, scanners and file shares. | |||||
This daemon advertises and responds to probe requests from Windows clients looking for file shares. | |||||
It also implements LLMNR multicast name lookup services. | |||||
endef | |||||
define Build/Compile | |||||
$(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(PKG_BUILD_DIR)/{wsdd2.c,wsd.c,llmnr.c} -o $(PKG_BUILD_DIR)/wsdd2 | |||||
endef | |||||
define Package/wsdd2/install | |||||
$(INSTALL_DIR) $(1)/usr/bin | |||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/wsdd2 $(1)/usr/bin/ | |||||
$(INSTALL_DIR) $(1)/etc/init.d | |||||
$(INSTALL_BIN) ./files/wsdd2.init $(1)/etc/init.d/wsdd2 | |||||
endef | |||||
$(eval $(call BuildPackage,wsdd2)) |
@ -0,0 +1,12 @@ | |||||
#!/bin/sh /etc/rc.common | |||||
START=99 | |||||
USE_PROCD=1 | |||||
start_service() { | |||||
procd_open_instance | |||||
procd_set_param command /usr/bin/wsdd2 -w | |||||
procd_set_param respawn | |||||
procd_set_param file /var/etc/smb.conf | |||||
procd_close_instance | |||||
} |
@ -0,0 +1,22 @@ | |||||
--- a/wsd.c 2018-07-20 | |||||
+++ b/wsd.c 2018-07-20 | |||||
@@ -97,12 +97,17 @@ static void uuid_endpoint(char *uuid, si | |||||
FILE *fp = fopen("/etc/machine-id", "r"); | |||||
int c, i = 0; | |||||
+ if (!fp) { | |||||
+ DEBUG(0, W, "Can't open '/etc/machine-id', trying '/proc/sys/kernel/random/boot_id'"); | |||||
+ fp = fopen("/proc/sys/kernel/random/boot_id", "r"); | |||||
+ } | |||||
+ | |||||
if (!fp) | |||||
return; | |||||
while (i < 36 && (c = getc(fp)) != EOF && | |||||
- (isdigit(c) || (islower(c) && isxdigit(c)))) { | |||||
- if (i == 8 || i == 13 || i == 18 || i == 23) | |||||
+ ((c == '-') || isdigit(c) || (islower(c) && isxdigit(c)))) { | |||||
+ if ((c != '-') && (i == 8 || i == 13 || i == 18 || i == 23)) | |||||
uuid[i++] = '-'; | |||||
uuid[i++] = c; | |||||
} |
@ -0,0 +1,149 @@ | |||||
include $(TOPDIR)/rules.mk | |||||
PKG_NAME:=qemu | |||||
PKG_VERSION:=3.0.0-rc2 | |||||
PKG_RELEASE:=1 | |||||
PKG_SOURCE_URL:=https://download.qemu.org/ | |||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz | |||||
PKG_HASH:=b02b30c7d460996835416ef09161f6faef2700e339cf11cd99481ca51b5954f2 | |||||
PKG_LICENSE:=GPL-2.0 | |||||
PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com> | |||||
HOST_BUILD_PARALLEL:=1 | |||||
PKG_BUILD_PARALLEL:=1 | |||||
PKG_INSTALL:=1 | |||||
include $(INCLUDE_DIR)/host-build.mk | |||||
include $(INCLUDE_DIR)/package.mk | |||||
HOST_BUILD_DEPENDS:=glib2/host | |||||
define Package/qemu-userspace | |||||
SECTION:=utils | |||||
CATEGORY:=Utilities | |||||
SUBMENU:=Virtualization | |||||
TITLE:=qemu $(PKG_VERSION) (Linux/BSD User space emulation) | |||||
URL:=https://www.qemu.org | |||||
DEPENDS:=+glib2 +zlib +libpthread @BROKEN | |||||
endef | |||||
define Package/qemu-userspace/description | |||||
QEMU is a generic and open source machine emulator and virtualizer. | |||||
(This package version is for user space emulation only, not full system.) | |||||
endef | |||||
HOST_CONFIGURE_ARGS += \ | |||||
--audio-drv-list='' \ | |||||
--disable-slirp \ | |||||
--disable-debug-info \ | |||||
--disable-modules \ | |||||
--disable-sdl \ | |||||
--disable-qom-cast-debug \ | |||||
--disable-virtfs \ | |||||
--disable-vnc \ | |||||
--disable-debug-tcg \ | |||||
--disable-sparse \ | |||||
--disable-strip \ | |||||
--disable-vnc-sasl \ | |||||
--disable-vnc-jpeg \ | |||||
--disable-vnc-png \ | |||||
--disable-vde \ | |||||
--disable-netmap \ | |||||
--disable-xen \ | |||||
--disable-xen-pci-passthrough \ | |||||
--disable-xen-pv-domain-build \ | |||||
--disable-brlapi \ | |||||
--disable-bluez \ | |||||
--disable-tcg-interpreter \ | |||||
--disable-cap-ng \ | |||||
--disable-spice \ | |||||
--disable-libiscsi \ | |||||
--disable-libnfs \ | |||||
--disable-cocoa \ | |||||
--disable-werror \ | |||||
--disable-stack-protector \ | |||||
--disable-curl \ | |||||
--disable-crypto-afalg \ | |||||
--disable-docs \ | |||||
--disable-vhost-net \ | |||||
--disable-vhost-scsi \ | |||||
--disable-vhost-vsock \ | |||||
--disable-opengl \ | |||||
--disable-rbd \ | |||||
--disable-xfsctl \ | |||||
--disable-smartcard \ | |||||
--disable-libusb \ | |||||
--disable-usb-redir \ | |||||
--disable-zlib-test \ | |||||
--disable-lzo \ | |||||
--disable-snappy \ | |||||
--disable-bzip2 \ | |||||
--disable-guest-agent-msi \ | |||||
--without-vss-sdk \ | |||||
--without-win-sdk \ | |||||
--disable-tools \ | |||||
--disable-glusterfs \ | |||||
--disable-gtk \ | |||||
--disable-gnutls \ | |||||
--disable-nettle \ | |||||
--disable-gcrypt \ | |||||
--disable-rdma \ | |||||
--disable-vte \ | |||||
--disable-virglrenderer \ | |||||
--disable-tpm \ | |||||
--disable-libssh2 \ | |||||
--disable-strip \ | |||||
--disable-replication \ | |||||
--disable-vxhs \ | |||||
--disable-system \ | |||||
--disable-guest-agent \ | |||||
--disable-pie \ | |||||
--disable-live-block-migration \ | |||||
--disable-numa \ | |||||
--disable-libxml2 \ | |||||
--disable-capstone \ | |||||
--disable-debug-mutex \ | |||||
--disable-git-update \ | |||||
--disable-hax \ | |||||
--disable-kvm \ | |||||
--disable-hvf \ | |||||
--disable-whpx \ | |||||
--disable-blobs | |||||
# --disable-tcg | |||||
# --disable-bsd-user | |||||
# --disable-linux-aio | |||||
# --disable-attr | |||||
# --disable-seccomp | |||||
# --disable-coroutine-pool | |||||
# --disable-tcmalloc | |||||
# --disable-jemalloc | |||||
# --disable-vhost-user | |||||
# QEMU configure script does not recognize these options | |||||
HOST_CONFIGURE_ARGS:=$(filter-out \ | |||||
--target=% \ | |||||
--host=% \ | |||||
--build=% \ | |||||
--program-prefix=% \ | |||||
--program-suffix=% \ | |||||
--exec-prefix=% \ | |||||
--disable-nls \ | |||||
, $(HOST_CONFIGURE_ARGS)) | |||||
# does this do anything in usermode? | |||||
CONFIGURE_ARGS:=$(filter-out \ | |||||
--disable-hax \ | |||||
--disable-kvm \ | |||||
--disable-hvf \ | |||||
--disable-blobs \ | |||||
, $(HOST_CONFIGURE_ARGS)) | |||||
CONFIGURE_ARGS += \ | |||||
--cross-prefix=$(TARGET_CROSS) \ | |||||
--host-cc="$(HOSTCC)" | |||||
$(eval $(call HostBuild)) | |||||
$(eval $(call BuildPackage,qemu-userspace)) |