Released as 20191022 ('DrivingIT')
[parallel.git] / doc / release_new_version
blob76ecd710867c642f4eac619c6e546e85cd680855
1 = Notes on how to release new version =
3 == alpha/beta/production ==
5 Check that documentation is updated (compare to web):
7 git grep -E '(alpha|beta) testing' | cat
8 git diff $(date --date="last month" +%Y%m22)
9 Unmodified beta since last version => production
10 Unmodified alpha since last version => beta
11 Modified => alpha
13 == Update version ==
15 configure.ac: AC_INIT([parallel], [20100422], [bug-parallel@gnu.org])
16 src/parallel: $Global::version = 20100422;
17 README: parallel-20130222
19 YYYYMMDD=$(echo `yyyymmdd`-1 | bc)
20 YYYYMMDD=$(echo `yyyymmdd`+1 | bc)
21 YYYYMMDD=`yyyymmdd`
22 echo $YYYYMMDD
23 perl -i -pe "s/20\d\d\d\d\d\d/$YYYYMMDD/" configure.ac
24 perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/parallel
25 perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/sql
26 perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/niceload
27 perl -i -pe "s/parallel-20\d\d\d\d\d\d/parallel-$YYYYMMDD/" README
29 === Autoconf/automake ===
31 rm -fr autom4te.cache aclocal.m4 config.h config.h.in config.log Makefile.in missing install-sh
32 rm -rf src/Makefile.in
33 autoreconf --install -W gnu
34 ./configure
35 make -j && sudo make install
37 == Testsuite ==
39 cd testsuite; make mem; make
41 == Update NEWS ==
43 With the same things that goes in the announce mail
45 == Package ==
47 ./configure
48 make dist
49 make dist-bzip2
51 == Test the package ==
53 YYYYMMDD=`yyyymmdd`
54 cp parallel-$YYYYMMDD.tar.bz2 /tmp
55 pushd /tmp
56 tar xjvf parallel-$YYYYMMDD.tar.bz2
57 cd parallel-$YYYYMMDD
58 ./configure && make -j && sudo make -j install
59 pushd
61 == Upload ==
63 YYYYMMDD=`yyyymmdd`
64 export YYYYMMDD
65 eval `gpg-agent --daemon`
66 # Takes up to 8 minutes
67 make upload
69 # Only needed for alpha:
70 YYYYMMDD=`yyyymmdd`
71 export YYYYMMDD
72 eval `gpg-agent --daemon`
73 # Takes up to 8 minutes
74 make alphaupload
76 == Update OpenSUSE build system ==
79 YYYYMMDD=`yyyymmdd`
80 export YYYYMMDD
81 cd ~/privat/parallel/packager/obs
83 find home:tange/parallel/* -type f | grep -v parallel.spec | parallel -Xj1 osc rm {}
84 # This should not create new files
85 osc up home:tange/parallel/
86 make
87 # Reload build-status:
88 https://build.opensuse.org/package/show/home:tange/parallel
89 # Check that one .deb (Debian 5.0) and one .rpm (CentOS) end with 'succeeded'
91 == Download and test ==
93 # Only needed for alpha (part of 'make upload')
95 YYYYMMDD=`yyyymmdd`
96 pushd /tmp
97 rm -rf parallel-${YYYYMMDD}*
98 # This can take 7 minutes
99 #while ! wget http://ftp.gnu.org/gnu/parallel/parallel-$YYYYMMDD.tar.bz2 ; do sleep 2; done
100 while ! wget http://alpha.gnu.org/gnu/parallel/parallel-$YYYYMMDD.tar.bz2 ; do sleep 2; done
101 tar xjvf parallel-$YYYYMMDD.tar.bz2
102 cd parallel-$YYYYMMDD
103 ./configure
104 make -j && sudo make -j install
105 pushd
106 sudo cp /usr/local/bin/parallel /usr/local/bin/parallel-$YYYYMMDD
108 == Update website ==
110 http://www.gnu.org/software/parallel/
111 http://www.gnu.org/software/parallel/man.html
112 http://www.gnu.org/software/parallel/sql.html
113 http://www.gnu.org/software/parallel/sem.html
114 http://www.gnu.org/software/parallel/env_parallel.html
115 http://www.gnu.org/software/parallel/parset.html
116 http://www.gnu.org/software/parallel/parcat.html
117 http://www.gnu.org/software/parallel/niceload.html
119 cp src/*.pdf src/*.html  ../parallel-web/parallel
120 cp src/parallel.html  ../parallel-web/parallel/man.html
122 pushd ../parallel-web/parallel
123 # Bug at Savannah makes this take 30 seconds
124 torsocks cvs up
125 torsocks cvs ci -m "New release"
126 pushd
128 == Commit released version ==
130 git diff
132 # Recheck OBS https://build.opensuse.org/package/show?package=parallel&project=home%3Atange
134 YYYYMMDD=`yyyymmdd`
135 TAG=MyTag
136 echo "Released as $YYYYMMDD ('$TAG')." | grep MyTag && (STOP;STOP;STOP)
137 echo "$TAG" | grep ' ' && (STOP;STOP;STOP)
138 echo "Released as $YYYYMMDD ('$TAG')."
140 git commit -a -m "Released as $YYYYMMDD ('$TAG')"
141 git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $TAG
142 git tag -s -u 88888888 -m "Released as $YYYYMMDD ('$TAG')" $YYYYMMDD
144 torsocks git push
145 torsocks git push origin $TAG
146 torsocks git push origin $YYYYMMDD
149 == Update documentation ==
151 Update version number + 1
153 YYYYMMDD=$(echo `yyyymmdd`+1 | bc)
154 echo $YYYYMMDD
155 perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/parallel
156 perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/sql
157 perl -i -pe "/version/ and s/20\d\d\d\d\d\d/$YYYYMMDD/" src/niceload
159 Unmodified beta since last version => production
160 Unmodified alpha since last version => beta
161 Modified => alpha
164 == Check URLs ==
166 make testurls
169 == Update Savannah ==
171 file:///home/tange/privat/parallel/doc/release_new_version
173 Content from release mail:
175 https://savannah.gnu.org/news/submit.php?group=parallel
177 Test URLs.
179 https://savannah.gnu.org/news/approve.php?group=parallel
181 == Update Freshmeat ==
183 // FreeCode is dying
184 http://freshmeat.net/projects/parallel/releases/new
186 == Update Diaspora Twitter ==
188 https://joindiaspora.com/stream
190 New release of #GNU Parallel pi.dk/0 New in this release pi.dk/2 See the intro videos pi.dk/1
191 10 secs installation: wget -O - pi.dk/3|bash
193 [x] Twitter
194 Aspect: Public
196 GNU Parallel - for people who live life in the parallel lane.
198 == Send announce ==
200 http://groups.google.com/group/comp.unix.shell/post
201 http://groups.google.com/group/comp.unix.admin/post
203 https://lists.gnu.org/mailman/admindb/bug-parallel
204 https://lists.gnu.org/mailman/admindb/parallel
206 file:///home/tange/privat/parallel/doc/release_new_version
208 from:tange@gnu.org
209 to:parallel@gnu.org, bug-parallel@gnu.org
210 stable-bcc: Jesse Alama <jessealama@fastmail.fm>
212 Subject: GNU Parallel 20191022 ('Driving IT') released <<[stable]>>
214 GNU Parallel 20191022 ('Driving IT') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
216 <<No new functionality was introduced so this is a good candidate for a stable release.>>
218 GNU Parallel is 10 years old next year on 2020-04-22. You are here by invited to a reception on Friday 2020-04-17.
220 See https://www.gnu.org/software/parallel/10-years-anniversary.html
222 Quote of the month:
224   I've said it before: The command line program GNU Parallel is a godsend.
225     -- Jo Chr. Oterhals @oterhals@twitter
227 New in this release:
229 * --tee will use --output-error=warn-nopipe if supported by tee.
231 * GNU Parallel will be presented at Driving IT 2019: https://ida.dk/arrangementer-og-kurser/konferencer/driving-it/tools
233 * UMN Duluth: Job parallelization with task arrays and GNU parallel https://www.msi.umn.edu/tutorials/umn-duluth-job-parallelization-task-arrays-and-gnu-parallel
235 * Genome updater uses GNU Parallel https://github.com/pirovc/genome_updater
237 * Using GNU-Parallel for bioinformatics https://www.danielecook.com/using-gnu-parallel-for-bioinformatics/
239 * Speeding up PostgreSQL ETL pipeline with the help of GODS https://cfengine.com/company/blog-detail/speeding-up-postgresql-etl-pipeline-with-the-help-of-gods/
241 * Runing linux commands in parallel https://dev.to/voyeg3r/runing-linux-commands-in-parallel-4ff8
243 * Research Computing University of Colorado Boulder contains an intro to GNU Parallel https://readthedocs.org/projects/curc/downloads/pdf/latest/
245 * 如何使用Parallel在Shell中并行执行命令https://www.myfreax.com/gnu-parallel/
247 * 如何测试 Amazon Elastic File System https://aws.amazon.com/cn/blogs/china/how-to-test-drive-amazon-elastic-file-system/
249 * Bug fixes and man page updates.
251 Get the book: GNU Parallel 2018 http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html
253 GNU Parallel - For people who live life in the parallel lane.
256 = About GNU Parallel =
258 GNU Parallel is a shell tool for executing jobs in parallel using one or more computers. A job can be a single command or a small script that has to be run for each of the lines in the input. The typical input is a list of files, a list of hosts, a list of users, a list of URLs, or a list of tables. A job can also be a command that reads from a pipe. GNU Parallel can then split the input and pipe it into commands in parallel.
260 If you use xargs and tee today you will find GNU Parallel very easy to use as GNU Parallel is written to have the same options as xargs. If you write loops in shell, you will find GNU Parallel may be able to replace most of the loops and make them run faster by running several jobs in parallel. GNU Parallel can even replace nested loops.
262 GNU Parallel makes sure output from the commands is the same output as you would get had you run the commands sequentially. This makes it possible to use output from GNU Parallel as input for other programs.
264 For example you can run this to convert all jpeg files into png and gif files and have a progress bar:
266   parallel --bar convert {1} {1.}.{2} ::: *.jpg ::: png gif
268 Or you can generate big, medium, and small thumbnails of all jpeg files in sub dirs:
270   find . -name '*.jpg' |
271     parallel convert -geometry {2} {1} {1//}/thumb{2}_{1/} :::: - ::: 50 100 200
274 You can find more about GNU Parallel at: http://www.gnu.org/s/parallel/
276 You can install GNU Parallel in just 10 seconds with:
278     $ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
279        fetch -o - http://pi.dk/3 ) > install.sh
280     $ sha1sum install.sh | grep 3374ec53bacb199b245af2dda86df6c9
281     12345678 3374ec53 bacb199b 245af2dd a86df6c9
282     $ md5sum install.sh | grep 029a9ac06e8b5bc6052eac57b2c3c9ca
283     029a9ac0 6e8b5bc6 052eac57 b2c3c9ca
284     $ sha512sum install.sh | grep f517006d9897747bed8a4694b1acba1b
285     40f53af6 9e20dae5 713ba06c f517006d 9897747b ed8a4694 b1acba1b 1464beb4
286     60055629 3f2356f3 3e9c4e3c 76e3f3af a9db4b32 bd33322b 975696fc e6b23cfb
287     $ bash install.sh
289 Watch the intro video on http://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
291 Walk through the tutorial (man parallel_tutorial). Your command line will love you for it.
293 When using programs that use GNU Parallel to process data for publication please cite:
295 O. Tange (2018): GNU Parallel 2018, March 2018, https://doi.org/10.5281/zenodo.1146014.
297 If you like GNU Parallel:
299 * Give a demo at your local user group/team/colleagues
300 * Post the intro videos on Reddit/Diaspora*/forums/blogs/ Identi.ca/Google+/Twitter/Facebook/Linkedin/mailing lists
301 * Get the merchandise https://gnuparallel.threadless.com/designs/gnu-parallel
302 * Request or write a review for your favourite blog or magazine
303 * Request or build a package for your favourite distribution (if it is not already there)
304 * Invite me for your next conference
306 If you use programs that use GNU Parallel for research:
308 * Please cite GNU Parallel in you publications (use --citation)
310 If GNU Parallel saves you money:
312 * (Have your company) donate to FSF https://my.fsf.org/donate/
315 = About GNU SQL =
317 GNU sql aims to give a simple, unified interface for accessing databases through all the different databases' command line clients. So far the focus has been on giving a common way to specify login information (protocol, username, password, hostname, and port number), size (database and table size), and running queries.
319 The database is addressed using a DBURL. If commands are left out you will get that database's interactive shell.
321 When using GNU SQL for a publication please cite:
323 O. Tange (2011): GNU SQL - A Command Line Tool for Accessing Different Databases Using DBURLs, ;login: The USENIX Magazine, April 2011:29-32.
326 = About GNU Niceload =
328 GNU niceload slows down a program when the computer load average (or other system activity) is above a certain limit. When the limit is reached the program will be suspended for some time. If the limit is a soft limit the program will be allowed to run for short amounts of time before being suspended again. If the limit is a hard limit the program will only be allowed to run when the system is below the limit.