Hi Steven,

my name is Gergely Kiss, I have recently started creating patches for openwrt 
and I'm about to publish some packages to the packages repository (some ported 
from oldpackages, others are brand new).

However, one of the packages depends on shadow-useradd and this dependency 
seems to be unresolvable by opkg for some reason:

root@OpenWrt:~# opkg install seafile-server
Installing seafile-server (3.1.7-1) to root...
Downloading file:///tmp/packages/seafile-server_3.1.7-1_ar71xx.ipk.
Collected errors:
 * satisfy_dependencies_for: Cannot satisfy the following dependencies for 
seafile-server:
 *      shadow-utils * 
 * opkg_install_cmd: Cannot install package seafile-server.

As far as I can understand, shadow-utils is a pseudo-package only, it's install 
section is empty and therefore the package file is not generated, hence the 
dependency cannot be satisfied by opkg.

This section from the package Makefile looks interesting to me:

define Package/shadow-utils/config
    menu "Select shadow utilities"
      depends on PACKAGE_shadow-utils

I think here you make all shadow-* packages depending on the non-existing 
shadow-utils package, at least that's what I can see in menuconfig:

Symbol: PACKAGE_shadow-useradd [=m]
[...]
Type  : tristate
Prompt: Full PLD version of useradd utility
Defined at tmp/.config-package.in:53096
*** Depends on: PACKAGE_shadow-utils [=m] ***

Could you please check if this is a bug indeed?

Here's my package's Makefile:

*****************************************************
#
# Copyright (C) 2007-2014 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:=seafile-server
PKG_VERSION:=3.1.7
PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0

PKG_BUILD_DIR:=$(BUILD_DIR)/seafile-$(PKG_VERSION)-server
PKG_SOURCE:=v$(PKG_VERSION)-server.tar.gz
PKG_SOURCE_URL:=https://github.com/haiwen/seafile/archive/
PKG_MD5SUM:=af35324998b6c98fe1442d5d775871ee
PKG_CAT:=zcat
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk

define Package/seafile-server
    SECTION:=net
    CATEGORY:=Network
    TITLE:=Seafile server
    MAINTAINER:=Gergely Kiss <mail.g...@gmail.com>
    URL:=http://seafile.com/
    DEPENDS:=+shadow-useradd +libarchive +libopenssl +glib2 +seafile-ccnet 
+libsearpc +sqlite3-cli +python-mysql \
                +jansson +libevent2 +libevent2-openssl +zlib +libzdb 
+libsqlite3 +libmysqlclient +libevhtp \
                +libpthread +libuuid +seafile-seahub +bash +sudo +procps 
+procps-pkill $(ICONV_DEPENDS)
endef

define Package/seafile-server/description
   Open source cloud storage with advanced features on privacy protection and 
teamwork.
endef

CONFIGURE_ARGS += --disable-riak \
                    --disable-client \
                    --disable-fuse \
                    --enable-server \
                    --enable-python \
                    --disable-static-build \
                    --disable-server-pkg \
                    --disable-console

PKG_BUILD_DEPENDS:=vala/host \
                    libsearpc/host

TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib -liconv \
                    -L$(STAGING_DIR)/usr/lib/mysql -lmysqlclient -lz

Hooks/Prepare/Post += delete_source_package

define delete_source_package
        # deleting downloaded source package as its filename is ambiguous
        rm -f $(DL_DIR)/$(PKG_SOURCE)
endef

define Package/seafile-server/install
        $(INSTALL_DIR) $(1)/usr/{bin,lib}
        $(INSTALL_DIR) $(1)/usr/lib/python2.7/site-packages
        $(INSTALL_DIR) $(1)/usr/share/seafile/seafile-server/runtime
        $(INSTALL_DIR) $(1)/etc/init.d
        $(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/python2.7/site-packages/seafile/ 
$(1)/usr/lib/python2.7/site-packages/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/python2.7/site-packages/seaserv/ 
$(1)/usr/lib/python2.7/site-packages/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libseafile.so* $(1)/usr/lib/
        $(CP) $(PKG_BUILD_DIR)/scripts/seaf-gc.sh 
$(1)/usr/share/seafile/seafile-server/
        $(CP) $(PKG_BUILD_DIR)/scripts/setup-seafile-mysql.py 
$(1)/usr/share/seafile/seafile-server/
        $(CP) $(PKG_BUILD_DIR)/scripts/setup-seafile-mysql.sh 
$(1)/usr/share/seafile/seafile-server/
        $(CP) $(PKG_BUILD_DIR)/scripts/sqlite2mysql.py 
$(1)/usr/share/seafile/seafile-server/
        $(CP) $(PKG_BUILD_DIR)/scripts/sqlite2mysql.sh 
$(1)/usr/share/seafile/seafile-server/
        $(CP) $(PKG_BUILD_DIR)/scripts/upgrade/ 
$(1)/usr/share/seafile/seafile-server/
        $(INSTALL_BIN) ./files/seafile.init $(1)/etc/init.d/seafile
endef

define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/include
        $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
        $(CP) $(PKG_INSTALL_DIR)/usr/include/seafile/ $(1)/usr/include/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libseafile.pc 
$(1)/usr/lib/pkgconfig/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/libseafile.so* $(1)/usr/lib/
endef

define Package/seafile-server/postinst
#!/bin/sh

if ! id -u seafile >/dev/null 2>&1; then
    useradd seafile -d "/usr/share/seafile" -s /bin/sh; fi

chown -R seafile:seafile /usr/share/seafile/
chmod -R o-rwx /usr/share/seafile/

if [ ! -d "/usr/share/seafile/seafile-data" ]
then
   echo "*** Installation completed, running configuration script..."
   /etc/init.d/seafile setup

   if [ $$? -ne 0 ]
   then
      echo
      echo "*** ERROR: Configuration failed. Please fix the issues if any and 
re-run the script using the command below:"
      echo "*** \"/etc/init.d/seafile setup\""
   fi
echo
echo "*** NOTE: you need to create an admin account before using Seafile."
echo "*** Please run \"/etc/init.d/seafile create_admin\" to do so."
fi

/etc/init.d/seafile enable
/etc/init.d/seafile restart
endef

define Package/seafile-server/prerm
#!/bin/sh
/etc/init.d/seafile stop
endef

$(eval $(call BuildPackage,seafile-server))

*****************************************************


Kind Regards,
Gergely
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to