From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1AFF9C433EF for ; Fri, 17 Dec 2021 13:56:18 +0000 (UTC) Received: from localhost ([::1]:56266 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1myDib-0001al-4n for qemu-devel@archiver.kernel.org; Fri, 17 Dec 2021 08:56:17 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53938) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myDYo-0005S7-CQ for qemu-devel@nongnu.org; Fri, 17 Dec 2021 08:46:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:38733) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myDYm-00089G-Jl for qemu-devel@nongnu.org; Fri, 17 Dec 2021 08:46:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1639748768; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=T2ftCLmTMpd2r2fk1Wt5K2/OoyY4a3QBDuQA8gpF9fQ=; b=Haj2IzkOuDh0DMKI9F1famKogvk841NSgypWozsVnvG136Qe1m9Z1JB8MbiYyjz6G64OLA /9zOzXHY3/hB+/d47qQEdp2bhpFGNoedUmsfvuaMR9j2D3yGrH4dMdIt/1144XXuQMxRHT sRiLp2LciMVOLsijB2KEKj0OD9IgdGo= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-517-jQ6zo_E7P-Gl4R6B0NqnXw-1; Fri, 17 Dec 2021 08:46:05 -0500 X-MC-Unique: jQ6zo_E7P-Gl4R6B0NqnXw-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D0A728DD876; Fri, 17 Dec 2021 13:46:04 +0000 (UTC) Received: from redhat.com (unknown [10.22.32.60]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DCBFE610A7; Fri, 17 Dec 2021 13:46:01 +0000 (UTC) Date: Fri, 17 Dec 2021 13:45:58 +0000 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= To: John Snow Subject: Re: [RFC qemu.qmp PATCH 17/24] Makefile: add build and publish targets Message-ID: References: <20211215210634.3779791-1-jsnow@redhat.com> <20211215210634.3779791-18-jsnow@redhat.com> MIME-Version: 1.0 In-Reply-To: User-Agent: Mutt/2.1.3 (2021-09-10) X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=170.10.129.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.718, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Cc: Eduardo Habkost , Beraldo Leal , qemu-devel , Wainer dos Santos Moschetta , Gerd Hoffmann , Cleber Rosa Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" On Thu, Dec 16, 2021 at 06:35:23PM -0500, John Snow wrote: > On Thu, Dec 16, 2021 at 5:48 AM Daniel P. Berrangé > wrote: > > > On Wed, Dec 15, 2021 at 04:06:27PM -0500, John Snow wrote: > > > Signed-off-by: John Snow > > > --- > > > Makefile | 32 ++++++++++++++++++++++++++++++++ > > > 1 file changed, 32 insertions(+) > > > > > > diff --git a/Makefile b/Makefile > > > index 97d737a..81bfca8 100644 > > > --- a/Makefile > > > +++ b/Makefile > > > @@ -110,3 +110,35 @@ distclean: clean > > > rm -f .coverage .coverage.* > > > rm -rf htmlcov/ > > > rm -rf test-results/ > > > + > > > +.PHONY: pristine > > > +pristine: > > > + @git diff-files --quiet --ignore-submodules -- || \ > > > + (echo "You have unstaged changes."; exit 1) > > > + @git diff-index --cached --quiet HEAD --ignore-submodules -- || \ > > > + (echo "Your index contains uncommitted changes."; exit 1) > > > + @[ -z "$(shell git ls-files -o)" ] || \ > > > + (echo "You have untracked files: $(shell git ls-files > > -o)"; exit 1) > > > + > > > +dist: setup.cfg setup.py Makefile README.rst > > > + python3 -m build > > > + @touch dist > > > + > > > +.PHONY: pre-publish > > > +pre-publish: pristine dist > > > + @git describe --exact-match 2>/dev/null || \ > > > + (echo -e "\033[0;31mThere is no annotated tag for this > > commit.\033[0m"; exit 1) > > > + python3 -m twine check --strict dist/* > > > + git push -v --atomic --follow-tags --dry-run > > > + > > > +.PHONY: publish > > > +publish: pre-publish > > > + # Set the username via TWINE_USERNAME. > > > + # Set the password via TWINE_PASSWORD. > > > + # Set the pkg repository via TWINE_REPOSITORY. > > > + python3 -m twine upload --verbose dist/* > > > + git push -v --atomic --follow-tags > > > + > > > +.PHONY: publish-test > > > +publish-test: pre-publish > > > + python3 -m twine upload --verbose -r testpypi dist/* > > > > It doesn't feel very pythonic to have a makefile in the project. > > > > If we want some helpers for publishing releases, I would have > > expected to see a python script eg scripts/publish.py > > > > > Eh, Python folks use Makefiles too. I've been using these little Makefile > targets for hobby things for a while and I had them laying around and ready > to go. I have no strong need to "upgrade" to python scripts for these right > now, unless there's some extra features you want to see. Using make means you have to worry about portability across different impls of make and different impls of shell. Using python means your python project is portable to anywhere that python runs. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|