Date: Mon, 26 Sep 2016 09:05:51 -0700 From: Marcel Moolenaar <marcel@xcllnt.net> To: "=?utf-8?Q?freebsd-arch=40freebsd.org?=" <freebsd-arch@freebsd.org> Subject: Including <sys/disk*.h> without getting ioctl(2) defines Message-ID: <etPan.57e9475f.18472693.e1fd@xcllnt.net>
next in thread | raw e-mail | index | archive | help
--57e9475f_169e9367_e1fd Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Background: In order for a select set of =46reeBSD utilities to compile on non-=46ree= BSD (specifically macOS and Linux) as build tools, we need some portabili= ty tweaks. Problem: mkimg(1) includes disk partitioning headers like <sys/disklabel.h>, <sys/= diskmbr.h> and <sys/diskpc98.h> and those headers themselves include <sys= /ioccom.h> for ioctl(2) definitions. The <sys/ioccom.h> header does not t= ypically exist on the host we=E2=80=99re being, causing build failures. Proposal: What I like is to be able to use =46reeBSD=E2=80=99s headers, but not pul= l in =46reeBSD-specifics like ioctl(2) definitions. Solutions: 1. Split off the definitions relating to the partitioning into a separate= header (e.g. <sys/bsdlabel.h>) and keep the =46reeBSD-centric definition= s (e.g. for ioctl(2)) in the original header (e.g. <sys/disklabel.h>. The= original header will include the new header so that there=E2=80=99s no c= hange to applications that include the original header. Portable tools li= ke mkimg can include the new split-off header to get just the structure d= efinitions and defines. 2. Expect portable utilities to define a pre-processor macro (e.g. PORTAB= LE=5FDE=46INITIONS=5FONLY) and make =46reeBSD-specific definitions condit= ional upon the *absence* of the preprocessor macro. 3. (Ab)use =5FPOSIX=5FSOURCE to achieve the same as point 2. 4. Get rid of the utilities that still use the ioctl(2) interface and fix= ports that do the same. 5. Others=3F Notes: 1. Attached a hack to allow mkimg(1) to use =46reeBSD=E2=80=99s headers f= or partitioning schemes. It shows what exactly the problem is without sug= gesting a solution. It=E2=80=99s a minimal change for a reason and not to= be discussed as if it was a solution. 2. mkimg(1) is one example. Other utilities include makefs, mtree, etc. P= lease consider an approach that serves as a good precedence for other uti= lities if and when a similar situation is encountered. --57e9475f_169e9367_e1fd Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sys.diff" ZGlmZiAtLWdpdCBhL3N5cy9zeXMvZGlza2xhYmVsLmggYi9zeXMvc3lzL2Rpc2tsYWJlbC5oCmlu ZGV4IDQyYzc1N2EuLjRhZDEwZmIgMTAwNjQ0Ci0tLSBhL3N5cy9zeXMvZGlza2xhYmVsLmgKKysr IGIvc3lzL3N5cy9kaXNrbGFiZWwuaApAQCAtMzYsNyArMzYsNiBAQAogI2lmbmRlZiBfS0VSTkVM CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYKLSNpbmNsdWRlIDxzeXMvaW9jY29tLmg+ CiAKIC8qCiAgKiBEaXNrIGRlc2NyaXB0aW9uIHRhYmxlLCBzZWUgZGlza3RhYig1KQpkaWZmIC0t Z2l0IGEvc3lzL3N5cy9kaXNrbWJyLmggYi9zeXMvc3lzL2Rpc2ttYnIuaAppbmRleCA1ZjQ5ZWI5 Li5jZjU2NDdkIDEwMDY0NAotLS0gYS9zeXMvc3lzL2Rpc2ttYnIuaAorKysgYi9zeXMvc3lzL2Rp c2ttYnIuaApAQCAtMzMsOCArMzMsNiBAQAogI2lmbmRlZiBfU1lTX0RJU0tNQlJfSF8KICNkZWZp bmUJX1NZU19ESVNLTUJSX0hfCiAKLSNpbmNsdWRlIDxzeXMvaW9jY29tLmg+Ci0KICNkZWZpbmUJ RE9TQkJTRUNUT1IJMAkvKiBET1MgYm9vdCBibG9jayByZWxhdGl2ZSBzZWN0b3IgbnVtYmVyICov CiAjZGVmaW5lCURPU0RTTk9GRgk0NDAJLyogV2luTlQvMksvWFAgRHJpdmUgU2VyaWFsIE51bWJl ciBvZmZzZXQgKi8KICNkZWZpbmUJRE9TUEFSVE9GRgk0NDYKQEAgLTg2LDYgKzg0LDQgQEAgdm9p ZCBkb3NfcGFydGl0aW9uX2VuYyh2b2lkICpwcCwgc3RydWN0IGRvc19wYXJ0aXRpb24gKmQpOwog I2RlZmluZQlEUFNFQ1QocykgKChzKSAmIDB4M2YpCQkvKiBpc29sYXRlIHJlbGV2YW50IGJpdHMg b2Ygc2VjdG9yICovCiAjZGVmaW5lCURQQ1lMKGMsIHMpICgoYykgKyAoKChzKSAmIDB4YzApPDwy KSkgLyogYW5kIHRob3NlIHRoYXQgYXJlIGN5bGluZGVyICovCiAKLSNkZWZpbmUgRElPQ1NNQlIg CV9JT1coJ00nLCAxMjksIHVfY2hhcls1MTJdKQotCiAjZW5kaWYgLyogIV9TWVNfRElTS01CUl9I XyAqLwpkaWZmIC0tZ2l0IGEvc3lzL3N5cy9kaXNrcGM5OC5oIGIvc3lzL3N5cy9kaXNrcGM5OC5o CmluZGV4IGFhMGJiMGEuLmJjNzA5OTkgMTAwNjQ0Ci0tLSBhL3N5cy9zeXMvZGlza3BjOTguaAor KysgYi9zeXMvc3lzL2Rpc2twYzk4LmgKQEAgLTMzLDggKzMzLDYgQEAKICNpZm5kZWYgX1NZU19E SVNLUEM5OF9IXwogI2RlZmluZQlfU1lTX0RJU0tQQzk4X0hfCiAKLSNpbmNsdWRlIDxzeXMvaW9j Y29tLmg+Ci0KICNkZWZpbmUJUEM5OF9CQlNFQ1RPUgkxCS8qIERPUyBib290IGJsb2NrIHJlbGF0 aXZlIHNlY3RvciBudW1iZXIgKi8KICNkZWZpbmUJUEM5OF9QQVJUT0ZGCTAKICNkZWZpbmUJUEM5 OF9QQVJUU0laRQkzMgpAQCAtNzcsNiArNzUsNCBAQCBDVEFTU0VSVChzaXplb2YgKHN0cnVjdCBw Yzk4X3BhcnRpdGlvbikgPT0gUEM5OF9QQVJUU0laRSk7CiB2b2lkIHBjOThfcGFydGl0aW9uX2Rl Yyh2b2lkIGNvbnN0ICpwcCwgc3RydWN0IHBjOThfcGFydGl0aW9uICpkKTsKIHZvaWQgcGM5OF9w YXJ0aXRpb25fZW5jKHZvaWQgKnBwLCBzdHJ1Y3QgcGM5OF9wYXJ0aXRpb24gKmQpOwogCi0jZGVm aW5lIERJT0NTUEM5OAlfSU9XKCdNJywgMTI5LCB1X2NoYXJbODE5Ml0pCi0KICNlbmRpZiAvKiAh X1NZU19ESVNLUEM5OF9IXyAqLwo= --57e9475f_169e9367_e1fd--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?etPan.57e9475f.18472693.e1fd>