[spice-gtk,2/2] Add copr builds integration

Submitted by Snir Sheriber on Aug. 27, 2019, 2:27 p.m.

Details

Message ID 20190827142733.3130-2-ssheribe@redhat.com
State New
Headers show
Series "Series without cover letter" ( rev: 1 ) in Spice

Not browsing as part of any series.

Commit Message

Snir Sheriber Aug. 27, 2019, 2:27 p.m.
This will let copr to generate srpm using the .copr/Makefile script

Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
---
 .copr/Makefile | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)
 create mode 100644 .copr/Makefile

Patch hide | download patch | download mbox

diff --git a/.copr/Makefile b/.copr/Makefile
new file mode 100644
index 0000000..db297fb
--- /dev/null
+++ b/.copr/Makefile
@@ -0,0 +1,29 @@ 
+# This Makefile script is invoked by copr to build source rpm
+# See: https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm
+
+PROTOCOL_GIT_REPO = https://gitlab.freedesktop.org/spice/spice-protocol
+BUILD = meson gcc xz git rpm-build
+
+srpm:
+	dnf install -y $(BUILD)
+
+	# get upstream spice protocol
+	git clone $(PROTOCOL_GIT_REPO)
+	cd spice-protocol && meson -Dprefix=/usr/ build && ninja -C build install
+	rm -rf spice-protocol
+
+	# get other dependencies for project excluding spice-protocol
+	dnf install -y `sed '/^BuildRequires:/!d; s/.*://; s/\bspice-protocol\b//; s/>.*//' *.spec.in`
+
+	# do not use commit id for version
+	git fetch --tags
+	git describe --abbrev=0 | sed 's/v//' > .tarball-version
+	# create source rpm
+	meson --buildtype=release build
+	# Meson does not update submodules recursively
+	git submodule update --init --recursive
+	# this fix an issue with Meson dist
+	if ! test -r ../spice-common.git; then DIR=`basename "$$PWD"`; ln -s "$$DIR/.git/modules/spice-common" ../spice-common.git; fi
+	rm -rf meson-dist
+	ninja -C build dist
+	rpmbuild -bs ./build/*spec --define "_sourcedir $$PWD/build/meson-dist/" --define "_srcrpmdir $(outdir)"

Comments

> 
> This will let copr to generate srpm using the .copr/Makefile script
> 
> Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
> ---
>  .copr/Makefile | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
>  create mode 100644 .copr/Makefile
> 
> diff --git a/.copr/Makefile b/.copr/Makefile
> new file mode 100644
> index 0000000..db297fb
> --- /dev/null
> +++ b/.copr/Makefile
> @@ -0,0 +1,29 @@
> +# This Makefile script is invoked by copr to build source rpm
> +# See: https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm
> +
> +PROTOCOL_GIT_REPO = https://gitlab.freedesktop.org/spice/spice-protocol
> +BUILD = meson gcc xz git rpm-build
> +
> +srpm:
> +	dnf install -y $(BUILD)
> +
> +	# get upstream spice protocol
> +	git clone $(PROTOCOL_GIT_REPO)
> +	cd spice-protocol && meson -Dprefix=/usr/ build && ninja -C build install
> +	rm -rf spice-protocol
> +
> +	# get other dependencies for project excluding spice-protocol
> +	dnf install -y `sed '/^BuildRequires:/!d; s/.*://; s/\bspice-protocol\b//;
> s/>.*//' *.spec.in`
> +
> +	# do not use commit id for version
> +	git fetch --tags
> +	git describe --abbrev=0 | sed 's/v//' > .tarball-version

Maybe adding a "--match=v\*" to git describe to avoid other tags beside the
ones starting with "v" ?

> +	# create source rpm
> +	meson --buildtype=release build
> +	# Meson does not update submodules recursively
> +	git submodule update --init --recursive
> +	# this fix an issue with Meson dist
> +	if ! test -r ../spice-common.git; then DIR=`basename "$$PWD"`; ln -s
> "$$DIR/.git/modules/spice-common" ../spice-common.git; fi
> +	rm -rf meson-dist

Sure you don't want build/meson-dist instead?

> +	ninja -C build dist
> +	rpmbuild -bs ./build/*spec --define "_sourcedir $$PWD/build/meson-dist/"
> --define "_srcrpmdir $(outdir)"

I would use *.spec, I know *spec works too, just a bit more specific.

Frediano
Hi

On Tue, Aug 27, 2019 at 6:27 PM Snir Sheriber <ssheribe@redhat.com> wrote:
>
> This will let copr to generate srpm using the .copr/Makefile script

Do we really want to maintain that kind of distro things upstream? Do
we need it?

What does it bring that gitlab CI doesn't have?

>
> Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
> ---
>  .copr/Makefile | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
>  create mode 100644 .copr/Makefile
>
> diff --git a/.copr/Makefile b/.copr/Makefile
> new file mode 100644
> index 0000000..db297fb
> --- /dev/null
> +++ b/.copr/Makefile
> @@ -0,0 +1,29 @@
> +# This Makefile script is invoked by copr to build source rpm
> +# See: https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm

When is the build actually triggered? Is copr monitoring the git
repository? Is there a hook somewhere in gitlab to trigger the build?

> +
> +PROTOCOL_GIT_REPO = https://gitlab.freedesktop.org/spice/spice-protocol
> +BUILD = meson gcc xz git rpm-build
> +
> +srpm:
> +       dnf install -y $(BUILD)
> +
> +       # get upstream spice protocol
> +       git clone $(PROTOCOL_GIT_REPO)
> +       cd spice-protocol && meson -Dprefix=/usr/ build && ninja -C build install
> +       rm -rf spice-protocol
> +
> +       # get other dependencies for project excluding spice-protocol
> +       dnf install -y `sed '/^BuildRequires:/!d; s/.*://; s/\bspice-protocol\b//; s/>.*//' *.spec.in`
> +
> +       # do not use commit id for version
> +       git fetch --tags
> +       git describe --abbrev=0 | sed 's/v//' > .tarball-version
> +       # create source rpm
> +       meson --buildtype=release build
> +       # Meson does not update submodules recursively
> +       git submodule update --init --recursive
> +       # this fix an issue with Meson dist
> +       if ! test -r ../spice-common.git; then DIR=`basename "$$PWD"`; ln -s "$$DIR/.git/modules/spice-common" ../spice-common.git; fi
> +       rm -rf meson-dist
> +       ninja -C build dist
> +       rpmbuild -bs ./build/*spec --define "_sourcedir $$PWD/build/meson-dist/" --define "_srcrpmdir $(outdir)"

Too much hacks for my taste here.

> --
> 2.21.0
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel
Hi,

On 8/27/19 10:49 PM, Marc-André Lureau wrote:
> Hi
>
> On Tue, Aug 27, 2019 at 6:27 PM Snir Sheriber <ssheribe@redhat.com> wrote:
>> This will let copr to generate srpm using the .copr/Makefile script
> Do we really want to maintain that kind of distro things upstream? Do
> we need it?
>
> What does it bring that gitlab CI doesn't have?


This srpm is generated with every commit and then a build is triggered
in copr so that we'll have a repository of latest upstream packages which
can be easily enabled by simple "dnf copr enable X" command.
This should eventually replace the nightly builds repo which is currently
created by an unmaintained vm that runs cron job that creates the srpms
and push to copr (there is also a git repo for the spec file templates used
by it).

Hence the intention was not to use it as ci, just for creating this repo, if
i could have easily push the srpm created by gitlab ci to copr i would have
done it. (can be done but would require to maintain our own runners)

>
>> Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
>> ---
>>   .copr/Makefile | 29 +++++++++++++++++++++++++++++
>>   1 file changed, 29 insertions(+)
>>   create mode 100644 .copr/Makefile
>>
>> diff --git a/.copr/Makefile b/.copr/Makefile
>> new file mode 100644
>> index 0000000..db297fb
>> --- /dev/null
>> +++ b/.copr/Makefile
>> @@ -0,0 +1,29 @@
>> +# This Makefile script is invoked by copr to build source rpm
>> +# See: https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm
> When is the build actually triggered? Is copr monitoring the git
> repository? Is there a hook somewhere in gitlab to trigger the build?


Yes, there is a gitlab hook that should be enabled (just by adding
the copr webhook url as gitlab hook)


>
>> +
>> +PROTOCOL_GIT_REPO = https://gitlab.freedesktop.org/spice/spice-protocol
>> +BUILD = meson gcc xz git rpm-build
>> +
>> +srpm:
>> +       dnf install -y $(BUILD)
>> +
>> +       # get upstream spice protocol
>> +       git clone $(PROTOCOL_GIT_REPO)
>> +       cd spice-protocol && meson -Dprefix=/usr/ build && ninja -C build install
>> +       rm -rf spice-protocol
>> +
>> +       # get other dependencies for project excluding spice-protocol
>> +       dnf install -y `sed '/^BuildRequires:/!d; s/.*://; s/\bspice-protocol\b//; s/>.*//' *.spec.in`
>> +
>> +       # do not use commit id for version
>> +       git fetch --tags
>> +       git describe --abbrev=0 | sed 's/v//' > .tarball-version
>> +       # create source rpm
>> +       meson --buildtype=release build
>> +       # Meson does not update submodules recursively
>> +       git submodule update --init --recursive
>> +       # this fix an issue with Meson dist
>> +       if ! test -r ../spice-common.git; then DIR=`basename "$$PWD"`; ln -s "$$DIR/.git/modules/spice-common" ../spice-common.git; fi
>> +       rm -rf meson-dist
>> +       ninja -C build dist
>> +       rpmbuild -bs ./build/*spec --define "_sourcedir $$PWD/build/meson-dist/" --define "_srcrpmdir $(outdir)"
> Too much hacks for my taste here.


I agree but it's still less hacks than what we have now in order to 
create the
nightly repo, hopefully this will become simpler once some copr & meson
issues will be solved (or we'll be able to use rpkg when it will support
submodules)

Snir.


>
>> --
>> 2.21.0
>>
>> _______________________________________________
>> Spice-devel mailing list
>> Spice-devel@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/spice-devel
>
>
> 
> Hi,
> 
> On 8/27/19 10:49 PM, Marc-André Lureau wrote:
> > Hi
> >
> > On Tue, Aug 27, 2019 at 6:27 PM Snir Sheriber <ssheribe@redhat.com> wrote:
> >> This will let copr to generate srpm using the .copr/Makefile script
> > Do we really want to maintain that kind of distro things upstream? Do
> > we need it?
> >
> > What does it bring that gitlab CI doesn't have?
> 
> 
> This srpm is generated with every commit and then a build is triggered
> in copr so that we'll have a repository of latest upstream packages which
> can be easily enabled by simple "dnf copr enable X" command.
> This should eventually replace the nightly builds repo which is currently
> created by an unmaintained vm that runs cron job that creates the srpms
> and push to copr (there is also a git repo for the spec file templates used
> by it).

IMO replacing the current nightly copr should be more a requirement than a
"should". Removing an hidden, not open VM into some small hooks configuration
with open source code that people can change sounds really nice thing.
Having two semi-official development setups to package/use SPICE seems a
bit too much.

> 
> Hence the intention was not to use it as ci, just for creating this repo, if
> i could have easily push the srpm created by gitlab ci to copr i would have
> done it. (can be done but would require to maintain our own runners)
> 

Mumble... could we not use artifacts and a webhook? So CI prepare the SRPM,
save in the artifacts and send a link to the SRPM using a copr webhook
(or something similar, not sure what can be done in copr)

> >
> >> Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
> >> ---
> >>   .copr/Makefile | 29 +++++++++++++++++++++++++++++
> >>   1 file changed, 29 insertions(+)
> >>   create mode 100644 .copr/Makefile
> >>
> >> diff --git a/.copr/Makefile b/.copr/Makefile
> >> new file mode 100644
> >> index 0000000..db297fb
> >> --- /dev/null
> >> +++ b/.copr/Makefile
> >> @@ -0,0 +1,29 @@
> >> +# This Makefile script is invoked by copr to build source rpm
> >> +# See:
> >> https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm
> > When is the build actually triggered? Is copr monitoring the git
> > repository? Is there a hook somewhere in gitlab to trigger the build?
> 
> 
> Yes, there is a gitlab hook that should be enabled (just by adding
> the copr webhook url as gitlab hook)
> 

Do you mean a gitlab (as gitlab.freedesktop.org) hook that trigger copr
build?

> 
> >
> >> +
> >> +PROTOCOL_GIT_REPO = https://gitlab.freedesktop.org/spice/spice-protocol
> >> +BUILD = meson gcc xz git rpm-build
> >> +
> >> +srpm:
> >> +       dnf install -y $(BUILD)
> >> +
> >> +       # get upstream spice protocol
> >> +       git clone $(PROTOCOL_GIT_REPO)
> >> +       cd spice-protocol && meson -Dprefix=/usr/ build && ninja -C build
> >> install
> >> +       rm -rf spice-protocol
> >> +
> >> +       # get other dependencies for project excluding spice-protocol
> >> +       dnf install -y `sed '/^BuildRequires:/!d; s/.*://;
> >> s/\bspice-protocol\b//; s/>.*//' *.spec.in`
> >> +
> >> +       # do not use commit id for version
> >> +       git fetch --tags
> >> +       git describe --abbrev=0 | sed 's/v//' > .tarball-version
> >> +       # create source rpm
> >> +       meson --buildtype=release build
> >> +       # Meson does not update submodules recursively
> >> +       git submodule update --init --recursive
> >> +       # this fix an issue with Meson dist
> >> +       if ! test -r ../spice-common.git; then DIR=`basename "$$PWD"`; ln
> >> -s "$$DIR/.git/modules/spice-common" ../spice-common.git; fi
> >> +       rm -rf meson-dist
> >> +       ninja -C build dist
> >> +       rpmbuild -bs ./build/*spec --define "_sourcedir
> >> $$PWD/build/meson-dist/" --define "_srcrpmdir $(outdir)"
> > Too much hacks for my taste here.
> 
> 
> I agree but it's still less hacks than what we have now in order to
> create the
> nightly repo, hopefully this will become simpler once some copr & meson
> issues will be solved (or we'll be able to use rpkg when it will support
> submodules)
> 
> Snir.
> 

Frediano
Hi,

On 8/28/19 1:36 PM, Frediano Ziglio wrote:
>> Hi,
>>
>> On 8/27/19 10:49 PM, Marc-André Lureau wrote:
>>> Hi
>>>
>>> On Tue, Aug 27, 2019 at 6:27 PM Snir Sheriber <ssheribe@redhat.com> wrote:
>>>> This will let copr to generate srpm using the .copr/Makefile script
>>> Do we really want to maintain that kind of distro things upstream? Do
>>> we need it?
>>>
>>> What does it bring that gitlab CI doesn't have?
>>
>> This srpm is generated with every commit and then a build is triggered
>> in copr so that we'll have a repository of latest upstream packages which
>> can be easily enabled by simple "dnf copr enable X" command.
>> This should eventually replace the nightly builds repo which is currently
>> created by an unmaintained vm that runs cron job that creates the srpms
>> and push to copr (there is also a git repo for the spec file templates used
>> by it).
> IMO replacing the current nightly copr should be more a requirement than a
> "should". Removing an hidden, not open VM into some small hooks configuration
> with open source code that people can change sounds really nice thing.
> Having two semi-official development setups to package/use SPICE seems a
> bit too much.
>
>> Hence the intention was not to use it as ci, just for creating this repo, if
>> i could have easily push the srpm created by gitlab ci to copr i would have
>> done it. (can be done but would require to maintain our own runners)
>>
> Mumble... could we not use artifacts and a webhook? So CI prepare the SRPM,
> save in the artifacts and send a link to the SRPM using a copr webhook
> (or something similar, not sure what can be done in copr)


AFAIK you cannot pass a link to copr.

BUT if it's a known address we may be able to do one of the following:

1. Create the SRPM in gitlab and use a small script to just to download 
it to
     copr's srpm_output dir.

2. Pass only the tarball as artifact and have a small script to download 
it and
     create the SRPM in the srpm_output dir of copr

Then copr will take the srpm from this dir and execute a build

This way we even can drop the Makefile since it's also possible to have the
script directly in copr (without root privileges)

I'll test those options, thanks!


>
>>>> Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
>>>> ---
>>>>    .copr/Makefile | 29 +++++++++++++++++++++++++++++
>>>>    1 file changed, 29 insertions(+)
>>>>    create mode 100644 .copr/Makefile
>>>>
>>>> diff --git a/.copr/Makefile b/.copr/Makefile
>>>> new file mode 100644
>>>> index 0000000..db297fb
>>>> --- /dev/null
>>>> +++ b/.copr/Makefile
>>>> @@ -0,0 +1,29 @@
>>>> +# This Makefile script is invoked by copr to build source rpm
>>>> +# See:
>>>> https://docs.pagure.org/copr.copr/user_documentation.html#make-srpm
>>> When is the build actually triggered? Is copr monitoring the git
>>> repository? Is there a hook somewhere in gitlab to trigger the build?
>>
>> Yes, there is a gitlab hook that should be enabled (just by adding
>> the copr webhook url as gitlab hook)
>>
> Do you mean a gitlab (as gitlab.freedesktop.org) hook that trigger copr
> build?


Yes

Snir.


>>>> +
>>>> +PROTOCOL_GIT_REPO = https://gitlab.freedesktop.org/spice/spice-protocol
>>>> +BUILD = meson gcc xz git rpm-build
>>>> +
>>>> +srpm:
>>>> +       dnf install -y $(BUILD)
>>>> +
>>>> +       # get upstream spice protocol
>>>> +       git clone $(PROTOCOL_GIT_REPO)
>>>> +       cd spice-protocol && meson -Dprefix=/usr/ build && ninja -C build
>>>> install
>>>> +       rm -rf spice-protocol
>>>> +
>>>> +       # get other dependencies for project excluding spice-protocol
>>>> +       dnf install -y `sed '/^BuildRequires:/!d; s/.*://;
>>>> s/\bspice-protocol\b//; s/>.*//' *.spec.in`
>>>> +
>>>> +       # do not use commit id for version
>>>> +       git fetch --tags
>>>> +       git describe --abbrev=0 | sed 's/v//' > .tarball-version
>>>> +       # create source rpm
>>>> +       meson --buildtype=release build
>>>> +       # Meson does not update submodules recursively
>>>> +       git submodule update --init --recursive
>>>> +       # this fix an issue with Meson dist
>>>> +       if ! test -r ../spice-common.git; then DIR=`basename "$$PWD"`; ln
>>>> -s "$$DIR/.git/modules/spice-common" ../spice-common.git; fi
>>>> +       rm -rf meson-dist
>>>> +       ninja -C build dist
>>>> +       rpmbuild -bs ./build/*spec --define "_sourcedir
>>>> $$PWD/build/meson-dist/" --define "_srcrpmdir $(outdir)"
>>> Too much hacks for my taste here.
>>
>> I agree but it's still less hacks than what we have now in order to
>> create the
>> nightly repo, hopefully this will become simpler once some copr & meson
>> issues will be solved (or we'll be able to use rpkg when it will support
>> submodules)
>>
>> Snir.
>>
> Frediano