ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
From: "Шенцев Алексей" <lex.shen@yandex.ru>
To: sisyphus@lists.altlinux.org
Subject: Re: [sisyphus] сборка rpm-пакета & systemd
Date: Mon, 6 Aug 2018 12:00:32 +0300
Message-ID: <21a8d2b9-3964-3f8a-2fcb-9ca4d0bf5d68@yandex.ru> (raw)
In-Reply-To: <5c17fccf-5e09-395f-ad46-59570cc332bb@ya.ru>

[-- Attachment #1: Type: text/plain, Size: 2252 bytes --]

06.08.2018 11:48, Антон Мидюков пишет:
> 06.08.2018 15:38, Шенцев Алексей пишет:
>> 06.08.2018 09:53, Антон Мидюков пишет:
>>> 06.08.2018 13:23, Шенцев Алексей пишет:
>>>
>>>>
>>>>
>>>> Предпологаю, что надо в спеке указать типа:
>>>>
>>>>
>>>> mkdir -p %buildroot/<хде_там_системд>
>>>>
>>>>
>>>> Но вот как правильно это сделать?
>>>>
>>> Не понятно, откуда взялась эта ошибка? Во время make install 
>>
>> Вот в это время и возникает ошибка:
>>
>> Making install in systemd
>> make[1]: Entering directory '/home/ashen/RPM/BUILD/dbmail-3.2.3/systemd'
>> make[2]: Entering directory '/home/ashen/RPM/BUILD/dbmail-3.2.3/systemd'
>> make[2]: Nothing to be done for 'install-exec-am'.
>>   GEN      dbmail-imapd.service
>>   GEN      dbmail-lmtpd.service
>>   GEN      dbmail-pop3d.service
>>   GEN      dbmail-timsieved.service
>>   GEN      dbmail.tmpfiles
>> /bin/mkdir -p /usr/lib/systemd/system
>> /bin/mkdir: cannot create directory '/usr/lib/systemd/system': 
>> Permission denied
>> make[2]: *** [Makefile:2014: install-systemd] Error 1
>>
>> как объехать данную ошибку сообразить не могу.
>>
>> запуск autoreconf не помог (хотя может и не правильно запускал)
> %autoreconf правильно.
>>
>>> или вы сами в спеке отдали неверную команду. Отсюда и решение будет 
>>> разным. Во втором случае:
>>
>>> mkdir -p %buildroot%_unitdir
>>
>> Это прописано.
>>
>>>
>>> В первом, нужно разбираться, как поменять переменную в Makefile. И 
>>> тут опять варианты в зависимости от того, как этот Makefile 
>>> сформировался.
>>>
>> Makefile формируется через "./configure --enable-systemd" проги.
>>
> Раз делаете %autoreconf надо править что-то типа Makefile.am, того из 
> чего формируется configure и потом уже Makefile формируется. Видимо, 
> жёстко путь прописан. 

Прописан путь в:

fgrep -ir '/usr/lib/systemd/system' *

systemd/Makefile.in:SYSTEMD_UNIT_DIR = /usr/lib/systemd/system
systemd/Makefile.am:SYSTEMD_UNIT_DIR = /usr/lib/systemd/system

> Если autoreconf не делать, то править configure надо.
> А вообще можно глянуть на исходники проекта или ваш srpm (git на 
> git.alt если есть)?
>
Исходники:

http://dbmail.org/download/3.2/dbmail-3.2.3.tar.gz

спек (черновой вариант, не пинать строго :) ) во вложении.

-- 
С уважением,
Шенцев Алексей


[-- Attachment #2: dbmail.spec --]
[-- Type: text/x-rpm-spec, Size: 6479 bytes --]

#%define         services dbmail-imapd dbmail-pop3d dbmail-lmtpd dbmail-timsieved

Name:           dbmail
Version:        3.2.3
Release:        alt1
Summary:        A database backed mail storage system

Group:          System/Servers
# db_getopot.c is licensed MIT
License:        GPLv2+ and MIT
URL:            http://www.dbmail.org

Packager: Alexey Shentzev <ashen@altlinux.ru>

Source0:        %name-%version.tar.gz
Source1:        %name-imapd
Source2:        %name-pop3d
Source3:        %name-lmtpd
Source4:        %name-timsieved
Source5:        %name.cron
Source6:        %name.logrotate
Source7:        %name.sysconfig

Patch0:         %name-3.0.0-glib.patch

BuildPreReq: glib2-devel >= 2.6 libgmime-devel zlib-devel 
BuildRequires: asciidoc xmlto libmhash-devel libevent-devel libssl-devel libzdb-devel

%def_with    mysql
%def_with    pgsql
%def_with    sqlite
##%def_with    ldap
##%def_with    sieve
##%def_with    contrib
##%def_with    suystemd

%{?_with_mysql:BuildPreReq: libmariadb-devel}
%{?_with_pgsql:BuildPreReq: postgresql-devel}
%{?_with_sqlite:BuildPreReq: libsqlite3-devel}
#%{?_with_ldap:BuildPreReq: libldap-devel}
#%{?_with_sieve:BuildPreReq: libsieve-devel}

%description
DBMail is a POP3/IMAP server that enables email to be stored in and retrieved from a database

%if_with mysql
%package mysql
Summary: MySQL storage driver for DBMail
Group: System/Servers
Requires: %name = %version-%release
Provides: %name-storage = %version-%release
%description mysql
MySQL storage driver for DBMail
%endif

%if_with pgsql
%package pgsql
Summary: PostgreSQL storage driver for DBMail
Group: System/Servers
Requires: %name = %version-%release
Provides: %name-storage = %version-%release
%description pgsql
PostgreSQL storage driver for DBMail
%endif

%if_with sqlite
%package sqlite
Summary: SQLite storage driver for DBMail
Group: System/Servers
Requires: %name = %version-%release
Provides: %name-storage = %version-%release
%description sqlite
SQLite storage driver for DBMail
%endif

##%if_with ldap
##%package ldap
##Summary: LDAP authentication driver for DBMail
##Group: System/Servers
##Requires: %name = %version-%release
##%description ldap
##LDAP authentication driver for DBMail
##%endif

##%if_with sieve
##%package sieve
##Summary: Sieve filtering engine for DBMail
##Group: System/Servers
##Requires: %name = %version-%release
##Requires: libsieve
##%description sieve
##Sieve filtering engine for DBMail.
##%endif

##%package contrib
##Summary: Additional tools for DBMail
##Group: System/Servers
##Requires: %name = %version-%release
##%description contrib
##Additional tools for DBMail

%prep
%setup -q

sed -i 's/\(^driver\W*=\)\(\W*$\)/\1 sqlite/' %name.conf
sed -i -e 's,\(^db\W*=\)\(.*$\),\1 %_localstatedir/lib/%name/%name.db,'   \
       -e 's/\(^authdriver\W*=\)\(\W*$\)/\1 sql/'                             \
       -e 's/\(^EFFECTIVE_USER\W*=\)\(.*$\)/\1 %name/'                       \
       -e 's/\(^EFFECTIVE_GROUP\W*=\)\(.*$\)/\1 %name/' %name.conf

sed -i 's/gmime-2.4/gmime-2.6/g' configure

%build
export CFLAGS="%optflags -I%_includedir/zdb"

autoreconf -v

CONFIGURE_WITH="--disable-rpath --disable-static --enable-shared \
    --enable-manpages \
    --enable-silent-rules \
    --with-logdir --with-ldap --with-sieve \
    --enable-systemd "

%if_with mysql
CONFIGURE_WITH="${CONFIGURE_WITH} --with-mysql"
%endif
%if_with pgsql
CONFIGURE_WITH="${CONFIGURE_WITH} --with-pgsql"
%endif
%if_with sqlite
CONFIGURE_WITH="${CONFIGURE_WITH} --with-sqlite"
%endif

%configure ${CONFIGURE_WITH}
%make_build

%install

make %_smp_mflags

# adjust $RPM_BUILD for install
mkdir -p %buildroot%_sbindir
mkdir -p %buildroot%_libdir%name
mkdir -p %buildroot%_man1dir
mkdir -p %buildroot%_man5dir
mkdir -p %buildroot%_man8dir
mkdir -p %buildroot%_sysconfdir
mkdir -p %buildroot%_sysconfdir/sysconfig
mkdir -p %buildroot%_sysconfdir/cron.daily
mkdir -p %buildroot%_sysconfdir/logrotate.d
mkdir -p %buildroot%_initdir
mkdir -p %buildroot%_docdir%name-%version
mkdir -p %buildroot%_datadir%name-%version/contrib
mkdir -p %buildroot%_localstatedir%name
mkdir -p %buildroot%_unitdir

%makeinstall

#rm -rf $RPM_BUILD_ROOT
#make install DESTDIR=$RPM_BUILD_ROOT

# package cron, config and init scripts
install -m 0755 %SOURCE1 %buildroot%_initdir/
install -m 0755 %SOURCE2 %buildroot%_initdir/
install -m 0755 %SOURCE3 %buildroot%_initdir/
install -m 0755 %SOURCE4 %buildroot%_initdir/
install -m 0755 %SOURCE5 %buildroot%_sysconfdir/cron.daily/
install -m 0755 %SOURCE6 %buildroot%_sysconfdir/logrotate.d/
install -m 0644 %SOURCE7 %buildroot%_sysconfdir/sysconfig/
install -p -m 600 %name.conf %buildroot%_sysconfdir/

# man pages
install -p -m 644 man/*1 %buildroot/%_man1dir/
install -p -m 644 man/*5 %buildroot/%_man5dir/
install -p -m 644 man/*8 %buildroot/%_man8dir/

echo
echo
echo
echo "	_!!!!!!_SYSTEMD_!!!!!_"
echo
echo
echo

# systemd
install -m 0755 %name-* %buildroot/%_unitdir/
##install -m 0755 %name.tmpfiles %buildroot%_unitdir/

# remove libtool archives and -devel type stuff (but leave loadable modules)
find %buildroot -name \*\.la -print | xargs rm -f
rm -f %buildroot/%_libdir/%name/lib%name.so

%clean
##rm -rf %buildroot

%pre
getent group %name >/dev/null || groupadd -r %name
getent passwd %name >/dev/null || \
  useradd -r -M -g %name -d / -s /sbin/nologin \
  -c "%name Daemon" %name
exit 0

##%post
##for s in %services; do
##  /sbin/chkconfig --add $s &> /dev/null || :
##done
##/sbin/ldconfig

##%preun
##if [ $1 = 0 ]; then
##  for s in %services; do
##    /sbin/service $s stop &> /dev/null || : 
##    /sbin/chkconfig --del $s &> /dev/null || :
##  done
##fi
##exit 0

%postun
##if [ "$1" -eq "0" ]; then
##  /sbin/ldconfig
##elif [ "$1" -ge "1" ]; then
##  for s in %services; do
##    /sbin/service $s condrestart &> /dev/null || : 
##  done
##fi

%files
%defattr(-,root,root,-)
%doc AUTHORS BUGS ChangeLog COPYING INSTALL README* THANKS UPGRADING sql %name.schema
%_sbindir/*
%_man1dir
%_man5dir
%_man8dir
%dir %_libdir/%name
%_libdir/%name/libauth_sql*
%_libdir/%name/libdbmail*
%_libdir/%name/libsort_sieve*
%config(noreplace) %_sysconfdir/%name.conf
%_initrddir/%name-*
%_sysconfdir/cron.daily/%name.cron
%config(noreplace) %_sysconfdir/sysconfig/%name.sysconfig
##%config(noreplace) %_sysconfdir/%name.sysconfig
%config(noreplace) %_sysconfdir/logrotate.d/%name.logrotate
%dir %attr(0775,root,%name) /var/lib/%name
%defattr(-,root,root,-)
%attr(-,root,root) %_libdir/%name/libauth_ldap*


%changelog

  reply	other threads:[~2018-08-06  9:00 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-06  6:23 Шенцев Алексей
2018-08-06  6:53 ` Антон Мидюков
2018-08-06  8:38   ` Шенцев Алексей
2018-08-06  8:38   ` Шенцев Алексей
2018-08-06  8:48     ` Антон Мидюков
2018-08-06  9:00       ` Шенцев Алексей [this message]
2018-08-06  9:10         ` Антон Мидюков
2018-08-06  9:13           ` Шенцев Алексей
2018-08-06  9:28             ` Антон Мидюков
2018-08-06 12:12               ` Шенцев Алексей
2018-08-06 12:25                 ` Andrey Cherepanov
2018-08-06 13:29                   ` Andrew Borodin
2018-08-06 13:16                 ` Антон Мидюков
2018-08-06 13:37                 ` Шенцев Алексей

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=21a8d2b9-3964-3f8a-2fcb-9ca4d0bf5d68@yandex.ru \
    --to=lex.shen@yandex.ru \
    --cc=sisyphus@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git