[Orgmode] [PATCH] (ELPA): Support for building Package Variants and Package Upload

2010-11-12 Thread Jambunathan K


1 Summary 
~~
  (ELPA): Add support for the following:

  1. Package README files
  2. Upload of Packages to the repository
  3. Building of Package Variants (stable, snapshot ect)

  This patch is backward-compatible and it wouldn't question the
  status-quo. It understands existing scheme of things.

  To exploit this patch, a patched-up package-x.el is highly
  recommended. Read on ...

2 Building Plain Vanilla Packages 
~~

2.1 Notes 
==

   Builds plain vanialla packages. Doesn't upload packages. 

   There will be a WARNING message saying that the package was not
   uploaded. This can be noted and ignored.
   

2.2 Build Procedure 

   1. make PKG_TAG=7.3
  This builds org-7.3.tar
   2. make pkg
  This builds org-20101112.tar

3 Building Package Variants 


3.1 Notes 
==
Modify/Uncomment PKG_SEP and PKG_FLAVOUR setting in Makefile as
desired. 

There is a choice of PKG_SEP. Pick what you like. Use of '-' is
discouraged.

Assumption is:
- stable releases are built with an explicit PKG_TAG
- stable releases are non-flavored while the snapshot builds are
  flavored.

3.2 Build Procedure 

   1. make PKG_TAG=7.3
  This builds org-7.3.tar
   2. make pkg
  This builds o...@snaphsot-20101112.tar

4 Package Uploads 
~~

4.1 Notes 
==
   - PKG_UPLOAD_DIR: directory where the package files are
 uploaded. i.e., it is the *local directory* behind the repo URL
 ([http://orgmode.org/pkg/daily/]). For eg, /var/www/pub/pkg/daily/.

 IMPORTANT NOTE: Remember to include the trailing '/' in the
 directory while setting this variable.

   - PKG_EL_DIR: This is added to the load-path during BATCH
 compilation. The intention is two fold:

 1. load package.el and package-x.el if the build machine is using
Emacs-23 or less (which don't ship with package manager)

 2. Override package.el and package-x.el that ship with Emacs with
a custom or a patched up version.

 IMPORTANT NOTE: The rule for 'pkg-upload' depends on my patch to
 Package Manager which is accepted but not committed yet because
 of the (postal?) delay in FSF copyright requirements.

[http://lists.gnu.org/archive/html/emacs-devel/2010-11/msg00026.html]


4.2 Build Procedure 


   1. make PKG_EL_DIR=~/elisp PKG_UPLOAD_DIR=~/packages/ PKG_TAG=7.3 pkg

  This builds org-7.3.tar and uploads the same to ~/packages
  using package-x.el in ~/elisp/

   2. make PKG_EL_DIR=~/elisp PKG_UPLOAD_DIR=~/packages/ pkg

  This builds org-20101112.tar and uploads the same to
  ~/packages using package-x.el in ~/elisp/

Jambunathan K.

Attachments
~~~

From 06d227cc4d4e3ac86320690ebbe184bb804d9bf1 Mon Sep 17 00:00:00 2001
From: Jambunathan K kjambunat...@gmail.com
Date: Fri, 12 Nov 2010 16:32:51 +0530
Subject: [PATCH] (ELPA): Support for building Package Variants and Package Upload.

(PKG_TAG): Use PKG_TAG to control package flavour. If unspecified,
assume a snapshot build.

(PKG_SEP, PKG_FLAVOUR): New config variables for building various
flavours of ELPA tarball. For eg., org-7.3.tar,
o...@snapshot-20101112.tar, org-snapshot-20101112 etc.

(PKG_FILES): Removed
(PKG_BASE_FILES): Files here end up in the root dir.
(PKG_DOC_FILES): Files here end up in the doc dir.

(PKG_README_ORG_FILE): README file

(PKG_EL_DIR): Load path for package.el and package-x.el. Useful if the
build machine runs an 'old' Emacs or if the build process requires a
patched up versions of these files.

(PKG_UPLOAD_DIR): 'pub' dir of the webserver serving the ELPA tarball.

(pkg-upload, pkg-readme): New targets subsumed within pkg target.
---
diff --git a/Makefile b/Makefile
old mode 100644
new mode 100755
index 0b15abe..5c13d8b
--- a/Makefile
+++ b/Makefile
@@ -165,18 +165,44 @@ TEXIFILES   = doc/org.texi
 INFOFILES   = doc/org
 
 # Package Manager (ELPA)
+
+# PKG_TAG = 
+
+ifndef PKG_TAG
+# PKG_SEP = @
+# PKG_SEP = -
+# PKG_SEP = .
+# PKG_FLAVOUR = snapshot
 PKG_TAG = $(shell date +%Y%m%d)
+endif
+
+PKG_BNAME = org
+PKG_QNAME = $(PKG_BNAME)$(PKG_SEP)$(PKG_FLAVOUR)
+PKG_FNAME = $(PKG_QNAME)-$(PKG_TAG)
+
 PKG_DOC = Outline-based notes management and organizer
 PKG_REQ = nil
 
-PKG_FILES = $(LISPFILES0)		\
-doc/dir doc/org		\
-doc/pdflayout.sty		\
-doc/org.pdf			\
-doc/orgguide.pdf		\
-doc/orgcard.tex		\
-doc/orgcard.pdf		\
-doc/orgcard_letter.pdf
+PKG_BASE_FILES = $(LISPFILES0)  \
+ doc/dir doc/org
+
+PKG_DOC_FILES = \
+doc/org.pdf \
+doc/org.html\
+doc/orgguide.pdf\
+doc/orgcard.txt \
+doc/orgcard.pdf \
+doc/orgcard_letter.pdf
+

Re: [Orgmode] [PATCH] (ELPA): Support for building Package Variants and Package Upload

2010-11-12 Thread Carsten Dominik

Hi Jambunathan,

thanks for this!


2.2 Build Procedure

  1. make PKG_TAG=7.3
 This builds org-7.3.tar


I guess this must be

 make pkg PKG_TAG=...

right?

I think it would be good to *not* use a name that is just like the  
normal org distribution files.  I am distributing under the names


org-7.3.tar.gz
org-7.3.zip

or is this not a possible problem?

- Carsten



  2. make pkg
 This builds org-20101112.tar

3 Building Package Variants


3.1 Notes
==
   Modify/Uncomment PKG_SEP and PKG_FLAVOUR setting in Makefile as
   desired.

   There is a choice of PKG_SEP. Pick what you like. Use of '-' is
   discouraged.

   Assumption is:
   - stable releases are built with an explicit PKG_TAG
   - stable releases are non-flavored while the snapshot builds are
 flavored.

3.2 Build Procedure

  1. make PKG_TAG=7.3
 This builds org-7.3.tar
  2. make pkg
 This builds o...@snaphsot-20101112.tar

4 Package Uploads
~~

4.1 Notes
==
  - PKG_UPLOAD_DIR: directory where the package files are
uploaded. i.e., it is the *local directory* behind the repo URL
([http://orgmode.org/pkg/daily/]). For eg, /var/www/pub/pkg/ 
daily/.


IMPORTANT NOTE: Remember to include the trailing '/' in the
directory while setting this variable.

  - PKG_EL_DIR: This is added to the load-path during BATCH
compilation. The intention is two fold:

1. load package.el and package-x.el if the build machine is using
   Emacs-23 or less (which don't ship with package manager)

2. Override package.el and package-x.el that ship with Emacs with
   a custom or a patched up version.

IMPORTANT NOTE: The rule for 'pkg-upload' depends on my patch to
Package Manager which is accepted but not committed yet because
of the (postal?) delay in FSF copyright requirements.

   [http://lists.gnu.org/archive/html/emacs-devel/2010-11/msg00026.html 
]



4.2 Build Procedure


  1. make PKG_EL_DIR=~/elisp PKG_UPLOAD_DIR=~/packages/  
PKG_TAG=7.3 pkg


 This builds org-7.3.tar and uploads the same to ~/packages
 using package-x.el in ~/elisp/

  2. make PKG_EL_DIR=~/elisp PKG_UPLOAD_DIR=~/packages/ pkg

 This builds org-20101112.tar and uploads the same to
 ~/packages using package-x.el in ~/elisp/

Jambunathan K.

Attachments
~~~

From 06d227cc4d4e3ac86320690ebbe184bb804d9bf1 Mon Sep 17 00:00:00 2001
From: Jambunathan K kjambunat...@gmail.com
Date: Fri, 12 Nov 2010 16:32:51 +0530
Subject: [PATCH] (ELPA): Support for building Package Variants and  
Package Upload.


(PKG_TAG): Use PKG_TAG to control package flavour. If unspecified,
assume a snapshot build.

(PKG_SEP, PKG_FLAVOUR): New config variables for building various
flavours of ELPA tarball. For eg., org-7.3.tar,
o...@snapshot-20101112.tar, org-snapshot-20101112 etc.

(PKG_FILES): Removed
(PKG_BASE_FILES): Files here end up in the root dir.
(PKG_DOC_FILES): Files here end up in the doc dir.

(PKG_README_ORG_FILE): README file

(PKG_EL_DIR): Load path for package.el and package-x.el. Useful if the
build machine runs an 'old' Emacs or if the build process requires a
patched up versions of these files.

(PKG_UPLOAD_DIR): 'pub' dir of the webserver serving the ELPA tarball.

(pkg-upload, pkg-readme): New targets subsumed within pkg target.
---
diff --git a/Makefile b/Makefile
old mode 100644
new mode 100755
index 0b15abe..5c13d8b
--- a/Makefile
+++ b/Makefile
@@ -165,18 +165,44 @@ TEXIFILES   = doc/org.texi
INFOFILES   = doc/org

# Package Manager (ELPA)
+
+# PKG_TAG =
+
+ifndef PKG_TAG
+# PKG_SEP = @
+# PKG_SEP = -
+# PKG_SEP = .
+# PKG_FLAVOUR = snapshot
PKG_TAG = $(shell date +%Y%m%d)
+endif
+
+PKG_BNAME = org
+PKG_QNAME = $(PKG_BNAME)$(PKG_SEP)$(PKG_FLAVOUR)
+PKG_FNAME = $(PKG_QNAME)-$(PKG_TAG)
+
PKG_DOC = Outline-based notes management and organizer
PKG_REQ = nil

-PKG_FILES = $(LISPFILES0)  \
-doc/dir doc/org\
-doc/pdflayout.sty  \
-doc/org.pdf\
-doc/orgguide.pdf   \
-doc/orgcard.tex\
-doc/orgcard.pdf\
-doc/orgcard_letter.pdf
+PKG_BASE_FILES = $(LISPFILES0)  \
+ doc/dir doc/org
+
+PKG_DOC_FILES = \
+doc/org.pdf \
+doc/org.html\
+doc/orgguide.pdf\
+doc/orgcard.txt \
+doc/orgcard.pdf \
+doc/orgcard_letter.pdf
+
+PKG_README_ORG_FILE = ORGWEBPAGE/Changes.org
+PKG_README_TXT_FILE = $(PKG_README_ORG_FILE:%.org=%.txt)
+
+# PKG_EL_DIR =
+# PKG_UPLOAD_DIR =
+
+ifdef PKG_EL_DIR
+BATCH_EXTRA = -eval (setq load-path (cons (expand-file-name \$ 
(PKG_EL_DIR)\) load-path))

+endif

.SUFFIXES: .el .elc .texi
SHELL = /bin/sh
@@ -372,16 +398,46 @@ distfile:
 

Re: [Orgmode] [PATCH] (ELPA): Support for building Package Variants and Package Upload

2010-11-12 Thread Jambunathan K
Carsten Dominik carsten.domi...@gmail.com writes:

 Hi Jambunathan,

 thanks for this!

 2.2 Build Procedure
 
   1. make PKG_TAG=7.3
  This builds org-7.3.tar

 I guess this must be

  make pkg PKG_TAG=...

 right?


Yes, I missed the target - 'pkg'. A small but a significant slip.

 I think it would be good to *not* use a name that is just like the
 normal org distribution files.  

There is a config variable for that :-). It is PKG_BNAME (as in 'Package
Base Name'). 


 I am distributing under the names

 org-7.3.tar.gz
 org-7.3.zip


I believe the question here is: How is an ELPA-tar differntiated from a
plain-old snapshot tar? From the user perspective, is there an element
of ambiguity and confusion?

As things stand today, ELPA-tarballs are plain tar files i.e., they are
not zipped. So the packages with above names can only be non-ELPA
tarballs [1]

The only difference between ELPA and non-ELPA tarballs is in the tree
structure. ELPA-tarballs *require* that lisp files and info files be in
the root directory [2].  This is not the case with plain old
tarballs. As it stands today, the 'contrib' files are not zipped in to
the ELPA tarball [3].

One approach of addressing a possible divide between ELPA and non-ELPA
tarballs is to distribute just a single tarball which is also
ELPA-tarball. This would require a modification in the tree-structure of
the conventional tarball and may be some changes to the Makefile.

A second approach of addressing the problem is to wait and watch. May be
by the time Emacs-24 gets out of the door, package manager would not be
too restrictive on where it wants to see the elisp and info files. And a
plain old tar file could as well work well with package manager.

 I am distributing under the names

 org-7.3.tar.gz
 org-7.3.zip

 or is this not a possible problem?

The advantage of using 'org' namespace for the ELPA tarballs is that it
would be deemed as an 'upgrade' to the builtin package 'org'. In that
sense there is a continuity. This privilege would be lost for packages
that doesn't share 'builtins' namespace [4].

As package are identified by their names, a org-snapshot-7.3.tar is
considered by package manager interface as different from org-7.3.tar.

AFAICS, packages get in to '~/.emacs.d/elpa/org-snapshot-7.3/...' and
'~/.emacs.d/elpa/org-7.3/...' and load-path is appropriately modified.

So a reasonably experienced user can have them installed 'in parallel'
and pick and choose what he uses by playing around with load-path. He
can also tie down the package manager not to activate the files, thus
minimizing the package manager functionality to that of a downloader,
compiler and unpacker but not as a 'loader' [5].


,[ C-h f package-initialize RET ]
| package-initialize is an interactive Lisp function in `package.el'.
| 
| (package-initialize optional NO-ACTIVATE)
| 
| Load Emacs Lisp packages, and activate them.
| The variable `package-load-list' controls which packages to load.
| If optional arg NO-ACTIVATE is non-nil, don't activate packages.
| 
| [back]
`


 I am distributing under the names

 org-7.3.tar.gz
 org-7.3.zip

One another way to interpret the question is how would one distinguish
between tarballs that are 'official' (as in released directly by the
maintainer from his official website) and those that are 'unofficial'
(as in forks and derived works).

For the sake of recording my Makefile changes, as well as for the sake
of argument, I could potentially use the following setting:

PKG_BNAME=org
PKG_SEP=@
PKG_FLAVOUR=OpenOffice

and get a o...@openoffice-20101112.tar.

This is where the notion of 'Variants/Flavours/Release Streams/' could
be useful. The string between '@' and 'the version number' could be
standardized as a variant. The advantage of variants is obvious [6].

[1] Possible that Package Manager might start supporting zipped files.

[2] This is a constraint only because 'package manager' is barely
born. Who knows it can become a superman very soon ...

[3] This is so because just because it was done so. Package Manager
provides support for packaging arbitrary data files - icons, sound
files etc etc. There is no reason (apart from download size) which
prevent one from including contrib files.

[4] I haven't experimented much with builtin packages, upgrades,
downgrades etc. Take my remarks here with a pinch of salt. May be
someone who has experimented with package manager could pitch in
with additional insights here ... I am forming my opinion as I go
along.

[5] In some sense package manager is a good 'eye candy'. It is not my
intention to use the word in a negative sense but only as a
convenient metaphor.

[6] This is something that I have proposed to emacs-devel. Variants etc
are purely my own terminology i.e., it doesn't have any official
sanction. See
 
http://lists.gnu.org/archive/html/emacs-devel/2010-10/msg01026.html

This is also one of the reasons why I