On (29/08/16 17:44), Lukas Slebodnik wrote: >On (29/08/16 14:42), Fabiano Fidêncio wrote: >>On Mon, Aug 29, 2016 at 2:30 PM, Lukas Slebodnik <[email protected]> wrote: >>> On (29/08/16 14:22), Fabiano Fidêncio wrote: >>>>On Mon, Aug 29, 2016 at 1:39 PM, Lukas Slebodnik <[email protected]> >>>>wrote: >>>>> On (17/08/16 22:14), Fabiano Fidêncio wrote: >>>>>>Howdy! >>>>>> >>>>>>I've been using a lot the "make prerelease-rpms" command and I've >>>>>>found out the fact that all the resulting rpms of 2 (or more builds) >>>>>>are put in the same buildroot/RPMS/{x86_64,noarch}/ directory a bit >>>>>>unfortunate. It's not exactly handy to find out which are the packages >>>>>>I want to copy to my guest and deleting the buildroot before doing the >>>>>>build is also not so cool, as I may want to check stuff from two >>>>>>different builds. >>>>>> >>>>>>With this problem in mind, I came with this patchset that generates >>>>>>the rpms/srpm in a specific folder for each build, which makes my life >>>>>>way easier when I want to copy those rpms to my guest and do my tests >>>>>>there. >>>>>> >>>>>>Please, see the attached patches. >>>>>> >>>>>>Best Regards, >>>>>>-- >>>>>>Fabiano Fidêncio >>>>> >>>>> >From e5f87e198a6a42f003ed9ce78f91db8cab070539 Mon Sep 17 00:00:00 2001 >>>>>>From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <[email protected]> >>>>>>Date: Wed, 17 Aug 2016 21:08:23 +0200 >>>>>>Subject: [PATCH 1/3] BUILD: Clean up prerelease targets >>>>>>MIME-Version: 1.0 >>>>>>Content-Type: text/plain; charset=UTF-8 >>>>>>Content-Transfer-Encoding: 8bit >>>>>> >>>>>>As I'm already going to do some modifications in the prerelease targets, >>>>>>let's clean them up a little bit before the modifications by introducing >>>>>>a few variables and (trying to) not exceed 80 characters per line (which >>>>>>ended up not being possible for all lines, but the overall result is >>>>>>still okay). >>>>>> >>>>>>Signed-off-by: Fabiano Fidêncio <[email protected]> >>>>>>--- >>>>>> Makefile.am | 13 +++++++++++-- >>>>>> 1 file changed, 11 insertions(+), 2 deletions(-) >>>>>> >>>>>>diff --git a/Makefile.am b/Makefile.am >>>>>>index 8b9240f..7e14d5c 100644 >>>>>>--- a/Makefile.am >>>>>>+++ b/Makefile.am >>>>>>@@ -4189,6 +4189,15 @@ rpmroot: >>>>>> $(MKDIR_P) $(RPMBUILD)/SPECS >>>>>> $(MKDIR_P) $(RPMBUILD)/SRPMS >>>>>> >>>>>>+# pre-release related vars >>>>>>+ >>>>>>+PR_VERSION_DATE := $(shell date +%Y%m%d.%H%M) >>>>>>+PR_VERSION_COMMIT_HASH := $(shell git log -1 --pretty=format:%h) >>>>>>+PR_VERSION_NUMBER = $(PR_VERSION_DATE).git$(PR_VERSION_COMMIT_HASH) >>>>>>+PR_VERSION_REGEX = m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.*\]) >>>>>>+PR_VERSION_REPL = m4_define(\[PRERELEASE_VERSION_NUMBER\], >>>>>>\[.$(PR_VERSION_NUMBER)\]) >>>>>>+PR_SED = sed -e "s/$(PR_VERSION_REGEX)/$(PR_VERSION_REPL)/" >>>>>>+ >>>>>> rpmbrprep: dist-gzip rpmroot >>>>>> if GIT_CHECKOUT >>>>>> # When we're building RPMs from a git checkout, >>>>>>@@ -4206,7 +4215,7 @@ rpms: rpmbrprep >>>>>> if GIT_CHECKOUT >>>>>> prerelease-rpms: >>>>>> cp $(srcdir)/version.m4 $(srcdir)/version.m4.orig >>>>>>- sed -e "s/m4_define(\[PRERELEASE_VERSION_NUMBER\], >>>>>>\[.*\])/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.`date >>>>>>+%Y%m%d.%H%M`.git`git log -1 --pretty=format:%h`\])/" < >>>>>>$(srcdir)/version.m4.orig > $(srcdir)/version.m4 >>>>>>+ $(PR_SED) < $(srcdir)/version.m4.orig > $(srcdir)/version.m4 >>>>>> $(MAKE) rpms >>>>>> mv $(srcdir)/version.m4.orig $(srcdir)/version.m4 >>>>>> endif >>>>>>@@ -4221,7 +4230,7 @@ srpm: rpmbrprep >>>>>> if GIT_CHECKOUT >>>>>> prerelease-srpm: >>>>>> cp $(srcdir)/version.m4 $(srcdir)/version.m4.orig >>>>>>- sed -e "s/m4_define(\[PRERELEASE_VERSION_NUMBER\], >>>>>>\[.*\])/m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.`date >>>>>>+%Y%m%d.%H%M`.git`git log -1 --pretty=format:%h`\])/" < >>>>>>$(srcdir)/version.m4.orig > $(srcdir)/version.m4 >>>>>>+ $(PR_SED) < $(srcdir)/version.m4.orig > $(srcdir)/version.m4 >>>>>> $(MAKE) srpm >>>>>> mv $(srcdir)/version.m4.orig $(srcdir)/version.m4 >>>>>> endif >>>>>>-- >>>>>>2.7.4 >>>>>> >>>>> I would prefer to have sed directly rather then PR_SED. >>>>> - $(PR_SED) < $(srcdir)/version.m4.orig > $(srcdir)/version.m4 >>>>> + sed -e "s/$(PR_VERSION_REGEX)/$(PR_VERSION_REPL)/" \ >>>>> + < $(srcdir)/version.m4.orig > $(srcdir)/version.m4 >>>>> >>>>> IMHO, it is more obvious what code want to do. >>>>> >>>>> >From 22d8574e66273f60a519fb0e230852c58c39e7f8 Mon Sep 17 00:00:00 2001 >>>>>>From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <[email protected]> >>>>>>Date: Wed, 17 Aug 2016 21:29:56 +0200 >>>>>>Subject: [PATCH 2/3] BUILD: Improve prerelease targets >>>>>>MIME-Version: 1.0 >>>>>>Content-Type: text/plain; charset=UTF-8 >>>>>>Content-Transfer-Encoding: 8bit >>>>>> >>>>>>By generating the rpms/srpm resulting of the prerelease targets on its >>>>>>own specific directory, $(BUILDROOT)/{RPMS,SRPM}/$(PR_VERSION_NUMBER), >>>>>>makes easier for the person who is building these packages to just copy >>>>>>the whole content of that directory instead of having to search/select >>>>>>whichever are the files generated by the last or penultimate build. >>>>>> >>>>>>A big note here is a must: the format of the rpms/srpm names did not >>>>>>change, what changes is just the final directory they can be found in. >>>>>> >>>>>>Signed-off-by: Fabiano Fidêncio <[email protected]> >>>>>>--- >>>>>> Makefile.am | 11 ++++++++++- >>>>>> 1 file changed, 10 insertions(+), 1 deletion(-) >>>>>> >>>>>>diff --git a/Makefile.am b/Makefile.am >>>>>>index 7e14d5c..0902d83 100644 >>>>>>--- a/Makefile.am >>>>>>+++ b/Makefile.am >>>>>>@@ -4197,6 +4197,8 @@ PR_VERSION_NUMBER = >>>>>>$(PR_VERSION_DATE).git$(PR_VERSION_COMMIT_HASH) >>>>>> PR_VERSION_REGEX = m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.*\]) >>>>>> PR_VERSION_REPL = m4_define(\[PRERELEASE_VERSION_NUMBER\], >>>>>> \[.$(PR_VERSION_NUMBER)\]) >>>>>> PR_SED = sed -e "s/$(PR_VERSION_REGEX)/$(PR_VERSION_REPL)/" >>>>>>+PR_RPMS_EXTRA_ARGS = >>>>>>+PR_SRPMS_EXTRA_ARGS = >>>>>> >>>>>> rpmbrprep: dist-gzip rpmroot >>>>>> if GIT_CHECKOUT >>>>>>@@ -4210,9 +4212,15 @@ endif >>>>>> >>>>>> rpms: rpmbrprep >>>>>> cd $(RPMBUILD); \ >>>>>>- rpmbuild --define "_topdir $(RPMBUILD)" -ba SPECS/sssd.spec >>>>>>+ rpmbuild --define "_topdir $(RPMBUILD)" \ >>>>>>+ $(PR_RPMS_EXTRA_ARGS) \ >>>>>>+ $(PR_SRPMS_EXTRA_ARGS) \ >>>>>>+ -ba SPECS/sssd.spec >>>>>> >>>>>> if GIT_CHECKOUT >>>>>>+PR_RPMS_EXTRA_ARGS += --define "_rpmdir >>>>>>$(RPMBUILD)/RPMS/$(PR_VERSION_NUMBER)" >>>>>>+PR_SRPMS_EXTRA_ARGS += --define "_srcrpmdir >>>>>>$(RPMBUILD)/SRPMS/$(PR_VERSION_NUMBER)" >>>>>>+ >>>>> According to the patch I assume you want to store >>>>> in rpms in subdirectory "$(PR_VERSION_NUMBER)" >>>>> only for prerelease-* targets. >>>>> >>>>> However it's stored there also for >>>>> simple targets as well >>>>> e.g >>>>> >>>>> make srpm >>>>> //snip >>>>> >>>>> rpmbuild --define "_topdir ~/sssd/rpmbuild" \ >>>>> --define "_srcrpmdir >>>>> ~/sssd/rpmbuild/SRPMS/20160829.1328.gitb6a95cc" \ >>>>> -bs SPECS/sssd.spec >>>>> Wrote: >>>>> ~/sssd/rpmbuild/SRPMS/20160829.1328.gitb6a95cc/sssd-1.14.2-0.fc25.src.rpm >>>>>> prerelease-rpms: >>>>>> cp $(srcdir)/version.m4 $(srcdir)/version.m4.orig >>>>>> $(PR_SED) < $(srcdir)/version.m4.orig > $(srcdir)/version.m4 >>>>>>@@ -4225,6 +4233,7 @@ endif >>>>>> srpm: rpmbrprep >>>>>> cd $(RPMBUILD); \ >>>>>> rpmbuild --define "_topdir $(RPMBUILD)" \ >>>>>>+ $(PR_SRPMS_EXTRA_ARGS) \ >>>>>> -bs SPECS/sssd.spec >>>>>> >>>>>> if GIT_CHECKOUT >>>>>>-- >>>>>>2.7.4 >>>>>> >>>>> >>>>> >From 383b2ebc1d442a3668ffce48c945b4038dd2b4a7 Mon Sep 17 00:00:00 2001 >>>>>>From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <[email protected]> >>>>>>Date: Wed, 17 Aug 2016 21:53:44 +0200 >>>>>>Subject: [PATCH 3/3] BUILD: Consider seconds when building PR_VERSION_DATE >>>>>>MIME-Version: 1.0 >>>>>>Content-Type: text/plain; charset=UTF-8 >>>>>>Content-Transfer-Encoding: 8bit >>>>>> >>>>>>As the "srpm" target may be fast enough to be run twice in the same >>>>>>minute, let's also add the seconds to the PR_VERSION_DATE thus avoiding >>>>>>to override the penultime first build. >>>>>> >>>>>>Upgrading packages from a prerelease target that didn't takes the >>>>>>seconds into account to a prerelease target that does is not a problem >>>>>>and it has been tested beforehand. >>>>>> >>>>>>Signed-off-by: Fabiano Fidêncio <[email protected]> >>>>>>--- >>>>>> Makefile.am | 2 +- >>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>>> >>>>>>diff --git a/Makefile.am b/Makefile.am >>>>>>index 0902d83..30d874e 100644 >>>>>>--- a/Makefile.am >>>>>>+++ b/Makefile.am >>>>>>@@ -4191,7 +4191,7 @@ rpmroot: >>>>>> >>>>>> # pre-release related vars >>>>>> >>>>>>-PR_VERSION_DATE := $(shell date +%Y%m%d.%H%M) >>>>>>+PR_VERSION_DATE := $(shell date +%Y%m%d.%H%M%S) >>>>>> PR_VERSION_COMMIT_HASH := $(shell git log -1 --pretty=format:%h) >>>>>> PR_VERSION_NUMBER = $(PR_VERSION_DATE).git$(PR_VERSION_COMMIT_HASH) >>>>>> PR_VERSION_REGEX = m4_define(\[PRERELEASE_VERSION_NUMBER\], \[.*\]) >>>>> >>>>> -1 >>>>> >>>>> fedora packaging guidelines recommend just a YYYYMMDD >>>>> https://fedoraproject.org/w/index.php?title=Packaging:Versioning >>>>> >>>>> I'm file with "%H%M" because it's sometimes simpler to >>>>> compare 4 numbers rather than 7 characters hash. >>>>> Comparing 6 numers for date would be almost the && same >>>>> as comparing 7 characters for hash. So "%H%M%S" would >>>>> be redundant. >>>>> >>>>> BTW even though there can be 2 prerelease rpms done >>>>> within one minute than git hash should be different. >>>>> Otherwise there is something weird in developers workflow :-) >>>>> >>>>> LS >>>> >>>>Being completely honest, at this point I feel like we can drop this >>>>whole series. >>>>I just got used to "rm -rf rpmbuild && make prerelease-rpms" >>>> >>>>Lukaš, is there something that is of your interest in this series? If >>>>yes, I'll re-work and re-send the patches, otherwise we can just leave >>>>everything as it is nowadays. >>>> >>> >>> I think we can merge the 1st patch after replacing sed :-) >>> The current version with 214 columns in a line is not very nice >> >>Here we go then. >>See the attached patch. >> >Thank you. > >>From 35a567ced9971f3c2e4fe75311262e4b92436f18 Mon Sep 17 00:00:00 2001 >>From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <[email protected]> >>Date: Wed, 17 Aug 2016 21:08:23 +0200 >>Subject: [PATCH v2] BUILD: Clean up prerelease targets >>MIME-Version: 1.0 >>Content-Type: text/plain; charset=UTF-8 >>Content-Transfer-Encoding: 8bit >> >>Clean up the pre-release targets in order to avoid lines exceeding 80 >>characters. >> >>Signed-off-by: Fabiano Fidêncio <[email protected]> >>--- >ACK > >http://sssd-ci.duckdns.org/logs/job/52/64/summary.html > master: * 01d970a8afa6ffed82b3e8dda96e08118222e16e
LS _______________________________________________ sssd-devel mailing list [email protected] https://lists.fedorahosted.org/admin/lists/[email protected]
