Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 165469 - net-wireless/rt2500-1.1.0_beta4 filed to compile with gentoo-sources-2.6.20
Summary: net-wireless/rt2500-1.1.0_beta4 filed to compile with gentoo-sources-2.6.20
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: New packages (show other bugs)
Hardware: x86 Linux
: High normal (vote)
Assignee: Roy Marples (RETIRED)
URL:
Whiteboard:
Keywords:
: 165962 (view as bug list)
Depends on:
Blocks: kernel-2.6.20
  Show dependency tree
 
Reported: 2007-02-05 18:10 UTC by Grzegorz {NineX} Krzystek
Modified: 2007-02-08 23:58 UTC (History)
6 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Grzegorz {NineX} Krzystek 2007-02-05 18:10:28 UTC
make: Entering directory `/usr/src/linux-2.6.20-gentoo'
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_main.o
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/mlme.o
/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_main.c: In function ‘RT2500_open’:
/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_main.c:343: warning: passing argument 2 of ‘request_irq’ from incompatible pointer type
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/connect.o
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/sync.o
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/assoc.o
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/auth.o
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/auth_rsp.o
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_data.o
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.o
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/sanity.o
/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c:978:62: error: macro "INIT_WORK" passed 3 arguments, but takes just 2
/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c: In function ‘NICInitializeAdapter’:
/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c:978: error: ‘INIT_WORK’ undeclared (first use in this function)
/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c:978: error: (Each undeclared identifier is reported only once
/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.c:978: error: for each function it appears in.)
make[1]: *** [/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_init.o] Error 1
make[1]: *** Waiting for unfinished jobs....
  CC [M]  /var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module/rtmp_wep.o
make: *** [_module_/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module] Error 2
make: Leaving directory `/usr/src/linux-2.6.20-gentoo'

!!! ERROR: net-wireless/rt2500-1.1.0_beta4 failed.
Call stack:
  ebuild.sh, line 1613:   Called dyn_compile
  ebuild.sh, line 970:   Called qa_call 'src_compile'
  environment, line 4382:   Called src_compile
  rt2500-1.1.0_beta4.ebuild, line 45:   Called linux-mod_src_compile
  linux-mod.eclass, line 510:   Called die

!!! Unable to make  -C /usr/src/linux M=/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/work/rt2500-1.1.0-b4/Module modules.
!!! If you need support, post the topmost build error, and the call stack if relevant.
!!! A complete build log is located at '/var/tmp/portage/net-wireless/rt2500-1.1.0_beta4/temp/build.log'.


Reproducible: Always




SyNaPsE linux-2.6.20-gentoo # emerge --info
Portage 2.1.2-r7 (default-linux/x86/2006.1, gcc-4.1.1, glibc-2.5-r0, 2.6.20-gentoo i686)
=================================================================
System uname: 2.6.20-gentoo i686 Intel(R) Celeron(R) M processor         1500MHz
Gentoo Base System release 1.12.9
Timestamp of tree: Mon, 05 Feb 2007 15:30:01 +0000
ccache version 2.4 [enabled]
dev-java/java-config: 1.3.7, 2.0.31-r3
dev-lang/python:     2.4.4
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache:     2.4-r6
sys-apps/sandbox:    1.2.18.1
sys-devel/autoconf:  2.13, 2.61
sys-devel/automake:  1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10
sys-devel/binutils:  2.17
sys-devel/gcc-config: 1.3.14
sys-devel/libtool:   1.5.22
virtual/os-headers:  2.6.20
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=pentium-m -pipe -O2 -fomit-frame-pointer -DNDEBUG -DG_DISABLE_ASSERT"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"
CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/init.d /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo"
CXXFLAGS="-march=pentium-m -pipe -O2 -fomit-frame-pointer -DNDEBUG -DG_DISABLE_ASSERT"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig ccache distlocks metadata-transfer parallel-fetch sandbox sfperms strict"
GENTOO_MIRRORS="http://gentoo.prz.rzeszow.pl http://gentoo.po.opole.pl http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo http://dev.gentoo.org"
LANG="pl_PL.UTF-8"
LINGUAS="pl en"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="7zip X a52 aac acpi alsa arts audacious avi bash-completion bitmap-fonts bzip2 cdparanoia chardet css cups deprecated devil dga discouraged divx dri dts dv dvd dvdr dvdread encode fbcon ffmpeg firefox gif gnutls gpm i8x0 iconv idea ieee1394 ipv6 java jpeg jpeg2k kde kdeenablefinal logitech-mouse logrotate lzo mad mmx mmxext mng mp3 mp4 mpeg ncurses nls no-old-linux nptl nptlonly nsplugin ogg oggvorbis opengl pam pcre pdf pdflib perl png python qt qt3 slang smartcard spell sse sse2 ssl svg symlink test theora threads tiff truetype truetype-fonts type1-fonts udev unicode usb userlocales vcd voice vorbis win32codecs wma wmf wmp x264 x86 xanim xinerama xorg xscreensaver xv xvid zlib" ALSA_CARDS="intel8x0" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol" ELIBC="glibc" INPUT_DEVICES="keyboard mouse synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="pl en" USERLAND="GNU" VIDEO_CARDS="i810"
Unset:  CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PORTDIR_OVERLAY
Comment 1 Tim Climis 2007-02-06 05:23:14 UTC
I have experienced this too, on x86_64
Comment 2 Felix Wieczorek 2007-02-06 13:57:15 UTC
me too, amd64
Comment 3 Daniel Drake (RETIRED) gentoo-dev 2007-02-06 14:54:24 UTC
Blurb I'm pasting to all compile bugs related to workqueue API changes to help maintainers:

Workqueues are ways of deferring execution of a particular "work function" to some point in the future. You initialize a "work struct" statically with DECLARE_WORK/DECLARE_DELAYED_WORK or dynamically with INIT_WORK or INIT_DELAYED_WORK. You then schedule execution of the work function by passing the work struct to schedule_work() or schedule_delayed_work().

In 2.6.19, the {INIT,DECLARE}_{DELAYED_,}WORK macros took a 3rd parameter, a user data pointer. This pointer was passed to the work function, and as such, work functions always had a single void* parameter.

In 2.6.20, this 3rd parameter is gone, and work functions always take a single parameter: a struct work_struct*. Unsurprisingly, this points to the work struct which was scheduled earlier.

Sometimes the user data pointer was unused in the work functions, in which case the fix is easy: drop the 3rd parameter to the INIT/DECLARE macro, and change the type of the work function parameter to struct work_struct *.

Often, the user data pointer is used in the work function to reference a particular instance of a driver-level data structure (e.g. the card that the function is supposed to operate on). If this is the case, ensure that the work struct is stored as a member of this structure, and then use the container_of macro to look this up.

i.e.

a driver-level data structure such as:

struct card {
   int a, b, c;
   struct work_struct *foo_work;
}

when dynamically initialising work:
    struct card *card_private = kmalloc(blah);
    [...]
    INIT_WORK(&card_private->foo_work, my_work_function);

In 2.6.19 the work function looked like:
    void my_work_function(void *data) {
        struct card *card_private = (struct card *) data;
        [...]
    }

For 2.6.20, change it to:
    void my_work_function(struct work_struct *work) {
        struct card *card_private = container_of(work, struct card, foo_work);
        [...]
    }

The container_of(A,B,C) macro "find me the instance of the structure type B which has a member called C which points at this specific instance of A." This might sound a little confusing in that it it seems hard to implement such a function, however the compiler is clever enough to figure it out at compile time.

Here is a collection of examples which make this change: http://tinyurl.com/274skb

If further help is needed, find me on IRC.
Comment 4 Roy Marples (RETIRED) gentoo-dev 2007-02-06 23:13:52 UTC
Fixed.
Comment 5 Roy Marples (RETIRED) gentoo-dev 2007-02-08 23:58:09 UTC
*** Bug 165962 has been marked as a duplicate of this bug. ***