ocehb: (Default)
ocehb ([personal profile] ocehb) wrote2020-04-23 09:56 pm
Entry tags:

Makefile.PL → rpm

Для автоматизации опакечивания модуля в rpm,

в Makefile.PL надо добавить (не забывайте про табуляции):


sub MY::postamble {
    return <<'MAKE_FRAG';
DIST    = $(shell rpm --eval "%dist")
RPMS    = $(HOME)/rpmbuild/RPMS/noarch/perl-$(DISTVNAME)-2$(DIST).noarch.rpm
SOURCE  = $(HOME)/rpmbuild/SOURCES/$(DISTVNAME).tar.gz

rpm: $(RPMS)

$(RPMS): $(SOURCE)
    rpmbuild -bb --define="_VERSION $(VERSION)" perl-$(DISTNAME).spec

$(SOURCE):
    git archive --format=tar.gz --prefix=$(DISTVNAME)/ -o $@ master

sign: $(RPMS)
    rpm --addsign $<
MAKE_FRAG
}


Предполагается, что как vcs используется git, и для опакечивания используем
код из master.

Созданы две цели: rpm и sign. Первая используется просто
для создания пакета perl-Name, вторая для подписи пакета.

Предполагается, что в корне пакета присутствует perl-Name.spec,
в котором версия описывается как
Version:    %{_VERSION}


Далее:

# perl Makefile.PL
Generating a Unix-style Makefile
Writing Makefile for Name
Writing MYMETA.yml and MYMETA.json
# make rpm
rpmbuild -bb --define="_VERSION 0.03" perl-Name.spec
...
Wrote: /home/ocehb/rpmbuild/RPMS/noarch/perl-Name-0.03-2.fc32.noarch.rpm
...
#


That's all, folks!