public inbox for bzip2-devel@sourceware.org
 help / color / mirror / Atom feed
From: Stephen Gregoratto <dev@sgregoratto.me>
To: bzip2-devel@sourceware.org
Cc: Stephen Gregoratto <dev@sgregoratto.me>
Subject: [PATCH 1/2] Makefile: modernize install rule
Date: Tue, 13 Oct 2020 21:20:36 +1100	[thread overview]
Message-ID: <20201013102037.692071-1-dev@sgregoratto.me> (raw)

- The global value DESTDIR is used to prepend a path for each file
  installed. This is used by every package manager out there. See [1].
- The commands have been reordered to follow a pattern of mkdir, copy,
  chmod, link.

[1] https://www.gnu.org/prep/standards/html_node/DESTDIR.html
---
Note that while I've retained the same pattern, I much prefer using the
install(1) utility to do this. It's available on any modern *NIXen out
there, with the only snag being that some don't have a certain flag
"-D", but this can be easily worked around.

Thus the improved version would along the lines of:

  install -Dm755 bzip2 $(DESTDIR)$(PREFIX)/usr/bin/bzip2
  ...
  install -Dm644 bzip2.1 $(DESTDIR)$(PREFIX)/usr/share/man/man1/bzip2.1

 Makefile | 74 ++++++++++++++++++++++++++++----------------------------
 1 file changed, 37 insertions(+), 37 deletions(-)

diff --git a/Makefile b/Makefile
index b0fef95..d98e09b 100644
--- a/Makefile
+++ b/Makefile
@@ -70,43 +70,43 @@ test: bzip2
 	@cat words3
 
 install: bzip2 bzip2recover
-	if ( test ! -d $(PREFIX)/bin ) ; then mkdir -p $(PREFIX)/bin ; fi
-	if ( test ! -d $(PREFIX)/lib ) ; then mkdir -p $(PREFIX)/lib ; fi
-	if ( test ! -d $(PREFIX)/man ) ; then mkdir -p $(PREFIX)/man ; fi
-	if ( test ! -d $(PREFIX)/man/man1 ) ; then mkdir -p $(PREFIX)/man/man1 ; fi
-	if ( test ! -d $(PREFIX)/include ) ; then mkdir -p $(PREFIX)/include ; fi
-	cp -f bzip2 $(PREFIX)/bin/bzip2
-	cp -f bzip2 $(PREFIX)/bin/bunzip2
-	cp -f bzip2 $(PREFIX)/bin/bzcat
-	cp -f bzip2recover $(PREFIX)/bin/bzip2recover
-	chmod a+x $(PREFIX)/bin/bzip2
-	chmod a+x $(PREFIX)/bin/bunzip2
-	chmod a+x $(PREFIX)/bin/bzcat
-	chmod a+x $(PREFIX)/bin/bzip2recover
-	cp -f bzip2.1 $(PREFIX)/man/man1
-	chmod a+r $(PREFIX)/man/man1/bzip2.1
-	cp -f bzlib.h $(PREFIX)/include
-	chmod a+r $(PREFIX)/include/bzlib.h
-	cp -f libbz2.a $(PREFIX)/lib
-	chmod a+r $(PREFIX)/lib/libbz2.a
-	cp -f bzgrep $(PREFIX)/bin/bzgrep
-	ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzegrep
-	ln -s -f $(PREFIX)/bin/bzgrep $(PREFIX)/bin/bzfgrep
-	chmod a+x $(PREFIX)/bin/bzgrep
-	cp -f bzmore $(PREFIX)/bin/bzmore
-	ln -s -f $(PREFIX)/bin/bzmore $(PREFIX)/bin/bzless
-	chmod a+x $(PREFIX)/bin/bzmore
-	cp -f bzdiff $(PREFIX)/bin/bzdiff
-	ln -s -f $(PREFIX)/bin/bzdiff $(PREFIX)/bin/bzcmp
-	chmod a+x $(PREFIX)/bin/bzdiff
-	cp -f bzgrep.1 bzmore.1 bzdiff.1 $(PREFIX)/man/man1
-	chmod a+r $(PREFIX)/man/man1/bzgrep.1
-	chmod a+r $(PREFIX)/man/man1/bzmore.1
-	chmod a+r $(PREFIX)/man/man1/bzdiff.1
-	echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzegrep.1
-	echo ".so man1/bzgrep.1" > $(PREFIX)/man/man1/bzfgrep.1
-	echo ".so man1/bzmore.1" > $(PREFIX)/man/man1/bzless.1
-	echo ".so man1/bzdiff.1" > $(PREFIX)/man/man1/bzcmp.1
+	mkdir -p $(DESTDIR)$(PREFIX)/bin
+	mkdir -p $(DESTDIR)$(PREFIX)/lib
+	mkdir -p $(DESTDIR)$(PREFIX)/man/man1
+	mkdir -p $(DESTDIR)$(PREFIX)/include
+	cp -f bzip2 $(DESTDIR)$(PREFIX)/bin/bzip2
+	cp -f bzip2 $(DESTDIR)$(PREFIX)/bin/bunzip2
+	cp -f bzip2 $(DESTDIR)$(PREFIX)/bin/bzcat
+	cp -f bzip2recover $(DESTDIR)$(PREFIX)/bin/bzip2recover
+	cp -f bzgrep $(DESTDIR)$(PREFIX)/bin/bzgrep
+	cp -f bzmore $(DESTDIR)$(PREFIX)/bin/bzmore
+	cp -f bzdiff $(DESTDIR)$(PREFIX)/bin/bzdiff
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzip2
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bunzip2
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzcat
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzip2recover
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzgrep
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzmore
+	chmod a+x $(DESTDIR)$(PREFIX)/bin/bzdiff
+	ln -sf $(PREFIX)/bin/bzgrep $(DESTDIR)$(PREFIX)/bin/bzegrep
+	ln -sf $(PREFIX)/bin/bzgrep $(DESTDIR)$(PREFIX)/bin/bzfgrep
+	ln -sf $(PREFIX)/bin/bzmore $(DESTDIR)$(PREFIX)/bin/bzless
+	ln -sf $(PREFIX)/bin/bzdiff $(DESTDIR)$(PREFIX)/bin/bzcmp
+	cp -f bzlib.h $(DESTDIR)$(PREFIX)/include
+	cp -f libbz2.a $(DESTDIR)$(PREFIX)/lib
+	chmod a+r $(DESTDIR)$(PREFIX)/include/bzlib.h
+	chmod a+r $(DESTDIR)$(PREFIX)/lib/libbz2.a
+	cp -f bzip2.1 $(DESTDIR)$(PREFIX)/man/man1
+	cp -f bzgrep.1 bzmore.1 bzdiff.1 $(DESTDIR)$(PREFIX)/man/man1
+	chmod a+r $(DESTDIR)$(PREFIX)/man/man1/bzip2.1
+	chmod a+r $(DESTDIR)$(PREFIX)/man/man1/bzgrep.1
+	chmod a+r $(DESTDIR)$(PREFIX)/man/man1/bzmore.1
+	chmod a+r $(DESTDIR)$(PREFIX)/man/man1/bzdiff.1
+	umask a+r
+	echo ".so man1/bzgrep.1" > $(DESTDIR)$(PREFIX)/man/man1/bzegrep.1
+	echo ".so man1/bzgrep.1" > $(DESTDIR)$(PREFIX)/man/man1/bzfgrep.1
+	echo ".so man1/bzmore.1" > $(DESTDIR)$(PREFIX)/man/man1/bzless.1
+	echo ".so man1/bzdiff.1" > $(DESTDIR)$(PREFIX)/man/man1/bzcmp.1
 
 clean: 
 	rm -f *.o libbz2.a bzip2 bzip2recover \
-- 
2.28.0


             reply	other threads:[~2020-10-13 10:20 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-13 10:20 Stephen Gregoratto [this message]
2020-10-13 10:20 ` [PATCH 2/2] words3: Add note about DESTDIR Stephen Gregoratto

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=20201013102037.692071-1-dev@sgregoratto.me \
    --to=dev@sgregoratto.me \
    --cc=bzip2-devel@sourceware.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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).