Difference between revisions of "Make file tutorial"
(→Script) |
|||
Line 277: | Line 277: | ||
</source> | </source> | ||
+ | |||
+ | = Generated Makefile = | ||
+ | |||
+ | <source lang=css> | ||
+ | .DELETE_ON_ERROR: | ||
+ | |||
+ | all: /net/fantasia/home/atks/makefile_tutorial/1.OK /net/fantasia/home/atks/makefile_tutorial/2.OK /net/fantasia/home/atks/makefile_tutorial/3.OK /net/fantasia/home/atks/makefile_tutorial/4.OK /net/fantasia/home/atks/makefile_tutorial/5.OK /net/fantasia/home/atks/makefile_tutorial/6.OK /net/fantasia/home/atks/makefile_tutorial/7.OK /net/fantasia/home/atks/makefile_tutorial/8.OK /net/fantasia/home/atks/makefile_tutorial/9.OK /net/fantasia/home/atks/makefile_tutorial/10.OK /net/fantasia/home/atks/makefile_tutorial/11.OK /net/fantasia/home/atks/makefile_tutorial/12.OK /net/fantasia/home/atks/makefile_tutorial/13.OK /net/fantasia/home/atks/makefile_tutorial/14.OK /net/fantasia/home/atks/makefile_tutorial/15.OK /net/fantasia/home/atks/makefile_tutorial/16.OK /net/fantasia/home/atks/makefile_tutorial/17.OK /net/fantasia/home/atks/makefile_tutorial/18.OK /net/fantasia/home/atks/makefile_tutorial/19.OK /net/fantasia/home/atks/makefile_tutorial/20.OK /net/fantasia/home/atks/makefile_tutorial/21.OK /net/fantasia/home/atks/makefile_tutorial/22.OK /net/fantasia/home/atks/makefile_tutorial/23.OK /net/fantasia/home/atks/makefile_tutorial/24.OK /net/fantasia/home/atks/makefile_tutorial/25.OK /net/fantasia/home/atks/makefile_tutorial/26.OK /net/fantasia/home/atks/makefile_tutorial/27.OK /net/fantasia/home/atks/makefile_tutorial/28.OK /net/fantasia/home/atks/makefile_tutorial/29.OK /net/fantasia/home/atks/makefile_tutorial/30.OK /net/fantasia/home/atks/makefile_tutorial/31.OK /net/fantasia/home/atks/makefile_tutorial/32.OK /net/fantasia/home/atks/makefile_tutorial/33.OK /net/fantasia/home/atks/makefile_tutorial/34.OK /net/fantasia/home/atks/makefile_tutorial/35.OK /net/fantasia/home/atks/makefile_tutorial/36.OK /net/fantasia/home/atks/makefile_tutorial/37.OK /net/fantasia/home/atks/makefile_tutorial/38.OK /net/fantasia/home/atks/makefile_tutorial/39.OK /net/fantasia/home/atks/makefile_tutorial/40.OK /net/fantasia/home/atks/makefile_tutorial/41.OK /net/fantasia/home/atks/makefile_tutorial/42.OK /net/fantasia/home/atks/makefile_tutorial/43.OK /net/fantasia/home/atks/makefile_tutorial/44.OK /net/fantasia/home/atks/makefile_tutorial/45.OK /net/fantasia/home/atks/makefile_tutorial/46.OK /net/fantasia/home/atks/makefile_tutorial/47.OK /net/fantasia/home/atks/makefile_tutorial/48.OK /net/fantasia/home/atks/makefile_tutorial/49.OK /net/fantasia/home/atks/makefile_tutorial/50.OK /net/fantasia/home/atks/makefile_tutorial/51.OK /net/fantasia/home/atks/makefile_tutorial/52.OK /net/fantasia/home/atks/makefile_tutorial/53.OK /net/fantasia/home/atks/makefile_tutorial/54.OK /net/fantasia/home/atks/makefile_tutorial/55.OK /net/fantasia/home/atks/makefile_tutorial/56.OK /net/fantasia/home/atks/makefile_tutorial/57.OK /net/fantasia/home/atks/makefile_tutorial/58.OK /net/fantasia/home/atks/makefile_tutorial/59.OK /net/fantasia/home/atks/makefile_tutorial/60.OK /net/fantasia/home/atks/makefile_tutorial/61.OK /net/fantasia/home/atks/makefile_tutorial/62.OK /net/fantasia/home/atks/makefile_tutorial/63.OK /net/fantasia/home/atks/makefile_tutorial/64.OK /net/fantasia/home/atks/makefile_tutorial/65.OK /net/fantasia/home/atks/makefile_tutorial/66.OK /net/fantasia/home/atks/makefile_tutorial/67.OK /net/fantasia/home/atks/makefile_tutorial/68.OK /net/fantasia/home/atks/makefile_tutorial/69.OK /net/fantasia/home/atks/makefile_tutorial/70.OK /net/fantasia/home/atks/makefile_tutorial/71.OK /net/fantasia/home/atks/makefile_tutorial/72.OK /net/fantasia/home/atks/makefile_tutorial/73.OK /net/fantasia/home/atks/makefile_tutorial/74.OK /net/fantasia/home/atks/makefile_tutorial/75.OK /net/fantasia/home/atks/makefile_tutorial/76.OK /net/fantasia/home/atks/makefile_tutorial/77.OK /net/fantasia/home/atks/makefile_tutorial/78.OK /net/fantasia/home/atks/makefile_tutorial/79.OK /net/fantasia/home/atks/makefile_tutorial/80.OK /net/fantasia/home/atks/makefile_tutorial/81.OK /net/fantasia/home/atks/makefile_tutorial/82.OK /net/fantasia/home/atks/makefile_tutorial/83.OK /net/fantasia/home/atks/makefile_tutorial/84.OK /net/fantasia/home/atks/makefile_tutorial/85.OK /net/fantasia/home/atks/makefile_tutorial/86.OK /net/fantasia/home/atks/makefile_tutorial/87.OK /net/fantasia/home/atks/makefile_tutorial/88.OK /net/fantasia/home/atks/makefile_tutorial/89.OK /net/fantasia/home/atks/makefile_tutorial/90.OK /net/fantasia/home/atks/makefile_tutorial/91.OK /net/fantasia/home/atks/makefile_tutorial/92.OK /net/fantasia/home/atks/makefile_tutorial/93.OK /net/fantasia/home/atks/makefile_tutorial/94.OK /net/fantasia/home/atks/makefile_tutorial/95.OK /net/fantasia/home/atks/makefile_tutorial/96.OK /net/fantasia/home/atks/makefile_tutorial/97.OK /net/fantasia/home/atks/makefile_tutorial/98.OK /net/fantasia/home/atks/makefile_tutorial/99.OK /net/fantasia/home/atks/makefile_tutorial/100.OK /net/fantasia/home/atks/makefile_tutorial/all.log.OK /net/fantasia/home/atks/makefile_tutorial/cleaned.OK | ||
+ | |||
+ | /net/fantasia/home/atks/makefile_tutorial/1.OK: | ||
+ | srun echo 1 > /net/fantasia/home/atks/makefile_tutorial/1.log | ||
+ | touch /net/fantasia/home/atks/makefile_tutorial/1.OK | ||
+ | |||
+ | /net/fantasia/home/atks/makefile_tutorial/2.OK: | ||
+ | srun echo 2 > /net/fantasia/home/atks/makefile_tutorial/2.log | ||
+ | touch /net/fantasia/home/atks/makefile_tutorial/2.OK | ||
+ | |||
+ | ... | ||
+ | |||
+ | |||
+ | |||
+ | /net/fantasia/home/atks/makefile_tutorial/100.OK: | ||
+ | srun echo 100 > /net/fantasia/home/atks/makefile_tutorial/100.log | ||
+ | touch /net/fantasia/home/atks/makefile_tutorial/100.OK | ||
+ | |||
+ | /net/fantasia/home/atks/makefile_tutorial/all.log.OK: /net/fantasia/home/atks/makefile_tutorial/1.OK /net/fantasia/home/atks/makefile_tutorial/2.OK /net/fantasia/home/atks/makefile_tutorial/3.OK /net/fantasia/home/atks/makefile_tutorial/4.OK /net/fantasia/home/atks/makefile_tutorial/5.OK /net/fantasia/home/atks/makefile_tutorial/6.OK /net/fantasia/home/atks/makefile_tutorial/7.OK /net/fantasia/home/atks/makefile_tutorial/8.OK /net/fantasia/home/atks/makefile_tutorial/9.OK /net/fantasia/home/atks/makefile_tutorial/10.OK /net/fantasia/home/atks/makefile_tutorial/11.OK /net/fantasia/home/atks/makefile_tutorial/12.OK /net/fantasia/home/atks/makefile_tutorial/13.OK /net/fantasia/home/atks/makefile_tutorial/14.OK /net/fantasia/home/atks/makefile_tutorial/15.OK /net/fantasia/home/atks/makefile_tutorial/16.OK /net/fantasia/home/atks/makefile_tutorial/17.OK /net/fantasia/home/atks/makefile_tutorial/18.OK /net/fantasia/home/atks/makefile_tutorial/19.OK /net/fantasia/home/atks/makefile_tutorial/20.OK /net/fantasia/home/atks/makefile_tutorial/21.OK /net/fantasia/home/atks/makefile_tutorial/22.OK /net/fantasia/home/atks/makefile_tutorial/23.OK /net/fantasia/home/atks/makefile_tutorial/24.OK /net/fantasia/home/atks/makefile_tutorial/25.OK /net/fantasia/home/atks/makefile_tutorial/26.OK /net/fantasia/home/atks/makefile_tutorial/27.OK /net/fantasia/home/atks/makefile_tutorial/28.OK /net/fantasia/home/atks/makefile_tutorial/29.OK /net/fantasia/home/atks/makefile_tutorial/30.OK /net/fantasia/home/atks/makefile_tutorial/31.OK /net/fantasia/home/atks/makefile_tutorial/32.OK /net/fantasia/home/atks/makefile_tutorial/33.OK /net/fantasia/home/atks/makefile_tutorial/34.OK /net/fantasia/home/atks/makefile_tutorial/35.OK /net/fantasia/home/atks/makefile_tutorial/36.OK /net/fantasia/home/atks/makefile_tutorial/37.OK /net/fantasia/home/atks/makefile_tutorial/38.OK /net/fantasia/home/atks/makefile_tutorial/39.OK /net/fantasia/home/atks/makefile_tutorial/40.OK /net/fantasia/home/atks/makefile_tutorial/41.OK /net/fantasia/home/atks/makefile_tutorial/42.OK /net/fantasia/home/atks/makefile_tutorial/43.OK /net/fantasia/home/atks/makefile_tutorial/44.OK /net/fantasia/home/atks/makefile_tutorial/45.OK /net/fantasia/home/atks/makefile_tutorial/46.OK /net/fantasia/home/atks/makefile_tutorial/47.OK /net/fantasia/home/atks/makefile_tutorial/48.OK /net/fantasia/home/atks/makefile_tutorial/49.OK /net/fantasia/home/atks/makefile_tutorial/50.OK /net/fantasia/home/atks/makefile_tutorial/51.OK /net/fantasia/home/atks/makefile_tutorial/52.OK /net/fantasia/home/atks/makefile_tutorial/53.OK /net/fantasia/home/atks/makefile_tutorial/54.OK /net/fantasia/home/atks/makefile_tutorial/55.OK /net/fantasia/home/atks/makefile_tutorial/56.OK /net/fantasia/home/atks/makefile_tutorial/57.OK /net/fantasia/home/atks/makefile_tutorial/58.OK /net/fantasia/home/atks/makefile_tutorial/59.OK /net/fantasia/home/atks/makefile_tutorial/60.OK /net/fantasia/home/atks/makefile_tutorial/61.OK /net/fantasia/home/atks/makefile_tutorial/62.OK /net/fantasia/home/atks/makefile_tutorial/63.OK /net/fantasia/home/atks/makefile_tutorial/64.OK /net/fantasia/home/atks/makefile_tutorial/65.OK /net/fantasia/home/atks/makefile_tutorial/66.OK /net/fantasia/home/atks/makefile_tutorial/67.OK /net/fantasia/home/atks/makefile_tutorial/68.OK /net/fantasia/home/atks/makefile_tutorial/69.OK /net/fantasia/home/atks/makefile_tutorial/70.OK /net/fantasia/home/atks/makefile_tutorial/71.OK /net/fantasia/home/atks/makefile_tutorial/72.OK /net/fantasia/home/atks/makefile_tutorial/73.OK /net/fantasia/home/atks/makefile_tutorial/74.OK /net/fantasia/home/atks/makefile_tutorial/75.OK /net/fantasia/home/atks/makefile_tutorial/76.OK /net/fantasia/home/atks/makefile_tutorial/77.OK /net/fantasia/home/atks/makefile_tutorial/78.OK /net/fantasia/home/atks/makefile_tutorial/79.OK /net/fantasia/home/atks/makefile_tutorial/80.OK /net/fantasia/home/atks/makefile_tutorial/81.OK /net/fantasia/home/atks/makefile_tutorial/82.OK /net/fantasia/home/atks/makefile_tutorial/83.OK /net/fantasia/home/atks/makefile_tutorial/84.OK /net/fantasia/home/atks/makefile_tutorial/85.OK /net/fantasia/home/atks/makefile_tutorial/86.OK /net/fantasia/home/atks/makefile_tutorial/87.OK /net/fantasia/home/atks/makefile_tutorial/88.OK /net/fantasia/home/atks/makefile_tutorial/89.OK /net/fantasia/home/atks/makefile_tutorial/90.OK /net/fantasia/home/atks/makefile_tutorial/91.OK /net/fantasia/home/atks/makefile_tutorial/92.OK /net/fantasia/home/atks/makefile_tutorial/93.OK /net/fantasia/home/atks/makefile_tutorial/94.OK /net/fantasia/home/atks/makefile_tutorial/95.OK /net/fantasia/home/atks/makefile_tutorial/96.OK /net/fantasia/home/atks/makefile_tutorial/97.OK /net/fantasia/home/atks/makefile_tutorial/98.OK /net/fantasia/home/atks/makefile_tutorial/99.OK /net/fantasia/home/atks/makefile_tutorial/100.OK | ||
+ | srun cat /net/fantasia/home/atks/makefile_tutorial/1.log /net/fantasia/home/atks/makefile_tutorial/2.log /net/fantasia/home/atks/makefile_tutorial/3.log /net/fantasia/home/atks/makefile_tutorial/4.log /net/fantasia/home/atks/makefile_tutorial/5.log /net/fantasia/home/atks/makefile_tutorial/6.log /net/fantasia/home/atks/makefile_tutorial/7.log /net/fantasia/home/atks/makefile_tutorial/8.log /net/fantasia/home/atks/makefile_tutorial/9.log /net/fantasia/home/atks/makefile_tutorial/10.log /net/fantasia/home/atks/makefile_tutorial/11.log /net/fantasia/home/atks/makefile_tutorial/12.log /net/fantasia/home/atks/makefile_tutorial/13.log /net/fantasia/home/atks/makefile_tutorial/14.log /net/fantasia/home/atks/makefile_tutorial/15.log /net/fantasia/home/atks/makefile_tutorial/16.log /net/fantasia/home/atks/makefile_tutorial/17.log /net/fantasia/home/atks/makefile_tutorial/18.log /net/fantasia/home/atks/makefile_tutorial/19.log /net/fantasia/home/atks/makefile_tutorial/20.log /net/fantasia/home/atks/makefile_tutorial/21.log /net/fantasia/home/atks/makefile_tutorial/22.log /net/fantasia/home/atks/makefile_tutorial/23.log /net/fantasia/home/atks/makefile_tutorial/24.log /net/fantasia/home/atks/makefile_tutorial/25.log /net/fantasia/home/atks/makefile_tutorial/26.log /net/fantasia/home/atks/makefile_tutorial/27.log /net/fantasia/home/atks/makefile_tutorial/28.log /net/fantasia/home/atks/makefile_tutorial/29.log /net/fantasia/home/atks/makefile_tutorial/30.log /net/fantasia/home/atks/makefile_tutorial/31.log /net/fantasia/home/atks/makefile_tutorial/32.log /net/fantasia/home/atks/makefile_tutorial/33.log /net/fantasia/home/atks/makefile_tutorial/34.log /net/fantasia/home/atks/makefile_tutorial/35.log /net/fantasia/home/atks/makefile_tutorial/36.log /net/fantasia/home/atks/makefile_tutorial/37.log /net/fantasia/home/atks/makefile_tutorial/38.log /net/fantasia/home/atks/makefile_tutorial/39.log /net/fantasia/home/atks/makefile_tutorial/40.log /net/fantasia/home/atks/makefile_tutorial/41.log /net/fantasia/home/atks/makefile_tutorial/42.log /net/fantasia/home/atks/makefile_tutorial/43.log /net/fantasia/home/atks/makefile_tutorial/44.log /net/fantasia/home/atks/makefile_tutorial/45.log /net/fantasia/home/atks/makefile_tutorial/46.log /net/fantasia/home/atks/makefile_tutorial/47.log /net/fantasia/home/atks/makefile_tutorial/48.log /net/fantasia/home/atks/makefile_tutorial/49.log /net/fantasia/home/atks/makefile_tutorial/50.log /net/fantasia/home/atks/makefile_tutorial/51.log /net/fantasia/home/atks/makefile_tutorial/52.log /net/fantasia/home/atks/makefile_tutorial/53.log /net/fantasia/home/atks/makefile_tutorial/54.log /net/fantasia/home/atks/makefile_tutorial/55.log /net/fantasia/home/atks/makefile_tutorial/56.log /net/fantasia/home/atks/makefile_tutorial/57.log /net/fantasia/home/atks/makefile_tutorial/58.log /net/fantasia/home/atks/makefile_tutorial/59.log /net/fantasia/home/atks/makefile_tutorial/60.log /net/fantasia/home/atks/makefile_tutorial/61.log /net/fantasia/home/atks/makefile_tutorial/62.log /net/fantasia/home/atks/makefile_tutorial/63.log /net/fantasia/home/atks/makefile_tutorial/64.log /net/fantasia/home/atks/makefile_tutorial/65.log /net/fantasia/home/atks/makefile_tutorial/66.log /net/fantasia/home/atks/makefile_tutorial/67.log /net/fantasia/home/atks/makefile_tutorial/68.log /net/fantasia/home/atks/makefile_tutorial/69.log /net/fantasia/home/atks/makefile_tutorial/70.log /net/fantasia/home/atks/makefile_tutorial/71.log /net/fantasia/home/atks/makefile_tutorial/72.log /net/fantasia/home/atks/makefile_tutorial/73.log /net/fantasia/home/atks/makefile_tutorial/74.log /net/fantasia/home/atks/makefile_tutorial/75.log /net/fantasia/home/atks/makefile_tutorial/76.log /net/fantasia/home/atks/makefile_tutorial/77.log /net/fantasia/home/atks/makefile_tutorial/78.log /net/fantasia/home/atks/makefile_tutorial/79.log /net/fantasia/home/atks/makefile_tutorial/80.log /net/fantasia/home/atks/makefile_tutorial/81.log /net/fantasia/home/atks/makefile_tutorial/82.log /net/fantasia/home/atks/makefile_tutorial/83.log /net/fantasia/home/atks/makefile_tutorial/84.log /net/fantasia/home/atks/makefile_tutorial/85.log /net/fantasia/home/atks/makefile_tutorial/86.log /net/fantasia/home/atks/makefile_tutorial/87.log /net/fantasia/home/atks/makefile_tutorial/88.log /net/fantasia/home/atks/makefile_tutorial/89.log /net/fantasia/home/atks/makefile_tutorial/90.log /net/fantasia/home/atks/makefile_tutorial/91.log /net/fantasia/home/atks/makefile_tutorial/92.log /net/fantasia/home/atks/makefile_tutorial/93.log /net/fantasia/home/atks/makefile_tutorial/94.log /net/fantasia/home/atks/makefile_tutorial/95.log /net/fantasia/home/atks/makefile_tutorial/96.log /net/fantasia/home/atks/makefile_tutorial/97.log /net/fantasia/home/atks/makefile_tutorial/98.log /net/fantasia/home/atks/makefile_tutorial/99.log /net/fantasia/home/atks/makefile_tutorial/100.log > /net/fantasia/home/atks/makefile_tutorial/all.log | ||
+ | touch /net/fantasia/home/atks/makefile_tutorial/all.log.OK | ||
+ | |||
+ | /net/fantasia/home/atks/makefile_tutorial/cleaned.OK: /net/fantasia/home/atks/makefile_tutorial/all.log.OK | ||
+ | srun rm /net/fantasia/home/atks/makefile_tutorial/1.log /net/fantasia/home/atks/makefile_tutorial/2.log /net/fantasia/home/atks/makefile_tutorial/3.log /net/fantasia/home/atks/makefile_tutorial/4.log /net/fantasia/home/atks/makefile_tutorial/5.log /net/fantasia/home/atks/makefile_tutorial/6.log /net/fantasia/home/atks/makefile_tutorial/7.log /net/fantasia/home/atks/makefile_tutorial/8.log /net/fantasia/home/atks/makefile_tutorial/9.log /net/fantasia/home/atks/makefile_tutorial/10.log /net/fantasia/home/atks/makefile_tutorial/11.log /net/fantasia/home/atks/makefile_tutorial/12.log /net/fantasia/home/atks/makefile_tutorial/13.log /net/fantasia/home/atks/makefile_tutorial/14.log /net/fantasia/home/atks/makefile_tutorial/15.log /net/fantasia/home/atks/makefile_tutorial/16.log /net/fantasia/home/atks/makefile_tutorial/17.log /net/fantasia/home/atks/makefile_tutorial/18.log /net/fantasia/home/atks/makefile_tutorial/19.log /net/fantasia/home/atks/makefile_tutorial/20.log /net/fantasia/home/atks/makefile_tutorial/21.log /net/fantasia/home/atks/makefile_tutorial/22.log /net/fantasia/home/atks/makefile_tutorial/23.log /net/fantasia/home/atks/makefile_tutorial/24.log /net/fantasia/home/atks/makefile_tutorial/25.log /net/fantasia/home/atks/makefile_tutorial/26.log /net/fantasia/home/atks/makefile_tutorial/27.log /net/fantasia/home/atks/makefile_tutorial/28.log /net/fantasia/home/atks/makefile_tutorial/29.log /net/fantasia/home/atks/makefile_tutorial/30.log /net/fantasia/home/atks/makefile_tutorial/31.log /net/fantasia/home/atks/makefile_tutorial/32.log /net/fantasia/home/atks/makefile_tutorial/33.log /net/fantasia/home/atks/makefile_tutorial/34.log /net/fantasia/home/atks/makefile_tutorial/35.log /net/fantasia/home/atks/makefile_tutorial/36.log /net/fantasia/home/atks/makefile_tutorial/37.log /net/fantasia/home/atks/makefile_tutorial/38.log /net/fantasia/home/atks/makefile_tutorial/39.log /net/fantasia/home/atks/makefile_tutorial/40.log /net/fantasia/home/atks/makefile_tutorial/41.log /net/fantasia/home/atks/makefile_tutorial/42.log /net/fantasia/home/atks/makefile_tutorial/43.log /net/fantasia/home/atks/makefile_tutorial/44.log /net/fantasia/home/atks/makefile_tutorial/45.log /net/fantasia/home/atks/makefile_tutorial/46.log /net/fantasia/home/atks/makefile_tutorial/47.log /net/fantasia/home/atks/makefile_tutorial/48.log /net/fantasia/home/atks/makefile_tutorial/49.log /net/fantasia/home/atks/makefile_tutorial/50.log /net/fantasia/home/atks/makefile_tutorial/51.log /net/fantasia/home/atks/makefile_tutorial/52.log /net/fantasia/home/atks/makefile_tutorial/53.log /net/fantasia/home/atks/makefile_tutorial/54.log /net/fantasia/home/atks/makefile_tutorial/55.log /net/fantasia/home/atks/makefile_tutorial/56.log /net/fantasia/home/atks/makefile_tutorial/57.log /net/fantasia/home/atks/makefile_tutorial/58.log /net/fantasia/home/atks/makefile_tutorial/59.log /net/fantasia/home/atks/makefile_tutorial/60.log /net/fantasia/home/atks/makefile_tutorial/61.log /net/fantasia/home/atks/makefile_tutorial/62.log /net/fantasia/home/atks/makefile_tutorial/63.log /net/fantasia/home/atks/makefile_tutorial/64.log /net/fantasia/home/atks/makefile_tutorial/65.log /net/fantasia/home/atks/makefile_tutorial/66.log /net/fantasia/home/atks/makefile_tutorial/67.log /net/fantasia/home/atks/makefile_tutorial/68.log /net/fantasia/home/atks/makefile_tutorial/69.log /net/fantasia/home/atks/makefile_tutorial/70.log /net/fantasia/home/atks/makefile_tutorial/71.log /net/fantasia/home/atks/makefile_tutorial/72.log /net/fantasia/home/atks/makefile_tutorial/73.log /net/fantasia/home/atks/makefile_tutorial/74.log /net/fantasia/home/atks/makefile_tutorial/75.log /net/fantasia/home/atks/makefile_tutorial/76.log /net/fantasia/home/atks/makefile_tutorial/77.log /net/fantasia/home/atks/makefile_tutorial/78.log /net/fantasia/home/atks/makefile_tutorial/79.log /net/fantasia/home/atks/makefile_tutorial/80.log /net/fantasia/home/atks/makefile_tutorial/81.log /net/fantasia/home/atks/makefile_tutorial/82.log /net/fantasia/home/atks/makefile_tutorial/83.log /net/fantasia/home/atks/makefile_tutorial/84.log /net/fantasia/home/atks/makefile_tutorial/85.log /net/fantasia/home/atks/makefile_tutorial/86.log /net/fantasia/home/atks/makefile_tutorial/87.log /net/fantasia/home/atks/makefile_tutorial/88.log /net/fantasia/home/atks/makefile_tutorial/89.log /net/fantasia/home/atks/makefile_tutorial/90.log /net/fantasia/home/atks/makefile_tutorial/91.log /net/fantasia/home/atks/makefile_tutorial/92.log /net/fantasia/home/atks/makefile_tutorial/93.log /net/fantasia/home/atks/makefile_tutorial/94.log /net/fantasia/home/atks/makefile_tutorial/95.log /net/fantasia/home/atks/makefile_tutorial/96.log /net/fantasia/home/atks/makefile_tutorial/97.log /net/fantasia/home/atks/makefile_tutorial/98.log /net/fantasia/home/atks/makefile_tutorial/99.log /net/fantasia/home/atks/makefile_tutorial/100.log | ||
+ | touch /net/fantasia/home/atks/makefile_tutorial/cleaned.OK | ||
+ | |||
+ | clean: | ||
+ | -rm -rf /net/fantasia/home/atks/makefile_tutorial/*.OK /net/fantasia/home/atks/makefile_tutorial/*.log | ||
+ | </source> | ||
= Acknowledgement = | = Acknowledgement = |
Revision as of 10:56, 20 June 2015
Introduction
GNU Make is often thought of as a tool for managing the compilation of large C programs. This is true, but its potential is not limited to this!
At its core, it is a generic pipelining framework that is aware of dependencies and can run steps in parallel.
Statistical genetics analyses (or any big data analyses in general) often requires multiple steps to prepare the data, running computationally expensive analyses, and then collating the data.
Make can instead of simply compiling codes, may also execute the steps in your analyses.
Make allows you to redo part of your analyses and rerun only the parts which are affected by the change.
Using Make potentially save you lots of time and hair pulling especially when your supervisor asks for ALL the analyses again but this time only with rare variants.
Using a script to generate a make file allows you to document the steps required in the analysis too and makes it easier in the future when the analysis is revisited.
Basic Idea
The general format of a make file is as follows:
<target> : <dependency> ... <command 1> <command 2>
The target is usually a small file that is created using "touch <target>". It can be considered as a text and in this case, it is referred via "make <target>" The dependency(ies) are files. The commands are single line commands in linux. The last command is the touch command usually. This allows the creation of a file to signify that the prior commands were executed successfully.
A perl script is written to generate the make file, in this script, you may document the analyses and allow options to customize the variables in your analyses.
Once the make file is generated, you can run it with make using the -j option for parallelization.
If a part of the analyses has to be re performed, simply delete the relevant target file, make will rerun the analyses and redo steps that occur after that particular step.
Some other useful options in Make are -k for running the analyses as far as possible without terminating the entire pipeline and -t for generating all the target files chronologically.
For commands that involves a series of pipes, you can use "set pipefail" in a bash environment to ensure that the an error is returned if any stage of the pipe fails. If this is not done, the return code of the last process in the pipe will be returned and Make will think that this series of commands has completed successfully.
Example
This example does the following:
- generate 100 log files with a number written to it
- concatenate the 100 log files into one file
- delete the 100 log files
The example files may be found in /net/fantasia/home/atks/makefile_tutorial
#generate make file using perl script ./generate_simple_stuff
#generate make file using perl script to launch jobs on slurm ./generate_simple_stuff -l slurm
#generate make file using perl script to launch jobs on slurm #files are stored in <dir> which must be described as an absolute path ./generate_simple_stuff -l slurm -o <dir>
#run make file sequentially make -f simple_stuff.mk
#run make file in parallel to at most 100 jobs make -f simple_stuff.mk -j 100
#clear files from run make -f simple_stuff.mk clean
Script
#!/usr/bin/perl -w
use warnings;
use strict;
use POSIX;
use Getopt::Long;
use File::Path;
use File::Basename;
use Pod::Usage;
=head1 NAME
generate_simple_stuff_makefile
=head1 SYNOPSIS
generate_simple_stuff_makefile [options]
-o output directory : location of all output files
-m output make file
example: ./generate_simple_stuff_makefile.pl
=head1 DESCRIPTION
=cut
#option variables
my $help;
my $verbose;
my $debug;
my $outputDir = getcwd();
my $makeFile = "simple_stuff.mk";
my $launchMethod = "local";
#initialize options
Getopt::Long::Configure ('bundling');
if(!GetOptions ('h'=>\$help, 'v'=>\$verbose, 'd'=>\$debug,
'o:s'=>\$outputDir,
'l:s'=>\$launchMethod,
'm:s'=>\$makeFile)
|| !defined($outputDir)
|| scalar(@ARGV)!=0)
{
if ($help)
{
pod2usage(-verbose => 2);
}
else
{
pod2usage(1);
}
}
if ($launchMethod ne "local" && $launchMethod ne "slurm")
{
print STDERR "Launch method has to be local or slurm\n";
exit(1);
}
##############
#print options
##############
printf("Options\n");
printf("\n");
printf("output directory : %s\n", $outputDir);
printf("launch method : %s\n", $launchMethod);
printf("\n");
my @nodes = ();
for my $i (140..171)
{
push(@nodes, "$i");
}
my $nodes = join(",", @nodes);
#arrays for storing targets, dependencies and commands
my @tgts = ();
my @deps = ();
my @cmds = ();
#temporary variables
my $tgt;
my $dep;
my @cmd;
mkpath($outputDir);
my $inputFiles = "";
my $inputFilesOK = "";
my $inputFile = "";
my $outputFile = "";
######################
#1. Generate 100 files
######################
for my $i (1..100)
{
$inputFiles .= " $outputDir/$i.log";
$inputFilesOK .= " $outputDir/$i.OK";
$tgt = "$outputDir/$i.OK";
$dep = "";
@cmd = ("echo $i > $outputDir/$i.log");
makeJob($launchMethod, $tgt, $dep, @cmd);
}
#########################
#2. Concatenate 100 files
#########################
$outputFile = "$outputDir/all.log";
$tgt = "$outputFile.OK";
$dep = $inputFilesOK;
@cmd = ("cat $inputFiles > $outputFile");
makeJob($launchMethod, $tgt, $dep, @cmd);
###########################
#3. Cleanup temporary files
###########################
$tgt = "$outputDir/cleaned.OK";
$dep = "$outputDir/all.log.OK";
@cmd = ("rm $inputFiles");
makeJob($launchMethod, $tgt, $dep, @cmd);
#*******************
#Write out make file
#*******************
open(MAK,">$makeFile") || die "Cannot open $makeFile\n";
print MAK ".DELETE_ON_ERROR:\n\n";
print MAK "all: @tgts\n\n";
#clean
push(@tgts, "clean");
push(@deps, "");
push(@cmds, "\t-rm -rf $outputDir/*.OK $outputDir/*.log");
for(my $i=0; $i < @tgts; ++$i)
{
print MAK "$tgts[$i]: $deps[$i]\n";
print MAK "$cmds[$i]\n";
}
close MAK;
##########
#functions
##########
#run a job either locally or by slurm
sub makeJob
{
my ($method, $tgt, $dep, @cmd) = @_;
if ($method eq "local")
{
makeLocalStep($tgt, $dep, @cmd);
}
elsif ($method eq "slurm")
{
makeSlurm($tgt, $dep, @cmd);
}
}
#run slurm jobs
sub makeSlurm
{
my ($tgt, $dep, @cmd) = @_;
push(@tgts, $tgt);
push(@deps, $dep);
my $cmd = "";
for my $c (@cmd)
{
$cmd .= "\tsrun " . $c . "\n";
}
$cmd .= "\ttouch $tgt\n";
push(@cmds, $cmd);
}
#run a local job
sub makeLocalStep
{
my ($tgt, $dep, @cmd) = @_;
push(@tgts, $tgt);
push(@deps, $dep);
my $cmd = "";
for my $c (@cmd)
{
$cmd .= "\t" . $c . "\n";
}
$cmd .= "\ttouch $tgt\n";
push(@cmds, $cmd);
}
Generated Makefile
.DELETE_ON_ERROR:
all: /net/fantasia/home/atks/makefile_tutorial/1.OK /net/fantasia/home/atks/makefile_tutorial/2.OK /net/fantasia/home/atks/makefile_tutorial/3.OK /net/fantasia/home/atks/makefile_tutorial/4.OK /net/fantasia/home/atks/makefile_tutorial/5.OK /net/fantasia/home/atks/makefile_tutorial/6.OK /net/fantasia/home/atks/makefile_tutorial/7.OK /net/fantasia/home/atks/makefile_tutorial/8.OK /net/fantasia/home/atks/makefile_tutorial/9.OK /net/fantasia/home/atks/makefile_tutorial/10.OK /net/fantasia/home/atks/makefile_tutorial/11.OK /net/fantasia/home/atks/makefile_tutorial/12.OK /net/fantasia/home/atks/makefile_tutorial/13.OK /net/fantasia/home/atks/makefile_tutorial/14.OK /net/fantasia/home/atks/makefile_tutorial/15.OK /net/fantasia/home/atks/makefile_tutorial/16.OK /net/fantasia/home/atks/makefile_tutorial/17.OK /net/fantasia/home/atks/makefile_tutorial/18.OK /net/fantasia/home/atks/makefile_tutorial/19.OK /net/fantasia/home/atks/makefile_tutorial/20.OK /net/fantasia/home/atks/makefile_tutorial/21.OK /net/fantasia/home/atks/makefile_tutorial/22.OK /net/fantasia/home/atks/makefile_tutorial/23.OK /net/fantasia/home/atks/makefile_tutorial/24.OK /net/fantasia/home/atks/makefile_tutorial/25.OK /net/fantasia/home/atks/makefile_tutorial/26.OK /net/fantasia/home/atks/makefile_tutorial/27.OK /net/fantasia/home/atks/makefile_tutorial/28.OK /net/fantasia/home/atks/makefile_tutorial/29.OK /net/fantasia/home/atks/makefile_tutorial/30.OK /net/fantasia/home/atks/makefile_tutorial/31.OK /net/fantasia/home/atks/makefile_tutorial/32.OK /net/fantasia/home/atks/makefile_tutorial/33.OK /net/fantasia/home/atks/makefile_tutorial/34.OK /net/fantasia/home/atks/makefile_tutorial/35.OK /net/fantasia/home/atks/makefile_tutorial/36.OK /net/fantasia/home/atks/makefile_tutorial/37.OK /net/fantasia/home/atks/makefile_tutorial/38.OK /net/fantasia/home/atks/makefile_tutorial/39.OK /net/fantasia/home/atks/makefile_tutorial/40.OK /net/fantasia/home/atks/makefile_tutorial/41.OK /net/fantasia/home/atks/makefile_tutorial/42.OK /net/fantasia/home/atks/makefile_tutorial/43.OK /net/fantasia/home/atks/makefile_tutorial/44.OK /net/fantasia/home/atks/makefile_tutorial/45.OK /net/fantasia/home/atks/makefile_tutorial/46.OK /net/fantasia/home/atks/makefile_tutorial/47.OK /net/fantasia/home/atks/makefile_tutorial/48.OK /net/fantasia/home/atks/makefile_tutorial/49.OK /net/fantasia/home/atks/makefile_tutorial/50.OK /net/fantasia/home/atks/makefile_tutorial/51.OK /net/fantasia/home/atks/makefile_tutorial/52.OK /net/fantasia/home/atks/makefile_tutorial/53.OK /net/fantasia/home/atks/makefile_tutorial/54.OK /net/fantasia/home/atks/makefile_tutorial/55.OK /net/fantasia/home/atks/makefile_tutorial/56.OK /net/fantasia/home/atks/makefile_tutorial/57.OK /net/fantasia/home/atks/makefile_tutorial/58.OK /net/fantasia/home/atks/makefile_tutorial/59.OK /net/fantasia/home/atks/makefile_tutorial/60.OK /net/fantasia/home/atks/makefile_tutorial/61.OK /net/fantasia/home/atks/makefile_tutorial/62.OK /net/fantasia/home/atks/makefile_tutorial/63.OK /net/fantasia/home/atks/makefile_tutorial/64.OK /net/fantasia/home/atks/makefile_tutorial/65.OK /net/fantasia/home/atks/makefile_tutorial/66.OK /net/fantasia/home/atks/makefile_tutorial/67.OK /net/fantasia/home/atks/makefile_tutorial/68.OK /net/fantasia/home/atks/makefile_tutorial/69.OK /net/fantasia/home/atks/makefile_tutorial/70.OK /net/fantasia/home/atks/makefile_tutorial/71.OK /net/fantasia/home/atks/makefile_tutorial/72.OK /net/fantasia/home/atks/makefile_tutorial/73.OK /net/fantasia/home/atks/makefile_tutorial/74.OK /net/fantasia/home/atks/makefile_tutorial/75.OK /net/fantasia/home/atks/makefile_tutorial/76.OK /net/fantasia/home/atks/makefile_tutorial/77.OK /net/fantasia/home/atks/makefile_tutorial/78.OK /net/fantasia/home/atks/makefile_tutorial/79.OK /net/fantasia/home/atks/makefile_tutorial/80.OK /net/fantasia/home/atks/makefile_tutorial/81.OK /net/fantasia/home/atks/makefile_tutorial/82.OK /net/fantasia/home/atks/makefile_tutorial/83.OK /net/fantasia/home/atks/makefile_tutorial/84.OK /net/fantasia/home/atks/makefile_tutorial/85.OK /net/fantasia/home/atks/makefile_tutorial/86.OK /net/fantasia/home/atks/makefile_tutorial/87.OK /net/fantasia/home/atks/makefile_tutorial/88.OK /net/fantasia/home/atks/makefile_tutorial/89.OK /net/fantasia/home/atks/makefile_tutorial/90.OK /net/fantasia/home/atks/makefile_tutorial/91.OK /net/fantasia/home/atks/makefile_tutorial/92.OK /net/fantasia/home/atks/makefile_tutorial/93.OK /net/fantasia/home/atks/makefile_tutorial/94.OK /net/fantasia/home/atks/makefile_tutorial/95.OK /net/fantasia/home/atks/makefile_tutorial/96.OK /net/fantasia/home/atks/makefile_tutorial/97.OK /net/fantasia/home/atks/makefile_tutorial/98.OK /net/fantasia/home/atks/makefile_tutorial/99.OK /net/fantasia/home/atks/makefile_tutorial/100.OK /net/fantasia/home/atks/makefile_tutorial/all.log.OK /net/fantasia/home/atks/makefile_tutorial/cleaned.OK
/net/fantasia/home/atks/makefile_tutorial/1.OK:
srun echo 1 > /net/fantasia/home/atks/makefile_tutorial/1.log
touch /net/fantasia/home/atks/makefile_tutorial/1.OK
/net/fantasia/home/atks/makefile_tutorial/2.OK:
srun echo 2 > /net/fantasia/home/atks/makefile_tutorial/2.log
touch /net/fantasia/home/atks/makefile_tutorial/2.OK
...
/net/fantasia/home/atks/makefile_tutorial/100.OK:
srun echo 100 > /net/fantasia/home/atks/makefile_tutorial/100.log
touch /net/fantasia/home/atks/makefile_tutorial/100.OK
/net/fantasia/home/atks/makefile_tutorial/all.log.OK: /net/fantasia/home/atks/makefile_tutorial/1.OK /net/fantasia/home/atks/makefile_tutorial/2.OK /net/fantasia/home/atks/makefile_tutorial/3.OK /net/fantasia/home/atks/makefile_tutorial/4.OK /net/fantasia/home/atks/makefile_tutorial/5.OK /net/fantasia/home/atks/makefile_tutorial/6.OK /net/fantasia/home/atks/makefile_tutorial/7.OK /net/fantasia/home/atks/makefile_tutorial/8.OK /net/fantasia/home/atks/makefile_tutorial/9.OK /net/fantasia/home/atks/makefile_tutorial/10.OK /net/fantasia/home/atks/makefile_tutorial/11.OK /net/fantasia/home/atks/makefile_tutorial/12.OK /net/fantasia/home/atks/makefile_tutorial/13.OK /net/fantasia/home/atks/makefile_tutorial/14.OK /net/fantasia/home/atks/makefile_tutorial/15.OK /net/fantasia/home/atks/makefile_tutorial/16.OK /net/fantasia/home/atks/makefile_tutorial/17.OK /net/fantasia/home/atks/makefile_tutorial/18.OK /net/fantasia/home/atks/makefile_tutorial/19.OK /net/fantasia/home/atks/makefile_tutorial/20.OK /net/fantasia/home/atks/makefile_tutorial/21.OK /net/fantasia/home/atks/makefile_tutorial/22.OK /net/fantasia/home/atks/makefile_tutorial/23.OK /net/fantasia/home/atks/makefile_tutorial/24.OK /net/fantasia/home/atks/makefile_tutorial/25.OK /net/fantasia/home/atks/makefile_tutorial/26.OK /net/fantasia/home/atks/makefile_tutorial/27.OK /net/fantasia/home/atks/makefile_tutorial/28.OK /net/fantasia/home/atks/makefile_tutorial/29.OK /net/fantasia/home/atks/makefile_tutorial/30.OK /net/fantasia/home/atks/makefile_tutorial/31.OK /net/fantasia/home/atks/makefile_tutorial/32.OK /net/fantasia/home/atks/makefile_tutorial/33.OK /net/fantasia/home/atks/makefile_tutorial/34.OK /net/fantasia/home/atks/makefile_tutorial/35.OK /net/fantasia/home/atks/makefile_tutorial/36.OK /net/fantasia/home/atks/makefile_tutorial/37.OK /net/fantasia/home/atks/makefile_tutorial/38.OK /net/fantasia/home/atks/makefile_tutorial/39.OK /net/fantasia/home/atks/makefile_tutorial/40.OK /net/fantasia/home/atks/makefile_tutorial/41.OK /net/fantasia/home/atks/makefile_tutorial/42.OK /net/fantasia/home/atks/makefile_tutorial/43.OK /net/fantasia/home/atks/makefile_tutorial/44.OK /net/fantasia/home/atks/makefile_tutorial/45.OK /net/fantasia/home/atks/makefile_tutorial/46.OK /net/fantasia/home/atks/makefile_tutorial/47.OK /net/fantasia/home/atks/makefile_tutorial/48.OK /net/fantasia/home/atks/makefile_tutorial/49.OK /net/fantasia/home/atks/makefile_tutorial/50.OK /net/fantasia/home/atks/makefile_tutorial/51.OK /net/fantasia/home/atks/makefile_tutorial/52.OK /net/fantasia/home/atks/makefile_tutorial/53.OK /net/fantasia/home/atks/makefile_tutorial/54.OK /net/fantasia/home/atks/makefile_tutorial/55.OK /net/fantasia/home/atks/makefile_tutorial/56.OK /net/fantasia/home/atks/makefile_tutorial/57.OK /net/fantasia/home/atks/makefile_tutorial/58.OK /net/fantasia/home/atks/makefile_tutorial/59.OK /net/fantasia/home/atks/makefile_tutorial/60.OK /net/fantasia/home/atks/makefile_tutorial/61.OK /net/fantasia/home/atks/makefile_tutorial/62.OK /net/fantasia/home/atks/makefile_tutorial/63.OK /net/fantasia/home/atks/makefile_tutorial/64.OK /net/fantasia/home/atks/makefile_tutorial/65.OK /net/fantasia/home/atks/makefile_tutorial/66.OK /net/fantasia/home/atks/makefile_tutorial/67.OK /net/fantasia/home/atks/makefile_tutorial/68.OK /net/fantasia/home/atks/makefile_tutorial/69.OK /net/fantasia/home/atks/makefile_tutorial/70.OK /net/fantasia/home/atks/makefile_tutorial/71.OK /net/fantasia/home/atks/makefile_tutorial/72.OK /net/fantasia/home/atks/makefile_tutorial/73.OK /net/fantasia/home/atks/makefile_tutorial/74.OK /net/fantasia/home/atks/makefile_tutorial/75.OK /net/fantasia/home/atks/makefile_tutorial/76.OK /net/fantasia/home/atks/makefile_tutorial/77.OK /net/fantasia/home/atks/makefile_tutorial/78.OK /net/fantasia/home/atks/makefile_tutorial/79.OK /net/fantasia/home/atks/makefile_tutorial/80.OK /net/fantasia/home/atks/makefile_tutorial/81.OK /net/fantasia/home/atks/makefile_tutorial/82.OK /net/fantasia/home/atks/makefile_tutorial/83.OK /net/fantasia/home/atks/makefile_tutorial/84.OK /net/fantasia/home/atks/makefile_tutorial/85.OK /net/fantasia/home/atks/makefile_tutorial/86.OK /net/fantasia/home/atks/makefile_tutorial/87.OK /net/fantasia/home/atks/makefile_tutorial/88.OK /net/fantasia/home/atks/makefile_tutorial/89.OK /net/fantasia/home/atks/makefile_tutorial/90.OK /net/fantasia/home/atks/makefile_tutorial/91.OK /net/fantasia/home/atks/makefile_tutorial/92.OK /net/fantasia/home/atks/makefile_tutorial/93.OK /net/fantasia/home/atks/makefile_tutorial/94.OK /net/fantasia/home/atks/makefile_tutorial/95.OK /net/fantasia/home/atks/makefile_tutorial/96.OK /net/fantasia/home/atks/makefile_tutorial/97.OK /net/fantasia/home/atks/makefile_tutorial/98.OK /net/fantasia/home/atks/makefile_tutorial/99.OK /net/fantasia/home/atks/makefile_tutorial/100.OK
srun cat /net/fantasia/home/atks/makefile_tutorial/1.log /net/fantasia/home/atks/makefile_tutorial/2.log /net/fantasia/home/atks/makefile_tutorial/3.log /net/fantasia/home/atks/makefile_tutorial/4.log /net/fantasia/home/atks/makefile_tutorial/5.log /net/fantasia/home/atks/makefile_tutorial/6.log /net/fantasia/home/atks/makefile_tutorial/7.log /net/fantasia/home/atks/makefile_tutorial/8.log /net/fantasia/home/atks/makefile_tutorial/9.log /net/fantasia/home/atks/makefile_tutorial/10.log /net/fantasia/home/atks/makefile_tutorial/11.log /net/fantasia/home/atks/makefile_tutorial/12.log /net/fantasia/home/atks/makefile_tutorial/13.log /net/fantasia/home/atks/makefile_tutorial/14.log /net/fantasia/home/atks/makefile_tutorial/15.log /net/fantasia/home/atks/makefile_tutorial/16.log /net/fantasia/home/atks/makefile_tutorial/17.log /net/fantasia/home/atks/makefile_tutorial/18.log /net/fantasia/home/atks/makefile_tutorial/19.log /net/fantasia/home/atks/makefile_tutorial/20.log /net/fantasia/home/atks/makefile_tutorial/21.log /net/fantasia/home/atks/makefile_tutorial/22.log /net/fantasia/home/atks/makefile_tutorial/23.log /net/fantasia/home/atks/makefile_tutorial/24.log /net/fantasia/home/atks/makefile_tutorial/25.log /net/fantasia/home/atks/makefile_tutorial/26.log /net/fantasia/home/atks/makefile_tutorial/27.log /net/fantasia/home/atks/makefile_tutorial/28.log /net/fantasia/home/atks/makefile_tutorial/29.log /net/fantasia/home/atks/makefile_tutorial/30.log /net/fantasia/home/atks/makefile_tutorial/31.log /net/fantasia/home/atks/makefile_tutorial/32.log /net/fantasia/home/atks/makefile_tutorial/33.log /net/fantasia/home/atks/makefile_tutorial/34.log /net/fantasia/home/atks/makefile_tutorial/35.log /net/fantasia/home/atks/makefile_tutorial/36.log /net/fantasia/home/atks/makefile_tutorial/37.log /net/fantasia/home/atks/makefile_tutorial/38.log /net/fantasia/home/atks/makefile_tutorial/39.log /net/fantasia/home/atks/makefile_tutorial/40.log /net/fantasia/home/atks/makefile_tutorial/41.log /net/fantasia/home/atks/makefile_tutorial/42.log /net/fantasia/home/atks/makefile_tutorial/43.log /net/fantasia/home/atks/makefile_tutorial/44.log /net/fantasia/home/atks/makefile_tutorial/45.log /net/fantasia/home/atks/makefile_tutorial/46.log /net/fantasia/home/atks/makefile_tutorial/47.log /net/fantasia/home/atks/makefile_tutorial/48.log /net/fantasia/home/atks/makefile_tutorial/49.log /net/fantasia/home/atks/makefile_tutorial/50.log /net/fantasia/home/atks/makefile_tutorial/51.log /net/fantasia/home/atks/makefile_tutorial/52.log /net/fantasia/home/atks/makefile_tutorial/53.log /net/fantasia/home/atks/makefile_tutorial/54.log /net/fantasia/home/atks/makefile_tutorial/55.log /net/fantasia/home/atks/makefile_tutorial/56.log /net/fantasia/home/atks/makefile_tutorial/57.log /net/fantasia/home/atks/makefile_tutorial/58.log /net/fantasia/home/atks/makefile_tutorial/59.log /net/fantasia/home/atks/makefile_tutorial/60.log /net/fantasia/home/atks/makefile_tutorial/61.log /net/fantasia/home/atks/makefile_tutorial/62.log /net/fantasia/home/atks/makefile_tutorial/63.log /net/fantasia/home/atks/makefile_tutorial/64.log /net/fantasia/home/atks/makefile_tutorial/65.log /net/fantasia/home/atks/makefile_tutorial/66.log /net/fantasia/home/atks/makefile_tutorial/67.log /net/fantasia/home/atks/makefile_tutorial/68.log /net/fantasia/home/atks/makefile_tutorial/69.log /net/fantasia/home/atks/makefile_tutorial/70.log /net/fantasia/home/atks/makefile_tutorial/71.log /net/fantasia/home/atks/makefile_tutorial/72.log /net/fantasia/home/atks/makefile_tutorial/73.log /net/fantasia/home/atks/makefile_tutorial/74.log /net/fantasia/home/atks/makefile_tutorial/75.log /net/fantasia/home/atks/makefile_tutorial/76.log /net/fantasia/home/atks/makefile_tutorial/77.log /net/fantasia/home/atks/makefile_tutorial/78.log /net/fantasia/home/atks/makefile_tutorial/79.log /net/fantasia/home/atks/makefile_tutorial/80.log /net/fantasia/home/atks/makefile_tutorial/81.log /net/fantasia/home/atks/makefile_tutorial/82.log /net/fantasia/home/atks/makefile_tutorial/83.log /net/fantasia/home/atks/makefile_tutorial/84.log /net/fantasia/home/atks/makefile_tutorial/85.log /net/fantasia/home/atks/makefile_tutorial/86.log /net/fantasia/home/atks/makefile_tutorial/87.log /net/fantasia/home/atks/makefile_tutorial/88.log /net/fantasia/home/atks/makefile_tutorial/89.log /net/fantasia/home/atks/makefile_tutorial/90.log /net/fantasia/home/atks/makefile_tutorial/91.log /net/fantasia/home/atks/makefile_tutorial/92.log /net/fantasia/home/atks/makefile_tutorial/93.log /net/fantasia/home/atks/makefile_tutorial/94.log /net/fantasia/home/atks/makefile_tutorial/95.log /net/fantasia/home/atks/makefile_tutorial/96.log /net/fantasia/home/atks/makefile_tutorial/97.log /net/fantasia/home/atks/makefile_tutorial/98.log /net/fantasia/home/atks/makefile_tutorial/99.log /net/fantasia/home/atks/makefile_tutorial/100.log > /net/fantasia/home/atks/makefile_tutorial/all.log
touch /net/fantasia/home/atks/makefile_tutorial/all.log.OK
/net/fantasia/home/atks/makefile_tutorial/cleaned.OK: /net/fantasia/home/atks/makefile_tutorial/all.log.OK
srun rm /net/fantasia/home/atks/makefile_tutorial/1.log /net/fantasia/home/atks/makefile_tutorial/2.log /net/fantasia/home/atks/makefile_tutorial/3.log /net/fantasia/home/atks/makefile_tutorial/4.log /net/fantasia/home/atks/makefile_tutorial/5.log /net/fantasia/home/atks/makefile_tutorial/6.log /net/fantasia/home/atks/makefile_tutorial/7.log /net/fantasia/home/atks/makefile_tutorial/8.log /net/fantasia/home/atks/makefile_tutorial/9.log /net/fantasia/home/atks/makefile_tutorial/10.log /net/fantasia/home/atks/makefile_tutorial/11.log /net/fantasia/home/atks/makefile_tutorial/12.log /net/fantasia/home/atks/makefile_tutorial/13.log /net/fantasia/home/atks/makefile_tutorial/14.log /net/fantasia/home/atks/makefile_tutorial/15.log /net/fantasia/home/atks/makefile_tutorial/16.log /net/fantasia/home/atks/makefile_tutorial/17.log /net/fantasia/home/atks/makefile_tutorial/18.log /net/fantasia/home/atks/makefile_tutorial/19.log /net/fantasia/home/atks/makefile_tutorial/20.log /net/fantasia/home/atks/makefile_tutorial/21.log /net/fantasia/home/atks/makefile_tutorial/22.log /net/fantasia/home/atks/makefile_tutorial/23.log /net/fantasia/home/atks/makefile_tutorial/24.log /net/fantasia/home/atks/makefile_tutorial/25.log /net/fantasia/home/atks/makefile_tutorial/26.log /net/fantasia/home/atks/makefile_tutorial/27.log /net/fantasia/home/atks/makefile_tutorial/28.log /net/fantasia/home/atks/makefile_tutorial/29.log /net/fantasia/home/atks/makefile_tutorial/30.log /net/fantasia/home/atks/makefile_tutorial/31.log /net/fantasia/home/atks/makefile_tutorial/32.log /net/fantasia/home/atks/makefile_tutorial/33.log /net/fantasia/home/atks/makefile_tutorial/34.log /net/fantasia/home/atks/makefile_tutorial/35.log /net/fantasia/home/atks/makefile_tutorial/36.log /net/fantasia/home/atks/makefile_tutorial/37.log /net/fantasia/home/atks/makefile_tutorial/38.log /net/fantasia/home/atks/makefile_tutorial/39.log /net/fantasia/home/atks/makefile_tutorial/40.log /net/fantasia/home/atks/makefile_tutorial/41.log /net/fantasia/home/atks/makefile_tutorial/42.log /net/fantasia/home/atks/makefile_tutorial/43.log /net/fantasia/home/atks/makefile_tutorial/44.log /net/fantasia/home/atks/makefile_tutorial/45.log /net/fantasia/home/atks/makefile_tutorial/46.log /net/fantasia/home/atks/makefile_tutorial/47.log /net/fantasia/home/atks/makefile_tutorial/48.log /net/fantasia/home/atks/makefile_tutorial/49.log /net/fantasia/home/atks/makefile_tutorial/50.log /net/fantasia/home/atks/makefile_tutorial/51.log /net/fantasia/home/atks/makefile_tutorial/52.log /net/fantasia/home/atks/makefile_tutorial/53.log /net/fantasia/home/atks/makefile_tutorial/54.log /net/fantasia/home/atks/makefile_tutorial/55.log /net/fantasia/home/atks/makefile_tutorial/56.log /net/fantasia/home/atks/makefile_tutorial/57.log /net/fantasia/home/atks/makefile_tutorial/58.log /net/fantasia/home/atks/makefile_tutorial/59.log /net/fantasia/home/atks/makefile_tutorial/60.log /net/fantasia/home/atks/makefile_tutorial/61.log /net/fantasia/home/atks/makefile_tutorial/62.log /net/fantasia/home/atks/makefile_tutorial/63.log /net/fantasia/home/atks/makefile_tutorial/64.log /net/fantasia/home/atks/makefile_tutorial/65.log /net/fantasia/home/atks/makefile_tutorial/66.log /net/fantasia/home/atks/makefile_tutorial/67.log /net/fantasia/home/atks/makefile_tutorial/68.log /net/fantasia/home/atks/makefile_tutorial/69.log /net/fantasia/home/atks/makefile_tutorial/70.log /net/fantasia/home/atks/makefile_tutorial/71.log /net/fantasia/home/atks/makefile_tutorial/72.log /net/fantasia/home/atks/makefile_tutorial/73.log /net/fantasia/home/atks/makefile_tutorial/74.log /net/fantasia/home/atks/makefile_tutorial/75.log /net/fantasia/home/atks/makefile_tutorial/76.log /net/fantasia/home/atks/makefile_tutorial/77.log /net/fantasia/home/atks/makefile_tutorial/78.log /net/fantasia/home/atks/makefile_tutorial/79.log /net/fantasia/home/atks/makefile_tutorial/80.log /net/fantasia/home/atks/makefile_tutorial/81.log /net/fantasia/home/atks/makefile_tutorial/82.log /net/fantasia/home/atks/makefile_tutorial/83.log /net/fantasia/home/atks/makefile_tutorial/84.log /net/fantasia/home/atks/makefile_tutorial/85.log /net/fantasia/home/atks/makefile_tutorial/86.log /net/fantasia/home/atks/makefile_tutorial/87.log /net/fantasia/home/atks/makefile_tutorial/88.log /net/fantasia/home/atks/makefile_tutorial/89.log /net/fantasia/home/atks/makefile_tutorial/90.log /net/fantasia/home/atks/makefile_tutorial/91.log /net/fantasia/home/atks/makefile_tutorial/92.log /net/fantasia/home/atks/makefile_tutorial/93.log /net/fantasia/home/atks/makefile_tutorial/94.log /net/fantasia/home/atks/makefile_tutorial/95.log /net/fantasia/home/atks/makefile_tutorial/96.log /net/fantasia/home/atks/makefile_tutorial/97.log /net/fantasia/home/atks/makefile_tutorial/98.log /net/fantasia/home/atks/makefile_tutorial/99.log /net/fantasia/home/atks/makefile_tutorial/100.log
touch /net/fantasia/home/atks/makefile_tutorial/cleaned.OK
clean:
-rm -rf /net/fantasia/home/atks/makefile_tutorial/*.OK /net/fantasia/home/atks/makefile_tutorial/*.log
Acknowledgement
Thanks to Hyun for introducing this trick.
Maintained by
This page is maintained by Adrian.